Skip to content

Commit 71f87a3

Browse files
committed
refactor: move PythonEnvironment to manifest and split into provider/interface
1 parent c239eca commit 71f87a3

17 files changed

+83
-317
lines changed

src/commands/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import {
4141
ConversationProvider,
4242
ConversationCommentThread,
4343
} from "../comment_provider/conversationProvider";
44-
import { PythonEnvironment } from "../dbt_integration/pythonEnvironment";
44+
import { PythonEnvironment } from "../manifest/pythonEnvironment";
4545
import { DBTClient } from "../dbt_client";
4646
import { existsSync, readFileSync } from "fs";
4747
import { DBTProject } from "../manifest/dbtProject";
@@ -70,7 +70,7 @@ export class VSCodeCommands implements Disposable {
7070
private diagnosticsOutputChannel: DiagnosticsOutputChannel,
7171
private eventEmitterService: SharedStateService,
7272
private conversationController: ConversationProvider,
73-
@inject("PythonEnvironment")
73+
@inject(PythonEnvironment)
7474
private pythonEnvironment: PythonEnvironment,
7575
private dbtClient: DBTClient,
7676
private sqlLineagePanel: SQLLineagePanel,

src/commands/walkthroughCommands.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { DBTProjectContainer } from "../manifest/dbtProjectContainer";
1010
import { TelemetryService } from "../telemetry";
1111
import { ProjectQuickPickItem } from "../quickpick/projectQuickPick";
1212
import { CommandProcessExecutionFactory } from "../dbt_integration/commandProcessExecution";
13-
import { PythonEnvironment } from "../dbt_integration/pythonEnvironment";
13+
import { PythonEnvironment } from "../manifest/pythonEnvironment";
1414
import { DBTTerminal } from "../dbt_integration/terminal";
1515
import { inject } from "inversify";
1616

@@ -31,7 +31,7 @@ export class WalkthroughCommands {
3131
private dbtProjectContainer: DBTProjectContainer,
3232
private telemetry: TelemetryService,
3333
private commandProcessExecutionFactory: CommandProcessExecutionFactory,
34-
@inject("PythonEnvironment")
34+
@inject(PythonEnvironment)
3535
private pythonEnvironment: PythonEnvironment,
3636
@inject("DBTTerminal")
3737
private dbtTerminal: DBTTerminal,

src/dbt_client/datapilot.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { provideSingleton } from "../utils";
2-
import { PythonEnvironment } from "../dbt_integration/pythonEnvironment";
2+
import { PythonEnvironment } from "../manifest/pythonEnvironment";
33
import { CommandProcessExecutionFactory } from "../dbt_integration/commandProcessExecution";
44
import { DBTTerminal } from "../dbt_integration/terminal";
55
import { DBTConfiguration } from "../dbt_integration/configuration";
@@ -9,7 +9,7 @@ import { inject } from "inversify";
99
export class AltimateDatapilot {
1010
private packageName = "altimate-datapilot-cli";
1111
constructor(
12-
@inject("PythonEnvironment")
12+
@inject(PythonEnvironment)
1313
private pythonEnvironment: PythonEnvironment,
1414
private commandProcessExecutionFactory: CommandProcessExecutionFactory,
1515
@inject("DBTTerminal")

src/dbt_client/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { commands, Disposable, EventEmitter, window, workspace } from "vscode";
2-
import { PythonEnvironment } from "../dbt_integration/pythonEnvironment";
2+
import { PythonEnvironment } from "../manifest/pythonEnvironment";
33
import { provideSingleton } from "../utils";
44
import { DBTInstallationVerificationEvent } from "./dbtVersionEvent";
55
import { existsSync } from "fs";
@@ -29,7 +29,7 @@ export class DBTClient implements Disposable {
2929
];
3030
private shownError = false;
3131
constructor(
32-
@inject("PythonEnvironment")
32+
@inject(PythonEnvironment)
3333
private pythonEnvironment: PythonEnvironment,
3434
@inject("Factory<DBTDetection>")
3535
private dbtDetectionFactory: () => DBTDetection,

src/dbt_integration/dbtCloudIntegration.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ import { PythonBridge } from "python-bridge";
2020
import { join, dirname } from "path";
2121
import path = require("path");
2222
import { DBTTerminal } from "./terminal";
23-
import { PythonEnvironment } from "./pythonEnvironment";
23+
import { RuntimePythonEnvironment } from "./pythonEnvironment";
2424
import { existsSync, readFileSync } from "fs";
2525
import semver = require("semver");
2626
import { NodeMetaData } from "./domain";
2727
import * as crypto from "crypto";
2828
import { parse } from "yaml";
2929

3030
export function getDBTPath(
31-
pythonEnvironment: PythonEnvironment,
31+
pythonEnvironment: RuntimePythonEnvironment,
3232
terminal: DBTTerminal,
3333
): string {
3434
if (pythonEnvironment.pythonPath) {
@@ -52,7 +52,7 @@ export function getDBTPath(
5252
export class DBTCloudDetection implements DBTDetection {
5353
constructor(
5454
protected commandProcessExecutionFactory: CommandProcessExecutionFactory,
55-
protected pythonEnvironment: PythonEnvironment,
55+
protected pythonEnvironment: RuntimePythonEnvironment,
5656
protected terminal: DBTTerminal,
5757
) {}
5858

@@ -133,7 +133,7 @@ export class DBTCloudProjectIntegration implements DBTProjectIntegration {
133133
path: string,
134134
dbtPath: string,
135135
) => DBTCommandExecutionStrategy,
136-
private pythonEnvironment: PythonEnvironment,
136+
private pythonEnvironment: RuntimePythonEnvironment,
137137
protected terminal: DBTTerminal,
138138
protected projectRoot: string,
139139
private projectConfigDiagnostics: DBTDiagnosticData[],
@@ -148,14 +148,15 @@ export class DBTCloudProjectIntegration implements DBTProjectIntegration {
148148
this.projectRoot,
149149
);
150150

151-
this.disposables.push(
152-
this.pythonEnvironment.onPythonEnvironmentChanged(() => {
153-
this.python = this.executionInfrastructure.createPythonBridge(
154-
this.projectRoot,
155-
);
156-
this.initializeProject();
157-
}),
158-
);
151+
// TODO: Re-implement python environment change handling through PythonEnvironmentProvider
152+
// this.disposables.push(
153+
// this.pythonEnvironment.onPythonEnvironmentChanged(() => {
154+
// this.python = this.executionInfrastructure.createPythonBridge(
155+
// this.projectRoot,
156+
// );
157+
// this.initializeProject();
158+
// }),
159+
// );
159160
}
160161

161162
async refreshProjectConfig(): Promise<void> {

src/dbt_integration/dbtCoreIntegration.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
DeferConfig,
2222
ManifestPathType,
2323
} from "./dbtIntegration";
24-
import { PythonEnvironment } from "./pythonEnvironment";
24+
import { RuntimePythonEnvironment } from "./pythonEnvironment";
2525
import { CommandProcessExecutionFactory } from "./commandProcessExecution";
2626
import { PythonBridge, PythonException } from "python-bridge";
2727
import * as path from "path";
@@ -86,7 +86,7 @@ export interface ProjectHealthcheck {
8686

8787
export class DBTCoreDetection implements DBTDetection {
8888
constructor(
89-
private pythonEnvironment: PythonEnvironment,
89+
private pythonEnvironment: RuntimePythonEnvironment,
9090
private commandProcessExecutionFactory: CommandProcessExecutionFactory,
9191
) {}
9292

@@ -207,7 +207,7 @@ export class DBTCoreProjectIntegration implements DBTProjectIntegration {
207207

208208
constructor(
209209
private executionInfrastructure: DBTCommandExecutionInfrastructure,
210-
protected pythonEnvironment: PythonEnvironment,
210+
protected pythonEnvironment: RuntimePythonEnvironment,
211211
private pythonDBTCommandExecutionStrategy: PythonDBTCommandExecutionStrategy,
212212
protected cliDBTCommandExecutionStrategyFactory: (
213213
path: string,
@@ -229,13 +229,14 @@ export class DBTCoreProjectIntegration implements DBTProjectIntegration {
229229
this.projectRoot,
230230
);
231231

232-
this.disposables.push(
233-
this.pythonEnvironment.onPythonEnvironmentChanged(() => {
234-
this.python = this.executionInfrastructure.createPythonBridge(
235-
this.projectRoot,
236-
);
237-
}),
238-
);
232+
// TODO: Re-implement python environment change handling through PythonEnvironmentProvider
233+
// this.disposables.push(
234+
// this.pythonEnvironment.onPythonEnvironmentChanged(() => {
235+
// this.python = this.executionInfrastructure.createPythonBridge(
236+
// this.projectRoot,
237+
// );
238+
// }),
239+
// );
239240
}
240241

241242
// remove the trailing slashes if they exists,

src/dbt_integration/dbtFusionCommandIntegration.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ import { DBTCloudProjectIntegration, getDBTPath } from "./dbtCloudIntegration";
1515
import { DBTConfiguration } from "./configuration";
1616
import path, { join } from "path";
1717
import { CommandProcessExecutionFactory } from "./commandProcessExecution";
18-
import { PythonEnvironment } from "./pythonEnvironment";
18+
import { RuntimePythonEnvironment } from "./pythonEnvironment";
1919
import { DBTTerminal } from "./terminal";
2020

2121
export class DBTFusionCommandDetection implements DBTDetection {
2222
constructor(
2323
protected commandProcessExecutionFactory: CommandProcessExecutionFactory,
24-
protected pythonEnvironment: PythonEnvironment,
24+
protected pythonEnvironment: RuntimePythonEnvironment,
2525
protected terminal: DBTTerminal,
2626
protected dbtConfiguration: DBTConfiguration,
2727
) {}

src/dbt_integration/dbtIntegration.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
CommandProcessExecutionFactory,
55
CommandProcessResult,
66
} from "./commandProcessExecution";
7-
import { PythonEnvironment } from "./pythonEnvironment";
7+
import { RuntimePythonEnvironment } from "./pythonEnvironment";
88
import { existsSync, readFileSync } from "fs";
99
import { DBTTerminal } from "./terminal";
1010
import { NodeMetaData } from "./domain";
@@ -148,7 +148,7 @@ export class CLIDBTCommandExecutionStrategy
148148
{
149149
constructor(
150150
protected commandProcessExecutionFactory: CommandProcessExecutionFactory,
151-
protected pythonEnvironment: PythonEnvironment,
151+
protected pythonEnvironment: RuntimePythonEnvironment,
152152
protected terminal: DBTTerminal,
153153
protected cwd: string,
154154
protected dbtPath: string,
@@ -213,7 +213,7 @@ export class PythonDBTCommandExecutionStrategy
213213
{
214214
constructor(
215215
private commandProcessExecutionFactory: CommandProcessExecutionFactory,
216-
private pythonEnvironment: PythonEnvironment,
216+
private pythonEnvironment: RuntimePythonEnvironment,
217217
private terminal: DBTTerminal,
218218
private configuration: DBTConfiguration,
219219
) {}
@@ -485,7 +485,7 @@ export interface DBTProjectIntegration {
485485

486486
export class DBTCommandExecutionInfrastructure {
487487
constructor(
488-
private pythonEnvironment: PythonEnvironment,
488+
private pythonEnvironment: RuntimePythonEnvironment,
489489
private terminal: DBTTerminal,
490490
) {}
491491

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import { Event, Uri } from "vscode";
21
import { EnvironmentVariables } from "./domain";
32

4-
export interface PythonEnvironment {
5-
readonly allPythonPaths: { path: string; pathType: string }[];
6-
readonly isPython3: boolean;
3+
export interface RuntimePythonEnvironment {
74
readonly pythonPath: string;
85
readonly environmentVariables: EnvironmentVariables;
9-
readonly onPythonEnvironmentChanged: Event<Uri | undefined>;
10-
11-
initialize(): Promise<void>;
12-
printEnvVars(): Promise<void>;
13-
getResolvedConfigValue(key: string): string;
6+
}
147

15-
dispose(): Promise<void>;
8+
export interface PythonEnvironmentProvider {
9+
getCurrentEnvironment(): RuntimePythonEnvironment;
10+
onEnvironmentChanged(
11+
callback: (environment: RuntimePythonEnvironment) => void,
12+
): void;
1613
}

src/document_formatting_edit_provider/dbtDocumentFormattingEditProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
provideSingleton,
1818
} from "../utils";
1919
import { TelemetryService } from "../telemetry";
20-
import { PythonEnvironment } from "../dbt_integration/pythonEnvironment";
20+
import { PythonEnvironment } from "../manifest/pythonEnvironment";
2121
import path from "path";
2222
import fs from "fs";
2323
import { inject } from "inversify";
@@ -29,7 +29,7 @@ export class DbtDocumentFormattingEditProvider
2929
constructor(
3030
private commandProcessExecutionFactory: CommandProcessExecutionFactory,
3131
private telemetry: TelemetryService,
32-
@inject("PythonEnvironment")
32+
@inject(PythonEnvironment)
3333
private pythonEnvironment: PythonEnvironment,
3434
) {}
3535

0 commit comments

Comments
 (0)