Skip to content

Commit ff67dce

Browse files
committed
lets go
1 parent 9bc622f commit ff67dce

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/client/common/terminal/service.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
import { traceVerbose } from '../../logging';
2323
import { getConfiguration } from '../vscodeApis/workspaceApis';
2424
import { isWindows } from '../utils/platform';
25+
import { getActiveInterpreter } from '../../repl/replUtils';
2526

2627
@injectable()
2728
export class TerminalService implements ITerminalService, Disposable {
@@ -107,7 +108,16 @@ export class TerminalService implements ITerminalService, Disposable {
107108
// const pythonVersion = await this.getPythonVersion();
108109
// const isPython313 = pythonVersion?.startsWith('3.13');
109110

110-
if (isPythonShell && (!pythonrcSetting || isWindows())) {
111+
let isPython313 = false;
112+
if (this.options && this.options.resource) {
113+
const pythonVersion = await getActiveInterpreter(
114+
this.options.resource,
115+
this.serviceContainer.get<IInterpreterService>(IInterpreterService),
116+
);
117+
pythonVersion?.sysVersion?.startsWith('3.13');
118+
}
119+
120+
if (isPythonShell && (!pythonrcSetting || isWindows() || isPython313)) {
111121
// If user has explicitly disabled SI for Python, use sendText for inside Terminal REPL.
112122
terminal.sendText(commandLine);
113123
return undefined;

src/test/common/terminals/service.unit.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import { ITerminalAutoActivation } from '../../../client/terminals/types';
2525
import { createPythonInterpreter } from '../../utils/interpreters';
2626
import * as workspaceApis from '../../../client/common/vscodeApis/workspaceApis';
2727
import * as platform from '../../../client/common/utils/platform';
28+
import { IInterpreterService } from '../../../client/interpreter/contracts';
29+
import { PythonEnvironment } from '../../../client/pythonEnvironments/info';
2830

2931
suite('Terminal Service', () => {
3032
let service: TerminalService;
@@ -44,6 +46,7 @@ suite('Terminal Service', () => {
4446
let pythonConfig: TypeMoq.IMock<WorkspaceConfiguration>;
4547
let editorConfig: TypeMoq.IMock<WorkspaceConfiguration>;
4648
let isWindowsStub: sinon.SinonStub;
49+
let interpreterService: TypeMoq.IMock<IInterpreterService>;
4750

4851
setup(() => {
4952
terminal = TypeMoq.Mock.ofType<VSCodeTerminal>();
@@ -87,6 +90,10 @@ suite('Terminal Service', () => {
8790
disposables = [];
8891

8992
mockServiceContainer = TypeMoq.Mock.ofType<IServiceContainer>();
93+
interpreterService = TypeMoq.Mock.ofType<IInterpreterService>();
94+
interpreterService
95+
.setup((i) => i.getActiveInterpreter(TypeMoq.It.isAny()))
96+
.returns(() => Promise.resolve(({ path: 'ps' } as unknown) as PythonEnvironment));
9097

9198
mockServiceContainer.setup((c) => c.get(ITerminalManager)).returns(() => terminalManager.object);
9299
mockServiceContainer.setup((c) => c.get(ITerminalHelper)).returns(() => terminalHelper.object);
@@ -95,6 +102,8 @@ suite('Terminal Service', () => {
95102
mockServiceContainer.setup((c) => c.get(IWorkspaceService)).returns(() => workspaceService.object);
96103
mockServiceContainer.setup((c) => c.get(ITerminalActivator)).returns(() => terminalActivator.object);
97104
mockServiceContainer.setup((c) => c.get(ITerminalAutoActivation)).returns(() => terminalAutoActivator.object);
105+
mockServiceContainer.setup((c) => c.get(IInterpreterService)).returns(() => interpreterService.object);
106+
98107
getConfigurationStub = sinon.stub(workspaceApis, 'getConfiguration');
99108
isWindowsStub = sinon.stub(platform, 'isWindows');
100109
pythonConfig = TypeMoq.Mock.ofType<WorkspaceConfiguration>();

0 commit comments

Comments
 (0)