88 Commits

Author SHA1 Message Date
Maxim Zhiltsov 29ef4d7a33 Validate annotation source (#10521) 2026-07-06 12:42:40 +03:00
Aleksei Sosov 8c704275ba Add attempt and request_duration fields to webhook deliveries (#10693) 2026-06-09 13:08:47 +04:00
Maxim Zhiltsov 06f14c3768 Audio interval annotations, backups, and TSV dataset format (#10583) 2026-05-20 13:39:29 +03:00
Maxim Zhiltsov bf75521e96 Make test DB dump output more stable (#10605) 2026-05-18 19:51:47 +03:00
Maxim Zhiltsov 06dd39feff Move some fields from search to filters (#10569)
### Summary

- Moved most enum-like fields from `search_fields` to `simple_filters`,
and `filter_fields` in viewsets
- Added field sorting for schema

### Motivation and context

Enum-like fields (e.g. `status`, `state`, `role`) were declared in
`search_fields` on several list endpoints. DRF's `SearchFilter` performs
case-insensitive substring matching across `search_fields`, so the
global `?search=` parameter would also match against these enum values,
which is rarely what users want. They are now exposed only via
`simple_filters` (exact match), e.g. `?status=completed`,
`?state=in_progress`, `?role=maintainer`.

In some cases, free-text fields are intentionally excluded from simple
filters, because exact matching is not very useful for them. By this
logic, `project_name` and `task_name` in task and job list endpoints
should be removed as well, but they are kept to avoid breaking changes
without a significant reason, as they're available for quite a long time
already.

The filters are now sorted for schema generation, which helps to avoid
spurious schema diffs.

#### Per-endpoint changes

| Endpoint | Removed from `search_fields` | Added to `simple_filters` |
Added to `filter_fields` |
|---|---|---|---|
| `GET /api/projects` | `status` | — | — |
| `GET /api/tasks` | `status`, `mode`, `dimension`, `validation_mode` |
— | — |
| `GET /api/jobs` | `state`, `stage` | — | — |
| `GET /api/memberships` | `role` | — | — |
| `GET /api/webhooks` | `type` | — | — |
| `GET /api/cloudstorages` | `provider_type`, `credentials_type` | — | —
|
| `GET /api/access_tokens` | — | `read_only` | — |
| `GET /api/invitations` | — | `user_id`, `accepted` | `id` |
| `GET /api/requests` | — | `org_id` | `org`, `org_id` |

For fields removed from `search_fields`: they remain exact-match
filterable as `simple_filters` (e.g. `?status=completed`).
For fields newly in `simple_filters`: they were previously available
only via the `filter` parameter and are now also exact-match filterable.
For fields newly in `filter_fields`: they were previously not available
for filtering.

The following endpoints were touched only for the construction-style
refactor (no field-level behavior change):
`GET /api/issues`, `GET /api/comments`, `GET /api/labels`, `GET
/api/users`, `GET /api/organizations`, `GET /api/consensus_settings`,
`GET /api/quality/conflicts`, `GET /api/quality/reports`, `GET
/api/quality/settings`.

### API response changes

The following list endpoints now return additional fields:

- `GET /api/requests` — `operation.org_id` (integer, nullable). Supports
`?org_id=` filtering.
- `GET /api/invitations` — `accepted` (boolean). Mirrors the existing
`accepted` filters.

### How has this been tested?

Added simple-filter test coverage for fields newly exposed in this PR:

- `tests/python/rest_api/test_access_tokens.py`: `read_only`.
- `tests/python/rest_api/test_invitations.py`: `user_id`, `accepted`.
- `tests/python/rest_api/test_requests.py`: `org`, `org_id`.

Filled in pre-existing simple-filter coverage gaps:

- `tests/python/rest_api/test_jobs.py`: `dimension`, `media_type`,
`mode`, `task_name`, `project_name`.
- `tests/python/rest_api/test_tasks.py`: `media_type`, `project_name`.

`TestRequestsListFilters` was refactored to class-scoped fixtures so the
heavy setup (3 projects + 3 tasks + ~13 RQ requests + the new
org-context project/task/exports) runs once for the whole class instead
of per parametrize case. Wall-clock for `pytest -k
TestRequestsListFilters` on the same hardware:

| | Before | After |
|---|---|---|
| Tests collected | 9 | 10 |
| Total time | 78.4 s | 13.1 s |
| Per-case `call` time | ~5.2 s | ~0.05 s |
| Per-case `setup` time | ~4.3 s every case | ~12.1 s once, then
negligible |

≈6× faster despite covering one more case.

The corrupted-meta test was also extracted out of the class to a
module-level function with `restore_db_per_function` /
`restore_redis_inmem_per_function` decorators since it has no class
dependencies.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 14:05:00 +03:00
Maxim Zhiltsov 6134a6c813 Introduce task media type (#10538) 2026-05-06 19:46:31 +03:00
Kirill Lakhov 2f0939adc4 Export resource list as csv (#10312)
The feature allows to export current list of Projects/Tasks/Jobs as .csv file via button in filters UI.

---------
Co-authored-by: Maxim Zhiltsov <zhiltsov.max35@gmail.com>
2026-03-06 15:23:00 +03:00
Roman Donchenko 3b948e09c2 Support using cloud storages as backing storage for local tasks (#10282)
This allows storing media data of "local" tasks in cloud storage,
transparently to the user. The CVAT administrator must explicitly move
tasks to backing cloud storage (or back) using the new management
commands.

Currently, only tasks with images using cached chunks are supported.
2026-03-05 15:18:29 +02:00
Dmitrii Lavrukhin 930338658a Remove consensus_replicas field from backup (#10294) 2026-03-03 14:56:59 +02:00
Dmitrii Lavrukhin 5c458dead1 Flattening job list on a task page (#10217)
We are going to increase the possible number of replicas, and current
way of displaying replicas is not convenient if there are hundreds of
them.

So,
- flatten list of jobs
- on both jobs page and task page:
  - every parent job has a tag "parent"
  - every replica job has a tag "replica"
- every parent job has an action "go to replicas" which switches filters
on a page to show it's replicas
- every replica job has an action "go to parent" which switches filters
on a page to show it's parent
- task page be default does not show replicas
- added "replicas_count" field to api on job retrieving 

Co-authored-by: Maxim Zhiltsov <zhiltsov.max35@gmail.com>
Co-authored-by: Kirill Lakhov <kirill.lakhov@cvat.ai>
2026-02-24 14:15:27 +03:00
Roman Donchenko 8153718702 Make RelatedFile.path a relative path (#10269)
Absolute paths don't fit very well here:

* Files can be stored in cloud storage, in which case the absolute path
  stored in the database doesn't actually exist.

* They make it unnecessarily hard to move storage to a different base
  directory.

* The code becomes simpler with relative paths.
2026-02-11 13:32:00 +02:00
Kirill Lakhov 8337ae0bed Improved consensus UX (#10172)
This PR implements a simplified consensus scoring system for merged annotations. Instead of filtering annotations based on quorum thresholds, all annotations are now merged and assigned a consensus score (0.0 to 1.0) that represents the level of agreement among annotators.

Also PR contains a bunch of improvements to review mode allowing to unlock and edit objects, navigate in between objects using shortcuts.
2026-01-29 12:48:31 +03:00
Maxim Zhiltsov b9ed804f37 Increase PAT staleness period in tests (#10187) 2026-01-14 16:25:51 +03:00
Grigorii777 2ebc75e5d0 Cloud storage failed status fix (#10011)
Issue: https://github.com/cvat-ai/cvat/issues/9380
Incorrect exception handling for Cloud Storage non-existence and other
NOT_FOUND errors
I fixed the exception handling and tested all these cases on three types
of Cloud Storage.
2025-11-25 17:43:17 +02:00
Oleg Valiulin b991aec05c restapi test tags in removed images on project export (#10002) 2025-11-14 13:19:47 +00:00
Maxim Zhiltsov 650f2b204c Return only own tokens in api/auth/access_tokens (#9950) 2025-10-29 18:59:45 +03:00
Maxim Zhiltsov 9427dc5ef8 API tokens (#9680) 2025-10-16 16:51:03 +03:00
Maxim Zhiltsov 9265fc473f Fix possible error in consensus tag merging (#9865) 2025-10-03 16:33:26 +03:00
Maxim Zhiltsov 5ddeda3330 Support context images in cloud storage-based tasks (#9757) 2025-09-18 18:12:09 +03:00
Maria Khrustaleva 75fc135808 Allow tasks and projects to be transferred between organizations and sandboxes (#9528) 2025-08-15 14:21:48 +03:00
ruslan 7c3e1c1b47 Fix webhook tests (#9708)
<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

This PR replaces `example.com` domain name with the new alias
`webhooks.internal` that exists inside a docker network. Previously
tests failed often because example.com does not return any response for
some requests, RQ had webhooks jobs that tried to finish within 10
seconds, but also failed due to timeout.

Also since there are webhooks created in a DB, they try to reach
example.com when a cluster starts, that sometimes fills up the worker's
queue.

Usage of subdomain is important because Django URL matcher does not
allow domains like `webhooks`

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))

### License

- [ ] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.
2025-08-13 13:41:41 +02:00
Maxim Zhiltsov 3409f28ff2 Limit deleted frames in job meta to the job segment only (#9690) 2025-08-05 16:05:14 +03:00
Oleg Valiulin eb3629192b spell-checking integration (#9580)
Co-authored-by: Oleg Valiulin <oleg.valiulin@cvat.ai>
Co-authored-by: Roman Donchenko <roman@cvat.ai>

Typos spell-checker integration
Run `typos` to show typos in project
Run `typos -w` to autofix
2025-07-10 16:29:24 +01:00
Andrey Zhavoronkov 6299d53953 Squashed commit of the following:
commit ae8fbbbe1a6199689ad77106bbb2f0308de5e5e2
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 12:45:36 2025 +0000

    Aborted chunk size

commit 2c9d02e0eb318d905b029c2212002b105173e718
Author: Boris Sekachev <sekachev.bs@gmail.com>
Date:   Mon Jul 7 15:44:20 2025 +0300

    Update 20250707_115108_sekachev.bs_added_index.md

commit bccba7f98be102b9a0072553132ff434b5ff892e
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 12:41:12 2025 +0000

    Removed extra join

commit 257a736b3aec83a42167fb309ccb4456e6c07b67
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 11:53:21 2025 +0000

    Added changelog

commit b6ead16cb20649f2fb5d08fd9f8f3f404b32638c
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 11:50:39 2025 +0000

    Updated test assets

commit d128ff5fc18dedf4e07965a2e1c1fd87ea77a171
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 10:39:15 2025 +0000

    Applied linter

commit f9e353e7c8264fbb3529d2bdfe4fdef4d408ba70
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 10:33:03 2025 +0000

    Added existing check

commit b089b5ae9a236ee23e3e347f80ae8a48a109975f
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 10:30:57 2025 +0000

    Add job_id on save

commit dd3eca8545fc2e1b564d38e3e28d71eb51fc6a57
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 10:20:48 2025 +0000

    Updated migrations

commit e538da79e0c03b16edb45491671c861c022ef6d9
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 09:54:33 2025 +0000

    fixed queryset

commit 5e811e5a57d4c8c122fddd4b54a5cc6d20f9f513
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 09:51:21 2025 +0000

    Optimized annotations fetching

commit 2271b5f81f13866d601fde3efc424e2872fdae3d
Author: Boris Sekachevw <sekachev.bs@gmail.com>
Date:   Mon Jul 7 09:36:20 2025 +0000

    Added extra Job indexes
2025-07-07 18:47:23 +03:00
Maxim Zhiltsov f80a711289 Project quality tests (#9400) 2025-05-23 19:20:42 +03:00
Maxim Zhiltsov b23b0ad14f Project quality (#9116)
- Added quality estimation for projects
- Updated quality report contents and quality report summary server API
-- frame_count field - deprecated in favor of the new validation_frames field
-- frame_share field - deprecated in favor of the new validation_frame_share field
- Added support for job filters in quality settings. This allows to include or exclude jobs based on filter criteria
- Added support for quality estimation in consensus replicas
- Task quality checks now can use individual settings or inherit ones from the parent project
- Project quality updates now trigger task quality updates for all nested tasks. Relevant task quality reports are reused
- [Server API] Optimized GET api/quality/reports, GET api/quality/conflicts requests
- [Server API] Optimized permission checks in api/quality/* requests
- [Server API] Improved endpoint descriptions in the schema
2025-05-12 19:17:02 +03:00
Dmitrii Lavrukhin ad008b943e Using datumaro ellipses on export (#9372) 2025-05-12 16:04:30 +03:00
Maxim Zhiltsov 4d06ae1e34 Consensus simple merging (#8953)
- Added support for consensus task and consensus job merging (API and
UI)
- Added simple consensus settings
- Added server tests
- Added new `consensus` RQ queue and worker
- Updated skeleton comparisons: hidden points now also contribute to the
skeleton similarity. Only visibility is taken into account for invisible
points

Limitations:
- Merging is supported for all annotations except 2d and 3d cuboids. 3d
tasks are not supported
- Annotation groups are not supported (each annotation is considered
separate in a group)
- Polygons and masks are not interchangeable (each type is compared only
with the same type)

Co-authored-by: Kirill Lakhov <kirill.lakhov@cvat.ai>
2025-02-21 18:41:24 +02:00
Roman Donchenko df5678a921 Remove unnecessary models from data.json (#9096)
They are not used in tests, and just get in the way when you're
reviewing diffs.
2025-02-12 12:27:56 +02:00
Maxim Zhiltsov 7238cf3592 Consensus task creation (#8939) 2025-01-30 15:58:19 +03:00
Andrey Zhavoronkov 9d563bcbb0 [Helm] Fixed export when disableDistinctCachePerService is false (by default) (#9008)
This PR removes the `disableDistinctCachePerService` setting.
Previously this cache was used to cache chunks of data on storage, which
is not relevant now.
Currently only events need to be stored before being sent to Vector, and
this will always be cached for each service, so these settings are no
longer needed.

<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [x] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))

### License

- [x] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.
2025-01-29 14:28:18 +03:00
Maxim Zhiltsov d7f49ef292 Automate date fixes in test assets (#8943) 2025-01-17 18:59:15 +03:00
Maxim Zhiltsov c5f22720cf Change match_empty_frames to empty_is_annotated (#8888)
Improves the implementation of the `match_empty_frames` quality setting
to work in cases when only GT or DS annotations are empty. This allows
to use precision as the primary metric in cases when all frames are
required to have at least 1 annotation.

The previous implementation only affected matching empty annotations.
The updated variant also counts any empty frames in `ds_count` and
`gt_count` so that mismatched empty annotations also included in
denominators of metrics.

Example: 

| annotations per frame | old accuracy | new accuracy | old precision |
new precision |
| - | - | - | - | - |
| ds: [empty, 1 valid]; gt: [empty, 1 valid] | 2/2 | 2/2 | 2/2 | 2/2 |
| ds: [1 extra, 1 valid]; gt: [empty, 1 valid] | 1/2 (only matches) |
1/3 (empty != extra) | 1/2 | 1/2 |
| ds: [empty, 1 valid]; gt: [1 miss, 1 valid] | 1/2 (only matches) | 1/3
(empty != miss) | 1/1 (only matches) | 1/2 |

So, it allowed undesirable situations in which 1 and the only correct
annotation in a job could be counted as 100% of precision. The updated
option prevents this.
2025-01-08 12:21:23 +02:00
Maxim Zhiltsov d315485ec2 Allow matching empty frames in quality checks (#8652)
<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->

Depends on #8634

Added a quality check option to consider frames matching, if both GT and
job annotations have no annotations on a frame. This affects quality
metrics and total counts in reports, but confusion matrices stay
unchanged. This allows to use both positive and negative validation
frames.

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

Unit tests

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- [ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/cvat-ai/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/cvat-ai/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/cvat-ai/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/cvat-ai/cvat/tree/develop/cvat-ui#versioning))

### License

- [ ] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

- **New Features**
- Introduced a quality setting for comparing point groups without
bounding boxes.
- Added an option to consider empty frames as matching in quality
checks.
- Enhanced quality settings form with new options for `matchEmptyFrames`
and `useBboxSizeForPoints`.

- **Bug Fixes**
- Corrected property name from `peoject_id` to `project_id` in the API
quality reports filter.

- **Documentation**
	- Updated API schemas to include new quality settings properties. 

These changes improve the flexibility and accuracy of quality
assessments within the application.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-11-11 15:19:51 +03:00
Maxim Zhiltsov 1f3fbb9045 Add a quality setting for avoiding using bbox in point group matching (#8634)
In some cases point groups do not represent a single object or a
bounding box attached to the group does not represent the object. A new
quality check option is added for such cases. The new option allows to
control whether to use the bbox for point group comparisons or not.

- Added a new quality setting to enable or disable using of group bbox
  for point group comparisons
- Improved OKS sigma description
2024-11-07 13:15:43 +02:00
Dmitrii Lavrukhin e4c9defcce removing business group (#8607)
It is not used for anything
2024-10-31 12:43:54 +02:00
Dmitrii Lavrukhin 6a2636207e Analytics access (#8509)
Checkbox for granting access to analytics
2024-10-23 11:36:18 +04:00
Maxim Zhiltsov 0572fa1f8f Validation management core (#8471) 2024-10-07 18:21:33 +03:00
Maxim Zhiltsov 12858584c8 Validation API core (#8348) 2024-10-03 12:07:39 +03:00
Maria Khrustaleva 7551d6c7ee Add REST API tests to check access rights when changing source/target storage (#8479) 2024-10-01 15:04:26 +03:00
Maxim Zhiltsov c9754a9223 Per segment chunks (#8272)
<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->

- Changed chunk generation from per-task chunks to per-segment chunks
- Fixed a memory leak in video reading on the server side (only in
media_extractors, so there are several more left)
- Fixed a potential hang in `import` worker or the server process on
process shutdown
- Disabled multithreading in video reading in endpoints (not in static
chunk generation)
- Refactored static chunk generation code (moved after job creation)
- Refactored various server internal APIs for frame retrieval
- Updated UI logic to access chunks, added support for non-sequential
frames in chunks
- Added a new server configuration option `CVAT_ALLOW_STATIC_CACHE`
(boolean) to enable and disable static cache support. The option is
disabled by default (it's changed from the previous behavior)
- Added tests for the changes made
- Added missing original chunk type field in job responses
- Fixed invalid kvrocks cleanup in tests for Helm deployment
- Added a new 0-based `index` parameter in `GET
/api/jobs/{id}/data/?type=chunk` to simplify indexing
  - GT job chunks with non-sequential frames have no placeholders inside

When this update is applied to the server, there will be a data storage
setting migration for the tasks. Existing tasks using static chunks
(`task.data.storage_method == FILE_SYSTEM`) will be switched to the
dynamic cache (i.e. to `== CACHE)`). The remaining files should be
removed manually, there will be a list of such tasks in the migration
log file.

After this update, you'll have an option to enable or disable static
cache use during task creation. This allows, in particular, prohibit new
tasks using the static cache. With this option, any tasks using static
cache will use the dynamic cache instead on data access.

User-observable changes:
- Job chunk ids now start from 0 for each job instead of using parent
task ids
- The `use_cache = false` or `storage_method = filesystem` parameters in
task creation can be ignored by the server
- Task chunk access may be slower for some chunks (particularly, for
tasks with overlap configured, for chunks on segment boundaries, and for
tasks previously using static chunks)
- The last chunk in a job will contain only the frames from the current
job, even if there are more frames in the task

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- [ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/cvat-ai/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/cvat-ai/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/cvat-ai/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/cvat-ai/cvat/tree/develop/cvat-ui#versioning))

### License

- [ ] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Summary by CodeRabbit

- **New Features**
- Introduced a new server setting to disable media chunks on the local
filesystem.
- Enhanced frame prefetching with a `startFrame` parameter for improved
chunk calculations.
- Added a new property, `data_original_chunk_type`, for enhanced job
differentiation in the metadata.

- **Bug Fixes**
- Resolved memory management issues to prevent leaks during video
processing.
	- Corrected naming inconsistencies related to the `prefetchAnalyzer`.

- **Documentation**
- Included configuration for code formatting tools to ensure consistent
code quality across the project.

- **Refactor**
- Restructured classes and methods for improved clarity and
maintainability, particularly in media handling and task processing.

- **Chores**
- Updated formatting scripts to include additional directories for
automated code formatting.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-09-24 17:44:15 +03:00
Maxim Zhiltsov d9a525b090 Job validations (public part) (#8321)
<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->

- Added `max_validations_per_job`, `target_metric`,
`target_metric_threshold` fields in quality settings
- Added `assignee_last_updated` in quality reports
- Added separate `accuracy`, `precision`, and `recall` fields in quality
summary
- Refactored some IAM code

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- [ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/cvat-ai/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/cvat-ai/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/cvat-ai/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/cvat-ai/cvat/tree/develop/cvat-ui#versioning))

### License

- [ ] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced permission handling for jobs, tasks, and projects,
streamlining the creation process.
- Introduced new quality control metrics and settings, enabling more
granular tracking and reporting.

- **Bug Fixes**
- Improved validation logic to enforce constraints on job validation
attempts.

- **Documentation**
- Added descriptive help texts for new fields in quality report
serializers, clarifying their purpose.

- **Chores**
- Updated method signatures to improve flexibility and maintainability
across permission handling and reporting functionalities.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-08-23 13:48:44 +03:00
Maria Khrustaleva 3fdb03264a Add REST API tests for /requests API && test both versions of the export API (#8216)
This PR fixes the following issues:
- [export API v1] do not reinitialize dataset export process when
downloading a result file if a resource (project|task|job) has been
updated since the first initialized export request
- [export API v1] return `rq_id` for all requests with 202 status code
(not only for initialization requests)
- [requests API] Fixed filtering by format && added resource to allowed
filters

REST API tests updates:
- Added tests to check requests filtration using simple filters
- Added tests to check specific requests retrieving
- Updated all tests that export project|task|job
datasets|annotations|backups:
  - to test both API versions (including API mixing)
- to use only appropriate resources by checking the default export
location
- Added fixtures to filter projects/tasks assets
- Updated default target|source buckets to `import/export` bucket to
exclude the same bucket usage as a data source in several tests (when
bucket content is used as task data) and as a bucket for results

## Summary by CodeRabbit

- **New Features**
- Enhanced job handling for exports, improving error management and job
state tracking.
- Introduced a new `resource` field in the request handling system to
improve data categorization.
- Added new filtering capabilities for API queries, allowing users to
filter by the `resource` field.

- **Bug Fixes**
	- Improved status checks and handling for job requests.
- Introduced exception handling for forbidden access during project
backup attempts.

- **Tests**
- Refactored test suites to improve coverage and ensure compatibility
across versions with new methods and exception handling.
	- New tests added to validate request handling functionality.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Maxim Zhiltsov <zhiltsov.max35@gmail.com>
2024-08-21 10:13:33 +02:00
Arseny Boykov 5314bdadb9 Fix slices handling in LazyList (#8299)
<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
Following
[v2.16.2](https://github.com/cvat-ai/cvat/releases/tag/v2.16.2) release,
we noticed an issue with annotations export with CVAT format and masks.

Upon investigation, we found that the problem stemmed from changes
introduced in this PR: https://github.com/cvat-ai/cvat/pull/8229.

The issue was caused by the improper handling of slices with negative
positions in LazyList, particularly affecting the computation of
resulting data. This behaviour was triggered by the following line:

https://github.com/cvat-ai/cvat/blob/cfce7be5a9422da2c367296f56d70181185f503e/cvat/apps/dataset_manager/formats/cvat.py#L797


<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [x] I submit my changes into the `develop` branch
- [x] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [x] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- [ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/cvat-ai/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/cvat-ai/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/cvat-ai/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/cvat-ai/cvat/tree/develop/cvat-ui#versioning))

### License

- [x] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced handling of negative indices in list slicing, improving
robustness and performance.
- Added new test methods to validate slicing operations, ensuring
correct behavior for various scenarios.

- **Bug Fixes**
- Adjusted existing tests to account for empty values in the list,
improving accuracy of expected outputs.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-08-13 18:58:50 +03:00
Dmitrii Lavrukhin 49c39ef600 coco export subsets to different folders (#8171)
<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->
Fixes https://github.com/cvat-ai/cvat/issues/4993

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- [ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/cvat-ai/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/cvat-ai/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/cvat-ai/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/cvat-ai/cvat/tree/develop/cvat-ui#versioning))

### License

- [ ] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced COCO export functionality to organize images into separate
subfolders by subsets.

- **Tests**
- Introduced a new test to verify the creation of subfolders in COCO
exports.

- **Data Updates**
- Updated various test data records including annotations, user logins,
sessions, images, projects, tasks, jobs, and quality settings to reflect
new entries and configurations.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-07-17 10:55:38 +03:00
Maxim Zhiltsov b5d48c7602 Track last assignee update (#8119)
<!-- Raise an issue to propose your change
(https://github.com/cvat-ai/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution guide](https://docs.cvat.ai/docs/contributing/).
-->

<!-- Provide a general summary of your changes in the Title above -->

Depends on https://github.com/cvat-ai/cvat/pull/8162

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->

- Added recording and reporting of the last assignee update time on the
server
- Added reporting of the assignee in quality reports

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->

Unit tests

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [ ] I submit my changes into the `develop` branch
- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- [ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/cvat-ai/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/cvat-ai/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/cvat-ai/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/cvat-ai/cvat/tree/develop/cvat-ui#versioning))

### License

- [ ] I submit _my code changes_ under the same [MIT License](
https://github.com/cvat-ai/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Added tracking for the last assignee update time across jobs, tasks,
and projects.
  - Introduced assignee information in quality reports.
- **Bug Fixes**
- Ensured accurate handling of assignee details and update times in
various entities.
- **Tests**
- Added extensive test coverage for creating and updating assignee
details in jobs, tasks, projects, and quality reports.
- **Documentation**
  - Updated schema to include the new `assignee_updated_date` field.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-07-15 15:58:37 +03:00
Vidit Agarwal 86c5a77bd1 [GSoC2024] Added quality reporting for Tag annotations (#7582)
Fixes #7424 

This PR adds quality computations for Tag annotations.
2024-05-08 11:10:06 +03:00
Vidit Agarwal 7a07603289 [GSoC2024] added accumulation of confusion matrix across various jobs (#7604)
Added accumulation of confusion matrix across various jobs under the
same task.

### Motivation and context
Fixes https://github.com/opencv/cvat/issues/7424

### How has this been tested?
On the backup task containing 10 jobs
[task_task.with.10.jobs_backup_2024_03_11_15_48_27.zip](https://github.com/opencv/cvat/files/14561155/task_task.with.10.jobs_backup_2024_03_11_15_48_27.zip)
as mentioned in this [issue
comment](https://github.com/opencv/cvat/issues/7424#issuecomment-1988787512)

### Checklist
- [x] I submit my changes into the `develop` branch
~- [ ] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->~
~- [ ] I have updated the documentation accordingly~
~- [ ] I have added tests to cover my changes~
- [x] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
~- [ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/opencv/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/opencv/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/opencv/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/opencv/cvat/tree/develop/cvat-ui#versioning))~

### License

- [x] I submit _my code changes_ under the same [MIT License](
https://github.com/opencv/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.

---------

Co-authored-by: Maxim Zhiltsov <zhiltsov.max35@gmail.com>
2024-03-25 17:48:24 +03:00
Roman Donchenko 7e2f9d36bb Fix annotation accuracy display in the UI (#7652)
<!-- Raise an issue to propose your change
(https://github.com/opencv/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution
guide](https://opencv.github.io/cvat/docs/contributing/). -->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->
The current formula the UI uses to calculate accuracy is incorrect. The
denominator is supposed to be the total sample count, but ds_count +
gt_count - valid_count is not the same value. To illustrate:

      ****      ***.        *...         ****
      ****      ***.        .*..         ****
      ****      ***.        ..*.         ****
      ....      ***.        ....         ***.

    ds_count  gt_count  valid_count  total_count (expected)

Each value is the sum of the values in the confusion matrix marked by
`*`. The current formula essentially adds values that are off the
diagonal twice.

Instead of trying to derive the total count from other values, just
transmit the correct value from the server and use it in the UI.

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->
Manual testing.

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [x] I submit my changes into the `develop` branch
- [x] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- ~~[ ] I have updated the documentation accordingly~~
- ~~[ ] I have added tests to cover my changes~~
- ~~[ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))~~
- ~~[ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/opencv/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/opencv/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/opencv/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/opencv/cvat/tree/develop/cvat-ui#versioning))~~

### License

- [x] I submit _my code changes_ under the same [MIT License](
https://github.com/opencv/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.
2024-03-21 21:11:00 +03:00
Roman Donchenko fc54c47ed6 quality_control: correct the per-class accuracy formula (#7640)
<!-- Raise an issue to propose your change
(https://github.com/opencv/cvat/issues).
It helps to avoid duplication of efforts from multiple independent
contributors.
Discuss your ideas with maintainers to be sure that changes will be
approved and merged.
Read the [Contribution
guide](https://opencv.github.io/cvat/docs/contributing/). -->

<!-- Provide a general summary of your changes in the Title above -->

### Motivation and context
<!-- Why is this change required? What problem does it solve? If it
fixes an open
issue, please link to the issue here. Describe your changes in detail,
add
screenshots. -->
The current formula used to calculate `ConfusionMatrix.accuracy` is, in
fact, not accuracy, but the Jaccard index. Replace it with the correct
formula.

Since the Jaccard index is a useful metric in its own right, calculate
it too, but save it in another attribute of `ConfusionMatrix`.

### How has this been tested?
<!-- Please describe in detail how you tested your changes.
Include details of your testing environment, and the tests you ran to
see how your change affects other areas of the code, etc. -->
Manual testing.

### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply.
If an item isn't applicable for some reason, then ~~explicitly
strikethrough~~ the whole
line. If you don't do that, GitHub will show incorrect progress for the
pull request.
If you're unsure about any of these, don't hesitate to ask. We're here
to help! -->
- [x] I submit my changes into the `develop` branch
- [x] I have created a changelog fragment <!-- see top comment in
CHANGELOG.md -->
- ~~[ ] I have updated the documentation accordingly~~
- ~~[ ] I have added tests to cover my changes~~
- ~~[ ] I have linked related issues (see [GitHub docs](

https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))~~
- ~~[ ] I have increased versions of npm packages if it is necessary

([cvat-canvas](https://github.com/opencv/cvat/tree/develop/cvat-canvas#versioning),

[cvat-core](https://github.com/opencv/cvat/tree/develop/cvat-core#versioning),

[cvat-data](https://github.com/opencv/cvat/tree/develop/cvat-data#versioning)
and

[cvat-ui](https://github.com/opencv/cvat/tree/develop/cvat-ui#versioning))~~

### License

- [x] I submit _my code changes_ under the same [MIT License](
https://github.com/opencv/cvat/blob/develop/LICENSE) that covers the
project.
  Feel free to contact the maintainers if that's a concern.

---------

Co-authored-by: Maxim Zhiltsov <zhiltsov.max35@gmail.com>
2024-03-21 18:06:00 +03:00