Skip to content

Commit 21b0ea3

Browse files
authored
Merge pull request #883 from superannotateai/develop
Develop
2 parents 9af23b5 + bc8649a commit 21b0ea3

51 files changed

Lines changed: 3579 additions & 533 deletions

Some content is hidden

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

CHANGELOG.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@ History
66

77
All release highlights of this project will be documented in this file.
88

9+
4.6.0 - Aug 16, 2026
10+
____________________
11+
12+
**Added**
13+
14+
- ``SAClient.grant_team_user_permissions()`` Grants permissions to a team user, with support for granting specific permissions or all available permissions based on the user's role.
15+
- ``SAClient.revoke_team_user_permissions()`` Revokes permissions from a team user, with support for revoking specific permissions or all available permissions based on the user's role.
16+
17+
**Updated**
18+
19+
- ``SAClient.upload_annotations()`` Added the ``integration`` parameter to sign private external URLs when creating new items in Multimodal projects. The integration must already exist on SuperAnnotate and is supported only when ``data_spec="multimodal"``.
20+
- ``SAClient(token=<API key>)`` Added support for authentication using both Personal API Keys and Team API Keys.
21+
22+
**Removed**
23+
24+
- ``SAClient.search_team_contributors()`` Recommended replacements: ``SAClient.get_item_metadata()`` or ``SAClient.list_items()``
25+
- ``SAClient.search_items()`` Recommended replacements: ``SAClient.get_user_metadata()`` or ``SAClient.list_users()``
26+
927
4.5.9 - July 21, 2026
1028
_____________________
1129
**Updated**
@@ -15,6 +33,11 @@ _____________________
1533
4.5.8 - July 12, 2026
1634
_____________________
1735

36+
**Added**
37+
38+
- ``SAClient.grant_team_user_permissions()`` Grants team-level user permissions.
39+
- ``SAClient.revoke_team_user_permissions()`` Revokes team-level user permissions.
40+
1841
**Updated**
1942

2043
- ``SAClient.generate_items()`` The name key now supports values with up to 200 characters.

README.rst

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Authentication
3131
# by environment variable SA_TOKEN
3232
sa_client = SAClient()
3333
# by token
34-
sa_client = SAClient(token='<team token>')
34+
sa_client = SAClient(token='<API key>')
3535
# by config file
3636
# default path is ~/.superannotate/config.ini
3737
sa_client = SAClient(config_path='~/.superannotate/dev_config.ini')
@@ -42,8 +42,9 @@ config.ini example
4242
.. code-block:: python
4343
4444
[DEFAULT]
45-
SA_TOKEN = <Token>
45+
SA_TOKEN = <API key>
4646
LOGGING_LEVEL = INFO
47+
LOGGING_PATH = /Users/username/data/superannotate_logs
4748
4849
4950
Using superannotate
@@ -54,7 +55,7 @@ Using superannotate
5455
from superannotate import SAClient
5556
5657
57-
sa_client =SAClient()
58+
sa_client = SAClient()
5859
5960
project = 'Dogs'
6061
@@ -110,34 +111,6 @@ Windows (`Anaconda <https://www.anaconda.com/products/individual#windows>`__
110111
) platforms.
111112

112113

113-
Supported Features
114-
------------------
115-
116-
- search/get/create/clone/update/delete projects
117-
- search/get/create/delete folders
118-
- assign folders to project contributors
119-
- upload items to a project from a local or AWS S3 folder
120-
- attach items by URL or from an integrated storage, meanwhile keeping them secure in your cloud provider
121-
- get integrated cloud storages
122-
- upload annotations (also from local or AWS S3 folder)
123-
- delete annotations
124-
- set items annotations statuses
125-
- get/download/export annotations from a project (also to a local or AWS S3 folder)
126-
- invite/search team contributors or add contributors to a specific project
127-
- search/get/copy/move items in a project
128-
- query items using SA Query Language
129-
- define custom metadata for items and upload custom values (query based on your custom metadata)
130-
- upload priority scores
131-
- get available subsets (sets of segregated items), query items in a subset or add items to a subset
132-
- assign or anassign items to project contributors
133-
- download an image that has been uploaded to project
134-
- search/create/download/delete project annotation classes
135-
- search/download models
136-
- run predictions
137-
- convert annotations from/to COCO format
138-
- convert annotation from VOC, SuperVisely, LabelBox, DataLoop, VGG, VoTT, SageMaker, GoogleCloud, YOLO formats
139-
- CLI commands for simple tasks
140-
141114
Questions and Issues
142115
--------------------
143116

docs/source/api_reference/api_item.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Items
66
.. automethod:: superannotate.SAClient.query
77
.. automethod:: superannotate.SAClient.get_item_by_id
88
.. automethod:: superannotate.SAClient.list_items
9-
.. automethod:: superannotate.SAClient.search_items
109
.. automethod:: superannotate.SAClient.attach_items
1110
.. automethod:: superannotate.SAClient.generate_items
1211
.. automethod:: superannotate.SAClient.item_context

docs/source/api_reference/api_team.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ Team
77
.. automethod:: superannotate.SAClient.list_workflows
88
.. automethod:: superannotate.SAClient.get_integrations
99
.. automethod:: superannotate.SAClient.invite_contributors_to_team
10-
.. automethod:: superannotate.SAClient.search_team_contributors
1110
.. automethod:: superannotate.SAClient.get_user_metadata
1211
.. automethod:: superannotate.SAClient.set_user_custom_field
1312
.. automethod:: superannotate.SAClient.list_users
@@ -18,3 +17,5 @@ Team
1817
.. automethod:: superannotate.SAClient.set_user_scores
1918
.. automethod:: superannotate.SAClient.set_contributors_categories
2019
.. automethod:: superannotate.SAClient.remove_contributors_categories
20+
.. automethod:: superannotate.SAClient.grant_team_user_permissions
21+
.. automethod:: superannotate.SAClient.revoke_team_user_permissions

docs/source/cli_client.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ ________________________
2222
Initialization and configuration
2323
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2424

25-
To initialize CLI (and SDK) with team token:
25+
To initialize CLI (and SDK) with an API key:
2626

2727
.. code-block:: bash
2828
29-
superannotatecli init --token <token>
29+
superannotatecli init --token <API key>
3030
[--logging_level <NOTSET/INFO/DEBUG/WARNING/ERROR/CRITICAL (Default=INFO)>]
3131
[--logging_path <Default=/Users/username/.superannotate/logs>]
3232

docs/source/userguide/SDK_Functions_sheet.csv

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ Folders,search_folders(),Yes,Not Relevant,Not Relevant,Not Relevant,Not Relevant
3131
Items,query(),Yes,Not Relevant,Not Relevant,Not Relevant,Not Relevant
3232
,get_item_by_id(),Yes,Not Relevant,Not Relevant,Not Relevant,Not Relevant
3333
,list_items(),Yes,Not Relevant,Not Relevant,Not Relevant,Not Relevant
34-
,search_items(),Yes,Not Relevant,Not Relevant,Not Relevant,Not Relevant
3534
,attach_items(),Not Relevant,Not Relevant,No,No,Not Relevant
3635
,item_context(),Yes,Not Relevant,Not Relevant,Not Relevant,Not Relevant
3736
,copy_items(),Yes,Not Relevant,Not Relevant,Not Relevant,Not Relevant
@@ -74,7 +73,6 @@ Images,download_image(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not
7473
Team,get_team_metadata(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not Relevant
7574
,get_integrations(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not Relevant
7675
,invite_contributors_to_team(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not Relevant
77-
,search_team_contributors(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not Relevant
7876
,get_user_metadata(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not Relevant
7977
,set_user_custom_field(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not Relevant
8078
,list_users(),Not Relevant,Not Relevant,Not Relevant,Not Relevant,Not Relevant

docs/source/userguide/quickstart.rst

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,16 @@ It can be installed on Ubuntu with:
3131
Initialization and authorization
3232
================================
3333

34-
To use the SDK, you need to create a config file with a team-specific authentication token. The token is available
35-
to team admins on the team settings page at https://doc.superannotate.com/docs/token-for-python-sdk#generate-a-token-for-python-sdk.
34+
To use the SDK, you need to create a config file with an API key. The API key is available to team owners and team admins
35+
on the team setup page, for more details please visit our documentation at https://doc.superannotate.com/docs/api-keys.
36+
37+
**API key types**
38+
39+
- **Team API key** — scoped to one team. Works with ``SAClient``.
40+
- **Personal (team-user) API key** — scoped to one team, tied to your user. Works with ``SAClient``.
41+
- **Organization API key** — not scoped to a team. Not supported by the SDK;
42+
``SAClient`` will reject it.
43+
3644

3745
SAClient can be used with or without arguments
3846
______________________________________________
@@ -52,7 +60,7 @@ ______________________________________________
5260

5361
.. code-block:: bash
5462
55-
superannotatecli init --token <token>
63+
superannotatecli init --token <API key>
5664
[--logging_level <NOTSET/INFO/DEBUG/WARNING/ERROR/CRITICAL (Default=INFO)>]
5765
[--logging_path <Default=/Users/username/.superannotate/logs>]
5866
@@ -66,7 +74,7 @@ ______________________________________________
6674
from superannotate import SAClient
6775
6876
69-
SAClient(token="<token>")
77+
sa_client = SAClient(token="<API key>")
7078
7179
7280
*Method 2:* Create a custom config file:
@@ -84,7 +92,7 @@ Custom config.ini example:
8492
.. code-block:: ini
8593
8694
[DEFAULT]
87-
SA_TOKEN = <token>
95+
SA_TOKEN = <API key>
8896
LOGGING_LEVEL = INFO
8997
LOGGING_PATH = /Users/username/data/superannotate_logs
9098

pytest.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ minversion = 3.7
33
log_cli=true
44
python_files = test_*.py
55
;pytest_plugins = ['pytest_profiling']
6-
;addopts = -n 6 --dist loadscope
6+
addopts = -n 6 --dist loadscope

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
pydantic~=2.5
22
pydantic-extra-types~=2.11
3-
aiohttp~=3.8
3+
aiohttp~=3.14
44
boto3~=1.42
55
opencv-python-headless~=4.7
66
plotly~=6.5
77
pandas~=2.0
8-
pillow~=12.1
8+
pillow~=12.3
99
tqdm~=4.66
1010
requests~=2.33
1111
aiofiles~=25.1

src/superannotate/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33
import sys
44

5-
__version__ = "4.5.9"
5+
__version__ = "4.6.0dev1"
66

77

88
os.environ.update({"sa_version": __version__})

0 commit comments

Comments
 (0)