Skip to content

remove _missing_data_type_

c5d6d9a
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Open

Chore: Fixed links #1085

remove _missing_data_type_
c5d6d9a
Select commit
Loading
Failed to load commit list.
GitHub Actions / SDK integration test report failed Mar 11, 2026 in 0s

1 errors, 7 fail, 4 skipped, 277 pass in 21m 51s

  1 files  +  1    1 suites  +1   21m 51s ⏱️ + 21m 51s
289 tests +289  277 ✅ +277  4 💤 +4  7 ❌ +7  1 🔥 +1 
290 runs  +290  277 ✅ +277  4 💤 +4  7 ❌ +7  2 🔥 +2 

Results for commit c5d6d9a. ± Comparison against earlier commit 97978c3.

Annotations

Check warning on line 0 in datasets.test_users

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_add_users_to_dataset[ssh-key-authentication-firebase-user] (datasets.test_users) failed

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 6s]
Raw output
encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:24:35.353907+00:00' trace_id='4511e3041bd04b70b2f4f0368491ed12' span_id='1' domain='https://dev.api.encord.com/'
ephemeral_cord_dataset_client = <encord.dataset.Dataset object at 0x7f0ab4838cb0>

    @pytest.mark.parametrize("account_type", [AccountTypeEnum.FIREBASE, AccountTypeEnum.SERVICE], indirect=True)
    def test_add_users_to_dataset(
        ephemeral_cord_dataset_client: EncordClientDataset | Dataset,
    ) -> None:
>       res = ephemeral_cord_dataset_client.add_users([TEST_USER_EMAIL_1], DatasetUserRole.USER)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/sdk_integration_tests/tests/datasets/test_users.py:21: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/dataset.py:183: in add_users
    return self._client.add_users(user_emails, user_role)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/client.py:276: in add_users
    users = self._querier.basic_setter(DatasetUsers, self._querier.resource_id, payload=payload)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:120: in basic_setter
    res, context = self._execute(request, retryable=retryable)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:208: in _execute
    check_error_response(response, context, extra_payload)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

response = ['AUTHORISATION_ERROR']
context = RequestContext(timestamp='2026-03-11T17:24:35.353907+00:00', trace_id='4511e3041bd04b70b2f4f0368491ed12', span_id='1', domain='https://dev.api.encord.com/')
payload = 'User(s) testuser1@cord.tech are not members of your organisation.'

    def check_error_response(response, context: Optional[RequestContext] = None, payload: Any = None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if response == AUTHENTICATION_ERROR:
            raise AuthenticationError("You are not authenticated to access the Encord platform.", context=context)
    
        if response == AUTHORISATION_ERROR:
>           raise AuthorisationError("You are not authorised to access this asset.", context=context)
E           encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:24:35.353907+00:00' trace_id='4511e3041bd04b70b2f4f0368491ed12' span_id='1' domain='https://dev.api.encord.com/'

.venv/lib/python3.12/site-packages/encord/http/error_utils.py:64: AuthorisationError

Check warning on line 0 in datasets.test_users

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_add_users_to_dataset[ssh-key-authentication-service-account] (datasets.test_users) failed

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 1s]
Raw output
encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:24:41.676844+00:00' trace_id='8a3791e14cae4e36a092c0e6d72a1cc7' span_id='1' domain='https://dev.api.encord.com/'
ephemeral_cord_dataset_client = <encord.dataset.Dataset object at 0x7f0ab482cb90>

    @pytest.mark.parametrize("account_type", [AccountTypeEnum.FIREBASE, AccountTypeEnum.SERVICE], indirect=True)
    def test_add_users_to_dataset(
        ephemeral_cord_dataset_client: EncordClientDataset | Dataset,
    ) -> None:
>       res = ephemeral_cord_dataset_client.add_users([TEST_USER_EMAIL_1], DatasetUserRole.USER)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/sdk_integration_tests/tests/datasets/test_users.py:21: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/dataset.py:183: in add_users
    return self._client.add_users(user_emails, user_role)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/client.py:276: in add_users
    users = self._querier.basic_setter(DatasetUsers, self._querier.resource_id, payload=payload)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:120: in basic_setter
    res, context = self._execute(request, retryable=retryable)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:208: in _execute
    check_error_response(response, context, extra_payload)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

response = ['AUTHORISATION_ERROR']
context = RequestContext(timestamp='2026-03-11T17:24:41.676844+00:00', trace_id='8a3791e14cae4e36a092c0e6d72a1cc7', span_id='1', domain='https://dev.api.encord.com/')
payload = 'User(s) testuser1@cord.tech are not members of your organisation.'

    def check_error_response(response, context: Optional[RequestContext] = None, payload: Any = None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if response == AUTHENTICATION_ERROR:
            raise AuthenticationError("You are not authenticated to access the Encord platform.", context=context)
    
        if response == AUTHORISATION_ERROR:
>           raise AuthorisationError("You are not authorised to access this asset.", context=context)
E           encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:24:41.676844+00:00' trace_id='8a3791e14cae4e36a092c0e6d72a1cc7' span_id='1' domain='https://dev.api.encord.com/'

.venv/lib/python3.12/site-packages/encord/http/error_utils.py:64: AuthorisationError

Check warning on line 0 in projects.test_editor_logs

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_read_logs_works (projects.test_editor_logs) failed

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 2s]
Raw output
AssertionError: Expected to find editor logs after insertion
assert 0 == 3
 +  where 0 = len([])
ephemeral_user_client = <encord.user_client.EncordUserClient object at 0x7fb8ddc22d80>
ephemeral_project_hash = 'c2bf71d8-d33f-43e3-9d38-cc1d97e10a45'

    @pytest.mark.skipif(ENCORD_VERSION < "0.1.179", reason="Editor logs feature only available from this version")
    def test_read_logs_works(ephemeral_user_client: EncordUserClient, ephemeral_project_hash: str) -> None:
        user_bearer_token = get_firebase_bearer_token(USER_EMAIL, PASSWORD)
        project = ephemeral_user_client.get_project(ephemeral_project_hash)
    
        start_time = get_utc_datetime_now() - timedelta(days=29)
        end_time = get_utc_datetime_now()
        logs = project.get_editor_logs(start_time=start_time, end_time=end_time)
        assert len(list(logs)) == 0, "No logs have been added"
    
        # Insert some test editor logs using the API directly
        original_logs = _insert_test_editor_logs(ephemeral_user_client, ephemeral_project_hash, user_bearer_token)
    
        start_time = get_utc_datetime_now() - timedelta(days=29)
        end_time = get_utc_datetime_now()
        logs = project.get_editor_logs(start_time=start_time, end_time=end_time)
        log_list = list(logs)
        # Verify that logs were inserted
        for i, log in enumerate(log_list):
            assert_log_equality(log, original_logs[i], project)
    
>       assert len(log_list) == 3, "Expected to find editor logs after insertion"
E       AssertionError: Expected to find editor logs after insertion
E       assert 0 == 3
E        +  where 0 = len([])

src/sdk_integration_tests/tests/projects/test_editor_logs.py:46: AssertionError

Check failure on line 0 in projects.test_shadow_data

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_shadow_data_project (projects.test_shadow_data) with error

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 8s]
Raw output
failed on setup with "encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:35:05.812620+00:00' trace_id='3dc7b36bb8e1438db90769b5da4b7e07' span_id='1' domain='https://dev.api.encord.com/'"
failed on teardown with "encord.exceptions.InvalidArgumentsError: Failed to delete ontology that is being used by projects timestamp='2026-03-11T17:35:06.924696+00:00' trace_id='0d36256397154b4aaae84ea9be17bb5e' span_id='1' domain='https://dev.api.encord.com'"
ephemeral_user_client = <encord.user_client.EncordUserClient object at 0x7fb8e51d2240>
ephemeral_ontology = <encord.ontology.Ontology object at 0x7fb8dd5a5910>
source_data_project_hash = '559b03d1-a5f2-48ca-b074-b8297a12593c'
shadow_dataset_with_data_hash = '44574bef-7481-468b-8452-89975f8d0551'

    @pytest.fixture(name="shadow_data_project_hash")
    def get_shadow_data_project_hash(
        ephemeral_user_client: EncordUserClient,
        ephemeral_ontology: Ontology,
        source_data_project_hash: str,
        shadow_dataset_with_data_hash: str,
    ) -> Iterator[str]:
        shadow_project_hash = ephemeral_user_client.create_project(
            project_title=SHADOW_PROJECT_TITLE,
            dataset_hashes=[shadow_dataset_with_data_hash],
            ontology_hash=ephemeral_ontology.ontology_hash,
            workflow_settings=BenchmarkQaWorkflowSettings(source_projects=[source_data_project_hash]),
        )
        logger.info("Created the shadow project %s", shadow_project_hash)
        project_client = ephemeral_user_client.get_project(shadow_project_hash)
>       project_client.add_users([TEST_USER_EMAIL_1, TEST_USER_EMAIL_2], ProjectUserRole.ANNOTATOR)

src/sdk_integration_tests/tests/projects/test_shadow_data.py:106: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/project.py:299: in add_users
    return self._client.add_users(user_emails, user_role)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/client.py:882: in add_users
    users = self._querier.basic_setter(ProjectUsers, self._querier.resource_id, payload=payload)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:120: in basic_setter
    res, context = self._execute(request, retryable=retryable)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:208: in _execute
    check_error_response(response, context, extra_payload)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

response = ['AUTHORISATION_ERROR']
context = RequestContext(timestamp='2026-03-11T17:35:05.812620+00:00', trace_id='3dc7b36bb8e1438db90769b5da4b7e07', span_id='1', domain='https://dev.api.encord.com/')
payload = 'User(s) testuser2@cord.tech, testuser1@cord.tech are not members of your organisation.'

    def check_error_response(response, context: Optional[RequestContext] = None, payload: Any = None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if response == AUTHENTICATION_ERROR:
            raise AuthenticationError("You are not authenticated to access the Encord platform.", context=context)
    
        if response == AUTHORISATION_ERROR:
>           raise AuthorisationError("You are not authorised to access this asset.", context=context)
E           encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:35:05.812620+00:00' trace_id='3dc7b36bb8e1438db90769b5da4b7e07' span_id='1' domain='https://dev.api.encord.com/'

.venv/lib/python3.12/site-packages/encord/http/error_utils.py:64: AuthorisationError
ephemeral_user_client = <encord.user_client.EncordUserClient object at 0x7fb8e51d2240>

    @pytest.fixture
    def ephemeral_ontology(ephemeral_user_client: EncordUserClient) -> Iterator[Ontology]:
        uniq = str(uuid.uuid4())
        structure = OntologyStructure.from_dict(EPHEMERAL_ONTOLOGY_STRUCTURE_DICT)
    
        ontology = ephemeral_user_client.create_ontology(f"SDK test ontology {uniq}", "template description", structure)
    
        yield ontology
    
        try:
            # from public/entity_handlers/project.py :
            #
            #     as we're currently in the transition phase where SDK is not fully aware of the
            #     ontologies as separate entities, let's emulate old behavior for SDK-managed projects:
            #     if you create one then delete one, then the ontology we create behind the scenes is
            #     treated as a "child object" and is deleted if the project is.
            #
>           ephemeral_user_client._api_client.delete(f"ontologies/{ontology.ontology_hash}", params=None)

src/sdk_integration_tests/tests/conftest.py:351: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:105: in delete
    return self._request_without_payload("DELETE", path, params, result_type, allow_none=allow_none)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:221: in _request_without_payload
    return self._request(
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:256: in _request
    self._handle_error(res, context)
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:302: in _handle_error
    raise e
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:295: in _handle_error
    handle_error_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

status_code = 400
response_headers = {'date': 'Wed, 11 Mar 2026 17:35:06 GMT', 'Content-Length': '188', 'content-type': 'application/json', 'via': '1.1 goo...; includeSubDomains', 'x-content-type-options': 'nosniff', 'Alt-Svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000'}
message = 'Failed to delete ontology that is being used by projects'
context = RequestContext(timestamp='2026-03-11T17:35:06.924696+00:00', trace_id='0d36256397154b4aaae84ea9be17bb5e', span_id='1', domain='https://dev.api.encord.com')

    def handle_error_response(status_code: int, response_headers: Mapping[str, str], message=None, context=None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if status_code == HTTP_UNAUTHORIZED:
            raise AuthenticationError(
                message or "You are not authenticated to access the Encord platform.", context=context
            )
    
        if status_code == HTTP_FORBIDDEN:
            raise AuthorisationError(message or "You are not authorised to access this asset.", context=context)
    
        if status_code == HTTP_NOT_FOUND:
            raise ResourceNotFoundError("The requested resource was not found.", context=context)
    
        if status_code == HTTP_METHOD_NOT_ALLOWED:
            raise MethodNotAllowedError("HTTP method is not allowed.", context=context)
    
        if status_code == HTTP_BAD_REQUEST:
>           raise InvalidArgumentsError(message or "Provided payload is invalid and can't be processed.", context=context)
E           encord.exceptions.InvalidArgumentsError: Failed to delete ontology that is being used by projects timestamp='2026-03-11T17:35:06.924696+00:00' trace_id='0d36256397154b4aaae84ea9be17bb5e' span_id='1' domain='https://dev.api.encord.com'

.venv/lib/python3.12/site-packages/encord/http/v2/error_utils.py:43: InvalidArgumentsError

Check warning on line 0 in projects.test_users

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_add_users_to_project[ssh-key-authentication-firebase-user] (projects.test_users) failed

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 0s]
Raw output
encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:35:32.352887+00:00' trace_id='f7caf453c353434cbf7cdc2760aa5d7e' span_id='1' domain='https://dev.api.encord.com/'
ephemeral_user_client = <encord.user_client.EncordUserClient object at 0x7fb8ea3ea930>
get_project_client = <function get_ssh_project_client at 0x7fb8ea3e47c0>

    @pytest.mark.parametrize("account_type", [AccountTypeEnum.FIREBASE, AccountTypeEnum.SERVICE], indirect=True)
    def test_add_users_to_project(
        ephemeral_user_client: EncordUserClient,
        get_project_client: Callable[[Any, str], EncordClientProject | Project],
    ) -> None:
        user_client = ephemeral_user_client
        project_hash = user_client.create_project("test project with dataset", [], "")
        client = get_project_client(user_client, project_hash)
    
>       users = client.add_users([TEST_USER_EMAIL_1], ProjectUserRole.ANNOTATOR)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/sdk_integration_tests/tests/projects/test_users.py:23: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/project.py:299: in add_users
    return self._client.add_users(user_emails, user_role)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/client.py:882: in add_users
    users = self._querier.basic_setter(ProjectUsers, self._querier.resource_id, payload=payload)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:120: in basic_setter
    res, context = self._execute(request, retryable=retryable)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:208: in _execute
    check_error_response(response, context, extra_payload)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

response = ['AUTHORISATION_ERROR']
context = RequestContext(timestamp='2026-03-11T17:35:32.352887+00:00', trace_id='f7caf453c353434cbf7cdc2760aa5d7e', span_id='1', domain='https://dev.api.encord.com/')
payload = 'User(s) testuser1@cord.tech are not members of your organisation.'

    def check_error_response(response, context: Optional[RequestContext] = None, payload: Any = None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if response == AUTHENTICATION_ERROR:
            raise AuthenticationError("You are not authenticated to access the Encord platform.", context=context)
    
        if response == AUTHORISATION_ERROR:
>           raise AuthorisationError("You are not authorised to access this asset.", context=context)
E           encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:35:32.352887+00:00' trace_id='f7caf453c353434cbf7cdc2760aa5d7e' span_id='1' domain='https://dev.api.encord.com/'

.venv/lib/python3.12/site-packages/encord/http/error_utils.py:64: AuthorisationError

Check warning on line 0 in projects.test_users

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_add_users_to_project[ssh-key-authentication-service-account] (projects.test_users) failed

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 1s]
Raw output
encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:35:33.334500+00:00' trace_id='cbe15b9783f2426192ad0288ba75d9b6' span_id='1' domain='https://dev.api.encord.com/'
ephemeral_user_client = <encord.user_client.EncordUserClient object at 0x7fb8dd79ecc0>
get_project_client = <function get_ssh_project_client at 0x7fb8ea3e47c0>

    @pytest.mark.parametrize("account_type", [AccountTypeEnum.FIREBASE, AccountTypeEnum.SERVICE], indirect=True)
    def test_add_users_to_project(
        ephemeral_user_client: EncordUserClient,
        get_project_client: Callable[[Any, str], EncordClientProject | Project],
    ) -> None:
        user_client = ephemeral_user_client
        project_hash = user_client.create_project("test project with dataset", [], "")
        client = get_project_client(user_client, project_hash)
    
>       users = client.add_users([TEST_USER_EMAIL_1], ProjectUserRole.ANNOTATOR)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/sdk_integration_tests/tests/projects/test_users.py:23: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/project.py:299: in add_users
    return self._client.add_users(user_emails, user_role)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/client.py:882: in add_users
    users = self._querier.basic_setter(ProjectUsers, self._querier.resource_id, payload=payload)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:120: in basic_setter
    res, context = self._execute(request, retryable=retryable)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.12/site-packages/encord/http/querier.py:208: in _execute
    check_error_response(response, context, extra_payload)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

response = ['AUTHORISATION_ERROR']
context = RequestContext(timestamp='2026-03-11T17:35:33.334500+00:00', trace_id='cbe15b9783f2426192ad0288ba75d9b6', span_id='1', domain='https://dev.api.encord.com/')
payload = 'User(s) testuser1@cord.tech are not members of your organisation.'

    def check_error_response(response, context: Optional[RequestContext] = None, payload: Any = None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if response == AUTHENTICATION_ERROR:
            raise AuthenticationError("You are not authenticated to access the Encord platform.", context=context)
    
        if response == AUTHORISATION_ERROR:
>           raise AuthorisationError("You are not authorised to access this asset.", context=context)
E           encord.exceptions.AuthorisationError: You are not authorised to access this asset. timestamp='2026-03-11T17:35:33.334500+00:00' trace_id='cbe15b9783f2426192ad0288ba75d9b6' span_id='1' domain='https://dev.api.encord.com/'

.venv/lib/python3.12/site-packages/encord/http/error_utils.py:64: AuthorisationError

Check warning on line 0 in storage.test_storage_items_listing

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_storage_item_crud (storage.test_storage_items_listing) failed

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 18s]
Raw output
encord.exceptions.UnknownException: Unknown error timestamp='2026-03-11T17:41:38.189007+00:00' trace_id='770c4bfa76624de3aac9488fade8978f' span_id='1' domain='https://dev.api.encord.com'
storage_folder = <encord.storage.StorageFolder object at 0x7f3ce5726840>
extra_folder = <encord.storage.StorageFolder object at 0x7f3ce5494500>
video_in_folder = UUID('019cddfd-293c-7943-af44-6c01671ea111')
images_in_folder = [UUID('019cddfd-43e2-76d1-a846-4b3fd03e7e74'), UUID('019cddfd-5463-7cf1-a147-dbc787f17c11'), UUID('019cddfd-5a44-7850-8c85-0d200d89434e')]
ephemeral_user_client = <encord.user_client.EncordUserClient object at 0x7f3ce5698950>

    def test_storage_item_crud(
        storage_folder: StorageFolder,
        extra_folder: StorageFolder,
        video_in_folder: UUID,
        images_in_folder: list[UUID],
        ephemeral_user_client: EncordUserClient,
    ) -> None:
        video_item = ephemeral_user_client.get_storage_item(video_in_folder)
    
        new_item_name = "new item name"
        video_item.update(name=new_item_name)
    
        updated_item = ephemeral_user_client.get_storage_item(video_item.uuid)
        assert updated_item.name == new_item_name
        assert video_item.name == new_item_name
        assert video_item.description == ""
    
        updated_item_client_metadata = {"new": "metadata"}
        video_item.update(client_metadata=updated_item_client_metadata)
    
        updated_item = ephemeral_user_client.get_storage_item(video_item.uuid)
        assert updated_item.client_metadata == updated_item_client_metadata
        assert video_item.client_metadata == updated_item_client_metadata
    
>       video_item.update(name=VIDEO_FILE_NAME, client_metadata={})

src/sdk_integration_tests/tests/storage/test_storage_items_listing.py:358: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/storage.py:1956: in update
    self._orm_item = self._api_client.patch(
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:154: in patch
    return self._request_with_payload(
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:200: in _request_with_payload
    return self._request(
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:256: in _request
    self._handle_error(res, context)
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:302: in _handle_error
    raise e
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:295: in _handle_error
    handle_error_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

status_code = 500
response_headers = {'date': 'Wed, 11 Mar 2026 17:41:37 GMT', 'Content-Length': '192', 'content-type': 'application/json', 'via': '1.1 goo...; includeSubDomains', 'x-content-type-options': 'nosniff', 'Alt-Svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000'}
message = 'Unknown error'
context = RequestContext(timestamp='2026-03-11T17:41:38.189007+00:00', trace_id='770c4bfa76624de3aac9488fade8978f', span_id='1', domain='https://dev.api.encord.com')

    def handle_error_response(status_code: int, response_headers: Mapping[str, str], message=None, context=None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if status_code == HTTP_UNAUTHORIZED:
            raise AuthenticationError(
                message or "You are not authenticated to access the Encord platform.", context=context
            )
    
        if status_code == HTTP_FORBIDDEN:
            raise AuthorisationError(message or "You are not authorised to access this asset.", context=context)
    
        if status_code == HTTP_NOT_FOUND:
            raise ResourceNotFoundError("The requested resource was not found.", context=context)
    
        if status_code == HTTP_METHOD_NOT_ALLOWED:
            raise MethodNotAllowedError("HTTP method is not allowed.", context=context)
    
        if status_code == HTTP_BAD_REQUEST:
            raise InvalidArgumentsError(message or "Provided payload is invalid and can't be processed.", context=context)
    
        if status_code == HTTP_PAYLOAD_TOO_LARGE:
            raise PayloadTooLargeError(
                message or "Request payload is too large and exceeds the maximum allowed size.", context=context
            )
    
        if status_code == HTTP_TOO_MANY_REQUESTS:
            retry_after_header = response_headers.get("Retry-After", "")
            retry_after = int(retry_after_header) if retry_after_header.isdigit() else None
            raise RateLimitExceededError(retry_after=retry_after, context=context)
    
>       raise UnknownException(message or "An unknown error occurred.", context=context)
E       encord.exceptions.UnknownException: Unknown error timestamp='2026-03-11T17:41:38.189007+00:00' trace_id='770c4bfa76624de3aac9488fade8978f' span_id='1' domain='https://dev.api.encord.com'

.venv/lib/python3.12/site-packages/encord/http/v2/error_utils.py:55: UnknownException

Check warning on line 0 in storage.test_storage_items_listing

See this annotation in the file changed.

@github-actions github-actions / SDK integration test report

test_storage_item_reset_client_metadata (storage.test_storage_items_listing) failed

./encord-backend/projects/sdk-integration-tests/integration-test-report-python3_13.xml [took 5s]
Raw output
encord.exceptions.UnknownException: Unknown error timestamp='2026-03-11T17:41:39.511899+00:00' trace_id='88ece23edc964d8b83097788b453b8d5' span_id='1' domain='https://dev.api.encord.com'
video_in_folder = UUID('019cddfd-5fb7-7750-96b6-4906529acacb')
ephemeral_user_client = <encord.user_client.EncordUserClient object at 0x7fb713fab3e0>

    def test_storage_item_reset_client_metadata(
        video_in_folder: UUID,
        ephemeral_user_client: EncordUserClient,
    ) -> None:
        video_item = ephemeral_user_client.get_storage_item(video_in_folder)
        video_item.update(client_metadata=CLIENT_METADATA)
>       video_item.update(client_metadata={})

src/sdk_integration_tests/tests/storage/test_storage_items_listing.py:540: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.12/site-packages/encord/storage.py:1956: in update
    self._orm_item = self._api_client.patch(
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:154: in patch
    return self._request_with_payload(
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:200: in _request_with_payload
    return self._request(
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:256: in _request
    self._handle_error(res, context)
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:302: in _handle_error
    raise e
.venv/lib/python3.12/site-packages/encord/http/v2/api_client.py:295: in _handle_error
    handle_error_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

status_code = 500
response_headers = {'date': 'Wed, 11 Mar 2026 17:41:38 GMT', 'Content-Length': '192', 'content-type': 'application/json', 'via': '1.1 goo...; includeSubDomains', 'x-content-type-options': 'nosniff', 'Alt-Svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000'}
message = 'Unknown error'
context = RequestContext(timestamp='2026-03-11T17:41:39.511899+00:00', trace_id='88ece23edc964d8b83097788b453b8d5', span_id='1', domain='https://dev.api.encord.com')

    def handle_error_response(status_code: int, response_headers: Mapping[str, str], message=None, context=None):
        """Checks server response.
        Called if HTTP response status code is an error response.
        """
        if status_code == HTTP_UNAUTHORIZED:
            raise AuthenticationError(
                message or "You are not authenticated to access the Encord platform.", context=context
            )
    
        if status_code == HTTP_FORBIDDEN:
            raise AuthorisationError(message or "You are not authorised to access this asset.", context=context)
    
        if status_code == HTTP_NOT_FOUND:
            raise ResourceNotFoundError("The requested resource was not found.", context=context)
    
        if status_code == HTTP_METHOD_NOT_ALLOWED:
            raise MethodNotAllowedError("HTTP method is not allowed.", context=context)
    
        if status_code == HTTP_BAD_REQUEST:
            raise InvalidArgumentsError(message or "Provided payload is invalid and can't be processed.", context=context)
    
        if status_code == HTTP_PAYLOAD_TOO_LARGE:
            raise PayloadTooLargeError(
                message or "Request payload is too large and exceeds the maximum allowed size.", context=context
            )
    
        if status_code == HTTP_TOO_MANY_REQUESTS:
            retry_after_header = response_headers.get("Retry-After", "")
            retry_after = int(retry_after_header) if retry_after_header.isdigit() else None
            raise RateLimitExceededError(retry_after=retry_after, context=context)
    
>       raise UnknownException(message or "An unknown error occurred.", context=context)
E       encord.exceptions.UnknownException: Unknown error timestamp='2026-03-11T17:41:39.511899+00:00' trace_id='88ece23edc964d8b83097788b453b8d5' span_id='1' domain='https://dev.api.encord.com'

.venv/lib/python3.12/site-packages/encord/http/v2/error_utils.py:55: UnknownException