Revision b3081bf143bbac12feb4a8ac3584419ae0e09565 authored by Roman Donchenko on 29 June 2023, 16:58:21 UTC, committed by GitHub on 29 June 2023, 16:58:21 UTC
<!-- 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. -->
For unclear reasons, when this setting is enabled, the OpenAPI Generator
runtime becomes unable to parse `AnnotationsRead` values from JSON.

Specifically, it thinks that the JSON value is ambiguous, because it can
be parsed both as `LabeledData` and as `IOBase`. The former makes sense,
but the latter does not. I think it's just a bug in the runtime.

This line is why the issue only occurs when `discard_unknown_keys` is
set:


https://github.com/OpenAPITools/openapi-generator/blob/v6.0.1/modules/openapi-generator/src/main/resources/python/model_utils.mustache#L1139

The CLI currently doesn't parse `AnnotationRead` anywhere, so this patch
doesn't have any user-visible effects. However, I'm prototyping a new
CLI command which will need to parse annotations.

Change `tasks_create` so that it routes kwargs to the appropriate
destinations instead of passing all of them both to `TaskWriteRequest`
and `create_from_data`. I don't think this is _really_ necessary (the
extra arguments should just be ignored), but it makes the code more
illustrative.


### 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! -->
- [x] I submit my changes into the `develop` branch
- ~~[ ] I have added a description of my changes into the
[CHANGELOG](https://github.com/opencv/cvat/blob/develop/CHANGELOG.md)
file~~
- ~~[ ] 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.
1 parent 29397b3
Raw File
README.md
# Command-line client for CVAT

A simple command line interface for working with CVAT tasks. At the moment it
implements a basic feature set but may serve as the starting point for a more
comprehensive CVAT administration tool in the future.

Overview of functionality:

- Create a new task (supports name, bug tracker, project, labels JSON, local/share/remote files)
- Delete tasks (supports deleting a list of task IDs)
- List all tasks (supports basic CSV or JSON output)
- Download JPEG frames (supports a list of frame IDs)
- Dump annotations (supports all formats via format string)
- Upload annotations for a task in the specified format (e.g. 'YOLO ZIP 1.0')
- Export and download a whole task
- Import a task

## Installation

`pip install cvat-cli`

## Usage

```bash
$ cvat-cli --help

usage: cvat-cli [-h] [--version] [--auth USER:[PASS]]
  [--server-host SERVER_HOST] [--server-port SERVER_PORT] [--debug]
  {create,delete,ls,frames,dump,upload,export,import} ...

Perform common operations related to CVAT tasks.

positional arguments:
  {create,delete,ls,frames,dump,upload,export,import}

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --auth USER:[PASS]    defaults to the current user and supports the PASS
                        environment variable or password prompt
                        (default: current user)
  --server-host SERVER_HOST
                        host (default: localhost)
  --server-port SERVER_PORT
                        port (default: 8080)
  --debug               show debug output
```

## Examples

Create a task with local images:

```bash
cvat-cli --auth user create
    --labels '[{"name": "car"}, {"name": "person"}]'
    "test_task"
    "local"
    "image1.jpg" "image2.jpg"
```

List tasks on a custom server with auth:

```bash
cvat-cli --auth admin:password \
    --server-host cvat.my.server.com --server-port 30123 \
    ls
```
back to top