Skip to content

Commit dfd505e

Browse files
Merge pull request #10061 from cvat-ai/release-2.51.0
Release v2.51.0
2 parents d8620c7 + dceca49 commit dfd505e

File tree

87 files changed

+455
-184
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+455
-184
lines changed

.github/workflows/full.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ jobs:
102102

103103
- uses: actions/setup-python@v5
104104
with:
105-
python-version: '3.9'
105+
python-version: '3.10'
106106

107107
- name: Download CVAT server image
108108
uses: actions/download-artifact@v4
@@ -245,10 +245,10 @@ jobs:
245245
strategy:
246246
fail-fast: false
247247
matrix:
248-
specs: ['actions_tasks', 'actions_tasks2', 'actions_tasks3',
248+
specs: ['actions_tasks', 'actions_tasks2', 'actions_tasks3', 'actions_tasks4',
249249
'actions_objects', 'actions_objects2', 'actions_users',
250-
'actions_projects_models', 'canvas3d_functionality', 'canvas3d_functionality_2',
251-
'issues_prs', 'issues_prs2', 'features']
250+
'actions_projects_models', 'canvas3d_functionality',
251+
'issues_prs', 'issues_prs2', 'features', 'features2']
252252
steps:
253253
- uses: actions/checkout@v4
254254
with:
@@ -318,12 +318,12 @@ jobs:
318318
--browser chrome \
319319
--env coverage=false \
320320
--config-file cypress_canvas3d.config.js \
321-
--spec 'cypress/e2e/${{ matrix.specs }}/**/*.js,cypress/e2e/remove_users_tasks_projects_organizations.js'
321+
--spec 'cypress/e2e/setup/setup_canvas3d.js,cypress/e2e/canvas3d_*/**/*.js,cypress/e2e/remove_users_tasks_projects_organizations.js'
322322
else
323323
npx cypress run \
324324
--browser chrome \
325325
--env coverage=false \
326-
--spec 'cypress/e2e/${{ matrix.specs }}/**/*.js,cypress/e2e/remove_users_tasks_projects_organizations.js'
326+
--spec 'cypress/e2e/setup/setup.js,cypress/e2e/setup/setup_project.js,cypress/e2e/${{ matrix.specs }}/**/*.js,cypress/e2e/remove_users_tasks_projects_organizations.js'
327327
fi
328328
329329
- name: Creating a log file from "cvat" container logs

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ jobs:
152152

153153
- uses: actions/setup-python@v5
154154
with:
155-
python-version: '3.9'
155+
python-version: '3.10'
156156

157157
- name: Download CVAT server image
158158
uses: actions/download-artifact@v4

.github/workflows/schedule.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ jobs:
106106

107107
- uses: actions/setup-python@v5
108108
with:
109-
python-version: '3.9'
109+
python-version: '3.10'
110110

111111
- name: Download CVAT server image
112112
uses: actions/download-artifact@v4

.pylintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ persistent=yes
8484

8585
# Minimum Python version to use for version dependent checks. Will default to
8686
# the version used to run pylint.
87-
py-version=3.9
87+
py-version=3.10
8888

8989
# Discover python modules and packages in the file system subtree.
9090
recursive=no

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1616

1717
<!-- scriv-insert-here -->
1818

19+
<a id='changelog-2.51.0'></a>
20+
## \[2.51.0\] - 2025-12-01
21+
22+
### Added
23+
24+
- Documentation for using Backblaze B2 as an S3-compatible cloud storage option in CVAT
25+
(<https://github.com/cvat-ai/cvat/pull/9952>)
26+
27+
### Changed
28+
29+
- Relaxed video manifest creation to make use of keyframes even if seek lands earlier
30+
(<https://github.com/cvat-ai/cvat/pull/9994>)
31+
32+
### Removed
33+
34+
- Python 3.9 support (due to Python 3.9 EOL)
35+
(<https://github.com/cvat-ai/cvat/pull/10051>)
36+
37+
### Fixed
38+
39+
- Fixed OpenAPI schema for `retrieve_data` endpoints: marked `type` parameter as required for both tasks and jobs API
40+
(<https://github.com/cvat-ai/cvat/issues/9315>)
41+
42+
- Calculation of statistics in the job is failed when there is a track without keyframes
43+
(<https://github.com/cvat-ai/cvat/pull/10050>)
44+
45+
- Update the `updated_date` field of the Task when PATCHing `/api/tasks/<id>/data/meta`
46+
(<https://github.com/cvat-ai/cvat/pull/10052>)
47+
48+
- Incorrect retry handling of `429 TooManyRequests` error in case of data uploading via TUS protocol
49+
(<https://github.com/cvat-ai/cvat/pull/10055>)
50+
51+
- Error message is not displayed if not possible to fetch data for 3D canvas
52+
(<https://github.com/cvat-ai/cvat/pull/10059>)
53+
1954
<a id='changelog-2.50.0'></a>
2055
## \[2.50.0\] - 2025-11-26
2156

cvat-canvas/src/typescript/canvasModel.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,8 @@ export class CanvasModelImpl extends MasterImpl implements CanvasModel {
11571157
public get mode(): Mode {
11581158
return this.data.mode;
11591159
}
1160-
public get exception(): Error {
1160+
1161+
public get exception(): Error | null {
11611162
return this.data.exception;
11621163
}
11631164
}

cvat-canvas3d/src/typescript/canvas3dModel.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export enum UpdateReasons {
9494
SPLIT = 'split',
9595
FITTED_CANVAS = 'fitted_canvas',
9696
SHAPES_CONFIG_UPDATED = 'shapes_config_updated',
97+
DATA_FAILED = 'data_failed',
9798
}
9899

99100
export enum Mode {
@@ -126,6 +127,7 @@ export interface Canvas3dDataModel {
126127
frameData: any;
127128
objectStates: ObjectState[];
128129
} | null;
130+
exception: Error | null;
129131
}
130132

131133
export interface Canvas3dModel {
@@ -135,6 +137,7 @@ export interface Canvas3dModel {
135137
readonly groupData: GroupData;
136138
readonly mergeData: MergeData;
137139
readonly objects: ObjectState[];
140+
readonly exception: Error | null;
138141
setup(frameData: any, objectStates: ObjectState[]): void;
139142
isAbleToChangeFrame(): boolean;
140143
draw(drawData: DrawData): void;
@@ -202,6 +205,7 @@ export class Canvas3dModelImpl extends MasterImpl implements Canvas3dModel {
202205
},
203206
isFrameUpdating: false,
204207
nextSetupRequest: null,
208+
exception: null,
205209
};
206210
}
207211

@@ -262,7 +266,12 @@ export class Canvas3dModelImpl extends MasterImpl implements Canvas3dModel {
262266
this.data.isFrameUpdating = false;
263267
// don't notify when the frame is no longer needed
264268
if (typeof exception !== 'number' || exception === this.data.imageID) {
265-
throw exception;
269+
if (exception instanceof Error) {
270+
this.data.exception = exception;
271+
} else {
272+
this.data.exception = new Error('Unknown error occurred when fetching image data');
273+
}
274+
this.notify(UpdateReasons.DATA_FAILED);
266275
}
267276
});
268277
}
@@ -436,5 +445,9 @@ export class Canvas3dModelImpl extends MasterImpl implements Canvas3dModel {
436445
return this.data.imageIsDeleted;
437446
}
438447

448+
public get exception(): Error | null {
449+
return this.data.exception;
450+
}
451+
439452
public destroy(): void {}
440453
}

cvat-canvas3d/src/typescript/canvas3dView.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,20 @@ export class Canvas3dViewImpl implements Canvas3dView, Listener {
747747
this.enablePerspectiveDragging();
748748
};
749749

750+
private onError = (exception: unknown, domain?: string): void => {
751+
this.dispatchEvent(
752+
new CustomEvent('canvas.error', {
753+
bubbles: false,
754+
cancelable: true,
755+
detail: {
756+
domain,
757+
exception: exception instanceof Error ?
758+
exception : new Error(`Unknown exception: "${exception}"`),
759+
},
760+
}),
761+
);
762+
};
763+
750764
private startAction(view: any, event: MouseEvent): void {
751765
const { clientID } = this.model.data.activeElement;
752766
if (event.detail !== 1 || this.mode !== Mode.IDLE || clientID === null || !(clientID in this.drawnObjects)) {
@@ -1428,6 +1442,8 @@ export class Canvas3dViewImpl implements Canvas3dView, Listener {
14281442
this.statesToBeMerged = [];
14291443
model.data.activeElement.clientID = null;
14301444
}
1445+
} else if (reason === UpdateReasons.DATA_FAILED) {
1446+
this.onError(model.exception, 'data fetching');
14311447
}
14321448
}
14331449

cvat-cli/requirements/base.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cvat-sdk==2.50.0
1+
cvat-sdk==2.51.0
22

33
attrs>=24.2.0
44
Pillow>=10.3.0

cvat-cli/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def parse_requirements(filename=BASE_REQUIREMENTS_FILE):
5656
"License :: OSI Approved :: MIT License",
5757
"Operating System :: OS Independent",
5858
],
59-
python_requires=">=3.9",
59+
python_requires=">=3.10",
6060
install_requires=BASE_REQUIREMENTS,
6161
entry_points={
6262
"console_scripts": [

0 commit comments

Comments
 (0)