Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update CVAT upstream #15

Open
wants to merge 3,688 commits into
base: develop
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
3688 commits
Select commit Hold shift + click to select a range
86deaff
Make SDK models pickleable (#8746)
SpecLad Nov 28, 2024
bc9c1bc
Prepare release v2.23.0
cvat-bot[bot] Nov 29, 2024
05a39d6
Update develop after v2.23.0
cvat-bot[bot] Nov 29, 2024
0c57d24
Merge pull request #8759 from cvat-ai/dev-release-2.23.0
bsekachev Nov 29, 2024
4681dd6
Removed outdated code related to web analytics (#8755)
bsekachev Dec 2, 2024
73cdceb
Fixed color of 'Create object URL' on not saved object (#8752)
bsekachev Dec 2, 2024
86bd1f1
Fixed issue: fit:canvas may not generate in some cases (#8750)
bsekachev Dec 2, 2024
194b79c
Fixed issue: user may navigate forward with an opened modal (#8748)
bsekachev Dec 2, 2024
fc37eb3
Fixed issue: player navigates to removed frames when playing (#8747)
bsekachev Dec 2, 2024
17ec908
Fix frame names in the allocation table for simple GT job (#8731)
zhiltsov-max Dec 3, 2024
7d9c368
not prefetching images when not needed (#8676)
Eldies Dec 4, 2024
022f45d
Update assets for chunk test (#8740)
klakhov Dec 4, 2024
f098ee5
Add quality modes and management docs (#8732)
zhiltsov-max Dec 4, 2024
d86c816
Fix image format in docs (#8775)
zhiltsov-max Dec 4, 2024
a09230c
Keep preview in cache during task creation (#8766)
azhavoro Dec 5, 2024
683804e
Bump DRF to 3.15.2 (#8773)
SpecLad Dec 5, 2024
ebe3dd6
Fixed sonar cloud issues (#8779)
klakhov Dec 5, 2024
682d7dd
Enqueue job to prepare chunk in case of honey pot job change (#8772)
klakhov Dec 6, 2024
b5c0971
Update test assets for quality tests (#8763)
klakhov Dec 6, 2024
a091d15
Fix infinite lock for chunk preparing (#8769)
azhavoro Dec 6, 2024
ca3d700
CLI: log to stderr instead of stdout (#8784)
SpecLad Dec 6, 2024
caff6ee
Remove ModelDeleteMixin from TasksRepo base classes (#8786)
SpecLad Dec 6, 2024
12eec54
Fixed issue: Cannot read properties of undefined (reading 'getUpdated…
bsekachev Dec 6, 2024
61c6a01
Memory optimization for image chunk preparation (#8778)
azhavoro Dec 9, 2024
195f427
Prepare release v2.23.1
cvat-bot[bot] Dec 9, 2024
e59cd74
Update develop after v2.23.1
cvat-bot[bot] Dec 9, 2024
56f0407
Merge pull request #8796 from cvat-ai/dev-release-2.23.1
azhavoro Dec 9, 2024
094c62d
Remove the `ready_for_review` trigger from the Docs workflow (#8788)
SpecLad Dec 9, 2024
9a08a0c
Nuclio functions in cvat network (#8777)
bsekachev Dec 10, 2024
90f12ba
Fix instructions for running tests (#8808)
archibald1418 Dec 10, 2024
15fd273
Update pip install command for local packages (#8809)
archibald1418 Dec 10, 2024
17016de
Added support for boolean parameters in annotations actions (#8798)
bsekachev Dec 10, 2024
11ea2ee
Updated documentation: need to mount shared volume to cvat_worker_chu…
bsekachev Dec 10, 2024
2b53691
Disable auto quality updates (#8790)
zhiltsov-max Dec 11, 2024
c0f3b31
[doc] Fix clear spelling mistakes and change docstrings and comments …
gboeer Dec 11, 2024
3f44834
Make the CLI hierarchical (#8787)
SpecLad Dec 11, 2024
18c86ff
Fixed frame initialization for base collection action (#8814)
bsekachev Dec 12, 2024
17bdbee
Reset some rq meta fields when retrying rq job (#8719)
Marishka17 Dec 12, 2024
1103d38
Add [.]venv to .gitignore to ignore local root python environments (#…
archibald1418 Dec 12, 2024
289ad43
Improve validation frame distribution in tasks with honeypots (#8776)
zhiltsov-max Dec 12, 2024
ee98635
Fixed uploading a skeleton template in configurator (#8822)
bsekachev Dec 13, 2024
c729f18
Fixed installation of YOLOv7 on GPU (#8824)
bsekachev Dec 13, 2024
1862551
Regression test for missing frames after exporting a CVAT dataset
Dec 13, 2024
7dfe012
linted changes with Black
Dec 13, 2024
31963ef
add fixtures for reseting db and cache per function
Dec 16, 2024
0d3e477
linted code
Dec 16, 2024
bf6469e
Added documentation for SAM2 tracker (#8820)
bsekachev Dec 16, 2024
4d26d5c
Bump @ant-design/icons to match antd (#8826)
SpecLad Dec 17, 2024
73458b3
CLI: make the output of `create` commands machine-readable (#8833)
SpecLad Dec 17, 2024
87312a4
add params image/video, start_frame + fixture for an image/video task
Dec 17, 2024
7756d4e
linted code, removed match statement
Dec 17, 2024
54572a7
Merge branch 'develop' into ov/regression_export_cvat_dataset
Dec 17, 2024
338d52a
linted code with latest black version (vscode black turned old)
Dec 17, 2024
c99f8a4
/api/events endpoint can be used to receive events not only from clie…
Eldies Dec 18, 2024
8b22b94
Merge branch 'develop' into ov/regression_export_cvat_dataset
Dec 18, 2024
851fb7d
ignore deleted frames when converting tracks to shapes (#8834)
Eldies Dec 18, 2024
e41da1a
move yield inside ctx to work with the same client later
archibald1418 Dec 18, 2024
ba475a9
updating datumaro (#8838)
Eldies Dec 18, 2024
b0b1bc1
Bump nanoid from 3.3.7 to 3.3.8 (#8828)
dependabot[bot] Dec 19, 2024
5140d3d
Bump cross-spawn from 7.0.3 to 7.0.6 (#8725)
dependabot[bot] Dec 19, 2024
c4504dc
Fixed unstable requests regression test (#8841)
klakhov Dec 19, 2024
d9f0d5f
factor out end_frame calculations to utils
Dec 19, 2024
4998837
sort imports
Dec 19, 2024
a9ea512
Fix an issue of releasing lock for rq export job when the worker subp…
Marishka17 Dec 19, 2024
df230a4
Merge pull request #8827 from cvat-ai/ov/regression_export_cvat_dataset
archibald1418 Dec 19, 2024
b2a8c1b
Optimize validation layout updates (#8789)
zhiltsov-max Dec 19, 2024
f3835c5
Prepare release v2.24.0
cvat-bot[bot] Dec 20, 2024
1f29aae
Update develop after v2.24.0
cvat-bot[bot] Dec 20, 2024
54534e8
Merge pull request #8850 from cvat-ai/dev-release-2.24.0
azhavoro Dec 20, 2024
12f886c
engine: remove deprecated imports (#8856)
SpecLad Dec 20, 2024
5b7d12c
Centralize Python linter/formatter requirements (#8854)
SpecLad Dec 24, 2024
3ba5715
Remove all remaining deprecated imports (#8861)
SpecLad Dec 24, 2024
2fd48c8
Remove the `ModelProvider` interface (#8860)
SpecLad Dec 24, 2024
d966c1e
Fix Pylint warnings in migrations (#8869)
SpecLad Dec 24, 2024
6e3b5f8
added `cvat_worker_chunk` service in `docker-compose.external_db.yml`…
PushpakBhoge Dec 25, 2024
85223f5
chore: fix some typos in comment (#8868)
cuiweiyuan Dec 25, 2024
9a554c4
E2E test of issue #8785: Undefined when reading getUpdated (#8843)
archibald1418 Dec 25, 2024
d2c0713
yolov8 docs update (#8864)
Eldies Dec 25, 2024
7ce704d
Update documentation for social authentication with Amazon Cognito (#…
Marishka17 Dec 25, 2024
b1d0a6c
CLI: Add ability to create CVAT agents based on AA functions (#8821)
SpecLad Dec 25, 2024
185a00b
renaming yolov8 to ultralytics yolo (#8863)
Eldies Dec 26, 2024
9a25291
Fix link to the authentication with Amazon Cognito (#8877)
Marishka17 Dec 27, 2024
26f08ce
Fix an issue with deleting frames (#8872)
klakhov Dec 29, 2024
279db7c
fixing broken unit tests in cvat/app/events (#8867)
archibald1418 Dec 30, 2024
c80091b
Fix unstable headlessCreateUser cypress command (#8885)
azhavoro Jan 3, 2025
76de839
Apply isort to almost all Python sources (#8866)
SpecLad Jan 6, 2025
30fbfb2
Allow empty items to be cached (#8890)
Marishka17 Jan 6, 2025
25245e6
correctly process export to yolo formats if both Train and default da…
Eldies Jan 6, 2025
1124b29
Optimize honeypot selection algorithm (#8857)
zhiltsov-max Jan 6, 2025
5702a04
Bump pyyaml in test requirements (#8900)
SpecLad Jan 7, 2025
5d22b66
Bump cross-spawn from 7.0.3 to 7.0.6 in /tests (#8876)
dependabot[bot] Jan 7, 2025
8b621c2
ultralytics yolo support for tracks (#8883)
Eldies Jan 7, 2025
39825ad
Blacken most apps (#8902)
SpecLad Jan 8, 2025
c5f2272
Change match_empty_frames to empty_is_annotated (#8888)
zhiltsov-max Jan 8, 2025
c164771
Make it easier to execute commands in the server container from tests…
SpecLad Jan 8, 2025
331ff86
preserving original rotation for export-import in yolo oriented boxes…
Eldies Jan 8, 2025
b594b1c
Add a management command to run a configured periodic job immediately…
SpecLad Jan 8, 2025
f8f40e2
Add missed changelog notes (#8917)
azhavoro Jan 9, 2025
aaab665
Prepare release v2.25.0
cvat-bot[bot] Jan 9, 2025
4891a5f
Update develop after v2.25.0
cvat-bot[bot] Jan 9, 2025
2da1c9b
Merge pull request #8922 from cvat-ai/dev-release-2.25.0
azhavoro Jan 9, 2025
43cc1f3
Fix webhooks worker not restarting (#8921)
SpecLad Jan 10, 2025
411f8e7
tests/python/requirements.txt: bump boto3 (#8920)
SpecLad Jan 10, 2025
3c8b22d
yolo docs - import with tracks (#8926)
Eldies Jan 10, 2025
8880e11
update datumaro (#8923)
Eldies Jan 13, 2025
af8bfe3
Make test_export_with_non_default_frame_step compatible with Python 3…
SpecLad Jan 13, 2025
42bc345
Fix broken linter workflows (#8933)
SpecLad Jan 13, 2025
13fd5a7
Update `default-specs.js` validation params (#8924)
klakhov Jan 13, 2025
b63f68a
on import from cloud, save resource to disk directly (#8930)
Eldies Jan 14, 2025
a701863
Fix lambda function logic when all detections are filtered out (#8931)
SpecLad Jan 14, 2025
e276295
Introduce cron jobs to clean up the export cache (data/cache/export/)…
Marishka17 Jan 14, 2025
f215090
Updated webpack config to debug remotely (#8941)
bsekachev Jan 15, 2025
377375b
Updated license year (#8946)
bsekachev Jan 15, 2025
d1be6e6
Fix SiamMask breakage due to a bad OpenCV version check (#8945)
SpecLad Jan 15, 2025
8613254
Improve quality UX (#8865)
klakhov Jan 16, 2025
3f4de06
Updated MIL tracker implementation (#8942)
bsekachev Jan 16, 2025
f369906
Peg the UI version to the server version (#8948)
SpecLad Jan 17, 2025
d7f49ef
Automate date fixes in test assets (#8943)
zhiltsov-max Jan 17, 2025
fe5efaf
Remove redis-cli auth warnings in helm test logs (#8961)
zhiltsov-max Jan 20, 2025
d3be5b6
Fix invalid inheritance in tests (#8962)
zhiltsov-max Jan 20, 2025
6fead08
Fixed issue: object interpolated incorrectly if a frame with the obje…
bsekachev Jan 20, 2025
39d4cb0
Narrow job dates in task job list (#8967)
zhiltsov-max Jan 20, 2025
466d071
Remove obsolete npm scripts (#8965)
SpecLad Jan 21, 2025
5a99e73
Drop years from license headers associated to CVAT.ai Corporation (#8…
bsekachev Jan 21, 2025
1140a92
Fixed: Extra shortcuts enabled from brush tools on views where not ne…
bsekachev Jan 21, 2025
02719a2
Fix: Cannot read properties of undefined (reading 'startPoints') (#8966)
klakhov Jan 21, 2025
23bcc89
Extend some timeouts in tests (#8963)
zhiltsov-max Jan 21, 2025
cc4c910
Slightly cleaned up cypress tests (#8975)
bsekachev Jan 21, 2025
5d69c7e
Return Promise like object from a cypress command to create a user (#…
bsekachev Jan 21, 2025
4c5e522
Fixed dragging method for skeletons (#8976)
bsekachev Jan 21, 2025
c2bfb21
Reworked headlessCreateUser command in Cypress (#8977)
bsekachev Jan 21, 2025
f9b7138
Simplify the code formatting script (#8910)
SpecLad Jan 22, 2025
e568888
Refactored couple of Cypress commands (#8979)
bsekachev Jan 22, 2025
68ffe4a
Refactor IAM id access (#8969)
zhiltsov-max Jan 22, 2025
c6ec4eb
Update SECURITY.md (#8982)
bsekachev Jan 22, 2025
ea6bcb2
Blacken dataset_manifest (#8981)
SpecLad Jan 23, 2025
291f3d2
Add containerBuilderKind for nuclio in Helm chart values (#8825)
pratclot Jan 23, 2025
9b0efb1
allow setting django secret with enironment variable (#8566)
sei-jmattson Jan 23, 2025
4191be3
Test to confirm correct UI and cache state after frame deletion (#8949)
archibald1418 Jan 23, 2025
d8ce29d
Remove jest tests from cvat-core (#8985)
bsekachev Jan 24, 2025
eb2fe04
Updated codeowners and minor cleanups (#8986)
bsekachev Jan 24, 2025
d9e9860
Test cases for improved quality UX (#8956)
klakhov Jan 24, 2025
99e9430
cvat_sdk.auto_annotation.functions: don't declare useless "N/A" label…
SpecLad Jan 27, 2025
563e1df
Merge commit from fork
SpecLad Jan 27, 2025
3513a64
Update `upgrade guide` (#8940)
Marishka17 Jan 27, 2025
b92b2a4
Prepare release v2.26.0
cvat-bot[bot] Jan 27, 2025
fe81346
Update develop after v2.26.0
cvat-bot[bot] Jan 28, 2025
d0e0359
Merge pull request #9002 from cvat-ai/dev-release-2.26.0
azhavoro Jan 28, 2025
7e3f802
Validate label types in the serializer (#8980)
SpecLad Jan 28, 2025
fa0e3f1
Add bandit suppressions to tracker functions (#9004)
SpecLad Jan 28, 2025
aeefbee
Added a button to frame player to copy filename (#8989)
klakhov Jan 29, 2025
9d563bc
[Helm] Fixed export when disableDistinctCachePerService is false (by …
azhavoro Jan 29, 2025
e7ce0c4
Fix documentation references to the `encode_mask` SDK function (#9013)
SpecLad Jan 29, 2025
af218dd
Change location of events cache dir (#9015)
azhavoro Jan 29, 2025
0a2ff48
Prepare release v2.26.1
cvat-bot[bot] Jan 29, 2025
70bfe7b
Update develop after v2.26.1
cvat-bot[bot] Jan 29, 2025
1aa3925
Merge pull request #9017 from cvat-ai/dev-release-2.26.1
azhavoro Jan 29, 2025
dcbe07e
add rust to development environment docs (#8937)
Eldies Jan 30, 2025
3b5202e
Optimize quality computation (#8990)
zhiltsov-max Jan 30, 2025
6402d20
Refactor `_AnnotationMapper` (#9020)
SpecLad Jan 30, 2025
7238cf3
Consensus task creation (#8939)
zhiltsov-max Jan 30, 2025
3bc92da
Extend test asset dump command (#9022)
zhiltsov-max Jan 30, 2025
2ca90b0
Prohibit wildcard import in pylint (#8893)
zhiltsov-max Jan 30, 2025
2e35538
Removed minor outdated part of documentation (#9027)
bsekachev Jan 30, 2025
1fdb3fd
Updated command to create headless objects in Cypress (#9024)
bsekachev Jan 30, 2025
7484e4d
update datumaro (#8954)
Eldies Jan 30, 2025
30e900b
Added `threshold` parameter to detector runner (#9011)
klakhov Jan 31, 2025
0804c45
Refactor job actions menu (#9025)
zhiltsov-max Jan 31, 2025
5e787eb
Updated `Serverless tutorial` documentation (#8853)
prateekshukla1108 Jan 31, 2025
559178e
Replace deprecated `maxWorkers` by `numWorker` (#9029)
bsekachev Jan 31, 2025
08b4cfe
Remove duplicate settings from docker-compose.https.yml (#9028)
SpecLad Jan 31, 2025
49d4eaa
Slightly improved warning message (#9033)
bsekachev Jan 31, 2025
1a90c5f
AA functions: add more stringent label/shape type compatibility check…
SpecLad Jan 31, 2025
0fa7df2
Update black to 25.x (#9034)
SpecLad Jan 31, 2025
21901a3
Blacken formats (#9036)
SpecLad Jan 31, 2025
9892390
Fix .gitignore (#9030)
zhiltsov-max Jan 31, 2025
59fe97f
Save drawn shape on submit in `single shape` mode (#8807)
klakhov Feb 3, 2025
908a47d
CI: run Stylelint on all files, not just changed ones (#9042)
SpecLad Feb 3, 2025
cae4e8f
Fixed frame name text & tooltip in case of large names (#9043)
klakhov Feb 4, 2025
5e77f3b
Prepare release v2.27.0
cvat-bot[bot] Feb 4, 2025
83d67ec
Update develop after v2.27.0
cvat-bot[bot] Feb 4, 2025
74b14c5
Merge pull request #9049 from cvat-ai/dev-release-2.27.0
azhavoro Feb 4, 2025
a1dc585
Support redis migrations (#8898)
Marishka17 Feb 4, 2025
18c1d28
Fix honeypot changes in tasks with cloud data (#9010)
zhiltsov-max Feb 4, 2025
2d8188a
Updated minimal object size limitation (#9055)
bsekachev Feb 5, 2025
95d3108
Update Node.js in CI workflows to the latest LTS version (#9051)
SpecLad Feb 5, 2025
8160605
move helm tests to the main pipeline (#9056)
azhavoro Feb 5, 2025
89c4af5
Test for interpolation issues after deleting keyframes (#9031)
archibald1418 Feb 5, 2025
9a66509
Fixed: In some cases effect of drag/resize may be reset implicitly fo…
bsekachev Feb 5, 2025
1235c2c
Fixed sometimes edit changes implicitly aborted (#9061)
bsekachev Feb 6, 2025
1649f7a
Prepare release v2.28.0
cvat-bot[bot] Feb 6, 2025
4576923
Update develop after v2.28.0
cvat-bot[bot] Feb 6, 2025
1872b51
Merge pull request #9065 from cvat-ai/dev-release-2.28.0
azhavoro Feb 6, 2025
fec040d
Use `any` as the default function label type (#9050)
SpecLad Feb 6, 2025
c25ab4b
Support backups in tasks with cloud data (#8972)
Eldies Feb 7, 2025
ca440a0
Fix track interpolation in tasks with deleted frames (#9059)
zhiltsov-max Feb 7, 2025
fb3bde4
CLI: Let `function create-native` submit label types to the server (#…
SpecLad Feb 7, 2025
eaa30e4
Prepare release v2.29.0
cvat-bot[bot] Feb 10, 2025
e311947
Update develop after v2.29.0
cvat-bot[bot] Feb 10, 2025
1700e95
Merge pull request #9083 from cvat-ai/dev-release-2.29.0
azhavoro Feb 10, 2025
db293b7
Add a missing kwargs forward in `skeleton_label_spec` (#9087)
SpecLad Feb 10, 2025
df5678a
Remove unnecessary models from `data.json` (#9096)
SpecLad Feb 12, 2025
26446ae
Testing OpenCV TrackerMIL 'Tracking error' on high resolution (#8934)
archibald1418 Feb 12, 2025
a8ce52b
Fix: Cannot read properties of undefined (reading 'width') in Video G…
klakhov Feb 13, 2025
7ca3a31
Test for button on frame player that copies the current frame's filen…
archibald1418 Feb 13, 2025
2cba4d3
Added automatic saving for settings and persistent storage for image …
klakhov Feb 13, 2025
56e1953
Refactor quality reports (#9026)
zhiltsov-max Feb 13, 2025
a31a782
do not keep all annotations in RAM on backup (#9099)
Eldies Feb 13, 2025
7959be8
Refactor bulk_create calls (#9047)
zhiltsov-max Feb 13, 2025
ac8c5a4
Added ability to customize logo and title (#9052)
klakhov Feb 14, 2025
90417f9
cvat-ui: simplify code related to model label types (#9074)
SpecLad Feb 14, 2025
719d496
Prepare release v2.30.0
cvat-bot[bot] Feb 14, 2025
3caac72
[engine] Fix some type hints when `request` is passed (#9077)
Marishka17 Feb 14, 2025
84ca978
Update develop after v2.30.0
cvat-bot[bot] Feb 14, 2025
40e1040
Merge pull request #9107 from cvat-ai/dev-release-2.30.0
azhavoro Feb 16, 2025
e31d011
[Refactoring] Refined styles for quality page (#9068)
klakhov Feb 17, 2025
397a915
fix: typos in documentation files (#9079)
maximevtush Feb 17, 2025
37fd610
Blacken remaining migrations (#9103)
SpecLad Feb 18, 2025
774b504
Fix a race condition that could occur when importing annotations (#9102)
Marishka17 Feb 19, 2025
79e6eff
Add attribute support for auto-annotation functions (#9090)
SpecLad Feb 19, 2025
558a861
Fix a typo in a changelog entry (#9123)
SpecLad Feb 19, 2025
fd09656
Fix more potential race conditions when fetching and enqueuing RQ job…
Marishka17 Feb 20, 2025
cb7306b
Fixing SDK task.upload_data() to accept resources of the Path type (#…
RavinduWeerakoon Feb 21, 2025
c25bf96
Break up an import cycle in `cvat.apps.engine.permissions` (#9135)
SpecLad Feb 21, 2025
4d06ae1
Consensus simple merging (#8953)
zhiltsov-max Feb 21, 2025
4f3bc10
Update development-environment.md (#9134)
bsekachev Feb 23, 2025
09bfb2a
Test autosaving of gamma correction setting (#9124)
archibald1418 Feb 24, 2025
de42098
Update golang and nginx Docker base images (#9143)
azhavoro Feb 24, 2025
163b64d
Fix issue scaling on image filter appication (#9126)
klakhov Feb 25, 2025
47e2ed1
Refactor way of working with RQ meta (#9082)
Marishka17 Feb 25, 2025
3da8b8b
Remove unnecessary files from Docker images (#9119)
SpecLad Feb 25, 2025
311e786
Smoke unit test for redis migrations (#9117)
archibald1418 Feb 26, 2025
375d1cf
Update .gitignore (#9149)
SpecLad Feb 26, 2025
0d8aaf6
Added feature to display dimensions of rectangles and ellipses (#9142)
bsekachev Feb 26, 2025
e4b2e34
Bump boto3 pip package (#9156)
bsekachev Feb 28, 2025
8c34848
Regression test for ground-truth jobs from video (#9150)
archibald1418 Feb 28, 2025
a9f8e09
Fix included frames handling on UI (#9155)
zhiltsov-max Mar 3, 2025
a6513ee
Fix a problem with frame player (#9163)
klakhov Mar 3, 2025
5fbf59a
Fix related image display in gt jobs (#9162)
zhiltsov-max Mar 3, 2025
d3c7766
Prepare release v2.31.0
cvat-bot[bot] Mar 3, 2025
cbb7d76
Update develop after v2.31.0
cvat-bot[bot] Mar 3, 2025
6cefd3f
Merge pull request #9167 from cvat-ai/dev-release-2.31.0
azhavoro Mar 4, 2025
4316a29
Update Datumaro (#9093)
Eldies Mar 4, 2025
a5dda6c
Add skeleton support for native functions (#9122)
SpecLad Mar 4, 2025
62024b6
Added search to organization page (#9151)
klakhov Mar 5, 2025
ee4ec51
Adjusted customizable logo size (#9166)
bsekachev Mar 5, 2025
dab2c15
Remove duplicate enums from `cvat-ui/src/reducers/index.ts` (#9108)
SpecLad Mar 5, 2025
fa4934d
Fix extra sliders on the GT management pages (#9168)
RavinduWeerakoon Mar 5, 2025
1d474d6
[`engine/cloud_provider.py`] Normalize function signatures (#9170)
Marishka17 Mar 6, 2025
9247d7a
Blacken settings (#9160)
SpecLad Mar 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Make the --insecure CLI option test less hacky (cvat-ai#8601)
Test it by starting an HTTPS server (that forwards all requests to CVAT)
and attempting to access that server via the CLI. This allows us to test
that the option actually works end-to-end, and avoids dependencies on
CLI internals.

The new test requires `main` to catch the exception that is raised in
the case of a certificate error, so implement that.
  • Loading branch information
SpecLad authored Oct 30, 2024
commit 9ecafb6029fb427f0041f849b60c91adac7011c6
4 changes: 4 additions & 0 deletions changelog.d/20241029_134200_roman_cli_refactor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
### Changed

- CLI no longer prints the stack trace in case of HTTP errors
(<https://github.com/cvat-ai/cvat/pull/8601>)
3 changes: 2 additions & 1 deletion cvat-cli/src/cvat_cli/__main__.py
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@
from types import SimpleNamespace
from typing import List

import urllib3.exceptions
from cvat_sdk import exceptions
from cvat_sdk.core.client import Client, Config

@@ -70,7 +71,7 @@ def main(args: List[str] = None):
try:
cli = CLI(client=client, credentials=parsed_args.auth)
actions[parsed_args.action](cli, **vars(action_args))
except exceptions.ApiException as e:
except (exceptions.ApiException, urllib3.exceptions.HTTPError) as e:
logger.critical(e)
return 1

9 changes: 9 additions & 0 deletions tests/python/cli/self-signed.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-----BEGIN CERTIFICATE-----
MIIBPDCB76ADAgECAhQksQwFGcyVwF0+gIOPMPBB+/NjNTAFBgMrZXAwFDESMBAG
A1UEAwwJbG9jYWxob3N0MB4XDTI0MTAyODEyMTkyNFoXDTI0MTAyOTEyMTkyNFow
FDESMBAGA1UEAwwJbG9jYWxob3N0MCowBQYDK2VwAyEAzGOv96vkrHr0GPcWL7vN
8mgR4XMg9ItNpJ2nbMmjYCKjUzBRMB0GA1UdDgQWBBR6Hn0aG/ZGAJjY9HIUK7El
84qAgzAfBgNVHSMEGDAWgBR6Hn0aG/ZGAJjY9HIUK7El84qAgzAPBgNVHRMBAf8E
BTADAQH/MAUGAytlcANBAMj2zWdIa8oOiEtUWFMv+KYf1kyP1lUnlcC2xUpOj8d3
kRYtlRX4E7F5zzzgKgNpbanRAg72qnqPiFAFCGVAhgY=
-----END CERTIFICATE-----
3 changes: 3 additions & 0 deletions tests/python/cli/self-signed.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIKe5zj/UrVJ/LySjKm9BBVHXziqFIwJ6w+HuTHnldCLo
-----END PRIVATE KEY-----
40 changes: 21 additions & 19 deletions tests/python/cli/test_cli.py
Original file line number Diff line number Diff line change
@@ -10,7 +10,6 @@

import packaging.version as pv
import pytest
from cvat_cli.cli import CLI
from cvat_sdk import Client, make_client
from cvat_sdk.api_client import exceptions, models
from cvat_sdk.core.proxies.tasks import ResourceType, Task
@@ -20,7 +19,7 @@
from shared.utils.config import BASE_URL, USER_PASS
from shared.utils.helpers import generate_image_file

from .util import generate_images, run_cli
from .util import generate_images, https_reverse_proxy, run_cli


class TestCLI:
@@ -243,23 +242,26 @@ def mocked_version(_):
assert "Server version '0' is not compatible with SDK version" in caplog.text

@pytest.mark.parametrize("verify", [True, False])
def test_can_control_ssl_verification_with_arg(self, monkeypatch, verify: bool):
# TODO: Very hacky implementation, improve it, if possible
class MyException(Exception):
pass

normal_init = CLI.__init__

def my_init(self, *args, **kwargs):
normal_init(self, *args, **kwargs)
raise MyException(self.client.api_client.configuration.verify_ssl)

monkeypatch.setattr(CLI, "__init__", my_init)

with pytest.raises(MyException) as capture:
self.run_cli(*(["--insecure"] if not verify else []), "ls")

assert capture.value.args[0] == verify
def test_can_control_ssl_verification_with_arg(self, verify: bool):
with https_reverse_proxy() as proxy_url:
if verify:
insecure_args = []
else:
insecure_args = ["--insecure"]

run_cli(
self,
f"--auth={self.user}:{self.password}",
f"--server-host={proxy_url}",
*insecure_args,
"ls",
expected_code=1 if verify else 0,
)
stdout = self.stdout.getvalue()

if not verify:
for line in stdout.splitlines():
int(line)

def test_can_control_organization_context(self):
org = "cli-test-org"
56 changes: 55 additions & 1 deletion tests/python/cli/util.py
Original file line number Diff line number Diff line change
@@ -3,10 +3,17 @@
# SPDX-License-Identifier: MIT


import contextlib
import http.server
import ssl
import threading
import unittest
from pathlib import Path
from typing import Any, List, Union
from typing import Any, Dict, Iterator, List, Union

import requests

from shared.utils.config import BASE_URL
from shared.utils.helpers import generate_image_file


@@ -29,3 +36,50 @@ def generate_images(dst_dir: Path, count: int) -> List[Path]:
filename.write_bytes(generate_image_file(filename.name).getvalue())
filenames.append(filename)
return filenames


@contextlib.contextmanager
def https_reverse_proxy() -> Iterator[str]:
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
cert_dir = Path(__file__).parent
ssl_context.load_cert_chain(cert_dir / "self-signed.crt", cert_dir / "self-signed.key")

with http.server.HTTPServer(("localhost", 0), _ProxyHttpRequestHandler) as proxy_server:
proxy_server.socket = ssl_context.wrap_socket(
proxy_server.socket,
server_side=True,
)
server_thread = threading.Thread(target=proxy_server.serve_forever)
server_thread.start()
try:
yield f"https://localhost:{proxy_server.server_port}"
finally:
proxy_server.shutdown()
server_thread.join()


class _ProxyHttpRequestHandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
response = requests.get(**self._shared_request_args())
self._translate_response(response)

def do_POST(self):
body_length = int(self.headers["Content-Length"])

response = requests.post(data=self.rfile.read(body_length), **self._shared_request_args())
self._translate_response(response)

def _shared_request_args(self) -> Dict[str, Any]:
headers = {k.lower(): v for k, v in self.headers.items()}
del headers["host"]

return {"url": BASE_URL + self.path, "headers": headers, "timeout": 60, "stream": True}

def _translate_response(self, response: requests.Response) -> None:
self.send_response(response.status_code)
for key, value in response.headers.items():
self.send_header(key, value)
self.end_headers()
# Need to use raw here to prevent requests from handling Content-Encoding.
self.wfile.write(response.raw.read())