Starting with Python 3.3, MutableMapping and MutableSet are part
of collections.abc module rather than collections. Importing them
from the old module is deprecated and no longer works in Python 3.10.
Support both modules conditionally for best compatibility.
In the launcher, use "python" instead of sys.executable to spawn the debuggee.
Update test for "python" / "pythonPath" / "pythonArgs" to use a helper script to assert the use of a custom Python binary; and test -B instead of -v to minimize test log size and run time.
Don't use inspect.getargspec on Python 2.
Close log file objects on exit.
Close os.devnull file objects on exit.
Close the listener socket used to get endpoints info from adapter.
Fix invalid escape sequences.
Run tests with Python warnings treated as errors.
Fix Django deprecation warning in test web app.
Work around pytest issues caused spaces in test names.
On Windows, run the debuggee in a separate Win32 job, and terminate the job when launcher exits.
On POSIX, run the debuggee in a separate process group (PGID), and kill the entire group when launcher exits.
Improve process tree autokill tests to actually check whether the child process has exited.
Expose "pythonArgs" to clients.
Make "python" usable in tests in lieu of "pythonPath", and make the runners use it.
Add tests for all combinations of "python"/"pythonPath" and "pythonArgs".
Add new property "argsExpansion", which defaults to "shell", but can be explicitly set to "none" to request no expansion.
Propagate "args" to launcher via CLI or JSON, depending on the value of "argsExpansion".
Move the logic to compute process name back to the adapter, alongside other processing of "launch" targets.
Propagate "subProcess" to the debug server via command line in launch scenarios.
Fix debugpy.configure() being a no-op rather than a shim for api.configure().
Debug multiprocess leads to AttributeError Can't get attribute on <module '__main__
Don't import multiprocessing before running user code.
Use bytes rather than unicode for __main__.__name__ on Python 2.7.
Use YAML templates for setting up Python and running tests.
Use matrix instead of separate jobs for Windows 32-bit and 64-bit runs.
Change --debugpy-logs to --debugpy-log-dir with explicit destination, and use that to capture and publish test logs in CI.
Delete logs for passed tests by default, and add --debugpy-log-passed to opt out.