Skip to content

Commit b6b2343

Browse files
authored
wire up checkpoints model with data and extension (#1284)
1 parent d848208 commit b6b2343

File tree

5 files changed

+43
-14
lines changed

5 files changed

+43
-14
lines changed

extension/src/experiments/index.ts

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from './model/filterBy/quickPick'
1010
import { pickSortsToRemove, pickSortToAdd } from './model/sortBy/quickPick'
1111
import { MetricsAndParamsModel } from './metricsAndParams/model'
12+
import { CheckpointsModel } from './checkpoints/model'
1213
import { ExperimentsData } from './data'
1314
import { TableData } from './webview/contract'
1415
import { ResourceLocator } from '../resourceLocator'
@@ -22,17 +23,20 @@ import {
2223
MessageFromWebviewType
2324
} from '../webview/contract'
2425
import { Logger } from '../common/logger'
26+
import { FileSystemData } from '../fileSystem/data'
2527

2628
export class Experiments extends BaseRepository<TableData> {
2729
public readonly onDidChangeExperiments: Event<ExperimentsOutput | void>
2830
public readonly onDidChangeMetricsOrParams: Event<void>
2931

3032
public readonly viewKey = ViewKey.EXPERIMENTS
3133

32-
private readonly data: ExperimentsData
34+
private readonly cliData: ExperimentsData
35+
private readonly fileSystemData: FileSystemData
3336

3437
private readonly experiments: ExperimentsModel
3538
private readonly metricsAndParams: MetricsAndParamsModel
39+
private readonly checkpoints: CheckpointsModel
3640

3741
private readonly experimentsChanged = this.dispose.track(
3842
new EventEmitter<ExperimentsOutput | void>()
@@ -48,7 +52,8 @@ export class Experiments extends BaseRepository<TableData> {
4852
updatesPaused: EventEmitter<boolean>,
4953
resourceLocator: ResourceLocator,
5054
workspaceState: Memento,
51-
data?: ExperimentsData
55+
cliData?: ExperimentsData,
56+
fileSystemData?: FileSystemData
5257
) {
5358
super(dvcRoot, resourceLocator.beaker)
5459

@@ -63,11 +68,22 @@ export class Experiments extends BaseRepository<TableData> {
6368
new MetricsAndParamsModel(dvcRoot, workspaceState)
6469
)
6570

66-
this.data = this.dispose.track(
67-
data || new ExperimentsData(dvcRoot, internalCommands, updatesPaused)
71+
this.checkpoints = this.dispose.track(new CheckpointsModel())
72+
73+
this.cliData = this.dispose.track(
74+
cliData || new ExperimentsData(dvcRoot, internalCommands, updatesPaused)
6875
)
6976

70-
this.dispose.track(this.data.onDidUpdate(data => this.setState(data)))
77+
this.fileSystemData = this.dispose.track(
78+
fileSystemData || new FileSystemData(dvcRoot)
79+
)
80+
81+
this.dispose.track(this.cliData.onDidUpdate(data => this.setState(data)))
82+
this.dispose.track(
83+
this.fileSystemData.onDidUpdate(data =>
84+
this.checkpoints.transformAndSet(data)
85+
)
86+
)
7187

7288
this.handleMessageFromWebview()
7389

@@ -81,11 +97,11 @@ export class Experiments extends BaseRepository<TableData> {
8197
}
8298

8399
public update() {
84-
return this.data.managedUpdate()
100+
return this.cliData.managedUpdate()
85101
}
86102

87103
public forceUpdate() {
88-
return this.data.forceUpdate()
104+
return this.cliData.forceUpdate()
89105
}
90106

91107
public async setState(data: ExperimentsOutput) {
@@ -97,6 +113,10 @@ export class Experiments extends BaseRepository<TableData> {
97113
return this.notifyChanged(data)
98114
}
99115

116+
public hasCheckpoints() {
117+
return this.checkpoints.hasCheckpoints()
118+
}
119+
100120
public getChildMetricsOrParams(path?: string) {
101121
return this.metricsAndParams.getChildren(path)
102122
}

extension/src/plots/model/collect.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ describe('collectBranchRevision', () => {
8181
})
8282

8383
describe('collectMutableRevisions', () => {
84-
it('should return all of the running non-checkpoint experiments from the test fixture', () => {
85-
const mutable = collectMutableRevisions(expShowFixture)
86-
expect(mutable).toEqual(['workspace'])
84+
it('should always return an empty array when checkpoints are present', () => {
85+
const mutable = collectMutableRevisions(expShowFixture, true)
86+
expect(mutable).toEqual([])
8787
})
8888

8989
it('should return all running experiments when there are no checkpoints', () => {
@@ -131,7 +131,7 @@ describe('collectMutableRevisions', () => {
131131
}
132132
}
133133

134-
const mutable = collectMutableRevisions(experimentsRunningInTemp)
134+
const mutable = collectMutableRevisions(experimentsRunningInTemp, false)
135135
expect(mutable).toEqual(['6ee95de', 'ebaa07e'])
136136
})
137137
})

extension/src/plots/model/collect.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,14 @@ const collectMutableFromExperiment = (
289289
})
290290
}
291291

292-
export const collectMutableRevisions = (data: ExperimentsOutput): string[] => {
292+
export const collectMutableRevisions = (
293+
data: ExperimentsOutput,
294+
hasCheckpoints: boolean
295+
): string[] => {
296+
if (hasCheckpoints) {
297+
return []
298+
}
299+
293300
const acc: string[] = []
294301

295302
if (data.workspace.baseline.data?.running) {

extension/src/plots/model/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export class PlotsModel {
9393
collectLivePlotsData(data),
9494
collectRevisions(data),
9595
collectBranchRevision(data),
96-
collectMutableRevisions(data)
96+
collectMutableRevisions(data, this.experiments.hasCheckpoints())
9797
])
9898

9999
const { branchNames, revisionsByTip, revisionsByBranch } = revisions

extension/src/test/suite/experiments/util.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import expShowFixture from '../../fixtures/expShow/output'
77
import { buildMockMemento, dvcDemoPath } from '../../util'
88
import { buildDependencies, buildMockData } from '../util'
99
import { ExperimentsData } from '../../../experiments/data'
10+
import { FileSystemData } from '../../../fileSystem/data'
1011

1112
export const buildExperiments = (
1213
disposer: Disposer,
@@ -29,7 +30,8 @@ export const buildExperiments = (
2930
updatesPaused,
3031
resourceLocator,
3132
buildMockMemento(),
32-
buildMockData<ExperimentsData>()
33+
buildMockData<ExperimentsData>(),
34+
buildMockData<FileSystemData>()
3335
)
3436
)
3537

0 commit comments

Comments
 (0)