From 062a6a3e8f23ad5132203d686bcd772f27587e8c Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Thu, 3 Feb 2022 00:25:02 +0530 Subject: [PATCH 1/8] Fix conda run output marker script (#18412) (#18413) --- pythonFiles/get_output_via_markers.py | 30 ++++++++++++--------- src/client/common/process/rawProcessApis.ts | 4 +-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/pythonFiles/get_output_via_markers.py b/pythonFiles/get_output_via_markers.py index 32d35ff6500c..87be5981b38e 100644 --- a/pythonFiles/get_output_via_markers.py +++ b/pythonFiles/get_output_via_markers.py @@ -10,15 +10,21 @@ print(">>>PYTHON-EXEC-OUTPUT") module = sys.argv[1] -if module == "-c": - ns = {} - for code in sys.argv[2:]: - exec(code, ns, ns) -elif module.startswith("-"): - raise NotImplementedError(sys.argv) -elif module.endswith(".py"): - runpy.run_path(module, run_name="__main__") -else: - runpy.run_module(module, run_name="__main__", alter_sys=True) - -print("<<>>PYTHON-EXEC-OUTPUT([\s\S]*)<<= 2 ? match[1].trim() : ''; - return filteredOut.length ? filteredOut : stdout; + const filteredOut = match !== null && match.length >= 2 ? match[1].trim() : undefined; + return filteredOut !== undefined ? filteredOut : stdout; } function removeCondaRunMarkers(out: string) { From 0c7483a6f49227907bcaa58d483f820e229b3d01 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Thu, 3 Feb 2022 01:12:44 +0530 Subject: [PATCH 2/8] Fix marker script support for '-c' flag (#18418) --- pythonFiles/get_output_via_markers.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pythonFiles/get_output_via_markers.py b/pythonFiles/get_output_via_markers.py index 87be5981b38e..00dd57065b3c 100644 --- a/pythonFiles/get_output_via_markers.py +++ b/pythonFiles/get_output_via_markers.py @@ -13,8 +13,10 @@ try: if module == "-c": ns = {} - for code in sys.argv[2:]: - exec(code, ns, ns) + code = sys.argv[2] + del sys.argv[2] + del sys.argv[0] + exec(code, ns, ns) elif module.startswith("-m"): moduleName = sys.argv[2] sys.argv = sys.argv[2:] # It should begin with the module name. From 67d983134a8ae31047970a33c1b2471d15611b3b Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Thu, 3 Feb 2022 01:04:22 +0530 Subject: [PATCH 3/8] Fix the interpreter selected by 'new venv' prompt (#18417) --- src/client/pythonEnvironments/legacyIOC.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/client/pythonEnvironments/legacyIOC.ts b/src/client/pythonEnvironments/legacyIOC.ts index 97ac3f6bac90..e25b1589dd81 100644 --- a/src/client/pythonEnvironments/legacyIOC.ts +++ b/src/client/pythonEnvironments/legacyIOC.ts @@ -292,6 +292,7 @@ class ComponentAdapter implements IComponentAdapter { const query: PythonLocatorQuery = { searchLocations: { roots: [workspaceFolder.uri], + doNotIncludeNonRooted: true, }, }; if (options?.ignoreCache) { From 0856eb26cbcc3a2ec5e15edaa6ef9cdddca32790 Mon Sep 17 00:00:00 2001 From: Karthik Nadig Date: Wed, 2 Feb 2022 14:11:41 -0800 Subject: [PATCH 4/8] Update version and changelog for release (#18421) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06c11ed3af13..8ea4c15ecedd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 2022.0.0-rc (31 January 2022) +## 2022.0.0 (3 February 2022) ### Enhancements diff --git a/package-lock.json b/package-lock.json index 14341050ee4f..57d7c3f90486 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "python", - "version": "2022.0.0-rc", + "version": "2022.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "python", - "version": "2022.0.0-rc", + "version": "2022.0.0", "license": "MIT", "dependencies": { "@vscode/jupyter-lsp-middleware": "^0.2.35", diff --git a/package.json b/package.json index 75ccd85e9ac9..660a13c9298f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "python", "displayName": "Python", "description": "IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), Jupyter Notebooks, code formatting, refactoring, unit tests, and more.", - "version": "2022.0.0-rc", + "version": "2022.0.0", "featureFlags": { "usingNewInterpreterStorage": true }, From fca6fe3905757a8479b854b48c3048c876bd3cfa Mon Sep 17 00:00:00 2001 From: Karthik Nadig Date: Mon, 7 Feb 2022 10:38:26 -0800 Subject: [PATCH 5/8] Use older way of launching debugger when using conda less than 4.9.0 (#18451) --- news/2 Fixes/18436.md | 1 + .../debugger/extension/adapter/factory.ts | 27 ++++++++++++++----- .../common/environmentManagers/conda.ts | 8 ++++++ 3 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 news/2 Fixes/18436.md diff --git a/news/2 Fixes/18436.md b/news/2 Fixes/18436.md new file mode 100644 index 000000000000..41af906ea823 --- /dev/null +++ b/news/2 Fixes/18436.md @@ -0,0 +1 @@ +Revert to old way of running debugger if conda version less than 4.9.0. diff --git a/src/client/debugger/extension/adapter/factory.ts b/src/client/debugger/extension/adapter/factory.ts index 5f69ca1a1bdb..37d2f669a3cf 100644 --- a/src/client/debugger/extension/adapter/factory.ts +++ b/src/client/debugger/extension/adapter/factory.ts @@ -15,7 +15,7 @@ import { import { IApplicationShell } from '../../../common/application/types'; import { EXTENSION_ROOT_DIR } from '../../../constants'; import { IInterpreterService } from '../../../interpreter/contracts'; -import { traceVerbose } from '../../../logging'; +import { traceLog, traceVerbose } from '../../../logging'; import { Conda } from '../../../pythonEnvironments/common/environmentManagers/conda'; import { EnvironmentType, PythonEnvironment } from '../../../pythonEnvironments/info'; import { sendTelemetryEvent } from '../../../telemetry'; @@ -49,8 +49,14 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac if (configuration.request === 'attach') { if (configuration.connect !== undefined) { + traceLog( + `Connecting to DAP Server at: ${configuration.connect.host ?? '127.0.0.1'}:${ + configuration.connect.port + }`, + ); return new DebugAdapterServer(configuration.connect.port, configuration.connect.host ?? '127.0.0.1'); } else if (configuration.port !== undefined) { + traceLog(`Connecting to DAP Server at: ${configuration.host ?? '127.0.0.1'}:${configuration.port}`); return new DebugAdapterServer(configuration.port, configuration.host ?? '127.0.0.1'); } else if (configuration.listen === undefined && configuration.processId === undefined) { throw new Error('"request":"attach" requires either "connect", "listen", or "processId"'); @@ -70,10 +76,9 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac const logArgs = configuration.logToFile ? ['--log-dir', EXTENSION_ROOT_DIR] : []; if (configuration.debugAdapterPath !== undefined) { - return new DebugAdapterExecutable( - executable, - command.concat([configuration.debugAdapterPath, ...logArgs]), - ); + const args = command.concat([configuration.debugAdapterPath, ...logArgs]); + traceLog(`DAP Server launched with command: ${executable} ${args.join(' ')}`); + return new DebugAdapterExecutable(executable, args); } const debuggerAdapterPathToUse = path.join( @@ -85,8 +90,10 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac 'adapter', ); + const args = command.concat([debuggerAdapterPathToUse, ...logArgs]); + traceLog(`DAP Server launched with command: ${executable} ${args.join(' ')}`); sendTelemetryEvent(EventName.DEBUG_ADAPTER_USING_WHEELS_PATH, undefined, { usingWheels: true }); - return new DebugAdapterExecutable(executable, command.concat([debuggerAdapterPathToUse, ...logArgs])); + return new DebugAdapterExecutable(executable, args); } // Unlikely scenario. @@ -136,10 +143,16 @@ export class DebugAdapterDescriptorFactory implements IDebugAdapterDescriptorFac return this.getExecutableCommand(interpreters[0]); } + private async getCondaCommand(): Promise { + const condaCommand = await Conda.getConda(); + const isCondaRunSupported = await condaCommand?.isCondaRunSupported(); + return isCondaRunSupported ? condaCommand : undefined; + } + private async getExecutableCommand(interpreter: PythonEnvironment | undefined): Promise { if (interpreter) { if (interpreter.envType === EnvironmentType.Conda) { - const condaCommand = await Conda.getConda(); + const condaCommand = await this.getCondaCommand(); if (condaCommand) { if (interpreter.envName) { return [ diff --git a/src/client/pythonEnvironments/common/environmentManagers/conda.ts b/src/client/pythonEnvironments/common/environmentManagers/conda.ts index c46246ef2017..0db2f81c39d1 100644 --- a/src/client/pythonEnvironments/common/environmentManagers/conda.ts +++ b/src/client/pythonEnvironments/common/environmentManagers/conda.ts @@ -447,4 +447,12 @@ export class Conda { traceError(`Unable to parse version of Conda, ${versionString}`); return new SemVer('0.0.1'); } + + public async isCondaRunSupported(): Promise { + const condaVersion = await this.getCondaVersion(); + if (condaVersion && lt(condaVersion, CONDA_RUN_VERSION)) { + return false; + } + return true; + } } From cc68cd1ffc595297e406a71a1e6a8b165799b758 Mon Sep 17 00:00:00 2001 From: Kim-Adeline Miguel <51720070+kimadeline@users.noreply.github.com> Date: Fri, 4 Feb 2022 10:36:50 -0800 Subject: [PATCH 6/8] CI failures: Pin prospector to 1.6.0, pytest to < 7.0.0, and fix linting issues with flake8 3.9.2 (#18446) * See if pinning pip works * Pin in pr check * Pin pip everywhere else * angery * Undo pip changes * Pin pytest < 7.0.0 * Fix linting? --- build/test-requirements.txt | 4 +- .../pythonFiles/linting/flake8config/file.py | 49 +++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/build/test-requirements.txt b/build/test-requirements.txt index d1aad4b75ed4..21e3b5627820 100644 --- a/build/test-requirements.txt +++ b/build/test-requirements.txt @@ -8,8 +8,8 @@ yapf pylint ; python_version > '2.7' pycodestyle pydocstyle -prospector ; python_version > '2.7' -pytest ; python_version > '2.7' +prospector>=1.6.0 ; python_version > '2.7' +pytest<7.0.0 ; python_version > '2.7' flask fastapi ; python_version > '2.7' uvicorn ; python_version > '2.7' diff --git a/src/test/pythonFiles/linting/flake8config/file.py b/src/test/pythonFiles/linting/flake8config/file.py index 047ba0dc679e..9abe4993dddd 100644 --- a/src/test/pythonFiles/linting/flake8config/file.py +++ b/src/test/pythonFiles/linting/flake8config/file.py @@ -2,6 +2,7 @@ __revision__ = None + class Foo(object): """block-disable test""" @@ -10,78 +11,76 @@ def __init__(self): def meth1(self, arg): """this issues a message""" - print self + print(self) def meth2(self, arg): """and this one not""" # pylint: disable=unused-argument - print self\ - + "foo" + print(self + "foo") def meth3(self): """test one line disabling""" # no error - print self.bla # pylint: disable=no-member + print(self.bla) # pylint: disable=no-member # error - print self.blop + print(self.blop) def meth4(self): """test re-enabling""" # pylint: disable=no-member # no error - print self.bla - print self.blop + print(self.bla) + print(self.blop) # pylint: enable=no-member # error - print self.blip + print(self.blip) def meth5(self): """test IF sub-block re-enabling""" # pylint: disable=no-member # no error - print self.bla + print(self.bla) if self.blop: # pylint: enable=no-member # error - print self.blip + print(self.blip) else: # no error - print self.blip + print(self.blip) # no error - print self.blip + print(self.blip) def meth6(self): """test TRY/EXCEPT sub-block re-enabling""" # pylint: disable=no-member # no error - print self.bla + print(self.bla) try: # pylint: enable=no-member # error - print self.blip - except UndefinedName: # pylint: disable=undefined-variable + print(self.blip) + except UndefinedName: # pylint: disable=undefined-variable # no error - print self.blip + print(self.blip) # no error - print self.blip + print(self.blip) def meth7(self): """test one line block opening disabling""" - if self.blop: # pylint: disable=no-member + if self.blop: # pylint: disable=no-member # error - print self.blip + print(self.blip) else: # error - print self.blip + print(self.blip) # error - print self.blip - + print(self.blip) def meth8(self): """test late disabling""" # error - print self.blip + print(self.blip) # pylint: disable=no-member # no error - print self.bla - print self.blop \ No newline at end of file + print(self.bla) + print(self.blop) From 6b99458d013e511ba3fa6635448d40092b4d4474 Mon Sep 17 00:00:00 2001 From: Karthik Nadig Date: Tue, 8 Feb 2022 12:26:05 -0800 Subject: [PATCH 7/8] Update release version and change log for point release (#18470) * Update release version and change log for point release * update changelog * Fix `invalid patch string` error when using conda (#18481) * Fix `invalid patch string` error when using conda * Fix tests * Update change log --- CHANGELOG.md | 61 +++++++++++++ news/2 Fixes/18436.md | 1 - package-lock.json | 4 +- package.json | 2 +- src/client/common/process/rawProcessApis.ts | 4 +- .../common/environmentManagers/conda.ts | 2 +- .../process/pythonEnvironment.unit.test.ts | 88 +++++++++++++++++-- .../environmentManagers/conda.unit.test.ts | 4 +- 8 files changed, 149 insertions(+), 17 deletions(-) delete mode 100644 news/2 Fixes/18436.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ea4c15ecedd..be5eb9511e46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,66 @@ # Changelog +## 2022.0.1 (8 February 2022) + +### Fixes + +1. Fix `invalid patch string` error when using conda. + ([#18455](https://github.com/Microsoft/vscode-python/issues/18455)) +1. Revert to old way of running debugger if conda version less than 4.9.0. + ([#18436](https://github.com/Microsoft/vscode-python/issues/18436)) + +### Thanks + +Thanks to the following projects which we fully rely on to provide some of +our features: + +- [debugpy](https://pypi.org/project/debugpy/) +- [isort](https://pypi.org/project/isort/) +- [jedi](https://pypi.org/project/jedi/) + and [parso](https://pypi.org/project/parso/) +- [jedi-language-server](https://pypi.org/project/jedi-language-server/) +- [Pylance](https://github.com/microsoft/pylance-release) + +Also thanks to the various projects we provide integrations with which help +make this extension useful: + +- Debugging support: + [Django](https://pypi.org/project/Django/), + [Flask](https://pypi.org/project/Flask/), + [gevent](https://pypi.org/project/gevent/), + [Jinja](https://pypi.org/project/Jinja/), + [Pyramid](https://pypi.org/project/pyramid/), + [PySpark](https://pypi.org/project/pyspark/), + [Scrapy](https://pypi.org/project/Scrapy/), + [Watson](https://pypi.org/project/Watson/) +- Formatting: + [autopep8](https://pypi.org/project/autopep8/), + [black](https://pypi.org/project/black/), + [yapf](https://pypi.org/project/yapf/) +- Interpreter support: + [conda](https://conda.io/), + [direnv](https://direnv.net/), + [pipenv](https://pypi.org/project/pipenv/), + [poetry](https://pypi.org/project/poetry/), + [pyenv](https://github.com/pyenv/pyenv), + [venv](https://docs.python.org/3/library/venv.html#module-venv), + [virtualenv](https://pypi.org/project/virtualenv/) +- Linting: + [bandit](https://pypi.org/project/bandit/), + [flake8](https://pypi.org/project/flake8/), + [mypy](https://pypi.org/project/mypy/), + [prospector](https://pypi.org/project/prospector/), + [pylint](https://pypi.org/project/pylint/), + [pydocstyle](https://pypi.org/project/pydocstyle/), + [pylama](https://pypi.org/project/pylama/) +- Testing: + [pytest](https://pypi.org/project/pytest/), + [unittest](https://docs.python.org/3/library/unittest.html#module-unittest) + +And finally thanks to the [Python](https://www.python.org/) development team and +community for creating a fantastic programming language and community to be a +part of! + ## 2022.0.0 (3 February 2022) ### Enhancements diff --git a/news/2 Fixes/18436.md b/news/2 Fixes/18436.md deleted file mode 100644 index 41af906ea823..000000000000 --- a/news/2 Fixes/18436.md +++ /dev/null @@ -1 +0,0 @@ -Revert to old way of running debugger if conda version less than 4.9.0. diff --git a/package-lock.json b/package-lock.json index 57d7c3f90486..4c3ec278bb88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "python", - "version": "2022.0.0", + "version": "2022.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "python", - "version": "2022.0.0", + "version": "2022.0.1", "license": "MIT", "dependencies": { "@vscode/jupyter-lsp-middleware": "^0.2.35", diff --git a/package.json b/package.json index 660a13c9298f..8fca9d876a0e 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "python", "displayName": "Python", "description": "IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), Jupyter Notebooks, code formatting, refactoring, unit tests, and more.", - "version": "2022.0.0", + "version": "2022.0.1", "featureFlags": { "usingNewInterpreterStorage": true }, diff --git a/src/client/common/process/rawProcessApis.ts b/src/client/common/process/rawProcessApis.ts index 096d79a73db5..b07c640c2e95 100644 --- a/src/client/common/process/rawProcessApis.ts +++ b/src/client/common/process/rawProcessApis.ts @@ -169,8 +169,8 @@ function filterOutputUsingCondaRunMarkers(stdout: string) { } function removeCondaRunMarkers(out: string) { - out = out.replace('>>>PYTHON-EXEC-OUTPUT', ''); - return out.replace('<<>>PYTHON-EXEC-OUTPUT\r\n', '').replace('>>>PYTHON-EXEC-OUTPUT\n', ''); + return out.replace('<< { expect(result).to.deep.equal({ command: condaFile, - args: ['run', '-n', condaInfo.name, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT, ...args], - python: [condaFile, 'run', '-n', condaInfo.name, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT], + args: [ + 'run', + '-n', + condaInfo.name, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ...args, + ], + python: [ + condaFile, + 'run', + '-n', + condaInfo.name, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ], pythonExecutable: pythonPath, }); }); @@ -307,8 +325,26 @@ suite('CondaEnvironment', () => { expect(result).to.deep.equal({ command: condaFile, - args: ['run', '-p', condaInfo.path, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT, ...args], - python: [condaFile, 'run', '-p', condaInfo.path, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT], + args: [ + 'run', + '-p', + condaInfo.path, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ...args, + ], + python: [ + condaFile, + 'run', + '-p', + condaInfo.path, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ], pythonExecutable: pythonPath, }); }); @@ -317,8 +353,26 @@ suite('CondaEnvironment', () => { const condaInfo = { name: 'foo', path: 'bar' }; const expected = { command: condaFile, - args: ['run', '-n', condaInfo.name, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT, ...args], - python: [condaFile, 'run', '-n', condaInfo.name, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT], + args: [ + 'run', + '-n', + condaInfo.name, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ...args, + ], + python: [ + condaFile, + 'run', + '-n', + condaInfo.name, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ], pythonExecutable: pythonPath, }; const env = await createCondaEnv(condaInfo, pythonPath, processService.object, fileSystem.object); @@ -332,8 +386,26 @@ suite('CondaEnvironment', () => { const condaInfo = { name: '', path: 'bar' }; const expected = { command: condaFile, - args: ['run', '-p', condaInfo.path, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT, ...args], - python: [condaFile, 'run', '-p', condaInfo.path, '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT], + args: [ + 'run', + '-p', + condaInfo.path, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ...args, + ], + python: [ + condaFile, + 'run', + '-p', + condaInfo.path, + '--no-capture-output', + '--live-stream', + 'python', + OUTPUT_MARKER_SCRIPT, + ], pythonExecutable: pythonPath, }; const env = await createCondaEnv(condaInfo, pythonPath, processService.object, fileSystem.object); diff --git a/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts b/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts index cdfd3284891d..c6d068eabc6e 100644 --- a/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts +++ b/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts @@ -481,14 +481,14 @@ suite('Conda and its environments are located correctly', () => { expect(args).to.not.equal(undefined); assert.deepStrictEqual( args, - ['conda', 'run', '-n', 'envName', '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT], + ['conda', 'run', '-n', 'envName', '--no-capture-output', '--live-stream', 'python', OUTPUT_MARKER_SCRIPT], 'Incorrect args for case 1', ); args = await conda?.getRunPythonArgs({ name: '', prefix: 'envPrefix' }); assert.deepStrictEqual( args, - ['conda', 'run', '-p', 'envPrefix', '--no-capture-output', 'python', OUTPUT_MARKER_SCRIPT], + ['conda', 'run', '-p', 'envPrefix', '--no-capture-output', '--live-stream', 'python', OUTPUT_MARKER_SCRIPT], 'Incorrect args for case 2', ); }); From 98f43dbea89c58409ebb76b7d2bdfa8e31d37f3a Mon Sep 17 00:00:00 2001 From: Karthik Nadig Date: Thu, 10 Feb 2022 10:56:34 -0800 Subject: [PATCH 8/8] Cleanup news files --- news/2 Fixes/18436.md | 1 - news/2 Fixes/18455.md | 1 - 2 files changed, 2 deletions(-) delete mode 100644 news/2 Fixes/18436.md delete mode 100644 news/2 Fixes/18455.md diff --git a/news/2 Fixes/18436.md b/news/2 Fixes/18436.md deleted file mode 100644 index 41af906ea823..000000000000 --- a/news/2 Fixes/18436.md +++ /dev/null @@ -1 +0,0 @@ -Revert to old way of running debugger if conda version less than 4.9.0. diff --git a/news/2 Fixes/18455.md b/news/2 Fixes/18455.md deleted file mode 100644 index a2df2f11c124..000000000000 --- a/news/2 Fixes/18455.md +++ /dev/null @@ -1 +0,0 @@ -Fix `invalid patch string` error when using conda.