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

Release v2.10.0 #7340

Merged
merged 29 commits into from
Jan 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0eec271
Update develop after v2.9.2
cvat-bot[bot] Dec 11, 2023
2aae952
Merge pull request #7255 from opencv/dev-release-2.9.2
azhavoro Dec 11, 2023
cbd5f43
Fix GCS bucket name validation (#7227)
jootten Dec 13, 2023
d7bbc10
Fix compatibility with older versions of Docker Compose (#7170)
SpecLad Dec 14, 2023
3520645
Removed `PermissionDenied` error thrown before OPA call (#7259)
klakhov Dec 15, 2023
1bb674a
Update Clickhouse to the latest version (#7268)
SpecLad Dec 15, 2023
9fb582d
Simplify the dev environment setup instructions by reusing Compose fi…
SpecLad Dec 15, 2023
2b7d01a
Improve invite users to organization feature (#7138)
klakhov Dec 15, 2023
fb0fe9e
Use OPA from the Docker image for testing (#7273)
SpecLad Dec 15, 2023
80e1212
Remove deprecated VS Code settings (#7244)
SpecLad Dec 18, 2023
48ab12b
Use separate services for storing job queues and cache (#7245)
SpecLad Dec 19, 2023
d9e7b2c
Added cypress tests for slice/join (#7249)
klakhov Dec 19, 2023
e11b6e0
Ground truth annotations is not injected to annotation job (#7281)
bsekachev Dec 21, 2023
ec5fe82
Small refactoring (#7149)
Marishka17 Dec 23, 2023
c51184b
Fix bug: chinese can not input correctly (#6916)
yangxiuwu Dec 23, 2023
06c6a76
Fixed docs building (#7294)
bsekachev Dec 26, 2023
fb610a4
504 on save annotation, workaround (#7286)
bsekachev Dec 27, 2023
bf65513
Fix rq scheduler launch (#7293)
Marishka17 Dec 27, 2023
4bfd128
Updated pillow, unlocked test (#7100)
bsekachev Dec 28, 2023
e269f13
Update LICENSE (#7301)
bsekachev Dec 29, 2023
c585209
Fixed two issues with GT annotations (#7299)
bsekachev Dec 29, 2023
56f37ac
Adjusted text color for label matcher (#7309)
bsekachev Jan 3, 2024
397d006
Add absent skeleton elements automatically in cvat-core (#7302)
bsekachev Jan 3, 2024
39190c5
Bump tj-actions/changed-files from 35.9.2 to 41.0.0 in /.github/workf…
dependabot[bot] Jan 3, 2024
64d6d7a
Correct updating server ID after patching annotations (#7315)
bsekachev Jan 4, 2024
9b99f6a
Remove dependency on distutils module (#7318)
Marishka17 Jan 9, 2024
40dc2a9
Fix updating Azure connection string && increase credentials max_leng…
Marishka17 Jan 9, 2024
cfbad35
Fixed CI badge URL (#7337)
bsekachev Jan 9, 2024
c36ec24
Prepare release v2.10.0
cvat-bot[bot] Jan 10, 2024
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
2 changes: 1 addition & 1 deletion .github/workflows/bandit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- id: files
uses: tj-actions/changed-files@v35.9.2
uses: tj-actions/changed-files@v41.0.0
with:
files: |
**/*.py
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/black.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- id: files
uses: tj-actions/changed-files@v35.9.2
uses: tj-actions/changed-files@v41.0.0
with:
files: |
cvat-sdk/**/*.py
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,8 @@ jobs:
python cvat/apps/iam/rules/tests/generate_tests.py \
--output-dir cvat/apps/iam/rules/

curl -L -o opa https://openpolicyagent.org/downloads/v0.45.0/opa_linux_amd64_static
chmod +x ./opa
./opa test cvat/apps/iam/rules
docker compose run --rm -v "$PWD/cvat/apps/iam/rules/:/mnt/rules" \
cvat_opa test /mnt/rules

- name: Running unit tests
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/hadolint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- id: files
uses: tj-actions/changed-files@v35.9.2
uses: tj-actions/changed-files@v41.0.0
with:
files: |
**/Dockerfile*
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/isort.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- id: files
uses: tj-actions/changed-files@v35.9.2
uses: tj-actions/changed-files@v41.0.0
with:
files: |
cvat-sdk/**/*.py
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,8 @@ jobs:
python cvat/apps/iam/rules/tests/generate_tests.py \
--output-dir cvat/apps/iam/rules/

curl -L -o opa https://openpolicyagent.org/downloads/v0.45.0/opa_linux_amd64_static
chmod +x ./opa
./opa test cvat/apps/iam/rules
docker compose run --rm -v "$PWD/cvat/apps/iam/rules/:/mnt/rules" \
cvat_opa test /mnt/rules

- name: Running unit tests
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pylint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- id: files
uses: tj-actions/changed-files@v35.9.2
uses: tj-actions/changed-files@v41.0.0
with:
files: |
**/*.py
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stylelint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
with:
node-version: '16.x'
- id: files
uses: tj-actions/changed-files@v35.9.2
uses: tj-actions/changed-files@v41.0.0
with:
files: |
**/*.css
Expand Down
3 changes: 0 additions & 3 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@
}
],
"python.defaultInterpreterPath": "${workspaceFolder}/.env/",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.linting.pycodestyleEnabled": false,
"python.testing.pytestArgs": [
"--rootdir","${workspaceFolder}/tests/"
],
Expand Down
64 changes: 64 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,70 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

<!-- scriv-insert-here -->

<a id='changelog-2.10.0'></a>
## \[2.10.0\] - 2024-01-10

### Changed

- When the `ORG_INVITATION_CONFIRM` setting is enabled, organization invitations for existing users are no
longer accepted automatically. Instead, the invitee can now review the invitation and choose to accept or decline it.
(<https://github.com/opencv/cvat/pull/7138>)

- \[Compose, Helm\] Updated Clickhouse to version 23.11.*
(<https://github.com/opencv/cvat/pull/7268>)

- Job queues are now stored in a dedicated Redis instance
(<https://github.com/opencv/cvat/pull/7245>)

### Removed

- PermissionDenied error thrown before OPA call in case if user is not a member of organization
(<https://github.com/opencv/cvat/pull/7259>)

### Fixed

- Can not input Chinese correctly in text attributes on objects sidebar
(<https://github.com/opencv/cvat/pull/6916>)

- Restored Compose file compatibility with Docker Compose 2.17.0 and earlier
(<https://github.com/opencv/cvat/pull/7170>)

- Attaching GCS and AWS S3 buckets with dots in name
(<https://github.com/opencv/cvat/pull/7227>)

- Annotation actions are applied to the objects from a ground truth job
(<https://github.com/opencv/cvat/pull/7281>)
- Ground truth objects removed together with annotation objects when press "Remove annotations" in menu
(<https://github.com/opencv/cvat/pull/7281>)
- Frame search by a filter is affected by ground truth annotations
(<https://github.com/opencv/cvat/pull/7281>)

- Creating duplicating annotations when nginx throws 504 timeout status (workaround)
(<https://github.com/opencv/cvat/pull/7286>)

- `TIFF` images are saved as `JPEG` images with `.tif` extension in original chunks
(<https://github.com/opencv/cvat/pull/7100>)
- EXIF rotated TIFF images are handled incorrectly
(<https://github.com/opencv/cvat/pull/7100>)

- RQ Scheduler launch, broken in PR 7245
(<https://github.com/opencv/cvat/pull/7293>)

- UI crashes if user highligts conflict related to annotations hidden by a filter
(<https://github.com/opencv/cvat/pull/7299>)
- Annotations conflicts are not highligted properly on the first frame of a job
(<https://github.com/opencv/cvat/pull/7299>)

- Error message `Edge's nodeFrom ${dataNodeFrom} or nodeTo ${dataNodeTo} do not to refer to any node`
when upload a file with some abscent skeleton nodes (<https://github.com/opencv/cvat/pull/7302>)
- Wrong context menu position in skeleton configurator (Firefox only)
(<https://github.com/opencv/cvat/pull/7302>)
- Fixed console error `(Error: <rect> attribute width: A negative value is not valid`
appearing when skeleton with all outside elements is created (<https://github.com/opencv/cvat/pull/7302>)

- Updating cloud storage attached to CVAT using Azure connection string
(<https://github.com/opencv/cvat/pull/7336>)

<a id='changelog-2.9.2'></a>
## \[2.9.2\] - 2023-12-11

Expand Down
3 changes: 1 addition & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,6 @@ RUN apt-get update && \
p7zip-full \
poppler-utils \
python3 \
python3-distutils \
python3-venv \
supervisor \
tzdata \
Expand Down Expand Up @@ -177,7 +176,7 @@ RUN if [ "${CVAT_DEBUG_ENABLED}" = 'yes' ]; then \
COPY cvat/nginx.conf /etc/nginx/nginx.conf
COPY --chown=${USER} components /tmp/components
COPY --chown=${USER} supervisord/ ${HOME}/supervisord
COPY --chown=${USER} wait-for-it.sh manage.py backend_entrypoint.sh ${HOME}/
COPY --chown=${USER} wait-for-it.sh manage.py backend_entrypoint.sh wait_for_deps.sh ${HOME}/
COPY --chown=${USER} utils/ ${HOME}/utils
COPY --chown=${USER} cvat/ ${HOME}/cvat
COPY --chown=${USER} rqscheduler.py ${HOME}
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
MIT License

Copyright (c) 2018-2022 Intel Corporation
Copyright (c) 2022 CVAT.ai Corporation
Copyright (c) 2022-2024 CVAT.ai Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ questions and get our support.
[docker-server-image-url]: https://hub.docker.com/r/cvat/server
[docker-ui-pulls-img]: https://img.shields.io/docker/pulls/cvat/ui.svg?style=flat-square&label=UI%20pulls
[docker-ui-image-url]: https://hub.docker.com/r/cvat/ui
[ci-img]: https://github.com/opencv/cvat/workflows/CI/badge.svg?branch=develop
[ci-img]: https://github.com/opencv/cvat/actions/workflows/main.yml/badge.svg?branch=develop
[ci-url]: https://github.com/opencv/cvat/actions
[gitter-img]: https://img.shields.io/gitter/room/opencv-cvat/public?style=flat
[gitter-url]: https://gitter.im/opencv-cvat/public
Expand Down
2 changes: 1 addition & 1 deletion cvat-canvas/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cvat-canvas",
"version": "2.19.0",
"version": "2.19.1",
"type": "module",
"description": "Part of Computer Vision Annotation Tool which presents its canvas library",
"main": "src/canvas.ts",
Expand Down
2 changes: 1 addition & 1 deletion cvat-canvas/src/typescript/canvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class CanvasImpl implements Canvas {
this.model.activate(clientID, attributeID);
}

public highlight(clientIDs: number[] | null, severity: HighlightSeverity | null = null): void {
public highlight(clientIDs: number[], severity: HighlightSeverity | null = null): void {
this.model.highlight(clientIDs, severity);
}

Expand Down
23 changes: 8 additions & 15 deletions cvat-canvas/src/typescript/canvasModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ export enum HighlightSeverity {
}

export interface HighlightedElements {
elementsIDs: number [];
severity: HighlightSeverity;
elementsIDs: number[];
severity: HighlightSeverity | null;
}

export enum RectDrawingMethod {
Expand Down Expand Up @@ -267,7 +267,7 @@ export interface CanvasModel {
setup(frameData: any, objectStates: any[], zLayer: number): void;
setupIssueRegions(issueRegions: Record<number, { hidden: boolean; points: number[] }>): void;
activate(clientID: number | null, attributeID: number | null): void;
highlight(clientIDs: number[] | null, severity: HighlightSeverity): void;
highlight(clientIDs: number[], severity: HighlightSeverity): void;
rotate(rotationAngle: number): void;
focus(clientID: number, padding: number): void;
fit(): void;
Expand Down Expand Up @@ -641,18 +641,11 @@ export class CanvasModelImpl extends MasterImpl implements CanvasModel {
this.notify(UpdateReasons.SHAPE_ACTIVATED);
}

public highlight(clientIDs: number[] | null, severity: HighlightSeverity | null): void {
if (Array.isArray(clientIDs)) {
this.data.highlightedElements = {
elementsIDs: clientIDs,
severity,
};
} else {
this.data.highlightedElements = {
elementsIDs: [],
severity: null,
};
}
public highlight(clientIDs: number[], severity: HighlightSeverity | null): void {
this.data.highlightedElements = {
elementsIDs: clientIDs,
severity,
};

this.notify(UpdateReasons.SHAPE_HIGHLIGHTED);
}
Expand Down
25 changes: 15 additions & 10 deletions cvat-canvas/src/typescript/canvasView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
return this.controller.mode;
}

private onMessage = (messages: CanvasHint[] | null, topic: string) => {

Check warning on line 100 in cvat-canvas/src/typescript/canvasView.ts

View workflow job for this annotation

GitHub Actions / Linter

Missing return type on function
this.canvas.dispatchEvent(
new CustomEvent('canvas.message', {
bubbles: false,
Expand Down Expand Up @@ -2851,7 +2851,9 @@

return this.adoptedText
.text((block): void => {
block.tspan(`${withLabel ? label.name : ''} ${withID ? clientID : ''} ${withSource ? `(${source})` : ''}`).style({
block.tspan(`${withLabel ? label.name : ''} ` +
`${withID ? clientID : ''} ` +
`${withSource ? `(${source})` : ''}`).style({
'text-transform': 'uppercase',
});
if (withDescriptions) {
Expand Down Expand Up @@ -3068,11 +3070,7 @@

const SVGElement = makeSVGFromTemplate(state.label.structure.svg);

let xtl = Number.MAX_SAFE_INTEGER;
let ytl = Number.MAX_SAFE_INTEGER;
let xbr = Number.MIN_SAFE_INTEGER;
let ybr = Number.MIN_SAFE_INTEGER;

let [xtl, ytl, xbr, ybr] = [null, null, null, null];
const svgElements: Record<number, SVG.Element> = {};
const templateElements = Array.from(SVGElement.children()).filter((el: SVG.Element) => el.type === 'circle');
for (let i = 0; i < state.elements.length; i++) {
Expand All @@ -3082,10 +3080,10 @@
const [cx, cy] = this.translateToCanvas(points);

if (!element.outside) {
xtl = Math.min(xtl, cx);
ytl = Math.min(ytl, cy);
xbr = Math.max(xbr, cx);
ybr = Math.max(ybr, cy);
xtl = xtl === null ? cx : Math.min(xtl, cx);
ytl = ytl === null ? cy : Math.min(ytl, cy);
xbr = xbr === null ? cx : Math.max(xbr, cx);
ybr = ybr === null ? cy : Math.max(ybr, cy);
}

const templateElement = templateElements.find((el: SVG.Circle) => el.attr('data-label-id') === element.label.id);
Expand Down Expand Up @@ -3180,6 +3178,13 @@
}
}

// if all elements were outside, set coordinates to zeros
xtl = xtl || 0;
ytl = ytl || 0;
xbr = xbr || 0;
ybr = ybr || 0;

// apply bounding box margin
xtl -= consts.SKELETON_RECT_MARGIN;
ytl -= consts.SKELETON_RECT_MARGIN;
xbr += consts.SKELETON_RECT_MARGIN;
Expand Down
4 changes: 2 additions & 2 deletions cvat-cli/requirements/base.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
cvat-sdk~=2.9.2
Pillow>=10.0.1
cvat-sdk~=2.10.0
Pillow>=10.1.0
setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
6 changes: 3 additions & 3 deletions cvat-cli/src/cvat_cli/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
import logging
import os
import textwrap
from distutils.util import strtobool
from pathlib import Path
from typing import Any, Tuple

from attr.converters import to_bool
from cvat_sdk.core.proxies.tasks import ResourceType

from .version import VERSION
Expand Down Expand Up @@ -60,7 +60,7 @@ def parse_function_parameter(s: str) -> Tuple[str, Any]:
elif type_ == "str":
pass
elif type_ == "bool":
value = bool(strtobool(value))
value = to_bool(value)
else:
raise argparse.ArgumentTypeError(f"unsupported parameter type {type_!r}")

Expand Down Expand Up @@ -339,7 +339,7 @@ def make_cmdline_parser() -> argparse.ArgumentParser:
)
dump_parser.add_argument(
"--with-images",
type=strtobool,
type=to_bool,
default=False,
dest="include_images",
help="Whether to include images or not (default: %(default)s)",
Expand Down
2 changes: 1 addition & 1 deletion cvat-cli/src/cvat_cli/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VERSION = "2.9.2"
VERSION = "2.10.0"
2 changes: 1 addition & 1 deletion cvat-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cvat-core",
"version": "12.2.0",
"version": "14.0.3",
"type": "module",
"description": "Part of Computer Vision Tool which presents an interface for client-side integration",
"main": "src/api.ts",
Expand Down
4 changes: 2 additions & 2 deletions cvat-core/src/annotation-formats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
//
// SPDX-License-Identifier: MIT

import { DimensionType } from 'enums';
import { DimensionType } from './enums';
import {
SerializedAnnotationExporter,
SerializedAnnotationFormats,
SerializedAnnotationImporter,
} from 'server-response-types';
} from './server-response-types';

export class Loader {
public name: string;
Expand Down
Loading
Loading