extralit-server 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {extralit_server-0.2.0 → extralit_server-0.2.1}/PKG-INFO +1 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/pyproject.toml +4 -3
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/_version.py +1 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/3fc3c0839959_create_suggestions_table.py +2 -2
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py +2 -2
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/authentication.py +4 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/workspaces.py +3 -3
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/datasets/records.py +45 -29
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/documents.py +34 -15
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/files.py +12 -6
- extralit_server-0.2.1/src/argilla_server/apis/v1/handlers/models.py +81 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/workspaces.py +7 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/create.py +3 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/search_engine/reindex.py +11 -3
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/datasets.py +7 -14
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/files.py +31 -28
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/models/database.py +17 -6
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/policies.py +5 -13
- extralit_server-0.2.1/src/argilla_server/schemas/v1/documents.py +32 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/files.py +1 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/questions.py +10 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/validators/responses.py +3 -4
- extralit_server-0.2.1/tests/.pytest_cache/.gitignore +2 -0
- extralit_server-0.2.1/tests/.pytest_cache/CACHEDIR.TAG +4 -0
- extralit_server-0.2.1/tests/.pytest_cache/README.md +8 -0
- extralit_server-0.2.1/tests/.pytest_cache/v/cache/stepwise +1 -0
- extralit_server-0.2.1/tests/.pytest_cache/v/randomly_seed +1 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/conftest.py +11 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/factories.py +72 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_workspaces.py +5 -3
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py +1 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/test_questions.py +3 -3
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/responses/test_update_response.py +69 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_datasets.py +225 -35
- extralit_server-0.2.1/tests/unit/api/v1/test_documents.py +166 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_fields.py +10 -8
- extralit_server-0.2.1/tests/unit/api/v1/test_files.py +159 -0
- extralit_server-0.2.1/tests/unit/api/v1/test_models.py +99 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_questions.py +6 -9
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/test_datasets.py +8 -3
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/search_engine/test_commons.py +1 -1
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/search_engine/test_elastisearch.py +5 -0
- extralit_server-0.2.0/src/argilla_server/apis/v1/handlers/models.py +0 -60
- extralit_server-0.2.0/src/argilla_server/schemas/v1/documents.py +0 -33
- {extralit_server-0.2.0 → extralit_server-0.2.1}/README.md +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/__main__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/_app.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/_messages.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/env.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/script.py.mako +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/3ff6484f8b37_add_record_metadata_column.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/74694870197c_create_users_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/8be56284dac0_create_records_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/8c574ada5e5f_update_enum_columns.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/ae5522b4c674_create_fields_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/b9099dc08489_create_datasets_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/bda6fe24314e_create_vectors_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic/versions/e402e9d9245e_create_responses_table.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/alembic.ini +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/errors/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/errors/v1/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/errors/v1/exception_handlers.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/routes.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/info.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/metrics.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/records_search.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/records_update.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/text2text.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/text_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/text_classification_dataset_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/token_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/token_classification_dataset_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/helpers.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/commons/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/commons/model.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/commons/params.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/dataset_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/text2text.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/text_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/models/token_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/validators/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/validators/commons.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/validators/text_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/validators/token_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/authentication.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/datasets/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/datasets/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/datasets/questions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/datasets/records_bulk.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/fields.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/info.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/metadata_properties.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/oauth2.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/questions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/responses.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/suggestions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/vectors_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/bulk/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/bulk/records_bulk.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/__main__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/__main__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/migrate.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/revisions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/__main__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/create_default.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/migrate.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/update.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/rich.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/search_engine/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/search_engine/__main__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/start.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/typer_ext.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/commons/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/commons/config.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/commons/models.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/constants.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/accounts.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/info.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/questions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/search.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/contexts/settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/client_adapters/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/client_adapters/base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/client_adapters/elasticsearch.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/client_adapters/factory.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/client_adapters/opensearch.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/generic_elastic.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/helpers.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/stopwords/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/stopwords/english.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/text2text.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/text_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/mappings/token_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/metrics/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/metrics/base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/metrics/commons.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/metrics/text_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/metrics/token_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/query_helpers.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/search/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/search/model.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/backend/search/query_builder.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/models/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/models/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/models/records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/daos/records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/database.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/enums.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/errors/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/errors/base_errors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/errors/error_handler.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/errors/future/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/errors/future/base_errors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/errors/task_errors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/helpers.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/logging.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/models/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/models/base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/models/metadata_properties.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/models/mixins.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/models/suggestions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/pydantic_v1/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/pydantic_v1/errors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/pydantic_v1/generics.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/pydantic_v1/utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v0/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v0/authentication.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v0/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v0/users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v0/workspaces.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/fields.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/info.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/metadata_properties.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/oauth2.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/records_bulk.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/responses.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/suggestions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/vector_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/vectors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/schemas/v1/workspaces.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/search_engine/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/search_engine/base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/search_engine/commons.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/search_engine/elasticsearch.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/search_engine/opensearch.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/claims.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/db/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/db/api_key_backend.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/db/bearer_token_backend.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/jwt.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/oauth2/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/oauth2/auth_backend.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/oauth2/client_provider.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/oauth2/settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/oauth2/supported_providers.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/provider.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/authentication/userinfo.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/model.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/security/settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/server.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/info.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/metrics/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/metrics/models.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/metrics/service.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/search/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/search/model.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/search/service.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/storage/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/storage/service.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/commons/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/commons/models.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/text2text/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/text2text/models.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/text2text/service.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/text_classification/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/text_classification/metrics.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/text_classification/model.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/text_classification/service.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/token_classification/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/token_classification/metrics.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/token_classification/model.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/services/tasks/token_classification/service.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/static_rewrite.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/telemetry.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/use_cases/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/use_cases/responses/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/use_cases/responses/upsert_responses_in_bulk.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/utils/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/utils/_telemetry.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/utils/dependency.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/utils/params.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/utils/span_utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/utils/utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/validators/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/validators/questions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/validators/records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/validators/response_values.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/validators/suggestions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/validators/vectors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/database.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/pydantic_v1/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/pydantic_v1/generics.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/pydantic_v1/utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/test_docs.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/test_not_found_routes.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_authentication.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_info.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_metrics.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_records_get.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_records_update.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_security_token.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_text2text.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_text_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_text_classification_api_rules.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_text_classification_dataset_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_token_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_token_classification_dataset_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v0/test_users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/authentication/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/authentication/test_create_token.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/questions/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/questions/test_create_dataset_question.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/questions/test_list_dataset_questions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/records_bulk/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/records_bulk/test_dataset_records_bulk.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/test_create_dataset_records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/records/test_update_dataset_records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/test_create_dataset_question.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/test_create_dataset_vector_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/test_get_dataset_progress.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/test_list_dataset_records_search_suggestions_options.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/test_search_current_user_dataset_records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/datasets/test_search_dataset_records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/info/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/info/test_get_status.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/info/test_get_version.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/questions/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/questions/test_update_question.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/records/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/records/test_create_record_response.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/records/test_upsert_suggestion.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/responses/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/responses/test_create_current_user_responses_bulk.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/settings/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/settings/test_get_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_list_dataset_records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_metadata_properties.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_oauth2.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_responses.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_suggestions.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_vectors_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/test_workspaces.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/users/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/users/test_create_user.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/users/test_delete_user.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/users/test_get_current_user.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/users/test_get_user.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/users/test_list_users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/workspaces/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/workspaces/test_create_workspace.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/workspaces/test_create_workspace_user.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/workspaces/test_delete_workspace_user.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/api/v1/workspaces/test_list_workspace_users.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/conftest.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/conftest.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_create.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_create_default.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_migrate.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_update.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_user_files/users.yml +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_user_files/users_invalid_workspace.yml +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/database/users/test_user_files/users_one.yml +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/search_engine/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/search_engine/conftest.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/search_engine/test_reindex.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/cli/test_start.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/commons/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/commons/test_records_dao.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/commons/test_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/commons/test_telemetry.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/conftest.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/contexts/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/contexts/search/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/contexts/search/test_search_records_query_validator.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/backend/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/backend/test_es_client.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/backend/test_generic_elastic_engine.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/backend/test_query_builder.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/models/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/daos/models/test_records.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/errors/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/errors/test_api_errors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/errors/test_errors.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/models/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/models/old_models/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/models/old_models/test_datasets.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/models/old_models/test_text2text.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/models/old_models/test_text_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/models/old_models/test_token_classification.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/models/test_base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/schemas/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/schemas/test_base.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/schemas/v1/responses/test_response_value_create.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/search_engine/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/search_engine/conftest.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/search_engine/test_opensearch.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/security/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/security/authentication/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/security/authentication/oauth2/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/security/authentication/oauth2/test_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/security/test_model.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/security/test_settings.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/test_app.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/test_logging.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/test_utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/utils/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/utils/test_dependency.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/utils/test_span_utils.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/validators/__init__.py +0 -0
- {extralit_server-0.2.0 → extralit_server-0.2.1}/tests/unit/validators/test_records_bulk.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: extralit-server
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Open-source tool for accurate & fast scientific literature data extraction with LLM and human-in-the-loop.
|
|
5
5
|
Keywords: literature-review,data-annotation,artificial-intelligence,machine-learning,human-in-the-loop,mlops
|
|
6
6
|
Home-page: https://www.argilla.io
|
|
@@ -48,7 +48,7 @@ dependencies = [
|
|
|
48
48
|
"packaging>=23.2",
|
|
49
49
|
"minio>=7.2.7",
|
|
50
50
|
]
|
|
51
|
-
version = "0.2.
|
|
51
|
+
version = "0.2.1"
|
|
52
52
|
|
|
53
53
|
[project.license]
|
|
54
54
|
text = "Apache-2.0"
|
|
@@ -91,6 +91,7 @@ test = [
|
|
|
91
91
|
"pytest>=7.4.4",
|
|
92
92
|
"pytest-cov>=4.1.0",
|
|
93
93
|
"pytest-mock>=3.12.0",
|
|
94
|
+
"pytest-xdist>=3.6.0",
|
|
94
95
|
"pytest-asyncio~=0.21.1",
|
|
95
96
|
"pytest-env>=1.1.3",
|
|
96
97
|
"factory-boy~=3.2.1",
|
|
@@ -117,10 +118,10 @@ cmd = "pytest"
|
|
|
117
118
|
env_file = ".env.test"
|
|
118
119
|
|
|
119
120
|
[tool.pdm.scripts.build-server-image]
|
|
120
|
-
shell = "cp -R dist docker/server && docker build -t extralit/
|
|
121
|
+
shell = "cp -R dist docker/server && docker build -t extralit/argilla-server:local docker/server"
|
|
121
122
|
|
|
122
123
|
[tool.pdm.scripts.build-quickstart-image]
|
|
123
|
-
shell = "docker build --build-arg ARGILLA_VERSION=local -t extralit/
|
|
124
|
+
shell = "docker build --build-arg ARGILLA_VERSION=local -t extralit/argilla-quickstart:local docker/quickstart"
|
|
124
125
|
|
|
125
126
|
[tool.pytest.ini_options]
|
|
126
127
|
log_format = "%(asctime)s %(name)s %(levelname)s %(message)s"
|
|
@@ -28,7 +28,7 @@ down_revision = "8c574ada5e5f"
|
|
|
28
28
|
branch_labels = None
|
|
29
29
|
depends_on = None
|
|
30
30
|
|
|
31
|
-
suggestion_type_enum = sa.Enum("model", "human", name="suggestion_type_enum")
|
|
31
|
+
suggestion_type_enum = sa.Enum("model", "human", "selection", name="suggestion_type_enum")
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def upgrade() -> None:
|
|
@@ -47,7 +47,7 @@ def upgrade() -> None:
|
|
|
47
47
|
sa.ForeignKeyConstraint(["question_id"], ["questions.id"], ondelete="CASCADE"),
|
|
48
48
|
sa.ForeignKeyConstraint(["record_id"], ["records.id"], ondelete="CASCADE"),
|
|
49
49
|
sa.PrimaryKeyConstraint("id"),
|
|
50
|
-
sa.UniqueConstraint("record_id", "question_id",
|
|
50
|
+
sa.UniqueConstraint("record_id", "question_id", name="suggestion_record_id_question_id_uq"),
|
|
51
51
|
)
|
|
52
52
|
op.create_index(op.f("ix_suggestions_question_id"), "suggestions", ["question_id"], unique=False)
|
|
53
53
|
op.create_index(op.f("ix_suggestions_record_id"), "suggestions", ["record_id"], unique=False)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""add Document model and update Record model
|
|
2
2
|
|
|
3
3
|
Revision ID: 7552df94427a
|
|
4
4
|
Revises: ca7293c38970
|
|
@@ -11,7 +11,7 @@ from sqlalchemy.dialects import postgresql
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
revision = '7552df94427a'
|
|
14
|
-
down_revision = 'ca7293c38970' # set to latest revision identifiers on updates from from argilla-io/argilla upstream repo.
|
|
14
|
+
down_revision = 'ca7293c38970' # TODO set to latest revision identifiers on updates from from argilla-io/argilla upstream repo.
|
|
15
15
|
branch_labels = None
|
|
16
16
|
depends_on = None
|
|
17
17
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from fastapi import APIRouter, Depends
|
|
15
|
+
from fastapi import APIRouter, Depends, HTTPException, status
|
|
16
16
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
17
17
|
|
|
18
18
|
from argilla_server.contexts import accounts
|
|
@@ -29,6 +29,9 @@ router = APIRouter(tags=["Authentication"])
|
|
|
29
29
|
async def create_access_token(
|
|
30
30
|
db: AsyncSession = Depends(get_async_db), form: UserPasswordRequestForm = Depends()
|
|
31
31
|
) -> Token:
|
|
32
|
+
if not form.username or not form.password:
|
|
33
|
+
raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail="Password cannot be empty")
|
|
34
|
+
|
|
32
35
|
user = await accounts.authenticate_user(db, form.username, form.password)
|
|
33
36
|
if not user:
|
|
34
37
|
raise UnauthorizedError()
|
{extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v0/handlers/workspaces.py
RENAMED
|
@@ -22,7 +22,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
22
22
|
|
|
23
23
|
from argilla_server.contexts import accounts, files
|
|
24
24
|
from argilla_server.database import get_async_db
|
|
25
|
-
from argilla_server.errors import EntityAlreadyExistsError, EntityNotFoundError
|
|
25
|
+
from argilla_server.errors import EntityAlreadyExistsError, EntityNotFoundError, GenericServerError
|
|
26
26
|
from argilla_server.errors.future import NotUniqueError
|
|
27
27
|
from argilla_server.policies import WorkspacePolicy, WorkspaceUserPolicy, authorize
|
|
28
28
|
from argilla_server.pydantic_v1 import parse_obj_as
|
|
@@ -46,11 +46,11 @@ async def create_workspace(
|
|
|
46
46
|
try:
|
|
47
47
|
files.create_bucket(minio_client, workspace_create.name)
|
|
48
48
|
except Exception as e:
|
|
49
|
-
raise e
|
|
49
|
+
raise GenericServerError(e)
|
|
50
50
|
|
|
51
51
|
try:
|
|
52
52
|
workspace = await accounts.create_workspace(db, workspace_create.dict())
|
|
53
|
-
except NotUniqueError:
|
|
53
|
+
except NotUniqueError as e:
|
|
54
54
|
_LOGGER.error(f"Could not create workspace '{workspace_create.name}': {e}")
|
|
55
55
|
raise EntityAlreadyExistsError(name=workspace_create.name, type=Workspace)
|
|
56
56
|
|
|
@@ -29,7 +29,7 @@ from argilla_server.database import get_async_db
|
|
|
29
29
|
from argilla_server.enums import MetadataPropertyType, RecordSortField, ResponseStatus, ResponseStatusFilter, SortOrder
|
|
30
30
|
from argilla_server.errors.future.base_errors import MISSING_VECTOR_ERROR_CODE
|
|
31
31
|
from argilla_server.models import Dataset as DatasetModel
|
|
32
|
-
from argilla_server.models import Record, User, Suggestion
|
|
32
|
+
from argilla_server.models import Record, User, Suggestion, Response, Question
|
|
33
33
|
from argilla_server.policies import DatasetPolicyV1, RecordPolicyV1, authorize, is_authorized
|
|
34
34
|
from argilla_server.schemas.v1.datasets import Dataset
|
|
35
35
|
from argilla_server.schemas.v1.records import (
|
|
@@ -128,7 +128,7 @@ async def _filter_records_using_search_engine(
|
|
|
128
128
|
user=user,
|
|
129
129
|
parsed_metadata=parsed_metadata,
|
|
130
130
|
response_statuses=response_statuses,
|
|
131
|
-
sort_by_query_param=sort_by_query_param
|
|
131
|
+
sort_by_query_param=sort_by_query_param,
|
|
132
132
|
)
|
|
133
133
|
|
|
134
134
|
record_ids = [response.record_id for response in search_responses.items]
|
|
@@ -397,43 +397,59 @@ async def _get_vector_settings_by_name_or_raise(
|
|
|
397
397
|
return vector_settings
|
|
398
398
|
|
|
399
399
|
|
|
400
|
-
def
|
|
401
|
-
records:
|
|
400
|
+
def add_suggestions_from_responses(
|
|
401
|
+
records: List[Record],
|
|
402
402
|
current_user: User,
|
|
403
403
|
workspace_users: List[User],
|
|
404
404
|
dataset: Dataset,
|
|
405
|
-
|
|
405
|
+
) -> Records:
|
|
406
406
|
user_id2name = {user.id: user.username for user in workspace_users.items}
|
|
407
|
-
|
|
407
|
+
questions_name_map = {question.name: question for question in dataset.questions}
|
|
408
408
|
|
|
409
409
|
for record in records:
|
|
410
410
|
suggestion_responses = [response for response in record.responses \
|
|
411
411
|
if response.user_id != current_user.id]
|
|
412
412
|
|
|
413
413
|
for response in suggestion_responses:
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
for question_name, suggestion_value in response.values.items():
|
|
417
|
-
if question_name not in question_name2id or \
|
|
418
|
-
not suggestion_value or not suggestion_value.get("value"): continue
|
|
419
|
-
question = question_name2id.get(question_name)
|
|
420
|
-
|
|
421
|
-
suggestion = Suggestion(
|
|
422
|
-
id=response.id,
|
|
423
|
-
question_id=question.id,
|
|
424
|
-
type="human",
|
|
425
|
-
value=suggestion_value.get("value"),
|
|
426
|
-
agent=user_id2name.get(response.user_id),
|
|
427
|
-
score=None,
|
|
428
|
-
inserted_at=response.inserted_at,
|
|
429
|
-
updated_at=response.updated_at
|
|
430
|
-
)
|
|
431
|
-
record.suggestions.append(suggestion)
|
|
414
|
+
suggestions = generate_suggestions_from_response(response, current_user, questions_name_map, user_id2name)
|
|
415
|
+
record.suggestions.extend(suggestions)
|
|
432
416
|
|
|
433
417
|
if record.responses and record.responses[0].user_id == current_user.id:
|
|
434
418
|
record.responses = [record.responses[0]]
|
|
435
419
|
else:
|
|
436
420
|
record.responses = []
|
|
421
|
+
|
|
422
|
+
return records
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
def generate_suggestions_from_response(
|
|
426
|
+
response: Response,
|
|
427
|
+
current_user: User,
|
|
428
|
+
questions_name_map: Dict[str, Question],
|
|
429
|
+
workspace_users_id2name: Dict[UUID, str]
|
|
430
|
+
) -> List[Suggestion]:
|
|
431
|
+
suggestions = []
|
|
432
|
+
if response.user_id == current_user.id or response.status == ResponseStatus.discarded:
|
|
433
|
+
return suggestions
|
|
434
|
+
|
|
435
|
+
for question_name, suggestion_value in response.values.items():
|
|
436
|
+
if question_name not in questions_name_map or not suggestion_value or not suggestion_value.get("value"):
|
|
437
|
+
continue
|
|
438
|
+
question = questions_name_map.get(question_name)
|
|
439
|
+
|
|
440
|
+
suggestion = Suggestion(
|
|
441
|
+
id=response.id,
|
|
442
|
+
question_id=question.id,
|
|
443
|
+
type="human",
|
|
444
|
+
value=suggestion_value.get("value"),
|
|
445
|
+
agent=workspace_users_id2name.get(response.user_id),
|
|
446
|
+
score=None,
|
|
447
|
+
inserted_at=response.inserted_at,
|
|
448
|
+
updated_at=response.updated_at
|
|
449
|
+
)
|
|
450
|
+
suggestions.append(suggestion)
|
|
451
|
+
|
|
452
|
+
return suggestions
|
|
437
453
|
|
|
438
454
|
|
|
439
455
|
@router.get("/me/datasets/{dataset_id}/records", response_model=Records, response_model_exclude_unset=True)
|
|
@@ -469,7 +485,7 @@ async def list_current_user_dataset_records(
|
|
|
469
485
|
user=current_user,
|
|
470
486
|
response_statuses=response_statuses,
|
|
471
487
|
include=include,
|
|
472
|
-
sort_by_query_param=sort_by_query_param
|
|
488
|
+
sort_by_query_param=sort_by_query_param,
|
|
473
489
|
workspace_user_ids=workspace_user_ids,
|
|
474
490
|
)
|
|
475
491
|
|
|
@@ -478,7 +494,7 @@ async def list_current_user_dataset_records(
|
|
|
478
494
|
record.metadata_ = await _filter_record_metadata_for_user(record, current_user)
|
|
479
495
|
|
|
480
496
|
if include and include.with_response_suggestions:
|
|
481
|
-
|
|
497
|
+
records = add_suggestions_from_responses(records, current_user, workspace_users, dataset)
|
|
482
498
|
|
|
483
499
|
return Records(items=records, total=total)
|
|
484
500
|
|
|
@@ -645,7 +661,7 @@ async def search_current_user_dataset_records(
|
|
|
645
661
|
offset=offset,
|
|
646
662
|
user=current_user,
|
|
647
663
|
response_statuses=response_statuses,
|
|
648
|
-
sort_by_query_param=sort_by_query_param
|
|
664
|
+
sort_by_query_param=sort_by_query_param,
|
|
649
665
|
)
|
|
650
666
|
|
|
651
667
|
record_id_score_map: Dict[UUID, Dict[str, Union[float, SearchRecord, None]]] = {
|
|
@@ -663,7 +679,7 @@ async def search_current_user_dataset_records(
|
|
|
663
679
|
)
|
|
664
680
|
|
|
665
681
|
if include and include.with_response_suggestions:
|
|
666
|
-
|
|
682
|
+
records = add_suggestions_from_responses(records, current_user, workspace_users, dataset)
|
|
667
683
|
|
|
668
684
|
for record in records:
|
|
669
685
|
record.dataset = dataset
|
|
@@ -713,7 +729,7 @@ async def search_dataset_records(
|
|
|
713
729
|
offset=offset,
|
|
714
730
|
parsed_metadata=metadata.metadata_parsed,
|
|
715
731
|
response_statuses=response_statuses,
|
|
716
|
-
sort_by_query_param=sort_by_query_param
|
|
732
|
+
sort_by_query_param=sort_by_query_param,
|
|
717
733
|
)
|
|
718
734
|
|
|
719
735
|
record_id_score_map = {
|
{extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/documents.py
RENAMED
|
@@ -5,7 +5,7 @@ from uuid import UUID
|
|
|
5
5
|
from typing import TYPE_CHECKING, Optional, List, Union
|
|
6
6
|
|
|
7
7
|
from argilla_server.schemas.v1.files import ObjectMetadata
|
|
8
|
-
from fastapi import APIRouter, Body, Depends, HTTPException, UploadFile, Path, status, Security
|
|
8
|
+
from fastapi import APIRouter, Body, Depends, File, HTTPException, UploadFile, Path, status, Security
|
|
9
9
|
from fastapi.responses import StreamingResponse
|
|
10
10
|
from minio import Minio
|
|
11
11
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
@@ -17,7 +17,7 @@ from argilla_server.security import auth
|
|
|
17
17
|
from argilla_server.policies import DocumentPolicy, authorize, is_authorized
|
|
18
18
|
from argilla_server.models import User
|
|
19
19
|
from argilla_server.contexts import accounts, datasets, files
|
|
20
|
-
from argilla_server.schemas.v1.documents import
|
|
20
|
+
from argilla_server.schemas.v1.documents import DocumentCreateRequest, DocumentDeleteRequest, DocumentListItem
|
|
21
21
|
|
|
22
22
|
if TYPE_CHECKING:
|
|
23
23
|
from argilla_server.models import Document
|
|
@@ -26,7 +26,7 @@ _LOGGER = logging.getLogger("documents")
|
|
|
26
26
|
|
|
27
27
|
router = APIRouter(tags=["documents"])
|
|
28
28
|
|
|
29
|
-
async def check_existing_document(db: AsyncSession, document_create:
|
|
29
|
+
async def check_existing_document(db: AsyncSession, document_create: DocumentCreateRequest):
|
|
30
30
|
# Add conditions for non-empty attributes
|
|
31
31
|
conditions = []
|
|
32
32
|
if document_create.pmid:
|
|
@@ -37,6 +37,8 @@ async def check_existing_document(db: AsyncSession, document_create: DocumentCre
|
|
|
37
37
|
conditions.append(Document.doi == document_create.doi)
|
|
38
38
|
if document_create.id:
|
|
39
39
|
conditions.append(Document.id == document_create.id)
|
|
40
|
+
if document_create.reference:
|
|
41
|
+
conditions.append(Document.reference == document_create.reference)
|
|
40
42
|
|
|
41
43
|
if not conditions:
|
|
42
44
|
return None
|
|
@@ -58,7 +60,8 @@ async def check_existing_document(db: AsyncSession, document_create: DocumentCre
|
|
|
58
60
|
@router.post("/documents", status_code=status.HTTP_201_CREATED, response_model=UUID)
|
|
59
61
|
async def upload_document(
|
|
60
62
|
*,
|
|
61
|
-
document_create:
|
|
63
|
+
document_create: DocumentCreateRequest = Depends(),
|
|
64
|
+
file_data: UploadFile = File(None),
|
|
62
65
|
db: AsyncSession = Depends(get_async_db),
|
|
63
66
|
client: Minio = Depends(files.get_minio_client),
|
|
64
67
|
current_user: User = Security(auth.get_current_user)
|
|
@@ -72,17 +75,33 @@ async def upload_document(
|
|
|
72
75
|
detail=f"Workspace with id `{document_create.workspace_id}` not found",
|
|
73
76
|
)
|
|
74
77
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
file_data_bytes = base64.b64decode(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
if file_data is not None:
|
|
79
|
+
object_path = files.get_pdf_s3_object_path(document_create.id)
|
|
80
|
+
existing_files = files.list_objects(client, workspace.name, prefix=object_path, include_version=False, recursive=False)
|
|
81
|
+
# file_data_bytes = base64.b64decode(file_data)
|
|
82
|
+
file_data_bytes = await file_data.read()
|
|
83
|
+
|
|
84
|
+
put_object = False
|
|
85
|
+
|
|
86
|
+
if existing_files.objects:
|
|
87
|
+
new_file_hash = files.compute_hash(file_data_bytes)
|
|
88
|
+
existing_hashes = [existing_file.etag.strip('"') for existing_file in existing_files.objects if existing_file.etag is not None]
|
|
89
|
+
|
|
90
|
+
if new_file_hash not in existing_hashes:
|
|
91
|
+
put_object = True
|
|
92
|
+
else:
|
|
93
|
+
put_object = True
|
|
83
94
|
|
|
84
|
-
if
|
|
95
|
+
if put_object:
|
|
96
|
+
|
|
97
|
+
response = files.put_object(
|
|
98
|
+
client, bucket=workspace.name, object=object_path, data=file_data_bytes,
|
|
99
|
+
size=len(file_data_bytes), content_type="application/pdf",
|
|
100
|
+
metadata=document_create.dict(include={"file_name": True, "pmid": True, "doi": True}))
|
|
101
|
+
|
|
85
102
|
document_create.url = files.get_s3_object_url(response.bucket_name, response.object_name)
|
|
103
|
+
if file_data.filename and not document_create.file_name:
|
|
104
|
+
document_create.file_name = file_data.filename
|
|
86
105
|
|
|
87
106
|
existing_document = await check_existing_document(db, document_create)
|
|
88
107
|
if existing_document is not None:
|
|
@@ -159,10 +178,10 @@ async def get_document_by_id(
|
|
|
159
178
|
return DocumentListItem.from_orm(document)
|
|
160
179
|
|
|
161
180
|
|
|
162
|
-
@router.delete("/documents/workspace/{workspace_id}", status_code=status.HTTP_200_OK)
|
|
181
|
+
@router.delete("/documents/workspace/{workspace_id}", status_code=status.HTTP_200_OK, response_model=int, description="Delete all documents by workspace_id, or a specific document by id, pmid, doi, or url")
|
|
163
182
|
async def delete_documents_by_workspace_id(*,
|
|
164
183
|
workspace_id: Union[UUID, str],
|
|
165
|
-
document_delete:
|
|
184
|
+
document_delete: DocumentDeleteRequest = Body(None),
|
|
166
185
|
db: AsyncSession = Depends(get_async_db),
|
|
167
186
|
client: Minio = Depends(files.get_minio_client),
|
|
168
187
|
current_user: User = Security(auth.get_current_user)
|
{extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/files.py
RENAMED
|
@@ -39,11 +39,11 @@ async def get_file(
|
|
|
39
39
|
)
|
|
40
40
|
except S3Error as se:
|
|
41
41
|
_LOGGER.error(f"Error getting object '{bucket}/{object}': {se}")
|
|
42
|
-
raise HTTPException(status_code=404, detail=f"No object at path '{bucket}/{object}' was found")
|
|
42
|
+
raise HTTPException(status_code=404, detail=f"No object at path '{bucket}/{object}' was found") from se
|
|
43
43
|
|
|
44
44
|
except Exception as e:
|
|
45
45
|
_LOGGER.error(f"Error getting object '{bucket}/{object}': {e}")
|
|
46
|
-
raise HTTPException(status_code=500, detail=str(e))
|
|
46
|
+
raise HTTPException(status_code=500, detail=str(e)) from e
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
@router.post("/file/{bucket}/{object:path}", response_model=ObjectMetadata)
|
|
@@ -64,7 +64,7 @@ async def put_file(
|
|
|
64
64
|
data=file.file, size=file.size, content_type=file.content_type)
|
|
65
65
|
return response
|
|
66
66
|
except S3Error as se:
|
|
67
|
-
raise HTTPException(status_code=500, detail="Internal server error")
|
|
67
|
+
raise HTTPException(status_code=500, detail="Internal server error") from se
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
@router.get("/files/{bucket}/{prefix:path}", response_model=ListObjectsResponse)
|
|
@@ -73,6 +73,8 @@ async def list_objects(
|
|
|
73
73
|
bucket: str,
|
|
74
74
|
prefix: str,
|
|
75
75
|
include_version=True,
|
|
76
|
+
recursive = True,
|
|
77
|
+
start_after: Optional[str] = None,
|
|
76
78
|
client: Minio = Depends(files.get_minio_client),
|
|
77
79
|
current_user: User = Security(auth.get_current_user),
|
|
78
80
|
):
|
|
@@ -80,10 +82,14 @@ async def list_objects(
|
|
|
80
82
|
await authorize(current_user, FilePolicy.list(bucket))
|
|
81
83
|
|
|
82
84
|
try:
|
|
83
|
-
objects = files.list_objects(client, bucket, prefix=prefix, include_version=include_version)
|
|
85
|
+
objects = files.list_objects(client, bucket, prefix=prefix, include_version=include_version, recursive=recursive, start_after=start_after)
|
|
84
86
|
return objects
|
|
85
87
|
except S3Error as se:
|
|
86
|
-
|
|
88
|
+
_LOGGER.error(f"Error listing objects in '{bucket}/{prefix}': {se}")
|
|
89
|
+
if se.code == "NoSuchBucket":
|
|
90
|
+
raise HTTPException(status_code=404, detail=f"Bucket '{bucket}' not found, please run `rg.Workspace.create('{bucket}')` to create the S3 bucket.") from se
|
|
91
|
+
else:
|
|
92
|
+
raise HTTPException(status_code=404, detail=f"Cannot list objects as '{bucket}/{prefix}' is not found") from se
|
|
87
93
|
except Exception as e:
|
|
88
94
|
raise e
|
|
89
95
|
|
|
@@ -106,7 +112,7 @@ async def delete_files(
|
|
|
106
112
|
files.delete_object(client, bucket, object, version_id=version_id)
|
|
107
113
|
return {"message": "File deleted"}
|
|
108
114
|
except S3Error as se:
|
|
109
|
-
raise HTTPException(status_code=500, detail="Internal server error")
|
|
115
|
+
raise HTTPException(status_code=500, detail="Internal server error") from se
|
|
110
116
|
except Exception as e:
|
|
111
117
|
raise e
|
|
112
118
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from urllib.parse import urljoin
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
from fastapi import APIRouter, Depends, HTTPException
|
|
6
|
+
from starlette.requests import Request
|
|
7
|
+
from starlette.responses import StreamingResponse
|
|
8
|
+
|
|
9
|
+
from argilla_server.models import User
|
|
10
|
+
from argilla_server.policies import _exists_workspace_user_by_user_and_workspace_name
|
|
11
|
+
from argilla_server.security import auth
|
|
12
|
+
from argilla_server.settings import settings
|
|
13
|
+
from argilla_server.errors import UnauthorizedError, BadRequestError
|
|
14
|
+
|
|
15
|
+
_LOGGER = logging.getLogger("models")
|
|
16
|
+
|
|
17
|
+
router = APIRouter(tags=["models"])
|
|
18
|
+
|
|
19
|
+
client = httpx.AsyncClient(timeout=10.0)
|
|
20
|
+
|
|
21
|
+
@router.api_route("/models/{rest_of_path:path}",
|
|
22
|
+
methods=["GET", "POST", "PUT", "DELETE"],
|
|
23
|
+
response_class=StreamingResponse)
|
|
24
|
+
async def proxy(request: Request, rest_of_path: str,
|
|
25
|
+
current_user: User = Depends(auth.get_current_user)):
|
|
26
|
+
url = urljoin(settings.extralit_url, rest_of_path)
|
|
27
|
+
params = dict(request.query_params)
|
|
28
|
+
|
|
29
|
+
print(f'PROXY {url} {params}', end='')
|
|
30
|
+
_LOGGER.info('PROXY %s %s', url, params)
|
|
31
|
+
|
|
32
|
+
if 'workspace' not in params or not params['workspace']:
|
|
33
|
+
raise BadRequestError("`workspace` is required in query parameters")
|
|
34
|
+
|
|
35
|
+
if current_user:
|
|
36
|
+
params['username'] = current_user.username
|
|
37
|
+
|
|
38
|
+
if current_user.role != "owner" and not await _exists_workspace_user_by_user_and_workspace_name(current_user, params['workspace']):
|
|
39
|
+
raise UnauthorizedError(f"{current_user.username} is not authorized to access workspace {params['workspace']}")
|
|
40
|
+
|
|
41
|
+
if request.method == "GET":
|
|
42
|
+
proxy_request = client.build_request("GET", url, params=params)
|
|
43
|
+
elif request.method == "POST":
|
|
44
|
+
data = await request.json()
|
|
45
|
+
print(data)
|
|
46
|
+
proxy_request = client.build_request("POST", url, json=data, params=params)
|
|
47
|
+
elif request.method == "PUT":
|
|
48
|
+
data = await request.json()
|
|
49
|
+
print(data)
|
|
50
|
+
proxy_request = client.build_request("PUT", url, data=data, params=params)
|
|
51
|
+
elif request.method == "DELETE":
|
|
52
|
+
proxy_request = client.build_request("DELETE", url, params=params)
|
|
53
|
+
else:
|
|
54
|
+
return {"message": "Method not supported"}
|
|
55
|
+
|
|
56
|
+
async def stream_response():
|
|
57
|
+
try:
|
|
58
|
+
response = await client.send(proxy_request, stream=True)
|
|
59
|
+
async for chunk in response.aiter_raw():
|
|
60
|
+
yield chunk
|
|
61
|
+
except httpx.ReadTimeout as exc:
|
|
62
|
+
_LOGGER.error("Request to %s timed out.", exc.request.url)
|
|
63
|
+
yield b"Request timed out."
|
|
64
|
+
except httpx.TimeoutException as exc:
|
|
65
|
+
_LOGGER.error("Request to %s timed out.", exc.request.url)
|
|
66
|
+
yield b"Request timed out."
|
|
67
|
+
except httpx.RequestError as exc:
|
|
68
|
+
_LOGGER.error("An error occurred while requesting %s: %s", exc.request.url, exc)
|
|
69
|
+
yield b"An error occurred while processing the request."
|
|
70
|
+
|
|
71
|
+
return StreamingResponse(stream_response(), media_type="text/event-stream")
|
|
72
|
+
|
|
73
|
+
@router.on_event("startup")
|
|
74
|
+
async def startup_event():
|
|
75
|
+
global client
|
|
76
|
+
if client is None:
|
|
77
|
+
client = httpx.AsyncClient(timeout=10.0)
|
|
78
|
+
|
|
79
|
+
@router.on_event("shutdown")
|
|
80
|
+
async def shutdown():
|
|
81
|
+
await client.aclose()
|
{extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/apis/v1/handlers/workspaces.py
RENAMED
|
@@ -21,7 +21,7 @@ from minio import Minio
|
|
|
21
21
|
from argilla_server import models
|
|
22
22
|
from argilla_server.contexts import accounts, datasets, files
|
|
23
23
|
from argilla_server.database import get_async_db
|
|
24
|
-
from argilla_server.errors import EntityAlreadyExistsError
|
|
24
|
+
from argilla_server.errors import EntityAlreadyExistsError, GenericServerError
|
|
25
25
|
from argilla_server.errors.future import NotUniqueError
|
|
26
26
|
from argilla_server.models import User
|
|
27
27
|
from argilla_server.policies import WorkspacePolicyV1, WorkspaceUserPolicyV1, authorize
|
|
@@ -58,9 +58,15 @@ async def create_workspace(
|
|
|
58
58
|
db: AsyncSession = Depends(get_async_db),
|
|
59
59
|
workspace_create: WorkspaceCreate,
|
|
60
60
|
current_user: models.User = Security(auth.get_current_user),
|
|
61
|
+
minio_client: Minio = Depends(files.get_minio_client),
|
|
61
62
|
):
|
|
62
63
|
await authorize(current_user, WorkspacePolicyV1.create)
|
|
63
64
|
|
|
65
|
+
try:
|
|
66
|
+
files.create_bucket(minio_client, workspace_create.name)
|
|
67
|
+
except Exception as e:
|
|
68
|
+
raise GenericServerError(e)
|
|
69
|
+
|
|
64
70
|
try:
|
|
65
71
|
workspace = await accounts.create_workspace(db, workspace_create.dict())
|
|
66
72
|
except NotUniqueError as e:
|
{extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/database/users/create.py
RENAMED
|
@@ -72,7 +72,9 @@ async def _create(
|
|
|
72
72
|
typer.echo(f"User with username {username!r} already exists in database. Skipping...")
|
|
73
73
|
return
|
|
74
74
|
|
|
75
|
-
if
|
|
75
|
+
if not api_key:
|
|
76
|
+
api_key = None
|
|
77
|
+
elif await accounts.get_user_by_api_key(session, api_key):
|
|
76
78
|
typer.echo(f"User with api_key {api_key!r} already exists in database. Skipping...")
|
|
77
79
|
return
|
|
78
80
|
|
{extralit_server-0.2.0 → extralit_server-0.2.1}/src/argilla_server/cli/search_engine/reindex.py
RENAMED
|
@@ -132,9 +132,17 @@ async def _reindex_datasets(db: AsyncSession, search_engine: SearchEngine, progr
|
|
|
132
132
|
task = progress.add_task(f"reindexing feedback datasets...", total=await Reindexer.count_datasets(db))
|
|
133
133
|
|
|
134
134
|
async for dataset in Reindexer.reindex_datasets(db, search_engine):
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
try:
|
|
136
|
+
await _reindex_dataset_records(db, search_engine, progress, dataset)
|
|
137
|
+
except Exception as e:
|
|
138
|
+
echo_in_panel(
|
|
139
|
+
f"Failed to reindex dataset `{dataset.name}`: {str(e)}",
|
|
140
|
+
title="Reindexing Error",
|
|
141
|
+
title_align="left",
|
|
142
|
+
success=False,
|
|
143
|
+
)
|
|
144
|
+
finally:
|
|
145
|
+
progress.advance(task)
|
|
138
146
|
|
|
139
147
|
|
|
140
148
|
async def _reindex_dataset_records(
|
|
@@ -81,7 +81,7 @@ from argilla_server.schemas.v1.vector_settings import (
|
|
|
81
81
|
from argilla_server.schemas.v1.vector_settings import (
|
|
82
82
|
VectorSettingsCreate,
|
|
83
83
|
)
|
|
84
|
-
from argilla_server.schemas.v1.documents import
|
|
84
|
+
from argilla_server.schemas.v1.documents import DocumentCreateRequest, DocumentListItem
|
|
85
85
|
from argilla_server.schemas.v1.vectors import Vector as VectorSchema
|
|
86
86
|
from argilla_server.search_engine import SearchEngine
|
|
87
87
|
from argilla_server.validators.responses import (
|
|
@@ -807,6 +807,9 @@ async def _build_record_update(
|
|
|
807
807
|
|
|
808
808
|
if record_update.suggestions is not None:
|
|
809
809
|
params.pop("suggestions")
|
|
810
|
+
questions_ids = [suggestion.question_id for suggestion in record_update.suggestions]
|
|
811
|
+
if len(questions_ids) != len(set(questions_ids)):
|
|
812
|
+
raise ValueError("found duplicate suggestions question IDs")
|
|
810
813
|
suggestions = await _build_record_suggestions(db, record, record_update.suggestions, caches["questions"])
|
|
811
814
|
|
|
812
815
|
if record_update.vectors is not None:
|
|
@@ -1050,8 +1053,8 @@ async def update_response(
|
|
|
1050
1053
|
):
|
|
1051
1054
|
ResponseUpdateValidator(response_update).validate_for(response.record)
|
|
1052
1055
|
|
|
1053
|
-
if 'duration' in response.values:
|
|
1054
|
-
if 'duration' in response_update.values:
|
|
1056
|
+
if response.values and 'duration' in response.values:
|
|
1057
|
+
if response_update.values and 'duration' in response_update.values:
|
|
1055
1058
|
response_update.values['duration'].value = \
|
|
1056
1059
|
response.values['duration']['value'] + response_update.values['duration'].value
|
|
1057
1060
|
else:
|
|
@@ -1080,14 +1083,6 @@ async def upsert_response(
|
|
|
1080
1083
|
) -> Response:
|
|
1081
1084
|
ResponseUpsertValidator(response_upsert).validate_for(record)
|
|
1082
1085
|
|
|
1083
|
-
if 'duration' in response.values:
|
|
1084
|
-
if 'duration' in response_update.values:
|
|
1085
|
-
response_update.values['duration'].value = \
|
|
1086
|
-
response.values['duration']['value'] + response_update.values['duration'].value
|
|
1087
|
-
else:
|
|
1088
|
-
response_update.values['duration'] = ResponseValueUpdate(value=response.values['duration']['value'])
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
1086
|
schema = {
|
|
1092
1087
|
"values": jsonable_encoder(response_upsert.values),
|
|
1093
1088
|
"status": response_upsert.status,
|
|
@@ -1203,7 +1198,6 @@ async def get_suggestion_by_id(db: AsyncSession, suggestion_id: "UUID") -> Union
|
|
|
1203
1198
|
.options(
|
|
1204
1199
|
selectinload(Suggestion.record).selectinload(Record.dataset),
|
|
1205
1200
|
selectinload(Suggestion.question),
|
|
1206
|
-
selectinload(Suggestion.type),
|
|
1207
1201
|
)
|
|
1208
1202
|
)
|
|
1209
1203
|
|
|
@@ -1219,7 +1213,6 @@ async def list_suggestions_by_id_and_record_id(
|
|
|
1219
1213
|
.options(
|
|
1220
1214
|
selectinload(Suggestion.record).selectinload(Record.dataset),
|
|
1221
1215
|
selectinload(Suggestion.question),
|
|
1222
|
-
selectinload(Suggestion.type),
|
|
1223
1216
|
)
|
|
1224
1217
|
)
|
|
1225
1218
|
|
|
@@ -1243,7 +1236,7 @@ async def get_metadata_property_by_id(db: AsyncSession, metadata_property_id: UU
|
|
|
1243
1236
|
return result.scalar_one_or_none()
|
|
1244
1237
|
|
|
1245
1238
|
|
|
1246
|
-
async def create_document(db: "AsyncSession", dataset_create:
|
|
1239
|
+
async def create_document(db: "AsyncSession", dataset_create: DocumentCreateRequest) -> DocumentListItem:
|
|
1247
1240
|
document = await Document.create(
|
|
1248
1241
|
db,
|
|
1249
1242
|
id=dataset_create.id,
|