mirror of
https://github.com/microsoft/debugpy.git
synced 2025-12-23 08:48:12 +00:00
Merge ea434bf973 into 820d21e384
This commit is contained in:
commit
a5ea1edb2a
16 changed files with 22 additions and 22 deletions
|
|
@ -12,7 +12,7 @@ If you believe you have found a security vulnerability in any Microsoft-owned re
|
|||
|
||||
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
|
||||
|
||||
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
|
||||
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
|
||||
|
||||
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# This pipeline is used to run PR validation and CI builds against the debugpy public repo.
|
||||
# Seperate internal pipelines are used for generating wheels, signing, and releasing to pypi.org
|
||||
# Separate internal pipelines are used for generating wheels, signing, and releasing to pypi.org
|
||||
|
||||
# Trigger ci builds for commits into master and any release branches
|
||||
trigger:
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ if __name__ == "__main__":
|
|||
#
|
||||
# To fix both, we need to replace the automatically added entry such that it points
|
||||
# at parent directory of debugpy/ instead of debugpy/ itself, import debugpy with that
|
||||
# in sys.path, and then remove the first entry entry altogether, so that it doesn't
|
||||
# in sys.path, and then remove the first entry altogether, so that it doesn't
|
||||
# affect any further imports we might do. For example, suppose the user did:
|
||||
#
|
||||
# python /foo/bar/debugpy ...
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ if __name__ == "__main__":
|
|||
#
|
||||
# To fix both, we need to replace the automatically added entry such that it points
|
||||
# at parent directory of debugpy/ instead of debugpy/adapter, import debugpy with that
|
||||
# in sys.path, and then remove the first entry entry altogether, so that it doesn't
|
||||
# in sys.path, and then remove the first entry altogether, so that it doesn't
|
||||
# affect any further imports we might do. For example, suppose the user did:
|
||||
#
|
||||
# python /foo/bar/debugpy/adapter ...
|
||||
|
|
|
|||
|
|
@ -665,7 +665,7 @@ class Client(components.Component):
|
|||
self.restart_requested = False
|
||||
|
||||
if self._forward_terminate_request:
|
||||
# According to the spec, terminate should try to do a gracefull shutdown.
|
||||
# According to the spec, terminate should try to do a graceful shutdown.
|
||||
# We do this in the server by interrupting the main thread with a Ctrl+C.
|
||||
# To force the kill a subsequent request would do a disconnect.
|
||||
#
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ class Capabilities(dict):
|
|||
"""
|
||||
|
||||
PROPERTIES = {}
|
||||
"""JSON property names and default values for the the capabilities represented
|
||||
"""JSON property names and default values for the capabilities represented
|
||||
by instances of this class. Keys are names, and values are either default values
|
||||
or validators.
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class Session(util.Observable):
|
|||
"""The client component. Always present."""
|
||||
|
||||
self.launcher = components.missing(self, launchers.Launcher)
|
||||
"""The launcher componet. Always present in "launch" sessions, and never
|
||||
"""The launcher component. Always present in "launch" sessions, and never
|
||||
present in "attach" sessions.
|
||||
"""
|
||||
|
||||
|
|
|
|||
|
|
@ -974,7 +974,7 @@ class MessageHandlingError(Exception):
|
|||
escape the message loop unhandled, and terminate the process.
|
||||
|
||||
If any message handler raises this exception, but applies_to(message) is False, it
|
||||
is treated as if it was a generic exception, as desribed above. Thus, if a request
|
||||
is treated as if it was a generic exception, as described above. Thus, if a request
|
||||
handler issues another request of its own, and that one fails, the failure is not
|
||||
silently propagated. However, a request that is delegated via Request.delegate()
|
||||
will also propagate failures back automatically. For manual propagation, catch the
|
||||
|
|
@ -995,7 +995,7 @@ class MessageHandlingError(Exception):
|
|||
"""Creates a new instance of this class, and immediately logs the exception.
|
||||
|
||||
Message handling errors are logged immediately unless silent=True, so that the
|
||||
precise context in which they occured can be determined from the surrounding
|
||||
precise context in which they occurred can be determined from the surrounding
|
||||
log entries.
|
||||
"""
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ if __name__ == "__main__":
|
|||
#
|
||||
# To fix both, we need to replace the automatically added entry such that it points
|
||||
# at parent directory of debugpy/ instead of debugpy/launcher, import debugpy with that
|
||||
# in sys.path, and then remove the first entry entry altogether, so that it doesn't
|
||||
# in sys.path, and then remove the first entry altogether, so that it doesn't
|
||||
# affect any further imports we might do. For example, suppose the user did:
|
||||
#
|
||||
# python /foo/bar/debugpy/launcher ...
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ def listen(
|
|||
different from address if port was 0 in the latter, in which case
|
||||
the adapter will pick some unused ephemeral port to listen on.
|
||||
|
||||
This function does't wait for a client to connect to the debug
|
||||
This function doesn't wait for a client to connect to the debug
|
||||
adapter that it starts. Use `wait_for_client` to block execution
|
||||
until the client connects.
|
||||
"""
|
||||
|
|
@ -131,7 +131,7 @@ def connect(__endpoint: Endpoint | int, *, access_token: str | None = None) -> E
|
|||
`access_token` must be the same value that was passed to the adapter
|
||||
via the `--server-access-token` command-line switch.
|
||||
|
||||
This function does't wait for a client to connect to the debug
|
||||
This function doesn't wait for a client to connect to the debug
|
||||
adapter that it connects to. Use `wait_for_client` to block
|
||||
execution until the client connects.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# for license information.
|
||||
|
||||
"""Imported from test code that runs under debugpy, and allows that code
|
||||
to communcate back to the test. Works in conjunction with debug_session
|
||||
to communicate back to the test. Works in conjunction with debug_session
|
||||
fixture and its backchannel method."""
|
||||
|
||||
__all__ = ["port", "receive", "send"]
|
||||
|
|
|
|||
|
|
@ -666,7 +666,7 @@ class TestTypeConversion(object):
|
|||
for val_trial, type_trial in correct_trials:
|
||||
assert isinstance(
|
||||
json.of_type(type_trial)(val_trial), type_trial
|
||||
), "Wrong type coversion"
|
||||
), "Wrong type conversion"
|
||||
|
||||
# test conversion that are not expected to work
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -39,13 +39,13 @@ def test_completions_scope(pyfile, line, target, run):
|
|||
def __init__(self, someVar):
|
||||
self.some_var = someVar
|
||||
|
||||
def do_someting(self):
|
||||
def do_something(self):
|
||||
someVariable = self.some_var
|
||||
return someVariable # @in_do_something
|
||||
|
||||
def someFunction(someVar):
|
||||
someVariable = someVar
|
||||
return SomeClass(someVariable).do_someting() # @in_some_function
|
||||
return SomeClass(someVariable).do_something() # @in_some_function
|
||||
|
||||
someFunction("value")
|
||||
print("done") # @done
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ def pyfile(request, long_tmpdir):
|
|||
that it uses locally. When linter complains, use #noqa.
|
||||
|
||||
Returns a py.path.local instance that has the additional attribute "lines".
|
||||
After the source is writen to disk, tests.code.get_marked_line_numbers() is
|
||||
After the source is written to disk, tests.code.get_marked_line_numbers() is
|
||||
invoked on the resulting file to compute the value of that attribute.
|
||||
"""
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ A *timeline* is a sequence of [occurrences](#Occurrence), in order in which they
|
|||
|
||||
A timeline can be grown by recording new occurrences in it. This is done automatically by the test infrastructure for requests, responses and events occurring in a debug session. Marks are recorded with the `timeline.mark(id)` method, which returns the recorded mark occurrence. It is not possible to "rewrite the history" - once recorded, occurrences can never be forgotten, and do not change.
|
||||
|
||||
Timelines are completely thread-safe for both recording and inspection. However, because a timeline during an active debug session can grow asyncronously as new events and responses are received, it cannot be inspected directly, other than asking for the last occurrence via `timeline.last()` - which is a function rather than a property, indicating that it may return a different value on every subsequent call.
|
||||
Timelines are completely thread-safe for both recording and inspection. However, because a timeline during an active debug session can grow asynchronously as new events and responses are received, it cannot be inspected directly, other than asking for the last occurrence via `timeline.last()` - which is a function rather than a property, indicating that it may return a different value on every subsequent call.
|
||||
|
||||
It is, however, possible to take a snapshot of a timeline via `timeline.history()`; the returned value is a list of all occurrences that were in the timeline at the point of the call, in order from first to last. This is just a shortcut for `reversed(list(timeline.last()))`.
|
||||
|
||||
|
|
@ -112,7 +112,7 @@ and a further shortcut to issue a request, wait for response, and retrieve the r
|
|||
```py
|
||||
initialize_response_body = debug_session.request('initialize', {'adapterID': 'test'})
|
||||
```
|
||||
On success, `request()` returns the body of the sucessful response directly, rather than the `Response` object. On failure, it raises the appropriate exception.
|
||||
On success, `request()` returns the body of the successful response directly, rather than the `Response` object. On failure, it raises the appropriate exception.
|
||||
|
||||
## Expectation algebra
|
||||
|
||||
|
|
@ -187,7 +187,7 @@ assert (
|
|||
) in debug_session.timeline
|
||||
```
|
||||
|
||||
### Conjuction (`&`)
|
||||
### Conjunction (`&`)
|
||||
|
||||
When two expectations are conjuncted: `(A & B)` - the resulting expectation is realized at the occurrence at which `A` and `B` are both realized, regardless of their relative order. Thus:
|
||||
```py
|
||||
|
|
@ -244,7 +244,7 @@ if handled_request is pause1:
|
|||
...
|
||||
```
|
||||
|
||||
### Exclusive disjuction (`^`)
|
||||
### Exclusive disjunction (`^`)
|
||||
|
||||
When two expectations are exclusively disjuncted: `(A ^ B)` - the resulting expectation is realized at the first occurrence at which either `A` or `B` is realized, but not both. Thus, the expectation:
|
||||
```py
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ which may help identify what went wrong).
|
|||
## Known Limitations
|
||||
|
||||
Some situations are known to cause problems for Versioneer. This details the
|
||||
most significant ones. More can be found on Github
|
||||
most significant ones. More can be found on GitHub
|
||||
[issues page](https://github.com/python-versioneer/python-versioneer/issues).
|
||||
|
||||
### Subprojects
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue