From 853a5afa088b987541751ef48b50ba66099e5b59 Mon Sep 17 00:00:00 2001 From: Francisco Aranda Date: Fri, 10 May 2024 13:08:23 +0200 Subject: [PATCH] restore files from default branch --- .../build-push-dev-frontend-docker.yml | 114 ++++++++++ .github/workflows/build-python-package.yml | 32 +++ .github/workflows/check-repo-files.yml | 56 +++++ .github/workflows/close-pr.yml | 41 ++++ .github/workflows/codeql-analysis.yml | 71 ++++++ .github/workflows/dependency-review.yml | 27 +++ .github/workflows/deploy-environment.yml | 88 ++++++++ .github/workflows/end2end-examples.yml | 98 ++++++++ .github/workflows/package.yml | 213 ++++++++++++++++++ .github/workflows/run-python-tests.yml | 114 ++++++++++ .../workflows/teardown-pr-environemnts.yml | 36 +++ .github/workflows/tutorials.yml | 167 ++++++++++++++ scripts/build_frontend.sh | 8 + scripts/end2end_examples.py | 140 ++++++++++++ .../client/feedback/training/schemas/base.py | 4 +- tests/integration/client/apis/test_base.py | 1 - tests/integration/client/conftest.py | 6 +- tests/integration/client/feedback/conftest.py | 4 +- .../feedback/dataset/local/test_dataset.py | 5 +- .../local/test_mixin_task_templates.py | 1 - .../feedback/dataset/remote/test_dataset.py | 10 +- .../dataset/remote/test_filter_and_sorting.py | 8 +- .../remote/test_list_dataset_records.py | 3 +- .../remote/test_working_with_vectors.py | 3 +- .../integrations/huggingface/test_dataset.py | 3 +- .../huggingface/test_model_card.py | 2 +- .../integrations/test_sentencetransformers.py | 4 +- .../integrations/test_textdescriptives.py | 4 +- .../metrics/test_agreement_metrics.py | 2 +- .../metrics/test_annotator_metrics.py | 2 +- .../client/feedback/metrics/test_utils.py | 1 - .../feedback/schemas/remote/test_metadata.py | 3 +- .../feedback/schemas/remote/test_records.py | 2 +- .../client/feedback/test_unification.py | 1 - .../client/feedback/training/test_openai.py | 4 +- .../training/test_sentence_transformers.py | 4 +- .../client/feedback/training/test_trainer.py | 4 +- .../client/feedback/training/test_trl.py | 10 +- .../client/sdk/api/test_commons.py | 3 +- .../client/sdk/api/test_datasets.py | 4 +- .../integration/client/sdk/api/test_users.py | 2 +- .../client/sdk/api/test_workspaces.py | 4 +- tests/integration/client/sdk/conftest.py | 3 +- .../client/sdk/v1/test_datasets.py | 6 +- .../client/sdk/v1/test_metadata_properties.py | 4 +- .../integration/client/sdk/v1/test_records.py | 8 +- .../client/sdk/v1/test_suggestions.py | 4 +- tests/integration/client/sdk/v1/test_users.py | 1 - .../client/sdk/v1/test_workspaces.py | 2 +- tests/integration/client/test_api.py | 16 +- tests/integration/client/test_asgi.py | 12 +- tests/integration/client/test_client.py | 1 - .../integration/client/test_client_errors.py | 1 - tests/integration/client/test_dataset.py | 1 - tests/integration/client/test_init.py | 6 +- tests/integration/client/test_models.py | 3 +- .../integration/client/test_record_update.py | 3 +- .../client/test_scan_raw_records.py | 4 +- tests/integration/client/test_users.py | 1 - tests/integration/client/test_utils.py | 1 - tests/integration/client/test_workspaces.py | 2 +- tests/integration/conftest.py | 18 +- tests/integration/helpers.py | 7 +- .../text_classification/test_label_errors.py | 3 +- .../labeling/text_classification/test_rule.py | 4 +- .../text_classification/test_weak_labels.py | 6 +- tests/integration/listeners/test_listener.py | 3 +- .../metrics/test_common_metrics.py | 4 +- .../metrics/test_token_classification.py | 4 +- .../monitoring/test_flair_monitoring.py | 4 +- tests/integration/monitoring/test_monitor.py | 3 +- .../monitoring/test_spacy_monitoring.py | 1 + .../test_transformers_monitoring.py | 4 +- tests/integration/test_datasets_settings.py | 9 +- .../test_delete_records_from_datasets.py | 4 +- .../test_log_for_text_classification.py | 6 +- .../test_log_for_token_classification.py | 4 +- tests/integration/training/test_base.py | 1 - tests/integration/training/test_openai.py | 1 - tests/integration/training/test_peft.py | 1 - tests/integration/training/test_spacy.py | 4 +- tests/unit/cli/conftest.py | 6 +- tests/unit/cli/datasets/conftest.py | 1 - tests/unit/cli/datasets/test_delete.py | 3 +- tests/unit/cli/datasets/test_list.py | 8 +- tests/unit/cli/datasets/test_push.py | 5 +- tests/unit/cli/info/test_info.py | 1 - tests/unit/cli/users/test_create.py | 4 +- tests/unit/cli/users/test_delete.py | 3 +- tests/unit/cli/users/test_list.py | 8 +- tests/unit/cli/workspaces/test_list.py | 2 +- tests/unit/client/feedback/conftest.py | 1 - .../feedback/dataset/local/test_dataset.py | 1 - .../feedback/dataset/remote/test_dataset.py | 3 +- .../client/feedback/dataset/test_helpers.py | 2 +- .../huggingface/card/test__dataset_card.py | 3 +- .../huggingface/card/test__parser.py | 1 - .../integrations/huggingface/test_dataset.py | 1 - .../huggingface/test_model_card.py | 3 +- .../integrations/test_sentencetransformers.py | 3 +- .../integrations/test_textdescriptives.py | 1 - .../feedback/schemas/remote/test_fields.py | 1 - .../feedback/schemas/remote/test_metadata.py | 1 - .../feedback/schemas/remote/test_questions.py | 1 - .../feedback/schemas/remote/test_records.py | 1 - .../client/feedback/schemas/test_fields.py | 2 +- .../client/feedback/schemas/test_metadata.py | 2 +- .../client/feedback/schemas/test_questions.py | 2 +- .../client/feedback/schemas/test_records.py | 2 +- .../client/feedback/schemas/test_responses.py | 1 - .../feedback/schemas/test_suggestions.py | 1 - .../client/feedback/schemas/test_utils.py | 1 + tests/unit/client/feedback/test_config.py | 3 +- .../client/feedback/training/test_schemas.py | 5 +- .../client/feedback/utils/test_assignment.py | 1 - .../client/feedback/utils/test_html_utils.py | 1 - tests/unit/client/sdk/models/test_datasets.py | 3 +- .../unit/client/sdk/models/test_text2text.py | 5 +- .../sdk/models/test_text_classification.py | 17 +- .../sdk/models/test_token_classification.py | 13 +- tests/unit/client/sdk/models/test_users.py | 4 +- .../unit/client/sdk/models/test_workspaces.py | 3 +- .../client/sdk/models/v1/test_datasets.py | 5 +- .../client/sdk/models/v1/test_suggestions.py | 3 +- .../client/sdk/models/v1/test_workspaces.py | 3 +- .../sdk/v1/metadata_properties/test_api.py | 1 - tests/unit/client/sdk/v1/records/test_api.py | 1 - tests/unit/client/sdk/v1/test_datasets.py | 1 - tests/unit/client/sdk/v1/test_get_records.py | 1 - .../unit/client/sdk/v1/test_search_records.py | 1 - .../sdk/v1/vectors_settings/test_api.py | 1 - tests/unit/client/test_login.py | 1 - .../text_classification/test_label_models.py | 1 - tests/unit/test_logging.py | 1 - tests/unit/utils/test_dependency.py | 1 - tests/unit/utils/test_span_utils.py | 1 - tests/unit/utils/test_utils.py | 1 - 137 files changed, 1377 insertions(+), 255 deletions(-) create mode 100644 .github/workflows/build-push-dev-frontend-docker.yml create mode 100644 .github/workflows/build-python-package.yml create mode 100644 .github/workflows/check-repo-files.yml create mode 100644 .github/workflows/close-pr.yml create mode 100644 .github/workflows/codeql-analysis.yml create mode 100644 .github/workflows/dependency-review.yml create mode 100644 .github/workflows/deploy-environment.yml create mode 100644 .github/workflows/end2end-examples.yml create mode 100644 .github/workflows/package.yml create mode 100644 .github/workflows/run-python-tests.yml create mode 100644 .github/workflows/teardown-pr-environemnts.yml create mode 100644 .github/workflows/tutorials.yml create mode 100644 scripts/build_frontend.sh create mode 100644 scripts/end2end_examples.py diff --git a/.github/workflows/build-push-dev-frontend-docker.yml b/.github/workflows/build-push-dev-frontend-docker.yml new file mode 100644 index 0000000000..c9b2164f22 --- /dev/null +++ b/.github/workflows/build-push-dev-frontend-docker.yml @@ -0,0 +1,114 @@ +name: Build Argilla Docker image + +on: + workflow_call: + inputs: + download-python-package: + description: "True if python package should be downloaded" + type: boolean + default: false + image-name: + description: "Name of the image to build" + required: true + type: string + dockerfile: + description: "Path to the Dockerfile to build" + required: true + type: string + platforms: + description: "Platforms to build for" + required: true + type: string + build-args: + description: "Build arguments" + required: false + type: string + default: "" + readme: + description: "Path to the README file" + required: false + type: string + default: "README.md" + outputs: + version: + description: "Version of the Docker image" + value: ${{ jobs.build.outputs.version }} + google-docker-image: + description: The name of the Docker image uploaded to Google Artifact Registry. + value: ${{ jobs.build.outputs.google-docker-image }} + +jobs: + build: + name: Build Docker image + runs-on: ubuntu-latest + + # Grant permissions to `GITHUB_TOKEN` for Google Cloud Workload Identity Provider + permissions: + contents: read + id-token: write + + outputs: + version: ${{ steps.docker-image-tag-from-ref.outputs.docker-image-tag }} + steps: + - uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: "18" + + - name: Build Frontend + working-directory: frontend + run: | + npm install + npm run build + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Get Docker image tag from GITHUB_REF + id: docker-image-tag-from-ref + uses: ./.github/actions/docker-image-tag-from-ref + + - name: Generate Docker tags + id: generate-docker-tags + run: | + GCP_REGISTRY_TAG="europe-docker.pkg.dev/argilla-ci/$IMAGE_NAME:$DOCKER_IMAGE_TAG" + + echo "tags=$GCP_REGISTRY_TAG" >> $GITHUB_OUTPUT + env: + IMAGE_NAME: ${{ inputs.image-name }} + DOCKER_IMAGE_TAG: ${{ steps.docker-image-tag-from-ref.outputs.docker-image-tag }} + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.AR_DOCKER_USERNAME }} + password: ${{ secrets.AR_DOCKER_PASSWORD }} + + # Authenticate in GCP using Workload Identity Federation, so we can push the Docker image to the Google Cloud Artifact Registry + - name: Authenticate to Google Cloud + id: google-auth + uses: 'google-github-actions/auth@v1' + with: + token_format: access_token + workload_identity_provider: ${{ secrets.GOOGLE_CLOUD_WIP }} + service_account: ${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT }} + + - name: Login to Google Artifact Registry + uses: docker/login-action@v2 + with: + registry: europe-docker.pkg.dev + username: oauth2accesstoken + password: ${{ steps.google-auth.outputs.access_token }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: frontend + file: ${{ inputs.dockerfile }} + platforms: ${{ inputs.platforms }} + tags: ${{ steps.generate-docker-tags.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: ${{ inputs.build-args }} + push: true diff --git a/.github/workflows/build-python-package.yml b/.github/workflows/build-python-package.yml new file mode 100644 index 0000000000..32ad4768b4 --- /dev/null +++ b/.github/workflows/build-python-package.yml @@ -0,0 +1,32 @@ +name: Build Argilla package + +on: + workflow_call: + +jobs: + build: + name: Build the python package + runs-on: ubuntu-latest + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + + - name: Cache pip 👜 + uses: actions/cache@v3 + env: + # Increase this value to reset cache if pyproject.toml has not changed + CACHE_NUMBER: 0 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ env.CACHE_NUMBER }}-${{ hashFiles('pyproject.toml') }} + + - name: Build Package 🍟 + run: | + pip install -U build + rm -rf dist && python -m build + + - name: Upload package artifact + uses: actions/upload-artifact@v3 + with: + name: python-package + path: dist diff --git a/.github/workflows/check-repo-files.yml b/.github/workflows/check-repo-files.yml new file mode 100644 index 0000000000..e6bdf68042 --- /dev/null +++ b/.github/workflows/check-repo-files.yml @@ -0,0 +1,56 @@ +name: Check repository files + +on: + workflow_call: + outputs: + pythonChanges: + description: "True if some files in python code have changed" + value: ${{ jobs.check-repo-files.outputs.pythonChanges }} + end2endChanges: + description: "True if some files in python code have changed" + value: ${{ jobs.check-repo-files.outputs.end2endChanges }} + buildChanges: + description: "True if some files affecting the build have changed" + value: ${{ jobs.check-repo-files.outputs.buildChanges }} + frontendChanges: + description: "True if some files affecting the frontend folder changed" + value: ${{ jobs.check-repo-files.outputs.frontendChanges }} + +jobs: + check-repo-files: + name: Check repo files + runs-on: ubuntu-latest + outputs: + pythonChanges: ${{ steps.path_filter.outputs.pythonChanges }} + buildChanges: ${{ steps.path_filter.outputs.buildChanges }} + end2endChanges: ${{ steps.path_filter.outputs.end2endChanges }} + frontendChanges: ${{ steps.path_filter.outputs.frontendChanges }} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Check affected files + uses: dorny/paths-filter@v2 + id: path_filter + with: + filters: | + pythonChanges: + - 'src/**' + - 'tests/**' + - 'pyproject.toml' + - 'setup.py' + end2endChanges: + - 'src/**' + - 'pyproject.toml' + - 'setup.py' + - 'scripts/end2end_examples.py' + - 'docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/**' + frontendChanges: + - 'frontend/**' + buildChanges: + - 'src/**' + - 'frontend/**' + - 'pyproject.toml' + - 'setup.py' + - 'docker/**' + - '.dockerignore' + - '.github/workflows/**' diff --git a/.github/workflows/close-pr.yml b/.github/workflows/close-pr.yml new file mode 100644 index 0000000000..2d7b2af8eb --- /dev/null +++ b/.github/workflows/close-pr.yml @@ -0,0 +1,41 @@ +name: Close Pull Request + +on: + pull_request: + types: [closed] + +jobs: + teardown_pr_environment: + name: Teardown Cloud Run PR environment + runs-on: ubuntu-latest + if: github.event.pull_request.head.repo.full_name == github.repository + + # Grant permissions to `GITHUB_TOKEN` for Google Cloud Workload Identity Provider + permissions: + contents: read + id-token: write + + steps: + - uses: "actions/checkout@v3" + + - name: Authenticate to Google Cloud + uses: "google-github-actions/auth@v1" + with: + workload_identity_provider: ${{ secrets.GOOGLE_CLOUD_WIP }} + service_account: ${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT }} + + - name: Set up Cloud SDK + uses: "google-github-actions/setup-gcloud@v1" + with: + version: ">= 435.0.0" + + - name: Remove PR environment if exists + run: | + service_name="argilla-quickstart-pr-${{ github.event.pull_request.number }}" + services=$(gcloud run services list --project=argilla-ci --format="value(metadata.name)") + if echo "$services" | grep -q "$service_name"; then + echo "Service '$service_name' exists. Removing it..." + gcloud run services delete $service_name --project=argilla-ci --region=europe-southwest1 --quiet + else + echo "Service $service_name does not exist." + fi diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000000..5e7c22c266 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,71 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [main, master, releases/*] + pull_request: + # The branches below must be a subset of the branches above + branches: [main, master, releases/*] + schedule: + - cron: "33 6 * * 3" + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: ["javascript", "python"] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 0000000000..b6d7a8e072 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,27 @@ +# Dependency Review Action +# +# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. +# +# Source repository: https://github.com/actions/dependency-review-action +# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement +name: "Dependency Review" +on: + pull_request: + types: + - opened + - reopened + - synchronize + - ready_for_review + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + if: ${{ !github.event.pull_request.draft }} + steps: + - name: "Checkout Repository" + uses: actions/checkout@v3 + - name: "Dependency Review" + uses: actions/dependency-review-action@v1 diff --git a/.github/workflows/deploy-environment.yml b/.github/workflows/deploy-environment.yml new file mode 100644 index 0000000000..0ff1f81cc9 --- /dev/null +++ b/.github/workflows/deploy-environment.yml @@ -0,0 +1,88 @@ +name: Deploy Argilla environment + +on: + + workflow_dispatch: + inputs: + image-name: + description: The name of the Docker image to deploy. + type: string + default: argilla/argilla-quickstart-for-dev + image-version: + description: The version of the Docker image to deploy. In the form pr-. + type: string + + workflow_call: + inputs: + image-name: + description: The name of the Docker image to deploy. + type: string + image-version: + description: The version of the Docker image to deploy. In the form pr-. + type: string + +jobs: + deploy: + name: Deploy Argilla to Cloud Run + runs-on: ubuntu-latest + + # Grant permissions to `GITHUB_TOKEN` for Google Cloud Workload Identity Provider + permissions: + contents: read + id-token: write + pull-requests: write + + steps: + - uses: actions/checkout@v3 + + # Authenticate in GCP using Workload Identity Federation + - name: Authenticate to Google Cloud + uses: "google-github-actions/auth@v1" + with: + workload_identity_provider: ${{ secrets.GOOGLE_CLOUD_WIP }} + service_account: ${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT }} + + - name: Generate credentials + id: credentials + uses: ./.github/actions/generate-credentials + env: + ENVIRONMENT_CREDENTIALS_SECRET: ${{ secrets.ENVIRONMENT_CREDENTIALS_SECRET }} + + - name: Deploy in Cloud Run + id: deploy + uses: "google-github-actions/deploy-cloudrun@v1" + with: + service: argilla-quickstart-${{ inputs.image-version }} + image: europe-docker.pkg.dev/argilla-ci/${{ inputs.image-name}}:${{ inputs.image-version }} + region: europe-southwest1 + flags: "--min-instances=1 --max-instances=1 --port=3000 --cpu=2000m --memory=4096Mi --no-cpu-throttling --allow-unauthenticated" + env_vars: | + OWNER_PASSWORD=${{ steps.credentials.outputs.owner }} + OWNER_API_KEY=${{ steps.credentials.outputs.owner }} + ADMIN_PASSWORD=${{ steps.credentials.outputs.admin }} + ADMIN_API_KEY=${{ steps.credentials.outputs.admin }} + ANNOTATOR_PASSWORD=${{ steps.credentials.outputs.annotator }} + ANNOTATOR_API_KEY=${{ steps.credentials.outputs.annotator }} + ARGILLA_ENABLE_TELEMETRY=0 + API_BASE_URL=https://dev.argilla.io/ + + - name: Post credentials in Slack + uses: ./.github/actions/slack-post-credentials + if: ${{ github.event_name != 'workflow_dispatch' }} + with: + slack-channel-name: argilla-github + url: ${{ steps.deploy.outputs.url }} + owner: ${{ steps.credentials.outputs.owner }} + admin: ${{ steps.credentials.outputs.admin }} + annotator: ${{ steps.credentials.outputs.annotator }} + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} + + - name: Comment PR with Cloud Run URL + uses: thollander/actions-comment-pull-request@v2 + if: ${{ github.event_name != 'workflow_dispatch' }} + with: + message: | + The URL of the deployed environment for this PR is ${{ steps.deploy.outputs.url }} + comment_tag: cloud_run_url + reactions: rocket diff --git a/.github/workflows/end2end-examples.yml b/.github/workflows/end2end-examples.yml new file mode 100644 index 0000000000..72e597bf53 --- /dev/null +++ b/.github/workflows/end2end-examples.yml @@ -0,0 +1,98 @@ +name: Run end2end sdk examples + +on: + workflow_call: + inputs: + runsOn: + required: false + type: string + default: extended-runner + searchEngineDockerImage: + description: "The name of the Docker image of the search engine to use." + default: docker.elastic.co/elasticsearch/elasticsearch:8.8.2 + required: false + type: string + searchEngineDockerEnv: + description: "The name of the Docker image of the search engine to use." + default: '{"discovery.type": "single-node", "xpack.security.enabled": "false"}' + required: false + type: string +env: + # Increase this value to reset cache if etc/example-environment.yml has not changed + CACHE_NUMBER: 5 + +jobs: + # Runs depending on the result from the check-repo-files.yml + call-check-repo-files: + uses: ./.github/workflows/check-repo-files.yml + + end2end-examples: + name: end2end notebook examples, FeedbackDataset for text-classification + runs-on: ${{ inputs.runsOn }} + services: + search_engine: + image: ${{ inputs.searchEngineDockerImage }} + ports: + - 9200:9200 + env: ${{ fromJson(inputs.searchEngineDockerEnv) }} + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + miniforge-variant: Mambaforge + miniforge-version: latest + use-mamba: true + activate-environment: argilla + - name: Get date for conda cache + id: get-date + run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" + shell: bash + - name: Cache Conda env + uses: actions/cache@v3 + id: cache + with: + path: ${{ env.CONDA }}/envs + key: conda-${{ runner.os }}--${{ runner.arch }}--${{ steps.get-date.outputs.today }}-${{ hashFiles('environment_dev.yml') }}-${{ env.CACHE_NUMBER }} + - name: Update environment + if: steps.cache.outputs.cache-hit != 'true' + run: mamba env update -n argilla -f environment_dev.yml + - name: Cache pip 👜 + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ env.CACHE_NUMBER }}-${{ hashFiles('pyproject.toml') }} + - name: Set huggingface hub credentials + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/releases') + run: | + echo "HF_HUB_ACCESS_TOKEN=${{ secrets.HF_HUB_ACCESS_TOKEN }}" >> "$GITHUB_ENV" + echo "Enable HF access token" + - name: Set Argilla search engine env variable + if: startsWith(inputs.searchEngineDockerImage, 'docker.elastic.co') + run: | + echo "ARGILLA_SEARCH_ENGINE=elasticsearch" >> "$GITHUB_ENV" + echo "Configure elasticsearch engine" + - name: Set Argilla search engine env variable + if: startsWith(inputs.searchEngineDockerImage, 'opensearchproject') + run: | + echo "ARGILLA_SEARCH_ENGINE=opensearch" >> "$GITHUB_ENV" + echo "Configure opensearch engine" + - name: Launch Argilla Server + env: + ARGILLA_ENABLE_TELEMETRY: 0 + run: | + pip install -e ".[server]" + python -m argilla server database migrate + python -m argilla server database users create_default + python -m argilla server start & + - name: Run end2end examples 📈 + env: + ARGILLA_ENABLE_TELEMETRY: 0 + HF_HUB_ACCESS_TOKEN: ${{ secrets.HF_HUB_ACCESS_TOKEN }} + run: | + pip install papermill + python scripts/end2end_examples.py diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 0000000000..2b46f43f60 --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,213 @@ +name: Build package + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +on: + workflow_dispatch: + release: + types: + - "published" + push: + branches: + - "main" + - "develop" + - "releases/**" + tags: + - "*" + pull_request: + branches: + - "main" + - "develop" + - "releases/**" + - "feature/**" + - "feat/**" + - "fix/**" + types: + - opened + - reopened + - synchronize + - ready_for_review + +jobs: + check_repo_files: + name: Check source changes + if: ${{ !github.event.pull_request.draft }} + uses: ./.github/workflows/check-repo-files.yml + + deployable_check: + name: Check if must build & deploy from environment + runs-on: ubuntu-latest + needs: check_repo_files + env: + IS_DEPLOYABLE: ${{ secrets.AR_DOCKER_USERNAME != '' && needs.check_repo_files.outputs.buildChanges == 'true' }} + outputs: + isDeployable: ${{ steps.set_output.outputs.is_deployable }} + steps: + - name: set output + id: set_output + run: | + echo "is_deployable=$IS_DEPLOYABLE" >> $GITHUB_OUTPUT + + run_unit_tests: + name: Run unit tests + uses: ./.github/workflows/run-python-tests.yml + needs: check_repo_files + if: needs.check_repo_files.outputs.pythonChanges == 'true' + with: + coverageReport: coverage + runsOn: extended-runner + pytestArgs: tests/unit + secrets: inherit + + run_end2end_tests: + strategy: + matrix: + include: + - searchEngineDockerImage: docker.elastic.co/elasticsearch/elasticsearch:8.8.2 + searchEngineDockerEnv: '{"discovery.type": "single-node", "xpack.security.enabled": "false"}' + coverageReport: coverage-elasticsearch-8.8.2 + runsOn: extended-runner + + name: Run end2end tests + uses: ./.github/workflows/end2end-examples.yml + needs: check_repo_files + if: needs.check_repo_files.outputs.end2endChanges == 'true' + with: + runsOn: ${{ matrix.runsOn }} + searchEngineDockerImage: ${{ matrix.searchEngineDockerImage }} + searchEngineDockerEnv: ${{ matrix.searchEngineDockerEnv }} + secrets: inherit + + run_integration_tests: + name: Run integration tests + uses: ./.github/workflows/run-python-tests.yml + needs: + - check_repo_files + - run_unit_tests + if: needs.check_repo_files.outputs.pythonChanges == 'true' + with: + runsOn: extended-runner + coverageReport: coverage-extra + pytestArgs: tests/integration + secrets: inherit + + push_coverage: + name: Upload code coverage + runs-on: ubuntu-latest + needs: + - run_unit_tests + - run_integration_tests + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + + - name: Download coverage reports + uses: actions/download-artifact@v3 + + - name: Copy all reports + run: find coverage-report*/ -name "*.xml" -exec mv '{}' . \; + + - name: Display current files structure + run: ls -R + + - name: Upload Coverage reports to Codecov đŸ“Ļ + uses: codecov/codecov-action@v2 + + run_frontend_test: + name: Run Argilla Frontend tests + runs-on: ubuntu-latest + needs: check_repo_files + if: needs.check_repo_files.outputs.frontendChanges == 'true' + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: "18" + + - name: Run Frontend tests + working-directory: frontend + run: | + npm install + npm run lint + npm run test + + build_python_package: + name: Build Argilla python package + uses: ./.github/workflows/build-python-package.yml + needs: + - run_unit_tests + - run_integration_tests + - check_repo_files + if: needs.check_repo_files.outputs.pythonChanges == 'true' + secrets: inherit + + build_quickstart_for_develop_docker_image: + name: Build Quickstart For Develop docker image + uses: ./.github/workflows/build-push-dev-frontend-docker.yml + needs: deployable_check + if: needs.deployable_check.outputs.isDeployable == 'true' + with: + image-name: argilla/argilla-quickstart-for-dev + dockerfile: frontend/dev.frontend.Dockerfile + platforms: linux/amd64 + build-args: | + ARGILLA_SERVER_TAG=main + secrets: inherit + + deploy_environment: + name: Deploy branch environment + uses: ./.github/workflows/deploy-environment.yml + needs: build_quickstart_for_develop_docker_image + if: | + !cancelled() && + github.event.pull_request.head.repo.full_name == github.repository && + needs.build_quickstart_for_develop_docker_image.result == 'success' && + needs.check_repo_files.outputs.frontendChanges == 'true' && + github.event_name == 'pull_request' && github.event.pull_request.draft == false + with: + image-name: argilla/argilla-quickstart-for-dev + image-version: ${{ needs.build_quickstart_for_develop_docker_image.outputs.version }} + secrets: inherit + + # This job will upload a Python Package using Twine when a release is created + # For more information see: + # https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + publish_release: + name: Publish Release + runs-on: ubuntu-latest + if: ${{ github.event_name == 'release' }} + needs: + - run_integration_tests + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + + - name: Download python package + uses: actions/download-artifact@v2 + with: + name: python-package + path: dist + + - name: Publish Package to TestPyPI đŸĨĒ + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.AR_TEST_PYPI_API_TOKEN }} + repository_url: https://test.pypi.org/legacy/ + + - name: Test Installing đŸŋ + run: pip install --index-url https://test.pypi.org/simple --no-deps argilla==${GITHUB_REF#refs/*/v} + + - name: Publish Package to PyPI đŸĨŠ + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.AR_PYPI_API_TOKEN }} diff --git a/.github/workflows/run-python-tests.yml b/.github/workflows/run-python-tests.yml new file mode 100644 index 0000000000..3d6f073bb8 --- /dev/null +++ b/.github/workflows/run-python-tests.yml @@ -0,0 +1,114 @@ +name: Run Argilla python tests + +on: + workflow_call: + inputs: + runsOn: + required: false + type: string + default: extended-runner + pytestArgs: + description: "Provide extra args to pytest command line" + required: true + type: string + coverageReport: + required: false + type: string + default: coverage + searchEngineDockerImage: + description: "The name of the Docker image of the search engine to use." + default: docker.elastic.co/elasticsearch/elasticsearch:8.8.2 + required: false + type: string + searchEngineDockerEnv: + description: "The name of the Docker image of the search engine to use." + default: '{"discovery.type": "single-node", "xpack.security.enabled": "false"}' + required: false + type: string +env: + # Increase this value to reset cache if etc/example-environment.yml has not changed + CACHE_NUMBER: 5 + +jobs: + run-python-tests: + name: Argilla python tests + runs-on: ${{ inputs.runsOn }} + continue-on-error: true + timeout-minutes: 30 + services: + search_engine: + image: ${{ inputs.searchEngineDockerImage }} + ports: + - 9200:9200 + env: ${{ fromJson(inputs.searchEngineDockerEnv) }} + defaults: + run: + shell: bash -l {0} + env: + COVERAGE_REPORT: ${{ inputs.coverageReport }} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + miniforge-variant: Mambaforge + miniforge-version: latest + use-mamba: true + activate-environment: argilla + - name: Get date for conda cache + id: get-date + run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" + shell: bash + - name: Cache Conda env + uses: actions/cache@v3 + id: cache + with: + path: ${{ env.CONDA }}/envs + key: conda-${{ runner.os }}--${{ runner.arch }}--${{ steps.get-date.outputs.today }}-${{ hashFiles('environment_dev.yml') }}-${{ env.CACHE_NUMBER }} + - name: Update environment + if: steps.cache.outputs.cache-hit != 'true' + run: mamba env update -n argilla -f environment_dev.yml + - name: Cache pip 👜 + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ env.CACHE_NUMBER }}-${{ hashFiles('pyproject.toml') }} + - name: Set huggingface hub credentials + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/releases') + run: | + echo "HF_HUB_ACCESS_TOKEN=${{ secrets.HF_HUB_ACCESS_TOKEN }}" >> "$GITHUB_ENV" + echo "Enable HF access token" + - name: Set Argilla search engine env variable + if: startsWith(inputs.searchEngineDockerImage, 'docker.elastic.co') + run: | + echo "ARGILLA_SEARCH_ENGINE=elasticsearch" >> "$GITHUB_ENV" + echo "Configure elasticsearch engine" + - name: Set Argilla search engine env variable + if: startsWith(inputs.searchEngineDockerImage, 'opensearchproject') + run: | + echo "ARGILLA_SEARCH_ENGINE=opensearch" >> "$GITHUB_ENV" + echo "Configure opensearch engine" + - name: Run tests 📈 + env: + ARGILLA_ENABLE_TELEMETRY: 0 + run: | + pip install -e ".[server,listeners]" + pytest --cov=argilla --cov-report=xml:${{ env.COVERAGE_REPORT }}.xml ${{ inputs.pytestArgs }} -vs + - name: Upload coverage report artifact + uses: actions/upload-artifact@v3 + with: + name: coverage-report-${{ env.COVERAGE_REPORT }} + path: ${{ env.COVERAGE_REPORT }}.xml + - name: Run tests with pandas v2 📈 + env: + ARGILLA_ENABLE_TELEMETRY: 0 + run: | + pip install "pandas~=2.0" pytest-custom_exit_code + pytest --suppress-no-test-exit-code ${{ inputs.pytestArgs }} -vs + - name: Run tests with pydantic v2 📈 + env: + ARGILLA_ENABLE_TELEMETRY: 0 + run: | + pip install "pydantic~=2.0" pytest-custom_exit_code + pytest --suppress-no-test-exit-code ${{ inputs.pytestArgs }} -vs diff --git a/.github/workflows/teardown-pr-environemnts.yml b/.github/workflows/teardown-pr-environemnts.yml new file mode 100644 index 0000000000..9c32a9311a --- /dev/null +++ b/.github/workflows/teardown-pr-environemnts.yml @@ -0,0 +1,36 @@ +name: Close Pull Request + +on: + schedule: + - cron: "0 8,20 * * *" # every day at 8:00 and 20:00 UTC + +jobs: + teardown_pr_environments: + name: Teardown Cloud Run PR environments + runs-on: ubuntu-latest + + # Grant permissions to `GITHUB_TOKEN` for Google Cloud Workload Identity Provider + permissions: + contents: read + id-token: write + + steps: + - uses: "actions/checkout@v3" + + - name: Authenticate to Google Cloud + uses: "google-github-actions/auth@v1" + with: + workload_identity_provider: ${{ secrets.GOOGLE_CLOUD_WIP }} + service_account: ${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT }} + + - name: Set up Cloud SDK + uses: "google-github-actions/setup-gcloud@v1" + with: + version: ">= 435.0.0" + + - name: Remove running PR environments + run: | + services=$(gcloud run services list --project=argilla-ci --format="value(metadata.name)") + for service in $services; do + gcloud run services delete $service --project=argilla-ci --region=europe-southwest1 --quiet + done diff --git a/.github/workflows/tutorials.yml b/.github/workflows/tutorials.yml new file mode 100644 index 0000000000..856e331483 --- /dev/null +++ b/.github/workflows/tutorials.yml @@ -0,0 +1,167 @@ +name: Tutorials + +on: + workflow_dispatch: + +jobs: + tut1: + name: Active Learning with ModAL + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Rubrix + run: | + sed -i 's/rubrix:latest/rubrix:master/' docker-compose.yaml + docker-compose -f "docker-compose.yaml" up -d --build + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + python-version: 3.8.10 + - name: Install pytest and nbmake + run: pip install pytest nbmake ipywidgets + - name: Install Rubrix + run: pip install -U git+https://github.com/recognai/rubrix.git + - name: Run tutorial + run: pytest --nbmake docs/tutorials/05-active_learning.ipynb + - name: Stop containers + if: always() + run: docker-compose -f "docker-compose.yaml" down + + tut2: + name: News classifier with weak supervision + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Rubrix + run: | + sed -i 's/rubrix:latest/rubrix:master/' docker-compose.yaml + docker-compose -f "docker-compose.yaml" up -d --build + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + python-version: 3.8.10 + - name: Install pytest and nbmake + run: pip install pytest nbmake ipywidgets + - name: Install Rubrix + run: pip install -U git+https://github.com/recognai/rubrix.git + - name: Run tutorial + run: pytest --nbmake docs/tutorials/weak-supervision-with-rubrix.ipynb + - name: Stop containers + if: always() + run: docker-compose -f "docker-compose.yaml" down + + tut3: + name: Find label errors with cleanlab + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Rubrix + run: | + sed -i 's/rubrix:latest/rubrix:master/' docker-compose.yaml + docker-compose -f "docker-compose.yaml" up -d --build + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + python-version: 3.8.10 + - name: Install pytest and nbmake + run: pip install pytest nbmake ipywidgets + - name: Install Rubrix + run: pip install -U git+https://github.com/recognai/rubrix.git + - name: Run tutorial + run: pytest --nbmake docs/tutorials/find_label_errors.ipynb + - name: Stop containers + if: always() + run: docker-compose -f "docker-compose.yaml" down + + tut4: + name: Zero-shot NER with Flair + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Rubrix + run: | + sed -i 's/rubrix:latest/rubrix:master/' docker-compose.yaml + docker-compose -f "docker-compose.yaml" up -d --build + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + python-version: 3.8.10 + - name: Install pytest and nbmake + run: pip install pytest nbmake ipywidgets + - name: Install Rubrix + run: pip install -U git+https://github.com/recognai/rubrix.git + - name: Run tutorial + run: pytest --nbmake docs/tutorials/07-zeroshot_ner.ipynb + - name: Stop containers + if: always() + run: docker-compose -f "docker-compose.yaml" down + + tut5: + name: Clean labels using your model loss + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Rubrix + run: | + sed -i 's/rubrix:latest/rubrix:master/' docker-compose.yaml + docker-compose -f "docker-compose.yaml" up -d --build + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + python-version: 3.8.10 + - name: Install pytest and nbmake + run: pip install pytest nbmake ipywidgets + - name: Install Rubrix + run: pip install -U git+https://github.com/recognai/rubrix.git + - name: Run tutorial + run: pytest --nbmake docs/tutorials/08-error_analysis_using_loss.ipynb + - name: Stop containers + if: always() + run: docker-compose -f "docker-compose.yaml" down + + tut6: + name: Monitor predictions in HTTP API endpoints + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v3 + - name: Setup Rubrix + run: | + sed -i 's/rubrix:latest/rubrix:master/' docker-compose.yaml + docker-compose -f "docker-compose.yaml" up -d --build + - name: Setup Conda Env 🐍 + uses: conda-incubator/setup-miniconda@v2 + with: + python-version: 3.8.10 + - name: Install pytest and nbmake + run: pip install pytest nbmake ipywidgets + - name: Install Rubrix + run: pip install -U git+https://github.com/recognai/rubrix.git + - name: Run tutorial + run: pytest --nbmake docs/tutorials/09-automatic_fastapi_log.ipynb + - name: Stop containers + if: always() + run: docker-compose -f "docker-compose.yaml" down diff --git a/scripts/build_frontend.sh b/scripts/build_frontend.sh new file mode 100644 index 0000000000..d296882590 --- /dev/null +++ b/scripts/build_frontend.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +cd frontend \ +&& npm install \ +&& npm run-script lint \ +&& npm run-script test \ +&& BASE_URL=@@baseUrl@@ DIST_FOLDER=../src/argilla/server/static npm run-script build \ + diff --git a/scripts/end2end_examples.py b/scripts/end2end_examples.py new file mode 100644 index 0000000000..7acbfcbe03 --- /dev/null +++ b/scripts/end2end_examples.py @@ -0,0 +1,140 @@ +# Copyright 2021-present, the Recognai S.L. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +To run this script you need to install papermill first: + +$ pip install papermill + +Then run the script from the argilla repo root: + +$ cd argilla-repo +$ python scripts/end2end_examples.py --help +""" + +import os +import tempfile +from dataclasses import dataclass, field +from pathlib import Path +from typing import Dict, Optional + +import papermill +from argilla._constants import DEFAULT_API_KEY + + +@dataclass +class ExampleNotebook: + src_filename: Path + dst_filename: Path + sort_index: int + parameters: Dict = field(default_factory=dict) + + def __post_init__(self): + self.src_filename = Path(self.src_filename) + self.dst_filename = Path(self.dst_filename) + + def run(self): + try: + nb = papermill.execute_notebook( + str(self.src_filename), + str(self.dst_filename), + parameters=self.parameters, + kernel_name="python3", + ) + for cell in nb["cells"]: + if cell["cell_type"] == "code": + if not cell["metadata"]["papermill"]["status"] == "completed": + raise Exception( + f"Notebook {self.src_filename} failed:\n" + "Code cell failed to execute:\n" + f"{cell['source']}\n" + "Output:\n" + f"{cell['outputs']}" + ) + print(f"✅ {self.src_filename}") + except Exception as e: + print(f"❌ {self.src_filename}") + raise e from None + + def clean(self): + if self.dst_filename.exists(): + self.dst_filename.unlink() + print(f"Removed output notebook: {self.dst_filename.stem}") + + +def get_huggingface_token() -> Optional[str]: + if token := os.environ.get("HF_HUB_ACCESS_TOKEN"): + return token + + from huggingface_hub import HfFolder + + if token := HfFolder.get_token(): + return token + + raise ValueError("No token found. Please set HF_HUB_ACCESS_TOKEN environment variable.") + + +def main( + api_url: Optional[str] = "http://localhost:6900", + api_key: Optional[str] = DEFAULT_API_KEY, + hf_token: Optional[str] = None, + examples_folder: Optional[Path] = "docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples", +) -> None: + """ + Run the end2end example notebooks. If no arguments are passed, it + will try to get the api_key and the hf_token from the environment variables. + """ + if isinstance(examples_folder, str): + examples_folder = Path(examples_folder) + + if not examples_folder.exists(): + raise ValueError(f"Folder {examples_folder} does not exist") + + if not hf_token: + hf_token = get_huggingface_token() + + notebook_parameters = { + "hf_token": hf_token, + "api_url": api_url, + "api_key": api_key, + } + + # Name of the output notebook that will be removed after running the examples + output_notebook = "output_notebook.ipynb" + + with tempfile.TemporaryDirectory() as tmpdir: + examples = [] + for idx, filename in enumerate(examples_folder.glob("*.ipynb")): + filename = Path(filename) + if "-" in filename.stem: + sort_index = int(filename.stem.split("-")[-1]) + else: + sort_index = idx + examples.append( + ExampleNotebook( + sort_index=sort_index, + src_filename=filename, + dst_filename=Path(tmpdir) / output_notebook, + parameters=notebook_parameters, + ) + ) + examples = sorted(examples, key=lambda x: x.sort_index) + + for example in examples: + example.run() + + +if __name__ == "__main__": + main(examples_folder="docs/_source/getting_started") + main() diff --git a/src/argilla/client/feedback/training/schemas/base.py b/src/argilla/client/feedback/training/schemas/base.py index d61fd3c2f4..edf3ad5dc0 100644 --- a/src/argilla/client/feedback/training/schemas/base.py +++ b/src/argilla/client/feedback/training/schemas/base.py @@ -21,7 +21,6 @@ from typing import TYPE_CHECKING, Any, Callable, Dict, Iterator, List, Optional, Tuple, Union import pandas as pd - from argilla._constants import OPENAI_SEPARATOR, OPENAI_WHITESPACE from argilla.client.feedback.schemas import ( FeedbackRecord, @@ -62,9 +61,8 @@ if TYPE_CHECKING: import datasets import spacy - from sentence_transformers import InputExample - from argilla.client.feedback.dataset import FeedbackDataset + from sentence_transformers import InputExample class TrainingData(ABC): diff --git a/tests/integration/client/apis/test_base.py b/tests/integration/client/apis/test_base.py index bc8cffc6a0..c753b31862 100644 --- a/tests/integration/client/apis/test_base.py +++ b/tests/integration/client/apis/test_base.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.client import singleton from argilla.client.apis import AbstractApi, api_compatibility from argilla.client.sdk._helpers import handle_response_error diff --git a/tests/integration/client/conftest.py b/tests/integration/client/conftest.py index 24ac6be99a..2f5d49ae5a 100644 --- a/tests/integration/client/conftest.py +++ b/tests/integration/client/conftest.py @@ -17,9 +17,6 @@ from typing import TYPE_CHECKING, Generator, List import pytest -from argilla_server.models import User -from datasets import Dataset - from argilla import SpanQuestion from argilla.client.api import log from argilla.client.datasets import read_datasets @@ -60,6 +57,9 @@ TokenClassificationBulkData, ) from argilla.client.singleton import init +from argilla_server.models import User +from datasets import Dataset + from tests.integration.utils import delete_ignoring_errors if TYPE_CHECKING: diff --git a/tests/integration/client/feedback/conftest.py b/tests/integration/client/feedback/conftest.py index 7c671660f6..205d094759 100644 --- a/tests/integration/client/feedback/conftest.py +++ b/tests/integration/client/feedback/conftest.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING, Any, List import pytest - from argilla.client import singleton from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.schemas.metadata import ( @@ -30,10 +29,9 @@ from argilla.feedback import TrainingTask if TYPE_CHECKING: - from pytest_mock import MockerFixture - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes from argilla.client.sdk.users.models import UserModel as User + from pytest_mock import MockerFixture @pytest.fixture diff --git a/tests/integration/client/feedback/dataset/local/test_dataset.py b/tests/integration/client/feedback/dataset/local/test_dataset.py index 168add0222..88346f4f1f 100644 --- a/tests/integration/client/feedback/dataset/local/test_dataset.py +++ b/tests/integration/client/feedback/dataset/local/test_dataset.py @@ -15,10 +15,9 @@ import tempfile from typing import TYPE_CHECKING, List, Type, Union +import argilla.client.singleton import datasets import pytest - -import argilla.client.singleton from argilla import ResponseSchema, User, Workspace from argilla.client.feedback.config import DatasetConfig from argilla.client.feedback.constants import FETCHING_BATCH_SIZE @@ -39,10 +38,10 @@ from argilla.feedback import SpanValueSchema if TYPE_CHECKING: + from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes from argilla_server.models import User as ServerUser from sqlalchemy.ext.asyncio import AsyncSession - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes from tests.integration.helpers import SecuredClient diff --git a/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py b/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py index 38cababe58..c9be382ef3 100644 --- a/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py +++ b/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py @@ -15,7 +15,6 @@ from typing import Callable import pytest - from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.schemas import ( LabelQuestion, diff --git a/tests/integration/client/feedback/dataset/remote/test_dataset.py b/tests/integration/client/feedback/dataset/remote/test_dataset.py index 209fb6b959..f335a67c94 100644 --- a/tests/integration/client/feedback/dataset/remote/test_dataset.py +++ b/tests/integration/client/feedback/dataset/remote/test_dataset.py @@ -16,13 +16,9 @@ from typing import TYPE_CHECKING, Any, List, Tuple, Type from uuid import UUID -import pytest -from argilla_server.models import User as ServerUser -from argilla_server.settings import settings -from sqlalchemy.ext.asyncio import AsyncSession - import argilla as rg import argilla.client.singleton +import pytest from argilla import FeedbackRecord, SuggestionSchema from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset @@ -49,6 +45,10 @@ from argilla.client.sdk.commons.errors import ValidationApiError from argilla.client.sdk.users.models import UserRole from argilla.client.workspaces import Workspace +from argilla_server.models import User as ServerUser +from argilla_server.settings import settings +from sqlalchemy.ext.asyncio import AsyncSession + from tests.factories import ( DatasetFactory, RecordFactory, diff --git a/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py b/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py index 95f6801acd..add3c90c4e 100644 --- a/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py +++ b/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py @@ -16,11 +16,8 @@ from typing import List, Union from uuid import UUID -import pytest -from argilla_server.models import User -from sqlalchemy.ext.asyncio import AsyncSession - import argilla.client.singleton +import pytest from argilla import SortBy, TextField, TextQuestion from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.schemas.enums import ResponseStatusFilter @@ -38,6 +35,9 @@ from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes from argilla.client.sdk.users.models import UserRole from argilla.client.workspaces import Workspace +from argilla_server.models import User +from sqlalchemy.ext.asyncio import AsyncSession + from tests.factories import ( DatasetFactory, RecordFactory, diff --git a/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py b/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py index c77beced90..a5899fc699 100644 --- a/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py +++ b/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py @@ -12,9 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest - import argilla.client.singleton as rg +import pytest from argilla import User, ValueSchema, Workspace from argilla.client.feedback.schemas.enums import ResponseStatus from argilla.client.sdk.users.models import UserRole diff --git a/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py b/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py index 9333b85199..c9c8c70cbd 100644 --- a/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py +++ b/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py @@ -13,9 +13,8 @@ # limitations under the License. from typing import Any, List, Union -import pytest - import argilla.client.singleton as rg +import pytest from argilla import User, Workspace from argilla.feedback import ( FeedbackDataset, diff --git a/tests/integration/client/feedback/integrations/huggingface/test_dataset.py b/tests/integration/client/feedback/integrations/huggingface/test_dataset.py index b2ddf4e75b..baf8023519 100644 --- a/tests/integration/client/feedback/integrations/huggingface/test_dataset.py +++ b/tests/integration/client/feedback/integrations/huggingface/test_dataset.py @@ -16,9 +16,8 @@ import re from uuid import uuid4 -import pytest - import argilla as rg +import pytest @pytest.mark.skipif(os.getenv("HF_HUB_ACCESS_TOKEN") is None, reason="`HF_HUB_ACCESS_TOKEN` is not set") diff --git a/tests/integration/client/feedback/integrations/huggingface/test_model_card.py b/tests/integration/client/feedback/integrations/huggingface/test_model_card.py index 6ab238b51f..58a6ee451a 100644 --- a/tests/integration/client/feedback/integrations/huggingface/test_model_card.py +++ b/tests/integration/client/feedback/integrations/huggingface/test_model_card.py @@ -22,7 +22,6 @@ from typing import TYPE_CHECKING, Callable, List, Union import pytest - from argilla.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, @@ -31,6 +30,7 @@ from argilla.client.feedback.unification import LabelQuestionUnification from argilla.client.models import Framework from argilla.feedback import ArgillaTrainer, FeedbackDataset, TrainingTask + from tests.integration.client.feedback.helpers import ( formatting_func_chat_completion, formatting_func_dpo, diff --git a/tests/integration/client/feedback/integrations/test_sentencetransformers.py b/tests/integration/client/feedback/integrations/test_sentencetransformers.py index f67f642528..deb90741a1 100644 --- a/tests/integration/client/feedback/integrations/test_sentencetransformers.py +++ b/tests/integration/client/feedback/integrations/test_sentencetransformers.py @@ -15,14 +15,14 @@ from typing import List import pytest -from typing_extensions import TYPE_CHECKING - from argilla import init from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor from argilla.client.feedback.schemas.fields import TextField from argilla.client.feedback.schemas.questions import TextQuestion from argilla.client.feedback.schemas.records import FeedbackRecord +from typing_extensions import TYPE_CHECKING + from tests.factories import WorkspaceFactory if TYPE_CHECKING: diff --git a/tests/integration/client/feedback/integrations/test_textdescriptives.py b/tests/integration/client/feedback/integrations/test_textdescriptives.py index bd85dcbac9..70395ade59 100644 --- a/tests/integration/client/feedback/integrations/test_textdescriptives.py +++ b/tests/integration/client/feedback/integrations/test_textdescriptives.py @@ -15,14 +15,14 @@ from typing import List import pytest -from typing_extensions import TYPE_CHECKING - from argilla import init from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor from argilla.client.feedback.schemas.fields import TextField from argilla.client.feedback.schemas.questions import TextQuestion from argilla.client.feedback.schemas.records import FeedbackRecord +from typing_extensions import TYPE_CHECKING + from tests.factories import WorkspaceFactory if TYPE_CHECKING: diff --git a/tests/integration/client/feedback/metrics/test_agreement_metrics.py b/tests/integration/client/feedback/metrics/test_agreement_metrics.py index 4eee6949b5..d2cef9f226 100644 --- a/tests/integration/client/feedback/metrics/test_agreement_metrics.py +++ b/tests/integration/client/feedback/metrics/test_agreement_metrics.py @@ -16,7 +16,6 @@ from typing import TYPE_CHECKING, FrozenSet, List, Tuple, Union import pytest - from argilla import User, init from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.metrics.agreement_metrics import ( @@ -25,6 +24,7 @@ prepare_dataset_for_annotation_task, ) from argilla.client.feedback.schemas import FeedbackRecord + from tests.factories import UserFactory, WorkspaceFactory if TYPE_CHECKING: diff --git a/tests/integration/client/feedback/metrics/test_annotator_metrics.py b/tests/integration/client/feedback/metrics/test_annotator_metrics.py index ca4acfbff3..301a2ededd 100644 --- a/tests/integration/client/feedback/metrics/test_annotator_metrics.py +++ b/tests/integration/client/feedback/metrics/test_annotator_metrics.py @@ -16,12 +16,12 @@ from typing import TYPE_CHECKING, List, Union import pytest - from argilla import User, init from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.metrics.annotator_metrics import AnnotatorMetric, UnifiedAnnotatorMetric from argilla.client.feedback.metrics.base import ModelMetricResult from argilla.client.feedback.schemas import FeedbackRecord + from tests.factories import UserFactory, WorkspaceFactory if TYPE_CHECKING: diff --git a/tests/integration/client/feedback/metrics/test_utils.py b/tests/integration/client/feedback/metrics/test_utils.py index 071df76ac0..cfbb982177 100644 --- a/tests/integration/client/feedback/metrics/test_utils.py +++ b/tests/integration/client/feedback/metrics/test_utils.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING, List, Optional, Union import pytest - from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.metrics.utils import ( get_responses_and_suggestions_per_user, diff --git a/tests/integration/client/feedback/schemas/remote/test_metadata.py b/tests/integration/client/feedback/schemas/remote/test_metadata.py index 5af7c0bb02..e6a557fffb 100644 --- a/tests/integration/client/feedback/schemas/remote/test_metadata.py +++ b/tests/integration/client/feedback/schemas/remote/test_metadata.py @@ -14,10 +14,9 @@ from typing import TYPE_CHECKING, List, Type, Union -import pytest - import argilla as rg import argilla.client.singleton +import pytest from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset from argilla.client.feedback.schemas.remote.metadata import ( RemoteFloatMetadataProperty, diff --git a/tests/integration/client/feedback/schemas/remote/test_records.py b/tests/integration/client/feedback/schemas/remote/test_records.py index a18756c7cd..bf30a1f62e 100644 --- a/tests/integration/client/feedback/schemas/remote/test_records.py +++ b/tests/integration/client/feedback/schemas/remote/test_records.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING import pytest - from argilla import ( FloatMetadataProperty, IntegerMetadataProperty, @@ -29,6 +28,7 @@ from argilla.client.feedback.schemas.records import FeedbackRecord, SuggestionSchema from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord, RemoteSuggestionSchema from argilla.client.sdk.users.models import UserRole + from tests.factories import ( DatasetFactory, RecordFactory, diff --git a/tests/integration/client/feedback/test_unification.py b/tests/integration/client/feedback/test_unification.py index 8ff6bc7348..8d0741cb68 100644 --- a/tests/integration/client/feedback/test_unification.py +++ b/tests/integration/client/feedback/test_unification.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, diff --git a/tests/integration/client/feedback/training/test_openai.py b/tests/integration/client/feedback/training/test_openai.py index b1d0f6416e..44a7c70259 100644 --- a/tests/integration/client/feedback/training/test_openai.py +++ b/tests/integration/client/feedback/training/test_openai.py @@ -14,11 +14,11 @@ import re -import pytest - import argilla as rg +import pytest from argilla.client.feedback.training.schemas.return_types import ChatCompletionReturnTypes from argilla.feedback import ArgillaTrainer, FeedbackDataset, TrainingTask + from tests.integration.client.feedback.helpers import formatting_func_chat_completion diff --git a/tests/integration/client/feedback/training/test_sentence_transformers.py b/tests/integration/client/feedback/training/test_sentence_transformers.py index 1f70c6b14b..5b6f18bc7f 100644 --- a/tests/integration/client/feedback/training/test_sentence_transformers.py +++ b/tests/integration/client/feedback/training/test_sentence_transformers.py @@ -15,8 +15,6 @@ from typing import TYPE_CHECKING, Callable, List, Union import pytest -from sentence_transformers import CrossEncoder, InputExample, SentenceTransformer - from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.schemas.fields import TextField from argilla.client.feedback.schemas.questions import LabelQuestion @@ -27,6 +25,8 @@ RatingQuestionUnification, TrainingTask, ) +from sentence_transformers import CrossEncoder, InputExample, SentenceTransformer + from tests.integration.client.feedback.helpers import ( formatting_func_sentence_transformers, formatting_func_sentence_transformers_all_lists, diff --git a/tests/integration/client/feedback/training/test_trainer.py b/tests/integration/client/feedback/training/test_trainer.py index 797574e708..ee56d6e323 100644 --- a/tests/integration/client/feedback/training/test_trainer.py +++ b/tests/integration/client/feedback/training/test_trainer.py @@ -26,8 +26,6 @@ import sys from pathlib import Path -from transformers import AutoModelForSequenceClassification, AutoTokenizer - from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.schemas import ( FeedbackRecord, @@ -50,6 +48,8 @@ ) from argilla.client.feedback.unification import LabelQuestionUnification from argilla.client.models import Framework +from transformers import AutoModelForSequenceClassification, AutoTokenizer + from tests.integration.training.helpers import train_with_cleanup __OUTPUT_DIR__ = "tmp" diff --git a/tests/integration/client/feedback/training/test_trl.py b/tests/integration/client/feedback/training/test_trl.py index c44f5a41f5..352171ee4c 100644 --- a/tests/integration/client/feedback/training/test_trl.py +++ b/tests/integration/client/feedback/training/test_trl.py @@ -18,11 +18,6 @@ from typing import TYPE_CHECKING, Any, Callable, Dict, Iterator, List import pytest -from datasets import Dataset, DatasetDict -from peft import LoraConfig, TaskType -from transformers import AutoModelForCausalLM, AutoModelForSequenceClassification, AutoTokenizer -from trl import AutoModelForCausalLMWithValueHead - from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.schemas.records import FeedbackRecord from argilla.client.feedback.training.base import ArgillaTrainer @@ -35,6 +30,11 @@ RMReturnTypes, SFTReturnTypes, ) +from datasets import Dataset, DatasetDict +from peft import LoraConfig, TaskType +from transformers import AutoModelForCausalLM, AutoModelForSequenceClassification, AutoTokenizer +from trl import AutoModelForCausalLMWithValueHead + from tests.integration.client.feedback.helpers import ( formatting_func_dpo, formatting_func_ppo, diff --git a/tests/integration/client/sdk/api/test_commons.py b/tests/integration/client/sdk/api/test_commons.py index a3b69a78d0..7f0584ee28 100644 --- a/tests/integration/client/sdk/api/test_commons.py +++ b/tests/integration/client/sdk/api/test_commons.py @@ -14,12 +14,11 @@ # limitations under the License. import httpx -from argilla_server.commons.models import TaskType - from argilla.client.sdk.commons.api import bulk from argilla.client.sdk.commons.models import ( BulkResponse, ) +from argilla_server.commons.models import TaskType def test_text2text_bulk(sdk_client, mocked_client, bulk_text2text_data, monkeypatch): diff --git a/tests/integration/client/sdk/api/test_datasets.py b/tests/integration/client/sdk/api/test_datasets.py index 11983269c6..58984005c3 100644 --- a/tests/integration/client/sdk/api/test_datasets.py +++ b/tests/integration/client/sdk/api/test_datasets.py @@ -13,12 +13,12 @@ # limitations under the License. import pytest -from argilla_server.models import UserRole - from argilla.client.client import Argilla from argilla.client.sdk.datasets.api import get_dataset, list_datasets from argilla.client.sdk.datasets.models import Dataset, TaskType from argilla.client.sdk.text_classification.models import TextClassificationBulkData +from argilla_server.models import UserRole + from tests.factories import UserFactory, WorkspaceFactory diff --git a/tests/integration/client/sdk/api/test_users.py b/tests/integration/client/sdk/api/test_users.py index eaf46cce22..dbaa58af64 100644 --- a/tests/integration/client/sdk/api/test_users.py +++ b/tests/integration/client/sdk/api/test_users.py @@ -16,7 +16,6 @@ from uuid import uuid4 import pytest - from argilla.client.client import Argilla from argilla.client.sdk.client import AuthenticatedClient from argilla.client.sdk.commons.errors import ( @@ -30,6 +29,7 @@ from argilla.client.sdk.users.api import create_user, delete_user, list_users, whoami from argilla.client.sdk.users.models import UserModel from argilla.client.singleton import ArgillaSingleton + from tests.factories import WorkspaceFactory if TYPE_CHECKING: diff --git a/tests/integration/client/sdk/api/test_workspaces.py b/tests/integration/client/sdk/api/test_workspaces.py index 3aede170d2..302da17d55 100644 --- a/tests/integration/client/sdk/api/test_workspaces.py +++ b/tests/integration/client/sdk/api/test_workspaces.py @@ -13,8 +13,6 @@ # limitations under the License. import pytest -from argilla_server.models import User - from argilla.client.sdk.users.models import UserModel from argilla.client.sdk.workspaces.api import ( create_workspace, @@ -24,6 +22,8 @@ ) from argilla.client.sdk.workspaces.models import WorkspaceModel from argilla.client.singleton import ArgillaSingleton +from argilla_server.models import User + from tests.factories import WorkspaceFactory, WorkspaceUserFactory diff --git a/tests/integration/client/sdk/conftest.py b/tests/integration/client/sdk/conftest.py index ef9310bafd..e9baf5c4ae 100644 --- a/tests/integration/client/sdk/conftest.py +++ b/tests/integration/client/sdk/conftest.py @@ -16,9 +16,8 @@ from datetime import datetime from typing import Any, Dict, List -import pytest - import argilla as rg +import pytest from argilla._constants import DEFAULT_API_KEY from argilla.client.models import ( Text2TextRecord, diff --git a/tests/integration/client/sdk/v1/test_datasets.py b/tests/integration/client/sdk/v1/test_datasets.py index 24733612d9..b6a4d60be2 100644 --- a/tests/integration/client/sdk/v1/test_datasets.py +++ b/tests/integration/client/sdk/v1/test_datasets.py @@ -12,10 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest -from argilla_server.models import DatasetStatus, User, UserRole - import argilla.client.singleton +import pytest from argilla import ( FeedbackDataset, FloatMetadataProperty, @@ -59,6 +57,8 @@ FeedbackSuggestionModel, ) from argilla.client.sdk.v1.records.api import set_suggestion +from argilla_server.models import DatasetStatus, User, UserRole + from tests.factories import ( DatasetFactory, FloatMetadataPropertyFactory, diff --git a/tests/integration/client/sdk/v1/test_metadata_properties.py b/tests/integration/client/sdk/v1/test_metadata_properties.py index 301a5a1f57..1191adb7c7 100644 --- a/tests/integration/client/sdk/v1/test_metadata_properties.py +++ b/tests/integration/client/sdk/v1/test_metadata_properties.py @@ -15,10 +15,10 @@ from typing import TYPE_CHECKING import pytest -from argilla_server.models import UserRole - from argilla.client.client import Argilla from argilla.client.sdk.v1.metadata_properties.api import delete_metadata_property, update_metadata_property +from argilla_server.models import UserRole + from tests.factories import ( DatasetFactory, FloatMetadataPropertyFactory, diff --git a/tests/integration/client/sdk/v1/test_records.py b/tests/integration/client/sdk/v1/test_records.py index 37e9d8f09f..d47487feb4 100644 --- a/tests/integration/client/sdk/v1/test_records.py +++ b/tests/integration/client/sdk/v1/test_records.py @@ -12,11 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest -from argilla_server.models import User as ServerUser -from argilla_server.models import UserRole - import argilla.client.singleton +import pytest from argilla import ( FeedbackDataset, FeedbackRecord, @@ -32,6 +29,9 @@ from argilla.client.client import Argilla from argilla.client.sdk.v1.records.api import delete_record, delete_suggestions, update_record from argilla.client.sdk.v1.records.models import FeedbackItemModel +from argilla_server.models import User as ServerUser +from argilla_server.models import UserRole + from tests.factories import ( DatasetFactory, RatingQuestionFactory, diff --git a/tests/integration/client/sdk/v1/test_suggestions.py b/tests/integration/client/sdk/v1/test_suggestions.py index ae7c5f57e4..69e19af32e 100644 --- a/tests/integration/client/sdk/v1/test_suggestions.py +++ b/tests/integration/client/sdk/v1/test_suggestions.py @@ -13,8 +13,6 @@ # limitations under the License. import pytest -from argilla_server.models import UserRole - from argilla.client.client import Argilla from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.schemas.fields import TextField @@ -22,6 +20,8 @@ from argilla.client.feedback.schemas.records import FeedbackRecord from argilla.client.sdk.v1.suggestions.api import delete_suggestion from argilla.client.singleton import init +from argilla_server.models import UserRole + from tests.factories import UserFactory, WorkspaceFactory diff --git a/tests/integration/client/sdk/v1/test_users.py b/tests/integration/client/sdk/v1/test_users.py index a01095febc..98247db93c 100644 --- a/tests/integration/client/sdk/v1/test_users.py +++ b/tests/integration/client/sdk/v1/test_users.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING import pytest - from argilla.client.sdk.v1.users.api import list_user_workspaces from argilla.client.sdk.v1.workspaces.models import WorkspaceModel from argilla.client.singleton import ArgillaSingleton diff --git a/tests/integration/client/sdk/v1/test_workspaces.py b/tests/integration/client/sdk/v1/test_workspaces.py index 76414f58a5..8131173406 100644 --- a/tests/integration/client/sdk/v1/test_workspaces.py +++ b/tests/integration/client/sdk/v1/test_workspaces.py @@ -13,11 +13,11 @@ # limitations under the License. import pytest - from argilla.client.sdk.users.models import UserRole from argilla.client.sdk.v1.workspaces.api import get_workspace, list_workspaces_me from argilla.client.sdk.v1.workspaces.models import WorkspaceModel from argilla.client.singleton import ArgillaSingleton + from tests.factories import UserFactory, WorkspaceFactory diff --git a/tests/integration/client/test_api.py b/tests/integration/client/test_api.py index b042c1b39a..d3cb9e85b9 100644 --- a/tests/integration/client/test_api.py +++ b/tests/integration/client/test_api.py @@ -26,14 +26,6 @@ import httpx import pandas as pd import pytest -from argilla_server.apis.v0.models.text_classification import ( - TextClassificationBulkRequest, - TextClassificationRecordInputs, -) -from argilla_server.commons.models import TaskStatus -from argilla_server.models import User, UserRole -from httpx import ConnectError - from argilla._constants import ( DEFAULT_API_KEY, WORKSPACE_HEADER_NAME, @@ -83,6 +75,14 @@ from argilla.client.sdk.v1.workspaces import api as workspaces_api_v1 from argilla.client.sdk.workspaces.models import WorkspaceModel from argilla.client.singleton import active_client, init +from argilla_server.apis.v0.models.text_classification import ( + TextClassificationBulkRequest, + TextClassificationRecordInputs, +) +from argilla_server.commons.models import TaskStatus +from argilla_server.models import User, UserRole +from httpx import ConnectError + from tests.factories import UserFactory, WorkspaceFactory from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/client/test_asgi.py b/tests/integration/client/test_asgi.py index 1bde58bc30..3bc55aefb8 100644 --- a/tests/integration/client/test_asgi.py +++ b/tests/integration/client/test_asgi.py @@ -16,18 +16,18 @@ import time from typing import Any, Dict -from argilla_server.models import User -from fastapi import FastAPI -from starlette.applications import Starlette -from starlette.responses import JSONResponse, PlainTextResponse -from starlette.testclient import TestClient - import argilla from argilla.monitoring.asgi import ( ArgillaLogHTTPMiddleware, text_classification_mapper, token_classification_mapper, ) +from argilla_server.models import User +from fastapi import FastAPI +from starlette.applications import Starlette +from starlette.responses import JSONResponse, PlainTextResponse +from starlette.testclient import TestClient + from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/client/test_client.py b/tests/integration/client/test_client.py index 4f987573ad..12e3daccb5 100644 --- a/tests/integration/client/test_client.py +++ b/tests/integration/client/test_client.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.client.sdk.client import Client from argilla.client.singleton import active_api diff --git a/tests/integration/client/test_client_errors.py b/tests/integration/client/test_client_errors.py index 9e0df83b79..1df36819be 100644 --- a/tests/integration/client/test_client_errors.py +++ b/tests/integration/client/test_client_errors.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.client.sdk.commons.errors import UnauthorizedApiError from argilla.client.singleton import init diff --git a/tests/integration/client/test_dataset.py b/tests/integration/client/test_dataset.py index 6dc68ccf2a..ab7699c46e 100644 --- a/tests/integration/client/test_dataset.py +++ b/tests/integration/client/test_dataset.py @@ -21,7 +21,6 @@ import pandas as pd import pytest import spacy - from argilla.client.datasets import ( DatasetBase, DatasetForText2Text, diff --git a/tests/integration/client/test_init.py b/tests/integration/client/test_init.py index cf2508ebbb..4766d4ede3 100644 --- a/tests/integration/client/test_init.py +++ b/tests/integration/client/test_init.py @@ -11,13 +11,13 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import pytest -from argilla_server.models import User - import argilla.client.singleton +import pytest from argilla.client import api from argilla.client.models import TextClassificationRecord from argilla.client.singleton import active_api, active_client +from argilla_server.models import User + from tests.factories import UserFactory, WorkspaceFactory from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/client/test_models.py b/tests/integration/client/test_models.py index 1489e53849..a41f4b8e19 100644 --- a/tests/integration/client/test_models.py +++ b/tests/integration/client/test_models.py @@ -20,14 +20,13 @@ import numpy import pandas as pd import pytest -from pydantic import ValidationError - from argilla.client.models import ( Text2TextRecord, TextClassificationRecord, TokenClassificationRecord, _Validators, ) +from pydantic import ValidationError @pytest.mark.parametrize( diff --git a/tests/integration/client/test_record_update.py b/tests/integration/client/test_record_update.py index e2fb6a2722..d2452f1fe3 100644 --- a/tests/integration/client/test_record_update.py +++ b/tests/integration/client/test_record_update.py @@ -13,10 +13,9 @@ # limitations under the License. import pytest -from argilla_server.models import User - from argilla.client.sdk.commons.errors import NotFoundApiError from argilla.client.singleton import active_api, init +from argilla_server.models import User def test_partial_update_with_not_found(argilla_user: User, gutenberg_spacy_ner: str): diff --git a/tests/integration/client/test_scan_raw_records.py b/tests/integration/client/test_scan_raw_records.py index 88e30274c7..67ec6f7489 100644 --- a/tests/integration/client/test_scan_raw_records.py +++ b/tests/integration/client/test_scan_raw_records.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.client.api import load from argilla.client.sdk.token_classification.models import TokenClassificationRecord from argilla.client.singleton import active_api @@ -24,9 +23,8 @@ argvalues=(set(), {"text"}, {"tokens"}), ) def test_scan_records(gutenberg_spacy_ner, fields): - import pandas as pd - import argilla as rg + import pandas as pd data = active_api().datasets.scan( name=gutenberg_spacy_ner, diff --git a/tests/integration/client/test_users.py b/tests/integration/client/test_users.py index 7de1905f1a..ca83734859 100644 --- a/tests/integration/client/test_users.py +++ b/tests/integration/client/test_users.py @@ -16,7 +16,6 @@ from uuid import UUID import pytest - from argilla.client.sdk.users.models import UserRole from argilla.client.sdk.v1.workspaces.models import WorkspaceModel as WorkspaceModelV1 from argilla.client.sdk.workspaces.models import WorkspaceModel as WorkspaceModelV0 diff --git a/tests/integration/client/test_utils.py b/tests/integration/client/test_utils.py index a9c50b2a8e..20e0a880c4 100644 --- a/tests/integration/client/test_utils.py +++ b/tests/integration/client/test_utils.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING import pytest - from argilla._version import version from argilla.client import singleton from argilla.client.utils import ServerInfo, server_info diff --git a/tests/integration/client/test_workspaces.py b/tests/integration/client/test_workspaces.py index a113b07271..8bdf631de3 100644 --- a/tests/integration/client/test_workspaces.py +++ b/tests/integration/client/test_workspaces.py @@ -16,10 +16,10 @@ from uuid import UUID, uuid4 import pytest - from argilla.client.sdk.users.models import UserModel, UserRole from argilla.client.singleton import ArgillaSingleton from argilla.client.workspaces import Workspace + from tests.factories import ( DatasetFactory, UserFactory, diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index cf77322844..b2e43961bf 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -20,15 +20,6 @@ import httpx import pytest import pytest_asyncio -from argilla_server import telemetry as server_telemetry -from argilla_server.cli.database.migrate import migrate_db -from argilla_server.database import get_async_db -from argilla_server.models import User, UserRole, Workspace -from argilla_server.settings import settings -from fastapi.testclient import TestClient -from sqlalchemy import create_engine -from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine - from argilla._constants import API_KEY_HEADER_NAME, DEFAULT_API_KEY from argilla.client.api import log from argilla.client.apis.datasets import TextClassificationSettings @@ -39,6 +30,15 @@ from argilla.client.singleton import ArgillaSingleton from argilla.datasets import configure_dataset from argilla.utils import telemetry as client_telemetry +from argilla_server import telemetry as server_telemetry +from argilla_server.cli.database.migrate import migrate_db +from argilla_server.database import get_async_db +from argilla_server.models import User, UserRole, Workspace +from argilla_server.settings import settings +from fastapi.testclient import TestClient +from sqlalchemy import create_engine +from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine + from tests.factories import ( AnnotatorFactory, OwnerFactory, diff --git a/tests/integration/helpers.py b/tests/integration/helpers.py index a9bf326cf9..1d5c6a24fd 100644 --- a/tests/integration/helpers.py +++ b/tests/integration/helpers.py @@ -12,14 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.models import User -from fastapi import FastAPI -from starlette.testclient import TestClient - from argilla._constants import ( API_KEY_HEADER_NAME, WORKSPACE_HEADER_NAME, ) +from argilla_server.models import User +from fastapi import FastAPI +from starlette.testclient import TestClient class SecuredClient: diff --git a/tests/integration/labeling/text_classification/test_label_errors.py b/tests/integration/labeling/text_classification/test_label_errors.py index 335f87d78c..c878460b14 100644 --- a/tests/integration/labeling/text_classification/test_label_errors.py +++ b/tests/integration/labeling/text_classification/test_label_errors.py @@ -16,8 +16,6 @@ import cleanlab import pytest -from pkg_resources import parse_version - from argilla import User from argilla.client.api import delete, load, log from argilla.client.models import TextClassificationRecord @@ -29,6 +27,7 @@ SortBy, _construct_s_and_psx, ) +from pkg_resources import parse_version @pytest.fixture(params=[False, True], ids=["single_label", "multi_label"], scope="module") diff --git a/tests/integration/labeling/text_classification/test_rule.py b/tests/integration/labeling/text_classification/test_rule.py index be4a652edc..d618be5150 100644 --- a/tests/integration/labeling/text_classification/test_rule.py +++ b/tests/integration/labeling/text_classification/test_rule.py @@ -14,8 +14,6 @@ # limitations under the License. import httpx import pytest -from argilla_server.errors import EntityNotFoundError - from argilla import User from argilla.client.api import copy, delete, load from argilla.client.models import TextClassificationRecord @@ -32,6 +30,8 @@ update_rules, ) from argilla.labeling.text_classification.rule import RuleNotAppliedError +from argilla_server.errors import EntityNotFoundError + from tests.integration.helpers import SecuredClient from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/labeling/text_classification/test_weak_labels.py b/tests/integration/labeling/text_classification/test_weak_labels.py index 27e7d8f43a..358243fe7a 100644 --- a/tests/integration/labeling/text_classification/test_weak_labels.py +++ b/tests/integration/labeling/text_classification/test_weak_labels.py @@ -18,9 +18,6 @@ import numpy as np import pandas as pd import pytest -from argilla_server.commons.models import TaskType -from pandas.testing import assert_frame_equal - from argilla.client.models import TextClassificationRecord from argilla.client.sdk.text_classification.models import ( CreationTextClassificationRecord, @@ -36,6 +33,9 @@ NoRulesFoundError, WeakLabelsBase, ) +from argilla_server.commons.models import TaskType +from pandas.testing import assert_frame_equal + from tests.integration.helpers import SecuredClient diff --git a/tests/integration/listeners/test_listener.py b/tests/integration/listeners/test_listener.py index c9e1c7fb3f..7eb141c20c 100644 --- a/tests/integration/listeners/test_listener.py +++ b/tests/integration/listeners/test_listener.py @@ -15,9 +15,8 @@ import time from typing import List -import pytest - import argilla as rg +import pytest from argilla import RGListenerContext, listener from argilla.client.api import delete, log from argilla.client.models import Record, TextClassificationRecord diff --git a/tests/integration/metrics/test_common_metrics.py b/tests/integration/metrics/test_common_metrics.py index f330724e00..3b861ca8fd 100644 --- a/tests/integration/metrics/test_common_metrics.py +++ b/tests/integration/metrics/test_common_metrics.py @@ -12,14 +12,14 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import pytest - import argilla import argilla as rg import argilla.client.singleton +import pytest from argilla.client.api import log from argilla.client.models import TextClassificationRecord from argilla.metrics.commons import keywords, records_status, text_length + from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/metrics/test_token_classification.py b/tests/integration/metrics/test_token_classification.py index fb1de923bf..4fcb12fadf 100644 --- a/tests/integration/metrics/test_token_classification.py +++ b/tests/integration/metrics/test_token_classification.py @@ -12,9 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest - import argilla +import pytest from argilla.client.api import load, log from argilla.client.models import TokenClassificationRecord from argilla.metrics import entity_consistency @@ -31,6 +30,7 @@ tokens_length, top_k_mentions, ) + from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/monitoring/test_flair_monitoring.py b/tests/integration/monitoring/test_flair_monitoring.py index 962193fe21..2d96e7685a 100644 --- a/tests/integration/monitoring/test_flair_monitoring.py +++ b/tests/integration/monitoring/test_flair_monitoring.py @@ -14,10 +14,10 @@ from time import sleep -from argilla_server.models import User - from argilla.client.api import load from argilla.monitoring.model_monitor import monitor +from argilla_server.models import User + from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/monitoring/test_monitor.py b/tests/integration/monitoring/test_monitor.py index 1178309c1f..9abaca3105 100644 --- a/tests/integration/monitoring/test_monitor.py +++ b/tests/integration/monitoring/test_monitor.py @@ -14,9 +14,8 @@ import warnings -from argilla_server.models import User - import argilla +from argilla_server.models import User class MockModel: diff --git a/tests/integration/monitoring/test_spacy_monitoring.py b/tests/integration/monitoring/test_spacy_monitoring.py index 17232b4e7c..ee186b0c16 100644 --- a/tests/integration/monitoring/test_spacy_monitoring.py +++ b/tests/integration/monitoring/test_spacy_monitoring.py @@ -17,6 +17,7 @@ from argilla.client.api import load from argilla.monitoring.model_monitor import monitor + from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/monitoring/test_transformers_monitoring.py b/tests/integration/monitoring/test_transformers_monitoring.py index 49e5b3804d..db59a82727 100644 --- a/tests/integration/monitoring/test_transformers_monitoring.py +++ b/tests/integration/monitoring/test_transformers_monitoring.py @@ -14,10 +14,10 @@ from time import sleep from typing import List, Union -import pytest - import argilla +import pytest from argilla.client.models import TextClassificationRecord + from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/test_datasets_settings.py b/tests/integration/test_datasets_settings.py index 7c25febcc5..ddfe90803e 100644 --- a/tests/integration/test_datasets_settings.py +++ b/tests/integration/test_datasets_settings.py @@ -16,9 +16,6 @@ from uuid import uuid4 import pytest -from argilla_server.contexts import accounts -from argilla_server.schemas.v0.workspaces import WorkspaceUserCreate - from argilla import Workspace from argilla.client import singleton from argilla.client.api import get_workspace @@ -32,14 +29,16 @@ configure_dataset_settings, load_dataset_settings, ) +from argilla_server.contexts import accounts +from argilla_server.schemas.v0.workspaces import WorkspaceUserCreate + from tests.integration.utils import delete_ignoring_errors if TYPE_CHECKING: + from argilla.client.apis.datasets import LabelsSchemaSettings from argilla_server.models import User from sqlalchemy.ext.asyncio import AsyncSession - from argilla.client.apis.datasets import LabelsSchemaSettings - from .helpers import SecuredClient diff --git a/tests/integration/test_delete_records_from_datasets.py b/tests/integration/test_delete_records_from_datasets.py index b290b9a332..ae6b235ba1 100644 --- a/tests/integration/test_delete_records_from_datasets.py +++ b/tests/integration/test_delete_records_from_datasets.py @@ -15,13 +15,13 @@ import time import pytest -from argilla_server.models import User, UserRole - from argilla.client.api import delete_records, load, log from argilla.client.client import Argilla from argilla.client.models import TextClassificationRecord from argilla.client.sdk.commons.errors import ForbiddenApiError from argilla.client.singleton import init +from argilla_server.models import User, UserRole + from tests.factories import AnnotatorFactory, UserFactory, WorkspaceFactory from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/test_log_for_text_classification.py b/tests/integration/test_log_for_text_classification.py index c9a98583a4..1c2377d8ce 100644 --- a/tests/integration/test_log_for_text_classification.py +++ b/tests/integration/test_log_for_text_classification.py @@ -14,10 +14,8 @@ from typing import TYPE_CHECKING -import pytest -from argilla_server.settings import settings - import argilla as rg +import pytest from argilla.client.api import load, log from argilla.client.client import Argilla from argilla.client.datasets import read_datasets @@ -28,6 +26,8 @@ ValidationApiError, ) from argilla.client.singleton import init +from argilla_server.settings import settings + from tests.factories import WorkspaceFactory from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/test_log_for_token_classification.py b/tests/integration/test_log_for_token_classification.py index 8eb4f56dba..d106270138 100644 --- a/tests/integration/test_log_for_token_classification.py +++ b/tests/integration/test_log_for_token_classification.py @@ -11,9 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import pytest - import argilla +import pytest from argilla import TokenClassificationRecord from argilla.client import api from argilla.client.client import Argilla @@ -21,6 +20,7 @@ from argilla.client.singleton import ArgillaSingleton from argilla.metrics import __all__ as ALL_METRICS from argilla.metrics import entity_consistency + from tests.integration.utils import delete_ignoring_errors diff --git a/tests/integration/training/test_base.py b/tests/integration/training/test_base.py index 0a7a047a1c..f076ed4191 100644 --- a/tests/integration/training/test_base.py +++ b/tests/integration/training/test_base.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.client.datasets import ( DatasetForTextClassification, DatasetForTokenClassification, diff --git a/tests/integration/training/test_openai.py b/tests/integration/training/test_openai.py index 16c46fbc37..778a97c4c9 100644 --- a/tests/integration/training/test_openai.py +++ b/tests/integration/training/test_openai.py @@ -15,7 +15,6 @@ import os import pytest - from argilla.training import ArgillaTrainer FRAMEWORK = "openai" diff --git a/tests/integration/training/test_peft.py b/tests/integration/training/test_peft.py index 404478a68c..cee8ec8066 100644 --- a/tests/integration/training/test_peft.py +++ b/tests/integration/training/test_peft.py @@ -16,7 +16,6 @@ import sys import pytest - from argilla.client.models import TextClassificationRecord, TokenClassificationRecord from argilla.training import ArgillaTrainer diff --git a/tests/integration/training/test_spacy.py b/tests/integration/training/test_spacy.py index a36cd9270e..14a45ab6ad 100644 --- a/tests/integration/training/test_spacy.py +++ b/tests/integration/training/test_spacy.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest - import argilla as rg +import pytest from argilla.training import ArgillaTrainer + from tests.integration.training.helpers import cleanup_spacy_config, train_with_cleanup diff --git a/tests/unit/cli/conftest.py b/tests/unit/cli/conftest.py index 8f1ec2770e..7399836bca 100644 --- a/tests/unit/cli/conftest.py +++ b/tests/unit/cli/conftest.py @@ -18,18 +18,16 @@ import httpx import pytest -from typer.testing import CliRunner - from argilla.cli.app import app from argilla.client.sdk.users.models import UserRole from argilla.client.sdk.v1.workspaces.models import WorkspaceModel from argilla.client.users import User from argilla.client.workspaces import Workspace +from typer.testing import CliRunner if TYPE_CHECKING: - from pytest_mock import MockerFixture - from argilla.cli.typer_ext import ArgillaTyper + from pytest_mock import MockerFixture @pytest.fixture(scope="session") diff --git a/tests/unit/cli/datasets/conftest.py b/tests/unit/cli/datasets/conftest.py index 894f331c51..95d5203343 100644 --- a/tests/unit/cli/datasets/conftest.py +++ b/tests/unit/cli/datasets/conftest.py @@ -18,7 +18,6 @@ import httpx import pytest - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset from argilla.client.feedback.schemas.remote.fields import RemoteTextField diff --git a/tests/unit/cli/datasets/test_delete.py b/tests/unit/cli/datasets/test_delete.py index 14e8cfdeb5..25b58c367e 100644 --- a/tests/unit/cli/datasets/test_delete.py +++ b/tests/unit/cli/datasets/test_delete.py @@ -17,12 +17,11 @@ import pytest if TYPE_CHECKING: + from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset - @pytest.mark.usefixtures("login_mock") class TestSuiteDeleteDataset: diff --git a/tests/unit/cli/datasets/test_list.py b/tests/unit/cli/datasets/test_list.py index 43c0171131..6daa430316 100644 --- a/tests/unit/cli/datasets/test_list.py +++ b/tests/unit/cli/datasets/test_list.py @@ -16,18 +16,16 @@ from unittest.mock import ANY, call import pytest -from rich.table import Table - from argilla.client.enums import DatasetType +from rich.table import Table if TYPE_CHECKING: + from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla.client.sdk.datasets.models import Dataset from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset - from argilla.client.sdk.datasets.models import Dataset - @pytest.mark.usefixtures("login_mock") class TestSuiteListDatasetsCommand: diff --git a/tests/unit/cli/datasets/test_push.py b/tests/unit/cli/datasets/test_push.py index 95def22a99..5ecfd54bd7 100644 --- a/tests/unit/cli/datasets/test_push.py +++ b/tests/unit/cli/datasets/test_push.py @@ -17,13 +17,12 @@ import pytest if TYPE_CHECKING: + from argilla.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset - @pytest.mark.usefixtures("login_mock") class TestSuiteDatasetsPushCommand: diff --git a/tests/unit/cli/info/test_info.py b/tests/unit/cli/info/test_info.py index ca89c32312..aff2c34359 100644 --- a/tests/unit/cli/info/test_info.py +++ b/tests/unit/cli/info/test_info.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING import pytest - from argilla._version import version from argilla.client.apis.status import ApiStatus diff --git a/tests/unit/cli/users/test_create.py b/tests/unit/cli/users/test_create.py index ddfbe24073..ff40d6464b 100644 --- a/tests/unit/cli/users/test_create.py +++ b/tests/unit/cli/users/test_create.py @@ -15,16 +15,14 @@ from typing import TYPE_CHECKING, Type import pytest - from argilla.client.sdk.users.models import UserRole if TYPE_CHECKING: + from argilla.client.users import User from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer - from argilla.client.users import User - @pytest.mark.usefixtures("login_mock") class TestSuiteCreateUserCommand: diff --git a/tests/unit/cli/users/test_delete.py b/tests/unit/cli/users/test_delete.py index be2feabfc7..1435b4fe70 100644 --- a/tests/unit/cli/users/test_delete.py +++ b/tests/unit/cli/users/test_delete.py @@ -17,12 +17,11 @@ import pytest if TYPE_CHECKING: + from argilla.client.users import User from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer - from argilla.client.users import User - @pytest.mark.usefixtures("login_mock") class TestSuiteDeleteUserCommand: diff --git a/tests/unit/cli/users/test_list.py b/tests/unit/cli/users/test_list.py index 115b3f1695..7ef9bc34c5 100644 --- a/tests/unit/cli/users/test_list.py +++ b/tests/unit/cli/users/test_list.py @@ -18,18 +18,16 @@ from uuid import uuid4 import pytest -from rich.table import Table - from argilla.client.sdk.v1.workspaces.models import WorkspaceModel +from rich.table import Table if TYPE_CHECKING: + from argilla.client.users import User + from argilla.client.workspaces import Workspace from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer - from argilla.client.users import User - from argilla.client.workspaces import Workspace - @pytest.mark.usefixtures("login_mock") class TestSuiteListUsersCommand: diff --git a/tests/unit/cli/workspaces/test_list.py b/tests/unit/cli/workspaces/test_list.py index 33cf640065..f88197914a 100644 --- a/tests/unit/cli/workspaces/test_list.py +++ b/tests/unit/cli/workspaces/test_list.py @@ -22,9 +22,9 @@ from pytest_mock import MockerFixture from typer import Typer +from argilla.client.workspaces import Workspace from rich.table import Table -from argilla.client.workspaces import Workspace from tests.factories import WorkspaceSyncFactory diff --git a/tests/unit/client/feedback/conftest.py b/tests/unit/client/feedback/conftest.py index 9cdac99fca..b13fdd5a98 100644 --- a/tests/unit/client/feedback/conftest.py +++ b/tests/unit/client/feedback/conftest.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING, List import pytest - from argilla.client.feedback.schemas.fields import TextField from argilla.client.feedback.schemas.metadata import ( FloatMetadataProperty, diff --git a/tests/unit/client/feedback/dataset/local/test_dataset.py b/tests/unit/client/feedback/dataset/local/test_dataset.py index 62a8dd8b08..5ad494336e 100644 --- a/tests/unit/client/feedback/dataset/local/test_dataset.py +++ b/tests/unit/client/feedback/dataset/local/test_dataset.py @@ -16,7 +16,6 @@ import numpy.array_api import pytest - from argilla import RatingQuestion from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.schemas.fields import TextField diff --git a/tests/unit/client/feedback/dataset/remote/test_dataset.py b/tests/unit/client/feedback/dataset/remote/test_dataset.py index 63448cb6dc..857004ae57 100644 --- a/tests/unit/client/feedback/dataset/remote/test_dataset.py +++ b/tests/unit/client/feedback/dataset/remote/test_dataset.py @@ -19,8 +19,6 @@ import httpx import pytest -from pytest_mock import MockerFixture - from argilla import FeedbackDataset, FeedbackRecord, Workspace from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset from argilla.client.feedback.schemas import SuggestionSchema @@ -36,6 +34,7 @@ FeedbackVectorSettingsModel, ) from argilla.client.sdk.v1.workspaces.models import WorkspaceModel +from pytest_mock import MockerFixture @pytest.fixture() diff --git a/tests/unit/client/feedback/dataset/test_helpers.py b/tests/unit/client/feedback/dataset/test_helpers.py index d52707fdbd..7a95913499 100644 --- a/tests/unit/client/feedback/dataset/test_helpers.py +++ b/tests/unit/client/feedback/dataset/test_helpers.py @@ -15,7 +15,6 @@ from typing import TYPE_CHECKING, Dict, List, Type, Union import pytest - from argilla.client.feedback.dataset.helpers import generate_pydantic_schema_for_metadata from argilla.client.feedback.schemas.metadata import ( FloatMetadataProperty, @@ -27,6 +26,7 @@ RemoteIntegerMetadataProperty, RemoteTermsMetadataProperty, ) + from tests.pydantic_v1 import ValidationError if TYPE_CHECKING: diff --git a/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py b/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py index 16ece71d3d..890cfc3e73 100644 --- a/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py +++ b/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py @@ -18,8 +18,6 @@ from uuid import uuid4 import pytest -from huggingface_hub import DatasetCardData - from argilla.client.feedback.integrations.huggingface.card import ArgillaDatasetCard from argilla.client.feedback.schemas.fields import TextField from argilla.client.feedback.schemas.metadata import ( @@ -37,6 +35,7 @@ from argilla.client.feedback.schemas.records import FeedbackRecord from argilla.client.feedback.schemas.types import AllowedMetadataPropertyTypes from argilla.client.feedback.schemas.vector_settings import VectorSettings +from huggingface_hub import DatasetCardData if TYPE_CHECKING: from argilla.client.feedback.schemas import FeedbackRecord diff --git a/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py b/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py index 4bc6745b3a..5077867149 100644 --- a/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py +++ b/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.client.feedback.integrations.huggingface.card import size_categories_parser diff --git a/tests/unit/client/feedback/integrations/huggingface/test_dataset.py b/tests/unit/client/feedback/integrations/huggingface/test_dataset.py index 8d222df3a6..84c467bfa4 100644 --- a/tests/unit/client/feedback/integrations/huggingface/test_dataset.py +++ b/tests/unit/client/feedback/integrations/huggingface/test_dataset.py @@ -15,7 +15,6 @@ from typing import Any, Dict import pytest - from argilla import SuggestionSchema from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.integrations.huggingface.dataset import HuggingFaceDatasetMixin diff --git a/tests/unit/client/feedback/integrations/huggingface/test_model_card.py b/tests/unit/client/feedback/integrations/huggingface/test_model_card.py index 88fb0c4d66..54a598b279 100644 --- a/tests/unit/client/feedback/integrations/huggingface/test_model_card.py +++ b/tests/unit/client/feedback/integrations/huggingface/test_model_card.py @@ -16,13 +16,12 @@ from typing import Any, Dict import pytest -from transformers import TrainingArguments - from argilla.client.feedback.integrations.huggingface.model_card.model_card import ( _prepare_dict_for_comparison, _updated_arguments, ) from argilla.training.utils import get_default_args +from transformers import TrainingArguments default_transformer_args = get_default_args(TrainingArguments.__init__) default_transformer_args_1 = default_transformer_args.copy() diff --git a/tests/unit/client/feedback/integrations/test_sentencetransformers.py b/tests/unit/client/feedback/integrations/test_sentencetransformers.py index 31f99067ba..a26ac1daa9 100644 --- a/tests/unit/client/feedback/integrations/test_sentencetransformers.py +++ b/tests/unit/client/feedback/integrations/test_sentencetransformers.py @@ -17,14 +17,13 @@ import numpy as np import pytest -from sentence_transformers import SentenceTransformer - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset from argilla.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor from argilla.client.feedback.schemas.fields import TextField from argilla.client.feedback.schemas.questions import TextQuestion from argilla.client.feedback.schemas.records import FeedbackRecord from argilla.client.feedback.schemas.vector_settings import VectorSettings +from sentence_transformers import SentenceTransformer @pytest.fixture(scope="function") diff --git a/tests/unit/client/feedback/integrations/test_textdescriptives.py b/tests/unit/client/feedback/integrations/test_textdescriptives.py index 8e6288b9bf..74a3567e53 100644 --- a/tests/unit/client/feedback/integrations/test_textdescriptives.py +++ b/tests/unit/client/feedback/integrations/test_textdescriptives.py @@ -16,7 +16,6 @@ import pandas as pd import pytest - from argilla.client.feedback.dataset import FeedbackDataset from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor from argilla.client.feedback.schemas.fields import TextField diff --git a/tests/unit/client/feedback/schemas/remote/test_fields.py b/tests/unit/client/feedback/schemas/remote/test_fields.py index 5d93d54d8c..b65f8d873c 100644 --- a/tests/unit/client/feedback/schemas/remote/test_fields.py +++ b/tests/unit/client/feedback/schemas/remote/test_fields.py @@ -17,7 +17,6 @@ from uuid import uuid4 import pytest - from argilla.client.feedback.schemas.enums import FieldTypes from argilla.client.feedback.schemas.fields import TextField from argilla.client.feedback.schemas.remote.fields import RemoteTextField diff --git a/tests/unit/client/feedback/schemas/remote/test_metadata.py b/tests/unit/client/feedback/schemas/remote/test_metadata.py index 7df633feda..1361ff10ef 100644 --- a/tests/unit/client/feedback/schemas/remote/test_metadata.py +++ b/tests/unit/client/feedback/schemas/remote/test_metadata.py @@ -17,7 +17,6 @@ from uuid import uuid4 import pytest - from argilla.client.feedback.schemas.enums import MetadataPropertyTypes from argilla.client.feedback.schemas.metadata import ( FloatMetadataProperty, diff --git a/tests/unit/client/feedback/schemas/remote/test_questions.py b/tests/unit/client/feedback/schemas/remote/test_questions.py index cd422d8e7b..e6cf00a020 100644 --- a/tests/unit/client/feedback/schemas/remote/test_questions.py +++ b/tests/unit/client/feedback/schemas/remote/test_questions.py @@ -17,7 +17,6 @@ from uuid import uuid4 import pytest - from argilla.client.feedback.schemas.enums import LabelsOrder, QuestionTypes from argilla.client.feedback.schemas.questions import ( LabelQuestion, diff --git a/tests/unit/client/feedback/schemas/remote/test_records.py b/tests/unit/client/feedback/schemas/remote/test_records.py index 2e48986a0a..b8debcecb5 100644 --- a/tests/unit/client/feedback/schemas/remote/test_records.py +++ b/tests/unit/client/feedback/schemas/remote/test_records.py @@ -17,7 +17,6 @@ from uuid import UUID, uuid4 import pytest - from argilla.client.feedback.schemas.records import FeedbackRecord, ResponseSchema, SuggestionSchema from argilla.client.feedback.schemas.remote.records import ( RemoteFeedbackRecord, diff --git a/tests/unit/client/feedback/schemas/test_fields.py b/tests/unit/client/feedback/schemas/test_fields.py index 28cd0eab80..69cebf0a62 100644 --- a/tests/unit/client/feedback/schemas/test_fields.py +++ b/tests/unit/client/feedback/schemas/test_fields.py @@ -15,9 +15,9 @@ from typing import Any, Dict import pytest - from argilla.client.feedback.schemas.enums import FieldTypes from argilla.client.feedback.schemas.fields import TextField + from tests.pydantic_v1 import ValidationError diff --git a/tests/unit/client/feedback/schemas/test_metadata.py b/tests/unit/client/feedback/schemas/test_metadata.py index 4d14ae8f62..7e8e93511e 100644 --- a/tests/unit/client/feedback/schemas/test_metadata.py +++ b/tests/unit/client/feedback/schemas/test_metadata.py @@ -15,7 +15,6 @@ from typing import Any, Dict import pytest - from argilla.client.feedback.schemas.enums import MetadataPropertyTypes from argilla.client.feedback.schemas.metadata import ( FloatMetadataFilter, @@ -25,6 +24,7 @@ TermsMetadataFilter, TermsMetadataProperty, ) + from tests.pydantic_v1 import ValidationError, create_model diff --git a/tests/unit/client/feedback/schemas/test_questions.py b/tests/unit/client/feedback/schemas/test_questions.py index b4427df0fc..32e44675b1 100644 --- a/tests/unit/client/feedback/schemas/test_questions.py +++ b/tests/unit/client/feedback/schemas/test_questions.py @@ -15,7 +15,6 @@ from typing import Any, Dict import pytest - from argilla.client.feedback.schemas.enums import LabelsOrder, QuestionTypes from argilla.client.feedback.schemas.questions import ( LabelQuestion, @@ -27,6 +26,7 @@ TextQuestion, _LabelQuestion, ) + from tests.pydantic_v1 import ValidationError diff --git a/tests/unit/client/feedback/schemas/test_records.py b/tests/unit/client/feedback/schemas/test_records.py index 03ac1a38ae..0aaada2e48 100644 --- a/tests/unit/client/feedback/schemas/test_records.py +++ b/tests/unit/client/feedback/schemas/test_records.py @@ -15,7 +15,6 @@ from typing import Any, Dict, List, Optional, Type, Union import pytest - from argilla.client.feedback.schemas.records import ( FeedbackRecord, RankingValueSchema, @@ -24,6 +23,7 @@ SuggestionSchema, ValueSchema, ) + from tests.pydantic_v1 import ValidationError diff --git a/tests/unit/client/feedback/schemas/test_responses.py b/tests/unit/client/feedback/schemas/test_responses.py index 9f71d3caf1..43281e8bc3 100644 --- a/tests/unit/client/feedback/schemas/test_responses.py +++ b/tests/unit/client/feedback/schemas/test_responses.py @@ -14,7 +14,6 @@ from uuid import uuid4 import pytest - from argilla.feedback import ( FeedbackDataset, ResponseSchema, diff --git a/tests/unit/client/feedback/schemas/test_suggestions.py b/tests/unit/client/feedback/schemas/test_suggestions.py index fb7e475d71..5d56f356fb 100644 --- a/tests/unit/client/feedback/schemas/test_suggestions.py +++ b/tests/unit/client/feedback/schemas/test_suggestions.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from argilla.feedback import SuggestionSchema, TextQuestion diff --git a/tests/unit/client/feedback/schemas/test_utils.py b/tests/unit/client/feedback/schemas/test_utils.py index 8ed4f0efa4..554dfe0195 100644 --- a/tests/unit/client/feedback/schemas/test_utils.py +++ b/tests/unit/client/feedback/schemas/test_utils.py @@ -13,6 +13,7 @@ # limitations under the License. from argilla.client.feedback.schemas.utils import LabelMappingMixin + from tests.pydantic_v1 import BaseModel, Field diff --git a/tests/unit/client/feedback/test_config.py b/tests/unit/client/feedback/test_config.py index f86a1f2c2e..77bc6d733f 100644 --- a/tests/unit/client/feedback/test_config.py +++ b/tests/unit/client/feedback/test_config.py @@ -17,12 +17,11 @@ from typing import TYPE_CHECKING, Any, Dict, List import pytest -from yaml import SafeLoader, load - from argilla.client.feedback.config import DatasetConfig, DeprecatedDatasetConfig from argilla.client.feedback.schemas.enums import LabelsOrder from argilla.client.feedback.schemas.fields import FieldSchema from argilla.client.feedback.schemas.questions import QuestionSchema +from yaml import SafeLoader, load if TYPE_CHECKING: from argilla.client.feedback.schemas.types import ( diff --git a/tests/unit/client/feedback/training/test_schemas.py b/tests/unit/client/feedback/training/test_schemas.py index b06fe7c056..f337bcd63f 100644 --- a/tests/unit/client/feedback/training/test_schemas.py +++ b/tests/unit/client/feedback/training/test_schemas.py @@ -15,9 +15,6 @@ import pandas as pd import pytest import spacy -from datasets import Dataset, DatasetDict -from spacy.tokens import DocBin - from argilla import ( LabelQuestion, MultiLabelQuestion, @@ -33,6 +30,8 @@ RatingQuestionUnification, ) from argilla.client.models import Framework +from datasets import Dataset, DatasetDict +from spacy.tokens import DocBin @pytest.mark.parametrize( diff --git a/tests/unit/client/feedback/utils/test_assignment.py b/tests/unit/client/feedback/utils/test_assignment.py index caf36af9c3..7db6a4af2a 100644 --- a/tests/unit/client/feedback/utils/test_assignment.py +++ b/tests/unit/client/feedback/utils/test_assignment.py @@ -16,7 +16,6 @@ from unittest.mock import Mock, patch import pytest - from argilla.client.feedback.utils.assignment import ( assign_records, assign_records_to_groups, diff --git a/tests/unit/client/feedback/utils/test_html_utils.py b/tests/unit/client/feedback/utils/test_html_utils.py index 83af85aefc..da77e9ea99 100644 --- a/tests/unit/client/feedback/utils/test_html_utils.py +++ b/tests/unit/client/feedback/utils/test_html_utils.py @@ -17,7 +17,6 @@ from unittest import mock import pytest - from argilla.client.feedback.utils import ( audio_to_html, create_token_highlights, diff --git a/tests/unit/client/sdk/models/test_datasets.py b/tests/unit/client/sdk/models/test_datasets.py index bab65e537f..b8014d28be 100644 --- a/tests/unit/client/sdk/models/test_datasets.py +++ b/tests/unit/client/sdk/models/test_datasets.py @@ -13,9 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. import pytest -from argilla_server.schemas.v0.datasets import Dataset as ServerDataset - from argilla.client.sdk.datasets.models import Dataset, TaskType +from argilla_server.schemas.v0.datasets import Dataset as ServerDataset def test_dataset_schema(helpers): diff --git a/tests/unit/client/sdk/models/test_text2text.py b/tests/unit/client/sdk/models/test_text2text.py index 5feac33cd6..c4abf84180 100644 --- a/tests/unit/client/sdk/models/test_text2text.py +++ b/tests/unit/client/sdk/models/test_text2text.py @@ -16,9 +16,6 @@ from datetime import datetime import pytest -from argilla_server.apis.v0.models.text2text import Text2TextBulkRequest as ServerText2TextBulkData -from argilla_server.apis.v0.models.text2text import Text2TextQuery as ServerText2TextQuery - from argilla.client.models import Text2TextRecord from argilla.client.sdk.text2text.models import ( CreationText2TextRecord, @@ -28,6 +25,8 @@ Text2TextQuery, ) from argilla.client.sdk.text2text.models import Text2TextRecord as SdkText2TextRecord +from argilla_server.apis.v0.models.text2text import Text2TextBulkRequest as ServerText2TextBulkData +from argilla_server.apis.v0.models.text2text import Text2TextQuery as ServerText2TextQuery def test_bulk_data_schema(helpers): diff --git a/tests/unit/client/sdk/models/test_text_classification.py b/tests/unit/client/sdk/models/test_text_classification.py index 6c61547284..4a7e2d3254 100644 --- a/tests/unit/client/sdk/models/test_text_classification.py +++ b/tests/unit/client/sdk/models/test_text_classification.py @@ -16,15 +16,6 @@ from datetime import datetime import pytest -from argilla_server.apis.v0.models.text_classification import LabelingRule as ServerLabelingRule -from argilla_server.apis.v0.models.text_classification import ( - LabelingRuleMetricsSummary as ServerLabelingRuleMetricsSummary, -) -from argilla_server.apis.v0.models.text_classification import ( - TextClassificationBulkRequest as ServerTextClassificationBulkData, -) -from argilla_server.apis.v0.models.text_classification import TextClassificationQuery as ServerTextClassificationQuery - from argilla.client.models import TextClassificationRecord, TokenAttributions from argilla.client.sdk.text_classification.models import ( ClassPrediction, @@ -36,6 +27,14 @@ TextClassificationQuery, ) from argilla.client.sdk.text_classification.models import TextClassificationRecord as SdkTextClassificationRecord +from argilla_server.apis.v0.models.text_classification import LabelingRule as ServerLabelingRule +from argilla_server.apis.v0.models.text_classification import ( + LabelingRuleMetricsSummary as ServerLabelingRuleMetricsSummary, +) +from argilla_server.apis.v0.models.text_classification import ( + TextClassificationBulkRequest as ServerTextClassificationBulkData, +) +from argilla_server.apis.v0.models.text_classification import TextClassificationQuery as ServerTextClassificationQuery def test_bulk_data_schema(helpers): diff --git a/tests/unit/client/sdk/models/test_token_classification.py b/tests/unit/client/sdk/models/test_token_classification.py index 7eb3e08e1e..101eadf55f 100644 --- a/tests/unit/client/sdk/models/test_token_classification.py +++ b/tests/unit/client/sdk/models/test_token_classification.py @@ -16,13 +16,6 @@ from datetime import datetime import pytest -from argilla_server.apis.v0.models.token_classification import ( - TokenClassificationBulkRequest as ServerTokenClassificationBulkData, -) -from argilla_server.apis.v0.models.token_classification import ( - TokenClassificationQuery as ServerTokenClassificationQuery, -) - from argilla.client.models import TokenClassificationRecord from argilla.client.sdk.token_classification.models import ( CreationTokenClassificationRecord, @@ -32,6 +25,12 @@ TokenClassificationQuery, ) from argilla.client.sdk.token_classification.models import TokenClassificationRecord as SdkTokenClassificationRecord +from argilla_server.apis.v0.models.token_classification import ( + TokenClassificationBulkRequest as ServerTokenClassificationBulkData, +) +from argilla_server.apis.v0.models.token_classification import ( + TokenClassificationQuery as ServerTokenClassificationQuery, +) def test_bulk_data_schema(helpers): diff --git a/tests/unit/client/sdk/models/test_users.py b/tests/unit/client/sdk/models/test_users.py index e40ca0edc5..0ce34f18f3 100644 --- a/tests/unit/client/sdk/models/test_users.py +++ b/tests/unit/client/sdk/models/test_users.py @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +from argilla.client.sdk.users.models import UserModel as ClientUser +from argilla.client.sdk.users.models import UserRole as ClientUserRole from argilla_server.models import UserRole as ServerUserRole from argilla_server.schemas.v0.users import User as ServerUser -from argilla.client.sdk.users.models import UserModel as ClientUser -from argilla.client.sdk.users.models import UserRole as ClientUserRole from tests.unit.client.sdk.models.conftest import Helpers diff --git a/tests/unit/client/sdk/models/test_workspaces.py b/tests/unit/client/sdk/models/test_workspaces.py index 69fb2a23ef..2735694121 100644 --- a/tests/unit/client/sdk/models/test_workspaces.py +++ b/tests/unit/client/sdk/models/test_workspaces.py @@ -12,9 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.schemas.v1.workspaces import Workspace as ServerSchema - from argilla.client.sdk.workspaces.models import WorkspaceModel as ClientSchema +from argilla_server.schemas.v1.workspaces import Workspace as ServerSchema def test_users_schema(helpers): diff --git a/tests/unit/client/sdk/models/v1/test_datasets.py b/tests/unit/client/sdk/models/v1/test_datasets.py index eae7789570..28760b077c 100644 --- a/tests/unit/client/sdk/models/v1/test_datasets.py +++ b/tests/unit/client/sdk/models/v1/test_datasets.py @@ -12,11 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.schemas.v1.datasets import Dataset as ServerSchema -from argilla_server.schemas.v1.questions import Question as ServerQuestionSchema - from argilla.client.sdk.v1.datasets.models import FeedbackDatasetModel as ClientSchema from argilla.client.sdk.v1.datasets.models import FeedbackQuestionModel as ClientQuestionSchema +from argilla_server.schemas.v1.datasets import Dataset as ServerSchema +from argilla_server.schemas.v1.questions import Question as ServerQuestionSchema def test_feedback_dataset_schema(helpers) -> None: diff --git a/tests/unit/client/sdk/models/v1/test_suggestions.py b/tests/unit/client/sdk/models/v1/test_suggestions.py index 97364d3f37..9e573891e2 100644 --- a/tests/unit/client/sdk/models/v1/test_suggestions.py +++ b/tests/unit/client/sdk/models/v1/test_suggestions.py @@ -12,9 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.schemas.v1.suggestions import Suggestion as ServerSchema - from argilla.client.sdk.v1.suggestions.models import SuggestionModel as ClientSchema +from argilla_server.schemas.v1.suggestions import Suggestion as ServerSchema def test_suggestion_schema(helpers) -> None: diff --git a/tests/unit/client/sdk/models/v1/test_workspaces.py b/tests/unit/client/sdk/models/v1/test_workspaces.py index 8cd6a7f9ce..feab948944 100644 --- a/tests/unit/client/sdk/models/v1/test_workspaces.py +++ b/tests/unit/client/sdk/models/v1/test_workspaces.py @@ -12,9 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.schemas.v1.workspaces import Workspace as ServerSchema - from argilla.client.sdk.v1.workspaces.models import WorkspaceModel as ClientSchema +from argilla_server.schemas.v1.workspaces import Workspace as ServerSchema def test_workspace_schema(helpers) -> None: diff --git a/tests/unit/client/sdk/v1/metadata_properties/test_api.py b/tests/unit/client/sdk/v1/metadata_properties/test_api.py index ec75781876..7d689cafc4 100644 --- a/tests/unit/client/sdk/v1/metadata_properties/test_api.py +++ b/tests/unit/client/sdk/v1/metadata_properties/test_api.py @@ -15,7 +15,6 @@ from uuid import uuid4 import httpx - from argilla.client.sdk.v1.metadata_properties.api import update_metadata_property diff --git a/tests/unit/client/sdk/v1/records/test_api.py b/tests/unit/client/sdk/v1/records/test_api.py index db7bff2579..7aaeb1fc1b 100644 --- a/tests/unit/client/sdk/v1/records/test_api.py +++ b/tests/unit/client/sdk/v1/records/test_api.py @@ -16,7 +16,6 @@ from uuid import uuid4 import httpx - from argilla.client.sdk.v1.records.api import update_record diff --git a/tests/unit/client/sdk/v1/test_datasets.py b/tests/unit/client/sdk/v1/test_datasets.py index f67a6d98f0..1796edad8a 100644 --- a/tests/unit/client/sdk/v1/test_datasets.py +++ b/tests/unit/client/sdk/v1/test_datasets.py @@ -17,7 +17,6 @@ import httpx import pytest - from argilla.client.sdk.v1.datasets import api from argilla.client.sdk.v1.datasets.models import ( FeedbackItemModel, diff --git a/tests/unit/client/sdk/v1/test_get_records.py b/tests/unit/client/sdk/v1/test_get_records.py index ca018fe873..c6f725ff1f 100644 --- a/tests/unit/client/sdk/v1/test_get_records.py +++ b/tests/unit/client/sdk/v1/test_get_records.py @@ -15,7 +15,6 @@ import uuid import httpx - from argilla.client.sdk.v1.datasets.api import get_records diff --git a/tests/unit/client/sdk/v1/test_search_records.py b/tests/unit/client/sdk/v1/test_search_records.py index c2d80adace..7b18d72a88 100644 --- a/tests/unit/client/sdk/v1/test_search_records.py +++ b/tests/unit/client/sdk/v1/test_search_records.py @@ -16,7 +16,6 @@ import httpx import pytest - from argilla.client.sdk.commons.errors import ArApiResponseError, BadRequestApiError from argilla.client.sdk.v1.datasets.api import search_records from argilla.client.sdk.v1.datasets.models import FeedbackRecordsSearchVectorQuery diff --git a/tests/unit/client/sdk/v1/vectors_settings/test_api.py b/tests/unit/client/sdk/v1/vectors_settings/test_api.py index cbeb9d365d..9496a3a266 100644 --- a/tests/unit/client/sdk/v1/vectors_settings/test_api.py +++ b/tests/unit/client/sdk/v1/vectors_settings/test_api.py @@ -15,7 +15,6 @@ from uuid import uuid4 import httpx - from argilla.client.sdk.v1.vectors_settings.api import delete_vector_settings, update_vector_settings diff --git a/tests/unit/client/test_login.py b/tests/unit/client/test_login.py index 5f80db59a8..ecd2eb2396 100644 --- a/tests/unit/client/test_login.py +++ b/tests/unit/client/test_login.py @@ -17,7 +17,6 @@ from typing import TYPE_CHECKING import pytest - from argilla.client import login if TYPE_CHECKING: diff --git a/tests/unit/labeling/text_classification/test_label_models.py b/tests/unit/labeling/text_classification/test_label_models.py index aa677fefa7..fa20d68d72 100644 --- a/tests/unit/labeling/text_classification/test_label_models.py +++ b/tests/unit/labeling/text_classification/test_label_models.py @@ -16,7 +16,6 @@ import numpy as np import pytest - from argilla.client.models import TextClassificationRecord from argilla.labeling.text_classification import ( FlyingSquid, diff --git a/tests/unit/test_logging.py b/tests/unit/test_logging.py index a7e8bac0da..d138ef015c 100644 --- a/tests/unit/test_logging.py +++ b/tests/unit/test_logging.py @@ -15,7 +15,6 @@ import logging import pytest - from argilla.logging import ArgillaHandler, LoggingMixin diff --git a/tests/unit/utils/test_dependency.py b/tests/unit/utils/test_dependency.py index 8b69c0e3d1..91cb2ee304 100644 --- a/tests/unit/utils/test_dependency.py +++ b/tests/unit/utils/test_dependency.py @@ -17,7 +17,6 @@ from typing import Any, List import pytest - from argilla.utils.dependency import is_package_with_extras_installed, require_dependencies, requires_dependencies diff --git a/tests/unit/utils/test_span_utils.py b/tests/unit/utils/test_span_utils.py index c078fc7baa..16b71d10b1 100644 --- a/tests/unit/utils/test_span_utils.py +++ b/tests/unit/utils/test_span_utils.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. import pytest - from argilla.utils.span_utils import SpanUtils diff --git a/tests/unit/utils/test_utils.py b/tests/unit/utils/test_utils.py index 101dcfb76e..6a08af0c66 100644 --- a/tests/unit/utils/test_utils.py +++ b/tests/unit/utils/test_utils.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. import pytest - from argilla.utils import LazyargillaModule