diff --git a/.github/actions/generate-credentials/app/main.py b/.github/actions/generate-credentials/app/main.py index cad56b4f4b..e3bacb355c 100644 --- a/.github/actions/generate-credentials/app/main.py +++ b/.github/actions/generate-credentials/app/main.py @@ -33,7 +33,9 @@ def generate_credentials() -> Dict[str, Any]: credentials = {} for user in ["owner", "admin", "annotator"]: logging.info(f"Generating random credential for user '{user}'") - password = generate_password_from_secret(secret=SECRET, salt=f"{GITHUB_REF}/{user}", length=32) + password = generate_password_from_secret( + secret=SECRET, salt=f"{GITHUB_REF}/{user}", length=32 + ) credentials[user] = password return credentials diff --git a/.github/actions/slack-post-credentials/app/main.py b/.github/actions/slack-post-credentials/app/main.py index 806eeea609..7665dc9759 100644 --- a/.github/actions/slack-post-credentials/app/main.py +++ b/.github/actions/slack-post-credentials/app/main.py @@ -74,7 +74,9 @@ def get_slack_channel_id(client: WebClient) -> Union[str, None]: for channel in result["channels"]: if channel["name"] == SLACK_CHANNEL_NAME: channel_id = channel["id"] - logging.info(f"Found channel id for '{SLACK_CHANNEL_NAME}' channel: '{channel_id}'") + logging.info( + f"Found channel id for '{SLACK_CHANNEL_NAME}' channel: '{channel_id}'" + ) return channel_id @@ -87,7 +89,9 @@ def get_pr_url(pr_number: int) -> str: return f"https://github.com/argilla-io/argilla/pull/{pr_number}" -def get_thread_ts_pr_message(client: WebClient, channel_id: str, pr_number: int) -> Union[str, None]: +def get_thread_ts_pr_message( + client: WebClient, channel_id: str, pr_number: int +) -> Union[str, None]: response = client.conversations_history(channel=channel_id, limit=1000) response.validate() @@ -119,7 +123,9 @@ def bot_already_replied(client: WebClient, channel_id: str, thread_ts: str) -> b return False -def reply_thread_with_credentials(client: WebClient, channel_id: str, thread_ts: str) -> None: +def reply_thread_with_credentials( + client: WebClient, channel_id: str, thread_ts: str +) -> None: client.chat_postMessage( channel=channel_id, text=f"Credentials for PR deployed environment (use as password and API key):\n- URL: {URL}\n- owner: '{OWNER}'\n- admin: '{ADMIN}'\n- annotator: '{ANNOTATOR}'", @@ -153,7 +159,9 @@ def reply_thread_with_credentials(client: WebClient, channel_id: str, thread_ts: pr_number = get_pull_request_number() if pr_number is None: logging.error(f"Could not parse `GITHUB_REF` ({GITHUB_REF}) to get PR number") - raise ValueError(f"Could not parse `GITHUB_REF` ({GITHUB_REF}) to get PR number") + raise ValueError( + f"Could not parse `GITHUB_REF` ({GITHUB_REF}) to get PR number" + ) client = get_slack_client() diff --git a/.github/workflows/argilla.build-push-dev-frontend-docker.yml b/.github/workflows/argilla-frontend.build-push-dev-frontend-docker.yml similarity index 100% rename from .github/workflows/argilla.build-push-dev-frontend-docker.yml rename to .github/workflows/argilla-frontend.build-push-dev-frontend-docker.yml diff --git a/.github/workflows/argilla.deploy-environment.yml b/.github/workflows/argilla-frontend.deploy-environment.yml similarity index 100% rename from .github/workflows/argilla.deploy-environment.yml rename to .github/workflows/argilla-frontend.deploy-environment.yml diff --git a/.github/workflows/argilla.teardown-all-pr-environments.yml b/.github/workflows/argilla-frontend.teardown-all-pr-environments.yml similarity index 100% rename from .github/workflows/argilla.teardown-all-pr-environments.yml rename to .github/workflows/argilla-frontend.teardown-all-pr-environments.yml diff --git a/.github/workflows/argilla.teardown-pr-environment.yml b/.github/workflows/argilla-frontend.teardown-pr-environment.yml similarity index 100% rename from .github/workflows/argilla.teardown-pr-environment.yml rename to .github/workflows/argilla-frontend.teardown-pr-environment.yml diff --git a/.github/workflows/argilla-frontend.yml b/.github/workflows/argilla-frontend.yml index ab7beee752..7b5e642e2c 100644 --- a/.github/workflows/argilla-frontend.yml +++ b/.github/workflows/argilla-frontend.yml @@ -5,21 +5,13 @@ concurrency: cancel-in-progress: true on: - workflow_call: pull_request: paths: - "argilla-frontend/**" - types: - - opened - - edited - - reopened - - synchronize - - ready_for_review jobs: - build: name: Build argilla-frontend runs-on: ubuntu-latest @@ -28,7 +20,6 @@ jobs: working-directory: argilla-frontend steps: - - name: Checkout Code 🛎 uses: actions/checkout@v4 @@ -61,7 +52,7 @@ jobs: build_dev_docker_image: name: Build development argilla-fronted docker image needs: build - uses: ./.github/workflows/argilla.build-push-dev-frontend-docker.yml + uses: ./.github/workflows/argilla-frontend.build-push-dev-frontend-docker.yml if: | !cancelled() && github.event_name == 'pull_request' && github.event.pull_request.draft == false @@ -75,7 +66,7 @@ jobs: deploy: name: Deploy pr environment - uses: ./.github/workflows/argilla.deploy-environment.yml + uses: ./.github/workflows/argilla-frontend.deploy-environment.yml needs: build_dev_docker_image if: | !cancelled() && @@ -84,4 +75,4 @@ jobs: with: image-name: argilla/argilla-frontend-for-dev image-version: ${{ needs.build_dev_docker_image.outputs.version }} - secrets: inherit \ No newline at end of file + secrets: inherit diff --git a/.github/workflows/argilla-sdk.yml b/.github/workflows/argilla-sdk.yml deleted file mode 100644 index 070c2dd042..0000000000 --- a/.github/workflows/argilla-sdk.yml +++ /dev/null @@ -1,152 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python -name: Build and publish the `argilla-sdk` python package - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -on: - workflow_dispatch: - inputs: - release: - description: "If true, the workflow will publish the package to PyPI. Default is false." - default: false - - push: - paths: - - "argilla-sdk/**" - - "!argilla-sdk/docs/**" - branches: - - "develop" - - "main" - - "feat/**" - - pull_request: - paths: - - "argilla-sdk/**" - - "!argilla-sdk/docs/**" - branches: - - "develop" - - "main" - - "feat/**" - - release: - types: - - "published" - -defaults: - run: - working-directory: argilla-sdk - -jobs: - build: - services: - argilla-quickstart: - image: argilla/argilla-quickstart:main - ports: - - 6900:6900 - env: - ANNOTATOR_USERNAME: annotator - OWNER_USERNAME: argilla - OWNER_API_KEY: argilla.apikey - ADMIN_USERNAME: admin - ADMIN_API_KEY: admin.apikey - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] - steps: - - uses: actions/checkout@v4 - - name: Setup PDM - uses: pdm-project/setup-pdm@v4 - with: - python-version: ${{ matrix.python-version }} - cache: true - cache-dependency-path: | - argilla-sdk/pyproject.toml - - name: Install dependencies - run: | - pdm install - - name: Wait for argilla-quickstart to start - run: | - while ! curl -XGET http://localhost:6900/api/_status; do sleep 5; done - - name: Run unit tests - run: | - pdm run test tests/unit - - name: Run integration tests - run: | - pdm run test tests/integration - - name: Build package - run: | - pdm build - - name: Upload artifact - uses: actions/upload-artifact@v4 - # Upload the package to be used in the next jobs only once - if: ${{ matrix.python-version == '3.8' }} - with: - name: argilla-sdk - path: argilla-sdk/dist - - # This job will publish argilla-sdk package into PyPI repository - publish_release: - name: Publish Release - runs-on: ubuntu-latest - if: github.event_name == 'workflow_dispatch' - needs: - - build - - permissions: - # This permission is needed for private repositories. - # contents: read - # IMPORTANT: this permission is mandatory for trusted publishing on PyPI - id-token: write - # This permission is needed for creating tags - contents: write - - defaults: - run: - shell: bash -l {0} - - steps: - - name: Checkout Code 🛎 - uses: actions/checkout@v4 - - - name: Download python package - uses: actions/download-artifact@v4 - with: - name: argilla-sdk - path: argilla-sdk/dist - - - name: Setup PDM - uses: pdm-project/setup-pdm@v4 - with: - cache: true - - - name: Read package info - run: | - PACKAGE_VERSION=$(pdm show --version) - PACKAGE_NAME=$(pdm show --name) - echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV - echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV - echo "$PACKAGE_NAME==$PACKAGE_VERSION" - - - name: Create tag - run: | - git config user.name "${{ github.actor }}" - git config user.email "${{ github.actor }}@users.noreply.github.com" - git tag -f -a v${{ env.PACKAGE_VERSION }} -m "Release v${{ env.PACKAGE_VERSION }}" - git push -f origin v${{ env.PACKAGE_VERSION }} - - - name: Publish Package to PyPI test environment đŸĨĒ - run: pdm publish --no-build --repository testpypi - continue-on-error: true - - - name: Test Installing đŸŋ - run: | - pip install --index-url https://test.pypi.org/simple --no-deps $PACKAGE_NAME==$PACKAGE_VERSION - - - name: Publish Package to PyPI đŸĨŠ - if: ${{ inputs.release == 'true' }} - run: pdm publish --no-build diff --git a/.github/workflows/argilla-server.yml b/.github/workflows/argilla-server.yml index ff83369e89..e0af03f1fa 100644 --- a/.github/workflows/argilla-server.yml +++ b/.github/workflows/argilla-server.yml @@ -12,26 +12,17 @@ defaults: on: workflow_dispatch: push: - tags: - - "*" + paths: + - argilla-server/** branches: - main - develop - - "feat/**" + - feat/** - releases/** pull_request: paths: - argilla-server/** - types: - - opened - - edited - - reopened - - synchronize - - ready_for_review - release: - types: - - published jobs: build: diff --git a/.github/workflows/argilla-v1.yml b/.github/workflows/argilla-v1.yml new file mode 100644 index 0000000000..c6db82e697 --- /dev/null +++ b/.github/workflows/argilla-v1.yml @@ -0,0 +1,138 @@ +name: Build Argilla (v1) package + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + workflow_dispatch: + workflow_call: + + push: + paths: + - argilla-v1/** + branches: + - main + - develop + - feat/** + - releases/** + + pull_request: + paths: + - argilla-v1/** + +jobs: + build: + runs-on: ubuntu-latest + + defaults: + run: + shell: bash -l {0} + working-directory: argilla-v1 + + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v4 + + - 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('argilla-v1/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: Run unit tests 📈 + run: | + pip install -e ".[server,listeners]" + pytest tests/unit -vs + + - name: Run tests with pandas v2 📈 + run: | + pip install "pandas~=2.0" pytest-custom_exit_code + pytest --suppress-no-test-exit-code tests/unit -vs + + - name: Run tests with pydantic v2 📈 + run: | + pip install "pydantic~=2.0" pytest-custom_exit_code + pytest --suppress-no-test-exit-code tests/unit -vs + + - name: Build Package 🍟 + run: | + pip install -U build + rm -rf dist && python -m build + + - name: Upload package artifact + uses: actions/upload-artifact@v4 + with: + name: argilla-v1 + path: argilla-v1/dist + + # 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: + - build + + defaults: + run: + shell: bash -l {0} + working-directory: argilla-v1 + + steps: + - name: Checkout Code 🛎 + uses: actions/checkout@v4 + - name: Download python package + uses: actions/download-artifact@v4 + with: + name: argilla-v1 + path: dist + - name: Publish Package to TestPyPI đŸĨĒ + uses: pypa/gh-action-pypi-publish@release/v1 + continue-on-error: true + with: + user: __token__ + password: ${{ secrets.AR_TEST_PYPI_API_TOKEN }} + repository_url: https://test.pypi.org/legacy/ + - name: Test Installing đŸŋ + continue-on-error: true + 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@release/v1 + with: + user: __token__ + password: ${{ secrets.AR_PYPI_API_TOKEN }} diff --git a/.github/workflows/argilla.build-python-package.yml b/.github/workflows/argilla.build-python-package.yml deleted file mode 100644 index afe74f0817..0000000000 --- a/.github/workflows/argilla.build-python-package.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Build Argilla package - -on: - workflow_call: - -jobs: - build: - name: Build the python package - runs-on: ubuntu-latest - defaults: - run: - working-directory: argilla - - steps: - - name: Checkout Code 🛎 - uses: actions/checkout@v4 - - - name: Cache pip 👜 - uses: actions/cache@v4 - 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@v4 - with: - name: argilla - path: argilla/dist diff --git a/.github/workflows/argilla-sdk.docs.yml b/.github/workflows/argilla.docs.yml similarity index 86% rename from .github/workflows/argilla-sdk.docs.yml rename to .github/workflows/argilla.docs.yml index 27940eb276..c171ab253f 100644 --- a/.github/workflows/argilla-sdk.docs.yml +++ b/.github/workflows/argilla.docs.yml @@ -7,19 +7,17 @@ concurrency: on: push: paths: - - "argilla-sdk/docs/**" - - "argilla-sdk/src/**" + - "argilla/docs/**" + - "argilla/src/**" branches: # - "main" # - "develop" - "feat/v2.0.0" # Fixing this branch until we merge everything into develop - "docs/**" # When we create a new branch only for docs - tags: - - "**" defaults: run: - working-directory: argilla-sdk + working-directory: argilla jobs: publish: @@ -27,9 +25,8 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.10" ] + python-version: ["3.10"] steps: - - name: checkout docs-site uses: actions/checkout@v4 with: @@ -43,7 +40,7 @@ jobs: python-version: ${{ matrix.python-version }} cache: true cache-dependency-path: | - argilla-sdk/pyproject.toml + argilla/pyproject.toml - name: Install dependencies run: | @@ -55,8 +52,7 @@ jobs: git config --global user.email "${{ github.actor }}@users.noreply.github.com" - name: Print GitHub ref info - run: - echo "${{ github.ref }}" + run: echo "${{ github.ref }}" echo "${{ github.head_ref }}" - run: pdm run mike deploy dev --push @@ -78,4 +74,4 @@ jobs: - run: pdm run mike deploy ${{ steps.extract_branch_name.outputs.branch_name }} --push if: startsWith(github.ref, 'refs/heads/docs') || startsWith(github.head_ref, 'docs/') env: - GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} \ No newline at end of file + GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} diff --git a/.github/workflows/argilla.end2end-examples.yml b/.github/workflows/argilla.end2end-examples.yml deleted file mode 100644 index e8861d0862..0000000000 --- a/.github/workflows/argilla.end2end-examples.yml +++ /dev/null @@ -1,108 +0,0 @@ -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: 1 - -jobs: - - 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} - working-directory: argilla - - steps: - - name: Checkout Code 🛎 - uses: actions/checkout@v4 - - - 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('argilla/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 - working-directory: argilla - 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/argilla.run-python-tests.yml b/.github/workflows/argilla.run-python-tests.yml deleted file mode 100644 index 58a5e48b09..0000000000 --- a/.github/workflows/argilla.run-python-tests.yml +++ /dev/null @@ -1,123 +0,0 @@ -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} - working-directory: argilla - env: - COVERAGE_REPORT: ${{ inputs.coverageReport }} - ARGILLA_ENABLE_TELEMETRY: 0 - - steps: - - name: Checkout Code 🛎 - uses: actions/checkout@v4 - - - 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('argilla/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 📈 - 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: argilla/${{ env.COVERAGE_REPORT }}.xml - - - name: Run tests with pandas v2 📈 - 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 📈 - run: | - pip install "pydantic~=2.0" pytest-custom_exit_code - pytest --suppress-no-test-exit-code ${{ inputs.pytestArgs }} -vs diff --git a/.github/workflows/argilla.yml b/.github/workflows/argilla.yml index 04835992d7..5b0bfe4845 100644 --- a/.github/workflows/argilla.yml +++ b/.github/workflows/argilla.yml @@ -1,4 +1,6 @@ -name: Build Argilla package +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python +name: Build and publish the `argilla` sdk python package concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -6,120 +8,100 @@ concurrency: on: workflow_dispatch: - workflow_call: + inputs: + release: + description: "If true, the workflow will publish the package to PyPI. Default is false." + default: false push: - tags: - - "*" + paths: + - argilla/** + - "!argilla/docs/**" branches: - main - develop - - "feat/**" + - feat/** - releases/** pull_request: paths: - - "argilla/**" - types: - - opened - - edited - - reopened - - synchronize - - ready_for_review - - release: - types: - - "published" + - argilla/** + - "!argilla/docs/**" + +defaults: + run: + working-directory: argilla jobs: - run_unit_tests: - name: Run unit tests - uses: ./.github/workflows/argilla.run-python-tests.yml - with: - coverageReport: coverage - runsOn: extended-runner - pytestArgs: tests/unit - secrets: inherit - - run_end2end_tests: + build: + services: + argilla-quickstart: + image: argilla/argilla-quickstart:main + ports: + - 6900:6900 + env: + ANNOTATOR_USERNAME: annotator + OWNER_USERNAME: argilla + OWNER_API_KEY: argilla.apikey + ADMIN_USERNAME: admin + ADMIN_API_KEY: admin.apikey + runs-on: ubuntu-latest strategy: + fail-fast: false matrix: - include: - - searchEngineDockerImage: docker.elastic.co/elasticsearch/elasticsearch:8.8.2 - searchEngineDockerEnv: '{"discovery.type": "single-node", "xpack.security.enabled": "false"}' - runsOn: extended-runner - - name: Run end2end tests - uses: ./.github/workflows/argilla.end2end-examples.yml - with: - runsOn: ${{ matrix.runsOn }} - searchEngineDockerImage: ${{ matrix.searchEngineDockerImage }} - searchEngineDockerEnv: ${{ matrix.searchEngineDockerEnv }} - secrets: inherit - - run_integration_tests: - name: Run integration tests - uses: ./.github/workflows/argilla.run-python-tests.yml - needs: - - run_unit_tests - 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 - - defaults: - run: - shell: bash -l {0} - working-directory: argilla - + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - name: Checkout Code 🛎 - uses: actions/checkout@v4 - - - name: Download coverage reports - uses: actions/download-artifact@v3 + - uses: actions/checkout@v4 + - name: Setup PDM + uses: pdm-project/setup-pdm@v4 with: - path: argilla/coverage-report - - - name: Copy all reports - run: find coverage-report/ -name "*.xml" -exec mv '{}' . \; - - - name: Upload Coverage reports to Codecov đŸ“Ļ - uses: codecov/codecov-action@v2 + python-version: ${{ matrix.python-version }} + cache: true + cache-dependency-path: | + argilla/pyproject.toml + - name: Install dependencies + run: | + pdm install + - name: Wait for argilla-quickstart to start + run: | + while ! curl -XGET http://localhost:6900/api/_status; do sleep 5; done + - name: Run unit tests + run: | + pdm run test tests/unit + - name: Run integration tests + run: | + pdm run test tests/integration + - name: Build package + run: | + pdm build + - name: Upload artifact + uses: actions/upload-artifact@v4 + # Upload the package to be used in the next jobs only once + if: ${{ matrix.python-version == '3.8' }} with: - flags: argilla - token: ${{ secrets.CODECOV_TOKEN }} - - build_python_package: - name: Build Argilla python package - uses: ./.github/workflows/argilla.build-python-package.yml - needs: - - run_unit_tests - - run_integration_tests - secrets: inherit + name: argilla + path: argilla/dist - # 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 + # This job will publish argilla package into PyPI repository publish_release: name: Publish Release runs-on: ubuntu-latest - if: ${{ github.event_name == 'release' }} + if: github.event_name == 'workflow_dispatch' needs: - - run_integration_tests + - build + + permissions: + # This permission is needed for private repositories. + # contents: read + # IMPORTANT: this permission is mandatory for trusted publishing on PyPI + id-token: write + # This permission is needed for creating tags + contents: write + defaults: run: shell: bash -l {0} - working-directory: argilla + steps: - name: Checkout Code 🛎 uses: actions/checkout@v4 @@ -128,20 +110,36 @@ jobs: uses: actions/download-artifact@v4 with: name: argilla - path: dist + path: argilla/dist - - name: Publish Package to TestPyPI đŸĨĒ - uses: pypa/gh-action-pypi-publish@release/v1 + - name: Setup PDM + uses: pdm-project/setup-pdm@v4 with: - user: __token__ - password: ${{ secrets.AR_TEST_PYPI_API_TOKEN }} - repository_url: https://test.pypi.org/legacy/ + cache: true + + - name: Read package info + run: | + PACKAGE_VERSION=$(pdm show --version) + PACKAGE_NAME=$(pdm show --name) + echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV + echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV + echo "$PACKAGE_NAME==$PACKAGE_VERSION" + + - name: Create tag + run: | + git config user.name "${{ github.actor }}" + git config user.email "${{ github.actor }}@users.noreply.github.com" + git tag -f -a v${{ env.PACKAGE_VERSION }} -m "Release v${{ env.PACKAGE_VERSION }}" + git push -f origin v${{ env.PACKAGE_VERSION }} + + - name: Publish Package to PyPI test environment đŸĨĒ + run: pdm publish --no-build --repository testpypi + continue-on-error: true - name: Test Installing đŸŋ - run: pip install --index-url https://test.pypi.org/simple --no-deps argilla==${GITHUB_REF#refs/*/v} + run: | + pip install --index-url https://test.pypi.org/simple --no-deps $PACKAGE_NAME==$PACKAGE_VERSION - name: Publish Package to PyPI đŸĨŠ - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.AR_PYPI_API_TOKEN }} + if: ${{ inputs.release == 'true' }} + run: pdm publish --no-build diff --git a/.github/workflows/close-pr.yml b/.github/workflows/close-pr.yml deleted file mode 100644 index 2d7b2af8eb..0000000000 --- a/.github/workflows/close-pr.yml +++ /dev/null @@ -1,41 +0,0 @@ -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 deleted file mode 100644 index 5e7c22c266..0000000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,71 +0,0 @@ -# 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 deleted file mode 100644 index b6d7a8e072..0000000000 --- a/.github/workflows/dependency-review.yml +++ /dev/null @@ -1,27 +0,0 @@ -# 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/teardown-pr-environments.yml b/.github/workflows/teardown-pr-environments.yml deleted file mode 100644 index 9c32a9311a..0000000000 --- a/.github/workflows/teardown-pr-environments.yml +++ /dev/null @@ -1,36 +0,0 @@ -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/.pre-commit-config.yaml b/.pre-commit-config.yaml index 49730dbe0e..10b5b71c89 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,73 +1,43 @@ repos: - ############################################################################## - # argilla specific hooks - ############################################################################## - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-yaml - files: '^argilla/.*\.py$' - id: end-of-file-fixer - files: '^argilla/.*\.py$' - exclude_types: [ text, jupyter ] + exclude_types: [text, jupyter] - id: trailing-whitespace - files: '^argilla/.*\.py$' - - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.4 - hooks: - - id: insert-license - name: "Insert license header in Python source files" - files: '^argilla/.*\.py$' - args: - - --license-filepath - - license_header.txt - - --fuzzy-match-generates-todo - # - --remove-header - - repo: https://github.com/psf/black - rev: 23.10.1 + + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: v0.4.8 hooks: - - id: black - additional_dependencies: [ "typer==0.7.0" ] - # only run for argilla/ files - files: '^argilla/.*\.py$' - args: [ --line-length=120 ] - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.3 + - id: ruff-format + + ############################################################################## + # argilla specific hooks + ############################################################################## + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: v0.4.8 hooks: - # Simulate isort via (the much faster) ruff - id: ruff - files: '^argilla/.*\.py$' + files: 'argilla/src/.*\.py$' args: - - --select=I - --fix - ############################################################################## - # argilla-sdk specific hooks - ############################################################################## - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.4 + rev: v1.5.5 hooks: - id: insert-license name: "Insert license header in Python source files" - files: '^argilla-sdk/.*\.py$' - exclude: ^argilla-sdk/docs/snippets/ + files: '^argilla/.*\.py$' + exclude: ^argilla/docs/snippets/ args: - --license-filepath - - argilla-sdk/LICENSE_HEADER + - argilla/LICENSE_HEADER - --fuzzy-match-generates-todo - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.1.4 - hooks: - - id: ruff - files: '^argilla-sdk/.*\.py$' - args: - - --fix - - id: ruff-format - files: '^argilla-sdk/.*\.py$' - repo: https://github.com/kynan/nbstripout rev: 0.7.1 hooks: - id: nbstripout - files: '^argilla-sdk/.*\.ipynb$' + files: '^argilla/.*\.ipynb$' args: - --keep-count - --keep-output @@ -78,6 +48,27 @@ repos: # - --keep-execution-count # - --keep-metadata # - --keep-version + ############################################################################## + # argilla-server specific hooks + ############################################################################## + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: v0.4.8 + hooks: + - id: ruff + files: 'argila-server/src/.*\.py$' + args: + - --fix + + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.5.5 + hooks: + - id: insert-license + name: "Insert license header in Python source files" + files: '^argilla-server/.*\.py$' + args: + - --license-filepath + - argilla-server/LICENSE_HEADER + - --fuzzy-match-generates-todo ci: autofix_commit_msg: | @@ -87,5 +78,5 @@ ci: autoupdate_branch: "" autoupdate_commit_msg: "[pre-commit.ci] pre-commit autoupdate" autoupdate_schedule: weekly - skip: [ ] + skip: [] submodules: false diff --git a/argilla-frontend/assets/scss/base/base.scss b/argilla-frontend/assets/scss/base/base.scss index 9ac97f250f..dabc04e0f8 100644 --- a/argilla-frontend/assets/scss/base/base.scss +++ b/argilla-frontend/assets/scss/base/base.scss @@ -280,7 +280,7 @@ a { } .--body3 { @include font-size(13px); - @include line-height(16px); + @include line-height(18px); } .--body4 { @include font-size(12px); diff --git a/argilla-frontend/components/base/base-badge/BaseIconWithBadge.vue b/argilla-frontend/components/base/base-badge/BaseIconWithBadge.vue index c799f34a7a..bdda84b146 100644 --- a/argilla-frontend/components/base/base-badge/BaseIconWithBadge.vue +++ b/argilla-frontend/components/base/base-badge/BaseIconWithBadge.vue @@ -15,7 +15,12 @@ borderColor: badgeBorderColor, }" > - + @@ -49,6 +54,10 @@ export default { badgeBorderColor: { type: String, }, + badgeSize: { + type: String, + default: "22", + }, }, methods: { onClickIcon() { diff --git a/argilla-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue b/argilla-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue index 33b14f3f9c..22568e99f7 100644 --- a/argilla-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue +++ b/argilla-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue @@ -33,19 +33,6 @@ > - - - - - @@ -76,7 +63,6 @@ export default { diff --git a/argilla-frontend/components/base/base-progress/BaseCircleProgress.vue b/argilla-frontend/components/base/base-progress/BaseCircleProgress.vue index 98542c28ed..c8c71f3547 100644 --- a/argilla-frontend/components/base/base-progress/BaseCircleProgress.vue +++ b/argilla-frontend/components/base/base-progress/BaseCircleProgress.vue @@ -1,78 +1,75 @@ - diff --git a/argilla-frontend/components/base/base-progress/BaseLinearProgress.vue b/argilla-frontend/components/base/base-progress/BaseLinearProgress.vue index 5e1ad6a6f2..0a23b48c8e 100644 --- a/argilla-frontend/components/base/base-progress/BaseLinearProgress.vue +++ b/argilla-frontend/components/base/base-progress/BaseLinearProgress.vue @@ -17,10 +17,7 @@ @mouseenter="hoveredRange = range" @mouseleave="hoveredRange = null" > -
+
@@ -24,15 +25,10 @@ export default { diff --git a/argilla-frontend/components/features/annotation/progress/AnnotationProgress.vue b/argilla-frontend/components/features/annotation/progress/AnnotationProgress.vue index 32fabd92b6..295e62a162 100644 --- a/argilla-frontend/components/features/annotation/progress/AnnotationProgress.vue +++ b/argilla-frontend/components/features/annotation/progress/AnnotationProgress.vue @@ -16,54 +16,16 @@ --> - - diff --git a/argilla-frontend/components/features/annotation/progress/AnnotationProgressDetailed.vue b/argilla-frontend/components/features/annotation/progress/AnnotationProgressDetailed.vue new file mode 100644 index 0000000000..59718ea15b --- /dev/null +++ b/argilla-frontend/components/features/annotation/progress/AnnotationProgressDetailed.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/argilla-frontend/components/features/annotation/progress/BarProgress.vue b/argilla-frontend/components/features/annotation/progress/BarProgress.vue new file mode 100644 index 0000000000..b063a1ffd5 --- /dev/null +++ b/argilla-frontend/components/features/annotation/progress/BarProgress.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/argilla-frontend/components/features/annotation/progress/useFeedbackTaskProgressViewModel.ts b/argilla-frontend/components/features/annotation/progress/useFeedbackTaskProgressViewModel.ts index b9f46c06c0..d7d4febf4c 100644 --- a/argilla-frontend/components/features/annotation/progress/useFeedbackTaskProgressViewModel.ts +++ b/argilla-frontend/components/features/annotation/progress/useFeedbackTaskProgressViewModel.ts @@ -9,6 +9,7 @@ import { useMetrics } from "~/v1/infrastructure/storage/MetricsStorage"; interface FeedbackTaskProgressProps { datasetId: string; + enableFetch?: boolean; } export const useFeedbackTaskProgressViewModel = ( @@ -22,6 +23,8 @@ export const useFeedbackTaskProgressViewModel = ( }; onBeforeMount(() => { + if (!props.enableFetch) return; + useEvents(() => { new UpdateMetricsEventHandler(); }); diff --git a/argilla-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue b/argilla-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue index bc7bac272d..6e2f19ee7e 100644 --- a/argilla-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue +++ b/argilla-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue @@ -8,7 +8,6 @@ class="setting__dataset-name --body1" v-html="settings.dataset.name" /> - { ]; }); - const onGoToDataset = () => { + const goToDataset = () => { if (routes.previousRouteMatchWith(datasetId)) return routes.goBack(); routes.goToFeedbackTaskAnnotationPage(datasetId); @@ -112,7 +112,7 @@ export const useDatasetSettingViewModel = () => { if (datasetSetting.isVectorsModified) return goToTab("vector"); }; - const goToDataset = () => { + const goToOutside = (next) => { if (datasetSetting.isModified) { return notification.notify({ message: t("changes_no_submit"), @@ -120,7 +120,7 @@ export const useDatasetSettingViewModel = () => { permanent: true, type: "warning", onClick() { - onGoToDataset(); + next(); }, onClose() { goToTabWithModification(); @@ -128,7 +128,7 @@ export const useDatasetSettingViewModel = () => { }); } - onGoToDataset(); + next(); }; onBeforeMount(() => { @@ -155,6 +155,7 @@ export const useDatasetSettingViewModel = () => { isAdminOrOwnerRole, datasetId, datasetSetting, + goToOutside, goToDataset, }; }; diff --git a/argilla-frontend/translation/de.js b/argilla-frontend/translation/de.js index 636969e00d..099bd2e233 100644 --- a/argilla-frontend/translation/de.js +++ b/argilla-frontend/translation/de.js @@ -29,6 +29,7 @@ export default { dimension: "Dimension", visibleLabels: "Sichtbare labels", annotationGuidelines: "Annotationsrichtlinien", + guidelines: "Richtlinien", noAnnotationGuidelines: "Dieser Datensatz hat keine Annotationsrichtlinien", breadcrumbs: { home: "start", @@ -160,7 +161,6 @@ export default { spanAnnotation: { shortcutHelper: "Halten Sie 'Shift' gedrÃŧckt, um Zeichenebene auszuwählen", notSupported: "Bereichsannotation wird von Ihrem Browser nicht unterstÃŧtzt", - bulkMode: "Bereichsannotation wird in der Massenansicht nicht unterstÃŧtzt", }, login: { title: "Anmelden", diff --git a/argilla-frontend/translation/en.js b/argilla-frontend/translation/en.js index 6d1207a8e0..af12e6df17 100644 --- a/argilla-frontend/translation/en.js +++ b/argilla-frontend/translation/en.js @@ -33,6 +33,7 @@ export default { dimension: "Dimension", visibleLabels: "Visible labels", annotationGuidelines: "Annotation guidelines", + guidelines: "Guidelines", noAnnotationGuidelines: "This dataset has no annotation guidelines", breadcrumbs: { home: "Home", @@ -170,7 +171,6 @@ export default { spanAnnotation: { shortcutHelper: "Hold 'Shift' to select character level", notSupported: "Span annotation is not supported for your browser", - bulkMode: "Span annotation is not supported in Bulk view", }, login: { title: "Sign in", diff --git a/argilla-frontend/v1/domain/entities/dataset/Metrics.ts b/argilla-frontend/v1/domain/entities/dataset/Metrics.ts index ff3dc4b63f..31c80d6e08 100644 --- a/argilla-frontend/v1/domain/entities/dataset/Metrics.ts +++ b/argilla-frontend/v1/domain/entities/dataset/Metrics.ts @@ -1,5 +1,6 @@ export class Metrics { public readonly percentage: { + pending: number; draft: number; submitted: number; discarded: number; @@ -13,6 +14,7 @@ export class Metrics { public readonly draft: number ) { this.percentage = { + pending: (this.pending * 100) / this.total, draft: (this.draft * 100) / this.total, submitted: (this.submitted * 100) / this.total, discarded: (this.discarded * 100) / this.total, diff --git a/argilla-frontend/v1/domain/entities/question/Question.test.ts b/argilla-frontend/v1/domain/entities/question/Question.test.ts index f9ff05162b..2899910c32 100644 --- a/argilla-frontend/v1/domain/entities/question/Question.test.ts +++ b/argilla-frontend/v1/domain/entities/question/Question.test.ts @@ -121,6 +121,23 @@ describe("Question", () => { expect(question.isModified).toBeFalsy(); }); + + test("isModified is false when the question was loaded with response", () => { + const question = createTextQuestionMocked(); + + question.response({ value: "positive" }); + + expect(question.isModified).toBeFalsy(); + }); + + test("isModified is true when the question was loaded with response and modified after initialization", () => { + const question = createTextQuestionMocked(); + question.response({ value: "positive" }); + + question.title = "NEW TITLE"; + + expect(question.isModified).toBeTruthy(); + }); }); describe("question validation should", () => { diff --git a/argilla-frontend/v1/domain/entities/question/Question.ts b/argilla-frontend/v1/domain/entities/question/Question.ts index 8d0e3a9a31..8efcc6a166 100644 --- a/argilla-frontend/v1/domain/entities/question/Question.ts +++ b/argilla-frontend/v1/domain/entities/question/Question.ts @@ -18,6 +18,7 @@ interface OriginalQuestion { title: string; description: string; settings: any; + answer: QuestionAnswer; } export class Question { @@ -40,8 +41,6 @@ export class Question { this.settings = new QuestionSetting(settings); this.initialize(); - this.initializeAnswers(); - this.initializeOriginal(); } private _description: string; @@ -102,7 +101,8 @@ export class Question { return ( this.title !== this.original.title || this.description !== this.original.description || - !this.settings.isEqual(this.original.settings) + !this.settings.isEqual(this.original.settings) || + !this.answer.isEqual(this.original.answer) ); } @@ -140,23 +140,11 @@ export class Question { this.answer.clear(); } - reloadAnswerFromOptions() { - const valuesAnswered = this.answer.valuesAnswered; - - this.initializeAnswers(); - - if (valuesAnswered) { - this.answer.response({ value: valuesAnswered }); - } - } - restore() { this.title = this.original.title; this.description = this.original.description; this.restoreOriginal(); - - this.reloadAnswerFromOptions(); } update() { @@ -172,6 +160,8 @@ export class Question { if (!answer) return; this.answer.response(answer); + + this.initializeOriginal(); } addSuggestion(suggestion: Suggestion) { @@ -180,7 +170,7 @@ export class Question { this.suggestion = suggestion; } - private createEmptyAnswers(): QuestionAnswer { + private createInitialAnswers(): QuestionAnswer { if (this.isTextType) { return new TextQuestionAnswer(this.type, ""); } @@ -245,15 +235,26 @@ export class Question { }; }); } + + this.initializeAnswers(); + this.initializeOriginal(); } private initializeAnswers() { - this.answer = this.createEmptyAnswers(); + this.answer = this.createInitialAnswers(); } private initializeOriginal() { const { options, ...rest } = this.settings; + const originalAnswer = this.createInitialAnswers(); + + const valuesAnswered = this.answer.valuesAnswered; + + if (valuesAnswered) { + originalAnswer.response({ value: valuesAnswered }); + } + this.original = { title: this.title, description: this.description, @@ -261,6 +262,7 @@ export class Question { ...rest, options: options?.map((option: string) => option), }), + answer: originalAnswer, }; } @@ -271,5 +273,13 @@ export class Question { ...rest, options: options?.map((option: string) => option), }); + + const valuesAnswered = this.answer.valuesAnswered; + + this.initializeAnswers(); + + if (valuesAnswered) { + this.answer.response({ value: valuesAnswered }); + } } } diff --git a/argilla-frontend/v1/domain/entities/question/QuestionAnswer.ts b/argilla-frontend/v1/domain/entities/question/QuestionAnswer.ts index c3fa86b2bc..0d7b4c99d8 100644 --- a/argilla-frontend/v1/domain/entities/question/QuestionAnswer.ts +++ b/argilla-frontend/v1/domain/entities/question/QuestionAnswer.ts @@ -22,6 +22,14 @@ export abstract class QuestionAnswer { this.fill(this._answer); } + isEqual(answer: QuestionAnswer) { + const isEqual = + JSON.stringify(this.valuesAnswered) === + JSON.stringify(answer.valuesAnswered); + + return isEqual; + } + protected abstract fill(answer: Answer); abstract clear(); abstract get isValid(): boolean; @@ -99,7 +107,11 @@ export class SpanQuestionAnswer extends QuestionAnswer { } get valuesAnswered(): SpanAnswer[] { - return this.values; + return this.values.map((value) => ({ + start: value.start, + end: value.end, + label: value.label, + })); } } diff --git a/argilla-frontend/v1/domain/entities/record/Record.ts b/argilla-frontend/v1/domain/entities/record/Record.ts index cf361492ee..33a0600630 100644 --- a/argilla-frontend/v1/domain/entities/record/Record.ts +++ b/argilla-frontend/v1/domain/entities/record/Record.ts @@ -76,15 +76,17 @@ export class Record { } answerWith(recordReference: Record) { - this.questions.forEach((question) => { - const questionReference = recordReference.questions.find( - (q) => q.id === question.id - ); + this.questions + .filter((q) => !q.isSpanType) + .forEach((question) => { + const questionReference = recordReference.questions.find( + (q) => q.id === question.id + ); - if (!questionReference) return; + if (!questionReference) return; - question.clone(questionReference); - }); + question.clone(questionReference); + }); } initialize() { diff --git a/argilla-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts b/argilla-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts index 3f8536284a..ed6b61f7f9 100644 --- a/argilla-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts +++ b/argilla-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts @@ -72,22 +72,25 @@ export class GetRecordsByCriteriaUseCase { ) : null; - const suggestions = !criteria.page.isBulkMode - ? record.suggestions.map((suggestion) => { - const question = questions.find( - (q) => q.id === suggestion.question_id - ); - - return new Suggestion( - suggestion.id, - suggestion.question_id, - question.type, - suggestion.value, - suggestion.score, - suggestion.agent - ); - }) - : []; + const suggestions = record.suggestions + .map((suggestion) => { + const question = questions.find( + (q) => q.id === suggestion.question_id + ); + + if (criteria.page.isBulkMode && !question.isSpanType) + return undefined; + + return new Suggestion( + suggestion.id, + suggestion.question_id, + question.type, + suggestion.value, + suggestion.score, + suggestion.agent + ); + }) + .filter(Boolean); return new Record( record.id, diff --git a/argilla-frontend/v1/infrastructure/repositories/RecordRepository.ts b/argilla-frontend/v1/infrastructure/repositories/RecordRepository.ts index c82ac57bee..847c8a8dd5 100644 --- a/argilla-frontend/v1/infrastructure/repositories/RecordRepository.ts +++ b/argilla-frontend/v1/infrastructure/repositories/RecordRepository.ts @@ -101,6 +101,16 @@ export class RecordRepository { request ); + const datasetId = + Array.isArray(records) && records.length > 0 + ? records[0].datasetId + : null; + + if (datasetId) { + revalidateCache(`/v1/datasets/${datasetId}/progress`); + revalidateCache(`/v1/me/datasets/${datasetId}/metrics`); + } + return data.items.map(({ item, error }) => { if (item) { return { diff --git a/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts b/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts index e0151911ad..f3331172bb 100644 --- a/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts +++ b/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts @@ -1,4 +1,4 @@ -type Options = "showShortcutsHelper"; +type Options = "showShortcutsHelper" | "layout"; const STORAGE_KEY = "argilla"; diff --git a/argilla-sdk/.pre-commit-config.yaml b/argilla-sdk/.pre-commit-config.yaml deleted file mode 100644 index 5bc2b29a18..0000000000 --- a/argilla-sdk/.pre-commit-config.yaml +++ /dev/null @@ -1,36 +0,0 @@ -repos: - - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.4 - hooks: - - id: insert-license - name: "Insert license header in Python source files" - files: \.py$ - exclude: ^docs/snippets/ - args: - - --license-filepath - - LICENSE_HEADER - - --fuzzy-match-generates-todo - - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.1.4 - hooks: - - id: ruff - args: - - --fix - - id: ruff-format - - - repo: https://github.com/kynan/nbstripout - rev: 0.7.1 - hooks: - - id: nbstripout - files: \.ipynb$ - args: - - --keep-count - - --keep-output - # - --keep-prompt-number - # - --keep-cell-ids - # - --keep-markdown - # - --keep-output-timestamp - # - --keep-execution-count - # - --keep-metadata - # - --keep-version diff --git a/argilla-sdk/README.md b/argilla-sdk/README.md deleted file mode 100644 index 92c8a80709..0000000000 --- a/argilla-sdk/README.md +++ /dev/null @@ -1,55 +0,0 @@ -## `argilla-sdk` - -The argilla-sdk is an experimental project to rebuild Argilla's python client in a simpler and friendlier way. The goal is to have a minimal set of core features that are easy to use and understand, but also contribute to feedback task that build quality data. - -!!! warning - This project is still in development and is not yet ready for production use. - -### Installation - -Since this package is not yet published on PyPi, you can install it directly from the repository: - -```console -pip install git+https://github.com/argilla-io/argilla-python.git -``` - -### Usage - -To use the client, you need to import the `Argilla` class and instantiate it with the API URL and API key. You can use this SDK with any stable release of argilla server >= 1.27. - -```python -import argilla_sdk as rg - -client = rg.Argilla(api_url="http://localhost:6900", api_key="argilla.apikey") -``` - -### Developer documentation - -If you want to contribute to the development of the SDK, you can follow the instructions below. - -#### Installation - -To install the development dependencies, run the following command: - -```console -# install pdm https://github.com/pdm-project/pdm -pip install pdm - -# install the package in editable mode -pip install -e . - -# install the development dependencies with pdm -pdm install --dev -``` - -#### Generating Documentation - -To generate the docs you will need to install the development dependencies, and run the following command to create the development server with `mkdocs`: - -```console -mkdocs serve -``` - -You will find the built documentation in `http://localhost:8000/argilla-python/`. - -The docs will be deployed for pull request branches automatically. diff --git a/argilla-sdk/pyproject.toml b/argilla-sdk/pyproject.toml deleted file mode 100644 index 0380497cbf..0000000000 --- a/argilla-sdk/pyproject.toml +++ /dev/null @@ -1,72 +0,0 @@ -[project] -name = "argilla-sdk" -description = "The Argilla python server SDK" -authors = [ - {name = "Argilla", email = "contact@argilla.io"}, -] -requires-python = ">=3.9,<3.12" -readme = "README.md" -license = {text = "Apache 2.0"} - -dynamic = ["version"] - -dependencies = [ - "httpx>=0.26.0", - "pydantic>=2.6.0, <3.0.0", - "tqdm>=4.60.0", - "rich>=10.0.0", -] - -[project.optional-dependencies] -io = [ - "datasets>=2.0.0", -] - -[build-system] -requires = ["pdm-backend"] -build-backend = "pdm.backend" - -[tool.ruff] -line-length = 120 - -[tool.black] -line-length = 120 - -[tool.pdm] -distribution = true - -[tool.pdm.version] -source = "file" -path = "src/argilla_sdk/__init__.py" - -[tool.pdm.dev-dependencies] -dev = [ - "ipython>=8.12.3", - "pytest>=7.4.4", - "flake8>=5.0.4", - "ruff>=0.1.12", - "pytest-mock>=3.12.0", - "pytest-httpx>=0.26.0", - "black>=23.12.1", - "build>=1.0.3", - "pre-commit>=3.5.0", - "mkdocs-material >= 9.5.17", - "mkdocstrings[python] >= 0.24.0", - "mkdocs-literate-nav >= 0.6.1", - "mkdocs-section-index >= 0.3.8", - "mkdocs-gen-files >= 0.5.0", - "mkdocs-open-in-new-tab >= 1.0.3", - "mike >= 2.0.0", - "Pillow >= 9.5.0", - "CairoSVG >= 2.7.1", - "mknotebooks >= 0.8.0", - "datasets>=2.19.1", -] - -[tool.pdm.scripts] -test = "pytest tests" -lint = "ruff check" -format = "black ." -all = {composite = ["format", "lint", "test"]} - - diff --git a/argilla-sdk/src/argilla_sdk/__init__.py b/argilla-sdk/src/argilla_sdk/__init__.py deleted file mode 100644 index e9f096b034..0000000000 --- a/argilla-sdk/src/argilla_sdk/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# 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. - -from argilla_sdk.client import * # noqa -from argilla_sdk.datasets import * # noqa -from argilla_sdk.workspaces._resource import * # noqa -from argilla_sdk.users._resource import * # noqa -from argilla_sdk.settings import * # noqa -from argilla_sdk.suggestions import * # noqa -from argilla_sdk.responses import * # noqa -from argilla_sdk.records import * # noqa -from argilla_sdk.vectors import * # noqa - - -__version__ = "2.0.0a0.dev0" diff --git a/argilla-sdk/src/argilla_sdk/_api/__init__.py b/argilla-sdk/src/argilla_sdk/_api/__init__.py deleted file mode 100644 index f4789efdc8..0000000000 --- a/argilla-sdk/src/argilla_sdk/_api/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# 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. - -from argilla_sdk._api._datasets import * # noqa 403 -from argilla_sdk._api._http import * # noqa 403 -from argilla_sdk._api._workspaces import * # noqa 403 -from argilla_sdk._api._users import * # noqa 403 -from argilla_sdk._api._client import * # noqa 403 -from argilla_sdk._api._fields import * # noqa 403 -from argilla_sdk._api._records import * # noqa 403 -from argilla_sdk._api._questions import * # noqa 403 diff --git a/argilla-sdk/src/argilla_sdk/_constants.py b/argilla-sdk/src/argilla_sdk/_constants.py deleted file mode 100644 index 7e28f0fc57..0000000000 --- a/argilla-sdk/src/argilla_sdk/_constants.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# 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. - -_DEFAULT_API_KEY = "argilla.apikey" -_DEFAULT_API_URL = "http://localhost:6900" diff --git a/argilla-sdk/src/argilla_sdk/records/_io/__init__.py b/argilla-sdk/src/argilla_sdk/records/_io/__init__.py deleted file mode 100644 index d91bc90c35..0000000000 --- a/argilla-sdk/src/argilla_sdk/records/_io/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# 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. - -from argilla_sdk.records._io._datasets import HFDatasetsIO # noqa: F401 -from argilla_sdk.records._io._generic import GenericIO # noqa: F401 -from argilla_sdk.records._io._json import JsonIO # noqa: F401 -from argilla_sdk.records._io._datasets import HFDataset # noqa: F401 diff --git a/argilla-sdk/src/argilla_sdk/settings/__init__.py b/argilla-sdk/src/argilla_sdk/settings/__init__.py deleted file mode 100644 index 4e376a96c6..0000000000 --- a/argilla-sdk/src/argilla_sdk/settings/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# 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. - -from argilla_sdk.settings._field import * # noqa: F403 -from argilla_sdk.settings._metadata import * # noqa: F403 -from argilla_sdk.settings._vector import * # noqa: F403 -from argilla_sdk.settings._question import * # noqa: F403 -from argilla_sdk.settings._resource import * # noqa: F403 diff --git a/argilla-sdk/tests/integration/conftest.py b/argilla-sdk/tests/integration/conftest.py deleted file mode 100644 index 44b9e177f8..0000000000 --- a/argilla-sdk/tests/integration/conftest.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# 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. - -import pytest - -import argilla_sdk as rg - - -@pytest.fixture(scope="session") -def client() -> rg.Argilla: - client = rg.Argilla() - yield client - - -@pytest.fixture(autouse=True) -def cleanup(client: rg.Argilla): - for workspace in client.workspaces: - if workspace.name.startswith("test_"): - for dataset in workspace.datasets: - dataset.delete() - workspace.delete() - - for user in client.users: - if user.username.startswith("test_"): - user.delete() diff --git a/argilla-server/.pre-commit-config.yaml b/argilla-server/.pre-commit-config.yaml deleted file mode 100644 index d8898694ec..0000000000 --- a/argilla-server/.pre-commit-config.yaml +++ /dev/null @@ -1,47 +0,0 @@ -repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 - hooks: - - id: check-yaml - - id: end-of-file-fixer - exclude_types: [text, jupyter] - - id: trailing-whitespace - - - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.5 - hooks: - - id: insert-license - name: "Insert license header in Python source files" - files: \.py$ - args: - - --license-filepath - - license_header.txt - - --fuzzy-match-generates-todo - # - --remove-header - - - repo: https://github.com/psf/black - rev: 24.4.2 - hooks: - - id: black - additional_dependencies: ["typer==0.7.0"] - args: [--line-length=120] - - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.3 - hooks: - # Simulate isort via (the much faster) ruff - - id: ruff - args: - - --select=I - - --fix - -ci: - autofix_commit_msg: | - [pre-commit.ci] auto fixes from pre-commit.com hooks - for more information, see https://pre-commit.ci - autofix_prs: true - autoupdate_branch: "" - autoupdate_commit_msg: "[pre-commit.ci] pre-commit autoupdate" - autoupdate_schedule: weekly - skip: [] - submodules: false diff --git a/argilla-server/CHANGELOG.md b/argilla-server/CHANGELOG.md index 59c86e4601..ad4561a589 100644 --- a/argilla-server/CHANGELOG.md +++ b/argilla-server/CHANGELOG.md @@ -24,6 +24,11 @@ These are the section headers that we use: - Removed all API v0 endpoints. ([#4852](https://github.com/argilla-io/argilla/pull/4852)) +### Fixed + +- Fixed error when updating records in bulk with wrong `external_id` but correct record `id`. ([#5014](https://github.com/argilla-io/argilla/pull/5014)) +- Fixed error when searching all record response values. ([#5003](https://github.com/argilla-io/argilla/pull/5003)) + ## [1.29.0](https://github.com/argilla-io/argilla/compare/v1.28.0...v1.29.0) ### Added diff --git a/LICENSE b/argilla-server/LICENSE similarity index 100% rename from LICENSE rename to argilla-server/LICENSE diff --git a/license_header.txt b/argilla-server/LICENSE_HEADER similarity index 100% rename from license_header.txt rename to argilla-server/LICENSE_HEADER diff --git a/argilla-server/src/argilla_server/_app.py b/argilla-server/src/argilla_server/_app.py index 5a58596096..f0184003ab 100644 --- a/argilla-server/src/argilla_server/_app.py +++ b/argilla-server/src/argilla_server/_app.py @@ -35,7 +35,6 @@ from argilla_server.database import get_async_db from argilla_server.logging import configure_logging from argilla_server.models import User -from argilla_server.pydantic_v1.errors import ConfigError from argilla_server.search_engine import get_search_engine from argilla_server.security import auth from argilla_server.settings import settings diff --git a/argilla-server/src/argilla_server/alembic/env.py b/argilla-server/src/argilla_server/alembic/env.py index 2716507f04..2329429173 100644 --- a/argilla-server/src/argilla_server/alembic/env.py +++ b/argilla-server/src/argilla_server/alembic/env.py @@ -17,7 +17,7 @@ from alembic import context from argilla_server.database import database_url_sync from argilla_server.models.base import DatabaseModel -from argilla_server.models.database import * # noqa: I001 +from argilla_server.models.database import * # noqa from sqlalchemy import engine_from_config, pool # this is the Alembic Config object, which provides diff --git a/argilla-server/src/argilla_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py b/argilla-server/src/argilla_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py index fc203fbd15..305e350924 100644 --- a/argilla-server/src/argilla_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py @@ -19,6 +19,7 @@ Create Date: 2023-02-14 10:36:56.313539 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py b/argilla-server/src/argilla_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py index c5b55b2300..a9138fa247 100644 --- a/argilla-server/src/argilla_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py +++ b/argilla-server/src/argilla_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py @@ -19,7 +19,7 @@ Create Date: 2023-07-24 12:47:11.715011 """ -import sqlalchemy as sa + from alembic import op # revision identifiers, used by Alembic. diff --git a/argilla-server/src/argilla_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py b/argilla-server/src/argilla_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py index 9fc290f242..c10f95ad8a 100644 --- a/argilla-server/src/argilla_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py @@ -19,6 +19,7 @@ Create Date: 2023-04-03 17:24:53.836750 """ + import sqlalchemy as sa from alembic import op from sqlalchemy.sql import expression diff --git a/argilla-server/src/argilla_server/alembic/versions/3fc3c0839959_create_suggestions_table.py b/argilla-server/src/argilla_server/alembic/versions/3fc3c0839959_create_suggestions_table.py index 13b7bf0500..cfcdb48597 100644 --- a/argilla-server/src/argilla_server/alembic/versions/3fc3c0839959_create_suggestions_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/3fc3c0839959_create_suggestions_table.py @@ -19,6 +19,7 @@ Create Date: 2023-06-27 17:34:49.734260 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py b/argilla-server/src/argilla_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py index 6a366186bc..b5949f5364 100644 --- a/argilla-server/src/argilla_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py @@ -19,6 +19,7 @@ Create Date: 2023-06-14 13:02:41.735153 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/74694870197c_create_users_table.py b/argilla-server/src/argilla_server/alembic/versions/74694870197c_create_users_table.py index 6622585f65..e117b2cb81 100644 --- a/argilla-server/src/argilla_server/alembic/versions/74694870197c_create_users_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/74694870197c_create_users_table.py @@ -19,6 +19,7 @@ Create Date: 2023-02-13 17:08:05.445314 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py b/argilla-server/src/argilla_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py index 2030ff38e8..bfe5bda5e2 100644 --- a/argilla-server/src/argilla_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py @@ -19,6 +19,7 @@ Create Date: 2023-09-12 16:21:14.321044 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py b/argilla-server/src/argilla_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py index adb3ca0c64..66d0be0f61 100644 --- a/argilla-server/src/argilla_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py @@ -19,6 +19,7 @@ Create Date: 2023-09-22 11:40:07.700301 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py b/argilla-server/src/argilla_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py index bedd94617d..e25f96d549 100644 --- a/argilla-server/src/argilla_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py @@ -19,6 +19,7 @@ Create Date: 2023-02-13 18:00:04.369604 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py b/argilla-server/src/argilla_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py index 7f8b333f02..015ba9c398 100644 --- a/argilla-server/src/argilla_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py @@ -19,6 +19,7 @@ Create Date: 2023-10-19 16:06:16.097130 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/8be56284dac0_create_records_table.py b/argilla-server/src/argilla_server/alembic/versions/8be56284dac0_create_records_table.py index 96b1535751..98a7c990c5 100644 --- a/argilla-server/src/argilla_server/alembic/versions/8be56284dac0_create_records_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/8be56284dac0_create_records_table.py @@ -19,6 +19,7 @@ Create Date: 2023-04-13 12:56:56.456664 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/8c574ada5e5f_update_enum_columns.py b/argilla-server/src/argilla_server/alembic/versions/8c574ada5e5f_update_enum_columns.py index 124e42c370..78c6037ab0 100644 --- a/argilla-server/src/argilla_server/alembic/versions/8c574ada5e5f_update_enum_columns.py +++ b/argilla-server/src/argilla_server/alembic/versions/8c574ada5e5f_update_enum_columns.py @@ -19,6 +19,7 @@ Create Date: 2023-06-23 15:55:19.928164 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/ae5522b4c674_create_fields_table.py b/argilla-server/src/argilla_server/alembic/versions/ae5522b4c674_create_fields_table.py index c50d584c88..77586badba 100644 --- a/argilla-server/src/argilla_server/alembic/versions/ae5522b4c674_create_fields_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/ae5522b4c674_create_fields_table.py @@ -19,6 +19,7 @@ Create Date: 2023-04-21 16:10:27.320399 """ + import sqlalchemy as sa from alembic import op from sqlalchemy.sql import expression diff --git a/argilla-server/src/argilla_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py b/argilla-server/src/argilla_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py index 50795b3e50..f8fa87536e 100644 --- a/argilla-server/src/argilla_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py @@ -19,6 +19,7 @@ Create Date: 2023-09-29 13:51:44.525944 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/b9099dc08489_create_datasets_table.py b/argilla-server/src/argilla_server/alembic/versions/b9099dc08489_create_datasets_table.py index 2c921d848d..bd35868259 100644 --- a/argilla-server/src/argilla_server/alembic/versions/b9099dc08489_create_datasets_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/b9099dc08489_create_datasets_table.py @@ -19,6 +19,7 @@ Create Date: 2023-03-29 17:26:25.432467 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/bda6fe24314e_create_vectors_table.py b/argilla-server/src/argilla_server/alembic/versions/bda6fe24314e_create_vectors_table.py index ed26001567..d4829681d3 100644 --- a/argilla-server/src/argilla_server/alembic/versions/bda6fe24314e_create_vectors_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/bda6fe24314e_create_vectors_table.py @@ -19,6 +19,7 @@ Create Date: 2023-09-21 15:41:59.642012 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py b/argilla-server/src/argilla_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py index 5c5c561cc7..2775011537 100644 --- a/argilla-server/src/argilla_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py +++ b/argilla-server/src/argilla_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py @@ -19,6 +19,7 @@ Create Date: 2024-04-08 13:14:48.437677 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/alembic/versions/e402e9d9245e_create_responses_table.py b/argilla-server/src/argilla_server/alembic/versions/e402e9d9245e_create_responses_table.py index db5fa24380..c9d49a7c77 100644 --- a/argilla-server/src/argilla_server/alembic/versions/e402e9d9245e_create_responses_table.py +++ b/argilla-server/src/argilla_server/alembic/versions/e402e9d9245e_create_responses_table.py @@ -19,6 +19,7 @@ Create Date: 2023-04-13 14:48:52.462570 """ + import sqlalchemy as sa from alembic import op diff --git a/argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py b/argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py index 7866e24d15..772008718b 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py @@ -19,7 +19,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server import models from argilla_server.api.policies.v1 import DatasetPolicy, MetadataPropertyPolicy, authorize, is_authorized from argilla_server.api.schemas.v1.datasets import ( Dataset as DatasetSchema, @@ -38,10 +37,10 @@ MetadataPropertyCreate, ) from argilla_server.api.schemas.v1.vector_settings import VectorSettings, VectorSettingsCreate, VectorsSettings -from argilla_server.contexts import accounts, datasets +from argilla_server.contexts import datasets from argilla_server.database import get_async_db from argilla_server.enums import ResponseStatus -from argilla_server.models import Dataset, User, Workspace +from argilla_server.models import Dataset, User from argilla_server.search_engine import ( SearchEngine, get_search_engine, diff --git a/argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py b/argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py index f8560b362e..e032aa7037 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py @@ -23,7 +23,6 @@ import argilla_server.search_engine as search_engine from argilla_server.api.policies.v1 import DatasetPolicy, RecordPolicy, authorize, is_authorized -from argilla_server.api.schemas.v1.datasets import Dataset as DatasetSchema from argilla_server.api.schemas.v1.records import ( Filters, FilterScope, diff --git a/argilla-server/src/argilla_server/api/handlers/v1/fields.py b/argilla-server/src/argilla_server/api/handlers/v1/fields.py index 87f983f255..a62c7dbcde 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/fields.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/fields.py @@ -14,7 +14,7 @@ from uuid import UUID -from fastapi import APIRouter, Depends, Security, status +from fastapi import APIRouter, Depends, Security from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload diff --git a/argilla-server/src/argilla_server/api/handlers/v1/metadata_properties.py b/argilla-server/src/argilla_server/api/handlers/v1/metadata_properties.py index 2034505df2..ae0392bfb0 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/metadata_properties.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/metadata_properties.py @@ -14,7 +14,7 @@ from uuid import UUID -from fastapi import APIRouter, Depends, Security, status +from fastapi import APIRouter, Depends, Security from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload diff --git a/argilla-server/src/argilla_server/api/handlers/v1/oauth2.py b/argilla-server/src/argilla_server/api/handlers/v1/oauth2.py index fd6b30bb24..96f5912492 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/oauth2.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/oauth2.py @@ -92,7 +92,7 @@ def _check_oauth_enabled_or_raise() -> None: def _get_provider_by_name_or_raise(provider_name: str) -> OAuth2ClientProvider: - if not provider_name in settings.oauth.providers: + if provider_name not in settings.oauth.providers: raise HTTPException(status_code=404, detail=f"Provider '{provider_name}' not found") return settings.oauth.providers[provider_name] diff --git a/argilla-server/src/argilla_server/api/handlers/v1/questions.py b/argilla-server/src/argilla_server/api/handlers/v1/questions.py index b5dd662f23..27d8cedf85 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/questions.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/questions.py @@ -14,7 +14,7 @@ from uuid import UUID -from fastapi import APIRouter, Depends, Security, status +from fastapi import APIRouter, Depends, Security from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload diff --git a/argilla-server/src/argilla_server/api/handlers/v1/records.py b/argilla-server/src/argilla_server/api/handlers/v1/records.py index a47ef4632b..3778921ee2 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/records.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/records.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING from uuid import UUID from fastapi import APIRouter, Depends, Query, Security, status @@ -26,7 +25,7 @@ from argilla_server.api.schemas.v1.responses import Response, ResponseCreate from argilla_server.api.schemas.v1.suggestions import Suggestion as SuggestionSchema from argilla_server.api.schemas.v1.suggestions import SuggestionCreate, Suggestions -from argilla_server.contexts import datasets, questions +from argilla_server.contexts import datasets from argilla_server.database import get_async_db from argilla_server.errors.future.base_errors import NotFoundError, UnprocessableEntityError from argilla_server.models import Dataset, Question, Record, Suggestion, User diff --git a/argilla-server/src/argilla_server/api/handlers/v1/responses.py b/argilla-server/src/argilla_server/api/handlers/v1/responses.py index 58a6222a00..56cb695c95 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/responses.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/responses.py @@ -14,7 +14,7 @@ from uuid import UUID -from fastapi import APIRouter, Depends, Security, status +from fastapi import APIRouter, Depends, Security from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload diff --git a/argilla-server/src/argilla_server/api/handlers/v1/suggestions.py b/argilla-server/src/argilla_server/api/handlers/v1/suggestions.py index 2c700aab75..1257545749 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/suggestions.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/suggestions.py @@ -14,7 +14,7 @@ from uuid import UUID -from fastapi import APIRouter, Depends, Security, status +from fastapi import APIRouter, Depends, Security from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload diff --git a/argilla-server/src/argilla_server/api/handlers/v1/users.py b/argilla-server/src/argilla_server/api/handlers/v1/users.py index 3e40816393..98d4ffcd3d 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/users.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/users.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import List from uuid import UUID from fastapi import APIRouter, Depends, Request, Security, status @@ -25,7 +24,6 @@ from argilla_server.api.schemas.v1.workspaces import Workspaces from argilla_server.contexts import accounts from argilla_server.database import get_async_db -from argilla_server.errors.future import NotUniqueError from argilla_server.models import User from argilla_server.security import auth diff --git a/argilla-server/src/argilla_server/api/handlers/v1/vectors_settings.py b/argilla-server/src/argilla_server/api/handlers/v1/vectors_settings.py index 115ca4935b..511e9a5b99 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/vectors_settings.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/vectors_settings.py @@ -14,7 +14,7 @@ from uuid import UUID -from fastapi import APIRouter, Depends, Security, status +from fastapi import APIRouter, Depends, Security from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload diff --git a/argilla-server/src/argilla_server/api/handlers/v1/workspaces.py b/argilla-server/src/argilla_server/api/handlers/v1/workspaces.py index 48f1c70319..1636998ea4 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/workspaces.py +++ b/argilla-server/src/argilla_server/api/handlers/v1/workspaces.py @@ -28,7 +28,7 @@ Workspaces, WorkspaceUserCreate, ) -from argilla_server.contexts import accounts, datasets +from argilla_server.contexts import accounts from argilla_server.database import get_async_db from argilla_server.errors.future import NotFoundError, UnprocessableEntityError from argilla_server.models import User, Workspace, WorkspaceUser diff --git a/argilla-server/src/argilla_server/api/policies/v1/commons.py b/argilla-server/src/argilla_server/api/policies/v1/commons.py index 6d87b058c1..d9326c7fc2 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/commons.py +++ b/argilla-server/src/argilla_server/api/policies/v1/commons.py @@ -12,8 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Awaitable, Callable, Optional -from uuid import UUID +from typing import Awaitable, Callable from argilla_server.errors import ForbiddenOperationError from argilla_server.models import User diff --git a/argilla-server/src/argilla_server/api/schemas/v1/metadata_properties.py b/argilla-server/src/argilla_server/api/schemas/v1/metadata_properties.py index 60ae6a063e..da8265f95a 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/metadata_properties.py +++ b/argilla-server/src/argilla_server/api/schemas/v1/metadata_properties.py @@ -13,7 +13,7 @@ # limitations under the License. from datetime import datetime -from typing import Annotated, Any, Dict, Generic, List, Literal, Optional, TypeVar, Union +from typing import Any, Dict, Generic, List, Literal, Optional, TypeVar, Union from uuid import UUID from argilla_server.api.schemas.v1.commons import UpdateSchema diff --git a/argilla-server/src/argilla_server/api/schemas/v1/questions.py b/argilla-server/src/argilla_server/api/schemas/v1/questions.py index 022bde0337..93106e7730 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/questions.py +++ b/argilla-server/src/argilla_server/api/schemas/v1/questions.py @@ -19,7 +19,7 @@ from argilla_server.api.schemas.v1.commons import UpdateSchema from argilla_server.api.schemas.v1.fields import FieldName from argilla_server.enums import OptionsOrder, QuestionType -from argilla_server.pydantic_v1 import BaseModel, Field, conlist, constr, root_validator, validator +from argilla_server.pydantic_v1 import BaseModel, Field, conlist, constr, root_validator from argilla_server.settings import settings try: diff --git a/argilla-server/src/argilla_server/api/schemas/v1/settings.py b/argilla-server/src/argilla_server/api/schemas/v1/settings.py index 89bad9bfeb..62df486aef 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/settings.py +++ b/argilla-server/src/argilla_server/api/schemas/v1/settings.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Dict, Optional +from typing import Optional from argilla_server.pydantic_v1 import BaseModel, BaseSettings, Field diff --git a/argilla-server/src/argilla_server/api/schemas/v1/suggestions.py b/argilla-server/src/argilla_server/api/schemas/v1/suggestions.py index 370c3702d2..9a98d6536b 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/suggestions.py +++ b/argilla-server/src/argilla_server/api/schemas/v1/suggestions.py @@ -13,7 +13,7 @@ # limitations under the License. from datetime import datetime -from typing import Annotated, Any, Dict, List, Literal, Optional, Union +from typing import Any, List, Literal, Optional, Union from uuid import UUID from argilla_server.api.schemas.v1.questions import QuestionName diff --git a/argilla-server/src/argilla_server/bulk/records_bulk.py b/argilla-server/src/argilla_server/bulk/records_bulk.py index 1a310a8e24..0e3d372be5 100644 --- a/argilla-server/src/argilla_server/bulk/records_bulk.py +++ b/argilla-server/src/argilla_server/bulk/records_bulk.py @@ -74,7 +74,6 @@ async def create_records_bulk(self, dataset: Dataset, bulk_create: RecordsBulkCr return RecordsBulk(items=records) async def _upsert_records_relationships(self, records: List[Record], records_create: List[RecordCreate]) -> None: - records_and_suggestions = list(zip(records, [r.suggestions for r in records_create])) records_and_responses = list(zip(records, [r.responses for r in records_create])) records_and_vectors = list(zip(records, [r.vectors for r in records_create])) @@ -88,7 +87,6 @@ async def _upsert_records_relationships(self, records: List[Record], records_cre async def _upsert_records_suggestions( self, records_and_suggestions: List[Tuple[Record, List[SuggestionCreate]]] ) -> List[Suggestion]: - upsert_many_suggestions = [] for idx, (record, suggestions) in enumerate(records_and_suggestions): try: @@ -121,7 +119,6 @@ async def _upsert_records_suggestions( async def _upsert_records_responses( self, records_and_responses: List[Tuple[Record, List[UserResponseCreate]]] ) -> List[Response]: - user_ids = [response.user_id for _, responses in records_and_responses for response in responses or []] users_by_id = await fetch_users_by_ids_as_dict(self._db, user_ids) @@ -152,7 +149,6 @@ async def _upsert_records_responses( async def _upsert_records_vectors( self, records_and_vectors: List[Tuple[Record, Dict[str, List[float]]]] ) -> List[Vector]: - upsert_many_vectors = [] for idx, (record, vectors) in enumerate(records_and_vectors): try: @@ -192,7 +188,7 @@ async def upsert_records_bulk(self, dataset: Dataset, bulk_upsert: RecordsBulkUp records = [] async with self._db.begin_nested(): for record_upsert in bulk_upsert.items: - record = found_records.get(record_upsert.external_id or record_upsert.id) + record = found_records.get(record_upsert.id) or found_records.get(record_upsert.external_id) if not record: record = Record( fields=record_upsert.fields, @@ -225,7 +221,6 @@ async def _fetch_existing_dataset_records( dataset: Dataset, records_upsert: List[RecordUpsert], ) -> Dict[Union[str, UUID], Record]: - records_by_external_id = await fetch_records_by_external_ids_as_dict( self._db, dataset, [r.external_id for r in records_upsert] ) diff --git a/argilla-server/src/argilla_server/cli/rich.py b/argilla-server/src/argilla_server/cli/rich.py index 9c30a07ae3..aff4be5434 100644 --- a/argilla-server/src/argilla_server/cli/rich.py +++ b/argilla-server/src/argilla_server/cli/rich.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING, Any +from typing import Any from rich.console import Console, RenderableType from rich.panel import Panel diff --git a/argilla-server/src/argilla_server/cli/search_engine/reindex.py b/argilla-server/src/argilla_server/cli/search_engine/reindex.py index eb26548387..3da2c6c095 100644 --- a/argilla-server/src/argilla_server/cli/search_engine/reindex.py +++ b/argilla-server/src/argilla_server/cli/search_engine/reindex.py @@ -124,7 +124,7 @@ async def _reindex_dataset(db: AsyncSession, search_engine: SearchEngine, progre async def _reindex_datasets(db: AsyncSession, search_engine: SearchEngine, progress: Progress) -> None: - task = progress.add_task(f"reindexing feedback datasets...", total=await Reindexer.count_datasets(db)) + task = progress.add_task("reindexing feedback datasets...", total=await Reindexer.count_datasets(db)) async for dataset in Reindexer.reindex_datasets(db, search_engine): await _reindex_dataset_records(db, search_engine, progress, dataset) @@ -155,7 +155,7 @@ async def _reindex(feedback_dataset_id: Optional[UUID] = None) -> None: def reindex( - feedback_dataset_id: Optional[UUID] = typer.Option(None, help="The id of a feedback dataset to be reindexed") + feedback_dataset_id: Optional[UUID] = typer.Option(None, help="The id of a feedback dataset to be reindexed"), ) -> None: asyncio.run(_reindex(feedback_dataset_id)) diff --git a/argilla-server/src/argilla_server/contexts/accounts.py b/argilla-server/src/argilla_server/contexts/accounts.py index 3fedcdbf93..21fe752082 100644 --- a/argilla-server/src/argilla_server/contexts/accounts.py +++ b/argilla-server/src/argilla_server/contexts/accounts.py @@ -18,7 +18,7 @@ from passlib.context import CryptContext from sqlalchemy import exists, select from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import Session, selectinload +from sqlalchemy.orm import selectinload from argilla_server.contexts import datasets from argilla_server.enums import UserRole diff --git a/argilla-server/src/argilla_server/contexts/datasets.py b/argilla-server/src/argilla_server/contexts/datasets.py index a31cbcfe61..e70193e0c5 100644 --- a/argilla-server/src/argilla_server/contexts/datasets.py +++ b/argilla-server/src/argilla_server/contexts/datasets.py @@ -60,9 +60,9 @@ VectorSettingsCreate, ) from argilla_server.api.schemas.v1.vectors import Vector as VectorSchema -from argilla_server.contexts import accounts, questions +from argilla_server.contexts import accounts from argilla_server.enums import DatasetStatus, RecordInclude, UserRole -from argilla_server.errors.future import NotFoundError, NotUniqueError, UnprocessableEntityError +from argilla_server.errors.future import NotUniqueError, UnprocessableEntityError from argilla_server.models import ( Dataset, Field, diff --git a/argilla-server/src/argilla_server/contexts/questions.py b/argilla-server/src/argilla_server/contexts/questions.py index a7cc0dfd68..fe05acc038 100644 --- a/argilla-server/src/argilla_server/contexts/questions.py +++ b/argilla-server/src/argilla_server/contexts/questions.py @@ -12,19 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Union -from uuid import UUID -from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import selectinload import argilla_server.errors.future as errors from argilla_server.api.schemas.v1.questions import ( QuestionCreate, QuestionUpdate, ) -from argilla_server.models import Dataset, Question, User +from argilla_server.models import Dataset, Question from argilla_server.validators.questions import ( QuestionCreateValidator, QuestionDeleteValidator, diff --git a/argilla-server/src/argilla_server/contexts/records.py b/argilla-server/src/argilla_server/contexts/records.py index def76d9ecb..c2b0f20bb9 100644 --- a/argilla-server/src/argilla_server/contexts/records.py +++ b/argilla-server/src/argilla_server/contexts/records.py @@ -12,20 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict, Iterable, Sequence +from typing import Dict, Sequence from uuid import UUID -from sqlalchemy import select, sql +from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.models import Dataset, Record, Suggestion +from argilla_server.models import Dataset, Record async def list_dataset_records_by_ids( db: AsyncSession, dataset_id: UUID, record_ids: Sequence[UUID] ) -> Sequence[Record]: - query = select(Record).filter(Record.id.in_(record_ids), Record.dataset_id == dataset_id) return (await db.execute(query)).unique().scalars().all() @@ -33,7 +32,6 @@ async def list_dataset_records_by_ids( async def list_dataset_records_by_external_ids( db: AsyncSession, dataset_id: UUID, external_ids: Sequence[str] ) -> Sequence[Record]: - query = ( select(Record) .filter(Record.external_id.in_(external_ids), Record.dataset_id == dataset_id) diff --git a/argilla-server/src/argilla_server/contexts/settings.py b/argilla-server/src/argilla_server/contexts/settings.py index a471e37e18..d2f483a185 100644 --- a/argilla-server/src/argilla_server/contexts/settings.py +++ b/argilla-server/src/argilla_server/contexts/settings.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Dict, Union +from typing import Union from argilla_server.api.schemas.v1.settings import ArgillaSettings, HuggingfaceSettings, Settings from argilla_server.settings import settings diff --git a/argilla-server/src/argilla_server/errors/__init__.py b/argilla-server/src/argilla_server/errors/__init__.py index 2f784920b4..779340a32c 100644 --- a/argilla-server/src/argilla_server/errors/__init__.py +++ b/argilla-server/src/argilla_server/errors/__init__.py @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -from .base_errors import * +from .base_errors import * # noqa diff --git a/argilla-server/src/argilla_server/helpers.py b/argilla-server/src/argilla_server/helpers.py index 4ce970f131..f38a4e0eca 100644 --- a/argilla-server/src/argilla_server/helpers.py +++ b/argilla-server/src/argilla_server/helpers.py @@ -16,8 +16,8 @@ """ Common helper functions """ + import logging -from typing import Any, Dict, List, Optional _LOGGER = logging.getLogger("argilla_server") diff --git a/argilla-server/src/argilla_server/logging.py b/argilla-server/src/argilla_server/logging.py index b81e27c612..4984b970c1 100644 --- a/argilla-server/src/argilla_server/logging.py +++ b/argilla-server/src/argilla_server/logging.py @@ -19,7 +19,6 @@ # TODO: Remove this and provide a file to configure logging - import logging from logging import Logger, StreamHandler from typing import Type diff --git a/argilla-server/src/argilla_server/models/__init__.py b/argilla-server/src/argilla_server/models/__init__.py index 52cb08924f..1fe3f724cc 100644 --- a/argilla-server/src/argilla_server/models/__init__.py +++ b/argilla-server/src/argilla_server/models/__init__.py @@ -15,6 +15,6 @@ # This line is included here since some enums are already imported from `argilla_server.models`. # We need to review and avoid this. This is only a workaround to not change everything right now -from argilla_server.enums import * # noqa: I001 -from .database import * # noqa: I001 -from .metadata_properties import * # noqa: I001 +from argilla_server.enums import * # noqa +from .database import * # noqa +from .metadata_properties import * # noqa diff --git a/argilla-server/src/argilla_server/search_engine/__init__.py b/argilla-server/src/argilla_server/search_engine/__init__.py index 7d9d1ce773..aef23c4884 100644 --- a/argilla-server/src/argilla_server/search_engine/__init__.py +++ b/argilla-server/src/argilla_server/search_engine/__init__.py @@ -15,7 +15,8 @@ from typing import AsyncGenerator from ..settings import settings -from .base import * +from .base import * # noqa +from .base import SearchEngine from .elasticsearch import ElasticSearchEngine from .opensearch import OpenSearchEngine diff --git a/argilla-server/src/argilla_server/search_engine/commons.py b/argilla-server/src/argilla_server/search_engine/commons.py index 22af1f12fa..2030b59ae5 100644 --- a/argilla-server/src/argilla_server/search_engine/commons.py +++ b/argilla-server/src/argilla_server/search_engine/commons.py @@ -832,7 +832,7 @@ async def __value_count_aggregation(self, index_name: str, field_name: str, quer async def __stats_aggregation(self, index_name: str, field_name: str, query: dict) -> dict: # See https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-stats-aggregation.html - aggregation_name = f"numeric_stats" + aggregation_name = "numeric_stats" stats_agg = {aggregation_name: {"stats": {"field": field_name}}} diff --git a/argilla-server/src/argilla_server/security/settings.py b/argilla-server/src/argilla_server/security/settings.py index f006b0c450..2715b9b3b5 100644 --- a/argilla-server/src/argilla_server/security/settings.py +++ b/argilla-server/src/argilla_server/security/settings.py @@ -16,7 +16,7 @@ from typing import TYPE_CHECKING, Optional from uuid import uuid4 -from argilla_server.pydantic_v1 import BaseSettings, PrivateAttr, validator +from argilla_server.pydantic_v1 import BaseSettings, PrivateAttr if TYPE_CHECKING: from argilla_server.security.authentication.oauth2 import OAuth2Settings diff --git a/argilla-server/src/argilla_server/settings.py b/argilla-server/src/argilla_server/settings.py index 32ba6c4778..d0900896fa 100644 --- a/argilla-server/src/argilla_server/settings.py +++ b/argilla-server/src/argilla_server/settings.py @@ -16,6 +16,7 @@ """ Common environment vars / settings """ + import logging import os import re diff --git a/argilla-server/src/argilla_server/utils.py b/argilla-server/src/argilla_server/utils.py index 12396175e8..7b806817b4 100644 --- a/argilla-server/src/argilla_server/utils.py +++ b/argilla-server/src/argilla_server/utils.py @@ -14,7 +14,7 @@ import re from collections import defaultdict -from typing import Any, Callable, Dict, List, Optional, Set, Type, TypeVar, Union +from typing import Any, Callable, Dict, List, Optional, Type, TypeVar, Union from uuid import UUID from fastapi import HTTPException, Query @@ -108,7 +108,7 @@ class Params(BaseModel): query_param_typing = Optional[List[str]] def _parse( - param_values: Optional[query_param_typing] = Query(None, alias=name, **kwargs) + param_values: Optional[query_param_typing] = Query(None, alias=name, **kwargs), ) -> Union[Dict[str, Any], T, None]: if param_values is None: return None diff --git a/argilla-server/src/argilla_server/utils/params.py b/argilla-server/src/argilla_server/utils/params.py index 5bb02e7d02..7b806817b4 100644 --- a/argilla-server/src/argilla_server/utils/params.py +++ b/argilla-server/src/argilla_server/utils/params.py @@ -108,7 +108,7 @@ class Params(BaseModel): query_param_typing = Optional[List[str]] def _parse( - param_values: Optional[query_param_typing] = Query(None, alias=name, **kwargs) + param_values: Optional[query_param_typing] = Query(None, alias=name, **kwargs), ) -> Union[Dict[str, Any], T, None]: if param_values is None: return None diff --git a/argilla-server/src/argilla_server/validators/records.py b/argilla-server/src/argilla_server/validators/records.py index 6aba29dbd5..01a80badba 100644 --- a/argilla-server/src/argilla_server/validators/records.py +++ b/argilla-server/src/argilla_server/validators/records.py @@ -150,8 +150,9 @@ def _validate_all_bulk_records(self, dataset: Dataset, records_upsert: List[Reco for idx, record_upsert in enumerate(records_upsert): try: record = self._existing_records_by_external_id_or_record_id.get( - record_upsert.external_id or record_upsert.id - ) + record_upsert.id + ) or self._existing_records_by_external_id_or_record_id.get(record_upsert.external_id) + if record: RecordUpdateValidator(RecordUpdate.parse_obj(record_upsert)).validate_for(dataset) else: diff --git a/argilla-server/src/argilla_server/validators/response_values.py b/argilla-server/src/argilla_server/validators/response_values.py index 4ba64f1c4e..eaeacd6aad 100644 --- a/argilla-server/src/argilla_server/validators/response_values.py +++ b/argilla-server/src/argilla_server/validators/response_values.py @@ -260,7 +260,7 @@ def _validate_labels_are_available_at_question_settings(self, span_question_sett available_labels = [option.value for option in span_question_settings.options] for value_item in self._response_value: - if not value_item.label in available_labels: + if value_item.label not in available_labels: raise UnprocessableEntityError( f"undefined label '{value_item.label}' for span question.\nValid labels are: {available_labels!r}" ) diff --git a/argilla-server/src/argilla_server/validators/responses.py b/argilla-server/src/argilla_server/validators/responses.py index 63d23adc08..ef98bd0fd1 100644 --- a/argilla-server/src/argilla_server/validators/responses.py +++ b/argilla-server/src/argilla_server/validators/responses.py @@ -15,7 +15,7 @@ from typing import Union from argilla_server.api.schemas.v1.responses import ResponseCreate, ResponseUpdate, ResponseUpsert -from argilla_server.enums import QuestionType, ResponseStatus +from argilla_server.enums import ResponseStatus from argilla_server.errors.future import UnprocessableEntityError from argilla_server.models import Record from argilla_server.validators.response_values import ResponseValueValidator diff --git a/argilla-server/tests/unit/api/handlers/v1/authentication/test_create_token.py b/argilla-server/tests/unit/api/handlers/v1/authentication/test_create_token.py index 38e835aa43..7bd8867293 100644 --- a/argilla-server/tests/unit/api/handlers/v1/authentication/test_create_token.py +++ b/argilla-server/tests/unit/api/handlers/v1/authentication/test_create_token.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest -from argilla_server.models import User from httpx import AsyncClient from tests.factories import UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py index ae730d7e99..d7e95520d5 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py @@ -11,7 +11,7 @@ # 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 uuid from uuid import UUID import pytest @@ -31,7 +31,6 @@ @pytest.mark.asyncio class TestDatasetRecordsBulk: - def url(self, dataset_id: UUID) -> str: return f"/api/v1/datasets/{dataset_id}/records/bulk" @@ -106,7 +105,7 @@ async def test_update_record_metadata_by_id( self, async_client: AsyncClient, db: AsyncSession, owner_auth_header: dict, metadata: dict ) -> None: dataset = await self.test_dataset() - records = await RecordFactory.create_batch(dataset=dataset, size=100) + records = await RecordFactory.create_batch(dataset=dataset, size=10) response = await async_client.put( self.url(dataset.id), @@ -125,7 +124,7 @@ async def test_update_record_metadata_by_external_id( self, async_client: AsyncClient, db: AsyncSession, owner_auth_header: dict, metadata: dict ): dataset = await self.test_dataset() - records = await RecordFactory.create_batch(dataset=dataset, size=100) + records = await RecordFactory.create_batch(dataset=dataset, size=10) response = await async_client.put( self.url(dataset.id), @@ -141,6 +140,30 @@ async def test_update_record_metadata_by_external_id( for record in updated_records: assert record.metadata_ == metadata + async def test_update_record_metadata_with_invalid_external_id_but_correct_id( + self, async_client: AsyncClient, db: AsyncSession, owner_auth_header: dict + ): + dataset = await self.test_dataset() + records = await RecordFactory.create_batch(dataset=dataset, size=10) + + new_metadata = {"whatever": "whatever"} + response = await async_client.put( + self.url(dataset.id), + headers=owner_auth_header, + json={ + "items": [ + {"id": str(record.id), "external_id": str(uuid.uuid4()), "metadata": new_metadata} + for record in records + ], + }, + ) + + assert response.status_code == 200, response.json() + assert (await db.execute(select(func.count(Record.id)))).scalar_one() == len(records) + updated_records = (await db.execute(select(Record))).scalars().all() + for record in updated_records: + assert record.metadata_ == new_metadata + async def test_update_record_for_other_dataset( self, async_client: AsyncClient, db: AsyncSession, owner_auth_header: dict ): diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py index ccaf8598c6..2ee3bb11df 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py @@ -34,7 +34,6 @@ @pytest.mark.asyncio class TestDatasetRecordsBulkWithResponses: - def url(self, dataset_id: UUID) -> str: return f"/api/v1/datasets/{dataset_id}/records/bulk" @@ -318,7 +317,7 @@ async def test_create_record_with_with_wrong_response_question( assert response.status_code == 422, response.json() assert response.json() == { - "detail": f"Record at position 0 does not have valid responses because " + "detail": "Record at position 0 does not have valid responses because " "found response value for non configured question with name='other-question'" } @@ -349,7 +348,7 @@ async def test_update_record_with_wrong_responses_values(self, async_client: Asy assert response.status_code == 422, response.json() assert response.json() == { - "detail": f"Record at position 0 does not have valid responses because 'wrong-label' " + "detail": "Record at position 0 does not have valid responses because 'wrong-label' " "is not a valid label for label selection question.\n" "Valid labels are: ['label-a', 'label-b']" } @@ -361,7 +360,6 @@ async def _configure_dataset_fields(self, dataset: Dataset): await dataset.awaitable_attrs.fields async def _configure_dataset_questions(self, dataset: Dataset): - await LabelSelectionQuestionFactory.create( dataset=dataset, name="label", diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py index c6028a4871..84413b4c2b 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py @@ -33,7 +33,6 @@ @pytest.mark.asyncio class TestDatasetRecordsBulkWithSuggestions: - def url(self, dataset_id: UUID) -> str: return f"/api/v1/datasets/{dataset_id}/records/bulk" @@ -329,8 +328,8 @@ async def test_create_record_with_wrong_suggestion_value_in_bulk( assert response.status_code == 422, response.json() assert response.json() == { - "detail": f"Record at position 0 does not have valid suggestions because suggestion for question name=label " - f"is not valid: 'wrong-label' is not a valid label for label selection question.\n" + "detail": "Record at position 0 does not have valid suggestions because suggestion for question name=label " + "is not valid: 'wrong-label' is not a valid label for label selection question.\n" "Valid labels are: ['label-a', 'label-b']" } @@ -389,8 +388,8 @@ async def test_update_record_with_wrong_suggestion_value_in_bulk( assert response.status_code == 422, response.json() assert response.json() == { - "detail": f"Record at position 0 does not have valid suggestions because suggestion for question name=label " - f"is not valid: 'wrong-label' is not a valid label for label selection question.\n" + "detail": "Record at position 0 does not have valid suggestions because suggestion for question name=label " + "is not valid: 'wrong-label' is not a valid label for label selection question.\n" "Valid labels are: ['label-a', 'label-b']" } diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py index 37ed298866..dee8f9d194 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py @@ -31,7 +31,6 @@ @pytest.mark.asyncio class TestDatasetRecordsBulkWithVectors: - def url(self, dataset_id: UUID) -> str: return f"/api/v1/datasets/{dataset_id}/records/bulk" diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_update_dataset_records.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_update_dataset_records.py index 4349035bfe..cf9fa909e9 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_update_dataset_records.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_update_dataset_records.py @@ -15,8 +15,8 @@ from uuid import UUID import pytest -from argilla_server.enums import DatasetStatus, QuestionType, ResponseStatus, SuggestionType -from argilla_server.models.database import Record, Response, Suggestion, User +from argilla_server.enums import DatasetStatus, QuestionType, SuggestionType +from argilla_server.models.database import Record, Suggestion, User from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py b/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py index 949811284c..ba66886963 100644 --- a/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py +++ b/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py @@ -16,9 +16,7 @@ import pytest from argilla_server.enums import OptionsOrder, QuestionType -from argilla_server.models import Question from httpx import AsyncClient -from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from tests.factories import LabelSelectionQuestionFactory, QuestionFactory, SpanQuestionFactory, TextQuestionFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py b/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py index 50c901d196..98b3a864b9 100644 --- a/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py +++ b/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py @@ -16,7 +16,7 @@ from uuid import UUID import pytest -from argilla_server.enums import QuestionType, ResponseStatusFilter +from argilla_server.enums import ResponseStatusFilter from argilla_server.models import Response, User from httpx import AsyncClient from sqlalchemy import func, select diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py b/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py index 46ab36c2ef..1e9586322c 100644 --- a/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py +++ b/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py @@ -13,7 +13,7 @@ # limitations under the License. from datetime import datetime -from typing import Any, List +from typing import List from uuid import UUID, uuid4 import pytest diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py b/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py index 721c263e45..009cec7d2e 100644 --- a/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py +++ b/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py @@ -39,7 +39,7 @@ @pytest.mark.asyncio class TestCreateCurrentUserResponsesBulk: def url(self) -> str: - return f"/api/v1/me/responses/bulk" + return "/api/v1/me/responses/bulk" def bulk_max_items(self) -> int: return 100 diff --git a/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py b/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py index ae9b32c873..9c77ac6765 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import uuid from typing import TYPE_CHECKING, Type from uuid import uuid4 diff --git a/argilla-server/tests/unit/api/handlers/v1/test_records.py b/argilla-server/tests/unit/api/handlers/v1/test_records.py index e48a2d33f2..ed7d9f8cc2 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_records.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_records.py @@ -21,7 +21,7 @@ from argilla_server.constants import API_KEY_HEADER_NAME from argilla_server.enums import ResponseStatus from argilla_server.models import Dataset, Record, Response, Suggestion, User, UserRole -from argilla_server.search_engine import SearchEngine, SearchResponseItem, SearchResponses +from argilla_server.search_engine import SearchEngine from sqlalchemy import func, select from sqlalchemy.orm import Session diff --git a/argilla-server/tests/unit/api/handlers/v1/test_users.py b/argilla-server/tests/unit/api/handlers/v1/test_users.py index eb5298c7c7..03851897d5 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_users.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_users.py @@ -22,7 +22,7 @@ from tests.factories import UserFactory, WorkspaceFactory if TYPE_CHECKING: - from fastapi.testclient import TestClient + pass @pytest.mark.asyncio diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py b/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py index 90eebbf0c2..059f863830 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from uuid import UUID import pytest from argilla_server.constants import API_KEY_HEADER_NAME diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py b/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py index 0c3b6b58c6..9d3341a252 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from datetime import datetime from uuid import UUID, uuid4 import pytest diff --git a/argilla-server/tests/unit/cli/search_engine/conftest.py b/argilla-server/tests/unit/cli/search_engine/conftest.py index 52032b0b83..f73159fe6d 100644 --- a/argilla-server/tests/unit/cli/search_engine/conftest.py +++ b/argilla-server/tests/unit/cli/search_engine/conftest.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING import pytest from pytest_mock import MockerFixture diff --git a/argilla-server/tests/unit/search_engine/test_commons.py b/argilla-server/tests/unit/search_engine/test_commons.py index 0c0f673ff7..ecba3232a6 100644 --- a/argilla-server/tests/unit/search_engine/test_commons.py +++ b/argilla-server/tests/unit/search_engine/test_commons.py @@ -277,7 +277,7 @@ def _expected_value_for_question(question: Question) -> Dict[str, Any]: @pytest.mark.asyncio @pytest.mark.skipif( - not server_settings.search_engine in ["elasticsearch", "opensearch"], + server_settings.search_engine not in ["elasticsearch", "opensearch"], reason="Running on elasticsearch/opensearch engine", ) class TestBaseElasticAndOpenSearchEngine: diff --git a/argilla-server/tests/unit/search_engine/test_elastisearch.py b/argilla-server/tests/unit/search_engine/test_elastisearch.py index 9dfb6091ad..2e51f06844 100644 --- a/argilla-server/tests/unit/search_engine/test_elastisearch.py +++ b/argilla-server/tests/unit/search_engine/test_elastisearch.py @@ -14,10 +14,9 @@ import pytest from argilla_server.search_engine import ElasticSearchEngine -from argilla_server.search_engine.commons import ALL_RESPONSES_STATUSES_FIELD, es_index_name_for_dataset +from argilla_server.search_engine.commons import es_index_name_for_dataset from argilla_server.settings import settings from opensearchpy import OpenSearch -from sqlalchemy.ext.asyncio import AsyncSession from tests.factories import DatasetFactory, VectorSettingsFactory from tests.unit.search_engine.test_commons import refresh_dataset diff --git a/argilla-server/tests/unit/search_engine/test_opensearch.py b/argilla-server/tests/unit/search_engine/test_opensearch.py index f5a4ea80a1..7d090e5d39 100644 --- a/argilla-server/tests/unit/search_engine/test_opensearch.py +++ b/argilla-server/tests/unit/search_engine/test_opensearch.py @@ -14,7 +14,7 @@ import pytest from argilla_server.search_engine import OpenSearchEngine -from argilla_server.search_engine.commons import ALL_RESPONSES_STATUSES_FIELD, es_index_name_for_dataset +from argilla_server.search_engine.commons import es_index_name_for_dataset from argilla_server.settings import settings from opensearchpy import OpenSearch, RequestError from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/security/test_model.py b/argilla-server/tests/unit/security/test_model.py index 1254e1f539..1b3e7a875c 100644 --- a/argilla-server/tests/unit/security/test_model.py +++ b/argilla-server/tests/unit/security/test_model.py @@ -12,13 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Union import pytest from argilla_server.api.schemas.v1.users import User, UserCreate from argilla_server.api.schemas.v1.workspaces import WorkspaceCreate -from tests.factories import UserFactory, WorkspaceFactory +from tests.factories import UserFactory from tests.pydantic_v1 import ValidationError diff --git a/argilla-server/tests/unit/validators/test_records_bulk.py b/argilla-server/tests/unit/validators/test_records_bulk.py index 7abaa57d41..9f876f4e0f 100644 --- a/argilla-server/tests/unit/validators/test_records_bulk.py +++ b/argilla-server/tests/unit/validators/test_records_bulk.py @@ -25,7 +25,6 @@ @pytest.mark.asyncio class TestRecordsBulkValidators: - async def configure_dataset(self) -> Dataset: dataset = await DatasetFactory.create(status="ready") diff --git a/argilla/CHANGELOG.md b/argilla-v1/CHANGELOG.md similarity index 100% rename from argilla/CHANGELOG.md rename to argilla-v1/CHANGELOG.md diff --git a/argilla-v1/README.md b/argilla-v1/README.md new file mode 100644 index 0000000000..8f7f0df3c6 --- /dev/null +++ b/argilla-v1/README.md @@ -0,0 +1,332 @@ + +

+ Argilla +
+ Argilla +
+

+

Work on data together, make your model outputs better!

+ +

+ +CI + +Codecov + +CI + + + + +

+ +

+ + + + + + + + + +

+ +Argilla is a **collaboration platform for AI engineers and domain experts** that require **high-quality outputs, full data ownership, and overall efficiency**. + +If you just want to get started, we recommend our [UI demo](https://demo.argilla.io/sign-in?auth=ZGVtbzoxMjM0NTY3OA%3D%3D) or our [2-click deployment quick start](https://docs.argilla.io/en/latest/getting_started/cheatsheet.html). Curious, and want to know more? Read our [documentation](https://docs.argilla.io/). + +## Why use Argilla? + +Whether you are working on monitoring and improving complex **generative tasks** involving LLM pipelines with RAG, or you are working on a **predictive task** for things like AB-testing of span- and text-classification models. Our versatile platform helps you ensure **your data work pays off**. + +### Improve your AI output quality through data quality + +Compute is expensive and output quality is important. We help you focus on data, which tackles the root cause of both of these problems at once. Argilla helps you to **achieve and keep high-quality standards** for your data. This means you can improve the quality of your AI output. + +### Take control of your data and models + +Most AI platforms are black boxes. Argilla is different. We believe that you should be the owner of both your data and your models. That's why we provide you with all the tools your team needs to **manage your data and models in a way that suits you best**. + +### Improve efficiency by quickly iterating on the right data and models + +Gathering data is a time-consuming process. Argilla helps by providing a platform that allows you to **interact with your data in a more engaging way**. This means you can quickly and easily label your data with filters, AI feedback suggestions and semantic search. So you can focus on training your models and monitoring their performance. + +## 🏘ī¸ Community + +We are an open-source community-driven project and we love to hear from you. Here are some ways to get involved: + +- [Community Meetup](https://lu.ma/embed-checkout/evt-IQtRiSuXZCIW6FB): listen in or present during one of our bi-weekly events. + +- [Slack](https://join.slack.com/t/rubrixworkspace/shared_invite/zt-whigkyjn-a3IUJLD7gDbTZ0rKlvcJ5g): get direct support from the community. + +- [Roadmap](https://github.com/orgs/argilla-io/projects/10/views/1): plans change but we love to discuss those with our community so feel encouraged to participate. + +## What do people build with Argilla? + +### Open-source datasets and models + +Argilla is a tool that can be used to achieve and keep **high-quality data standards** with a **focus on NLP and LLMs**. Our community uses Argilla to create amazing open-source [datasets](https://huggingface.co/datasets?other=argilla) and [models](https://huggingface.co/models?other=distilabel), and **we love contributions to open-source** ourselves too. + +- Our [cleaned UltraFeedback dataset](https://huggingface.co/datasets/argilla/ultrafeedback-binarized-preferences-cleaned) and the [Notus](https://huggingface.co/argilla/notus-7b-v1) and [Notux](https://huggingface.co/argilla/notux-8x7b-v1) models, where we improved benchmark and empirical human judgment for the Mistral and Mixtral models with cleaner data using **human feedback**. +- Our [distilabeled Intel Orca DPO dataset](https://huggingface.co/datasets/argilla/distilabel-intel-orca-dpo-pairs) and the [improved OpenHermes model](https://huggingface.co/argilla/distilabeled-OpenHermes-2.5-Mistral-7B), show how we improve model performance by filtering out 50% of the original dataset through **human and AI feedback**. + +### Internal Use cases + +AI teams from companies like [the Red Cross](https://510.global/), [Loris.ai](https://loris.ai/) and [Prolific](https://www.prolific.com/) use Argilla to **improve the quality and efficiency of AI** projects. They shared their experiences in our [AI community meetup](https://lu.ma/embed-checkout/evt-IQtRiSuXZCIW6FB). + +- AI for good: [the Red Cross presentation](https://youtu.be/ZsCqrAhzkFU?feature=shared) showcases **how their experts and AI team collaborate** by classifying and redirecting requests from refugees of the Ukrainian crisis to streamline the support processes of the Red Cross. +- Customer support: during [the Loris meetup](https://youtu.be/jWrtgf2w4VU?feature=shared) they showed how their AI team uses unsupervised and few-shot contrastive learning to help them **quickly validate and gain labelled samples for a huge amount of multi-label classifiers**. +- Research studies: [the showcase from Prolific](https://youtu.be/ePDlhIxnuAs?feature=shared) announced their integration with our platform. They use it to actively **distribute data collection projects** among their annotating workforce. This allows them to quickly and **efficiently collect high-quality data** for their research studies. + +## 👨‍đŸ’ģ Getting started + +
+pip install argilla +

+ +First things first! You can install Argilla from pypi. + +```bash +pip install argilla +``` + +

+
+ +
+Deploy Locally +

+ +```bash +docker run -d --name argilla -p 6900:6900 argilla/argilla-quickstart:latest +``` + +

+
+ +
+Deploy on Hugging Face Hub +

+ +HuggingFace Spaces now have persistent storage and this is supported from Argilla 1.11.0 onwards, but you will need to manually activate it via the HuggingFace Spaces settings. Otherwise, unless you're on a paid space upgrade, after 48 hours of inactivity the space will be shut off and you will lose all the data. To avoid losing data, we highly recommend using the persistent storage layer offered by HuggingFace. + +After this, we can connect to our server. + + + +

+
+ +
+Connect to the Server +

+Once you have deployed Argilla, we will connect to the server. + +```python +import argilla_v1 as rg + +rg.init( + api_url="argilla-api-url", # e.g. http://localhost:6900 or https://[your-owner-name]-[your_space_name].hf.space + api_key="argilla-api-key" # e.g. "owner.apikey" +workspace = "argilla-workspace" # e.g. "admin" +) +``` + +After this, you can start using Argilla, so you can create a dataset and add records to it. We use the FeedbackDataset as an example, but you can use any of the other datasets available in Argilla. You can find more information about the different datasets here. + +

+
+ +
+Create workspace +

+Once you have connected to the server, we will create a workspace for datasets. + +```python +workspace = rg.Workspace.create("new-workspace") +``` + +After this, you can assign users to the workspace, this will allow the datasets to appear in the UI for that user. + +```python +users = [u for u in rg.User.list() if u.role == "annotator"] +for user in users: + workspace.add_user(user) +``` + +

+
+ +
+Configure datasets +

+ +```python +import argilla_v1 as rg + +dataset = rg.FeedbackDataset( + guidelines="Please, read the question carefully and try to answer it as accurately as possible.", + fields=[ + rg.TextField(name="question"), + rg.TextField(name="answer"), + ], + questions=[ + rg.RatingQuestion( + name="answer_quality", + description="How would you rate the quality of the answer?", + values=[1, 2, 3, 4, 5], + ), + rg.TextQuestion( + name="answer_correction", + description="If you think the answer is not accurate, please, correct it.", + required=False, + ), + ] +) +remote_dataset = dataset.push_to_argilla(name="my-dataset", workspace="my-workspace") +``` + + + +

+
+ +
+Add records +

+ +```python +import argilla_v1 as rg + +record = rg.FeedbackRecord( + fields={ + "question": "Why can camels survive long without water?", + "answer": "Camels use the fat in their humps to keep them filled with energy and hydration for long periods of time." + }, + metadata={"source": "encyclopedia"}, + external_id='rec_1' +) +remote_dataset.add_records(record) +``` + +And that's it, you now have your first dataset ready. You can begin annotating it or embark on other related tasks. + + + +

+
+ + +
+Query datasets +

+ +```python +import argilla_v1 as rg + +filtered_dataset = dataset.filter_by(response_status="submitted") +``` + + + +

+
+ +
+Semantic search +

+ +```python +import argilla_v1 as rg + +# using text embeddings +similar_records = ds.find_similar_records( + vector_name="my_vector", + value=embedder_model.embeddings("My text is here") + # value=embedder_model.embeddings("My text is here").tolist() # for numpy arrays +) + +# using another record +similar_records = ds.find_similar_records( + vector_name="my_vector", + record=ds.records[0], + max_results=5 +) +``` + + + +

+
+ +
+Weak supervision +

+ +```python +from argilla_v1.labeling.text_classification import add_rules, Rule + +rule = Rule(query="positive impact", label="optimism") +add_rules(dataset="go_emotion", rules=[rule]) +``` + + + + + +

+
+ +
+Train models +

+ +```python +from argilla_v1.training import ArgillaTrainer + +trainer = ArgillaTrainer( + name="my_dataset", + workspace="my_workspace", + framework="my_framework", + model="my_framework_model", + train_size=0.8, + seed=42, + limit=10, + query="my-query" +) +trainer.update_config() # see usage below +trainer.train() +records = trainer.predict(["my-text"], as_argilla_records=True) +``` + + + +

+
+ +## đŸĨ‡ Contributors + +We love contributors and have launched a [collaboration with JustDiggit](https://argilla.io/blog/introducing-argilla-community-growers) to hand out our very own bunds and help the re-greening of sub-Saharan Africa. To help our community with the creation of contributions, we have created our [developer](https://docs.argilla.io/en/latest/community/developer_docs.html) and [contributor](https://docs.argilla.io/en/latest/community/contributing.html) docs. Additionally, you can always [schedule a meeting](https://calendly.com/argilla-office-hours/30min) with our Developer Advocacy team so they can get you up to speed. + + + + + + + diff --git a/argilla/environment_dev.yml b/argilla-v1/environment_dev.yml similarity index 100% rename from argilla/environment_dev.yml rename to argilla-v1/environment_dev.yml diff --git a/argilla-v1/pyproject.toml b/argilla-v1/pyproject.toml new file mode 100644 index 0000000000..a3089362ce --- /dev/null +++ b/argilla-v1/pyproject.toml @@ -0,0 +1,183 @@ +[build-system] +requires = ["setuptools>=61.0.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "argilla-v1" +description = "Open-source tool for exploring, labeling, and monitoring data for NLP projects." +readme = "README.md" +requires-python = ">=3.8,<3.13" +license = { text = "Apache-2.0" } +keywords = [ + "data-science", + "natural-language-processing", + "text-labeling", + "data-annotation", + "artificial-intelligence", + "knowledged-graph", + "developers-tools", + "human-in-the-loop", + "mlops", +] +authors = [{ name = "argilla", email = "contact@argilla.io" }] +maintainers = [{ name = "argilla", email = "contact@argilla.io" }] +dependencies = [ + # Client + "httpx >= 0.15,<= 0.26", + "deprecated ~= 1.2.0", + "packaging >= 20.0", + # pandas -> For data loading + "pandas >=1.0.0", + # Aligned pydantic version with server fastAPI + "pydantic >= 1.10.7", + # monitoring + "wrapt >= 1.14,< 1.15", + # weaksupervision + "numpy < 1.27.0", + # for progressbars + "tqdm >= 4.27.0", + # monitor background consumers + "backoff", + "monotonic", + # for logging, tracebacks, printing, progressbars + "rich != 13.1.0", + # for CLI + "typer >= 0.6.0, < 0.10.0", # spaCy only supports typer<0.10.0 +] +dynamic = ["version"] +# This line is just to force the build +[project.optional-dependencies] +server = [ + # "argilla-server" + # Comment previous line and uncomment the next line when we have a release + "argilla-server ~= 1.29.0" +] +server-postgresql = [ + # "argilla-server[postgresql]" + # Comment previos line and uncomment the next line when we have a release + "argilla-server[postgresql] ~= 1.29.0" +] +listeners = ["schedule ~= 1.1.0"] +integrations = [ + "PyYAML >= 5.4.1,< 6.1.0", # Required by `argilla.client.feedback.config` just used in `HuggingFaceDatasetMixin` + # TODO: `push_to_hub` fails up to 2.3.2, check patches when they come out eventually + "datasets > 1.17.0,!= 2.3.2", + # TODO: some backward comp. problems introduced in 0.5.0 + "huggingface_hub >= 0.5.0", + # Version 0.12 fixes a known installation issue related to `sentencepiece` and `tokenizers`, more at https://github.com/flairNLP/flair/issues/3129 + # Version 0.12.2 relaxes the `huggingface_hub` dependency + "flair >= 0.12.2", + "faiss-cpu", + "flyingsquid", + "pgmpy", + "plotly >= 4.1.0", + "snorkel >= 0.9.7", + "spacy>=3.5.0,<3.7.0", + "spacy-transformers >= 1.2.5", + "spacy-huggingface-hub >= 0.0.10", + "transformers[torch] >= 4.30.0", + "evaluate", + "seqeval", + "sentence-transformers", + "setfit>=1.0.0", + "span_marker", + "sentence-transformers>=2.0.0,<3.0.0", + "textdescriptives>=2.7.0,<3.0.0", + "openai>=0.27.10,<1.0.0", + "peft", + "trl>=0.5.0", + # To find the notebook name from within a notebook + "ipynbname", +] +tests = [ + "pytest", + "pytest-cov", + "pytest-mock", + "pytest-asyncio", + "pytest-env", + "factory_boy ~= 3.2.1", +] + +[project.urls] +homepage = "https://www.argilla.io" +documentation = "https://docs.argilla.io" +repository = "https://github.com/argilla-io/argilla" + +[project.scripts] +argilla = "argilla_v1.cli.app:app" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.setuptools.dynamic] +version = { attr = "argilla_v1.__version__" } + +[tool.setuptools.package-data] +"argilla_v1.client.feedback.integrations.huggingface.card" = [ + "argilla_template.md", +] +"argilla_v1.client.feedback.integrations.huggingface.model_card" = [ + "argilla_model_template.md", +] + +[tool.pytest.ini_options] +log_format = "%(asctime)s %(name)s %(levelname)s %(message)s" +log_date_format = "%Y-%m-%d %H:%M:%S" +log_cli = "True" +testpaths = ["tests"] +env = ["ARGILLA_ENABLE_TELEMETRY=0"] + + +[tool.coverage.run] +concurrency = ["greenlet", "thread", "multiprocessing"] + +[tool.coverage.report] +exclude_lines = [ + "pragma: no cover", + "def __repr__", + "def __str__", + "raise AssertionError", + "raise NotImplementedError", + "if __name__ == .__main__.:", + "if TYPE_CHECKING:", + "if _TYPE_CHECKING:", + "if typing.TYPE_CHECKING:", +] + +[tool.isort] +profile = "black" + +[tool.ruff] +# Ignore line length violations +ignore = ["E501"] + +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".hg", + ".mypy_cache", + ".nox", + ".pants.d", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "venv", +] +line-length = 120 + +[tool.ruff.per-file-ignores] +# Ignore imported but unused; +"__init__.py" = ["F401"] + +[tool.black] +line-length = 120 diff --git a/argilla/scripts/end2end_examples.py b/argilla-v1/scripts/end2end_examples.py similarity index 98% rename from argilla/scripts/end2end_examples.py rename to argilla-v1/scripts/end2end_examples.py index e49dff2204..c8d39c26bd 100644 --- a/argilla/scripts/end2end_examples.py +++ b/argilla-v1/scripts/end2end_examples.py @@ -30,7 +30,7 @@ from typing import Dict, Optional import papermill -from argilla._constants import DEFAULT_API_KEY +from argilla_v1._constants import DEFAULT_API_KEY ARGILLA_DOCS_PATH = Path(__file__).parent.parent.parent / "docs" diff --git a/argilla/setup.py b/argilla-v1/setup.py similarity index 100% rename from argilla/setup.py rename to argilla-v1/setup.py diff --git a/argilla-v1/src/argilla_v1/__init__.py b/argilla-v1/src/argilla_v1/__init__.py new file mode 100644 index 0000000000..6b08f1ae88 --- /dev/null +++ b/argilla-v1/src/argilla_v1/__init__.py @@ -0,0 +1,171 @@ +# coding=utf-8 +# 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. + +"""This file reflects the user facing API. +If you want to add something here, remember to add it as normal import in the _TYPE_CHECKING section (for IDEs), +as well as in the `_import_structure` dictionary. +""" + +import sys as _sys +from typing import TYPE_CHECKING as _TYPE_CHECKING + +from argilla_v1.logging import configure_logging as _configure_logging + +from . import _version +from .utils import LazyargillaModule as _LazyargillaModule + +try: + from rich.traceback import install as _install_rich + + # Rely on `rich` for tracebacks + _install_rich() +except ModuleNotFoundError: + pass + +__version__ = _version.version + +if _TYPE_CHECKING: + from argilla_v1.client.api import ( + copy, + delete, + delete_records, + get_workspace, + list_datasets, + list_workspaces, + load, + log, + log_async, + set_workspace, + ) + from argilla_v1.client.datasets import ( + DatasetForText2Text, + DatasetForTextClassification, + DatasetForTokenClassification, + read_datasets, + read_pandas, + ) + from argilla_v1.client.models import ( + Text2TextRecord, + TextClassificationRecord, + TextGenerationRecord, # TODO Remove TextGenerationRecord + TokenAttributions, + TokenClassificationRecord, + ) + from argilla_v1.client.singleton import active_client, init + from argilla_v1.client.users import User + from argilla_v1.client.utils import server_info + from argilla_v1.client.workspaces import Workspace + from argilla_v1.datasets import ( + TextClassificationSettings, + TokenClassificationSettings, + configure_dataset, + configure_dataset_settings, + load_dataset_settings, + ) + from argilla_v1.feedback import * # noqa + from argilla_v1.listeners import Metrics, RGListenerContext, Search, listener + from argilla_v1.monitoring.model_monitor import monitor + + +# TODO: remove me +_import_structure = { + "feedback": [ + "ArgillaTrainer", + "LabelQuestionStrategy", + "MultiLabelQuestionStrategy", + "RatingQuestionStrategy", + "FeedbackDataset", + "FeedbackRecord", + "LabelQuestion", + "MultiLabelQuestion", + "RatingQuestion", + "RankingQuestion", + "SpanQuestion", + "SpanLabelOption", + "ResponseSchema", + "ResponseStatusFilter", + "TextField", + "TextQuestion", + "ValueSchema", + "IntegerMetadataProperty", + "FloatMetadataProperty", + "TermsMetadataProperty", + "TermsMetadataFilter", + "IntegerMetadataFilter", + "FloatMetadataFilter", + "SortBy", + "SortOrder", + "SuggestionSchema", + "RecordSortField", + "VectorSettings", + ], + "client.api": [ + "copy", + "delete", + "delete_records", + "get_workspace", + "load", + "log", + "log_async", + "set_workspace", + "list_datasets", + "list_workspaces", + ], + "client.models": [ + "Text2TextRecord", + "TextGenerationRecord", # TODO Remove TextGenerationRecord + "TextClassificationRecord", + "TokenClassificationRecord", + "TokenAttributions", + ], + "client.singleton": [ + "init", + "active_client", + ], + "client.datasets": [ + "DatasetForText2Text", + "DatasetForTextClassification", + "DatasetForTokenClassification", + "read_datasets", + "read_pandas", + ], + "client.users": ["User"], + "client.utils": ["server_info"], + "client.workspaces": ["Workspace"], + "monitoring.model_monitor": ["monitor"], + "listeners.listener": [ + "listener", + "RGListenerContext", + "Search", + "Metrics", + ], + "datasets": [ + "configure_dataset", + "load_dataset_settings", + "configure_dataset_settings", + "TextClassificationSettings", + "TokenClassificationSettings", + ], +} + +_sys.modules[__name__] = _LazyargillaModule( + __name__, + globals()["__file__"], + _import_structure, + module_spec=__spec__, + extra_objects={"__version__": __version__}, +) + +_configure_logging() diff --git a/argilla/src/argilla/__main__.py b/argilla-v1/src/argilla_v1/__main__.py similarity index 94% rename from argilla/src/argilla/__main__.py rename to argilla-v1/src/argilla_v1/__main__.py index 87bf4d8155..fc923a37ed 100644 --- a/argilla/src/argilla/__main__.py +++ b/argilla-v1/src/argilla_v1/__main__.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.cli.app import app +from argilla_v1.cli.app import app if __name__ == "__main__": app() diff --git a/argilla-v1/src/argilla_v1/_constants.py b/argilla-v1/src/argilla_v1/_constants.py new file mode 100644 index 0000000000..e8cf15a9ee --- /dev/null +++ b/argilla-v1/src/argilla_v1/_constants.py @@ -0,0 +1,34 @@ +# coding=utf-8 +# 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. + +_ES_INDEX_REGEX_PATTERN = r"^(?!-|_)[a-z0-9-_]+$" + +API_KEY_HEADER_NAME = "X-Argilla-Api-Key" +WORKSPACE_HEADER_NAME = "X-Argilla-Workspace" + +DEFAULT_USERNAME = "argilla" +DEFAULT_PASSWORD = "1234" +DEFAULT_API_URL = "http://localhost:6900" +DEFAULT_API_KEY = "argilla.apikey" +DEFAULT_MAX_KEYWORD_LENGTH = 128 + +DATASET_NAME_REGEX_PATTERN = _ES_INDEX_REGEX_PATTERN +WORKSPACE_NAME_REGEX_PATTERN = _ES_INDEX_REGEX_PATTERN + +# constants for prepare_for_training(framework="openai") +OPENAI_SEPARATOR = "\n\n###\n\n" +OPENAI_END_TOKEN = " END" +OPENAI_WHITESPACE = " " +OPENAI_LEGACY_MODELS = ["babbage", "davinci", "curie", "ada"] diff --git a/argilla/src/argilla/_messages.py b/argilla-v1/src/argilla_v1/_messages.py similarity index 100% rename from argilla/src/argilla/_messages.py rename to argilla-v1/src/argilla_v1/_messages.py diff --git a/argilla/src/argilla/_version.py b/argilla-v1/src/argilla_v1/_version.py similarity index 95% rename from argilla/src/argilla/_version.py rename to argilla-v1/src/argilla_v1/_version.py index 2cbdcaef63..0be5545ddf 100644 --- a/argilla/src/argilla/_version.py +++ b/argilla-v1/src/argilla_v1/_version.py @@ -13,4 +13,4 @@ # limitations under the License. # coding: utf-8 -version = "2.0.0-dev" +version = "1.29.0-alpha.1" diff --git a/argilla/src/argilla/cli/__init__.py b/argilla-v1/src/argilla_v1/cli/__init__.py similarity index 100% rename from argilla/src/argilla/cli/__init__.py rename to argilla-v1/src/argilla_v1/cli/__init__.py diff --git a/argilla/src/argilla/cli/app.py b/argilla-v1/src/argilla_v1/cli/app.py similarity index 86% rename from argilla/src/argilla/cli/app.py rename to argilla-v1/src/argilla_v1/cli/app.py index 3034e1d373..388fde0a10 100644 --- a/argilla/src/argilla/cli/app.py +++ b/argilla-v1/src/argilla_v1/cli/app.py @@ -14,7 +14,7 @@ import warnings -from argilla.cli import ( +from argilla_v1.cli import ( datasets_app, info_app, login_app, @@ -24,8 +24,8 @@ whoami_app, workspaces_app, ) -from argilla.cli.typer_ext import ArgillaTyper -from argilla.utils.dependency import is_package_with_extras_installed +from argilla_v1.cli.typer_ext import ArgillaTyper +from argilla_v1.utils.dependency import is_package_with_extras_installed warnings.simplefilter("ignore", UserWarning) @@ -38,7 +38,7 @@ def handler_permission_error(e: PermissionError) -> None: from rich.console import Console - from argilla.cli.rich import get_argilla_themed_panel + from argilla_v1.cli.rich import get_argilla_themed_panel panel = get_argilla_themed_panel( "Logged in user doesn't have enough permissions to execute this command", @@ -60,7 +60,7 @@ def handler_permission_error(e: PermissionError) -> None: app.add_typer(whoami_app, name="whoami") app.add_typer(workspaces_app, name="workspaces") -if is_package_with_extras_installed("argilla", ["server"]): +if is_package_with_extras_installed("argilla_v1", ["server"]): from argilla_server.cli import app as server_app app.add_typer(server_app, name="server") diff --git a/argilla/src/argilla/cli/callback.py b/argilla-v1/src/argilla_v1/cli/callback.py similarity index 91% rename from argilla/src/argilla/cli/callback.py rename to argilla-v1/src/argilla_v1/cli/callback.py index 5298197d3c..f93d8d0f4b 100644 --- a/argilla/src/argilla/cli/callback.py +++ b/argilla-v1/src/argilla_v1/cli/callback.py @@ -14,9 +14,9 @@ import typer -from argilla.cli.rich import echo_in_panel -from argilla.client.login import ArgillaCredentials -from argilla.client.singleton import init +from argilla_v1.cli.rich import echo_in_panel +from argilla_v1.client.login import ArgillaCredentials +from argilla_v1.client.singleton import init def init_callback() -> None: diff --git a/argilla/src/argilla/cli/datasets/__init__.py b/argilla-v1/src/argilla_v1/cli/datasets/__init__.py similarity index 100% rename from argilla/src/argilla/cli/datasets/__init__.py rename to argilla-v1/src/argilla_v1/cli/datasets/__init__.py diff --git a/argilla/src/argilla/cli/datasets/__main__.py b/argilla-v1/src/argilla_v1/cli/datasets/__main__.py similarity index 87% rename from argilla/src/argilla/cli/datasets/__main__.py rename to argilla-v1/src/argilla_v1/cli/datasets/__main__.py index c6c022609f..3a14318939 100644 --- a/argilla/src/argilla/cli/datasets/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/datasets/__main__.py @@ -16,10 +16,10 @@ import typer -from argilla.cli.callback import init_callback -from argilla.cli.datasets.delete import delete_dataset -from argilla.cli.datasets.list import list_datasets -from argilla.cli.datasets.push import push_to_huggingface +from argilla_v1.cli.callback import init_callback +from argilla_v1.cli.datasets.delete import delete_dataset +from argilla_v1.cli.datasets.list import list_datasets +from argilla_v1.cli.datasets.push import push_to_huggingface _COMMANDS_REQUIRING_DATASET = ["delete", "push-to-huggingface"] @@ -31,8 +31,8 @@ def callback( ) -> None: init_callback() - from argilla.cli.rich import echo_in_panel - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset if ctx.invoked_subcommand not in _COMMANDS_REQUIRING_DATASET: return diff --git a/argilla/src/argilla/cli/datasets/delete.py b/argilla-v1/src/argilla_v1/cli/datasets/delete.py similarity index 90% rename from argilla/src/argilla/cli/datasets/delete.py rename to argilla-v1/src/argilla_v1/cli/datasets/delete.py index fe04665600..e9d1d72f7c 100644 --- a/argilla/src/argilla/cli/datasets/delete.py +++ b/argilla-v1/src/argilla_v1/cli/datasets/delete.py @@ -17,11 +17,11 @@ import typer if TYPE_CHECKING: - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset def delete_dataset(ctx: typer.Context) -> None: - from argilla.cli.rich import echo_in_panel + from argilla_v1.cli.rich import echo_in_panel dataset: "RemoteFeedbackDataset" = ctx.obj diff --git a/argilla/src/argilla/cli/datasets/list.py b/argilla-v1/src/argilla_v1/cli/datasets/list.py similarity index 89% rename from argilla/src/argilla/cli/datasets/list.py rename to argilla-v1/src/argilla_v1/cli/datasets/list.py index 2855cb7c98..571605ad12 100644 --- a/argilla/src/argilla/cli/datasets/list.py +++ b/argilla-v1/src/argilla_v1/cli/datasets/list.py @@ -16,7 +16,7 @@ import typer -from argilla.client.enums import DatasetType +from argilla_v1.client.enums import DatasetType def list_datasets( @@ -29,10 +29,10 @@ def list_datasets( ) -> None: from rich.console import Console - from argilla.cli.rich import echo_in_panel, get_argilla_themed_table - from argilla.client.api import list_datasets as list_datasets_api - from argilla.client.sdk.datasets.models import Dataset - from argilla.client.workspaces import Workspace + from argilla_v1.cli.rich import echo_in_panel, get_argilla_themed_table + from argilla_v1.client.api import list_datasets as list_datasets_api + from argilla_v1.client.sdk.datasets.models import Dataset + from argilla_v1.client.workspaces import Workspace console = Console() diff --git a/argilla/src/argilla/cli/datasets/push.py b/argilla-v1/src/argilla_v1/cli/datasets/push.py similarity index 94% rename from argilla/src/argilla/cli/datasets/push.py rename to argilla-v1/src/argilla_v1/cli/datasets/push.py index 5b1c386a25..3d60e0a75b 100644 --- a/argilla/src/argilla/cli/datasets/push.py +++ b/argilla-v1/src/argilla_v1/cli/datasets/push.py @@ -28,8 +28,8 @@ def push_to_huggingface( from rich.live import Live from rich.spinner import Spinner - from argilla.cli.rich import echo_in_panel - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset dataset: "FeedbackDataset" = ctx.obj diff --git a/argilla/src/argilla/cli/info/__init__.py b/argilla-v1/src/argilla_v1/cli/info/__init__.py similarity index 100% rename from argilla/src/argilla/cli/info/__init__.py rename to argilla-v1/src/argilla_v1/cli/info/__init__.py diff --git a/argilla/src/argilla/cli/info/__main__.py b/argilla-v1/src/argilla_v1/cli/info/__main__.py similarity index 86% rename from argilla/src/argilla/cli/info/__main__.py rename to argilla-v1/src/argilla_v1/cli/info/__main__.py index b114094097..6f89e8684d 100644 --- a/argilla/src/argilla/cli/info/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/info/__main__.py @@ -14,8 +14,8 @@ import typer -from argilla.cli.callback import init_callback -from argilla.client.utils import server_info +from argilla_v1.cli.callback import init_callback +from argilla_v1.client.utils import server_info app = typer.Typer(invoke_without_command=True) @@ -25,8 +25,8 @@ def info() -> None: from rich.console import Console from rich.markdown import Markdown - from argilla._version import version - from argilla.cli.rich import get_argilla_themed_panel + from argilla_v1._version import version + from argilla_v1.cli.rich import get_argilla_themed_panel init_callback() diff --git a/argilla/src/argilla/cli/login/__init__.py b/argilla-v1/src/argilla_v1/cli/login/__init__.py similarity index 100% rename from argilla/src/argilla/cli/login/__init__.py rename to argilla-v1/src/argilla_v1/cli/login/__init__.py diff --git a/argilla/src/argilla/cli/login/__main__.py b/argilla-v1/src/argilla_v1/cli/login/__main__.py similarity index 95% rename from argilla/src/argilla/cli/login/__main__.py rename to argilla-v1/src/argilla_v1/cli/login/__main__.py index ab7ae2f035..3640332e81 100644 --- a/argilla/src/argilla/cli/login/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/login/__main__.py @@ -34,8 +34,8 @@ def login( ): import json - from argilla.cli.rich import echo_in_panel - from argilla.client.login import login as login_func + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.login import login as login_func try: if extra_headers: diff --git a/argilla/src/argilla/cli/logout/__init__.py b/argilla-v1/src/argilla_v1/cli/logout/__init__.py similarity index 100% rename from argilla/src/argilla/cli/logout/__init__.py rename to argilla-v1/src/argilla_v1/cli/logout/__init__.py diff --git a/argilla/src/argilla/cli/logout/__main__.py b/argilla-v1/src/argilla_v1/cli/logout/__main__.py similarity index 86% rename from argilla/src/argilla/cli/logout/__main__.py rename to argilla-v1/src/argilla_v1/cli/logout/__main__.py index cadfcc2324..7b63002fa2 100644 --- a/argilla/src/argilla/cli/logout/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/logout/__main__.py @@ -19,9 +19,9 @@ @app.callback(help="Logout from an Argilla Server") def logout(force: bool = typer.Option(False, help="Force the logout even if the server cannot be reached")) -> None: - from argilla.cli.callback import init_callback - from argilla.cli.rich import echo_in_panel - from argilla.client.login import ArgillaCredentials + from argilla_v1.cli.callback import init_callback + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.login import ArgillaCredentials if not force: init_callback() diff --git a/argilla/src/argilla/cli/rich.py b/argilla-v1/src/argilla_v1/cli/rich.py similarity index 100% rename from argilla/src/argilla/cli/rich.py rename to argilla-v1/src/argilla_v1/cli/rich.py diff --git a/argilla/src/argilla/cli/training/__init__.py b/argilla-v1/src/argilla_v1/cli/training/__init__.py similarity index 100% rename from argilla/src/argilla/cli/training/__init__.py rename to argilla-v1/src/argilla_v1/cli/training/__init__.py diff --git a/argilla/src/argilla/cli/training/__main__.py b/argilla-v1/src/argilla_v1/cli/training/__main__.py similarity index 93% rename from argilla/src/argilla/cli/training/__main__.py rename to argilla-v1/src/argilla_v1/cli/training/__main__.py index dbbb17fe46..1c6527b4ec 100644 --- a/argilla/src/argilla/cli/training/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/training/__main__.py @@ -14,7 +14,7 @@ import typer -from argilla.client.models import Framework +from argilla_v1.client.models import Framework app = typer.Typer(no_args_is_help=True) @@ -43,9 +43,8 @@ def train( ): import json - from argilla.cli.callback import init_callback - from argilla.client.singleton import init - from argilla.training import ArgillaTrainer + from argilla_v1.cli.callback import init_callback + from argilla_v1.training import ArgillaTrainer init_callback() diff --git a/argilla/src/argilla/cli/typer_ext.py b/argilla-v1/src/argilla_v1/cli/typer_ext.py similarity index 100% rename from argilla/src/argilla/cli/typer_ext.py rename to argilla-v1/src/argilla_v1/cli/typer_ext.py diff --git a/argilla/src/argilla/cli/users/__init__.py b/argilla-v1/src/argilla_v1/cli/users/__init__.py similarity index 100% rename from argilla/src/argilla/cli/users/__init__.py rename to argilla-v1/src/argilla_v1/cli/users/__init__.py diff --git a/argilla/src/argilla/cli/users/__main__.py b/argilla-v1/src/argilla_v1/cli/users/__main__.py similarity index 93% rename from argilla/src/argilla/cli/users/__main__.py rename to argilla-v1/src/argilla_v1/cli/users/__main__.py index 933efb6321..43f03a9418 100644 --- a/argilla/src/argilla/cli/users/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/users/__main__.py @@ -16,7 +16,7 @@ import typer -from argilla.cli.callback import init_callback +from argilla_v1.cli.callback import init_callback from .create import create_user from .delete import delete_user @@ -38,8 +38,8 @@ def callback( if username is None: raise typer.BadParameter("The command requires a username provided using '--username' option") - from argilla.cli.rich import echo_in_panel - from argilla.client.users import User + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.users import User try: user = User.from_name(username) diff --git a/argilla/src/argilla/cli/users/create.py b/argilla-v1/src/argilla_v1/cli/users/create.py similarity index 95% rename from argilla/src/argilla/cli/users/create.py rename to argilla-v1/src/argilla_v1/cli/users/create.py index dd2527e3f8..f29f50632a 100644 --- a/argilla/src/argilla/cli/users/create.py +++ b/argilla-v1/src/argilla_v1/cli/users/create.py @@ -16,7 +16,7 @@ import typer -from argilla.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.users.models import UserRole def create_user( @@ -35,8 +35,8 @@ def create_user( ) -> None: from rich.markdown import Markdown - from argilla.cli.rich import echo_in_panel - from argilla.client.users import User + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.users import User try: user = User.create( diff --git a/argilla/src/argilla/cli/users/delete.py b/argilla-v1/src/argilla_v1/cli/users/delete.py similarity index 92% rename from argilla/src/argilla/cli/users/delete.py rename to argilla-v1/src/argilla_v1/cli/users/delete.py index c074567d43..49f5346a3c 100644 --- a/argilla/src/argilla/cli/users/delete.py +++ b/argilla-v1/src/argilla_v1/cli/users/delete.py @@ -17,11 +17,11 @@ import typer if TYPE_CHECKING: - from argilla.client.users import User + from argilla_v1.client.users import User def delete_user(ctx: typer.Context) -> None: - from argilla.cli.rich import echo_in_panel + from argilla_v1.cli.rich import echo_in_panel user: "User" = ctx.obj diff --git a/argilla/src/argilla/cli/users/list.py b/argilla-v1/src/argilla_v1/cli/users/list.py similarity index 92% rename from argilla/src/argilla/cli/users/list.py rename to argilla-v1/src/argilla_v1/cli/users/list.py index 6e4aeab7a3..eb100db7af 100644 --- a/argilla/src/argilla/cli/users/list.py +++ b/argilla-v1/src/argilla_v1/cli/users/list.py @@ -23,10 +23,10 @@ def list_users( ) -> None: from rich.console import Console - from argilla.cli.rich import echo_in_panel, get_argilla_themed_table - from argilla.client.sdk.v1.workspaces.models import WorkspaceModel - from argilla.client.users import User - from argilla.client.workspaces import Workspace + from argilla_v1.cli.rich import echo_in_panel, get_argilla_themed_table + from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel + from argilla_v1.client.users import User + from argilla_v1.client.workspaces import Workspace def build_workspaces_text(workspaces: Union[List[str], List[WorkspaceModel], None]) -> str: text = "" diff --git a/argilla/src/argilla/cli/whoami/__init__.py b/argilla-v1/src/argilla_v1/cli/whoami/__init__.py similarity index 100% rename from argilla/src/argilla/cli/whoami/__init__.py rename to argilla-v1/src/argilla_v1/cli/whoami/__init__.py diff --git a/argilla/src/argilla/cli/whoami/__main__.py b/argilla-v1/src/argilla_v1/cli/whoami/__main__.py similarity index 88% rename from argilla/src/argilla/cli/whoami/__main__.py rename to argilla-v1/src/argilla_v1/cli/whoami/__main__.py index 83c3ae6e4e..85cb1a44b1 100644 --- a/argilla/src/argilla/cli/whoami/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/whoami/__main__.py @@ -21,9 +21,9 @@ def whoami() -> None: from rich.markdown import Markdown - from argilla.cli.callback import init_callback - from argilla.cli.rich import echo_in_panel - from argilla.client.singleton import active_client + from argilla_v1.cli.callback import init_callback + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.singleton import active_client init_callback() user = active_client()._user diff --git a/argilla/src/argilla/cli/workspaces/__init__.py b/argilla-v1/src/argilla_v1/cli/workspaces/__init__.py similarity index 100% rename from argilla/src/argilla/cli/workspaces/__init__.py rename to argilla-v1/src/argilla_v1/cli/workspaces/__init__.py diff --git a/argilla/src/argilla/cli/workspaces/__main__.py b/argilla-v1/src/argilla_v1/cli/workspaces/__main__.py similarity index 93% rename from argilla/src/argilla/cli/workspaces/__main__.py rename to argilla-v1/src/argilla_v1/cli/workspaces/__main__.py index cecdd5ff22..ee20658e80 100644 --- a/argilla/src/argilla/cli/workspaces/__main__.py +++ b/argilla-v1/src/argilla_v1/cli/workspaces/__main__.py @@ -17,7 +17,7 @@ import typer -from argilla.cli.callback import init_callback +from argilla_v1.cli.callback import init_callback from .add_user import add_user from .create import create_workspace @@ -39,8 +39,8 @@ def callback( if name is None: raise typer.BadParameter("The command requires a workspace name provided using '--name' option") - from argilla.cli.rich import echo_in_panel - from argilla.client.workspaces import Workspace + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.client.workspaces import Workspace try: workspace = Workspace.from_name(name) diff --git a/argilla/src/argilla/cli/workspaces/add_user.py b/argilla-v1/src/argilla_v1/cli/workspaces/add_user.py similarity index 91% rename from argilla/src/argilla/cli/workspaces/add_user.py rename to argilla-v1/src/argilla_v1/cli/workspaces/add_user.py index efb2a41b6d..a7820b4625 100644 --- a/argilla/src/argilla/cli/workspaces/add_user.py +++ b/argilla-v1/src/argilla_v1/cli/workspaces/add_user.py @@ -17,16 +17,15 @@ import typer if TYPE_CHECKING: - from argilla.client.workspaces import Workspace + from argilla_v1.client.workspaces import Workspace def add_user( ctx: typer.Context, username: str = typer.Argument(..., help="The username of the user to be added to the workspace"), ) -> None: - from argilla.cli.rich import echo_in_panel - from argilla.cli.workspaces.utils import get_user - from argilla.client.users import User + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.cli.workspaces.utils import get_user workspace: "Workspace" = ctx.obj diff --git a/argilla/src/argilla/cli/workspaces/create.py b/argilla-v1/src/argilla_v1/cli/workspaces/create.py similarity index 93% rename from argilla/src/argilla/cli/workspaces/create.py rename to argilla-v1/src/argilla_v1/cli/workspaces/create.py index ec100c6aee..fddf4076e9 100644 --- a/argilla/src/argilla/cli/workspaces/create.py +++ b/argilla-v1/src/argilla_v1/cli/workspaces/create.py @@ -14,17 +14,17 @@ import typer -from argilla.client.workspaces import Workspace +from argilla_v1.client.workspaces import Workspace def create_workspace( name: str = typer.Argument( ..., help="The name of the workspace to be created", - ) + ), ) -> None: """Creates a workspace for the logged user in Argilla""" - from argilla.cli.rich import echo_in_panel + from argilla_v1.cli.rich import echo_in_panel try: Workspace.create(name=name) diff --git a/argilla/src/argilla/cli/workspaces/delete_user.py b/argilla-v1/src/argilla_v1/cli/workspaces/delete_user.py similarity index 92% rename from argilla/src/argilla/cli/workspaces/delete_user.py rename to argilla-v1/src/argilla_v1/cli/workspaces/delete_user.py index b8b4f46ce9..8f1857e701 100644 --- a/argilla/src/argilla/cli/workspaces/delete_user.py +++ b/argilla-v1/src/argilla_v1/cli/workspaces/delete_user.py @@ -17,15 +17,15 @@ import typer if TYPE_CHECKING: - from argilla.client.workspaces import Workspace + from argilla_v1.client.workspaces import Workspace def delete_user( ctx: typer.Context, username: str = typer.Argument(..., help="The username of the user to be removed from the workspace"), ) -> None: - from argilla.cli.rich import echo_in_panel - from argilla.cli.workspaces.utils import get_user + from argilla_v1.cli.rich import echo_in_panel + from argilla_v1.cli.workspaces.utils import get_user workspace: "Workspace" = ctx.obj diff --git a/argilla/src/argilla/cli/workspaces/list.py b/argilla-v1/src/argilla_v1/cli/workspaces/list.py similarity index 93% rename from argilla/src/argilla/cli/workspaces/list.py rename to argilla-v1/src/argilla_v1/cli/workspaces/list.py index 0625641c34..d9b2eb2122 100644 --- a/argilla/src/argilla/cli/workspaces/list.py +++ b/argilla-v1/src/argilla_v1/cli/workspaces/list.py @@ -19,8 +19,8 @@ def list_workspaces() -> None: """List the workspaces in Argilla and prints them on the console.""" from rich.console import Console - from argilla import Workspace - from argilla.cli.rich import get_argilla_themed_table + from argilla_v1 import Workspace + from argilla_v1.cli.rich import get_argilla_themed_table workspaces = Workspace.list() diff --git a/argilla/src/argilla/cli/workspaces/utils.py b/argilla-v1/src/argilla_v1/cli/workspaces/utils.py similarity index 93% rename from argilla/src/argilla/cli/workspaces/utils.py rename to argilla-v1/src/argilla_v1/cli/workspaces/utils.py index 1d1bea648f..b9dc8c1e82 100644 --- a/argilla/src/argilla/cli/workspaces/utils.py +++ b/argilla-v1/src/argilla_v1/cli/workspaces/utils.py @@ -14,8 +14,8 @@ import typer -from argilla.cli.rich import echo_in_panel -from argilla.client.users import User +from argilla_v1.cli.rich import echo_in_panel +from argilla_v1.client.users import User def get_user(username: str) -> User: diff --git a/argilla/src/argilla/client/__init__.py b/argilla-v1/src/argilla_v1/client/__init__.py similarity index 92% rename from argilla/src/argilla/client/__init__.py rename to argilla-v1/src/argilla_v1/client/__init__.py index b9ceccdb46..bc99b4aad1 100644 --- a/argilla/src/argilla/client/__init__.py +++ b/argilla-v1/src/argilla_v1/client/__init__.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.singleton import active_client +from argilla_v1.client.singleton import active_client diff --git a/argilla/src/argilla/client/api.py b/argilla-v1/src/argilla_v1/client/api.py similarity index 94% rename from argilla/src/argilla/client/api.py rename to argilla-v1/src/argilla_v1/client/api.py index 90a5d24dc5..900ad120c1 100644 --- a/argilla/src/argilla/client/api.py +++ b/argilla-v1/src/argilla_v1/client/api.py @@ -18,18 +18,18 @@ from asyncio import Future from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Tuple, Union -from argilla.client.client import Argilla -from argilla.client.datasets import Dataset -from argilla.client.enums import DatasetType -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset -from argilla.client.models import BulkResponse, Record # TODO Remove TextGenerationRecord -from argilla.client.sdk.commons import errors -from argilla.client.sdk.datasets.models import Dataset as DatasetModel -from argilla.client.sdk.v1.workspaces.models import WorkspaceModel -from argilla.client.singleton import ArgillaSingleton +from argilla_v1.client.client import Argilla +from argilla_v1.client.datasets import Dataset +from argilla_v1.client.enums import DatasetType +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.models import BulkResponse, Record # TODO Remove TextGenerationRecord +from argilla_v1.client.sdk.commons import errors +from argilla_v1.client.sdk.datasets.models import Dataset as DatasetModel +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.singleton import ArgillaSingleton if TYPE_CHECKING: - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset Api = Argilla # Backward compatibility @@ -73,7 +73,7 @@ def log( If the ``background`` argument is set to True, an ``asyncio.Future`` will be returned instead. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> record = rg.TextClassificationRecord( ... text="my first argilla example", ... prediction=[('spam', 0.8), ('ham', 0.2)] @@ -130,8 +130,8 @@ async def log_async( Examples: >>> # Log asynchronously from your notebook >>> import asyncio - >>> import argilla as rg - >>> from argilla.utils import setup_loop_in_thread + >>> import argilla_v1 as rg + >>> from argilla_v1.utils import setup_loop_in_thread >>> loop, _ = setup_loop_in_thread() >>> future_response = asyncio.run_coroutine_threadsafe( ... rg.log_async(my_records, dataset_name), loop @@ -205,7 +205,7 @@ def load( Examples: **Basic Loading: load the samples sorted by their ID** - >>> import argilla as rg + >>> import argilla_v1 as rg >>> dataset = rg.load(name="example-dataset") **Iterate over a large dataset:** @@ -215,7 +215,7 @@ def load( the given id, where N is determined by the `limit` parameter. **NOTE** If no `limit` is given the whole dataset after that ID will be retrieved. - >>> import argilla as rg + >>> import argilla_v1 as rg >>> dataset_batch_1 = rg.load(name="example-dataset", limit=1000) >>> dataset_batch_2 = rg.load(name="example-dataset", limit=1000, id_from=dataset_batch_1[-1].id) @@ -263,7 +263,7 @@ def copy(dataset: str, name_of_copy: str, workspace: Optional[str] = None) -> No workspace: If provided, dataset will be copied to that workspace Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.copy("my_dataset", name_of_copy="new_dataset") >>> rg.load("new_dataset") """ @@ -292,7 +292,7 @@ def delete(name: str, workspace: Optional[str] = None) -> None: the deletion process. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.delete(name="example-dataset") """ argilla = ArgillaSingleton.get() @@ -348,10 +348,10 @@ def delete_records( Examples: >>> ## Delete by id - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.delete_records(name="example-dataset", ids=[1,3,5]) >>> ## Discard records by query - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.delete_records(name="example-dataset", query="metadata.code=33", discard_only=True) """ return ArgillaSingleton.get().delete_records( diff --git a/argilla/src/argilla/client/apis/__init__.py b/argilla-v1/src/argilla_v1/client/apis/__init__.py similarity index 100% rename from argilla/src/argilla/client/apis/__init__.py rename to argilla-v1/src/argilla_v1/client/apis/__init__.py diff --git a/argilla/src/argilla/client/apis/base.py b/argilla-v1/src/argilla_v1/client/apis/base.py similarity index 94% rename from argilla/src/argilla/client/apis/base.py rename to argilla-v1/src/argilla_v1/client/apis/base.py index 0328cd4151..477ee621a6 100644 --- a/argilla/src/argilla/client/apis/base.py +++ b/argilla-v1/src/argilla_v1/client/apis/base.py @@ -13,7 +13,7 @@ # limitations under the License. from typing import Optional -from argilla.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.client import AuthenticatedClient class AbstractApi(object): diff --git a/argilla/src/argilla/client/apis/datasets.py b/argilla-v1/src/argilla_v1/client/apis/datasets.py similarity index 97% rename from argilla/src/argilla/client/apis/datasets.py rename to argilla-v1/src/argilla_v1/client/apis/datasets.py index 1274033f8f..75b6676d24 100644 --- a/argilla/src/argilla/client/apis/datasets.py +++ b/argilla-v1/src/argilla_v1/client/apis/datasets.py @@ -18,16 +18,16 @@ from datetime import datetime from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union -from argilla.client.apis import AbstractApi, api_compatibility -from argilla.client.sdk.commons.errors import ( +from argilla_v1.client.apis import AbstractApi, api_compatibility +from argilla_v1.client.sdk.commons.errors import ( AlreadyExistsApiError, ApiCompatibilityError, ForbiddenApiError, NotFoundApiError, ) -from argilla.client.sdk.datasets.api import get_dataset -from argilla.client.sdk.datasets.models import TaskType -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.client.sdk.datasets.api import get_dataset +from argilla_v1.client.sdk.datasets.models import TaskType +from argilla_v1.pydantic_v1 import BaseModel, Field @dataclass diff --git a/argilla/src/argilla/client/apis/metrics.py b/argilla-v1/src/argilla_v1/client/apis/metrics.py similarity index 92% rename from argilla/src/argilla/client/apis/metrics.py rename to argilla-v1/src/argilla_v1/client/apis/metrics.py index 3b5ae6f62b..5724fe1e58 100644 --- a/argilla/src/argilla/client/apis/metrics.py +++ b/argilla-v1/src/argilla_v1/client/apis/metrics.py @@ -14,8 +14,8 @@ from typing import Optional -from argilla.client.apis import AbstractApi -from argilla.client.sdk.datasets.models import TaskType +from argilla_v1.client.apis import AbstractApi +from argilla_v1.client.sdk.datasets.models import TaskType class MetricsAPI(AbstractApi): diff --git a/argilla/src/argilla/client/apis/search.py b/argilla-v1/src/argilla_v1/client/apis/search.py similarity index 85% rename from argilla/src/argilla/client/apis/search.py rename to argilla-v1/src/argilla_v1/client/apis/search.py index 665e272363..3963065c4d 100644 --- a/argilla/src/argilla/client/apis/search.py +++ b/argilla-v1/src/argilla_v1/client/apis/search.py @@ -15,12 +15,12 @@ import dataclasses from typing import List, Optional -from argilla.client.apis import AbstractApi -from argilla.client.models import Record -from argilla.client.sdk.datasets.models import TaskType -from argilla.client.sdk.text2text.models import Text2TextRecord -from argilla.client.sdk.text_classification.models import TextClassificationRecord -from argilla.client.sdk.token_classification.models import TokenClassificationRecord +from argilla_v1.client.apis import AbstractApi +from argilla_v1.client.models import Record +from argilla_v1.client.sdk.datasets.models import TaskType +from argilla_v1.client.sdk.text2text.models import Text2TextRecord +from argilla_v1.client.sdk.text_classification.models import TextClassificationRecord +from argilla_v1.client.sdk.token_classification.models import TokenClassificationRecord @dataclasses.dataclass diff --git a/argilla/src/argilla/client/apis/status.py b/argilla-v1/src/argilla_v1/client/apis/status.py similarity index 93% rename from argilla/src/argilla/client/apis/status.py rename to argilla-v1/src/argilla_v1/client/apis/status.py index 21c84d997b..e1da1eba21 100644 --- a/argilla/src/argilla/client/apis/status.py +++ b/argilla-v1/src/argilla_v1/client/apis/status.py @@ -17,10 +17,10 @@ from packaging.version import parse -from argilla.client.apis import AbstractApi -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.errors import ApiCompatibilityError -from argilla.pydantic_v1 import BaseModel +from argilla_v1.client.apis import AbstractApi +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.errors import ApiCompatibilityError +from argilla_v1.pydantic_v1 import BaseModel class ApiInfo(BaseModel): diff --git a/argilla/src/argilla/client/client.py b/argilla-v1/src/argilla_v1/client/client.py similarity index 94% rename from argilla/src/argilla/client/client.py rename to argilla-v1/src/argilla_v1/client/client.py index 7ff6820407..79b4cb4618 100644 --- a/argilla/src/argilla/client/client.py +++ b/argilla-v1/src/argilla_v1/client/client.py @@ -25,7 +25,7 @@ from rich import print as rprint from rich.progress import Progress -from argilla._constants import ( +from argilla_v1._constants import ( DATASET_NAME_REGEX_PATTERN, DEFAULT_API_KEY, DEFAULT_API_URL, @@ -33,59 +33,59 @@ WORKSPACE_HEADER_NAME, WORKSPACE_NAME_REGEX_PATTERN, ) -from argilla.client.apis.datasets import Datasets -from argilla.client.apis.metrics import MetricsAPI -from argilla.client.apis.search import Search, VectorSearch -from argilla.client.apis.status import Status -from argilla.client.datasets import ( +from argilla_v1.client.apis.datasets import Datasets +from argilla_v1.client.apis.metrics import MetricsAPI +from argilla_v1.client.apis.search import Search, VectorSearch +from argilla_v1.client.apis.status import Status +from argilla_v1.client.datasets import ( Dataset, DatasetForText2Text, DatasetForTextClassification, DatasetForTokenClassification, ) -from argilla.client.metrics.models import MetricResults -from argilla.client.models import ( +from argilla_v1.client.metrics.models import MetricResults +from argilla_v1.client.models import ( BulkResponse, Record, Text2TextRecord, TextClassificationRecord, TokenClassificationRecord, ) -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.api import bulk -from argilla.client.sdk.commons.errors import AlreadyExistsApiError, InputValueError, NotFoundApiError -from argilla.client.sdk.datasets import api as datasets_api -from argilla.client.sdk.datasets.models import CopyDatasetRequest, TaskType -from argilla.client.sdk.datasets.models import Dataset as DatasetModel -from argilla.client.sdk.metrics import api as metrics_api -from argilla.client.sdk.metrics.models import MetricInfo -from argilla.client.sdk.text2text.models import ( +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.api import bulk +from argilla_v1.client.sdk.commons.errors import AlreadyExistsApiError, InputValueError, NotFoundApiError +from argilla_v1.client.sdk.datasets import api as datasets_api +from argilla_v1.client.sdk.datasets.models import CopyDatasetRequest, TaskType +from argilla_v1.client.sdk.datasets.models import Dataset as DatasetModel +from argilla_v1.client.sdk.metrics import api as metrics_api +from argilla_v1.client.sdk.metrics.models import MetricInfo +from argilla_v1.client.sdk.text2text.models import ( CreationText2TextRecord, Text2TextBulkData, ) -from argilla.client.sdk.text2text.models import ( +from argilla_v1.client.sdk.text2text.models import ( Text2TextRecord as SdkText2TextRecord, ) -from argilla.client.sdk.text_classification import api as text_classification_api -from argilla.client.sdk.text_classification.models import ( +from argilla_v1.client.sdk.text_classification import api as text_classification_api +from argilla_v1.client.sdk.text_classification.models import ( CreationTextClassificationRecord, LabelingRule, LabelingRuleMetricsSummary, TextClassificationBulkData, ) -from argilla.client.sdk.text_classification.models import ( +from argilla_v1.client.sdk.text_classification.models import ( TextClassificationRecord as SdkTextClassificationRecord, ) -from argilla.client.sdk.token_classification.models import ( +from argilla_v1.client.sdk.token_classification.models import ( CreationTokenClassificationRecord, TokenClassificationBulkData, ) -from argilla.client.sdk.token_classification.models import ( +from argilla_v1.client.sdk.token_classification.models import ( TokenClassificationRecord as SdkTokenClassificationRecord, ) -from argilla.client.sdk.users import api as users_api -from argilla.client.sdk.v1.workspaces import api as workspaces_api_v1 -from argilla.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.sdk.users import api as users_api +from argilla_v1.client.sdk.v1.workspaces import api as workspaces_api_v1 +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel _LOGGER = logging.getLogger(__name__) @@ -128,7 +128,7 @@ def __init__( httpx_extra_kwargs: Extra kwargs passed to the `httpx.Client` constructor. For more information about the available arguments, see https://www.python-httpx.org/api/#client. Defaults to `None`. """ - from argilla.client.login import ArgillaCredentials + from argilla_v1.client.login import ArgillaCredentials api_url = api_url or os.getenv("ARGILLA_API_URL") api_key = api_key or os.getenv("ARGILLA_API_KEY") @@ -185,7 +185,7 @@ def __init__( self._check_argilla_versions() def _check_argilla_versions(self): - from argilla import __version__ as rg_version + from argilla_v1 import __version__ as rg_version api_info = Status(self.http_client).get_info() diff --git a/argilla/src/argilla/client/datasets.py b/argilla-v1/src/argilla_v1/client/datasets.py similarity index 98% rename from argilla/src/argilla/client/datasets.py rename to argilla-v1/src/argilla_v1/client/datasets.py index 48ae55b3f8..53c758a6b2 100644 --- a/argilla/src/argilla/client/datasets.py +++ b/argilla-v1/src/argilla_v1/client/datasets.py @@ -19,9 +19,9 @@ import pandas as pd -from argilla._constants import OPENAI_END_TOKEN, OPENAI_SEPARATOR, OPENAI_WHITESPACE -from argilla.client.apis.datasets import TextClassificationSettings, TokenClassificationSettings -from argilla.client.models import ( +from argilla_v1._constants import OPENAI_END_TOKEN, OPENAI_SEPARATOR, OPENAI_WHITESPACE +from argilla_v1.client.apis.datasets import TextClassificationSettings, TokenClassificationSettings +from argilla_v1.client.models import ( Framework, Record, Text2TextRecord, @@ -29,9 +29,9 @@ TokenAttributions, TokenClassificationRecord, ) -from argilla.client.sdk.datasets.models import TaskType -from argilla.utils.dependency import require_dependencies, requires_dependencies -from argilla.utils.span_utils import SpanUtils +from argilla_v1.client.sdk.datasets.models import TaskType +from argilla_v1.utils.dependency import require_dependencies, requires_dependencies +from argilla_v1.utils.span_utils import SpanUtils if TYPE_CHECKING: import datasets @@ -367,7 +367,7 @@ def prepare_for_training( returned by ``to_datasets`` for "transformers" framework or a spaCy DocBin for "spacy" framework. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rb_dataset = rg.DatasetForTokenClassification([ ... rg.TokenClassificationRecord( ... text="The text", @@ -391,7 +391,7 @@ def prepare_for_training( 'metrics': Value(dtype='null'), 'ner_tags': [ClassLabel(num_classes=3, names=['O', 'B-TAG', 'I-TAG'])]} - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rb_dataset = rg.DatasetForTextClassification([ ... rg.TextClassificationRecord( ... inputs={"header": "my header", "content": "my content"}, @@ -589,7 +589,7 @@ class DatasetForTextClassification(DatasetBase): """ Examples: >>> # Import/export records: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> dataset = rg.DatasetForTextClassification.from_pandas(my_dataframe) >>> dataset.to_datasets() >>> @@ -979,7 +979,7 @@ class DatasetForTokenClassification(DatasetBase): """ Examples: >>> # Import/export records: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> dataset = rg.DatasetForTokenClassification.from_pandas(my_dataframe) >>> dataset.to_datasets() >>> @@ -989,7 +989,7 @@ class DatasetForTokenClassification(DatasetBase): ... print(record) >>> >>> # Passing in a list of records: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> records = [ ... rg.TokenClassificationRecord(text="example", tokens=["example"]), ... rg.TokenClassificationRecord(text="another example", tokens=["another", "example"]), @@ -1250,7 +1250,7 @@ def _to_datasets_dict(self) -> Dict: # create a dict first, where we make the necessary transformations def entities_to_dict( - entities: Optional[List[Union[Tuple[str, int, int, float], Tuple[str, int, int]]]] + entities: Optional[List[Union[Tuple[str, int, int, float], Tuple[str, int, int]]]], ) -> Optional[List[Dict[str, Union[str, int, float]]]]: if entities is None: return None @@ -1297,7 +1297,7 @@ class DatasetForText2Text(DatasetBase): """ Examples: >>> # Import/export records: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> dataset = rg.DatasetForText2Text.from_pandas(my_dataframe) >>> dataset.to_datasets() >>> diff --git a/argilla/src/argilla/client/enums.py b/argilla-v1/src/argilla_v1/client/enums.py similarity index 100% rename from argilla/src/argilla/client/enums.py rename to argilla-v1/src/argilla_v1/client/enums.py diff --git a/argilla/src/argilla/client/feedback/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/__init__.py similarity index 95% rename from argilla/src/argilla/client/feedback/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/__init__.py index 10865e357d..73c49f7b44 100644 --- a/argilla/src/argilla/client/feedback/__init__.py +++ b/argilla-v1/src/argilla_v1/client/feedback/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.feedback.training import ( +from argilla_v1.client.feedback.training import ( ArgillaTrainer, TrainingTask, TrainingTaskForChatCompletion, @@ -26,7 +26,7 @@ TrainingTaskMapping, # <- Deprecated TrainingTaskMappingForTextClassification, # <- Deprecated ) -from argilla.client.feedback.unification import ( +from argilla_v1.client.feedback.unification import ( LabelQuestionStrategy, LabelQuestionUnification, MultiLabelQuestionStrategy, diff --git a/argilla/src/argilla/client/feedback/config.py b/argilla-v1/src/argilla_v1/client/feedback/config.py similarity index 92% rename from argilla/src/argilla/client/feedback/config.py rename to argilla-v1/src/argilla_v1/client/feedback/config.py index a559164eef..3a08000ff7 100644 --- a/argilla/src/argilla/client/feedback/config.py +++ b/argilla-v1/src/argilla_v1/client/feedback/config.py @@ -24,7 +24,7 @@ import json -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.pydantic_v1 import BaseModel, Field try: from yaml import SafeLoader, load, safe_dump @@ -35,17 +35,21 @@ " so you can run `pip install pyyaml`." ) -from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes -from argilla.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.feedback.schemas.types import ( + AllowedFieldTypes, + AllowedMetadataPropertyTypes, + AllowedQuestionTypes, +) +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings class DatasetConfig(BaseModel): fields: List[AllowedFieldTypes] questions: List[Annotated[AllowedQuestionTypes, Field(..., discriminator="type")]] guidelines: Optional[str] = None - metadata_properties: Optional[ - List[Annotated[AllowedMetadataPropertyTypes, Field(..., discriminator="type")]] - ] = None + metadata_properties: Optional[List[Annotated[AllowedMetadataPropertyTypes, Field(..., discriminator="type")]]] = ( + None + ) allow_extra_metadata: bool = True vectors_settings: Optional[List[VectorSettings]] = None diff --git a/argilla/src/argilla/client/feedback/constants.py b/argilla-v1/src/argilla_v1/client/feedback/constants.py similarity index 80% rename from argilla/src/argilla/client/feedback/constants.py rename to argilla-v1/src/argilla_v1/client/feedback/constants.py index 1bae9abc30..2dd46139f8 100644 --- a/argilla/src/argilla/client/feedback/constants.py +++ b/argilla-v1/src/argilla_v1/client/feedback/constants.py @@ -11,10 +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. -from typing import List, Union -from argilla.client.feedback.schemas.enums import FieldTypes, MetadataPropertyTypes -from argilla.pydantic_v1 import StrictFloat, StrictInt, StrictStr +from argilla_v1.client.feedback.schemas.enums import FieldTypes FETCHING_BATCH_SIZE = 250 PUSHING_BATCH_SIZE = 32 diff --git a/argilla/src/argilla/client/feedback/dataset/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/__init__.py similarity index 89% rename from argilla/src/argilla/client/feedback/dataset/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/__init__.py index 0f9646d49b..671b282c87 100644 --- a/argilla/src/argilla/client/feedback/dataset/__init__.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset __all__ = ["FeedbackDataset"] diff --git a/argilla/src/argilla/client/feedback/dataset/base.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/base.py similarity index 96% rename from argilla/src/argilla/client/feedback/dataset/base.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/base.py index d8ab91c5b4..9bdfd2f3dd 100644 --- a/argilla/src/argilla/client/feedback/dataset/base.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/base.py @@ -15,14 +15,14 @@ from abc import ABC, ABCMeta, abstractmethod from typing import TYPE_CHECKING, Any, Generic, Iterable, List, Literal, Optional, Tuple, TypeVar, Union -from argilla.client.feedback.integrations.huggingface import HuggingFaceDatasetMixin -from argilla.client.feedback.schemas.records import FeedbackRecord, SortBy -from argilla.utils.dependency import requires_dependencies +from argilla_v1.client.feedback.integrations.huggingface import HuggingFaceDatasetMixin +from argilla_v1.client.feedback.schemas.records import FeedbackRecord, SortBy +from argilla_v1.utils.dependency import requires_dependencies if TYPE_CHECKING: from datasets import Dataset - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes, @@ -176,7 +176,7 @@ def format_as(self, format: Literal["datasets"]) -> "Dataset": ValueError: if the provided format is not supported. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.init(...) >>> dataset = rg.FeedbackDataset.from_argilla(name="my-dataset") >>> huggingface_dataset = dataset.format_as("datasets") diff --git a/argilla/src/argilla/client/feedback/dataset/helpers.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/helpers.py similarity index 92% rename from argilla/src/argilla/client/feedback/dataset/helpers.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/helpers.py index 102ffedcc0..4580bb3ccc 100644 --- a/argilla/src/argilla/client/feedback/dataset/helpers.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/helpers.py @@ -17,19 +17,23 @@ import httpx -from argilla.client.feedback.constants import FIELD_TYPE_TO_PYTHON_TYPE -from argilla.client.feedback.dataset.base import FeedbackDatasetBase -from argilla.client.feedback.schemas import FeedbackRecord -from argilla.client.feedback.schemas.enums import MetadataPropertyTypes -from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes -from argilla.client.sdk.v1.datasets import api as datasets_api_v1 -from argilla.client.sdk.v1.datasets.models import FeedbackDatasetModel -from argilla.client.singleton import active_client -from argilla.client.workspaces import Workspace -from argilla.pydantic_v1 import BaseModel, Extra, ValidationError, create_model +from argilla_v1.client.feedback.constants import FIELD_TYPE_TO_PYTHON_TYPE +from argilla_v1.client.feedback.dataset.base import FeedbackDatasetBase +from argilla_v1.client.feedback.schemas import FeedbackRecord +from argilla_v1.client.feedback.schemas.enums import MetadataPropertyTypes +from argilla_v1.client.feedback.schemas.types import ( + AllowedFieldTypes, + AllowedMetadataPropertyTypes, + AllowedQuestionTypes, +) +from argilla_v1.client.sdk.v1.datasets import api as datasets_api_v1 +from argilla_v1.client.sdk.v1.datasets.models import FeedbackDatasetModel +from argilla_v1.client.singleton import active_client +from argilla_v1.client.workspaces import Workspace +from argilla_v1.pydantic_v1 import BaseModel, Extra, ValidationError, create_model if typing.TYPE_CHECKING: - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedRemoteFieldTypes, @@ -84,7 +88,7 @@ def validate_questions(questions: typing.Union[AllowedQuestionTypes, typing.List def validate_metadata_properties( - metadata_properties: typing.Union[typing.List[AllowedMetadataPropertyTypes], None] + metadata_properties: typing.Union[typing.List[AllowedMetadataPropertyTypes], None], ) -> None: """Validates that the metadata properties used in the filters are valid.""" @@ -138,7 +142,7 @@ def validate_vector_names(dataset: "FeedbackDatasetBase", names: typing.List[str def normalize_records( - records: Union[FeedbackRecord, Dict[str, Any], List[Union[FeedbackRecord, Dict[str, Any]]]] + records: Union[FeedbackRecord, Dict[str, Any], List[Union[FeedbackRecord, Dict[str, Any]]]], ) -> List[FeedbackRecord]: """Parses the records into a list of `FeedbackRecord` objects. @@ -231,9 +235,9 @@ def get_dataset_by_name_and_workspace( Exception: if the `FeedbackDataset` could not be listed from Argilla. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.init(api_url="...", api_key="...") - >>> from argilla.client.feedback.dataset.helpers import get_dataset_by_name_and_workspace + >>> from argilla_v1.client.feedback.dataset.helpers import get_dataset_by_name_and_workspace >>> dataset = get_dataset_by_name_and_workspace(name="my-dataset") """ assert (name and workspace) or name or id, ( @@ -290,8 +294,8 @@ def generate_pydantic_schema_for_fields( ValueError: if one of the fields has an unsupported type. Examples: - >>> from argilla.client.feedback.schemas.fields import TextField - >>> from argilla.client.feedback.dataset.helpers import generate_pydantic_schema_for_fields + >>> from argilla_v1.client.feedback.schemas.fields import TextField + >>> from argilla_v1.client.feedback.dataset.helpers import generate_pydantic_schema_for_fields >>> fields = [ ... TextField(name="text", required=True), ... TextField(name="label", required=True), @@ -334,8 +338,8 @@ def generate_pydantic_schema_for_metadata( ValueError: if one of the metadata properties has an unsupported type. Examples: - >>> from argilla.client.feedback.schemas.metadata import IntegerMetadataProperty - >>> from argilla.client.feedback.dataset.helpers import generate_pydantic_schema_for_metadata + >>> from argilla_v1.client.feedback.schemas.metadata import IntegerMetadataProperty + >>> from argilla_v1.client.feedback.dataset.helpers import generate_pydantic_schema_for_metadata >>> metadata_properties = [ ... IntegerMetadataProperty(name="int_metadata", min=0, max=10), ... ..., diff --git a/argilla/src/argilla/client/feedback/dataset/local/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/__init__.py similarity index 100% rename from argilla/src/argilla/client/feedback/dataset/local/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/local/__init__.py diff --git a/argilla/src/argilla/client/feedback/dataset/local/dataset.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/dataset.py similarity index 96% rename from argilla/src/argilla/client/feedback/dataset/local/dataset.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/local/dataset.py index da7eb35798..a3e4c687b1 100644 --- a/argilla/src/argilla/client/feedback/dataset/local/dataset.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/dataset.py @@ -17,16 +17,16 @@ import warnings from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Tuple, Union -from argilla.client.feedback.constants import FETCHING_BATCH_SIZE -from argilla.client.feedback.dataset import helpers -from argilla.client.feedback.dataset.base import FeedbackDatasetBase, R -from argilla.client.feedback.dataset.local.mixins import ArgillaMixin, TaskTemplateMixin -from argilla.client.feedback.dataset.mixins import MetricsMixin, UnificationMixin -from argilla.client.feedback.integrations.huggingface.dataset import HuggingFaceDatasetMixin -from argilla.client.feedback.schemas.enums import RecordSortField, SortOrder -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.constants import FETCHING_BATCH_SIZE +from argilla_v1.client.feedback.dataset import helpers +from argilla_v1.client.feedback.dataset.base import FeedbackDatasetBase, R +from argilla_v1.client.feedback.dataset.local.mixins import ArgillaMixin, TaskTemplateMixin +from argilla_v1.client.feedback.dataset.mixins import MetricsMixin, UnificationMixin +from argilla_v1.client.feedback.integrations.huggingface.dataset import HuggingFaceDatasetMixin +from argilla_v1.client.feedback.schemas.enums import RecordSortField, SortOrder +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.feedback.training.schemas.base import ( TrainingTaskForChatCompletion, TrainingTaskForDPO, TrainingTaskForPPO, @@ -37,10 +37,10 @@ TrainingTaskForTextClassification, TrainingTaskTypes, ) -from argilla.client.models import Framework +from argilla_v1.client.models import Framework if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes, @@ -92,7 +92,7 @@ def __init__( ValueError: if `guidelines` is an empty string. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.init(api_url="...", api_key="...") >>> dataset = rg.FeedbackDataset( ... fields=[ diff --git a/argilla/src/argilla/client/feedback/dataset/local/mixins.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/mixins.py similarity index 97% rename from argilla/src/argilla/client/feedback/dataset/local/mixins.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/local/mixins.py index 48b1f1ff76..16be41313d 100644 --- a/argilla/src/argilla/client/feedback/dataset/local/mixins.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/mixins.py @@ -16,41 +16,41 @@ from typing import TYPE_CHECKING, List, Literal, Optional, Type, Union from uuid import UUID -from argilla.client.feedback.dataset.helpers import get_dataset_by_name_and_workspace -from argilla.client.feedback.dataset.remote.dataset import INCLUDE_ALL_VECTORS_PARAM, RemoteFeedbackDataset -from argilla.client.feedback.schemas.enums import FieldTypes, MetadataPropertyTypes, QuestionTypes -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.dataset.helpers import get_dataset_by_name_and_workspace +from argilla_v1.client.feedback.dataset.remote.dataset import INCLUDE_ALL_VECTORS_PARAM, RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas.enums import FieldTypes, MetadataPropertyTypes, QuestionTypes +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextQuestion, ) -from argilla.client.feedback.schemas.remote.fields import RemoteTextField -from argilla.client.feedback.schemas.remote.metadata import ( +from argilla_v1.client.feedback.schemas.remote.fields import RemoteTextField +from argilla_v1.client.feedback.schemas.remote.metadata import ( RemoteFloatMetadataProperty, RemoteIntegerMetadataProperty, RemoteTermsMetadataProperty, ) -from argilla.client.feedback.schemas.remote.questions import ( +from argilla_v1.client.feedback.schemas.remote.questions import ( QUESTION_TYPE_TO_QUESTION, AllowedRemoteQuestionTypes, ) -from argilla.client.feedback.schemas.types import AllowedMetadataPropertyTypes -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.client.sdk.commons.errors import AlreadyExistsApiError -from argilla.client.sdk.v1.datasets import api as datasets_api_v1 -from argilla.client.singleton import ArgillaSingleton -from argilla.client.workspaces import Workspace +from argilla_v1.client.feedback.schemas.types import AllowedMetadataPropertyTypes +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.sdk.commons.errors import AlreadyExistsApiError +from argilla_v1.client.sdk.v1.datasets import api as datasets_api_v1 +from argilla_v1.client.singleton import ArgillaSingleton +from argilla_v1.client.workspaces import Workspace if TYPE_CHECKING: import httpx - from argilla.client.client import Argilla as ArgillaClient - from argilla.client.feedback.dataset.local import FeedbackDataset - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.client import Argilla as ArgillaClient + from argilla_v1.client.feedback.dataset.local import FeedbackDataset + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes, @@ -58,7 +58,7 @@ AllowedRemoteMetadataPropertyTypes, AllowedRemoteQuestionTypes, ) - from argilla.client.sdk.v1.datasets.models import ( + from argilla_v1.client.sdk.v1.datasets.models import ( FeedbackDatasetModel, FeedbackFieldModel, FeedbackMetadataPropertyModel, @@ -328,7 +328,7 @@ def from_argilla( ValueError: if no `FeedbackDataset` with the provided `name`, `workspace`, or `id` exists in Argilla. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> rg.init(...) >>> dataset = rg.FeedbackDataset.from_argilla(name="my_dataset") """ diff --git a/argilla/src/argilla/client/feedback/dataset/mixins.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/mixins.py similarity index 91% rename from argilla/src/argilla/client/feedback/dataset/mixins.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/mixins.py index 2ed2d854dd..3f119d3cfa 100644 --- a/argilla/src/argilla/client/feedback/dataset/mixins.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/mixins.py @@ -15,15 +15,15 @@ import warnings from typing import TYPE_CHECKING, Dict, List, Optional, Union -from argilla.client.feedback.dataset.base import FeedbackDatasetBase -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.dataset.base import FeedbackDatasetBase +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextQuestion, ) -from argilla.client.feedback.unification import ( +from argilla_v1.client.feedback.unification import ( LabelQuestionStrategy, MultiLabelQuestionStrategy, RankingQuestionStrategy, @@ -32,9 +32,9 @@ ) if TYPE_CHECKING: - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset - from argilla.client.feedback.metrics.agreement_metrics import AgreementMetricResult - from argilla.client.feedback.metrics.annotator_metrics import ModelMetricResult + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.client.feedback.metrics.agreement_metrics import AgreementMetricResult + from argilla_v1.client.feedback.metrics.annotator_metrics import ModelMetricResult class MetricsMixin: @@ -73,7 +73,7 @@ def compute_model_metrics( each annotator as a dict, where the key corresponds to the annotator id and the values are a list with the metrics. """ - from argilla.client.feedback.metrics.annotator_metrics import ModelMetric, UnifiedModelMetric + from argilla_v1.client.feedback.metrics.annotator_metrics import ModelMetric, UnifiedModelMetric if strategy: self.compute_unified_responses(question_name, strategy) @@ -102,7 +102,7 @@ def compute_agreement_metrics( metrics_result: Agreement metrics result or a list of metrics results if a list of metric names is provided. """ - from argilla.client.feedback.metrics.agreement_metrics import AgreementMetric + from argilla_v1.client.feedback.metrics.agreement_metrics import AgreementMetric return AgreementMetric(self, question_name).compute(metric_names) diff --git a/argilla/src/argilla/client/feedback/dataset/remote/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/remote/__init__.py similarity index 100% rename from argilla/src/argilla/client/feedback/dataset/remote/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/remote/__init__.py diff --git a/argilla/src/argilla/client/feedback/dataset/remote/dataset.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/remote/dataset.py similarity index 95% rename from argilla/src/argilla/client/feedback/dataset/remote/dataset.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/remote/dataset.py index d303c9d343..991322c529 100644 --- a/argilla/src/argilla/client/feedback/dataset/remote/dataset.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/remote/dataset.py @@ -19,27 +19,27 @@ from rich.progress import Progress -from argilla.client.feedback.constants import DELETE_DATASET_RECORDS_MAX_NUMBER, PUSHING_BATCH_SIZE -from argilla.client.feedback.dataset import helpers -from argilla.client.feedback.dataset.base import FeedbackDatasetBase, SortBy -from argilla.client.feedback.dataset.mixins import MetricsMixin, UnificationMixin -from argilla.client.feedback.dataset.remote.mixins import ArgillaRecordsMixin -from argilla.client.feedback.mixins import ArgillaMetadataPropertiesMixin -from argilla.client.feedback.schemas.enums import ResponseStatusFilter -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -from argilla.client.feedback.schemas.remote.vector_settings import RemoteVectorSettings -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.constants import DELETE_DATASET_RECORDS_MAX_NUMBER, PUSHING_BATCH_SIZE +from argilla_v1.client.feedback.dataset import helpers +from argilla_v1.client.feedback.dataset.base import FeedbackDatasetBase, SortBy +from argilla_v1.client.feedback.dataset.mixins import MetricsMixin, UnificationMixin +from argilla_v1.client.feedback.dataset.remote.mixins import ArgillaRecordsMixin +from argilla_v1.client.feedback.mixins import ArgillaMetadataPropertiesMixin +from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord +from argilla_v1.client.feedback.schemas.remote.vector_settings import RemoteVectorSettings +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.feedback.training.schemas.base import ( TrainingTaskTypes, ) -from argilla.client.models import Framework -from argilla.client.sdk.commons.errors import AlreadyExistsApiError -from argilla.client.sdk.users.models import UserRole -from argilla.client.sdk.v1.datasets import api as datasets_api_v1 -from argilla.client.sdk.v1.datasets.models import FeedbackRecordsSearchVectorQuery -from argilla.client.sdk.v1.vectors_settings import api as vectors_settings_api_v1 -from argilla.client.utils import allowed_for_roles +from argilla_v1.client.models import Framework +from argilla_v1.client.sdk.commons.errors import AlreadyExistsApiError +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.v1.datasets import api as datasets_api_v1 +from argilla_v1.client.sdk.v1.datasets.models import FeedbackRecordsSearchVectorQuery +from argilla_v1.client.sdk.v1.vectors_settings import api as vectors_settings_api_v1 +from argilla_v1.client.utils import allowed_for_roles INCLUDE_ALL_VECTORS_PARAM: str = "all" @@ -48,16 +48,16 @@ import httpx - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset - from argilla.client.feedback.schemas.metadata import MetadataFilters - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.client.feedback.schemas.metadata import MetadataFilters + from argilla_v1.client.feedback.schemas.types import ( AllowedMetadataPropertyTypes, AllowedRemoteFieldTypes, AllowedRemoteMetadataPropertyTypes, AllowedRemoteQuestionTypes, ) - from argilla.client.sdk.v1.datasets.models import FeedbackRecordsModel - from argilla.client.workspaces import Workspace + from argilla_v1.client.sdk.v1.datasets.models import FeedbackRecordsModel + from argilla_v1.client.workspaces import Workspace class RemoteFeedbackRecords(ArgillaRecordsMixin): @@ -638,7 +638,7 @@ def pull(self, max_records: Optional[int] = None) -> "FeedbackDataset": A local instance of the dataset which is a `FeedbackDataset` object. """ # Importing here to avoid circular imports - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset instance = FeedbackDataset( fields=[field.to_local() for field in self.fields], @@ -701,7 +701,7 @@ def add_metadata_property( ) from e # TODO(alvarobartt): structure better the mixins to be able to easily reuse those, here to avoid circular imports - from argilla.client.feedback.dataset.local.mixins import ArgillaMixin + from argilla_v1.client.feedback.dataset.local.mixins import ArgillaMixin return ArgillaMixin._parse_to_remote_metadata_property(metadata_property=metadata_property, client=self._client) diff --git a/argilla/src/argilla/client/feedback/dataset/remote/mixins.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/remote/mixins.py similarity index 93% rename from argilla/src/argilla/client/feedback/dataset/remote/mixins.py rename to argilla-v1/src/argilla_v1/client/feedback/dataset/remote/mixins.py index 0680b50e1f..29706138bc 100644 --- a/argilla/src/argilla/client/feedback/dataset/remote/mixins.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/remote/mixins.py @@ -14,13 +14,13 @@ from typing import TYPE_CHECKING, Iterator, List, Union -from argilla.client.feedback.constants import FETCHING_BATCH_SIZE -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -from argilla.client.sdk.users.models import UserRole -from argilla.client.utils import allowed_for_roles +from argilla_v1.client.feedback.constants import FETCHING_BATCH_SIZE +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.utils import allowed_for_roles if TYPE_CHECKING: - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackRecords + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackRecords class ArgillaRecordsMixin: diff --git a/argilla/src/argilla/client/feedback/integrations/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/__init__.py similarity index 100% rename from argilla/src/argilla/client/feedback/integrations/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/__init__.py diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/__init__.py similarity index 100% rename from argilla/src/argilla/client/feedback/integrations/huggingface/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/__init__.py diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/card/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/__init__.py similarity index 100% rename from argilla/src/argilla/client/feedback/integrations/huggingface/card/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/__init__.py diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/card/_dataset_card.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/_dataset_card.py similarity index 100% rename from argilla/src/argilla/client/feedback/integrations/huggingface/card/_dataset_card.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/_dataset_card.py diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/card/_parser.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/_parser.py similarity index 100% rename from argilla/src/argilla/client/feedback/integrations/huggingface/card/_parser.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/_parser.py diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/card/argilla_template.md b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/argilla_template.md similarity index 99% rename from argilla/src/argilla/client/feedback/integrations/huggingface/card/argilla_template.md rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/argilla_template.md index 5eff588005..3c5664ab10 100644 --- a/argilla/src/argilla/client/feedback/integrations/huggingface/card/argilla_template.md +++ b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/card/argilla_template.md @@ -33,7 +33,7 @@ This dataset contains: To load with Argilla, you'll just need to install Argilla as `pip install argilla --upgrade` and then use the following code: ```python -import argilla as rg +import argilla_v1 as rg ds = rg.FeedbackDataset.from_huggingface("{{ repo_id }}") ``` diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/dataset.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/dataset.py similarity index 96% rename from argilla/src/argilla/client/feedback/integrations/huggingface/dataset.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/dataset.py index f34dd12c3e..3f85fe1f19 100644 --- a/argilla/src/argilla/client/feedback/integrations/huggingface/dataset.py +++ b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/dataset.py @@ -21,17 +21,17 @@ from packaging.version import parse as parse_version from tqdm import trange -from argilla.client.feedback.constants import FIELD_TYPE_TO_PYTHON_TYPE -from argilla.client.feedback.schemas.enums import QuestionTypes -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -from argilla.utils.dependency import requires_dependencies +from argilla_v1.client.feedback.constants import FIELD_TYPE_TO_PYTHON_TYPE +from argilla_v1.client.feedback.schemas.enums import QuestionTypes +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord +from argilla_v1.utils.dependency import requires_dependencies if TYPE_CHECKING: from datasets import Dataset - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset _LOGGER = logging.getLogger(__name__) @@ -50,7 +50,7 @@ def _huggingface_format(dataset: Union["FeedbackDataset", "RemoteFeedbackDataset questions, and metadata_properties formatted as `datasets.Features`. Examples: - >>> from argilla.client.feedback.integrations.huggingface import HuggingFaceDatasetMixin + >>> from argilla_v1.client.feedback.integrations.huggingface import HuggingFaceDatasetMixin >>> dataset = FeedbackDataset(...) or RemoteFeedbackDataset(...) >>> huggingface_dataset = HuggingFaceDatasetMixin._huggingface_format(dataset) """ @@ -242,7 +242,7 @@ def push_to_huggingface( from huggingface_hub import HfApi # https://github.com/argilla-io/argilla/issues/3468 - from argilla.client.feedback.config import DatasetConfig + from argilla_v1.client.feedback.config import DatasetConfig if parse_version(huggingface_hub.__version__) < parse_version("0.14.0"): _LOGGER.warning( @@ -284,7 +284,7 @@ def push_to_huggingface( if generate_card: from huggingface_hub import DatasetCardData - from argilla.client.feedback.integrations.huggingface.card import ( + from argilla_v1.client.feedback.integrations.huggingface.card import ( ArgillaDatasetCard, size_categories_parser, ) @@ -334,7 +334,7 @@ def from_huggingface( from huggingface_hub.utils import EntryNotFoundError # https://github.com/argilla-io/argilla/issues/3468 - from argilla.client.feedback.config import ( + from argilla_v1.client.feedback.config import ( DatasetConfig, DeprecatedDatasetConfig, ) diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/model_card/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/__init__.py similarity index 93% rename from argilla/src/argilla/client/feedback/integrations/huggingface/model_card/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/__init__.py index 7bd5bbc0be..a374093509 100644 --- a/argilla/src/argilla/client/feedback/integrations/huggingface/model_card/__init__.py +++ b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.feedback.integrations.huggingface.model_card.model_card import ( +from argilla_v1.client.feedback.integrations.huggingface.model_card.model_card import ( ArgillaModelCard, FrameworkCardData, OpenAIModelCardData, diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/model_card/argilla_model_template.md b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/argilla_model_template.md similarity index 100% rename from argilla/src/argilla/client/feedback/integrations/huggingface/model_card/argilla_model_template.md rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/argilla_model_template.md diff --git a/argilla/src/argilla/client/feedback/integrations/huggingface/model_card/model_card.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/model_card.py similarity index 98% rename from argilla/src/argilla/client/feedback/integrations/huggingface/model_card/model_card.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/model_card.py index 145c6ed64a..48a26bbc78 100644 --- a/argilla/src/argilla/client/feedback/integrations/huggingface/model_card/model_card.py +++ b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/model_card.py @@ -23,10 +23,10 @@ from huggingface_hub import CardData, ModelCard, dataset_info, model_info from huggingface_hub.utils import yaml_dump -from argilla._version import version -from argilla.client.feedback.training.schemas.base import TRAINING_TASK_MAPPING, TrainingTaskTypes -from argilla.client.models import FRAMEWORK_TO_NAME_MAPPING, Framework -from argilla.training.utils import get_default_args +from argilla_v1._version import version +from argilla_v1.client.feedback.training.schemas.base import TRAINING_TASK_MAPPING, TrainingTaskTypes +from argilla_v1.client.models import FRAMEWORK_TO_NAME_MAPPING, Framework +from argilla_v1.training.utils import get_default_args if TYPE_CHECKING: import spacy diff --git a/argilla/src/argilla/client/feedback/integrations/sentencetransformers.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/sentencetransformers.py similarity index 91% rename from argilla/src/argilla/client/feedback/integrations/sentencetransformers.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/sentencetransformers.py index 0f2d7f2b55..7324cd046b 100644 --- a/argilla/src/argilla/client/feedback/integrations/sentencetransformers.py +++ b/argilla-v1/src/argilla_v1/client/feedback/integrations/sentencetransformers.py @@ -15,12 +15,12 @@ import warnings from typing import List, Optional, Union -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset -from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.utils.dependency import require_dependencies class SentenceTransformersExtractor: @@ -44,8 +44,8 @@ def __init__( **kwargs: Additional keyword arguments to pass to the init of the SentenceTransformer model. Examples: - >>> import argilla as rg - >>> from argilla.client.feedback.integrations.textdescriptives import SentenceTransformersExtractor + >>> import argilla_v1 as rg + >>> from argilla_v1.client.feedback.integrations.textdescriptives import SentenceTransformersExtractor >>> ds = rg.FeedbackDataset(...) >>> tde = SentenceTransformersExtractor() >>> updated_ds = tde.update_dataset(ds) @@ -165,7 +165,7 @@ def update_records( List[Union[FeedbackRecord, RemoteFeedbackRecord]]: The updated records. Examples: - >>> from argilla.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor + >>> from argilla_v1.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor >>> records = [rg.FeedbackRecord(fields={"text": "This is a test."})] >>> tde = SentenceTransformersExtractor() >>> updated_records = tde.update_records(records) @@ -206,8 +206,8 @@ def update_dataset( Union[FeedbackDataset, RemoteFeedbackDataset]: The updated dataset. Examples: - >>> import argilla as rg - >>> from argilla.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor + >>> import argilla_v1 as rg + >>> from argilla_v1.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor >>> dataset = rg.FeedbackDataset(...) >>> tde = SentenceTransformersExtractor() >>> updated_dataset = tde.update_dataset(dataset) diff --git a/argilla/src/argilla/client/feedback/integrations/textdescriptives.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/textdescriptives.py similarity index 96% rename from argilla/src/argilla/client/feedback/integrations/textdescriptives.py rename to argilla-v1/src/argilla_v1/client/feedback/integrations/textdescriptives.py index a5e552250d..e6dafcee65 100644 --- a/argilla/src/argilla/client/feedback/integrations/textdescriptives.py +++ b/argilla-v1/src/argilla_v1/client/feedback/integrations/textdescriptives.py @@ -21,16 +21,16 @@ import pandas as pd from rich.progress import Progress -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset -from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord +from argilla_v1.utils.dependency import require_dependencies _LOGGER = logging.getLogger(__name__) _LOGGER.setLevel(logging.INFO) @@ -59,8 +59,8 @@ def __init__( show_progress (bool): Whether to show a progress bar when extracting metrics. Examples: - >>> import argilla as rg - >>> from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor + >>> import argilla_v1 as rg + >>> from argilla_v1.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor >>> ds = rg.FeedbackDataset(...) >>> tde = TextDescriptivesExtractor() >>> updated_ds = tde.update_dataset(ds) @@ -341,7 +341,7 @@ def update_records( List[Union[FeedbackRecord, RemoteFeedbackRecord]]: A list of FeedbackDataset or RemoteFeedbackDataset records with text descriptives metrics added as metadata. Examples: - >>> from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor + >>> from argilla_v1.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor >>> records = [rg.FeedbackRecord(fields={"text": "This is a test."})] >>> tde = TextDescriptivesExtractor() >>> updated_records = tde.update_records(records) @@ -399,8 +399,8 @@ def update_dataset( Union[FeedbackDataset, RemoteFeedbackDataset]: A FeedbackDataset or RemoteFeedbackDataset with text descriptives metrics added as metadata. Examples: - >>> import argilla as rg - >>> from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor + >>> import argilla_v1 as rg + >>> from argilla_v1.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor >>> dataset = rg.FeedbackDataset(...) >>> tde = TextDescriptivesExtractor() >>> updated_dataset = tde.update_dataset(dataset) diff --git a/argilla/src/argilla/client/feedback/metrics/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/metrics/__init__.py similarity index 83% rename from argilla/src/argilla/client/feedback/metrics/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/metrics/__init__.py index 339f8ea2f7..36526b5806 100644 --- a/argilla/src/argilla/client/feedback/metrics/__init__.py +++ b/argilla-v1/src/argilla_v1/client/feedback/metrics/__init__.py @@ -13,8 +13,8 @@ # limitations under the License. -from argilla.client.feedback.metrics.agreement_metrics import AgreementMetric -from argilla.client.feedback.metrics.annotator_metrics import ( +from argilla_v1.client.feedback.metrics.agreement_metrics import AgreementMetric +from argilla_v1.client.feedback.metrics.annotator_metrics import ( ModelMetric, UnifiedModelMetric, ) diff --git a/argilla/src/argilla/client/feedback/metrics/agreement_metrics.py b/argilla-v1/src/argilla_v1/client/feedback/metrics/agreement_metrics.py similarity index 94% rename from argilla/src/argilla/client/feedback/metrics/agreement_metrics.py rename to argilla-v1/src/argilla_v1/client/feedback/metrics/agreement_metrics.py index 46299617dc..eb5e763c3a 100644 --- a/argilla/src/argilla/client/feedback/metrics/agreement_metrics.py +++ b/argilla-v1/src/argilla_v1/client/feedback/metrics/agreement_metrics.py @@ -12,26 +12,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""This module contains metrics to gather information related to inter-Annotator agreement. """ +"""This module contains metrics to gather information related to inter-Annotator agreement.""" + import warnings from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Union -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.metrics.base import AgreementMetricResult, AnnotationTaskMetricBase, MetricBase -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.metrics.base import AgreementMetricResult, AnnotationTaskMetricBase, MetricBase +from argilla_v1.client.feedback.schemas import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, ) -from argilla.client.feedback.schemas.remote.shared import RemoteSchema +from argilla_v1.client.feedback.schemas.remote.shared import RemoteSchema if TYPE_CHECKING: - from argilla.client.feedback.dataset import FeedbackDataset - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset - from argilla.client.feedback.metrics.base import FormattedResponses - from argilla.client.feedback.schemas.enums import ResponseStatusFilter - from argilla.client.feedback.schemas.records import SortBy + from argilla_v1.client.feedback.dataset import FeedbackDataset + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.feedback.metrics.base import FormattedResponses + from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter + from argilla_v1.client.feedback.schemas.records import SortBy try: @@ -179,8 +180,8 @@ class AgreementMetric(MetricBase): """Main class to compute agreement metrics. Example: - >>> import argilla as rg - >>> from argilla.client.feedback.metrics import AgreementMetric + >>> import argilla_v1 as rg + >>> from argilla_v1.client.feedback.metrics import AgreementMetric >>> metric = AgreementMetric(dataset=dataset, question_name=question, filter_by={"response_status": "submitted"}) >>> metrics_report = metric.compute("alpha") diff --git a/argilla/src/argilla/client/feedback/metrics/annotator_metrics.py b/argilla-v1/src/argilla_v1/client/feedback/metrics/annotator_metrics.py similarity index 96% rename from argilla/src/argilla/client/feedback/metrics/annotator_metrics.py rename to argilla-v1/src/argilla_v1/client/feedback/metrics/annotator_metrics.py index 963dc7e313..a2765998d8 100644 --- a/argilla/src/argilla/client/feedback/metrics/annotator_metrics.py +++ b/argilla-v1/src/argilla_v1/client/feedback/metrics/annotator_metrics.py @@ -22,38 +22,38 @@ import numpy as np import pandas as pd -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.metrics.base import AnnotatorMetricBase, MetricBase, ModelMetricResult -from argilla.client.feedback.metrics.utils import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.metrics.base import AnnotatorMetricBase, MetricBase, ModelMetricResult +from argilla_v1.client.feedback.metrics.utils import ( get_responses_and_suggestions_per_user, get_unified_responses_and_suggestions, is_multiclass, map_str_to_int, ) -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.schemas import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextQuestion, ) -from argilla.client.feedback.schemas.enums import ResponseStatusFilter -from argilla.client.feedback.schemas.records import SortBy -from argilla.utils.dependency import requires_dependencies +from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter +from argilla_v1.client.feedback.schemas.records import SortBy +from argilla_v1.utils.dependency import requires_dependencies if TYPE_CHECKING: - from argilla.client.feedback.dataset import FeedbackDataset - from argilla.client.feedback.metrics.base import Responses, Suggestions - from argilla.client.feedback.schemas.enums import ResponseStatusFilter - from argilla.client.feedback.schemas.records import SortBy + from argilla_v1.client.feedback.dataset import FeedbackDataset + from argilla_v1.client.feedback.metrics.base import Responses, Suggestions + from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter + from argilla_v1.client.feedback.schemas.records import SortBy class AnnotatorMetric(MetricBase): """Main class to compute annotator metrics. Annotator metrics refers to the combination of Suggestions Metric and Responses Metric. They are both different from the Agreement Metric (i.e. Inter-Annotator Agreement) and they are utilized to compute metrics contrasting suggestions vs responses. Example: - >>> import argilla as rg - >>> from argilla.client.feedback.metrics import AnnotatorMetric + >>> import argilla_v1 as rg + >>> from argilla_v1.client.feedback.metrics import AnnotatorMetric >>> metric = AnnotatorMetric(dataset=dataset, question_name=question) >>> metrics_report = metric.compute("accuracy") @@ -170,8 +170,8 @@ class UnifiedAnnotatorMetric(AnnotatorMetric): """Main class to compute metrics for a unified dataset. Example: - >>> import argilla as rg - >>> from argilla.client.feedback.metrics import UnifiedAnnotatorMetric + >>> import argilla_v1 as rg + >>> from argilla_v1.client.feedback.metrics import UnifiedAnnotatorMetric >>> metric = UnifiedAnnotatorMetric(dataset=dataset, question_name=question) >>> metrics_report = metric.compute("accuracy") """ diff --git a/argilla/src/argilla/client/feedback/metrics/base.py b/argilla-v1/src/argilla_v1/client/feedback/metrics/base.py similarity index 97% rename from argilla/src/argilla/client/feedback/metrics/base.py rename to argilla-v1/src/argilla_v1/client/feedback/metrics/base.py index df528a696b..92195bf147 100644 --- a/argilla/src/argilla/client/feedback/metrics/base.py +++ b/argilla-v1/src/argilla_v1/client/feedback/metrics/base.py @@ -17,11 +17,11 @@ import pandas as pd -from argilla.client.feedback.schemas.remote.shared import RemoteSchema -from argilla.pydantic_v1 import BaseModel +from argilla_v1.client.feedback.schemas.remote.shared import RemoteSchema +from argilla_v1.pydantic_v1 import BaseModel if TYPE_CHECKING: - from argilla.client.feedback.dataset import FeedbackDataset + from argilla_v1.client.feedback.dataset import FeedbackDataset # Type aliases diff --git a/argilla/src/argilla/client/feedback/metrics/utils.py b/argilla-v1/src/argilla_v1/client/feedback/metrics/utils.py similarity index 93% rename from argilla/src/argilla/client/feedback/metrics/utils.py rename to argilla-v1/src/argilla_v1/client/feedback/metrics/utils.py index f4e05e8b95..e1a4f680c2 100644 --- a/argilla/src/argilla/client/feedback/metrics/utils.py +++ b/argilla-v1/src/argilla_v1/client/feedback/metrics/utils.py @@ -18,16 +18,16 @@ import numpy as np from tqdm import tqdm -from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset -from argilla.client.feedback.schemas import RankingQuestion, TextQuestion -from argilla.client.feedback.schemas.enums import ResponseStatusFilter -from argilla.client.feedback.schemas.remote.questions import RemoteRankingQuestion +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas import RankingQuestion, TextQuestion +from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter +from argilla_v1.client.feedback.schemas.remote.questions import RemoteRankingQuestion if TYPE_CHECKING: - from argilla.client.feedback.dataset import FeedbackDataset - from argilla.client.feedback.metrics.base import Responses, Suggestions - from argilla.client.feedback.schemas.enums import ResponseStatusFilter - from argilla.client.feedback.schemas.records import SortBy + from argilla_v1.client.feedback.dataset import FeedbackDataset + from argilla_v1.client.feedback.metrics.base import Responses, Suggestions + from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter + from argilla_v1.client.feedback.schemas.records import SortBy def get_responses_and_suggestions_per_user( diff --git a/argilla/src/argilla/client/feedback/mixins.py b/argilla-v1/src/argilla_v1/client/feedback/mixins.py similarity index 89% rename from argilla/src/argilla/client/feedback/mixins.py rename to argilla-v1/src/argilla_v1/client/feedback/mixins.py index a64ab37eb2..0146d9570c 100644 --- a/argilla/src/argilla/client/feedback/mixins.py +++ b/argilla-v1/src/argilla_v1/client/feedback/mixins.py @@ -14,16 +14,19 @@ from typing import TYPE_CHECKING, List, Optional, Union -from argilla.client.sdk.v1.datasets import api as datasets_api_v1 -from argilla.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel -from argilla.client.sdk.v1.metadata_properties import api as metadata_properties_api_v1 +from argilla_v1.client.sdk.v1.datasets import api as datasets_api_v1 +from argilla_v1.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel +from argilla_v1.client.sdk.v1.metadata_properties import api as metadata_properties_api_v1 if TYPE_CHECKING: from uuid import UUID import httpx - from argilla.client.feedback.schemas.types import AllowedMetadataPropertyTypes, AllowedRemoteMetadataPropertyTypes + from argilla_v1.client.feedback.schemas.types import ( + AllowedMetadataPropertyTypes, + AllowedRemoteMetadataPropertyTypes, + ) class ArgillaMetadataPropertiesMixin: @@ -31,7 +34,7 @@ class ArgillaMetadataPropertiesMixin: def parse_payload( client: "httpx.Client", payload: Union[FeedbackMetadataPropertyModel, List[FeedbackMetadataPropertyModel]] ) -> List["AllowedRemoteMetadataPropertyTypes"]: - from argilla.client.feedback.schemas.remote.metadata import RemoteMetadataPropertiesMapping + from argilla_v1.client.feedback.schemas.remote.metadata import RemoteMetadataPropertiesMapping if isinstance(payload, FeedbackMetadataPropertyModel): payload = [payload] diff --git a/argilla/src/argilla/client/feedback/schemas/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/__init__.py similarity index 72% rename from argilla/src/argilla/client/feedback/schemas/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/__init__.py index e776355f89..a355fd5504 100644 --- a/argilla/src/argilla/client/feedback/schemas/__init__.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/__init__.py @@ -11,15 +11,15 @@ # 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. -from argilla.client.feedback.schemas.enums import ( +from argilla_v1.client.feedback.schemas.enums import ( FieldTypes, QuestionTypes, RecordSortField, ResponseStatusFilter, SortOrder, ) -from argilla.client.feedback.schemas.fields import FieldSchema, TextField -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.schemas.fields import FieldSchema, TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataFilter, FloatMetadataProperty, IntegerMetadataFilter, @@ -27,7 +27,7 @@ TermsMetadataFilter, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, QuestionSchema, @@ -37,11 +37,11 @@ SpanQuestion, TextQuestion, ) -from argilla.client.feedback.schemas.records import FeedbackRecord, SortBy -from argilla.client.feedback.schemas.response_values import RankingValueSchema, ResponseValue, SpanValueSchema -from argilla.client.feedback.schemas.responses import ResponseSchema, ResponseStatus, ValueSchema -from argilla.client.feedback.schemas.suggestions import SuggestionSchema -from argilla.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.feedback.schemas.records import FeedbackRecord, SortBy +from argilla_v1.client.feedback.schemas.response_values import RankingValueSchema, ResponseValue, SpanValueSchema +from argilla_v1.client.feedback.schemas.responses import ResponseSchema, ResponseStatus, ValueSchema +from argilla_v1.client.feedback.schemas.suggestions import SuggestionSchema +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings __all__ = [ "FieldTypes", diff --git a/argilla/src/argilla/client/feedback/schemas/enums.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/enums.py similarity index 100% rename from argilla/src/argilla/client/feedback/schemas/enums.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/enums.py diff --git a/argilla/src/argilla/client/feedback/schemas/fields.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/fields.py similarity index 92% rename from argilla/src/argilla/client/feedback/schemas/fields.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/fields.py index 00e77ffe7e..8c98929fb5 100644 --- a/argilla/src/argilla/client/feedback/schemas/fields.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/fields.py @@ -15,9 +15,9 @@ from abc import ABC, abstractmethod from typing import Any, Dict, Literal, Optional -from argilla.client.feedback.schemas.enums import FieldTypes -from argilla.client.feedback.schemas.validators import title_must_have_value -from argilla.pydantic_v1 import BaseModel, Extra, Field, validator +from argilla_v1.client.feedback.schemas.enums import FieldTypes +from argilla_v1.client.feedback.schemas.validators import title_must_have_value +from argilla_v1.pydantic_v1 import BaseModel, Extra, Field, validator class FieldSchema(BaseModel, ABC): @@ -82,7 +82,7 @@ class TextField(FieldSchema): Defaults to False. Examples: - >>> from argilla.client.feedback.schemas.fields import TextField + >>> from argilla_v1.client.feedback.schemas.fields import TextField >>> TextField(name="text_field", title="Text Field") """ diff --git a/argilla/src/argilla/client/feedback/schemas/metadata.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/metadata.py similarity index 95% rename from argilla/src/argilla/client/feedback/schemas/metadata.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/metadata.py index d39f46094c..1bdb91ebd2 100644 --- a/argilla/src/argilla/client/feedback/schemas/metadata.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/metadata.py @@ -11,16 +11,15 @@ # 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 math from abc import ABC, abstractmethod from typing import Any, Callable, Dict, List, Literal, Optional, Tuple, Union -from argilla.client.feedback.schemas.enums import MetadataPropertyTypes -from argilla.client.feedback.schemas.validators import ( +from argilla_v1.client.feedback.schemas.enums import MetadataPropertyTypes +from argilla_v1.client.feedback.schemas.validators import ( validate_numeric_metadata_filter_bounds, validate_numeric_metadata_property_bounds, ) -from argilla.pydantic_v1 import ( +from argilla_v1.pydantic_v1 import ( BaseModel, Extra, Field, @@ -71,8 +70,7 @@ def title_must_have_value(cls, v: Optional[str], values: Dict[str, Any]) -> str: @property @abstractmethod - def server_settings(self) -> Dict[str, Any]: - ... + def server_settings(self) -> Dict[str, Any]: ... def to_server_payload(self) -> Dict[str, Any]: return { @@ -84,20 +82,17 @@ def to_server_payload(self) -> Dict[str, Any]: @property @abstractmethod - def _pydantic_field_with_validator(self) -> Tuple[Dict[str, Tuple[Any, ...]], Dict[str, Callable]]: - ... + def _pydantic_field_with_validator(self) -> Tuple[Dict[str, Tuple[Any, ...]], Dict[str, Callable]]: ... @abstractmethod def _validate_filter(self, metadata_filter: "MetadataFilters") -> None: pass @abstractmethod - def _check_allowed_value_type(self, value: Any) -> Any: - ... + def _check_allowed_value_type(self, value: Any) -> Any: ... @abstractmethod - def _validator(self, value: Any) -> Any: - ... + def _validator(self, value: Any) -> Any: ... def _validator_definition(schema: MetadataPropertySchema) -> Dict[str, Any]: @@ -120,7 +115,7 @@ class TermsMetadataProperty(MetadataPropertySchema): at least one value. Examples: - >>> from argilla.client.feedback.schemas.metadata import TermsMetadataProperty + >>> from argilla_v1.client.feedback.schemas.metadata import TermsMetadataProperty >>> TermsMetadataProperty(name="color", values=["red", "blue", "green"]) """ @@ -302,7 +297,7 @@ class IntegerMetadataProperty(_NumericMetadataPropertySchema): the `min` value. Examples: - >>> from argilla.client.feedback.schemas.metadata import IntegerMetadataProperty + >>> from argilla_v1.client.feedback.schemas.metadata import IntegerMetadataProperty >>> IntegerMetadataProperty(name="day", min=0, max=31) """ @@ -345,7 +340,7 @@ class FloatMetadataProperty(_NumericMetadataPropertySchema): the `min` value. Examples: - >>> from argilla.client.feedback.schemas.metadata import FloatMetadataProperty + >>> from argilla_v1.client.feedback.schemas.metadata import FloatMetadataProperty >>> FloatMetadataProperty(name="price", min=0.0, max=100.0) """ @@ -395,8 +390,7 @@ class Config: @property @abstractmethod - def query_string(self) -> str: - ... + def query_string(self) -> str: ... class TermsMetadataFilter(MetadataFilterSchema): @@ -410,7 +404,7 @@ class TermsMetadataFilter(MetadataFilterSchema): at least two values. Examples: - >>> from argilla.client.feedback.schemas.metadata import TermsMetadataFilter + >>> from argilla_v1.client.feedback.schemas.metadata import TermsMetadataFilter >>> TermsMetadataFilter(name="color", values=["red", "blue", "green"]) """ @@ -474,7 +468,7 @@ class IntegerMetadataFilter(_NumericMetadataFilterSchema): ge: The lower bound of the integer value. Defaults to `None`. Examples: - >>> from argilla.client.feedback.schemas.metadata import IntegerMetadataFilter + >>> from argilla_v1.client.feedback.schemas.metadata import IntegerMetadataFilter >>> IntegerMetadataFilter(name="day", le=15) >>> IntegerMetadataFilter(name="day", ge=15) >>> IntegerMetadataFilter(name="day", le=15, ge=10) @@ -499,7 +493,7 @@ class FloatMetadataFilter(_NumericMetadataFilterSchema): ge: The lower bound of the float value. Defaults to `None`. Examples: - >>> from argilla.client.feedback.schemas.metadata import FloatMetadataFilter + >>> from argilla_v1.client.feedback.schemas.metadata import FloatMetadataFilter >>> FloatMetadataFilter(name="price", le=15.0) >>> FloatMetadataFilter(name="price", ge=15.0) >>> FloatMetadataFilter(name="price", le=15.0, ge=10.0) diff --git a/argilla/src/argilla/client/feedback/schemas/questions.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/questions.py similarity index 93% rename from argilla/src/argilla/client/feedback/schemas/questions.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/questions.py index f5b8e15941..ae4822f1a3 100644 --- a/argilla/src/argilla/client/feedback/schemas/questions.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/questions.py @@ -16,13 +16,13 @@ from abc import ABC, abstractmethod from typing import Any, Dict, List, Literal, Optional, Union -from argilla.client.feedback.schemas.enums import LabelsOrder, QuestionTypes -from argilla.client.feedback.schemas.response_values import parse_value_response_for_question -from argilla.client.feedback.schemas.responses import ResponseValue, ValueSchema -from argilla.client.feedback.schemas.suggestions import SuggestionSchema -from argilla.client.feedback.schemas.utils import LabelMappingMixin -from argilla.client.feedback.schemas.validators import title_must_have_value -from argilla.pydantic_v1 import BaseModel, Extra, Field, conint, conlist, root_validator, validator +from argilla_v1.client.feedback.schemas.enums import LabelsOrder, QuestionTypes +from argilla_v1.client.feedback.schemas.response_values import parse_value_response_for_question +from argilla_v1.client.feedback.schemas.responses import ResponseValue, ValueSchema +from argilla_v1.client.feedback.schemas.suggestions import SuggestionSchema +from argilla_v1.client.feedback.schemas.utils import LabelMappingMixin +from argilla_v1.client.feedback.schemas.validators import title_must_have_value +from argilla_v1.pydantic_v1 import BaseModel, Extra, Field, conint, conlist, root_validator, validator class QuestionSchema(BaseModel, ABC): @@ -102,7 +102,7 @@ class TextQuestion(QuestionSchema): Defaults to False. Examples: - >>> from argilla.client.feedback.schemas.questions import TextQuestion + >>> from argilla_v1.client.feedback.schemas.questions import TextQuestion >>> TextQuestion(name="text_question", title="Text Question") """ @@ -129,7 +129,7 @@ class RatingQuestion(QuestionSchema, LabelMappingMixin): unique integers in the range [0, 10]. Examples: - >>> from argilla.client.feedback.schemas.questions import RatingQuestion + >>> from argilla_v1.client.feedback.schemas.questions import RatingQuestion >>> RatingQuestion(name="rating_question", title="Rating Question", values=[1, 2, 3, 4, 5]) """ @@ -239,7 +239,7 @@ class LabelQuestion(_LabelQuestion): be 3 or greater. Examples: - >>> from argilla.client.feedback.schemas.questions import LabelQuestion + >>> from argilla_v1.client.feedback.schemas.questions import LabelQuestion >>> LabelQuestion(name="label_question", title="Label Question", labels=["label_1", "label_2"]) """ @@ -270,7 +270,7 @@ class MultiLabelQuestion(_LabelQuestion): Defaults to 'natural'. Examples: - >>> from argilla.client.feedback.schemas.questions import MultiLabelQuestion + >>> from argilla_v1.client.feedback.schemas.questions import MultiLabelQuestion >>> MultiLabelQuestion(name="multi_label_question", title="Multi Label Question", labels=["label_1", "label_2"]) """ @@ -303,7 +303,7 @@ class RankingQuestion(QuestionSchema, LabelMappingMixin): are the labels that will be shown in the UI. Examples: - >>> from argilla.client.feedback.schemas.questions import RankingQuestion + >>> from argilla_v1.client.feedback.schemas.questions import RankingQuestion >>> RankingQuestion(name="ranking_question", title="Ranking Question", values=["label_1", "label_2"]) """ @@ -337,7 +337,7 @@ class SpanLabelOption(BaseModel): text: The text of the span label. This is the text that will be shown in the UI. Examples: - >>> from argilla.client.feedback.schemas.questions import SpanLabelOption + >>> from argilla_v1.client.feedback.schemas.questions import SpanLabelOption >>> SpanLabelOption(value="span_label_1", text="Span Label 1") """ @@ -361,7 +361,7 @@ class SpanQuestion(QuestionSchema): to select a span of text from the input. Examples: - >>> from argilla.client.feedback.schemas.questions import SpanQuestion + >>> from argilla_v1.client.feedback.schemas.questions import SpanQuestion >>> SpanQuestion(name="span_question", field="prompt", title="Span Question", labels=["person", "org"]) """ diff --git a/argilla/src/argilla/client/feedback/schemas/records.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/records.py similarity index 92% rename from argilla/src/argilla/client/feedback/schemas/records.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/records.py index 8b997226f3..f18871dcaf 100644 --- a/argilla/src/argilla/client/feedback/schemas/records.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/records.py @@ -16,16 +16,16 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union from uuid import UUID -from argilla.client.feedback.schemas.enums import RecordSortField, SortOrder +from argilla_v1.client.feedback.schemas.enums import RecordSortField, SortOrder # Support backward compatibility for import of RankingValueSchema from records module -from argilla.client.feedback.schemas.response_values import RankingValueSchema # noqa -from argilla.client.feedback.schemas.responses import ResponseSchema, ValueSchema # noqa -from argilla.client.feedback.schemas.suggestions import SuggestionSchema -from argilla.pydantic_v1 import BaseModel, Extra, Field, PrivateAttr, validator +from argilla_v1.client.feedback.schemas.response_values import RankingValueSchema # noqa +from argilla_v1.client.feedback.schemas.responses import ResponseSchema, ValueSchema # noqa +from argilla_v1.client.feedback.schemas.suggestions import SuggestionSchema +from argilla_v1.pydantic_v1 import BaseModel, Extra, Field, PrivateAttr, validator if TYPE_CHECKING: - from argilla.client.feedback.unification import UnifiedValueSchema + from argilla_v1.client.feedback.unification import UnifiedValueSchema class FeedbackRecord(BaseModel): @@ -50,7 +50,7 @@ class FeedbackRecord(BaseModel): Defaults to None. Examples: - >>> from argilla.feedback import FeedbackRecord, ResponseSchema, SuggestionSchema, ValueSchema + >>> from argilla_v1.feedback import FeedbackRecord, ResponseSchema, SuggestionSchema, ValueSchema >>> FeedbackRecord( ... fields={"text": "This is the first record", "label": "positive"}, ... metadata={"first": True, "nested": {"more": "stuff"}}, diff --git a/argilla/src/argilla/client/feedback/schemas/remote/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/__init__.py similarity index 100% rename from argilla/src/argilla/client/feedback/schemas/remote/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/remote/__init__.py diff --git a/argilla/src/argilla/client/feedback/schemas/remote/fields.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/fields.py similarity index 85% rename from argilla/src/argilla/client/feedback/schemas/remote/fields.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/remote/fields.py index 456136df1f..1068b9ae4c 100644 --- a/argilla/src/argilla/client/feedback/schemas/remote/fields.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/fields.py @@ -14,11 +14,11 @@ from typing import TYPE_CHECKING -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.remote.shared import RemoteSchema +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.remote.shared import RemoteSchema if TYPE_CHECKING: - from argilla.client.sdk.v1.datasets.models import FeedbackFieldModel + from argilla_v1.client.sdk.v1.datasets.models import FeedbackFieldModel class RemoteTextField(TextField, RemoteSchema): diff --git a/argilla/src/argilla/client/feedback/schemas/remote/metadata.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/metadata.py similarity index 92% rename from argilla/src/argilla/client/feedback/schemas/remote/metadata.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/remote/metadata.py index 90b24f88a1..4ade8d0f2e 100644 --- a/argilla/src/argilla/client/feedback/schemas/remote/metadata.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/metadata.py @@ -14,18 +14,18 @@ from typing import TYPE_CHECKING, Dict, Optional, Type, Union -from argilla.client.feedback.schemas.enums import MetadataPropertyTypes -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.schemas.enums import MetadataPropertyTypes +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.remote.shared import RemoteSchema +from argilla_v1.client.feedback.schemas.remote.shared import RemoteSchema if TYPE_CHECKING: import httpx - from argilla.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel + from argilla_v1.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel class RemoteTermsMetadataProperty(TermsMetadataProperty, RemoteSchema): diff --git a/argilla/src/argilla/client/feedback/schemas/remote/questions.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/questions.py similarity index 95% rename from argilla/src/argilla/client/feedback/schemas/remote/questions.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/remote/questions.py index 36fdc0a3dd..06a5e2fcb6 100644 --- a/argilla/src/argilla/client/feedback/schemas/remote/questions.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/questions.py @@ -14,9 +14,9 @@ from typing import TYPE_CHECKING, Dict, List, Union -from argilla.client.feedback.schemas import QuestionTypes -from argilla.client.feedback.schemas.enums import LabelsOrder -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.schemas import QuestionTypes +from argilla_v1.client.feedback.schemas.enums import LabelsOrder +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, @@ -25,10 +25,10 @@ SpanQuestion, TextQuestion, ) -from argilla.client.feedback.schemas.remote.shared import RemoteSchema +from argilla_v1.client.feedback.schemas.remote.shared import RemoteSchema if TYPE_CHECKING: - from argilla.client.sdk.v1.datasets.models import FeedbackQuestionModel + from argilla_v1.client.sdk.v1.datasets.models import FeedbackQuestionModel class RemoteTextQuestion(TextQuestion, RemoteSchema): diff --git a/argilla/src/argilla/client/feedback/schemas/remote/records.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/records.py similarity index 94% rename from argilla/src/argilla/client/feedback/schemas/remote/records.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/remote/records.py index 469e9d04f8..3d48300c4a 100644 --- a/argilla/src/argilla/client/feedback/schemas/remote/records.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/records.py @@ -17,20 +17,20 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union from uuid import UUID -from argilla.client.feedback.schemas.enums import ResponseStatus -from argilla.client.feedback.schemas.records import FeedbackRecord, ResponseSchema, SuggestionSchema -from argilla.client.feedback.schemas.remote.shared import RemoteSchema -from argilla.client.sdk.users.models import UserRole -from argilla.client.sdk.v1.records import api as records_api_v1 -from argilla.client.sdk.v1.suggestions import api as suggestions_api_v1 -from argilla.client.utils import allowed_for_roles -from argilla.pydantic_v1 import Field +from argilla_v1.client.feedback.schemas.enums import ResponseStatus +from argilla_v1.client.feedback.schemas.records import FeedbackRecord, ResponseSchema, SuggestionSchema +from argilla_v1.client.feedback.schemas.remote.shared import RemoteSchema +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.v1.records import api as records_api_v1 +from argilla_v1.client.sdk.v1.suggestions import api as suggestions_api_v1 +from argilla_v1.client.utils import allowed_for_roles +from argilla_v1.pydantic_v1 import Field if TYPE_CHECKING: import httpx - from argilla.client.sdk.v1.datasets.models import FeedbackResponseModel, FeedbackSuggestionModel - from argilla.client.sdk.v1.records.models import FeedbackRecordModel + from argilla_v1.client.sdk.v1.datasets.models import FeedbackResponseModel, FeedbackSuggestionModel + from argilla_v1.client.sdk.v1.records.models import FeedbackRecordModel class RemoteSuggestionSchema(SuggestionSchema, RemoteSchema): diff --git a/argilla/src/argilla/client/feedback/schemas/remote/shared.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/shared.py similarity index 96% rename from argilla/src/argilla/client/feedback/schemas/remote/shared.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/remote/shared.py index 1c88b2e507..a3b7121e64 100644 --- a/argilla/src/argilla/client/feedback/schemas/remote/shared.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/shared.py @@ -18,7 +18,7 @@ import httpx -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.pydantic_v1 import BaseModel, Field class RemoteSchema(BaseModel, ABC): diff --git a/argilla/src/argilla/client/feedback/schemas/remote/vector_settings.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/vector_settings.py similarity index 89% rename from argilla/src/argilla/client/feedback/schemas/remote/vector_settings.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/remote/vector_settings.py index 79b0bf5aae..1f21e77934 100644 --- a/argilla/src/argilla/client/feedback/schemas/remote/vector_settings.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/remote/vector_settings.py @@ -15,8 +15,8 @@ from datetime import datetime from uuid import UUID -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.client.sdk.v1.datasets.models import FeedbackVectorSettingsModel +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.sdk.v1.datasets.models import FeedbackVectorSettingsModel class RemoteVectorSettings(VectorSettings): diff --git a/argilla/src/argilla/client/feedback/schemas/response_values.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/response_values.py similarity index 94% rename from argilla/src/argilla/client/feedback/schemas/response_values.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/response_values.py index 40fc6de7de..c5594ab05f 100644 --- a/argilla/src/argilla/client/feedback/schemas/response_values.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/response_values.py @@ -14,8 +14,8 @@ from typing import TYPE_CHECKING, List, Optional, Union -from argilla.client.feedback.schemas.enums import QuestionTypes -from argilla.pydantic_v1 import ( +from argilla_v1.client.feedback.schemas.enums import QuestionTypes +from argilla_v1.pydantic_v1 import ( BaseModel, StrictInt, StrictStr, @@ -27,7 +27,7 @@ ) if TYPE_CHECKING: - from argilla.client.feedback.schemas.questions import QuestionSchema + from argilla_v1.client.feedback.schemas.questions import QuestionSchema class RankingValueSchema(BaseModel): diff --git a/argilla/src/argilla/client/feedback/schemas/responses.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/responses.py similarity index 88% rename from argilla/src/argilla/client/feedback/schemas/responses.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/responses.py index 0de48e256d..8336fa7f80 100644 --- a/argilla/src/argilla/client/feedback/schemas/responses.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/responses.py @@ -16,16 +16,15 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union from uuid import UUID -from argilla.client.feedback.schemas.enums import ResponseStatus -from argilla.client.feedback.schemas.response_values import ( +from argilla_v1.client.feedback.schemas.enums import ResponseStatus +from argilla_v1.client.feedback.schemas.response_values import ( ResponseValue, normalize_response_value, - parse_value_response_for_question, ) -from argilla.pydantic_v1 import BaseModel, Extra, validator +from argilla_v1.pydantic_v1 import BaseModel, Extra, validator if TYPE_CHECKING: - from argilla.client.feedback.schemas.questions import QuestionSchema + pass class ValueSchema(BaseModel): @@ -50,7 +49,7 @@ class ResponseSchema(BaseModel): status: Status of the response. Defaults to `submitted`. Examples: - >>> from argilla.client.feedback.schemas.responses import ResponseSchema, ValueSchema + >>> from argilla_v1.client.feedback.schemas.responses import ResponseSchema, ValueSchema >>> ResponseSchema( ... values={ ... "question_1": ValueSchema(value="answer_1"), diff --git a/argilla/src/argilla/client/feedback/schemas/suggestions.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/suggestions.py similarity index 92% rename from argilla/src/argilla/client/feedback/schemas/suggestions.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/suggestions.py index 207b163f26..59cc363e12 100644 --- a/argilla/src/argilla/client/feedback/schemas/suggestions.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/suggestions.py @@ -15,11 +15,11 @@ from typing import Any, Dict, List, Literal, Optional, Union from uuid import UUID -from argilla.client.feedback.schemas.response_values import ( +from argilla_v1.client.feedback.schemas.response_values import ( ResponseValue, normalize_response_value, ) -from argilla.pydantic_v1 import BaseModel, Extra, confloat, validator +from argilla_v1.pydantic_v1 import BaseModel, Extra, confloat, validator class SuggestionSchema(BaseModel): @@ -33,7 +33,7 @@ class SuggestionSchema(BaseModel): agent: agent that generated the suggestion. Defaults to None. Examples: - >>> from argilla.client.feedback.schemas.suggestions import SuggestionSchema + >>> from argilla_v1.client.feedback.schemas.suggestions import SuggestionSchema >>> SuggestionSchema( ... question_name="question-1", ... type="model", diff --git a/argilla/src/argilla/client/feedback/schemas/types.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/types.py similarity index 66% rename from argilla/src/argilla/client/feedback/schemas/types.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/types.py index ea7c39973f..c0e2400d66 100644 --- a/argilla/src/argilla/client/feedback/schemas/types.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/types.py @@ -14,22 +14,22 @@ from typing import Union -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.questions import AllowedQuestionTypes # noqa -from argilla.client.feedback.schemas.remote.fields import RemoteTextField -from argilla.client.feedback.schemas.remote.metadata import ( +from argilla_v1.client.feedback.schemas.questions import AllowedQuestionTypes # noqa +from argilla_v1.client.feedback.schemas.remote.fields import RemoteTextField +from argilla_v1.client.feedback.schemas.remote.metadata import ( RemoteFloatMetadataProperty, RemoteIntegerMetadataProperty, RemoteTermsMetadataProperty, ) -from argilla.client.feedback.schemas.remote.questions import AllowedRemoteQuestionTypes # noqa -from argilla.client.feedback.schemas.remote.vector_settings import RemoteVectorSettings -from argilla.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.feedback.schemas.remote.questions import AllowedRemoteQuestionTypes # noqa +from argilla_v1.client.feedback.schemas.remote.vector_settings import RemoteVectorSettings +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings AllowedFieldTypes = TextField AllowedRemoteFieldTypes = RemoteTextField diff --git a/argilla/src/argilla/client/feedback/schemas/utils.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/utils.py similarity index 94% rename from argilla/src/argilla/client/feedback/schemas/utils.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/utils.py index a2a7cf6ab0..9beeedc284 100644 --- a/argilla/src/argilla/client/feedback/schemas/utils.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/utils.py @@ -15,7 +15,7 @@ from typing import TYPE_CHECKING, Dict, List if TYPE_CHECKING: - from argilla.client.feedback.schemas.questions import QuestionSchema + from argilla_v1.client.feedback.schemas.questions import QuestionSchema class LabelMappingMixin: diff --git a/argilla/src/argilla/client/feedback/schemas/validators.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/validators.py similarity index 97% rename from argilla/src/argilla/client/feedback/schemas/validators.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/validators.py index 61eeb5b58d..23aa796c00 100644 --- a/argilla/src/argilla/client/feedback/schemas/validators.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/validators.py @@ -15,7 +15,7 @@ from typing import TYPE_CHECKING, Any, Dict, Optional if TYPE_CHECKING: - from argilla.pydantic_v1 import BaseModel + from argilla_v1.pydantic_v1 import BaseModel def title_must_have_value(cls: "BaseModel", v: Optional[str], values: Dict[str, Any]) -> str: diff --git a/argilla/src/argilla/client/feedback/schemas/vector_settings.py b/argilla-v1/src/argilla_v1/client/feedback/schemas/vector_settings.py similarity index 87% rename from argilla/src/argilla/client/feedback/schemas/vector_settings.py rename to argilla-v1/src/argilla_v1/client/feedback/schemas/vector_settings.py index 7c209295b3..5d3fc6fdc6 100644 --- a/argilla/src/argilla/client/feedback/schemas/vector_settings.py +++ b/argilla-v1/src/argilla_v1/client/feedback/schemas/vector_settings.py @@ -14,8 +14,8 @@ from typing import Optional -from argilla.client.feedback.schemas.validators import title_must_have_value -from argilla.pydantic_v1 import BaseModel, Field, PositiveInt, validator +from argilla_v1.client.feedback.schemas.validators import title_must_have_value +from argilla_v1.pydantic_v1 import BaseModel, Field, PositiveInt, validator class VectorSettings(BaseModel): @@ -31,7 +31,7 @@ class VectorSettings(BaseModel): dimensions: The dimensions of the vectors associated with the vector settings. Examples: - >>> from argilla.client.feedback.schemas import VectorSettings + >>> from argilla_v1.client.feedback.schemas import VectorSettings >>> VectorSettings(name="my_vector_settings", dimensions=768) """ diff --git a/argilla/src/argilla/client/feedback/training/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/training/__init__.py similarity index 91% rename from argilla/src/argilla/client/feedback/training/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/training/__init__.py index df6d03a3c5..766d546e0c 100644 --- a/argilla/src/argilla/client/feedback/training/__init__.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/__init__.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.feedback.training.base import ArgillaTrainer -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.training.base import ArgillaTrainer +from argilla_v1.client.feedback.training.schemas.base import ( TrainingTask, TrainingTaskForChatCompletion, TrainingTaskForDPO, diff --git a/argilla/src/argilla/client/feedback/training/base.py b/argilla-v1/src/argilla_v1/client/feedback/training/base.py similarity index 89% rename from argilla/src/argilla/client/feedback/training/base.py rename to argilla-v1/src/argilla_v1/client/feedback/training/base.py index 224bb0bf91..2b12ad9d93 100644 --- a/argilla/src/argilla/client/feedback/training/base.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/base.py @@ -18,21 +18,21 @@ from pathlib import Path from typing import TYPE_CHECKING, Dict, List, Optional, Union -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.training.schemas.base import TrainingTaskForTextClassification, TrainingTaskTypes -from argilla.client.models import Framework, TextClassificationRecord -from argilla.training.base import ArgillaTrainer as ArgillaTrainerV1 -from argilla.training.base import ArgillaTrainerSkeleton as ArgillaTrainerSkeletonV1 +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.training.schemas.base import TrainingTaskForTextClassification, TrainingTaskTypes +from argilla_v1.client.models import Framework, TextClassificationRecord +from argilla_v1.training.base import ArgillaTrainer as ArgillaTrainerV1 +from argilla_v1.training.base import ArgillaTrainerSkeleton as ArgillaTrainerSkeletonV1 if TYPE_CHECKING: import spacy from transformers import PreTrainedModel, PreTrainedTokenizer - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset - from argilla.client.feedback.integrations.huggingface.model_card import ArgillaModelCard - from argilla.client.feedback.schemas.enums import ResponseStatusFilter - from argilla.client.feedback.schemas.records import SortBy + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.feedback.integrations.huggingface.model_card import ArgillaModelCard + from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter + from argilla_v1.client.feedback.schemas.records import SortBy class ArgillaTrainer(ArgillaTrainerV1): @@ -122,7 +122,7 @@ def __init__( if framework is Framework.SETFIT: if not isinstance(task, TrainingTaskForTextClassification): raise NotImplementedError(f"{Framework.SETFIT} only supports `TextClassification` tasks.") - from argilla.client.feedback.training.frameworks.setfit import ArgillaSetFitTrainer + from argilla_v1.client.feedback.training.frameworks.setfit import ArgillaSetFitTrainer self._trainer = ArgillaSetFitTrainer( dataset=self._dataset, @@ -132,7 +132,7 @@ def __init__( model=self._model, ) elif framework is Framework.TRANSFORMERS: - from argilla.client.feedback.training.frameworks.transformers import ArgillaTransformersTrainer + from argilla_v1.client.feedback.training.frameworks.transformers import ArgillaTransformersTrainer self._trainer = ArgillaTransformersTrainer( dataset=self._dataset, @@ -143,7 +143,7 @@ def __init__( tokenizer=self._tokenizer, ) elif framework is Framework.PEFT: - from argilla.client.feedback.training.frameworks.peft import ArgillaPeftTrainer + from argilla_v1.client.feedback.training.frameworks.peft import ArgillaPeftTrainer self._trainer = ArgillaPeftTrainer( dataset=self._dataset, @@ -154,7 +154,7 @@ def __init__( tokenizer=self._tokenizer, ) elif framework is Framework.SPACY: - from argilla.client.feedback.training.frameworks.spacy import ArgillaSpaCyTrainer + from argilla_v1.client.feedback.training.frameworks.spacy import ArgillaSpaCyTrainer self._trainer = ArgillaSpaCyTrainer( dataset=self._dataset, @@ -166,7 +166,7 @@ def __init__( framework_kwargs=framework_kwargs, # freeze_tok2vec ) elif framework is Framework.SPACY_TRANSFORMERS: - from argilla.client.feedback.training.frameworks.spacy import ArgillaSpaCyTransformersTrainer + from argilla_v1.client.feedback.training.frameworks.spacy import ArgillaSpaCyTransformersTrainer self._trainer = ArgillaSpaCyTransformersTrainer( dataset=self._dataset, @@ -178,7 +178,7 @@ def __init__( framework_kwargs=framework_kwargs, # update_transformer ) elif framework is Framework.OPENAI: - from argilla.client.feedback.training.frameworks.openai import ArgillaOpenAITrainer + from argilla_v1.client.feedback.training.frameworks.openai import ArgillaOpenAITrainer self._trainer = ArgillaOpenAITrainer( dataset=self._dataset, @@ -188,7 +188,7 @@ def __init__( model=self._model, ) elif framework is Framework.SPAN_MARKER: - from argilla.client.feedback.training.frameworks.span_marker import ArgillaSpanMarkerTrainer + from argilla_v1.client.feedback.training.frameworks.span_marker import ArgillaSpanMarkerTrainer self._trainer = ArgillaSpanMarkerTrainer( dataset=self._dataset, @@ -198,7 +198,7 @@ def __init__( model=self._model, ) elif framework is Framework.TRL: - from argilla.client.feedback.training.frameworks.trl import ArgillaTRLTrainer + from argilla_v1.client.feedback.training.frameworks.trl import ArgillaTRLTrainer self._trainer = ArgillaTRLTrainer( dataset=self._dataset, @@ -209,7 +209,7 @@ def __init__( tokenizer=self._tokenizer, ) elif framework is Framework.SENTENCE_TRANSFORMERS: - from argilla.client.feedback.training.frameworks.sentence_transformers import ( + from argilla_v1.client.feedback.training.frameworks.sentence_transformers import ( ArgillaSentenceTransformersTrainer, ) @@ -306,7 +306,7 @@ def generate_model_card(self, output_dir: Optional[str] = None) -> "ArgillaModel Returns: model_card: The model card. """ - from argilla.client.feedback.integrations.huggingface.model_card import ArgillaModelCard + from argilla_v1.client.feedback.integrations.huggingface.model_card import ArgillaModelCard if not self.model_card_kwargs.get("output_dir"): self.model_card_kwargs.update({"output_dir": f'"{output_dir}"'}) diff --git a/argilla/src/argilla/client/feedback/training/frameworks/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/__init__.py similarity index 100% rename from argilla/src/argilla/client/feedback/training/frameworks/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/__init__.py diff --git a/argilla/src/argilla/client/feedback/training/frameworks/openai.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/openai.py similarity index 84% rename from argilla/src/argilla/client/feedback/training/frameworks/openai.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/openai.py index fdd96a367d..eced93ee05 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/openai.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/openai.py @@ -14,12 +14,12 @@ from typing import TYPE_CHECKING -from argilla.client.feedback.training.base import ArgillaTrainerSkeleton -from argilla.training.openai import ArgillaOpenAITrainer as ArgillaOpenAITrainerV1 -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.feedback.training.base import ArgillaTrainerSkeleton +from argilla_v1.training.openai import ArgillaOpenAITrainer as ArgillaOpenAITrainerV1 +from argilla_v1.utils.dependency import require_dependencies if TYPE_CHECKING: - from argilla.client.feedback.integrations.huggingface.model_card import OpenAIModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import OpenAIModelCardData class ArgillaOpenAITrainer(ArgillaOpenAITrainerV1, ArgillaTrainerSkeleton): @@ -60,7 +60,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "OpenAIModelCardData": Returns: OpenAIModelCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import OpenAIModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import OpenAIModelCardData return OpenAIModelCardData( model_name=self._model, diff --git a/argilla/src/argilla/client/feedback/training/frameworks/peft.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/peft.py similarity index 85% rename from argilla/src/argilla/client/feedback/training/frameworks/peft.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/peft.py index 73f21a989f..244db8e2df 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/peft.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/peft.py @@ -14,12 +14,12 @@ from typing import TYPE_CHECKING -from argilla.client.feedback.training.frameworks.transformers import ArgillaTransformersTrainer -from argilla.training.peft import ArgillaPeftTrainer as ArgillaPeftTrainerV1 -from argilla.utils.dependency import requires_dependencies +from argilla_v1.client.feedback.training.frameworks.transformers import ArgillaTransformersTrainer +from argilla_v1.training.peft import ArgillaPeftTrainer as ArgillaPeftTrainerV1 +from argilla_v1.utils.dependency import requires_dependencies if TYPE_CHECKING: - from argilla.client.feedback.integrations.huggingface.model_card import PeftModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import PeftModelCardData class ArgillaPeftTrainer(ArgillaPeftTrainerV1, ArgillaTransformersTrainer): @@ -36,7 +36,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "PeftModelCardData": Returns: PeftModelCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import PeftModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import PeftModelCardData return PeftModelCardData( model_id=self._model, diff --git a/argilla/src/argilla/client/feedback/training/frameworks/sentence_transformers.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/sentence_transformers.py similarity index 96% rename from argilla/src/argilla/client/feedback/training/frameworks/sentence_transformers.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/sentence_transformers.py index 389af588a6..a521fa07c8 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/sentence_transformers.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/sentence_transformers.py @@ -15,14 +15,14 @@ import logging from typing import TYPE_CHECKING, List, Optional, Tuple, Union -from argilla.client.feedback.training.base import ArgillaTrainerSkeleton -from argilla.client.feedback.training.schemas.base import TrainingTaskForSentenceSimilarity -from argilla.training.utils import filter_allowed_args, get_default_args -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.feedback.training.base import ArgillaTrainerSkeleton +from argilla_v1.client.feedback.training.schemas.base import TrainingTaskForSentenceSimilarity +from argilla_v1.training.utils import filter_allowed_args, get_default_args +from argilla_v1.utils.dependency import require_dependencies if TYPE_CHECKING: - from argilla.client.feedback.dataset import FeedbackDataset - from argilla.client.feedback.integrations.huggingface.model_card import SentenceTransformerCardData + from argilla_v1.client.feedback.dataset import FeedbackDataset + from argilla_v1.client.feedback.integrations.huggingface.model_card import SentenceTransformerCardData class ArgillaSentenceTransformersTrainer(ArgillaTrainerSkeleton): @@ -357,7 +357,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "SentenceTransformerCardDat Returns: SentenceTransformerCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import SentenceTransformerCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import SentenceTransformerCardData return SentenceTransformerCardData( model_id=self._model, diff --git a/argilla/src/argilla/client/feedback/training/frameworks/setfit.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/setfit.py similarity index 86% rename from argilla/src/argilla/client/feedback/training/frameworks/setfit.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/setfit.py index 21241762d1..eed7a60718 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/setfit.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/setfit.py @@ -15,13 +15,13 @@ import logging from typing import TYPE_CHECKING -from argilla.client.feedback.training.frameworks.transformers import ArgillaTransformersTrainer -from argilla.client.models import TextClassificationRecord -from argilla.training.setfit import ArgillaSetFitTrainer as ArgillaSetFitTrainerV1 -from argilla.utils.dependency import require_dependencies, requires_dependencies +from argilla_v1.client.feedback.training.frameworks.transformers import ArgillaTransformersTrainer +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.training.setfit import ArgillaSetFitTrainer as ArgillaSetFitTrainerV1 +from argilla_v1.utils.dependency import require_dependencies, requires_dependencies if TYPE_CHECKING: - from argilla.client.feedback.integrations.huggingface.model_card import SetFitModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import SetFitModelCardData class ArgillaSetFitTrainer(ArgillaSetFitTrainerV1, ArgillaTransformersTrainer): @@ -58,7 +58,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "SetFitModelCardData": Returns: SetFitModelCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import SetFitModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import SetFitModelCardData return SetFitModelCardData( model_id=self._model, diff --git a/argilla/src/argilla/client/feedback/training/frameworks/spacy.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/spacy.py similarity index 93% rename from argilla/src/argilla/client/feedback/training/frameworks/spacy.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/spacy.py index 7a21435a40..1a2bf78986 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/spacy.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/spacy.py @@ -19,15 +19,15 @@ from typing_extensions import Literal -from argilla.client.feedback.training.base import ArgillaTrainerSkeleton -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training.spacy import ArgillaSpaCyTrainer as ArgillaSpaCyTrainerV1 -from argilla.training.spacy import ArgillaSpaCyTransformersTrainer as ArgillaSpaCyTransformersTrainerV1 -from argilla.training.spacy import _ArgillaSpaCyTrainerBase as _ArgillaSpaCyTrainerBaseV1 -from argilla.utils.dependency import require_dependencies, requires_dependencies +from argilla_v1.client.feedback.training.base import ArgillaTrainerSkeleton +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training.spacy import ArgillaSpaCyTrainer as ArgillaSpaCyTrainerV1 +from argilla_v1.training.spacy import ArgillaSpaCyTransformersTrainer as ArgillaSpaCyTransformersTrainerV1 +from argilla_v1.training.spacy import _ArgillaSpaCyTrainerBase as _ArgillaSpaCyTrainerBaseV1 +from argilla_v1.utils.dependency import require_dependencies, requires_dependencies if TYPE_CHECKING: - from argilla.client.feedback.integrations.huggingface.model_card import ( + from argilla_v1.client.feedback.integrations.huggingface.model_card import ( SpacyModelCardData, SpacyTransformersModelCardData, ) @@ -227,7 +227,7 @@ def __init__(self, freeze_tok2vec: bool = False, **kwargs) -> None: **kwargs: The `ArgillaSpaCyTrainerBase` arguments. Examples: - >>> from argilla import ArgillaSpaCyTrainer + >>> from argilla_v1 import ArgillaSpaCyTrainer >>> trainer = ArgillaSpaCyTrainer( """ self.freeze_tok2vec = freeze_tok2vec @@ -243,7 +243,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "SpacyModelCardData": Returns: SpacyModelCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import SpacyModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import SpacyModelCardData return SpacyModelCardData( model_id=self._model, @@ -279,7 +279,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "SpacyTransformersModelCard Returns: SpacyTransformersModelCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import SpacyTransformersModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import SpacyTransformersModelCardData return SpacyTransformersModelCardData( model_id=self._model, diff --git a/argilla/src/argilla/client/feedback/training/frameworks/span_marker.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/span_marker.py similarity index 88% rename from argilla/src/argilla/client/feedback/training/frameworks/span_marker.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/span_marker.py index e8f1b2b104..453661c6d8 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/span_marker.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/span_marker.py @@ -16,12 +16,12 @@ from datasets import DatasetDict -from argilla.client.feedback.training.base import ArgillaTrainerSkeleton -from argilla.client.models import TokenClassificationRecord -from argilla.training.span_marker import ArgillaSpanMarkerTrainer as ArgillaSpanMarkerTrainerV1 +from argilla_v1.client.feedback.training.base import ArgillaTrainerSkeleton +from argilla_v1.client.models import TokenClassificationRecord +from argilla_v1.training.span_marker import ArgillaSpanMarkerTrainer as ArgillaSpanMarkerTrainerV1 if TYPE_CHECKING: - from argilla.client.feedback.integrations.huggingface.model_card import FrameworkCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import FrameworkCardData class ArgillaSpanMarkerTrainer(ArgillaSpanMarkerTrainerV1, ArgillaTrainerSkeleton): diff --git a/argilla/src/argilla/client/feedback/training/frameworks/transformers.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/transformers.py similarity index 90% rename from argilla/src/argilla/client/feedback/training/frameworks/transformers.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/transformers.py index 621d8ae028..58b3215dae 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/transformers.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/transformers.py @@ -16,16 +16,16 @@ from datasets import Dataset, DatasetDict -from argilla.client.feedback.training.base import ArgillaTrainerSkeleton -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.training.base import ArgillaTrainerSkeleton +from argilla_v1.client.feedback.training.schemas.base import ( TrainingTaskForQuestionAnswering, TrainingTaskForTextClassification, ) -from argilla.training.transformers import ArgillaTransformersTrainer as ArgillaTransformersTrainerV1 -from argilla.utils.dependency import requires_dependencies +from argilla_v1.training.transformers import ArgillaTransformersTrainer as ArgillaTransformersTrainerV1 +from argilla_v1.utils.dependency import requires_dependencies if TYPE_CHECKING: - from argilla.client.feedback.integrations.huggingface.model_card import TransformersModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import TransformersModelCardData class ArgillaTransformersTrainer(ArgillaTransformersTrainerV1, ArgillaTrainerSkeleton): @@ -88,7 +88,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "TransformersModelCardData" Returns: TransformersModelCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import TransformersModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import TransformersModelCardData if not card_data_kwargs.get("tags"): if isinstance(self._task, TrainingTaskForTextClassification): diff --git a/argilla/src/argilla/client/feedback/training/frameworks/trl.py b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/trl.py similarity index 97% rename from argilla/src/argilla/client/feedback/training/frameworks/trl.py rename to argilla-v1/src/argilla_v1/client/feedback/training/frameworks/trl.py index b01620b55e..bc59a72f5f 100644 --- a/argilla/src/argilla/client/feedback/training/frameworks/trl.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/frameworks/trl.py @@ -15,23 +15,23 @@ import logging from typing import TYPE_CHECKING, Dict, List, Optional, Union -from argilla.client.feedback.training.base import ArgillaTrainerSkeleton -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.training.base import ArgillaTrainerSkeleton +from argilla_v1.client.feedback.training.schemas.base import ( TrainingTaskForDPO, TrainingTaskForPPO, TrainingTaskForRM, TrainingTaskForSFT, ) -from argilla.training.utils import filter_allowed_args -from argilla.utils.dependency import require_dependencies, requires_dependencies +from argilla_v1.training.utils import filter_allowed_args +from argilla_v1.utils.dependency import require_dependencies, requires_dependencies if TYPE_CHECKING: import transformers from transformers import PreTrainedModel, PreTrainedTokenizer from trl import PPOConfig - from argilla.client.feedback.dataset import FeedbackDataset - from argilla.client.feedback.integrations.huggingface.model_card import TRLModelCardData + from argilla_v1.client.feedback.dataset import FeedbackDataset + from argilla_v1.client.feedback.integrations.huggingface.model_card import TRLModelCardData class PPOArgs: @@ -394,7 +394,7 @@ def get_model_card_data(self, **card_data_kwargs) -> "TRLModelCardData": Returns: TRLModelCardData: Container for the data to be written on the `ArgillaModelCard`. """ - from argilla.client.feedback.integrations.huggingface.model_card import TRLModelCardData + from argilla_v1.client.feedback.integrations.huggingface.model_card import TRLModelCardData if not card_data_kwargs.get("tags"): if isinstance(self._task, TrainingTaskForSFT): diff --git a/argilla/src/argilla/client/feedback/training/schemas/base.py b/argilla-v1/src/argilla_v1/client/feedback/training/schemas/base.py similarity index 97% rename from argilla/src/argilla/client/feedback/training/schemas/base.py rename to argilla-v1/src/argilla_v1/client/feedback/training/schemas/base.py index edf3ad5dc0..db1ae0e414 100644 --- a/argilla/src/argilla/client/feedback/training/schemas/base.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/schemas/base.py @@ -21,8 +21,8 @@ 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 ( +from argilla_v1._constants import OPENAI_SEPARATOR, OPENAI_WHITESPACE +from argilla_v1.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, MultiLabelQuestion, @@ -31,12 +31,12 @@ TextField, TextQuestion, ) -from argilla.client.feedback.training.schemas.defaults import ( +from argilla_v1.client.feedback.training.schemas.defaults import ( QuestionAnsweringDefaults, SentenceSimilarityDefaults, TextClassificationDefaults, ) -from argilla.client.feedback.training.schemas.return_types import ( +from argilla_v1.client.feedback.training.schemas.return_types import ( ChatCompletionReturnTypes, DPOReturnTypes, PPOReturnTypes, @@ -46,22 +46,22 @@ SFTReturnTypes, TextClassificationReturnTypes, ) -from argilla.client.feedback.unification import ( +from argilla_v1.client.feedback.unification import ( LabelQuestionUnification, MultiLabelQuestionUnification, RankingQuestionUnification, RatingQuestionUnification, ) -from argilla.client.models import Framework -from argilla.pydantic_v1 import BaseModel -from argilla.utils.dependency import require_dependencies, requires_dependencies +from argilla_v1.client.models import Framework +from argilla_v1.pydantic_v1 import BaseModel +from argilla_v1.utils.dependency import require_dependencies, requires_dependencies _LOGGER = logging.getLogger(__name__) if TYPE_CHECKING: import datasets import spacy - from argilla.client.feedback.dataset import FeedbackDataset + from argilla_v1.client.feedback.dataset import FeedbackDataset from sentence_transformers import InputExample @@ -328,7 +328,7 @@ def for_text_classification( Examples: >>> # with defaults - >>> from argilla import LabelQuestion, TrainingTask + >>> from argilla_v1 import LabelQuestion, TrainingTask >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> task = TrainingTask.for_text_classification( ... text=dataset.field_by_name("text"), @@ -336,7 +336,7 @@ def for_text_classification( ... ) >>> dataset.prepare_for_training(framework="...", task=task) >>> # with formatting_func - >>> from argilla import LabelQuestion, TrainingTask + >>> from argilla_v1 import LabelQuestion, TrainingTask >>> from collections import Counter >>> import random >>> def formatting_func(sample: Dict[str, Any]) -> Union[Tuple[str, str], Tuple[str, List[str]]]: @@ -407,7 +407,7 @@ def for_supervised_fine_tuning( TrainingTaskForSFT: A task mapping instance to be used in `FeedbackDataset.prepare_for_training()` Examples: - >>> from argilla import TrainingTask + >>> from argilla_v1 import TrainingTask >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... annotations = sample["good"] @@ -439,7 +439,7 @@ def for_reward_modeling( TrainingTaskForRM: A task mapping instance to be used in `FeedbackDataset.prepare_for_training()` Examples: - >>> from argilla import TrainingTask + >>> from argilla_v1 import TrainingTask >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... values = [annotation["value"] for annotation in sample["ranking"]] @@ -491,7 +491,7 @@ def for_direct_preference_optimization( TrainingTaskForDPO: A task mapping instance to be used in `FeedbackDataset.prepare_for_training()` Examples: - >>> from argilla import TrainingTask + >>> from argilla_v1 import TrainingTask >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... values = [annotation["value"] for annotation in sample["ranking"]] @@ -521,7 +521,7 @@ def for_chat_completion( one or more chat-turn-role-content text tuples. Examples: - >>> from argilla import TrainingTaskForChatCompletion + >>> from argilla_v1 import TrainingTaskForChatCompletion >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... from uuid import uuid4 @@ -557,7 +557,7 @@ def for_question_answering( Examples: >>> # with defaults - >>> from argilla import TrainingTaskForQuestionAnswering + >>> from argilla_v1 import TrainingTaskForQuestionAnswering >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> task = TrainingTaskForQuestionAnswering( ... question=dataset.field_by_name("question"), @@ -566,7 +566,7 @@ def for_question_answering( ... ) >>> dataset.prepare_for_training(framework="...", task=task) >>> # with formatting_func - >>> from argilla import TrainingTaskForQuestionAnswering + >>> from argilla_v1 import TrainingTaskForQuestionAnswering >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... question = sample["question"] @@ -633,7 +633,7 @@ def for_sentence_similarity( TrainingTaskForSentenceSimilarity: A task mapping instance to be used in `FeedbackDataset.prepare_for_training()` Examples: - >>> from argilla import LabelQuestion, TrainingTask + >>> from argilla_v1 import LabelQuestion, TrainingTask >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> task = TrainingTask.for_text_classification( ... texts=[dataset.field_by_name("premise"), dataset.field_by_name("hypothesis")], @@ -641,7 +641,7 @@ def for_sentence_similarity( ... ) >>> dataset.prepare_for_training(framework="...", task=task) - >>> from argilla import LabelQuestion, TrainingTask + >>> from argilla_v1 import LabelQuestion, TrainingTask >>> from collections import Counter >>> import random >>> def formatting_func(sample: Dict[str, Any]) -> Union[Tuple[str, str], Tuple[str, List[str]]]: @@ -702,7 +702,7 @@ class TrainingTaskForTextClassification(BaseModel, TrainingData): Examples: >>> # with defaults - >>> from argilla import LabelQuestion, TrainingTask + >>> from argilla_v1 import LabelQuestion, TrainingTask >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> task = TrainingTask.for_text_classification( ... text=dataset.field_by_name("text"), @@ -710,7 +710,7 @@ class TrainingTaskForTextClassification(BaseModel, TrainingData): ... ) >>> dataset.prepare_for_training(framework="...", task=task) >>> # with formatting_func - >>> from argilla import LabelQuestion, TrainingTask + >>> from argilla_v1 import LabelQuestion, TrainingTask >>> from collections import Counter >>> import random >>> def formatting_func(sample: Dict[str, Any]) -> Union[Tuple[str, str], Tuple[str, List[str]]]: @@ -970,7 +970,7 @@ class TrainingTaskForSFT(BaseModel, TrainingData): one or more text strings. Examples: - >>> from argilla import TrainingTaskForSFT + >>> from argilla_v1 import TrainingTaskForSFT >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... annotations = sample["good"] @@ -1021,7 +1021,7 @@ class TrainingTaskForRM(BaseModel, TrainingData): one or more chosen-rejected text tuples. Examples: - >>> from argilla import TrainingTaskForRM + >>> from argilla_v1 import TrainingTaskForRM >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... values = [annotation["value"] for annotation in sample["ranking"]] @@ -1076,7 +1076,7 @@ class TrainingTaskForPPO(BaseModel, TrainingData): text: The TextField to use for training. Examples: - >>> from argilla import TrainingTaskForPPO + >>> from argilla_v1 import TrainingTaskForPPO >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> task = TrainingTaskForPPO(text=dataset.fields[0],) >>> dataset.prepare_for_training(framework="...", task=task) @@ -1122,7 +1122,7 @@ class TrainingTaskForDPO(BaseModel, TrainingData): one or more prompt-chosen-rejected text tuples. Examples: - >>> from argilla import TrainingTaskForDPO + >>> from argilla_v1 import TrainingTaskForDPO >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... values = [annotation["value"] for annotation in sample["ranking"]] @@ -1183,7 +1183,7 @@ class TrainingTaskForQuestionAnswering(BaseModel, TrainingData): Examples: >>> # with defaults - >>> from argilla import TrainingTaskForQuestionAnswering + >>> from argilla_v1 import TrainingTaskForQuestionAnswering >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> task = TrainingTaskForQuestionAnswering( ... question=dataset.field_by_name("question"), @@ -1192,7 +1192,7 @@ class TrainingTaskForQuestionAnswering(BaseModel, TrainingData): ... ) >>> dataset.prepare_for_training(framework="...", task=task) >>> # with formatting_func - >>> from argilla import TrainingTaskForQuestionAnswering + >>> from argilla_v1 import TrainingTaskForQuestionAnswering >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... question = sample["question"] @@ -1285,7 +1285,7 @@ class TrainingTaskForChatCompletion(BaseModel, TrainingData): one or more chat-turn-role-content text tuples. Examples: - >>> from argilla import TrainingTaskForChatCompletion + >>> from argilla_v1 import TrainingTaskForChatCompletion >>> dataset = rg.FeedbackDataset.from_argilla(name="...") >>> def formatting_func(sample: Dict[str, Any]): ... from uuid import uuid4 @@ -1364,7 +1364,7 @@ class TrainingTaskForSentenceSimilarity(BaseModel, TrainingData): Examples: Example for argilla/emotion dataset: - >>> from argilla import TrainingTaskForSentenceSimilarity + >>> from argilla_v1 import TrainingTaskForSentenceSimilarity >>> dataset = rg.FeedbackDataset.from_argilla(name="argilla/emotion") >>> def formatting_func(sample: Dict[str, Any]): ... return {"sentence": sample["text"], "label": int(sample["label"][0]["value"])} diff --git a/argilla/src/argilla/client/feedback/training/schemas/defaults.py b/argilla-v1/src/argilla_v1/client/feedback/training/schemas/defaults.py similarity index 91% rename from argilla/src/argilla/client/feedback/training/schemas/defaults.py rename to argilla-v1/src/argilla_v1/client/feedback/training/schemas/defaults.py index 4eec254afe..b4c904ae3a 100644 --- a/argilla/src/argilla/client/feedback/training/schemas/defaults.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/schemas/defaults.py @@ -14,7 +14,7 @@ from typing import List, Optional, Union -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.schemas import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, @@ -22,13 +22,13 @@ TextField, TextQuestion, ) -from argilla.client.feedback.unification import ( +from argilla_v1.client.feedback.unification import ( LabelQuestionUnification, MultiLabelQuestionUnification, RankingQuestionUnification, RatingQuestionUnification, ) -from argilla.pydantic_v1 import BaseModel +from argilla_v1.pydantic_v1 import BaseModel class TextClassificationDefaults(BaseModel): diff --git a/argilla/src/argilla/client/feedback/training/schemas/return_types.py b/argilla-v1/src/argilla_v1/client/feedback/training/schemas/return_types.py similarity index 98% rename from argilla/src/argilla/client/feedback/training/schemas/return_types.py rename to argilla-v1/src/argilla_v1/client/feedback/training/schemas/return_types.py index e0e584dc04..d1e378420a 100644 --- a/argilla/src/argilla/client/feedback/training/schemas/return_types.py +++ b/argilla-v1/src/argilla_v1/client/feedback/training/schemas/return_types.py @@ -14,7 +14,7 @@ from typing import Dict, List, Tuple, Union -from argilla.pydantic_v1 import BaseModel +from argilla_v1.pydantic_v1 import BaseModel class TextClassificationReturnTypes(BaseModel): diff --git a/argilla/src/argilla/client/feedback/unification.py b/argilla-v1/src/argilla_v1/client/feedback/unification.py similarity index 98% rename from argilla/src/argilla/client/feedback/unification.py rename to argilla-v1/src/argilla_v1/client/feedback/unification.py index e46949c661..6504694fc2 100644 --- a/argilla/src/argilla/client/feedback/unification.py +++ b/argilla-v1/src/argilla_v1/client/feedback/unification.py @@ -20,7 +20,7 @@ import pandas as pd -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, MultiLabelQuestion, @@ -28,7 +28,7 @@ RatingQuestion, ValueSchema, ) -from argilla.pydantic_v1 import BaseModel, root_validator, validator +from argilla_v1.pydantic_v1 import BaseModel, root_validator, validator class UnifiedValueSchema(ValueSchema): @@ -39,7 +39,7 @@ class UnifiedValueSchema(ValueSchema): strategy (Literal["mean", "majority", "max", "min"]): The strategy to unify the responses. Defaults to "majority". Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> value = rg.UnifiedValueSchema(value="Yes", strategy="majority") >>> # or use a dict >>> value = {"value": "Yes", "strategy": "majority"} @@ -460,7 +460,7 @@ class LabelQuestionStrategy(LabelQuestionStrategyMixin, Enum): - "disagreement": preserve the natural disagreement between annotators Examples: - >>> from argilla import LabelQuestion, LabelQuestionStrategy + >>> from argilla_v1 import LabelQuestion, LabelQuestionStrategy >>> strategy = LabelQuestionStrategy("majority") >>> records = strategy.compute_unified_responses(records, question=LabelQuestion(...)) """ @@ -582,7 +582,7 @@ class RatingQuestionUnification(BaseModel): min (str): the min value of the ratings Examples: - >>> from argilla import RatingQuestion, RatingQuestionUnification, RatingQuestionStrategy + >>> from argilla_v1 import RatingQuestion, RatingQuestionUnification, RatingQuestionStrategy >>> RatingQuestionUnification(question=RatingQuestion(...), strategy="mean") >>> # or use a RatingQuestionStrategy >>> RatingQuestionUnification(question=RatingQuestion(...), strategy=RatingQuestionStrategy.MEAN) @@ -610,7 +610,7 @@ class RankingQuestionUnification(BaseModel): min (str): the min value of the ratings Examples: - >>> from argilla import RankingQuestionUnification, RankingQuestionStrategy, RankingQuestion + >>> from argilla_v1 import RankingQuestionUnification, RankingQuestionStrategy, RankingQuestion >>> RankingQuestionUnification(question=RankingQuestion(...), strategy="majority") >>> # or use a RankingQuestionStrategy >>> RankingQuestionUnification(question=RankingQuestion(...), strategy=RankingQuestionStrategy.MAJORITY) @@ -637,7 +637,7 @@ class LabelQuestionUnification(BaseModel): disagreement (str): preserve the natural disagreement between annotators Examples: - >>> from argilla import LabelQuestion, LabelQuestionStrategy, LabelQuestionUnification + >>> from argilla_v1 import LabelQuestion, LabelQuestionStrategy, LabelQuestionUnification >>> LabelQuestionUnification(question=LabelQuestion(...), strategy="majority") >>> # or use a LabelQuestionStrategy >>> LabelQuestionUnification(question=LabelQuestion(...), strategy=LabelQuestionStrategy.MAJORITY) diff --git a/argilla/src/argilla/client/feedback/utils/__init__.py b/argilla-v1/src/argilla_v1/client/feedback/utils/__init__.py similarity index 90% rename from argilla/src/argilla/client/feedback/utils/__init__.py rename to argilla-v1/src/argilla_v1/client/feedback/utils/__init__.py index b0cb411dbe..690b583776 100644 --- a/argilla/src/argilla/client/feedback/utils/__init__.py +++ b/argilla-v1/src/argilla_v1/client/feedback/utils/__init__.py @@ -13,7 +13,7 @@ # limitations under the License. -from argilla.client.feedback.utils.assignment import ( +from argilla_v1.client.feedback.utils.assignment import ( assign_records, assign_records_to_groups, assign_records_to_individuals, @@ -21,7 +21,7 @@ check_user, check_workspace, ) -from argilla.client.feedback.utils.html_utils import ( +from argilla_v1.client.feedback.utils.html_utils import ( audio_to_html, create_token_highlights, get_file_data, diff --git a/argilla/src/argilla/client/feedback/utils/assignment.py b/argilla-v1/src/argilla_v1/client/feedback/utils/assignment.py similarity index 97% rename from argilla/src/argilla/client/feedback/utils/assignment.py rename to argilla-v1/src/argilla_v1/client/feedback/utils/assignment.py index 40ed72ba51..3bcd59c1b1 100644 --- a/argilla/src/argilla/client/feedback/utils/assignment.py +++ b/argilla-v1/src/argilla_v1/client/feedback/utils/assignment.py @@ -20,8 +20,8 @@ from rich.progress import Progress -from argilla.client.users import User -from argilla.client.workspaces import Workspace +from argilla_v1.client.users import User +from argilla_v1.client.workspaces import Workspace def check_user(user_to_check: Union[str, User]) -> User: @@ -191,7 +191,7 @@ def assign_records( Or a dictionary where keys are usernames and values are lists of assigned records. Examples: - >>> from argilla.client.feedback.utils import assign_records + >>> from argilla_v1.client.feedback.utils import assign_records >>> individual_assignments = assign_records([user1, user2, user3], records, 0, False) >>> group_assignments = assign_records({group1: [user1, user2], group2: [user3]}, records, 1, False) @@ -216,7 +216,7 @@ def assign_workspaces( A dictionary where each key is a workspace name and its value is a list of user names. Examples: - >>> from argilla.client.feedback.utils import assign_workspaces + >>> from argilla_v1.client.feedback.utils import assign_workspaces >>> wk_assignments = assign_workspaces(group_assignments, "group") >>> wk_assignments = assign_workspaces(group_assignments, "group_personal") >>> wk_assignments = assign_workspaces(individual_assignments, "individual") diff --git a/argilla/src/argilla/client/feedback/utils/html_utils.py b/argilla-v1/src/argilla_v1/client/feedback/utils/html_utils.py similarity index 96% rename from argilla/src/argilla/client/feedback/utils/html_utils.py rename to argilla-v1/src/argilla_v1/client/feedback/utils/html_utils.py index 915a8e0c05..a555f29782 100644 --- a/argilla/src/argilla/client/feedback/utils/html_utils.py +++ b/argilla-v1/src/argilla_v1/client/feedback/utils/html_utils.py @@ -20,7 +20,7 @@ from typing import Callable, List, Optional, Union from urllib.parse import urlparse -from argilla.utils.dependency import require_dependencies +from argilla_v1.utils.dependency import require_dependencies # Define html supported types for each media SUPPORTED_MEDIA_TYPES = { @@ -178,7 +178,7 @@ def video_to_html( The HTML tag with embedded base64 data. Examples: - >>> from argilla.client.feedback.utils import video_to_html + >>> from argilla_v1.client.feedback.utils import video_to_html >>> html = video_to_html("my_video.mp4", width="300px", height="300px", autoplay=True, loop=True) """ return media_to_html("video", file_source, file_type, width, height, autoplay, loop) @@ -207,7 +207,7 @@ def audio_to_html( The HTML tag with embedded base64 data. Examples: - >>> from argilla.client.feedback.utils import audio_to_html + >>> from argilla_v1.client.feedback.utils import audio_to_html >>> html = audio_to_html("my_audio.mp3", width="300px", height="300px", autoplay=True, loop=True) """ return media_to_html("audio", file_source, file_type, width, height, autoplay, loop) @@ -232,7 +232,7 @@ def image_to_html( The HTML tag with embedded base64 data. Examples: - >>> from argilla.client.feedback.utils import image_to_html + >>> from argilla_v1.client.feedback.utils import image_to_html >>> html = image_to_html("my_image.png", width="300px", height="300px") """ return media_to_html("image", file_source, file_type, width, height) @@ -256,7 +256,7 @@ def pdf_to_html( ValueError: If the width and height are not pixel or percentage. Examples: - >>> from argilla.client.feedback.utils import pdf_to_html + >>> from argilla_v1.client.feedback.utils import pdf_to_html >>> html = pdf_to_html("my_pdf.pdf", width="300px", height="300px") """ if not is_valid_dimension(width) or not is_valid_dimension(height): @@ -292,7 +292,7 @@ def create_token_highlights( TypeError: If c_map is not a string or a callable. Examples: - >>> from argilla.client.feedback.utils import create_token_highlights + >>> from argilla_v1.client.feedback.utils import create_token_highlights >>> tokens = ["This", "is", "a", "test"] >>> weights = [0.1, 0.2, 0.3, 0.4] >>> html = create_token_highlights(tokens, weights) diff --git a/argilla/src/argilla/client/login.py b/argilla-v1/src/argilla_v1/client/login.py similarity index 94% rename from argilla/src/argilla/client/login.py rename to argilla-v1/src/argilla_v1/client/login.py index 0ea42eef97..fb2d9be990 100644 --- a/argilla/src/argilla/client/login.py +++ b/argilla-v1/src/argilla_v1/client/login.py @@ -16,9 +16,9 @@ from pathlib import Path from typing import Dict, Optional -from argilla.client.sdk.commons.errors import HttpResponseError, UnauthorizedApiError -from argilla.client.singleton import init -from argilla.pydantic_v1 import AnyHttpUrl, BaseModel +from argilla_v1.client.sdk.commons.errors import HttpResponseError, UnauthorizedApiError +from argilla_v1.client.singleton import init +from argilla_v1.pydantic_v1 import AnyHttpUrl, BaseModel cache_dir_env = os.environ.get("ARGILLA_CACHE_DIR") if cache_dir_env: diff --git a/argilla/src/argilla/client/metrics/__init__.py b/argilla-v1/src/argilla_v1/client/metrics/__init__.py similarity index 100% rename from argilla/src/argilla/client/metrics/__init__.py rename to argilla-v1/src/argilla_v1/client/metrics/__init__.py diff --git a/argilla/src/argilla/client/metrics/models.py b/argilla-v1/src/argilla_v1/client/metrics/models.py similarity index 92% rename from argilla/src/argilla/client/metrics/models.py rename to argilla-v1/src/argilla_v1/client/metrics/models.py index db70c6aafc..e7e57ded10 100644 --- a/argilla/src/argilla/client/metrics/models.py +++ b/argilla-v1/src/argilla_v1/client/metrics/models.py @@ -14,7 +14,7 @@ from typing import Any, Dict -from argilla.client.sdk.metrics.models import MetricInfo +from argilla_v1.client.sdk.metrics.models import MetricInfo class MetricResults(MetricInfo): diff --git a/argilla/src/argilla/client/models.py b/argilla-v1/src/argilla_v1/client/models.py similarity index 98% rename from argilla/src/argilla/client/models.py rename to argilla-v1/src/argilla_v1/client/models.py index ba54417e6b..f4e0d8d875 100644 --- a/argilla/src/argilla/client/models.py +++ b/argilla-v1/src/argilla_v1/client/models.py @@ -16,6 +16,7 @@ """ This module contains the data models for the interface """ + import datetime import logging import uuid @@ -26,10 +27,10 @@ import pandas as pd from deprecated import deprecated -from argilla import _messages -from argilla._constants import DEFAULT_MAX_KEYWORD_LENGTH -from argilla.pydantic_v1 import BaseModel, Field, PrivateAttr, root_validator, validator -from argilla.utils.span_utils import SpanUtils +from argilla_v1 import _messages +from argilla_v1._constants import DEFAULT_MAX_KEYWORD_LENGTH +from argilla_v1.pydantic_v1 import BaseModel, Field, PrivateAttr, root_validator, validator +from argilla_v1.utils.span_utils import SpanUtils _LOGGER = logging.getLogger(__name__) @@ -264,7 +265,7 @@ class TextClassificationRecord(_Validators): This attribute will be ignored when using `rg.log`. Examples: >>> # Single text input - >>> import argilla as rg + >>> import argilla_v1 as rg >>> record = rg.TextClassificationRecord( ... text="My first argilla example", ... prediction=[('eng', 0.9), ('esp', 0.1)], @@ -383,7 +384,7 @@ class TokenClassificationRecord(_Validators): READ ONLY! Relevant record keywords/terms for provided query when using `rg.load`. This attribute will be ignored when using `rg.log`. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> record = rg.TokenClassificationRecord( ... text = "Michael is a professor at Harvard", ... tokens = ["Michael", "is", "a", "professor", "at", "Harvard"], @@ -590,7 +591,7 @@ class Text2TextRecord(_Validators): This attribute will be ignored when using `rg.log`. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> record = rg.Text2TextRecord( ... text="My name is Sarah and I love my dog.", ... prediction=["Je m'appelle Sarah et j'aime mon chien."], diff --git a/argilla/src/argilla/client/sdk/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/__init__.py diff --git a/argilla/src/argilla/client/sdk/_helpers.py b/argilla-v1/src/argilla_v1/client/sdk/_helpers.py similarity index 90% rename from argilla/src/argilla/client/sdk/_helpers.py rename to argilla-v1/src/argilla_v1/client/sdk/_helpers.py index 5683f584cd..3a1af16374 100644 --- a/argilla/src/argilla/client/sdk/_helpers.py +++ b/argilla-v1/src/argilla_v1/client/sdk/_helpers.py @@ -16,9 +16,9 @@ import httpx -from argilla.client.sdk.commons.errors import WrongResponseError -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.commons.errors import WrongResponseError +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response def build_raw_response(response: httpx.Response) -> Response[Union[Dict[str, Any], ErrorMessage, HTTPValidationError]]: diff --git a/argilla/src/argilla/client/sdk/client.py b/argilla-v1/src/argilla_v1/client/sdk/client.py similarity index 97% rename from argilla/src/argilla/client/sdk/client.py rename to argilla-v1/src/argilla_v1/client/sdk/client.py index 8018e9ebca..88c7e252c9 100644 --- a/argilla/src/argilla/client/sdk/client.py +++ b/argilla-v1/src/argilla_v1/client/sdk/client.py @@ -15,7 +15,6 @@ import dataclasses import datetime import functools -import inspect import json import uuid from json import JSONEncoder @@ -24,9 +23,9 @@ import httpx -from argilla._constants import API_KEY_HEADER_NAME -from argilla.client.sdk._helpers import build_raw_response -from argilla.client.sdk.commons.errors import BaseClientError +from argilla_v1._constants import API_KEY_HEADER_NAME +from argilla_v1.client.sdk._helpers import build_raw_response +from argilla_v1.client.sdk.commons.errors import BaseClientError @dataclasses.dataclass diff --git a/argilla/src/argilla/client/sdk/commons/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/commons/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/commons/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/commons/__init__.py diff --git a/argilla/src/argilla/client/sdk/commons/api.py b/argilla-v1/src/argilla_v1/client/sdk/commons/api.py similarity index 79% rename from argilla/src/argilla/client/sdk/commons/api.py rename to argilla-v1/src/argilla_v1/client/sdk/commons/api.py index a36e0c6195..e2893fc94f 100644 --- a/argilla/src/argilla/client/sdk/commons/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/commons/api.py @@ -25,18 +25,16 @@ # 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 json -from typing import Any, Dict, List, Optional, Type, TypeVar, Union +from typing import List, Type, TypeVar, Union import httpx -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.errors import GenericApiError -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import BulkResponse, ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.text2text.models import Text2TextBulkData -from argilla.client.sdk.text_classification.models import TextClassificationBulkData -from argilla.client.sdk.token_classification.models import TokenClassificationBulkData +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import BulkResponse, ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.text2text.models import Text2TextBulkData +from argilla_v1.client.sdk.text_classification.models import TextClassificationBulkData +from argilla_v1.client.sdk.token_classification.models import TokenClassificationBulkData _TASK_TO_ENDPOINT = { TextClassificationBulkData: "TextClassification", diff --git a/argilla/src/argilla/client/sdk/commons/errors.py b/argilla-v1/src/argilla_v1/client/sdk/commons/errors.py similarity index 100% rename from argilla/src/argilla/client/sdk/commons/errors.py rename to argilla-v1/src/argilla_v1/client/sdk/commons/errors.py diff --git a/argilla/src/argilla/client/sdk/commons/errors_handler.py b/argilla-v1/src/argilla_v1/client/sdk/commons/errors_handler.py similarity index 97% rename from argilla/src/argilla/client/sdk/commons/errors_handler.py rename to argilla-v1/src/argilla_v1/client/sdk/commons/errors_handler.py index 9b425b24db..a265d15168 100644 --- a/argilla/src/argilla/client/sdk/commons/errors_handler.py +++ b/argilla-v1/src/argilla_v1/client/sdk/commons/errors_handler.py @@ -16,7 +16,7 @@ import httpx -from argilla.client.sdk.commons.errors import ( +from argilla_v1.client.sdk.commons.errors import ( AlreadyExistsApiError, BadRequestApiError, ForbiddenApiError, diff --git a/argilla/src/argilla/client/sdk/commons/models.py b/argilla-v1/src/argilla_v1/client/sdk/commons/models.py similarity index 95% rename from argilla/src/argilla/client/sdk/commons/models.py rename to argilla-v1/src/argilla_v1/client/sdk/commons/models.py index 9cfcd422d3..26b455a6fc 100644 --- a/argilla/src/argilla/client/sdk/commons/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/commons/models.py @@ -18,9 +18,9 @@ from typing import TYPE_CHECKING, Any, Dict, Generic, List, MutableMapping, Optional, TypeVar, Union from uuid import uuid4 -from argilla.client.models import Vectors as ClientVectors -from argilla.pydantic_v1 import BaseModel, Field, validator -from argilla.pydantic_v1.generics import GenericModel +from argilla_v1.client.models import Vectors as ClientVectors +from argilla_v1.pydantic_v1 import BaseModel, Field, validator +from argilla_v1.pydantic_v1.generics import GenericModel if TYPE_CHECKING: from httpx import Response as HTTPXResponse diff --git a/argilla/src/argilla/client/sdk/datasets/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/datasets/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/datasets/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/datasets/__init__.py diff --git a/argilla/src/argilla/client/sdk/datasets/api.py b/argilla-v1/src/argilla_v1/client/sdk/datasets/api.py similarity index 90% rename from argilla/src/argilla/client/sdk/datasets/api.py rename to argilla-v1/src/argilla_v1/client/sdk/datasets/api.py index ba73d765e8..cc8c51ef9c 100644 --- a/argilla/src/argilla/client/sdk/datasets/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/datasets/api.py @@ -14,15 +14,15 @@ # limitations under the License. from functools import lru_cache -from typing import List, Optional, Union +from typing import List, Optional import httpx -from argilla._constants import WORKSPACE_HEADER_NAME -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import Response -from argilla.client.sdk.datasets.models import CopyDatasetRequest, Dataset +from argilla_v1._constants import WORKSPACE_HEADER_NAME +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import Response +from argilla_v1.client.sdk.datasets.models import CopyDatasetRequest, Dataset @lru_cache(maxsize=None) diff --git a/argilla/src/argilla/client/sdk/datasets/models.py b/argilla-v1/src/argilla_v1/client/sdk/datasets/models.py similarity index 96% rename from argilla/src/argilla/client/sdk/datasets/models.py rename to argilla-v1/src/argilla_v1/client/sdk/datasets/models.py index 7cc5e7f67e..70f7a7c262 100644 --- a/argilla/src/argilla/client/sdk/datasets/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/datasets/models.py @@ -17,7 +17,7 @@ from enum import Enum from typing import Any, Dict, Optional -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.pydantic_v1 import BaseModel, Field class TaskType(str, Enum): diff --git a/argilla/src/argilla/client/sdk/metrics/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/metrics/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/metrics/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/metrics/__init__.py diff --git a/argilla/src/argilla/client/sdk/metrics/api.py b/argilla-v1/src/argilla_v1/client/sdk/metrics/api.py similarity index 85% rename from argilla/src/argilla/client/sdk/metrics/api.py rename to argilla-v1/src/argilla_v1/client/sdk/metrics/api.py index e9e9d77e4c..163c7abeff 100644 --- a/argilla/src/argilla/client/sdk/metrics/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/metrics/api.py @@ -16,11 +16,11 @@ import httpx -from argilla.client.sdk._helpers import build_raw_response -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.api import build_list_response -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.metrics.models import MetricInfo +from argilla_v1.client.sdk._helpers import build_raw_response +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.api import build_list_response +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.metrics.models import MetricInfo def get_dataset_metrics( diff --git a/argilla/src/argilla/client/sdk/metrics/models.py b/argilla-v1/src/argilla_v1/client/sdk/metrics/models.py similarity index 94% rename from argilla/src/argilla/client/sdk/metrics/models.py rename to argilla-v1/src/argilla_v1/client/sdk/metrics/models.py index c01e0ee027..6b9783eb77 100644 --- a/argilla/src/argilla/client/sdk/metrics/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/metrics/models.py @@ -14,7 +14,7 @@ from typing import Optional -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.pydantic_v1 import BaseModel, Field class MetricInfo(BaseModel): diff --git a/argilla/src/argilla/client/sdk/text2text/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/text2text/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/text2text/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/text2text/__init__.py diff --git a/argilla/src/argilla/client/sdk/text2text/models.py b/argilla-v1/src/argilla_v1/client/sdk/text2text/models.py similarity index 95% rename from argilla/src/argilla/client/sdk/text2text/models.py rename to argilla-v1/src/argilla_v1/client/sdk/text2text/models.py index d6e7a7a34a..061d18271d 100644 --- a/argilla/src/argilla/client/sdk/text2text/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/text2text/models.py @@ -16,8 +16,8 @@ from datetime import datetime from typing import Dict, List, Optional, Union -from argilla.client.models import Text2TextRecord as ClientText2TextRecord -from argilla.client.sdk.commons.models import ( +from argilla_v1.client.models import Text2TextRecord as ClientText2TextRecord +from argilla_v1.client.sdk.commons.models import ( MACHINE_NAME, BaseAnnotation, BaseRecord, @@ -27,7 +27,7 @@ TaskStatus, UpdateDatasetRequest, ) -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.pydantic_v1 import BaseModel, Field class Text2TextPrediction(BaseModel): diff --git a/argilla/src/argilla/client/sdk/text_classification/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/text_classification/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/text_classification/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/text_classification/__init__.py diff --git a/argilla/src/argilla/client/sdk/text_classification/api.py b/argilla-v1/src/argilla_v1/client/sdk/text_classification/api.py similarity index 88% rename from argilla/src/argilla/client/sdk/text_classification/api.py rename to argilla-v1/src/argilla_v1/client/sdk/text_classification/api.py index d0c921068d..055ef136a7 100644 --- a/argilla/src/argilla/client/sdk/text_classification/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/text_classification/api.py @@ -12,19 +12,17 @@ # 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. -from typing import List, Optional, Union +from typing import List, Union import httpx -from argilla.client.sdk._helpers import build_typed_response -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.api import build_list_response -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.text_classification.models import ( +from argilla_v1.client.sdk._helpers import build_typed_response +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.api import build_list_response +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.text_classification.models import ( LabelingRule, LabelingRuleMetricsSummary, - TextClassificationQuery, - TextClassificationRecord, ) diff --git a/argilla/src/argilla/client/sdk/text_classification/models.py b/argilla-v1/src/argilla_v1/client/sdk/text_classification/models.py similarity index 95% rename from argilla/src/argilla/client/sdk/text_classification/models.py rename to argilla-v1/src/argilla_v1/client/sdk/text_classification/models.py index eb6e64c41f..afc36d8d72 100644 --- a/argilla/src/argilla/client/sdk/text_classification/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/text_classification/models.py @@ -15,9 +15,9 @@ from datetime import datetime from typing import Dict, List, Optional, Union -from argilla.client.models import TextClassificationRecord as ClientTextClassificationRecord -from argilla.client.models import TokenAttributions as ClientTokenAttributions -from argilla.client.sdk.commons.models import ( +from argilla_v1.client.models import TextClassificationRecord as ClientTextClassificationRecord +from argilla_v1.client.models import TokenAttributions as ClientTokenAttributions +from argilla_v1.client.sdk.commons.models import ( MACHINE_NAME, BaseAnnotation, BaseRecord, @@ -27,7 +27,7 @@ TaskStatus, UpdateDatasetRequest, ) -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.pydantic_v1 import BaseModel, Field class ClassPrediction(BaseModel): diff --git a/argilla/src/argilla/client/sdk/token_classification/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/token_classification/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/token_classification/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/token_classification/__init__.py diff --git a/argilla/src/argilla/client/sdk/token_classification/models.py b/argilla-v1/src/argilla_v1/client/sdk/token_classification/models.py similarity index 94% rename from argilla/src/argilla/client/sdk/token_classification/models.py rename to argilla-v1/src/argilla_v1/client/sdk/token_classification/models.py index a0f4becd17..8aa286db6c 100644 --- a/argilla/src/argilla/client/sdk/token_classification/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/token_classification/models.py @@ -15,9 +15,9 @@ from datetime import datetime from typing import Dict, List, Optional, Union -from argilla._constants import DEFAULT_MAX_KEYWORD_LENGTH -from argilla.client.models import TokenClassificationRecord as ClientTokenClassificationRecord -from argilla.client.sdk.commons.models import ( +from argilla_v1._constants import DEFAULT_MAX_KEYWORD_LENGTH +from argilla_v1.client.models import TokenClassificationRecord as ClientTokenClassificationRecord +from argilla_v1.client.sdk.commons.models import ( MACHINE_NAME, BaseAnnotation, BaseRecord, @@ -27,7 +27,7 @@ TaskStatus, UpdateDatasetRequest, ) -from argilla.pydantic_v1 import BaseModel, Field, validator +from argilla_v1.pydantic_v1 import BaseModel, Field, validator class EntitySpan(BaseModel): diff --git a/argilla/src/argilla/client/sdk/users/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/users/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/users/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/users/__init__.py diff --git a/argilla/src/argilla/client/sdk/users/api.py b/argilla-v1/src/argilla_v1/client/sdk/users/api.py similarity index 95% rename from argilla/src/argilla/client/sdk/users/api.py rename to argilla-v1/src/argilla_v1/client/sdk/users/api.py index ae45c8130a..b70dcfda0b 100644 --- a/argilla/src/argilla/client/sdk/users/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/users/api.py @@ -17,10 +17,10 @@ import httpx -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.users.models import UserCreateModel, UserModel, UserRole +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.users.models import UserCreateModel, UserModel, UserRole # TODO(alvarobartt,frascuchon): use ONLY `httpx.Client` instead of `AuthenticatedClient` and diff --git a/argilla/src/argilla/client/sdk/users/models.py b/argilla-v1/src/argilla_v1/client/sdk/users/models.py similarity index 96% rename from argilla/src/argilla/client/sdk/users/models.py rename to argilla-v1/src/argilla_v1/client/sdk/users/models.py index 8d57d7b38a..1d05ac3b74 100644 --- a/argilla/src/argilla/client/sdk/users/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/users/models.py @@ -17,7 +17,7 @@ from typing import List, Optional from uuid import UUID -from argilla.pydantic_v1 import BaseModel, Field +from argilla_v1.pydantic_v1 import BaseModel, Field class UserRole(str, Enum): diff --git a/argilla/src/argilla/client/sdk/v1/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/datasets/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/datasets/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/datasets/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/datasets/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/datasets/api.py b/argilla-v1/src/argilla_v1/client/sdk/v1/datasets/api.py similarity index 99% rename from argilla/src/argilla/client/sdk/v1/datasets/api.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/datasets/api.py index cb005770e7..d3f6ec50dd 100644 --- a/argilla/src/argilla/client/sdk/v1/datasets/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/datasets/api.py @@ -18,9 +18,9 @@ import httpx -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.v1.datasets.models import ( +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.v1.datasets.models import ( FeedbackDatasetModel, FeedbackFieldModel, FeedbackListVectorSettingsModel, diff --git a/argilla/src/argilla/client/sdk/v1/datasets/models.py b/argilla-v1/src/argilla_v1/client/sdk/v1/datasets/models.py similarity index 98% rename from argilla/src/argilla/client/sdk/v1/datasets/models.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/datasets/models.py index 51c82ed76c..fd1eee8491 100644 --- a/argilla/src/argilla/client/sdk/v1/datasets/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/datasets/models.py @@ -18,7 +18,7 @@ from typing import Any, Dict, List, Literal, Optional, Union from uuid import UUID -from argilla.pydantic_v1 import BaseModel, Field, StrictStr, conint, root_validator +from argilla_v1.pydantic_v1 import BaseModel, Field, StrictStr, conint, root_validator class FeedbackDatasetModel(BaseModel): diff --git a/argilla/src/argilla/client/sdk/v1/metadata_properties/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/metadata_properties/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/metadata_properties/api.py b/argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/api.py similarity index 92% rename from argilla/src/argilla/client/sdk/v1/metadata_properties/api.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/api.py index b2a74d55be..6012c98056 100644 --- a/argilla/src/argilla/client/sdk/v1/metadata_properties/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/api.py @@ -17,9 +17,9 @@ import httpx -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.v1.metadata_properties.models import FeedbackMetadataPropertyModel +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.v1.metadata_properties.models import FeedbackMetadataPropertyModel def delete_metadata_property( diff --git a/argilla/src/argilla/client/sdk/v1/metadata_properties/models.py b/argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/models.py similarity index 89% rename from argilla/src/argilla/client/sdk/v1/metadata_properties/models.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/models.py index e067e12fdd..c669f19729 100644 --- a/argilla/src/argilla/client/sdk/v1/metadata_properties/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/metadata_properties/models.py @@ -16,4 +16,4 @@ and `argilla.client.sdk.v1.datasets` modules, so those should be equal, and defined in `argilla.client.sdk.v1.datasets.models` module instead.""" -from argilla.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel # noqa: F401 +from argilla_v1.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel # noqa: F401 diff --git a/argilla/src/argilla/client/sdk/v1/records/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/records/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/records/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/records/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/records/api.py b/argilla-v1/src/argilla_v1/client/sdk/v1/records/api.py similarity index 94% rename from argilla/src/argilla/client/sdk/v1/records/api.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/records/api.py index 418b0aa932..4cd246993a 100644 --- a/argilla/src/argilla/client/sdk/v1/records/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/records/api.py @@ -17,10 +17,10 @@ import httpx -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.v1.datasets.models import FeedbackSuggestionModel -from argilla.client.sdk.v1.records.models import FeedbackItemModel +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.v1.datasets.models import FeedbackSuggestionModel +from argilla_v1.client.sdk.v1.records.models import FeedbackItemModel def update_record( diff --git a/argilla/src/argilla/client/sdk/v1/records/models.py b/argilla-v1/src/argilla_v1/client/sdk/v1/records/models.py similarity index 90% rename from argilla/src/argilla/client/sdk/v1/records/models.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/records/models.py index 09910ebd9f..74470a340a 100644 --- a/argilla/src/argilla/client/sdk/v1/records/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/records/models.py @@ -16,4 +16,4 @@ and `argilla.client.sdk.v1.datasets` modules, so those should be equal, and defined in `argilla.client.sdk.v1.datasets.models` module instead.""" -from argilla.client.sdk.v1.datasets.models import FeedbackItemModel # noqa: F401 +from argilla_v1.client.sdk.v1.datasets.models import FeedbackItemModel # noqa: F401 diff --git a/argilla/src/argilla/client/sdk/v1/suggestions/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/suggestions/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/suggestions/api.py b/argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/api.py similarity index 86% rename from argilla/src/argilla/client/sdk/v1/suggestions/api.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/api.py index 965b269911..1ccc8ee9b0 100644 --- a/argilla/src/argilla/client/sdk/v1/suggestions/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/api.py @@ -17,9 +17,9 @@ import httpx -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.v1.suggestions.models import SuggestionModel +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.v1.suggestions.models import SuggestionModel def delete_suggestion( diff --git a/argilla/src/argilla/client/sdk/v1/suggestions/models.py b/argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/models.py similarity index 95% rename from argilla/src/argilla/client/sdk/v1/suggestions/models.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/models.py index 9044e2735c..07e0f9c0cf 100644 --- a/argilla/src/argilla/client/sdk/v1/suggestions/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/suggestions/models.py @@ -15,7 +15,7 @@ from typing import Any, Literal, Optional from uuid import UUID -from argilla.pydantic_v1 import BaseModel +from argilla_v1.pydantic_v1 import BaseModel class SuggestionModel(BaseModel): diff --git a/argilla/src/argilla/client/sdk/v1/users/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/users/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/users/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/users/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/users/api.py b/argilla-v1/src/argilla_v1/client/sdk/v1/users/api.py similarity index 87% rename from argilla/src/argilla/client/sdk/v1/users/api.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/users/api.py index f81e128350..ce9e70ce5e 100644 --- a/argilla/src/argilla/client/sdk/v1/users/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/users/api.py @@ -17,9 +17,9 @@ import httpx -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel def list_user_workspaces( diff --git a/argilla/src/argilla/client/sdk/v1/users/models.py b/argilla-v1/src/argilla_v1/client/sdk/v1/users/models.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/users/models.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/users/models.py diff --git a/argilla/src/argilla/client/sdk/v1/vectors_settings/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/vectors_settings/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/vectors_settings/api.py b/argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/api.py similarity index 88% rename from argilla/src/argilla/client/sdk/v1/vectors_settings/api.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/api.py index 66db2980e8..bbbd9125b9 100644 --- a/argilla/src/argilla/client/sdk/v1/vectors_settings/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/api.py @@ -12,18 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING, Optional, Union +from typing import TYPE_CHECKING, Union -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import Response -from argilla.client.sdk.v1.vectors_settings.models import VectorSettingsModel +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import Response +from argilla_v1.client.sdk.v1.vectors_settings.models import VectorSettingsModel if TYPE_CHECKING: from uuid import UUID import httpx - from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError + from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError def update_vector_settings( diff --git a/argilla/src/argilla/client/sdk/v1/vectors_settings/models.py b/argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/models.py similarity index 94% rename from argilla/src/argilla/client/sdk/v1/vectors_settings/models.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/models.py index da6c99eb59..841b1fe140 100644 --- a/argilla/src/argilla/client/sdk/v1/vectors_settings/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/vectors_settings/models.py @@ -15,7 +15,7 @@ from datetime import datetime from uuid import UUID -from argilla.pydantic_v1 import BaseModel +from argilla_v1.pydantic_v1 import BaseModel class VectorSettingsModel(BaseModel): diff --git a/argilla/src/argilla/client/sdk/v1/workspaces/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/v1/workspaces/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/__init__.py diff --git a/argilla/src/argilla/client/sdk/v1/workspaces/api.py b/argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/api.py similarity index 92% rename from argilla/src/argilla/client/sdk/v1/workspaces/api.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/api.py index 27336393f8..78767bee73 100644 --- a/argilla/src/argilla/client/sdk/v1/workspaces/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/api.py @@ -17,9 +17,9 @@ import httpx -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel def get_workspace(client: httpx.Client, id: UUID) -> Response[Union[WorkspaceModel, ErrorMessage, HTTPValidationError]]: diff --git a/argilla/src/argilla/client/sdk/v1/workspaces/models.py b/argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/models.py similarity index 94% rename from argilla/src/argilla/client/sdk/v1/workspaces/models.py rename to argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/models.py index 8f3e7891fa..58417c5f2f 100644 --- a/argilla/src/argilla/client/sdk/v1/workspaces/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/v1/workspaces/models.py @@ -15,7 +15,7 @@ from datetime import datetime from uuid import UUID -from argilla.pydantic_v1 import BaseModel +from argilla_v1.pydantic_v1 import BaseModel class WorkspaceModel(BaseModel): diff --git a/argilla/src/argilla/client/sdk/workspaces/__init__.py b/argilla-v1/src/argilla_v1/client/sdk/workspaces/__init__.py similarity index 100% rename from argilla/src/argilla/client/sdk/workspaces/__init__.py rename to argilla-v1/src/argilla_v1/client/sdk/workspaces/__init__.py diff --git a/argilla/src/argilla/client/sdk/workspaces/api.py b/argilla-v1/src/argilla_v1/client/sdk/workspaces/api.py similarity index 93% rename from argilla/src/argilla/client/sdk/workspaces/api.py rename to argilla-v1/src/argilla_v1/client/sdk/workspaces/api.py index 56fcb24fae..2c81574ec9 100644 --- a/argilla/src/argilla/client/sdk/workspaces/api.py +++ b/argilla-v1/src/argilla_v1/client/sdk/workspaces/api.py @@ -17,10 +17,10 @@ import httpx -from argilla.client.sdk.commons.errors_handler import handle_response_error -from argilla.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response -from argilla.client.sdk.users.models import UserModel -from argilla.client.sdk.workspaces.models import WorkspaceModel +from argilla_v1.client.sdk.commons.errors_handler import handle_response_error +from argilla_v1.client.sdk.commons.models import ErrorMessage, HTTPValidationError, Response +from argilla_v1.client.sdk.users.models import UserModel +from argilla_v1.client.sdk.workspaces.models import WorkspaceModel def create_workspace( diff --git a/argilla/src/argilla/client/sdk/workspaces/models.py b/argilla-v1/src/argilla_v1/client/sdk/workspaces/models.py similarity index 94% rename from argilla/src/argilla/client/sdk/workspaces/models.py rename to argilla-v1/src/argilla_v1/client/sdk/workspaces/models.py index 8f3e7891fa..58417c5f2f 100644 --- a/argilla/src/argilla/client/sdk/workspaces/models.py +++ b/argilla-v1/src/argilla_v1/client/sdk/workspaces/models.py @@ -15,7 +15,7 @@ from datetime import datetime from uuid import UUID -from argilla.pydantic_v1 import BaseModel +from argilla_v1.pydantic_v1 import BaseModel class WorkspaceModel(BaseModel): diff --git a/argilla/src/argilla/client/singleton.py b/argilla-v1/src/argilla_v1/client/singleton.py similarity index 98% rename from argilla/src/argilla/client/singleton.py rename to argilla-v1/src/argilla_v1/client/singleton.py index 9e5ae78f32..56ffd3ca30 100644 --- a/argilla/src/argilla/client/singleton.py +++ b/argilla-v1/src/argilla_v1/client/singleton.py @@ -14,7 +14,7 @@ from typing import Any, Dict, Optional -from argilla.client.client import Argilla +from argilla_v1.client.client import Argilla class ArgillaSingleton: @@ -85,7 +85,7 @@ def init( available arguments, see https://www.python-httpx.org/api/#client. Defaults to `None`. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> >>> rg.init(api_url="http://localhost:9090", api_key="4AkeAPIk3Y") >>> # Customizing request headers diff --git a/argilla/src/argilla/client/users.py b/argilla-v1/src/argilla_v1/client/users.py similarity index 93% rename from argilla/src/argilla/client/users.py rename to argilla-v1/src/argilla_v1/client/users.py index b4ed6805b1..8d236d469b 100644 --- a/argilla/src/argilla/client/users.py +++ b/argilla-v1/src/argilla_v1/client/users.py @@ -17,24 +17,24 @@ from typing import TYPE_CHECKING, Iterator, List, Optional, Union from uuid import UUID -from argilla.client.sdk.commons.errors import ( +from argilla_v1.client.sdk.commons.errors import ( AlreadyExistsApiError, BaseClientError, NotFoundApiError, ValidationApiError, ) -from argilla.client.sdk.users import api as users_api -from argilla.client.sdk.users.models import UserModel, UserRole -from argilla.client.sdk.v1.users import api as users_api_v1 -from argilla.client.sdk.v1.workspaces import api as workspaces_api_v1 -from argilla.client.singleton import active_client -from argilla.client.utils import allowed_for_roles +from argilla_v1.client.sdk.users import api as users_api +from argilla_v1.client.sdk.users.models import UserModel, UserRole +from argilla_v1.client.sdk.v1.users import api as users_api_v1 +from argilla_v1.client.sdk.v1.workspaces import api as workspaces_api_v1 +from argilla_v1.client.singleton import active_client +from argilla_v1.client.utils import allowed_for_roles if TYPE_CHECKING: import httpx - from argilla.client.sdk.client import AuthenticatedClient - from argilla.client.sdk.v1.workspaces.models import WorkspaceModel + from argilla_v1.client.sdk.client import AuthenticatedClient + from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel class User: @@ -59,7 +59,7 @@ class User: updated_at: the datetime when the user was last updated. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> user = rg.User.from_name("my-user") # or `User.from_id("...")` >>> print(user) User(id='...', username='my-user', role='annotator', first_name='Luke', last_name="Skywalker', full_name='Luke Skywalker', role='annotator', api_key='...', inserted_at=datetime.datetime(2021, 8, 31, 10, 0, 0), updated_at=datetime.datetime(2021, 8, 31, 10, 0, 0)) @@ -165,7 +165,7 @@ def __active_client(httpx: bool = True) -> Union["httpx.Client", "AuthenticatedC client = client.httpx return client except Exception as e: - raise RuntimeError(f"The `rg.active_client()` is not available or not responding.") from e + raise RuntimeError("The `rg.active_client()` is not available or not responding.") from e @allowed_for_roles(roles=[UserRole.owner]) def delete(self) -> None: @@ -176,7 +176,7 @@ def delete(self) -> None: RuntimeError: if the user cannot be deleted from Argilla. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> user = rg.User.from_name("my-user") >>> user.delete() """ @@ -230,7 +230,7 @@ def create( RuntimeError: if the user cannot be created in Argilla. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> user = rg.User.create("my-user", "my-password", role="admin") """ if not first_name: @@ -284,7 +284,7 @@ def from_id(cls, id: UUID) -> "User": RuntimeError: if there was an error while retrieving the user. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> user = rg.User.from_id("my-user") """ client = cls.__active_client() @@ -317,7 +317,7 @@ def from_name(cls, name: str) -> "User": RuntimeError: if there was an error while retrieving the user. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> user = rg.User.from_name("my-user") """ client = cls.__active_client() @@ -351,7 +351,7 @@ def me(cls) -> "User": RuntimeError: if there was an error while retrieving the current user. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> user = rg.User.me() """ client = cls.__active_client(httpx=False) @@ -373,7 +373,7 @@ def list(cls) -> Iterator["User"]: RuntimeError: if there was an error while listing the users. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> for user in rg.User.list(): ... print(user) """ diff --git a/argilla/src/argilla/client/utils.py b/argilla-v1/src/argilla_v1/client/utils.py similarity index 94% rename from argilla/src/argilla/client/utils.py rename to argilla-v1/src/argilla_v1/client/utils.py index a7ccd542bf..be9160fdd0 100644 --- a/argilla/src/argilla/client/utils.py +++ b/argilla-v1/src/argilla_v1/client/utils.py @@ -22,10 +22,10 @@ except ImportError: from typing_extensions import ParamSpec -from argilla.client.apis.status import Status -from argilla.client.sdk.users import api as users_api -from argilla.client.sdk.users.models import UserRole -from argilla.client.singleton import active_client +from argilla_v1.client.apis.status import Status +from argilla_v1.client.sdk.users import api as users_api +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.singleton import active_client _P = ParamSpec("_P") _R = TypeVar("_R") diff --git a/argilla/src/argilla/client/workspaces.py b/argilla-v1/src/argilla_v1/client/workspaces.py similarity index 93% rename from argilla/src/argilla/client/workspaces.py rename to argilla-v1/src/argilla_v1/client/workspaces.py index ffb793957a..119097452d 100644 --- a/argilla/src/argilla/client/workspaces.py +++ b/argilla-v1/src/argilla_v1/client/workspaces.py @@ -17,25 +17,25 @@ from typing import TYPE_CHECKING, Iterator, List, Optional, Union from uuid import UUID -from argilla.client.sdk.commons.errors import ( +from argilla_v1.client.sdk.commons.errors import ( AlreadyExistsApiError, BaseClientError, NotFoundApiError, ValidationApiError, ) -from argilla.client.sdk.users.models import UserRole -from argilla.client.sdk.v1.workspaces import api as workspaces_api_v1 -from argilla.client.sdk.v1.workspaces.models import WorkspaceModel as WorkspaceModelV1 -from argilla.client.sdk.workspaces import api as workspaces_api -from argilla.client.sdk.workspaces.models import WorkspaceModel as WorkspaceModelV0 -from argilla.client.singleton import active_client -from argilla.client.users import User -from argilla.client.utils import allowed_for_roles +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.v1.workspaces import api as workspaces_api_v1 +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel as WorkspaceModelV1 +from argilla_v1.client.sdk.workspaces import api as workspaces_api +from argilla_v1.client.sdk.workspaces.models import WorkspaceModel as WorkspaceModelV0 +from argilla_v1.client.singleton import active_client +from argilla_v1.client.users import User +from argilla_v1.client.utils import allowed_for_roles if TYPE_CHECKING: import httpx - from argilla.client.sdk.users.models import UserModel + from argilla_v1.client.sdk.users.models import UserModel class Workspace: @@ -57,7 +57,7 @@ class Workspace: updated_at: the datetime when the workspace was last updated. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspace = rg.Workspace.from_name("my-workspace") # or `Workspace.from_id("...")` >>> workspace.add_user("my-user") >>> print(workspace.users) @@ -141,7 +141,7 @@ def add_user(self, user_id: UUID) -> None: adding the user to the workspace. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspace = rg.Workspace.from_name("my-workspace") >>> workspace.add_user("my-user-id") """ @@ -190,7 +190,7 @@ def delete_user(self, user_id: UUID) -> None: while deleting it from the workspace. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspace = rg.Workspace.from_name("my-workspace") >>> workspace.delete_user("my-user-id") """ @@ -237,7 +237,7 @@ def delete(self) -> None: RuntimeError: if there was an unexpected error while deleting the user from the workspace. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspace = rg.Workspace.from_name("my-workspace") >>> workspace.delete() """ @@ -259,7 +259,7 @@ def __active_client() -> "httpx.Client": try: return active_client().http_client.httpx except Exception as e: - raise RuntimeError(f"The `rg.active_client()` is not available or not responding.") from e + raise RuntimeError("The `rg.active_client()` is not available or not responding.") from e @classmethod def _new_instance( @@ -287,7 +287,7 @@ def create(cls, name: str) -> "Workspace": A `Workspace` instance. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspace = rg.Workspace.create("my-workspace") """ client = cls.__active_client() @@ -315,7 +315,7 @@ def from_id(cls, id: UUID) -> "Workspace": RuntimeError: if there was an error while retrieving the workspace. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspace = rg.Workspace.from_id("my-workspace-id") """ client = cls.__active_client() @@ -351,7 +351,7 @@ def from_name(cls, name: str) -> "Workspace": ValueError: if the workspace with the provided name doesn't exist. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspace = rg.Workspace.from_name("my-workspace") """ client = cls.__active_client() @@ -381,7 +381,7 @@ def list(cls) -> Iterator["Workspace"]: RuntimeError: if there was an error while listing the workspaces. Examples: - >>> from argilla import rg + >>> from argilla_v1 import rg >>> workspaces = rg.Workspace.list() """ client = cls.__active_client() diff --git a/argilla-v1/src/argilla_v1/datasets/__init__.py b/argilla-v1/src/argilla_v1/datasets/__init__.py new file mode 100644 index 0000000000..bfa2facc68 --- /dev/null +++ b/argilla-v1/src/argilla_v1/datasets/__init__.py @@ -0,0 +1,77 @@ +# 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. +import logging +import warnings +from typing import Optional + +from argilla_v1.client import singleton +from argilla_v1.client.apis.datasets import Settings, TextClassificationSettings, TokenClassificationSettings + +__all__ = [TextClassificationSettings, TokenClassificationSettings, Settings] + +_LOGGER = logging.getLogger(__name__) + + +def load_dataset_settings(name: str, workspace: Optional[str] = None) -> Optional[Settings]: + """ + Loads the settings of a dataset + + Args: + name: The dataset name + workspace: The workspace name where the dataset belongs to + + Returns: + The dataset settings + """ + active_api = singleton.active_api() + datasets = active_api.datasets + + settings = datasets.load_settings(name, workspace=workspace) + if settings is None: + return None + else: + return settings + + +def configure_dataset_settings(name: str, settings: Settings, workspace: Optional[str] = None) -> None: + """ + Configures a dataset with a set of configured labels. If dataset does not + exist yet, an empty dataset will be created. + + A subset of settings can be provided. + + Args: + name: The dataset name + settings: The dataset settings + workspace: The workspace name where the dataset will belongs to + """ + active_api = singleton.active_api() + datasets = active_api.datasets + datasets.configure(name, workspace=workspace or active_api.get_workspace(), settings=settings) + + +def configure_dataset(name: str, settings: Settings, workspace: Optional[str] = None) -> None: + """ + Configures a dataset with a set of configured labels. If dataset does not + exist yet, an empty dataset will be created. + + A subset of settings can be provided. + + Args: + name: The dataset name + settings: The dataset settings + workspace: The workspace name where the dataset will belongs to + """ + warnings.warn("This method is deprecated. Use configure_dataset_settings instead.", DeprecationWarning) + return configure_dataset_settings(name, settings, workspace) diff --git a/argilla/src/argilla/errors.py b/argilla-v1/src/argilla_v1/errors.py similarity index 100% rename from argilla/src/argilla/errors.py rename to argilla-v1/src/argilla_v1/errors.py diff --git a/argilla/src/argilla/feedback/__init__.py b/argilla-v1/src/argilla_v1/feedback/__init__.py similarity index 79% rename from argilla/src/argilla/feedback/__init__.py rename to argilla-v1/src/argilla_v1/feedback/__init__.py index 8549a14470..3d91385e80 100644 --- a/argilla/src/argilla/feedback/__init__.py +++ b/argilla-v1/src/argilla_v1/feedback/__init__.py @@ -13,6 +13,6 @@ # limitations under the License. # !!! All modules used here must define the __all__ variable properly -from argilla.client.feedback import * # noqa -from argilla.client.feedback.dataset import FeedbackDataset # noqa -from argilla.client.feedback.schemas import * # noqa +from argilla_v1.client.feedback import * # noqa +from argilla_v1.client.feedback.dataset import FeedbackDataset # noqa +from argilla_v1.client.feedback.schemas import * # noqa diff --git a/argilla/src/argilla/labeling/__init__.py b/argilla-v1/src/argilla_v1/labeling/__init__.py similarity index 100% rename from argilla/src/argilla/labeling/__init__.py rename to argilla-v1/src/argilla_v1/labeling/__init__.py diff --git a/argilla/src/argilla/labeling/text_classification/__init__.py b/argilla-v1/src/argilla_v1/labeling/text_classification/__init__.py similarity index 100% rename from argilla/src/argilla/labeling/text_classification/__init__.py rename to argilla-v1/src/argilla_v1/labeling/text_classification/__init__.py diff --git a/argilla/src/argilla/labeling/text_classification/label_errors.py b/argilla-v1/src/argilla_v1/labeling/text_classification/label_errors.py similarity index 97% rename from argilla/src/argilla/labeling/text_classification/label_errors.py rename to argilla-v1/src/argilla_v1/labeling/text_classification/label_errors.py index 6983f67aca..2d86a3004e 100644 --- a/argilla/src/argilla/labeling/text_classification/label_errors.py +++ b/argilla-v1/src/argilla_v1/labeling/text_classification/label_errors.py @@ -12,7 +12,6 @@ # 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 logging import warnings from enum import Enum from typing import Dict, List, Optional, Tuple, Union @@ -20,9 +19,9 @@ import numpy as np from pkg_resources import parse_version -from argilla.client.datasets import DatasetForTextClassification -from argilla.client.models import TextClassificationRecord -from argilla.utils.dependency import requires_dependencies +from argilla_v1.client.datasets import DatasetForTextClassification +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.utils.dependency import requires_dependencies class SortBy(Enum): @@ -73,7 +72,7 @@ def find_label_errors( ValueError: If not supported kwargs are passed on, e.g. 'sorted_index_method'. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> records = rg.load("my_dataset") >>> records_with_label_errors = find_label_errors(records) """ diff --git a/argilla/src/argilla/labeling/text_classification/label_models.py b/argilla-v1/src/argilla_v1/labeling/text_classification/label_models.py similarity index 99% rename from argilla/src/argilla/labeling/text_classification/label_models.py rename to argilla-v1/src/argilla_v1/labeling/text_classification/label_models.py index 2517f57926..57ecb0cde8 100644 --- a/argilla/src/argilla/labeling/text_classification/label_models.py +++ b/argilla-v1/src/argilla_v1/labeling/text_classification/label_models.py @@ -19,9 +19,9 @@ import numpy as np -from argilla import DatasetForTextClassification, TextClassificationRecord -from argilla.labeling.text_classification.weak_labels import WeakLabels, WeakMultiLabels -from argilla.utils.dependency import requires_dependencies +from argilla_v1 import DatasetForTextClassification, TextClassificationRecord +from argilla_v1.labeling.text_classification.weak_labels import WeakLabels, WeakMultiLabels +from argilla_v1.utils.dependency import requires_dependencies _LOGGER = logging.getLogger(__name__) @@ -451,7 +451,7 @@ class Snorkel(LabelModel): Passed on to the `torch.Tensor.to()` calls. Examples: - >>> from argilla.labeling.text_classification import WeakLabels + >>> from argilla_v1.labeling.text_classification import WeakLabels >>> weak_labels = WeakLabels(dataset="my_dataset") >>> label_model = Snorkel(weak_labels) >>> label_model.fit() @@ -688,7 +688,7 @@ class FlyingSquid(LabelModel): `LabelModel `__. Examples: - >>> from argilla.labeling.text_classification import WeakLabels + >>> from argilla_v1.labeling.text_classification import WeakLabels >>> weak_labels = WeakLabels(dataset="my_dataset") >>> label_model = FlyingSquid(weak_labels) >>> label_model.fit() diff --git a/argilla/src/argilla/labeling/text_classification/rule.py b/argilla-v1/src/argilla_v1/labeling/text_classification/rule.py similarity index 96% rename from argilla/src/argilla/labeling/text_classification/rule.py rename to argilla-v1/src/argilla_v1/labeling/text_classification/rule.py index 86520ef9aa..37b3f376a2 100644 --- a/argilla/src/argilla/labeling/text_classification/rule.py +++ b/argilla-v1/src/argilla_v1/labeling/text_classification/rule.py @@ -14,11 +14,10 @@ # limitations under the License. from typing import Dict, List, Optional, Union -import argilla as rg -from argilla.client import singleton -from argilla.client.api import load -from argilla.client.models import TextClassificationRecord -from argilla.client.sdk.text_classification.models import LabelingRule +from argilla_v1.client import singleton +from argilla_v1.client.api import load +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.client.sdk.text_classification.models import LabelingRule class Rule: @@ -31,7 +30,7 @@ class Rule: `argilla.labeling.text_classification.WeakLabels` class. By default, we will use the ``query`` string. Examples: - >>> import argilla as rg + >>> import argilla_v1 as rg >>> urgent_rule = Rule(query="inputs.text:(urgent AND immediately)", label="urgent", name="urgent_rule") >>> not_urgent_rule = Rule(query="inputs.text:(NOT urgent) AND metadata.title_length>20", label="not urgent") >>> not_urgent_rule.apply("my_dataset") diff --git a/argilla/src/argilla/labeling/text_classification/weak_labels.py b/argilla-v1/src/argilla_v1/labeling/text_classification/weak_labels.py similarity index 99% rename from argilla/src/argilla/labeling/text_classification/weak_labels.py rename to argilla-v1/src/argilla_v1/labeling/text_classification/weak_labels.py index 3ef24a1336..dde53378b8 100644 --- a/argilla/src/argilla/labeling/text_classification/weak_labels.py +++ b/argilla-v1/src/argilla_v1/labeling/text_classification/weak_labels.py @@ -20,10 +20,10 @@ import pandas as pd from tqdm.auto import tqdm -from argilla import load -from argilla.client.datasets import DatasetForTextClassification -from argilla.client.models import TextClassificationRecord -from argilla.labeling.text_classification.rule import Rule, load_rules +from argilla_v1 import load +from argilla_v1.client.datasets import DatasetForTextClassification +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.labeling.text_classification.rule import Rule, load_rules def _add_docstr(string: str): diff --git a/argilla/src/argilla/listeners/__init__.py b/argilla-v1/src/argilla_v1/listeners/__init__.py similarity index 100% rename from argilla/src/argilla/listeners/__init__.py rename to argilla-v1/src/argilla_v1/listeners/__init__.py diff --git a/argilla/src/argilla/listeners/listener.py b/argilla-v1/src/argilla_v1/listeners/listener.py similarity index 96% rename from argilla/src/argilla/listeners/listener.py rename to argilla-v1/src/argilla_v1/listeners/listener.py index ebdb38f204..dce1dd5d4f 100644 --- a/argilla/src/argilla/listeners/listener.py +++ b/argilla-v1/src/argilla_v1/listeners/listener.py @@ -22,10 +22,10 @@ import schedule -import argilla -from argilla.client import singleton -from argilla.client.sdk.commons.errors import NotFoundApiError -from argilla.listeners.models import ListenerAction, ListenerCondition, Metrics, RGListenerContext, Search +import argilla_v1 +from argilla_v1.client import singleton +from argilla_v1.client.sdk.commons.errors import NotFoundApiError +from argilla_v1.listeners.models import ListenerAction, ListenerCondition, Metrics, RGListenerContext, Search @dataclasses.dataclass @@ -218,7 +218,7 @@ def __run_action__(self, ctx: Optional[RGListenerContext] = None, *args, **kwarg try: action_args = [ctx] if ctx else [] if self.query_records: - action_args.insert(0, argilla.load(name=self.dataset, query=self.formatted_query)) + action_args.insert(0, argilla_v1.load(name=self.dataset, query=self.formatted_query)) self._LOGGER.debug(f"Running action with arguments: {action_args}") return self.action(*args, *action_args, **kwargs) except: # noqa: E722 diff --git a/argilla/src/argilla/listeners/models.py b/argilla-v1/src/argilla_v1/listeners/models.py similarity index 96% rename from argilla/src/argilla/listeners/models.py rename to argilla-v1/src/argilla_v1/listeners/models.py index f18421c387..443e230cbb 100644 --- a/argilla/src/argilla/listeners/models.py +++ b/argilla-v1/src/argilla_v1/listeners/models.py @@ -15,10 +15,10 @@ import dataclasses from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Union -from argilla.client.models import Record +from argilla_v1.client.models import Record if TYPE_CHECKING: - from argilla.listeners import RGDatasetListener + from argilla_v1.listeners import RGDatasetListener @dataclasses.dataclass diff --git a/argilla/src/argilla/logging.py b/argilla-v1/src/argilla_v1/logging.py similarity index 100% rename from argilla/src/argilla/logging.py rename to argilla-v1/src/argilla_v1/logging.py diff --git a/argilla/src/argilla/metrics/__init__.py b/argilla-v1/src/argilla_v1/metrics/__init__.py similarity index 100% rename from argilla/src/argilla/metrics/__init__.py rename to argilla-v1/src/argilla_v1/metrics/__init__.py diff --git a/argilla/src/argilla/metrics/commons.py b/argilla-v1/src/argilla_v1/metrics/commons.py similarity index 91% rename from argilla/src/argilla/metrics/commons.py rename to argilla-v1/src/argilla_v1/metrics/commons.py index e3014cf8f2..9f585831dc 100644 --- a/argilla/src/argilla/metrics/commons.py +++ b/argilla-v1/src/argilla_v1/metrics/commons.py @@ -14,9 +14,9 @@ from typing import Optional -from argilla.client import singleton -from argilla.metrics import helpers -from argilla.metrics.models import MetricSummary +from argilla_v1.client import singleton +from argilla_v1.metrics import helpers +from argilla_v1.metrics.models import MetricSummary def text_length(name: str, query: Optional[str] = None) -> MetricSummary: @@ -32,7 +32,7 @@ def text_length(name: str, query: Optional[str] = None) -> MetricSummary: The text length metric summary Examples: - >>> from argilla.metrics.commons import text_length + >>> from argilla_v1.metrics.commons import text_length >>> summary = text_length(name="example-dataset") >>> summary.visualize() # will plot an histogram with results >>> summary.data # returns the raw result data @@ -58,7 +58,7 @@ def records_status(name: str, query: Optional[str] = None) -> MetricSummary: The status distribution metric summary Examples: - >>> from argilla.metrics.commons import records_status + >>> from argilla_v1.metrics.commons import records_status >>> summary = records_status(name="example-dataset") >>> summary.visualize() # will plot an histogram with results >>> summary.data # returns the raw result data @@ -86,7 +86,7 @@ def keywords(name: str, query: Optional[str] = None, size: int = 20) -> MetricSu The dataset keywords occurrence distribution Examples: - >>> from argilla.metrics.commons import keywords + >>> from argilla_v1.metrics.commons import keywords >>> summary = keywords(name="example-dataset") >>> summary.visualize() # will plot an histogram with results >>> summary.data # returns the raw result data diff --git a/argilla/src/argilla/metrics/helpers.py b/argilla-v1/src/argilla_v1/metrics/helpers.py similarity index 100% rename from argilla/src/argilla/metrics/helpers.py rename to argilla-v1/src/argilla_v1/metrics/helpers.py diff --git a/argilla/src/argilla/metrics/models.py b/argilla-v1/src/argilla_v1/metrics/models.py similarity index 95% rename from argilla/src/argilla/metrics/models.py rename to argilla-v1/src/argilla_v1/metrics/models.py index 82604c8b18..6956f64d50 100644 --- a/argilla/src/argilla/metrics/models.py +++ b/argilla-v1/src/argilla_v1/metrics/models.py @@ -15,7 +15,7 @@ import warnings from typing import Any, Callable, Dict -from argilla.pydantic_v1 import BaseModel, PrivateAttr +from argilla_v1.pydantic_v1 import BaseModel, PrivateAttr # TODO(@frascuchon): Define as dataclasses.dataclass diff --git a/argilla/src/argilla/metrics/text_classification/__init__.py b/argilla-v1/src/argilla_v1/metrics/text_classification/__init__.py similarity index 100% rename from argilla/src/argilla/metrics/text_classification/__init__.py rename to argilla-v1/src/argilla_v1/metrics/text_classification/__init__.py diff --git a/argilla/src/argilla/metrics/text_classification/metrics.py b/argilla-v1/src/argilla_v1/metrics/text_classification/metrics.py similarity index 89% rename from argilla/src/argilla/metrics/text_classification/metrics.py rename to argilla-v1/src/argilla_v1/metrics/text_classification/metrics.py index 0678cce0ed..0d611b1c93 100644 --- a/argilla/src/argilla/metrics/text_classification/metrics.py +++ b/argilla-v1/src/argilla_v1/metrics/text_classification/metrics.py @@ -14,9 +14,9 @@ from typing import Optional -from argilla.client import singleton -from argilla.metrics import helpers -from argilla.metrics.models import MetricSummary +from argilla_v1.client import singleton +from argilla_v1.metrics import helpers +from argilla_v1.metrics.models import MetricSummary def f1(name: str, query: Optional[str] = None) -> MetricSummary: @@ -32,7 +32,7 @@ def f1(name: str, query: Optional[str] = None) -> MetricSummary: The f1 metric summary Examples: - >>> from argilla.metrics.text_classification import f1 + >>> from argilla_v1.metrics.text_classification import f1 >>> summary = f1(name="example-dataset") >>> summary.visualize() # will plot a bar chart with results >>> summary.data # returns the raw result data @@ -58,7 +58,7 @@ def f1_multilabel(name: str, query: Optional[str] = None) -> MetricSummary: The f1 metric summary Examples: - >>> from argilla.metrics.text_classification import f1_multilabel + >>> from argilla_v1.metrics.text_classification import f1_multilabel >>> summary = f1_multilabel(name="example-dataset") >>> summary.visualize() # will plot a bar chart with results >>> summary.data # returns the raw result data diff --git a/argilla/src/argilla/metrics/token_classification/__init__.py b/argilla-v1/src/argilla_v1/metrics/token_classification/__init__.py similarity index 100% rename from argilla/src/argilla/metrics/token_classification/__init__.py rename to argilla-v1/src/argilla_v1/metrics/token_classification/__init__.py diff --git a/argilla/src/argilla/metrics/token_classification/metrics.py b/argilla-v1/src/argilla_v1/metrics/token_classification/metrics.py similarity index 94% rename from argilla/src/argilla/metrics/token_classification/metrics.py rename to argilla-v1/src/argilla_v1/metrics/token_classification/metrics.py index e6b477ae70..bf0ac53704 100644 --- a/argilla/src/argilla/metrics/token_classification/metrics.py +++ b/argilla-v1/src/argilla_v1/metrics/token_classification/metrics.py @@ -17,9 +17,9 @@ import deprecated -from argilla.client import singleton -from argilla.metrics import helpers -from argilla.metrics.models import MetricSummary +from argilla_v1.client import singleton +from argilla_v1.metrics import helpers +from argilla_v1.metrics.models import MetricSummary _UNUSED_METRIC_WARNING_MESSAGE = ( "This metric won't be computed anymore and this function will disappear in a next release!!\n" @@ -40,7 +40,7 @@ def tokens_length(name: str, query: Optional[str] = None, interval: int = 1) -> The summary for token distribution Examples: - >>> from argilla.metrics.token_classification import tokens_length + >>> from argilla_v1.metrics.token_classification import tokens_length >>> summary = tokens_length(name="example-dataset", interval=5) >>> summary.visualize() # will plot a histogram with results >>> summary.data # the raw histogram data with bins of size 5 @@ -72,7 +72,7 @@ def token_frequency(name: str, query: Optional[str] = None, tokens: int = 1000) The summary for token frequency distribution Examples: - >>> from argilla.metrics.token_classification import token_frequency + >>> from argilla_v1.metrics.token_classification import token_frequency >>> summary = token_frequency(name="example-dataset", token=50) >>> summary.visualize() # will plot a histogram with results >>> summary.data # the top-50 tokens frequency @@ -100,7 +100,7 @@ def token_length(name: str, query: Optional[str] = None) -> MetricSummary: The summary for token length distribution Examples: - >>> from argilla.metrics.token_classification import token_length + >>> from argilla_v1.metrics.token_classification import token_length >>> summary = token_length(name="example-dataset") >>> summary.visualize() # will plot a histogram with results >>> summary.data # The token length distribution @@ -139,7 +139,7 @@ def token_capitalness(name: str, query: Optional[str] = None) -> MetricSummary: The summary for token length distribution Examples: - >>> from argilla.metrics.token_classification import token_capitalness + >>> from argilla_v1.metrics.token_classification import token_capitalness >>> summary = token_capitalness(name="example-dataset") >>> summary.visualize() # will plot a histogram with results >>> summary.data # The token capitalness distribution @@ -206,7 +206,7 @@ def mention_length( The summary for mention token distribution Examples: - >>> from argilla.metrics.token_classification import mention_length + >>> from argilla_v1.metrics.token_classification import mention_length >>> summary = mention_length(name="example-dataset", interval=2) >>> summary.visualize() # will plot a histogram chart with results >>> summary.data # the raw histogram data with bins of size 2 @@ -251,7 +251,7 @@ def entity_labels( The summary for entity tags distribution Examples: - >>> from argilla.metrics.token_classification import entity_labels + >>> from argilla_v1.metrics.token_classification import entity_labels >>> summary = entity_labels(name="example-dataset", labels=20) >>> summary.visualize() # will plot a bar chart with results >>> summary.data # The top-20 entity tags @@ -290,7 +290,7 @@ def entity_density( The summary entity density distribution Examples: - >>> from argilla.metrics.token_classification import entity_density + >>> from argilla_v1.metrics.token_classification import entity_density >>> summary = entity_density(name="example-dataset") >>> summary.visualize() """ @@ -336,7 +336,7 @@ def entity_capitalness( The summary entity capitalness distribution Examples: - >>> from argilla.metrics.token_classification import entity_capitalness + >>> from argilla_v1.metrics.token_classification import entity_capitalness >>> summary = entity_capitalness(name="example-dataset") >>> summary.visualize() """ @@ -397,7 +397,7 @@ def top_k_mentions( The summary top k mentions distribution Examples: - >>> from argilla.metrics.token_classification import top_k_mentions + >>> from argilla_v1.metrics.token_classification import top_k_mentions >>> summary = top_k_mentions(name="example-dataset") >>> summary.visualize() """ @@ -451,7 +451,7 @@ def f1(name: str, query: Optional[str] = None) -> MetricSummary: The F1 metric summary containing precision, recall and the F1 score (averaged and per label). Examples: - >>> from argilla.metrics.token_classification import f1 + >>> from argilla_v1.metrics.token_classification import f1 >>> summary = f1(name="example-dataset") >>> summary.visualize() # will plot three bar charts with the results >>> summary.data # returns the raw result data diff --git a/argilla/src/argilla/monitoring/__init__.py b/argilla-v1/src/argilla_v1/monitoring/__init__.py similarity index 100% rename from argilla/src/argilla/monitoring/__init__.py rename to argilla-v1/src/argilla_v1/monitoring/__init__.py diff --git a/argilla/src/argilla/monitoring/_flair.py b/argilla-v1/src/argilla_v1/monitoring/_flair.py similarity index 94% rename from argilla/src/argilla/monitoring/_flair.py rename to argilla-v1/src/argilla_v1/monitoring/_flair.py index 5cb77b1cba..1d7a5b4b4d 100644 --- a/argilla/src/argilla/monitoring/_flair.py +++ b/argilla-v1/src/argilla_v1/monitoring/_flair.py @@ -15,10 +15,10 @@ from datetime import datetime from typing import Any, Dict, List, Optional, Tuple, Union -from argilla import TokenClassificationRecord -from argilla.client.api import Api -from argilla.monitoring.base import BaseMonitor -from argilla.monitoring.types import MissingType +from argilla_v1 import TokenClassificationRecord +from argilla_v1.client.api import Api +from argilla_v1.monitoring.base import BaseMonitor +from argilla_v1.monitoring.types import MissingType try: from flair import __version__ as _flair_version diff --git a/argilla/src/argilla/monitoring/_spacy.py b/argilla-v1/src/argilla_v1/monitoring/_spacy.py similarity index 94% rename from argilla/src/argilla/monitoring/_spacy.py rename to argilla-v1/src/argilla_v1/monitoring/_spacy.py index 6aebcacba2..82bb32f81a 100644 --- a/argilla/src/argilla/monitoring/_spacy.py +++ b/argilla-v1/src/argilla_v1/monitoring/_spacy.py @@ -15,10 +15,10 @@ from datetime import datetime from typing import Any, Dict, Optional, Tuple -from argilla import TokenClassificationRecord -from argilla.client.api import Api -from argilla.monitoring.base import BaseMonitor -from argilla.monitoring.types import MissingType +from argilla_v1 import TokenClassificationRecord +from argilla_v1.client.api import Api +from argilla_v1.monitoring.base import BaseMonitor +from argilla_v1.monitoring.types import MissingType try: # Conditional modules diff --git a/argilla/src/argilla/monitoring/_transformers.py b/argilla-v1/src/argilla_v1/monitoring/_transformers.py similarity index 96% rename from argilla/src/argilla/monitoring/_transformers.py rename to argilla-v1/src/argilla_v1/monitoring/_transformers.py index 85d217d1f3..497341ccb8 100644 --- a/argilla/src/argilla/monitoring/_transformers.py +++ b/argilla-v1/src/argilla_v1/monitoring/_transformers.py @@ -15,11 +15,11 @@ from datetime import datetime from typing import Any, Dict, List, Optional, Tuple, Union -from argilla.client.api import Api -from argilla.client.models import TextClassificationRecord -from argilla.monitoring.base import BaseMonitor -from argilla.monitoring.types import MissingType -from argilla.pydantic_v1 import BaseModel +from argilla_v1.client.api import Api +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.monitoring.base import BaseMonitor +from argilla_v1.monitoring.types import MissingType +from argilla_v1.pydantic_v1 import BaseModel try: from transformers import ( diff --git a/argilla/src/argilla/monitoring/asgi.py b/argilla-v1/src/argilla_v1/monitoring/asgi.py similarity index 96% rename from argilla/src/argilla/monitoring/asgi.py rename to argilla-v1/src/argilla_v1/monitoring/asgi.py index 5f82ca9aaf..38ed532c36 100644 --- a/argilla/src/argilla/monitoring/asgi.py +++ b/argilla-v1/src/argilla_v1/monitoring/asgi.py @@ -18,9 +18,9 @@ import re from typing import Any, Callable, Dict, List, Optional, Tuple -from argilla.client.models import Record, TextClassificationRecord, TokenClassificationRecord -from argilla.monitoring.base import BaseMonitor -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.models import Record, TextClassificationRecord, TokenClassificationRecord +from argilla_v1.monitoring.base import BaseMonitor +from argilla_v1.utils.dependency import require_dependencies require_dependencies("starlette>=0.13.0") from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint @@ -113,7 +113,7 @@ def __init__( def init(self): if self._monitor: return - from argilla.client.singleton import active_api + from argilla_v1.client.singleton import active_api self._monitor = BaseMonitor( self, diff --git a/argilla/src/argilla/monitoring/base.py b/argilla-v1/src/argilla_v1/monitoring/base.py similarity index 97% rename from argilla/src/argilla/monitoring/base.py rename to argilla-v1/src/argilla_v1/monitoring/base.py index b4bfc3b0bb..2402cc403f 100644 --- a/argilla/src/argilla/monitoring/base.py +++ b/argilla-v1/src/argilla_v1/monitoring/base.py @@ -23,9 +23,9 @@ import monotonic import wrapt -from argilla.client.api import Api -from argilla.client.models import Record -from argilla.client.sdk.commons.errors import ArApiResponseError +from argilla_v1.client.api import Api +from argilla_v1.client.models import Record +from argilla_v1.client.sdk.commons.errors import ArApiResponseError class ModelNotSupportedError(Exception): @@ -35,7 +35,7 @@ class ModelNotSupportedError(Exception): class DatasetRecordsConsumer(threading.Thread): """Consumes the records from the dataset queue.""" - log = logging.getLogger("argilla.monitoring") + log = logging.getLogger("argilla_v1.monitoring") def __init__( self, diff --git a/argilla/src/argilla/monitoring/model_monitor.py b/argilla-v1/src/argilla_v1/monitoring/model_monitor.py similarity index 100% rename from argilla/src/argilla/monitoring/model_monitor.py rename to argilla-v1/src/argilla_v1/monitoring/model_monitor.py diff --git a/argilla/src/argilla/monitoring/types.py b/argilla-v1/src/argilla_v1/monitoring/types.py similarity index 100% rename from argilla/src/argilla/monitoring/types.py rename to argilla-v1/src/argilla_v1/monitoring/types.py diff --git a/argilla/src/argilla/pydantic_v1/__init__.py b/argilla-v1/src/argilla_v1/pydantic_v1/__init__.py similarity index 100% rename from argilla/src/argilla/pydantic_v1/__init__.py rename to argilla-v1/src/argilla_v1/pydantic_v1/__init__.py diff --git a/argilla/src/argilla/pydantic_v1/generics.py b/argilla-v1/src/argilla_v1/pydantic_v1/generics.py similarity index 100% rename from argilla/src/argilla/pydantic_v1/generics.py rename to argilla-v1/src/argilla_v1/pydantic_v1/generics.py diff --git a/argilla/src/argilla/pydantic_v1/utils.py b/argilla-v1/src/argilla_v1/pydantic_v1/utils.py similarity index 100% rename from argilla/src/argilla/pydantic_v1/utils.py rename to argilla-v1/src/argilla_v1/pydantic_v1/utils.py diff --git a/argilla/src/argilla/training/__init__.py b/argilla-v1/src/argilla_v1/training/__init__.py similarity index 92% rename from argilla/src/argilla/training/__init__.py rename to argilla-v1/src/argilla_v1/training/__init__.py index e503f27f94..0f6160092a 100644 --- a/argilla/src/argilla/training/__init__.py +++ b/argilla-v1/src/argilla_v1/training/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.training.base import ArgillaTrainer +from argilla_v1.training.base import ArgillaTrainer __all__ = ["ArgillaTrainer"] diff --git a/argilla/src/argilla/training/autotrain_advanced.py b/argilla-v1/src/argilla_v1/training/autotrain_advanced.py similarity index 97% rename from argilla/src/argilla/training/autotrain_advanced.py rename to argilla-v1/src/argilla_v1/training/autotrain_advanced.py index e847f6bd27..b291ead6c5 100644 --- a/argilla/src/argilla/training/autotrain_advanced.py +++ b/argilla-v1/src/argilla_v1/training/autotrain_advanced.py @@ -18,9 +18,9 @@ from datasets import DatasetDict -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training.base import ArgillaTrainerSkeleton -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training.base import ArgillaTrainerSkeleton +from argilla_v1.utils.dependency import require_dependencies class AutoTrainMixin: diff --git a/argilla/src/argilla/training/base.py b/argilla-v1/src/argilla_v1/training/base.py similarity index 93% rename from argilla/src/argilla/training/base.py rename to argilla-v1/src/argilla_v1/training/base.py index 18e048a24d..9ff16d46a9 100644 --- a/argilla/src/argilla/training/base.py +++ b/argilla-v1/src/argilla_v1/training/base.py @@ -18,16 +18,16 @@ from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union -from argilla.client.datasets import DatasetForText2Text, DatasetForTextClassification, DatasetForTokenClassification -from argilla.client.models import Framework, Text2TextRecord, TextClassificationRecord, TokenClassificationRecord -from argilla.client.singleton import active_client -from argilla.datasets import TextClassificationSettings, TokenClassificationSettings, load_dataset_settings -from argilla.utils.telemetry import get_telemetry_client +from argilla_v1.client.datasets import DatasetForText2Text, DatasetForTextClassification, DatasetForTokenClassification +from argilla_v1.client.models import Framework, Text2TextRecord, TextClassificationRecord, TokenClassificationRecord +from argilla_v1.client.singleton import active_client +from argilla_v1.datasets import TextClassificationSettings, TokenClassificationSettings, load_dataset_settings +from argilla_v1.utils.telemetry import get_telemetry_client if TYPE_CHECKING: import spacy - from argilla.client.feedback.integrations.huggingface import FrameworkCardData + from argilla_v1.client.feedback.integrations.huggingface import FrameworkCardData class ArgillaTrainer(object): @@ -133,7 +133,7 @@ def __init__( ) if framework is Framework.SETFIT: - from argilla.training.setfit import ArgillaSetFitTrainer + from argilla_v1.training.setfit import ArgillaSetFitTrainer self._trainer = ArgillaSetFitTrainer( name=self._name, @@ -146,7 +146,7 @@ def __init__( model=self.model, ) elif framework is Framework.TRANSFORMERS: - from argilla.training.transformers import ArgillaTransformersTrainer + from argilla_v1.training.transformers import ArgillaTransformersTrainer self._trainer = ArgillaTransformersTrainer( name=self._name, @@ -159,7 +159,7 @@ def __init__( model=self.model, ) elif framework is Framework.PEFT: - from argilla.training.peft import ArgillaPeftTrainer + from argilla_v1.training.peft import ArgillaPeftTrainer self._trainer = ArgillaPeftTrainer( name=self._name, @@ -172,7 +172,7 @@ def __init__( model=self.model, ) elif framework is Framework.SPACY: - from argilla.training.spacy import ArgillaSpaCyTrainer + from argilla_v1.training.spacy import ArgillaSpaCyTrainer self._trainer = ArgillaSpaCyTrainer( name=self._name, @@ -187,7 +187,7 @@ def __init__( **framework_kwargs, # freeze_tok2vec ) elif framework is Framework.SPACY_TRANSFORMERS: - from argilla.training.spacy import ArgillaSpaCyTransformersTrainer + from argilla_v1.training.spacy import ArgillaSpaCyTransformersTrainer self._trainer = ArgillaSpaCyTransformersTrainer( name=self._name, @@ -202,7 +202,7 @@ def __init__( **framework_kwargs, # update_transformer ) elif framework is Framework.OPENAI: - from argilla.training.openai import ArgillaOpenAITrainer + from argilla_v1.training.openai import ArgillaOpenAITrainer self._trainer = ArgillaOpenAITrainer( name=self._name, @@ -217,7 +217,7 @@ def __init__( elif framework is Framework.SPAN_MARKER: if self._rg_dataset_type is not DatasetForTokenClassification: raise NotImplementedError(f"{Framework.SPAN_MARKER} only supports `TokenClassification` tasks.") - from argilla.training.span_marker import ArgillaSpanMarkerTrainer + from argilla_v1.training.span_marker import ArgillaSpanMarkerTrainer self._trainer = ArgillaSpanMarkerTrainer( name=self._name, diff --git a/argilla/src/argilla/training/openai.py b/argilla-v1/src/argilla_v1/training/openai.py similarity index 96% rename from argilla/src/argilla/training/openai.py rename to argilla-v1/src/argilla_v1/training/openai.py index 827399ebb2..3632491494 100644 --- a/argilla/src/argilla/training/openai.py +++ b/argilla-v1/src/argilla_v1/training/openai.py @@ -19,12 +19,12 @@ import numpy as np -from argilla._constants import OPENAI_END_TOKEN, OPENAI_LEGACY_MODELS, OPENAI_SEPARATOR, OPENAI_WHITESPACE -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.datasets import TextClassificationSettings, TokenClassificationSettings -from argilla.training.base import ArgillaTrainerSkeleton -from argilla.training.utils import filter_allowed_args -from argilla.utils.dependency import require_dependencies +from argilla_v1._constants import OPENAI_END_TOKEN, OPENAI_LEGACY_MODELS, OPENAI_SEPARATOR, OPENAI_WHITESPACE +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.datasets import TextClassificationSettings, TokenClassificationSettings +from argilla_v1.training.base import ArgillaTrainerSkeleton +from argilla_v1.training.utils import filter_allowed_args +from argilla_v1.utils.dependency import require_dependencies class ArgillaOpenAITrainer(ArgillaTrainerSkeleton): diff --git a/argilla/src/argilla/training/peft.py b/argilla-v1/src/argilla_v1/training/peft.py similarity index 97% rename from argilla/src/argilla/training/peft.py rename to argilla-v1/src/argilla_v1/training/peft.py index b91e63a950..d4a7b859ee 100644 --- a/argilla/src/argilla/training/peft.py +++ b/argilla-v1/src/argilla_v1/training/peft.py @@ -17,10 +17,10 @@ import numpy as np -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training.transformers import ArgillaTransformersTrainer -from argilla.training.utils import filter_allowed_args -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training.transformers import ArgillaTransformersTrainer +from argilla_v1.training.utils import filter_allowed_args +from argilla_v1.utils.dependency import require_dependencies class ArgillaPeftTrainer(ArgillaTransformersTrainer): diff --git a/argilla/src/argilla/training/setfit.py b/argilla-v1/src/argilla_v1/training/setfit.py similarity index 96% rename from argilla/src/argilla/training/setfit.py rename to argilla-v1/src/argilla_v1/training/setfit.py index fb2c537db4..6280548491 100644 --- a/argilla/src/argilla/training/setfit.py +++ b/argilla-v1/src/argilla_v1/training/setfit.py @@ -16,10 +16,10 @@ import logging from typing import List, Union -from argilla.client.models import TextClassificationRecord -from argilla.training.transformers import ArgillaTransformersTrainer -from argilla.training.utils import get_default_args -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.training.transformers import ArgillaTransformersTrainer +from argilla_v1.training.utils import get_default_args +from argilla_v1.utils.dependency import require_dependencies class ArgillaSetFitTrainer(ArgillaTransformersTrainer): diff --git a/argilla/src/argilla/training/spacy.py b/argilla-v1/src/argilla_v1/training/spacy.py similarity index 98% rename from argilla/src/argilla/training/spacy.py rename to argilla-v1/src/argilla_v1/training/spacy.py index 83f0d681c5..f87edabe46 100644 --- a/argilla/src/argilla/training/spacy.py +++ b/argilla-v1/src/argilla_v1/training/spacy.py @@ -19,9 +19,9 @@ from pydantic import BaseModel -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training.base import ArgillaTrainerSkeleton -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training.base import ArgillaTrainerSkeleton +from argilla_v1.utils.dependency import require_dependencies __all__ = ["ArgillaSpaCyTrainer", "ArgillaSpaCyTransformersTrainer"] @@ -276,7 +276,7 @@ def __init__(self, freeze_tok2vec: bool = False, **kwargs) -> None: **kwargs: Additional arguments for ArgillaSpaCyTrainerBase. Examples: - >>> from argilla import ArgillaSpaCyTrainer + >>> from argilla_v1 import ArgillaSpaCyTrainer >>> trainer = ArgillaSpaCyTrainer(freeze_tok2vec=True) """ self.freeze_tok2vec = freeze_tok2vec diff --git a/argilla/src/argilla/training/span_marker.py b/argilla-v1/src/argilla_v1/training/span_marker.py similarity index 96% rename from argilla/src/argilla/training/span_marker.py rename to argilla-v1/src/argilla_v1/training/span_marker.py index 460c1f6fd2..f9b9d86a8b 100644 --- a/argilla/src/argilla/training/span_marker.py +++ b/argilla-v1/src/argilla_v1/training/span_marker.py @@ -17,10 +17,10 @@ from datasets import DatasetDict -from argilla.client.models import TokenClassificationRecord -from argilla.training.base import ArgillaTrainerSkeleton -from argilla.training.utils import filter_allowed_args, get_default_args -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.models import TokenClassificationRecord +from argilla_v1.training.base import ArgillaTrainerSkeleton +from argilla_v1.training.utils import filter_allowed_args, get_default_args +from argilla_v1.utils.dependency import require_dependencies class ArgillaSpanMarkerTrainer(ArgillaTrainerSkeleton): diff --git a/argilla/src/argilla/training/transformers.py b/argilla-v1/src/argilla_v1/training/transformers.py similarity index 98% rename from argilla/src/argilla/training/transformers.py rename to argilla-v1/src/argilla_v1/training/transformers.py index 189a29b9f1..ff1f2f9cfe 100644 --- a/argilla/src/argilla/training/transformers.py +++ b/argilla-v1/src/argilla_v1/training/transformers.py @@ -17,10 +17,10 @@ from datasets import DatasetDict -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training.base import ArgillaTrainerSkeleton -from argilla.training.utils import _apply_column_mapping, filter_allowed_args, get_default_args -from argilla.utils.dependency import require_dependencies +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training.base import ArgillaTrainerSkeleton +from argilla_v1.training.utils import _apply_column_mapping, filter_allowed_args, get_default_args +from argilla_v1.utils.dependency import require_dependencies class ArgillaTransformersTrainer(ArgillaTrainerSkeleton): diff --git a/argilla/src/argilla/training/utils.py b/argilla-v1/src/argilla_v1/training/utils.py similarity index 100% rename from argilla/src/argilla/training/utils.py rename to argilla-v1/src/argilla_v1/training/utils.py diff --git a/argilla/src/argilla/utils/__init__.py b/argilla-v1/src/argilla_v1/utils/__init__.py similarity index 100% rename from argilla/src/argilla/utils/__init__.py rename to argilla-v1/src/argilla_v1/utils/__init__.py diff --git a/argilla/src/argilla/utils/dependency.py b/argilla-v1/src/argilla_v1/utils/dependency.py similarity index 100% rename from argilla/src/argilla/utils/dependency.py rename to argilla-v1/src/argilla_v1/utils/dependency.py diff --git a/argilla/src/argilla/utils/span_utils.py b/argilla-v1/src/argilla_v1/utils/span_utils.py similarity index 100% rename from argilla/src/argilla/utils/span_utils.py rename to argilla-v1/src/argilla_v1/utils/span_utils.py diff --git a/argilla/src/argilla/utils/telemetry.py b/argilla-v1/src/argilla_v1/utils/telemetry.py similarity index 95% rename from argilla/src/argilla/utils/telemetry.py rename to argilla-v1/src/argilla_v1/utils/telemetry.py index bf27a9fc58..cdd3cb6479 100644 --- a/argilla/src/argilla/utils/telemetry.py +++ b/argilla-v1/src/argilla_v1/utils/telemetry.py @@ -16,9 +16,9 @@ import logging import platform import uuid -from typing import TYPE_CHECKING, Any, Dict, Optional +from typing import Any, Dict, Optional -from argilla.pydantic_v1 import BaseSettings +from argilla_v1.pydantic_v1 import BaseSettings _DEFAULT_TELEMETRY_KEY = "C6FkcaoCbt78rACAgvyBxGBcMB3dM3nn" @@ -65,7 +65,7 @@ def machine_id(self) -> uuid.UUID: return self._machine_id def __post_init__(self, enable_telemetry: bool, disable_send: bool, api_key: str, host: str): - from argilla import __version__ + from argilla_v1 import __version__ self.client = None if enable_telemetry: @@ -115,11 +115,11 @@ def get_current_filename() -> Optional[str]: try: # Should work if we are running from python return Path(__file__).stem - except NameError as e: + except NameError: # This should work if we are running a notebook from vscode globals_ = globals() return Path(globals_["__vsc_ipynb_file__"]).stem - except KeyError as e: + except KeyError: # This should work for notebooks running locally or using google colab import urllib.parse diff --git a/argilla/src/argilla/utils/utils.py b/argilla-v1/src/argilla_v1/utils/utils.py similarity index 99% rename from argilla/src/argilla/utils/utils.py rename to argilla-v1/src/argilla_v1/utils/utils.py index 459cacdfe3..902d440eca 100644 --- a/argilla/src/argilla/utils/utils.py +++ b/argilla-v1/src/argilla_v1/utils/utils.py @@ -15,7 +15,6 @@ import asyncio import importlib import os -import sys import threading import warnings from itertools import chain diff --git a/argilla/tests/__init__.py b/argilla-v1/tests/__init__.py similarity index 100% rename from argilla/tests/__init__.py rename to argilla-v1/tests/__init__.py diff --git a/argilla/tests/conftest.py b/argilla-v1/tests/conftest.py similarity index 100% rename from argilla/tests/conftest.py rename to argilla-v1/tests/conftest.py diff --git a/argilla/tests/database.py b/argilla-v1/tests/database.py similarity index 100% rename from argilla/tests/database.py rename to argilla-v1/tests/database.py diff --git a/argilla/tests/factories.py b/argilla-v1/tests/factories.py similarity index 100% rename from argilla/tests/factories.py rename to argilla-v1/tests/factories.py diff --git a/argilla/tests/integration/__init__.py b/argilla-v1/tests/integration/__init__.py similarity index 100% rename from argilla/tests/integration/__init__.py rename to argilla-v1/tests/integration/__init__.py diff --git a/argilla/tests/integration/client/__init__.py b/argilla-v1/tests/integration/client/__init__.py similarity index 100% rename from argilla/tests/integration/client/__init__.py rename to argilla-v1/tests/integration/client/__init__.py diff --git a/argilla/tests/integration/client/apis/__init__.py b/argilla-v1/tests/integration/client/apis/__init__.py similarity index 100% rename from argilla/tests/integration/client/apis/__init__.py rename to argilla-v1/tests/integration/client/apis/__init__.py diff --git a/argilla/tests/integration/client/apis/test_base.py b/argilla-v1/tests/integration/client/apis/test_base.py similarity index 79% rename from argilla/tests/integration/client/apis/test_base.py rename to argilla-v1/tests/integration/client/apis/test_base.py index c753b31862..5b4ca916b5 100644 --- a/argilla/tests/integration/client/apis/test_base.py +++ b/argilla-v1/tests/integration/client/apis/test_base.py @@ -13,10 +13,10 @@ # 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 -from argilla.client.sdk.commons.errors import ApiCompatibilityError +from argilla_v1.client import singleton +from argilla_v1.client.apis import AbstractApi, api_compatibility +from argilla_v1.client.sdk._helpers import handle_response_error +from argilla_v1.client.sdk.commons.errors import ApiCompatibilityError def test_api_compatibility(mocked_client): diff --git a/argilla/tests/integration/client/conftest.py b/argilla-v1/tests/integration/client/conftest.py similarity index 97% rename from argilla/tests/integration/client/conftest.py rename to argilla-v1/tests/integration/client/conftest.py index 2f5d49ae5a..284a853b9a 100644 --- a/argilla/tests/integration/client/conftest.py +++ b/argilla-v1/tests/integration/client/conftest.py @@ -17,11 +17,12 @@ from typing import TYPE_CHECKING, Generator, List import pytest -from argilla import SpanQuestion -from argilla.client.api import log -from argilla.client.datasets import read_datasets -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset -from argilla.client.feedback.schemas import ( +from argilla_server.models import User +from argilla_v1 import SpanQuestion +from argilla_v1.client.api import log +from argilla_v1.client.datasets import read_datasets +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, MultiLabelQuestion, @@ -31,39 +32,38 @@ TextField, TextQuestion, ) -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.client.models import ( +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.models import ( Text2TextRecord, TextClassificationRecord, TokenAttributions, TokenClassificationRecord, ) -from argilla.client.sdk.datasets.models import TaskType -from argilla.client.sdk.text2text.models import ( +from argilla_v1.client.sdk.datasets.models import TaskType +from argilla_v1.client.sdk.text2text.models import ( CreationText2TextRecord, Text2TextBulkData, ) -from argilla.client.sdk.text_classification.models import ( +from argilla_v1.client.sdk.text_classification.models import ( CreationTextClassificationRecord, TextClassificationBulkData, ) -from argilla.client.sdk.token_classification.models import ( +from argilla_v1.client.sdk.token_classification.models import ( CreationTokenClassificationRecord, TokenClassificationBulkData, ) -from argilla.client.singleton import init -from argilla_server.models import User +from argilla_v1.client.singleton import init from datasets import Dataset from tests.integration.utils import delete_ignoring_errors if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes, diff --git a/argilla/tests/integration/client/feedback/__init__.py b/argilla-v1/tests/integration/client/feedback/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/__init__.py rename to argilla-v1/tests/integration/client/feedback/__init__.py diff --git a/argilla/tests/integration/client/feedback/conftest.py b/argilla-v1/tests/integration/client/feedback/conftest.py similarity index 75% rename from argilla/tests/integration/client/feedback/conftest.py rename to argilla-v1/tests/integration/client/feedback/conftest.py index 205d094759..f89d6746ee 100644 --- a/argilla/tests/integration/client/feedback/conftest.py +++ b/argilla-v1/tests/integration/client/feedback/conftest.py @@ -12,25 +12,22 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING, Any, List +from typing import TYPE_CHECKING, List import pytest -from argilla.client import singleton -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client import singleton +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -from argilla.client.models import Framework -from argilla.client.workspaces import Workspace -from argilla.feedback import TrainingTask +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.workspaces import Workspace if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes - from argilla.client.sdk.users.models import UserModel as User + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.sdk.users.models import UserModel as User from pytest_mock import MockerFixture @@ -67,7 +64,7 @@ def ranking_question_payload(): @pytest.fixture def mocked_is_on_huggingface(mocker: "MockerFixture") -> bool: mocker.patch( - "argilla.client.feedback.integrations.huggingface.model_card.model_card.is_on_huggingface", return_value=True + "argilla_v1.client.feedback.integrations.huggingface.model_card.model_card.is_on_huggingface", return_value=True ) diff --git a/argilla/tests/integration/client/feedback/dataset/__init__.py b/argilla-v1/tests/integration/client/feedback/dataset/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/dataset/__init__.py rename to argilla-v1/tests/integration/client/feedback/dataset/__init__.py diff --git a/argilla/tests/integration/client/feedback/dataset/local/__init__.py b/argilla-v1/tests/integration/client/feedback/dataset/local/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/dataset/local/__init__.py rename to argilla-v1/tests/integration/client/feedback/dataset/local/__init__.py diff --git a/argilla/tests/integration/client/feedback/dataset/local/test_dataset.py b/argilla-v1/tests/integration/client/feedback/dataset/local/test_dataset.py similarity index 93% rename from argilla/tests/integration/client/feedback/dataset/local/test_dataset.py rename to argilla-v1/tests/integration/client/feedback/dataset/local/test_dataset.py index 88346f4f1f..da6ffbd183 100644 --- a/argilla/tests/integration/client/feedback/dataset/local/test_dataset.py +++ b/argilla-v1/tests/integration/client/feedback/dataset/local/test_dataset.py @@ -15,38 +15,38 @@ import tempfile from typing import TYPE_CHECKING, List, Type, Union -import argilla.client.singleton +import argilla_v1.client.singleton import datasets import pytest -from argilla import ResponseSchema, User, Workspace -from argilla.client.feedback.config import DatasetConfig -from argilla.client.feedback.constants import FETCHING_BATCH_SIZE -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1 import ResponseSchema, User, Workspace +from argilla_v1.client.feedback.config import DatasetConfig +from argilla_v1.client.feedback.constants import FETCHING_BATCH_SIZE +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.questions import MultiLabelQuestion, SpanLabelOption, SpanQuestion, TextQuestion -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.remote.records import RemoteSuggestionSchema -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.client.feedback.training.schemas.base import TrainingTask -from argilla.client.models import Framework -from argilla.client.sdk.commons.errors import ValidationApiError -from argilla.feedback import SpanValueSchema +from argilla_v1.client.feedback.schemas.questions import MultiLabelQuestion, SpanLabelOption, SpanQuestion, TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.remote.records import RemoteSuggestionSchema +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.feedback.training.schemas.base import TrainingTask +from argilla_v1.client.models import Framework +from argilla_v1.client.sdk.commons.errors import ValidationApiError +from argilla_v1.feedback import SpanValueSchema if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes from argilla_server.models import User as ServerUser + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes from sqlalchemy.ext.asyncio import AsyncSession from tests.integration.helpers import SecuredClient def test_create_dataset_with_suggestions(argilla_user: "ServerUser") -> None: - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) ds = FeedbackDataset( fields=[TextField(name="text")], @@ -82,7 +82,7 @@ def test_create_dataset_with_suggestions(argilla_user: "ServerUser") -> None: def test_create_dataset_with_span_questions(argilla_user: "ServerUser") -> None: - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) ds = FeedbackDataset( fields=[TextField(name="text")], @@ -103,7 +103,7 @@ def test_create_dataset_with_span_questions(argilla_user: "ServerUser") -> None: def test_create_dataset_with_span_questions_allow_overlapping( argilla_user: "ServerUser", allow_overlapping: bool ) -> None: - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) ds = FeedbackDataset( fields=[TextField(name="text")], @@ -124,7 +124,7 @@ def test_create_dataset_with_span_questions_allow_overlapping( @pytest.mark.asyncio async def test_update_dataset_records_with_suggestions(argilla_user: "ServerUser", db: "AsyncSession"): - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) ds = FeedbackDataset(fields=[TextField(name="text")], questions=[TextQuestion(name="text")]) @@ -295,7 +295,7 @@ def test_add_records( def test_add_records_with_wrong_spans_suggestions( argilla_user: "ServerUser", spans: list, expected_message_match: str ) -> None: - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset_cfg = FeedbackDataset( fields=[TextField(name="text")], @@ -317,7 +317,7 @@ def test_add_records_with_wrong_spans_suggestions( def test_add_records_with_overlapped_spans(argilla_user: "ServerUser") -> None: - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset_cfg = FeedbackDataset( fields=[TextField(name="text")], @@ -353,7 +353,7 @@ def test_add_records_with_overlapped_spans(argilla_user: "ServerUser") -> None: def test_add_records_with_overlapped_spans_and_disabling_overlapping_span(argilla_user: "ServerUser") -> None: - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset_cfg = FeedbackDataset( fields=[TextField(name="text")], @@ -443,7 +443,7 @@ def test_add_records_with_vectors() -> None: def test_add_records_validation_error( record: FeedbackRecord, exception_cls: Exception, exception_msg: str, argilla_user: "ServerUser" ) -> None: - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( fields=[TextField(name="required-field", required=True), TextField(name="optional-field", required=False)], @@ -474,8 +474,8 @@ def test_format_as( feedback_dataset_questions: List["AllowedQuestionTypes"], feedback_dataset_records: List[FeedbackRecord], ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key="argilla.apikey") + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key="argilla.apikey") dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -497,8 +497,8 @@ async def test_push_to_argilla_and_from_argilla( feedback_dataset_questions: List["AllowedQuestionTypes"], db: "AsyncSession", ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -563,8 +563,8 @@ async def test_push_to_argilla_and_from_argilla( @pytest.mark.asyncio async def test_pull_from_argilla_with_one_more_record_than_chunk_size(argilla_user: "ServerUser") -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) settings = FeedbackDataset( fields=[TextField(name="text")], @@ -591,8 +591,8 @@ async def test_copy_dataset_in_argilla( feedback_dataset_records: List[FeedbackRecord], db: "AsyncSession", ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -631,8 +631,8 @@ async def test_update_dataset_records_in_argilla( feedback_dataset_records: List[FeedbackRecord], db: "AsyncSession", ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -705,8 +705,8 @@ def test_push_to_huggingface_and_from_huggingface( feedback_dataset_questions: List["AllowedQuestionTypes"], feedback_dataset_records: List[FeedbackRecord], ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key="argilla.apikey") + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key="argilla.apikey") dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -844,7 +844,7 @@ def test_prepare_for_training_text_classification( ) dataset.add_records(feedback_dataset_records) - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = Workspace.create(name="test-workspace") remote = dataset.push_to_argilla(name="test-dataset", workspace=ws) @@ -857,7 +857,7 @@ def test_prepare_for_training_text_classification( def test_push_to_argilla_with_vector_settings(argilla_user: User): - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( fields=[TextField(name="required-field")], diff --git a/argilla/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py b/argilla-v1/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py similarity index 97% rename from argilla/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py rename to argilla-v1/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py index c9be382ef3..b077122f67 100644 --- a/argilla/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py +++ b/argilla-v1/tests/integration/client/feedback/dataset/local/test_mixin_task_templates.py @@ -15,16 +15,16 @@ from typing import Callable import pytest -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextQuestion, ) -from argilla.client.feedback.schemas.metadata import TermsMetadataProperty -from argilla.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.feedback.schemas.metadata import TermsMetadataProperty +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings parametrized_task_templates = { "for_question_answering": ( diff --git a/argilla/tests/integration/client/feedback/dataset/remote/__init__.py b/argilla-v1/tests/integration/client/feedback/dataset/remote/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/dataset/remote/__init__.py rename to argilla-v1/tests/integration/client/feedback/dataset/remote/__init__.py diff --git a/argilla/tests/integration/client/feedback/dataset/remote/test_dataset.py b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_dataset.py similarity index 91% rename from argilla/tests/integration/client/feedback/dataset/remote/test_dataset.py rename to argilla-v1/tests/integration/client/feedback/dataset/remote/test_dataset.py index f335a67c94..1bb605dd23 100644 --- a/argilla/tests/integration/client/feedback/dataset/remote/test_dataset.py +++ b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_dataset.py @@ -16,37 +16,37 @@ from typing import TYPE_CHECKING, Any, List, Tuple, Type from uuid import UUID -import argilla as rg -import argilla.client.singleton +import argilla_v1 as rg +import argilla_v1.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 -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.metadata import ( +from argilla_server.models import User as ServerUser +from argilla_server.settings import settings +from argilla_v1 import FeedbackRecord +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextQuestion, ) -from argilla.client.feedback.schemas.remote.metadata import ( +from argilla_v1.client.feedback.schemas.remote.metadata import ( RemoteFloatMetadataProperty, RemoteIntegerMetadataProperty, RemoteTermsMetadataProperty, ) -from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes -from argilla.client.feedback.schemas.vector_settings import VectorSettings -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 argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.sdk.commons.errors import ValidationApiError +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.workspaces import Workspace from sqlalchemy.ext.asyncio import AsyncSession from tests.factories import ( @@ -60,8 +60,11 @@ ) if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedMetadataPropertyTypes, AllowedRemoteMetadataPropertyTypes - from argilla.client.sdk.users.models import UserModel as User + from argilla_v1.client.feedback.schemas.types import ( + AllowedMetadataPropertyTypes, + AllowedRemoteMetadataPropertyTypes, + ) + from argilla_v1.client.sdk.users.models import UserModel as User @pytest.fixture() @@ -115,7 +118,7 @@ class TestRemoteFeedbackDataset: ], ) async def test_add_records(self, owner: "User", feedback_dataset: FeedbackDataset, record: FeedbackRecord) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = Workspace.create(name="test-workspace") remote = feedback_dataset.push_to_argilla(name="test_dataset", workspace=ws) @@ -126,7 +129,7 @@ async def test_add_records(self, owner: "User", feedback_dataset: FeedbackDatase assert len(remote_dataset.records) == 1 def test_update_records(self, owner: "User", test_dataset_with_metadata_properties: FeedbackDataset): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = rg.Workspace.create(name="test-workspace") test_dataset_with_metadata_properties.add_records( @@ -151,7 +154,7 @@ def test_update_records(self, owner: "User", test_dataset_with_metadata_properti async def test_update_records_with_suggestions( self, owner: "User", test_dataset_with_metadata_properties: FeedbackDataset ): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = rg.Workspace.create(name="test-workspace") test_dataset_with_metadata_properties.add_records( @@ -183,7 +186,7 @@ async def test_update_records_with_suggestions( async def test_update_records_with_empty_list_of_suggestions( self, owner: "User", test_dataset_with_metadata_properties: FeedbackDataset ): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = rg.Workspace.create(name="test-workspace") remote = test_dataset_with_metadata_properties.push_to_argilla(name="test_dataset", workspace=ws) @@ -219,7 +222,7 @@ async def test_update_records_with_empty_list_of_suggestions( async def test_update_records_with_metadata_validation_error( self, owner: "User", test_dataset_with_metadata_properties: FeedbackDataset, metadata: Tuple[str, Any] ): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = rg.Workspace.create(name="test-workspace") test_dataset_with_metadata_properties.add_records(FeedbackRecord(fields={"text": "Hello world!"})) @@ -247,7 +250,7 @@ async def test_update_records_with_metadata_validation_error( record.update() async def test_from_argilla(self, feedback_dataset: FeedbackDataset, owner: "User") -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="unit-test") remote = feedback_dataset.push_to_argilla(name="unit-test-dataset", workspace="unit-test") @@ -314,7 +317,7 @@ async def test_add_metadata_property( metadata_property: "AllowedMetadataPropertyTypes", RemoteMetadataPropertyCls: Type["AllowedRemoteMetadataPropertyTypes"], ) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = test_dataset_with_metadata_properties.push_to_argilla(name="test_dataset", workspace=workspace) @@ -363,7 +366,7 @@ async def test_add_metadata_property_sequential( metadata_properties: List["AllowedMetadataPropertyTypes"], RemoteMetadataPropertiesClasses: List[Type["AllowedRemoteMetadataPropertyTypes"]], ) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") dataset = test_dataset_with_metadata_properties.push_to_argilla(name="test_dataset", workspace=workspace) @@ -381,7 +384,7 @@ async def test_add_metadata_property_sequential( assert len(remote_dataset.metadata_properties) == (idx + 1) async def test_bulk_update_metadata_properties(self, owner: "User", feedback_dataset: FeedbackDataset) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = feedback_dataset.push_to_argilla(name="test_dataset", workspace=workspace) @@ -401,7 +404,7 @@ async def test_bulk_update_metadata_properties(self, owner: "User", feedback_dat assert metadata_property.visible_for_annotators is False def test_update_metadata_property_one_by_one(self, owner: "User", feedback_dataset: FeedbackDataset) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = feedback_dataset.push_to_argilla(name="test_dataset", workspace=workspace) @@ -419,7 +422,7 @@ def test_update_metadata_property_one_by_one(self, owner: "User", feedback_datas assert metadata_property.visible_for_annotators is False def test_bulk_delete_metadata_properties(self, owner: "User", feedback_dataset: FeedbackDataset) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = feedback_dataset.push_to_argilla(name="test_dataset", workspace=workspace) @@ -432,7 +435,7 @@ def test_bulk_delete_metadata_properties(self, owner: "User", feedback_dataset: assert len(remote_dataset.metadata_properties) == 0 def test_add_vector_settings(self, owner: "User"): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset = FeedbackDataset(fields=[TextField(name="text")], questions=[TextQuestion(name="text")]) @@ -457,7 +460,7 @@ def test_add_vector_settings(self, owner: "User"): assert other_vector_settings.dimensions == remote_vector_settings.dimensions def test_add_vector_setting_with_the_same_name(self, owner: "User"): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset = FeedbackDataset(fields=[TextField(name="text")], questions=[TextQuestion(name="text")]) @@ -471,7 +474,7 @@ def test_add_vector_setting_with_the_same_name(self, owner: "User"): remote_dataset.add_vector_settings(VectorSettings(name="vector", dimensions=10)) def test_update_vectors_settings(self, owner: "User", feedback_dataset: FeedbackDataset): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset.add_vector_settings(VectorSettings(name="vector-settings-1", dimensions=4)) @@ -485,7 +488,7 @@ def test_update_vectors_settings(self, owner: "User", feedback_dataset: Feedback assert vector_settings.title == "New Vector Settings Title" def test_bulk_update_vectors_settings(self, owner: "User", feedback_dataset: FeedbackDataset): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = feedback_dataset.push_to_argilla(name="test_dataset", workspace=workspace) @@ -499,7 +502,7 @@ def test_bulk_update_vectors_settings(self, owner: "User", feedback_dataset: Fee assert vector_settings.title == "New Vector Settings Title" def test_update_vectors_settings_one_by_one(self, owner: "User", feedback_dataset: FeedbackDataset): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = feedback_dataset.push_to_argilla(name="test_dataset", workspace=workspace) @@ -513,7 +516,7 @@ def test_update_vectors_settings_one_by_one(self, owner: "User", feedback_datase assert vector_settings.title == "New Vector Settings Title" def test_delete_vectors_settings(self, owner: "User"): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset = FeedbackDataset( @@ -527,7 +530,7 @@ def test_delete_vectors_settings(self, owner: "User"): assert len(remote_dataset.vectors_settings) == 0 def test_bulk_delete_vectors_settings(self, owner: "User"): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset = FeedbackDataset( @@ -546,7 +549,7 @@ def test_bulk_delete_vectors_settings(self, owner: "User"): assert len(remote_dataset.vectors_settings) == 0 def test_delete_vector_settings_one_by_one(self, owner: "User"): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset = FeedbackDataset( @@ -569,7 +572,7 @@ def test_delete_vector_settings_one_by_one(self, owner: "User"): assert len(remote_dataset.vectors_settings) == 0 def test_add_records_with_vectors(self, owner: "User", feedback_dataset: FeedbackDataset): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset.add_vector_settings(VectorSettings(name="vector", dimensions=4)) @@ -602,7 +605,7 @@ def test_add_records_with_vectors(self, owner: "User", feedback_dataset: Feedbac def test_add_records_with_invalid_vectors( self, owner: "User", feedback_dataset: FeedbackDataset, invalid_vectors: dict, expected_error: str ): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") vector_dimension = 4 @@ -618,7 +621,7 @@ def test_add_records_with_invalid_vectors( ) def test_delete_metadata_property_one_by_one(self, owner: "User", feedback_dataset: FeedbackDataset) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = feedback_dataset.push_to_argilla(name="test_dataset", workspace=workspace) @@ -641,7 +644,7 @@ async def test_from_argilla_with_responses(self, owner: "User", statuses: List[s for status, record in zip(statuses, await RecordFactory.create_batch(size=len(statuses), dataset=dataset)): await ResponseFactory.create(record=record, values={text_question.name: {"value": ""}}, status=status) - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) remote_dataset = FeedbackDataset.from_argilla(id=dataset.id) assert remote_dataset.id == dataset.id assert all( @@ -655,11 +658,11 @@ async def test_delete_records( ) -> None: user = await UserFactory.create(role=role) - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = Workspace.create(name="test-workspace") ws.add_user(user.id) - argilla.client.singleton.init(api_key=user.api_key, workspace=ws.name) + argilla_v1.client.singleton.init(api_key=user.api_key, workspace=ws.name) remote = test_dataset_with_metadata_properties.push_to_argilla(name="test_dataset", workspace=ws) remote.add_records( @@ -684,12 +687,12 @@ async def test_delete( ) -> None: user = await UserFactory.create(role=role) - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = Workspace.create(name="test-workspace") ws.add_user(user.id) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote = test_dataset_with_metadata_properties.push_to_argilla(name="test_dataset", workspace=ws) remote_dataset = FeedbackDataset.from_argilla(id=remote.id) remote_dataset.delete() @@ -705,7 +708,7 @@ async def test_delete_not_allowed_role(self, role: UserRole) -> None: await RecordFactory.create_batch(dataset=dataset, size=10) user = await UserFactory.create(role=role, workspaces=[dataset.workspace]) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote_dataset = FeedbackDataset.from_argilla(id=dataset.id) with pytest.raises(PermissionError, match=f"User with role={role} is not allowed to call `delete`"): @@ -720,7 +723,7 @@ async def test_list(self, role: UserRole) -> None: await TermsMetadataPropertyFactory.create_batch(dataset=dataset, size=10) user = await UserFactory.create(role=role, workspaces=[dataset.workspace]) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote_datasets = FeedbackDataset.list() assert len(remote_datasets) == 1 assert all(isinstance(remote_dataset, RemoteFeedbackDataset) for remote_dataset in remote_datasets) @@ -735,7 +738,7 @@ async def test_list_with_workspace_name(self, role: UserRole) -> None: await TermsMetadataPropertyFactory.create_batch(dataset=dataset, size=10) user = await UserFactory.create(role=role, workspaces=[dataset.workspace]) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote_datasets = FeedbackDataset.list(workspace=dataset.workspace.name) assert len(remote_datasets) == 1 assert all(isinstance(remote_dataset, RemoteFeedbackDataset) for remote_dataset in remote_datasets) @@ -750,7 +753,7 @@ async def test_attributes(self, role: UserRole) -> None: await TermsMetadataPropertyFactory.create_batch(dataset=dataset, size=10) user = await UserFactory.create(role=role, workspaces=[dataset.workspace]) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote_dataset = FeedbackDataset.from_argilla(id=dataset.id) assert isinstance(remote_dataset.id, UUID) @@ -769,8 +772,8 @@ async def test_pull_without_results( feedback_dataset_records: List[FeedbackRecord], db: AsyncSession, ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -796,8 +799,8 @@ async def test_pull_with_max_records( feedback_dataset_records: List[FeedbackRecord], db: AsyncSession, ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -824,7 +827,7 @@ async def test_warning_local_methods(self, role: UserRole) -> None: await RecordFactory.create_batch(dataset=dataset, size=10) user = await UserFactory.create(role=role, workspaces=[dataset.workspace]) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) ds = FeedbackDataset.from_argilla(id=dataset.id) with pytest.raises(ValueError, match="`FeedbackRecord.fields` does not match the expected schema"): @@ -844,7 +847,7 @@ async def test_warning_local_methods(self, role: UserRole) -> None: async def test_add_records_with_metadata_including_nan_values( self, owner: "User", feedback_dataset: FeedbackDataset ): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") remote_dataset = feedback_dataset.push_to_argilla(name="test_dataset", workspace=workspace) @@ -864,7 +867,7 @@ async def test_add_records_with_metadata_including_nan_values( async def test_add_records_with_metadata_including_none_values( self, owner: "User", feedback_dataset: FeedbackDataset ): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") feedback_dataset.add_records( diff --git a/argilla/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py similarity index 92% rename from argilla/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py rename to argilla-v1/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py index add3c90c4e..54d8699d92 100644 --- a/argilla/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py +++ b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_filter_and_sorting.py @@ -16,12 +16,13 @@ from typing import List, Union from uuid import UUID -import argilla.client.singleton +import argilla_v1.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 -from argilla.client.feedback.schemas.metadata import ( +from argilla_server.models import User +from argilla_v1 import SortBy, TextField, TextQuestion +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataFilter, FloatMetadataProperty, IntegerMetadataFilter, @@ -30,12 +31,11 @@ TermsMetadataFilter, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -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 argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord +from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.workspaces import Workspace from sqlalchemy.ext.asyncio import AsyncSession from tests.factories import ( @@ -89,7 +89,7 @@ async def test_filter_by_response_status( if status != ResponseStatusFilter.pending: await ResponseFactory.create(record=record, status=status, values={}) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote_dataset = FeedbackDataset.from_argilla(id=dataset.id) filtered_dataset = remote_dataset.filter_by(response_status=statuses) assert all([isinstance(record, RemoteFeedbackRecord) for record in filtered_dataset.records]) @@ -114,7 +114,7 @@ def test_filter_by_metadata( metadata_filters: Union[MetadataFilters, List[MetadataFilters]], expected_num_records: int, ) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = Workspace.create(name="test-workspace") @@ -139,8 +139,8 @@ async def test_filter_by_response_status_without_results( feedback_dataset_records: List[FeedbackRecord], db: AsyncSession, ) -> None: - argilla.client.singleton.active_api() - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.active_api() + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) dataset = FeedbackDataset( guidelines=feedback_dataset_guidelines, @@ -192,7 +192,7 @@ async def test_attributes(self, role: UserRole) -> None: record=record, user=user, values={question.name: {"value": ""}}, status="submitted" ) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote_dataset = FeedbackDataset.from_argilla(id=dataset.id) filtered_dataset = remote_dataset.filter_by(response_status="submitted") @@ -267,7 +267,7 @@ def test_filter_by_wrong_field(self, owner: "User", test_dataset: FeedbackDatase remote.filter_by(metadata_filters=IntegerMetadataFilter(name="unexpected-field", ge=4, le=5)) def _create_test_dataset_with_records(self, owner: User, test_dataset: FeedbackDataset): - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) ws = Workspace.create(name="test-workspace") remote = test_dataset.push_to_argilla(name="test_dataset", workspace=ws) for metadata in ( diff --git a/argilla/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py similarity index 88% rename from argilla/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py rename to argilla-v1/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py index a5899fc699..a8f1227dd6 100644 --- a/argilla/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py +++ b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_list_dataset_records.py @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla.client.singleton as rg +import argilla_v1.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 -from argilla.feedback import FeedbackDataset, FeedbackRecord, ResponseSchema, TextField, TextQuestion +from argilla_v1 import User, ValueSchema, Workspace +from argilla_v1.client.feedback.schemas.enums import ResponseStatus +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.feedback import FeedbackDataset, FeedbackRecord, ResponseSchema, TextField, TextQuestion class TestListDatasetRecords: diff --git a/argilla/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py similarity index 98% rename from argilla/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py rename to argilla-v1/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py index c9c8c70cbd..60b27925b5 100644 --- a/argilla/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py +++ b/argilla-v1/tests/integration/client/feedback/dataset/remote/test_working_with_vectors.py @@ -11,12 +11,12 @@ # 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. -from typing import Any, List, Union +from typing import List, Union -import argilla.client.singleton as rg +import argilla_v1.client.singleton as rg import pytest -from argilla import User, Workspace -from argilla.feedback import ( +from argilla_v1 import User, Workspace +from argilla_v1.feedback import ( FeedbackDataset, FeedbackRecord, ResponseSchema, diff --git a/argilla/tests/integration/client/feedback/helpers.py b/argilla-v1/tests/integration/client/feedback/helpers.py similarity index 99% rename from argilla/tests/integration/client/feedback/helpers.py rename to argilla-v1/tests/integration/client/feedback/helpers.py index fc2a88ea30..dda301ab1e 100644 --- a/argilla/tests/integration/client/feedback/helpers.py +++ b/argilla-v1/tests/integration/client/feedback/helpers.py @@ -19,8 +19,8 @@ from collections import Counter from typing import Any, Dict, Iterator -from argilla.client.models import Framework -from argilla.feedback import TrainingTask +from argilla_v1.client.models import Framework +from argilla_v1.feedback import TrainingTask def formatting_func_sft(sample: Dict[str, Any]) -> Iterator[str]: diff --git a/argilla/tests/integration/client/feedback/integrations/__init__.py b/argilla-v1/tests/integration/client/feedback/integrations/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/integrations/__init__.py rename to argilla-v1/tests/integration/client/feedback/integrations/__init__.py diff --git a/argilla/tests/integration/client/feedback/integrations/huggingface/__init__.py b/argilla-v1/tests/integration/client/feedback/integrations/huggingface/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/integrations/huggingface/__init__.py rename to argilla-v1/tests/integration/client/feedback/integrations/huggingface/__init__.py diff --git a/argilla/tests/integration/client/feedback/integrations/huggingface/test_dataset.py b/argilla-v1/tests/integration/client/feedback/integrations/huggingface/test_dataset.py similarity index 99% rename from argilla/tests/integration/client/feedback/integrations/huggingface/test_dataset.py rename to argilla-v1/tests/integration/client/feedback/integrations/huggingface/test_dataset.py index baf8023519..029b69f361 100644 --- a/argilla/tests/integration/client/feedback/integrations/huggingface/test_dataset.py +++ b/argilla-v1/tests/integration/client/feedback/integrations/huggingface/test_dataset.py @@ -16,7 +16,7 @@ import re from uuid import uuid4 -import argilla as rg +import argilla_v1 as rg import pytest diff --git a/argilla/tests/integration/client/feedback/integrations/huggingface/test_model_card.py b/argilla-v1/tests/integration/client/feedback/integrations/huggingface/test_model_card.py similarity index 96% rename from argilla/tests/integration/client/feedback/integrations/huggingface/test_model_card.py rename to argilla-v1/tests/integration/client/feedback/integrations/huggingface/test_model_card.py index 58a6ee451a..0d6bd348f8 100644 --- a/argilla/tests/integration/client/feedback/integrations/huggingface/test_model_card.py +++ b/argilla-v1/tests/integration/client/feedback/integrations/huggingface/test_model_card.py @@ -22,14 +22,14 @@ from typing import TYPE_CHECKING, Callable, List, Union import pytest -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, MultiLabelQuestion, ) -from argilla.client.feedback.unification import LabelQuestionUnification -from argilla.client.models import Framework -from argilla.feedback import ArgillaTrainer, FeedbackDataset, TrainingTask +from argilla_v1.client.feedback.unification import LabelQuestionUnification +from argilla_v1.client.models import Framework +from argilla_v1.feedback import ArgillaTrainer, FeedbackDataset, TrainingTask from tests.integration.client.feedback.helpers import ( formatting_func_chat_completion, @@ -42,8 +42,8 @@ ) if TYPE_CHECKING: - from argilla.client.feedback.schemas import FeedbackRecord - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas import FeedbackRecord + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes DATASET_NAME = "argilla/emotion" diff --git a/argilla/tests/integration/client/feedback/integrations/test_sentencetransformers.py b/argilla-v1/tests/integration/client/feedback/integrations/test_sentencetransformers.py similarity index 89% rename from argilla/tests/integration/client/feedback/integrations/test_sentencetransformers.py rename to argilla-v1/tests/integration/client/feedback/integrations/test_sentencetransformers.py index deb90741a1..30e60acdcc 100644 --- a/argilla/tests/integration/client/feedback/integrations/test_sentencetransformers.py +++ b/argilla-v1/tests/integration/client/feedback/integrations/test_sentencetransformers.py @@ -15,12 +15,12 @@ from typing import List import pytest -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 argilla_v1 import init +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord from typing_extensions import TYPE_CHECKING from tests.factories import WorkspaceFactory @@ -28,7 +28,7 @@ if TYPE_CHECKING: from asyncio import AbstractEventLoop - from argilla import User + from argilla_v1 import User @pytest.fixture(scope="function") diff --git a/argilla/tests/integration/client/feedback/integrations/test_textdescriptives.py b/argilla-v1/tests/integration/client/feedback/integrations/test_textdescriptives.py similarity index 89% rename from argilla/tests/integration/client/feedback/integrations/test_textdescriptives.py rename to argilla-v1/tests/integration/client/feedback/integrations/test_textdescriptives.py index 70395ade59..74909ea747 100644 --- a/argilla/tests/integration/client/feedback/integrations/test_textdescriptives.py +++ b/argilla-v1/tests/integration/client/feedback/integrations/test_textdescriptives.py @@ -15,12 +15,12 @@ from typing import List import pytest -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 argilla_v1 import init +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord from typing_extensions import TYPE_CHECKING from tests.factories import WorkspaceFactory @@ -28,7 +28,7 @@ if TYPE_CHECKING: from asyncio import AbstractEventLoop - from argilla import User + from argilla_v1 import User @pytest.fixture(scope="function") diff --git a/argilla/tests/integration/client/feedback/metrics/__init__.py b/argilla-v1/tests/integration/client/feedback/metrics/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/metrics/__init__.py rename to argilla-v1/tests/integration/client/feedback/metrics/__init__.py diff --git a/argilla/tests/integration/client/feedback/metrics/test_agreement_metrics.py b/argilla-v1/tests/integration/client/feedback/metrics/test_agreement_metrics.py similarity index 97% rename from argilla/tests/integration/client/feedback/metrics/test_agreement_metrics.py rename to argilla-v1/tests/integration/client/feedback/metrics/test_agreement_metrics.py index d2cef9f226..2f5e2f4585 100644 --- a/argilla/tests/integration/client/feedback/metrics/test_agreement_metrics.py +++ b/argilla-v1/tests/integration/client/feedback/metrics/test_agreement_metrics.py @@ -16,19 +16,19 @@ 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 ( +from argilla_v1 import User, init +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.metrics.agreement_metrics import ( AgreementMetric, AgreementMetricResult, prepare_dataset_for_annotation_task, ) -from argilla.client.feedback.schemas import FeedbackRecord +from argilla_v1.client.feedback.schemas import FeedbackRecord from tests.factories import UserFactory, WorkspaceFactory if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes @pytest.mark.parametrize( diff --git a/argilla/tests/integration/client/feedback/metrics/test_annotator_metrics.py b/argilla-v1/tests/integration/client/feedback/metrics/test_annotator_metrics.py similarity index 96% rename from argilla/tests/integration/client/feedback/metrics/test_annotator_metrics.py rename to argilla-v1/tests/integration/client/feedback/metrics/test_annotator_metrics.py index 301a2ededd..8c3c7d59ad 100644 --- a/argilla/tests/integration/client/feedback/metrics/test_annotator_metrics.py +++ b/argilla-v1/tests/integration/client/feedback/metrics/test_annotator_metrics.py @@ -16,16 +16,16 @@ 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 argilla_v1 import User, init +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.metrics.annotator_metrics import AnnotatorMetric, UnifiedAnnotatorMetric +from argilla_v1.client.feedback.metrics.base import ModelMetricResult +from argilla_v1.client.feedback.schemas import FeedbackRecord from tests.factories import UserFactory, WorkspaceFactory if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes @pytest.mark.parametrize( diff --git a/argilla/tests/integration/client/feedback/metrics/test_utils.py b/argilla-v1/tests/integration/client/feedback/metrics/test_utils.py similarity index 94% rename from argilla/tests/integration/client/feedback/metrics/test_utils.py rename to argilla-v1/tests/integration/client/feedback/metrics/test_utils.py index cfbb982177..60ba95273d 100644 --- a/argilla/tests/integration/client/feedback/metrics/test_utils.py +++ b/argilla-v1/tests/integration/client/feedback/metrics/test_utils.py @@ -15,15 +15,15 @@ from typing import TYPE_CHECKING, List, Optional, Union import pytest -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.metrics.utils import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.metrics.utils import ( get_responses_and_suggestions_per_user, get_unified_responses_and_suggestions, ) -from argilla.client.feedback.schemas import FeedbackRecord +from argilla_v1.client.feedback.schemas import FeedbackRecord if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes @pytest.mark.parametrize( diff --git a/argilla/tests/integration/client/feedback/schemas/__init__.py b/argilla-v1/tests/integration/client/feedback/schemas/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/schemas/__init__.py rename to argilla-v1/tests/integration/client/feedback/schemas/__init__.py diff --git a/argilla/tests/integration/client/feedback/schemas/remote/__init__.py b/argilla-v1/tests/integration/client/feedback/schemas/remote/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/schemas/remote/__init__.py rename to argilla-v1/tests/integration/client/feedback/schemas/remote/__init__.py diff --git a/argilla/tests/integration/client/feedback/schemas/remote/test_metadata.py b/argilla-v1/tests/integration/client/feedback/schemas/remote/test_metadata.py similarity index 87% rename from argilla/tests/integration/client/feedback/schemas/remote/test_metadata.py rename to argilla-v1/tests/integration/client/feedback/schemas/remote/test_metadata.py index e6a557fffb..76a6a4df6d 100644 --- a/argilla/tests/integration/client/feedback/schemas/remote/test_metadata.py +++ b/argilla-v1/tests/integration/client/feedback/schemas/remote/test_metadata.py @@ -12,21 +12,21 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING, List, Type, Union +from typing import TYPE_CHECKING, List -import argilla as rg -import argilla.client.singleton +import argilla_v1 as rg +import argilla_v1.client.singleton import pytest -from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset -from argilla.client.feedback.schemas.remote.metadata import ( +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas.remote.metadata import ( RemoteFloatMetadataProperty, RemoteIntegerMetadataProperty, RemoteTermsMetadataProperty, ) if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedMetadataPropertyTypes - from argilla.client.sdk.users.models import UserModel + from argilla_v1.client.feedback.schemas.types import AllowedMetadataPropertyTypes + from argilla_v1.client.sdk.users.models import UserModel class TestSuiteRemoteMetadataProperties: @@ -49,7 +49,7 @@ class TestSuiteRemoteMetadataProperties: def test_create_and_restore( self, owner: "UserModel", metadata_properties: List["AllowedMetadataPropertyTypes"] ) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = rg.Workspace.create(name="my-workspace") dataset = rg.FeedbackDataset( diff --git a/argilla/tests/integration/client/feedback/schemas/remote/test_records.py b/argilla-v1/tests/integration/client/feedback/schemas/remote/test_records.py similarity index 94% rename from argilla/tests/integration/client/feedback/schemas/remote/test_records.py rename to argilla-v1/tests/integration/client/feedback/schemas/remote/test_records.py index bf30a1f62e..1785a70b2e 100644 --- a/argilla/tests/integration/client/feedback/schemas/remote/test_records.py +++ b/argilla-v1/tests/integration/client/feedback/schemas/remote/test_records.py @@ -15,7 +15,7 @@ from typing import TYPE_CHECKING import pytest -from argilla import ( +from argilla_v1 import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, @@ -23,11 +23,11 @@ TextQuestion, Workspace, ) -from argilla.client import singleton -from argilla.client.feedback.dataset import FeedbackDataset -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 argilla_v1.client import singleton +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.records import FeedbackRecord, SuggestionSchema +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord, RemoteSuggestionSchema +from argilla_v1.client.sdk.users.models import UserRole from tests.factories import ( DatasetFactory, diff --git a/argilla/tests/integration/client/feedback/test_unification.py b/argilla-v1/tests/integration/client/feedback/test_unification.py similarity index 98% rename from argilla/tests/integration/client/feedback/test_unification.py rename to argilla-v1/tests/integration/client/feedback/test_unification.py index 8d0741cb68..f9374f5dc5 100644 --- a/argilla/tests/integration/client/feedback/test_unification.py +++ b/argilla-v1/tests/integration/client/feedback/test_unification.py @@ -13,14 +13,14 @@ # limitations under the License. import pytest -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, ) -from argilla.client.feedback.unification import ( +from argilla_v1.client.feedback.unification import ( LabelQuestionStrategy, LabelQuestionUnification, MultiLabelQuestionStrategy, diff --git a/argilla/tests/integration/client/feedback/training/__init__.py b/argilla-v1/tests/integration/client/feedback/training/__init__.py similarity index 100% rename from argilla/tests/integration/client/feedback/training/__init__.py rename to argilla-v1/tests/integration/client/feedback/training/__init__.py diff --git a/argilla/tests/integration/client/feedback/training/test_openai.py b/argilla-v1/tests/integration/client/feedback/training/test_openai.py similarity index 94% rename from argilla/tests/integration/client/feedback/training/test_openai.py rename to argilla-v1/tests/integration/client/feedback/training/test_openai.py index 44a7c70259..29a8cd4915 100644 --- a/argilla/tests/integration/client/feedback/training/test_openai.py +++ b/argilla-v1/tests/integration/client/feedback/training/test_openai.py @@ -14,10 +14,10 @@ import re -import argilla as rg +import argilla_v1 as rg import pytest -from argilla.client.feedback.training.schemas.return_types import ChatCompletionReturnTypes -from argilla.feedback import ArgillaTrainer, FeedbackDataset, TrainingTask +from argilla_v1.client.feedback.training.schemas.return_types import ChatCompletionReturnTypes +from argilla_v1.feedback import ArgillaTrainer, FeedbackDataset, TrainingTask from tests.integration.client.feedback.helpers import formatting_func_chat_completion diff --git a/argilla/tests/integration/client/feedback/training/test_sentence_transformers.py b/argilla-v1/tests/integration/client/feedback/training/test_sentence_transformers.py similarity index 95% rename from argilla/tests/integration/client/feedback/training/test_sentence_transformers.py rename to argilla-v1/tests/integration/client/feedback/training/test_sentence_transformers.py index 5b6f18bc7f..673457e8ae 100644 --- a/argilla/tests/integration/client/feedback/training/test_sentence_transformers.py +++ b/argilla-v1/tests/integration/client/feedback/training/test_sentence_transformers.py @@ -15,12 +15,12 @@ from typing import TYPE_CHECKING, Callable, List, Union import pytest -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.questions import LabelQuestion -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.training.base import ArgillaTrainer -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import LabelQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.training.base import ArgillaTrainer +from argilla_v1.client.feedback.training.schemas.base import ( LabelQuestion, RatingQuestionUnification, TrainingTask, @@ -40,7 +40,7 @@ from tests.integration.training.helpers import train_with_cleanup if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes __OUTPUT_DIR__ = "tmp" __FRAMEWORK__ = "sentence-transformers" diff --git a/argilla/tests/integration/client/feedback/training/test_trainer.py b/argilla-v1/tests/integration/client/feedback/training/test_trainer.py similarity index 96% rename from argilla/tests/integration/client/feedback/training/test_trainer.py rename to argilla-v1/tests/integration/client/feedback/training/test_trainer.py index ee56d6e323..fa53de1131 100644 --- a/argilla/tests/integration/client/feedback/training/test_trainer.py +++ b/argilla-v1/tests/integration/client/feedback/training/test_trainer.py @@ -19,35 +19,35 @@ import pytest if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes import re import shutil import sys from pathlib import Path -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.schemas import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas import ( FeedbackRecord, LabelQuestion, MultiLabelQuestion, ) -from argilla.client.feedback.schemas.enums import ResponseStatusFilter -from argilla.client.feedback.schemas.records import SortBy -from argilla.client.feedback.training import ArgillaTrainer -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.schemas.enums import ResponseStatusFilter +from argilla_v1.client.feedback.schemas.records import SortBy +from argilla_v1.client.feedback.training import ArgillaTrainer +from argilla_v1.client.feedback.training.schemas.base import ( TrainingTask, TrainingTaskForTextClassification, TrainingTaskMapping, TrainingTaskMappingForTextClassification, TrainingTaskTypes, ) -from argilla.client.feedback.training.schemas.return_types import ( +from argilla_v1.client.feedback.training.schemas.return_types import ( QuestionAnsweringReturnTypes, TextClassificationReturnTypes, ) -from argilla.client.feedback.unification import LabelQuestionUnification -from argilla.client.models import Framework +from argilla_v1.client.feedback.unification import LabelQuestionUnification +from argilla_v1.client.models import Framework from transformers import AutoModelForSequenceClassification, AutoTokenizer from tests.integration.training.helpers import train_with_cleanup diff --git a/argilla/tests/integration/client/feedback/training/test_trl.py b/argilla-v1/tests/integration/client/feedback/training/test_trl.py similarity index 97% rename from argilla/tests/integration/client/feedback/training/test_trl.py rename to argilla-v1/tests/integration/client/feedback/training/test_trl.py index 352171ee4c..d1a39d2d5d 100644 --- a/argilla/tests/integration/client/feedback/training/test_trl.py +++ b/argilla-v1/tests/integration/client/feedback/training/test_trl.py @@ -18,13 +18,13 @@ from typing import TYPE_CHECKING, Any, Callable, Dict, Iterator, List import pytest -from argilla.client.feedback.dataset import FeedbackDataset -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.feedback.training.base import ArgillaTrainer -from argilla.client.feedback.training.schemas.base import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.training.base import ArgillaTrainer +from argilla_v1.client.feedback.training.schemas.base import ( TrainingTask, ) -from argilla.client.feedback.training.schemas.return_types import ( +from argilla_v1.client.feedback.training.schemas.return_types import ( DPOReturnTypes, PPOReturnTypes, RMReturnTypes, @@ -44,7 +44,7 @@ from tests.integration.training.helpers import train_with_cleanup if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes OUTPUT_DIR = "tmp" FRAMEWORK = "trl" diff --git a/argilla/tests/integration/client/sdk/__init__.py b/argilla-v1/tests/integration/client/sdk/__init__.py similarity index 100% rename from argilla/tests/integration/client/sdk/__init__.py rename to argilla-v1/tests/integration/client/sdk/__init__.py diff --git a/argilla/tests/integration/client/sdk/api/__init__.py b/argilla-v1/tests/integration/client/sdk/api/__init__.py similarity index 100% rename from argilla/tests/integration/client/sdk/api/__init__.py rename to argilla-v1/tests/integration/client/sdk/api/__init__.py diff --git a/argilla/tests/integration/client/sdk/api/test_commons.py b/argilla-v1/tests/integration/client/sdk/api/test_commons.py similarity index 81% rename from argilla/tests/integration/client/sdk/api/test_commons.py rename to argilla-v1/tests/integration/client/sdk/api/test_commons.py index 7f0584ee28..0977c7488e 100644 --- a/argilla/tests/integration/client/sdk/api/test_commons.py +++ b/argilla-v1/tests/integration/client/sdk/api/test_commons.py @@ -14,11 +14,11 @@ # limitations under the License. import httpx -from argilla.client.sdk.commons.api import bulk -from argilla.client.sdk.commons.models import ( +from argilla_server.commons.models import TaskType +from argilla_v1.client.sdk.commons.api import bulk +from argilla_v1.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): @@ -27,7 +27,7 @@ def test_text2text_bulk(sdk_client, mocked_client, bulk_text2text_data, monkeypa dataset_name = "test_dataset" mocked_client.delete(f"/api/datasets/{dataset_name}") - mocked_client.post(f"/api/datasets", json={"name": dataset_name, "task": TaskType.text2text}) + mocked_client.post("/api/datasets", json={"name": dataset_name, "task": TaskType.text2text}) response = bulk(sdk_client, name=dataset_name, json_body=bulk_text2text_data) assert isinstance(response, BulkResponse) @@ -38,7 +38,7 @@ def test_textclass_bulk(sdk_client, mocked_client, bulk_textclass_data, monkeypa dataset_name = "test_dataset" mocked_client.delete(f"/api/datasets/{dataset_name}") - mocked_client.post(f"/api/datasets", json={"name": dataset_name, "task": TaskType.text_classification}) + mocked_client.post("/api/datasets", json={"name": dataset_name, "task": TaskType.text_classification}) response = bulk(sdk_client, name=dataset_name, json_body=bulk_textclass_data) assert isinstance(response, BulkResponse) @@ -49,7 +49,7 @@ def test_tokenclass_bulk(sdk_client, mocked_client, bulk_tokenclass_data, monkey dataset_name = "test_dataset" mocked_client.delete(f"/api/datasets/{dataset_name}") - mocked_client.post(f"/api/datasets", json={"name": dataset_name, "task": TaskType.token_classification}) + mocked_client.post("/api/datasets", json={"name": dataset_name, "task": TaskType.token_classification}) response = bulk(sdk_client, name=dataset_name, json_body=bulk_tokenclass_data) assert isinstance(response, BulkResponse) diff --git a/argilla/tests/integration/client/sdk/api/test_datasets.py b/argilla-v1/tests/integration/client/sdk/api/test_datasets.py similarity index 92% rename from argilla/tests/integration/client/sdk/api/test_datasets.py rename to argilla-v1/tests/integration/client/sdk/api/test_datasets.py index 58984005c3..4f236e7317 100644 --- a/argilla/tests/integration/client/sdk/api/test_datasets.py +++ b/argilla-v1/tests/integration/client/sdk/api/test_datasets.py @@ -13,11 +13,11 @@ # limitations under the License. import pytest -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 argilla_v1.client.client import Argilla +from argilla_v1.client.sdk.datasets.api import get_dataset, list_datasets +from argilla_v1.client.sdk.datasets.models import Dataset, TaskType +from argilla_v1.client.sdk.text_classification.models import TextClassificationBulkData from tests.factories import UserFactory, WorkspaceFactory diff --git a/argilla/tests/integration/client/sdk/api/test_users.py b/argilla-v1/tests/integration/client/sdk/api/test_users.py similarity index 93% rename from argilla/tests/integration/client/sdk/api/test_users.py rename to argilla-v1/tests/integration/client/sdk/api/test_users.py index dbaa58af64..5f39bdea7c 100644 --- a/argilla/tests/integration/client/sdk/api/test_users.py +++ b/argilla-v1/tests/integration/client/sdk/api/test_users.py @@ -16,9 +16,9 @@ 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 ( +from argilla_v1.client.client import Argilla +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.errors import ( AlreadyExistsApiError, BaseClientError, ForbiddenApiError, @@ -26,9 +26,9 @@ UnauthorizedApiError, ValidationApiError, ) -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 argilla_v1.client.sdk.users.api import create_user, delete_user, list_users, whoami +from argilla_v1.client.sdk.users.models import UserModel +from argilla_v1.client.singleton import ArgillaSingleton from tests.factories import WorkspaceFactory diff --git a/argilla/tests/integration/client/sdk/api/test_workspaces.py b/argilla-v1/tests/integration/client/sdk/api/test_workspaces.py similarity index 92% rename from argilla/tests/integration/client/sdk/api/test_workspaces.py rename to argilla-v1/tests/integration/client/sdk/api/test_workspaces.py index 302da17d55..aee2b09dd6 100644 --- a/argilla/tests/integration/client/sdk/api/test_workspaces.py +++ b/argilla-v1/tests/integration/client/sdk/api/test_workspaces.py @@ -13,16 +13,16 @@ # limitations under the License. import pytest -from argilla.client.sdk.users.models import UserModel -from argilla.client.sdk.workspaces.api import ( +from argilla_server.models import User +from argilla_v1.client.sdk.users.models import UserModel +from argilla_v1.client.sdk.workspaces.api import ( create_workspace, create_workspace_user, delete_workspace_user, list_workspace_users, ) -from argilla.client.sdk.workspaces.models import WorkspaceModel -from argilla.client.singleton import ArgillaSingleton -from argilla_server.models import User +from argilla_v1.client.sdk.workspaces.models import WorkspaceModel +from argilla_v1.client.singleton import ArgillaSingleton from tests.factories import WorkspaceFactory, WorkspaceUserFactory diff --git a/argilla/tests/integration/client/sdk/conftest.py b/argilla-v1/tests/integration/client/sdk/conftest.py similarity index 90% rename from argilla/tests/integration/client/sdk/conftest.py rename to argilla-v1/tests/integration/client/sdk/conftest.py index e9baf5c4ae..07e9c12bc6 100644 --- a/argilla/tests/integration/client/sdk/conftest.py +++ b/argilla-v1/tests/integration/client/sdk/conftest.py @@ -14,27 +14,25 @@ # limitations under the License. import logging from datetime import datetime -from typing import Any, Dict, List -import argilla as rg import pytest -from argilla._constants import DEFAULT_API_KEY -from argilla.client.models import ( +from argilla_v1._constants import DEFAULT_API_KEY +from argilla_v1.client.models import ( Text2TextRecord, TextClassificationRecord, TokenAttributions, TokenClassificationRecord, ) -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.text2text.models import ( +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.text2text.models import ( CreationText2TextRecord, Text2TextBulkData, ) -from argilla.client.sdk.text_classification.models import ( +from argilla_v1.client.sdk.text_classification.models import ( CreationTextClassificationRecord, TextClassificationBulkData, ) -from argilla.client.sdk.token_classification.models import ( +from argilla_v1.client.sdk.token_classification.models import ( CreationTokenClassificationRecord, TokenClassificationBulkData, ) diff --git a/argilla/tests/integration/client/sdk/v1/__init__.py b/argilla-v1/tests/integration/client/sdk/v1/__init__.py similarity index 100% rename from argilla/tests/integration/client/sdk/v1/__init__.py rename to argilla-v1/tests/integration/client/sdk/v1/__init__.py diff --git a/argilla/tests/integration/client/sdk/v1/test_datasets.py b/argilla-v1/tests/integration/client/sdk/v1/test_datasets.py similarity index 95% rename from argilla/tests/integration/client/sdk/v1/test_datasets.py rename to argilla-v1/tests/integration/client/sdk/v1/test_datasets.py index b6a4d60be2..0a679e196b 100644 --- a/argilla/tests/integration/client/sdk/v1/test_datasets.py +++ b/argilla-v1/tests/integration/client/sdk/v1/test_datasets.py @@ -12,9 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla.client.singleton +import argilla_v1.client.singleton import pytest -from argilla import ( +from argilla_server.models import DatasetStatus, User, UserRole +from argilla_v1 import ( FeedbackDataset, FloatMetadataProperty, IntegerMetadataProperty, @@ -23,9 +24,9 @@ TextQuestion, Workspace, ) -from argilla.client.client import Argilla -from argilla.client.feedback.schemas.records import FeedbackRecord -from argilla.client.sdk.v1.datasets.api import ( +from argilla_v1.client.client import Argilla +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.sdk.v1.datasets.api import ( add_field, add_metadata_property, add_question, @@ -40,24 +41,19 @@ get_records, list_datasets, publish_dataset, - search_records, update_records, ) -from argilla.client.sdk.v1.datasets.models import ( +from argilla_v1.client.sdk.v1.datasets.models import ( FeedbackDatasetModel, FeedbackFieldModel, FeedbackItemModel, FeedbackMetadataPropertyModel, FeedbackMetricsModel, FeedbackQuestionModel, - FeedbackRecordSearchModel, FeedbackRecordsModel, - FeedbackRecordsSearchModel, - FeedbackRecordsSearchVectorQuery, FeedbackSuggestionModel, ) -from argilla.client.sdk.v1.records.api import set_suggestion -from argilla_server.models import DatasetStatus, User, UserRole +from argilla_v1.client.sdk.v1.records.api import set_suggestion from tests.factories import ( DatasetFactory, @@ -314,13 +310,13 @@ async def test_get_metadata_properties(role: UserRole) -> None: async def test_add_records(owner: User, test_dataset: FeedbackDataset, role: UserRole) -> None: user = await UserFactory.create(role=role) - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create(name="test-workspace") workspace.add_user(user.id) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote = test_dataset.push_to_argilla(name="test-dataset", workspace=workspace) - argilla_api = argilla.client.singleton.active_api() + argilla_api = argilla_v1.client.singleton.active_api() response = add_records(client=argilla_api.client.httpx, id=remote.id, records=[{"fields": {"text": "test_value"}}]) @@ -353,7 +349,7 @@ async def test_update_records(test_dataset: FeedbackDataset, role: UserRole) -> ] ) - argilla.client.singleton.init(api_key=user.api_key) + argilla_v1.client.singleton.init(api_key=user.api_key) remote = test_dataset.push_to_argilla(name="test-dataset", workspace=workspace.name) records_to_update = [] @@ -366,7 +362,7 @@ async def test_update_records(test_dataset: FeedbackDataset, role: UserRole) -> } ) - argilla_api = argilla.client.singleton.active_api() + argilla_api = argilla_v1.client.singleton.active_api() response = update_records(client=argilla_api.client.httpx, id=remote.id, records=records_to_update) assert response.status_code == 204 @@ -404,7 +400,7 @@ async def test_add_suggestion(role: UserRole) -> None: workspace = await WorkspaceFactory.create() user = await UserFactory.create(role=role, workspaces=[workspace]) - argilla.client.singleton.init(api_key=user.api_key, workspace=workspace.name) + argilla_v1.client.singleton.init(api_key=user.api_key, workspace=workspace.name) dataset = FeedbackDataset(fields=[TextField(name="text-field")], questions=[TextQuestion(name="text-question")]) diff --git a/argilla/tests/integration/client/sdk/v1/test_metadata_properties.py b/argilla-v1/tests/integration/client/sdk/v1/test_metadata_properties.py similarity index 95% rename from argilla/tests/integration/client/sdk/v1/test_metadata_properties.py rename to argilla-v1/tests/integration/client/sdk/v1/test_metadata_properties.py index 1191adb7c7..e756552023 100644 --- a/argilla/tests/integration/client/sdk/v1/test_metadata_properties.py +++ b/argilla-v1/tests/integration/client/sdk/v1/test_metadata_properties.py @@ -15,9 +15,9 @@ from typing import TYPE_CHECKING import pytest -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 argilla_v1.client.client import Argilla +from argilla_v1.client.sdk.v1.metadata_properties.api import delete_metadata_property, update_metadata_property from tests.factories import ( DatasetFactory, diff --git a/argilla/tests/integration/client/sdk/v1/test_records.py b/argilla-v1/tests/integration/client/sdk/v1/test_records.py similarity index 87% rename from argilla/tests/integration/client/sdk/v1/test_records.py rename to argilla-v1/tests/integration/client/sdk/v1/test_records.py index d47487feb4..63e00a552b 100644 --- a/argilla/tests/integration/client/sdk/v1/test_records.py +++ b/argilla-v1/tests/integration/client/sdk/v1/test_records.py @@ -12,9 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla.client.singleton +import argilla_v1.client.singleton import pytest -from argilla import ( +from argilla_server.models import User as ServerUser +from argilla_server.models import UserRole +from argilla_v1 import ( FeedbackDataset, FeedbackRecord, FloatMetadataProperty, @@ -26,17 +28,11 @@ VectorSettings, Workspace, ) -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 argilla_v1.client.client import Argilla +from argilla_v1.client.sdk.v1.records.api import delete_record, delete_suggestions, update_record +from argilla_v1.client.sdk.v1.records.models import FeedbackItemModel from tests.factories import ( - DatasetFactory, - RatingQuestionFactory, - RecordFactory, - SuggestionFactory, UserFactory, WorkspaceFactory, ) @@ -60,9 +56,9 @@ def test_dataset(): class TestRecordsSDK: @pytest.mark.parametrize("role", [UserRole.owner, UserRole.admin]) def test_update_record_with_vectors(self, owner: User, role: UserRole) -> None: - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) - workspace = Workspace.create(f"workspace") + workspace = Workspace.create("workspace") user = User.create(username="user", role=role, password="password", workspaces=[workspace.name]) feedback_dataset = FeedbackDataset( @@ -74,7 +70,7 @@ def test_update_record_with_vectors(self, owner: User, role: UserRole) -> None: ], ) - argilla.client.singleton.init(api_key=user.api_key, workspace=workspace.name) + argilla_v1.client.singleton.init(api_key=user.api_key, workspace=workspace.name) remote_dataset = feedback_dataset.push_to_argilla(name="dataset", workspace=workspace) remote_dataset.add_records([FeedbackRecord(fields={"text": "text"})]) @@ -82,7 +78,7 @@ def test_update_record_with_vectors(self, owner: User, role: UserRole) -> None: record = remote_dataset.records[0] response = update_record( - client=argilla.client.singleton.active_api().client.httpx, + client=argilla_v1.client.singleton.active_api().client.httpx, id=record.id, data={ "vectors": { @@ -102,8 +98,8 @@ def test_update_record_with_vectors(self, owner: User, role: UserRole) -> None: @pytest.mark.parametrize("role", [UserRole.owner, UserRole.admin]) def test_update_record_with_vectors(self, owner: ServerUser, role: UserRole) -> None: - argilla.client.singleton.init(api_key=owner.api_key) - workspace = Workspace.create(f"workspace") + argilla_v1.client.singleton.init(api_key=owner.api_key) + workspace = Workspace.create("workspace") user = User.create(username="user", role=role, password="password", workspaces=[workspace.name]) feedback_dataset = FeedbackDataset( @@ -115,7 +111,7 @@ def test_update_record_with_vectors(self, owner: ServerUser, role: UserRole) -> ], ) - argilla.client.singleton.init(api_key=user.api_key, workspace=workspace.name) + argilla_v1.client.singleton.init(api_key=user.api_key, workspace=workspace.name) remote_dataset = feedback_dataset.push_to_argilla(name="dataset", workspace=workspace) remote_dataset.add_records([FeedbackRecord(fields={"text": "text"})]) @@ -123,7 +119,7 @@ def test_update_record_with_vectors(self, owner: ServerUser, role: UserRole) -> record = remote_dataset.records[0] response = update_record( - client=argilla.client.singleton.active_api().client.httpx, + client=argilla_v1.client.singleton.active_api().client.httpx, id=record.id, data={ "vectors": { @@ -145,12 +141,12 @@ def test_update_record_with_vectors(self, owner: ServerUser, role: UserRole) -> async def test_delete_record(self, owner: ServerUser, test_dataset: FeedbackDataset, role: UserRole) -> None: user = await UserFactory.create(role=role) - argilla.client.singleton.init(api_key=owner.api_key) + argilla_v1.client.singleton.init(api_key=owner.api_key) workspace = Workspace.create("test-workspace") workspace.add_user(user.id) - argilla.client.singleton.init(api_key=user.api_key, workspace=workspace.name) + argilla_v1.client.singleton.init(api_key=user.api_key, workspace=workspace.name) remote = test_dataset.push_to_argilla(name="test-dataset", workspace=workspace) remote.add_records( [ @@ -158,7 +154,7 @@ async def test_delete_record(self, owner: ServerUser, test_dataset: FeedbackData FeedbackRecord(fields={"text": "Hello world!"}), ] ) - argilla_api = argilla.client.singleton.active_api() + argilla_api = argilla_v1.client.singleton.active_api() for record in remote.records: response = delete_record(client=argilla_api.client.httpx, id=record.id) @@ -171,7 +167,7 @@ async def test_delete_suggestions(self, role: UserRole) -> None: workspace = await WorkspaceFactory.create() user = await UserFactory.create(role=role, workspaces=[workspace]) - argilla.client.singleton.init(api_key=user.api_key, workspace=workspace.name) + argilla_v1.client.singleton.init(api_key=user.api_key, workspace=workspace.name) dataset = FeedbackDataset( fields=[TextField(name="text-field")], @@ -214,7 +210,7 @@ async def test_delete_suggestions_batch(self, role: UserRole) -> None: workspace = await WorkspaceFactory.create() user = await UserFactory.create(role=role, workspaces=[workspace]) - argilla.client.singleton.init(api_key=user.api_key, workspace=workspace.name) + argilla_v1.client.singleton.init(api_key=user.api_key, workspace=workspace.name) dataset = FeedbackDataset( fields=[TextField(name="text-field")], diff --git a/argilla/tests/integration/client/sdk/v1/test_suggestions.py b/argilla-v1/tests/integration/client/sdk/v1/test_suggestions.py similarity index 80% rename from argilla/tests/integration/client/sdk/v1/test_suggestions.py rename to argilla-v1/tests/integration/client/sdk/v1/test_suggestions.py index 69e19af32e..bcc9553241 100644 --- a/argilla/tests/integration/client/sdk/v1/test_suggestions.py +++ b/argilla-v1/tests/integration/client/sdk/v1/test_suggestions.py @@ -13,14 +13,14 @@ # limitations under the License. import pytest -from argilla.client.client import Argilla -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset -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.sdk.v1.suggestions.api import delete_suggestion -from argilla.client.singleton import init from argilla_server.models import UserRole +from argilla_v1.client.client import Argilla +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.sdk.v1.suggestions.api import delete_suggestion +from argilla_v1.client.singleton import init from tests.factories import UserFactory, WorkspaceFactory diff --git a/argilla/tests/integration/client/sdk/v1/test_users.py b/argilla-v1/tests/integration/client/sdk/v1/test_users.py similarity index 89% rename from argilla/tests/integration/client/sdk/v1/test_users.py rename to argilla-v1/tests/integration/client/sdk/v1/test_users.py index 98247db93c..f4b4cd040e 100644 --- a/argilla/tests/integration/client/sdk/v1/test_users.py +++ b/argilla-v1/tests/integration/client/sdk/v1/test_users.py @@ -15,9 +15,9 @@ 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 +from argilla_v1.client.sdk.v1.users.api import list_user_workspaces +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.singleton import ArgillaSingleton if TYPE_CHECKING: from argilla_server.models import User as ServerUser diff --git a/argilla/tests/integration/client/sdk/v1/test_workspaces.py b/argilla-v1/tests/integration/client/sdk/v1/test_workspaces.py similarity index 87% rename from argilla/tests/integration/client/sdk/v1/test_workspaces.py rename to argilla-v1/tests/integration/client/sdk/v1/test_workspaces.py index 8131173406..ee3c8f358c 100644 --- a/argilla/tests/integration/client/sdk/v1/test_workspaces.py +++ b/argilla-v1/tests/integration/client/sdk/v1/test_workspaces.py @@ -13,10 +13,10 @@ # 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 argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.v1.workspaces.api import get_workspace, list_workspaces_me +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.singleton import ArgillaSingleton from tests.factories import UserFactory, WorkspaceFactory diff --git a/argilla/tests/integration/client/test_api.py b/argilla-v1/tests/integration/client/test_api.py similarity index 96% rename from argilla/tests/integration/client/test_api.py rename to argilla-v1/tests/integration/client/test_api.py index d3cb9e85b9..087a43e121 100644 --- a/argilla/tests/integration/client/test_api.py +++ b/argilla-v1/tests/integration/client/test_api.py @@ -26,11 +26,17 @@ import httpx import pandas as pd import pytest -from argilla._constants import ( +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 argilla_v1._constants import ( DEFAULT_API_KEY, WORKSPACE_HEADER_NAME, ) -from argilla.client.api import ( +from argilla_v1.client.api import ( delete, delete_records, get_workspace, @@ -39,27 +45,27 @@ log, set_workspace, ) -from argilla.client.apis.status import ApiInfo, Status -from argilla.client.client import Argilla -from argilla.client.datasets import ( +from argilla_v1.client.apis.status import ApiInfo, Status +from argilla_v1.client.client import Argilla +from argilla_v1.client.datasets import ( DatasetForText2Text, DatasetForTextClassification, DatasetForTokenClassification, ) -from argilla.client.enums import DatasetType -from argilla.client.feedback.dataset.local.dataset import FeedbackDataset -from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset -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.models import ( +from argilla_v1.client.enums import DatasetType +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.models import ( Text2TextRecord, TextClassificationRecord, TokenClassificationRecord, ) -from argilla.client.sdk.client import AuthenticatedClient -from argilla.client.sdk.commons.api import Response -from argilla.client.sdk.commons.errors import ( +from argilla_v1.client.sdk.client import AuthenticatedClient +from argilla_v1.client.sdk.commons.api import Response +from argilla_v1.client.sdk.commons.errors import ( AlreadyExistsApiError, ForbiddenApiError, GenericApiError, @@ -69,18 +75,12 @@ UnauthorizedApiError, ValidationApiError, ) -from argilla.client.sdk.datasets.models import Dataset, TaskType -from argilla.client.sdk.users import api as users_api -from argilla.client.sdk.users.models import UserModel -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 argilla_v1.client.sdk.datasets.models import Dataset, TaskType +from argilla_v1.client.sdk.users import api as users_api +from argilla_v1.client.sdk.users.models import UserModel +from argilla_v1.client.sdk.v1.workspaces import api as workspaces_api_v1 +from argilla_v1.client.sdk.workspaces.models import WorkspaceModel +from argilla_v1.client.singleton import active_client, init from httpx import ConnectError from tests.factories import UserFactory, WorkspaceFactory @@ -148,7 +148,7 @@ def mock_init_ok(monkeypatch): It will return a 200 status code, emulating the correct login. """ - from argilla import __version__ as rg_version + from argilla_v1 import __version__ as rg_version def mock_get_info(*args, **kwargs): return ApiInfo(version=rg_version) @@ -954,7 +954,7 @@ def test_load_sort(api: Argilla): def test_not_aligned_argilla_versions(monkeypatch): - from argilla import __version__ as rg_version + from argilla_v1 import __version__ as rg_version def mock_get_info(*args, **kwargs): return ApiInfo(version="1.0.0") diff --git a/argilla/tests/integration/client/test_asgi.py b/argilla-v1/tests/integration/client/test_asgi.py similarity index 91% rename from argilla/tests/integration/client/test_asgi.py rename to argilla-v1/tests/integration/client/test_asgi.py index 3bc55aefb8..0d87c1df30 100644 --- a/argilla/tests/integration/client/test_asgi.py +++ b/argilla-v1/tests/integration/client/test_asgi.py @@ -16,13 +16,13 @@ import time from typing import Any, Dict -import argilla -from argilla.monitoring.asgi import ( +import argilla_v1 +from argilla_server.models import User +from argilla_v1.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 @@ -73,7 +73,7 @@ def another_mock(request): ) time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 1 @@ -82,7 +82,7 @@ def another_mock(request): json={"a": "The data input for A", "b": "The data input for B"}, ) time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 2 @@ -91,14 +91,14 @@ def another_mock(request): params={"a": "The data input for A", "b": "The data input for B"}, ) time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 3 mock.get("/another/predict/route") time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 3 @@ -154,7 +154,7 @@ def another_mock(request): json={"text": "The main text data"}, ) time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 1 @@ -163,7 +163,7 @@ def another_mock(request): json={"text": "The main text data 3"}, ) time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 2 @@ -172,12 +172,12 @@ def another_mock(request): params={"text": "The main text data 2"}, ) time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 3 mock.get("/another/predict/route") time.sleep(0.5) - df = argilla.load(expected_dataset_name) + df = argilla_v1.load(expected_dataset_name) df = df.to_pandas() assert len(df) == 3 diff --git a/argilla/tests/integration/client/test_client.py b/argilla-v1/tests/integration/client/test_client.py similarity index 93% rename from argilla/tests/integration/client/test_client.py rename to argilla-v1/tests/integration/client/test_client.py index 12e3daccb5..b0eab11d87 100644 --- a/argilla/tests/integration/client/test_client.py +++ b/argilla-v1/tests/integration/client/test_client.py @@ -13,8 +13,8 @@ # limitations under the License. import pytest -from argilla.client.sdk.client import Client -from argilla.client.singleton import active_api +from argilla_v1.client.sdk.client import Client +from argilla_v1.client.singleton import active_api @pytest.mark.parametrize( diff --git a/argilla/tests/integration/client/test_client_errors.py b/argilla-v1/tests/integration/client/test_client_errors.py similarity index 85% rename from argilla/tests/integration/client/test_client_errors.py rename to argilla-v1/tests/integration/client/test_client_errors.py index 1df36819be..57a64570ed 100644 --- a/argilla/tests/integration/client/test_client_errors.py +++ b/argilla-v1/tests/integration/client/test_client_errors.py @@ -13,12 +13,10 @@ # limitations under the License. import pytest -from argilla.client.sdk.commons.errors import UnauthorizedApiError -from argilla.client.singleton import init +from argilla_v1.client.sdk.commons.errors import UnauthorizedApiError +from argilla_v1.client.singleton import init def test_unauthorized_response_error(mocked_client): with pytest.raises(UnauthorizedApiError, match="Could not validate credentials"): - import argilla as rg - init(api_key="wrong-api-key") diff --git a/argilla/tests/integration/client/test_dataset.py b/argilla-v1/tests/integration/client/test_dataset.py similarity index 96% rename from argilla/tests/integration/client/test_dataset.py rename to argilla-v1/tests/integration/client/test_dataset.py index ab7699c46e..f5ac6a3e2a 100644 --- a/argilla/tests/integration/client/test_dataset.py +++ b/argilla-v1/tests/integration/client/test_dataset.py @@ -21,7 +21,7 @@ import pandas as pd import pytest import spacy -from argilla.client.datasets import ( +from argilla_v1.client.datasets import ( DatasetBase, DatasetForText2Text, DatasetForTextClassification, @@ -30,12 +30,12 @@ read_datasets, read_pandas, ) -from argilla.client.models import ( +from argilla_v1.client.models import ( Text2TextRecord, TextClassificationRecord, TokenClassificationRecord, ) -from argilla.datasets import TextClassificationSettings +from argilla_v1.datasets import TextClassificationSettings _HF_HUB_ACCESS_TOKEN = os.getenv("HF_HUB_ACCESS_TOKEN") @@ -58,7 +58,7 @@ def test_init_NotImplementedError(self): DatasetBase() def test_init(self, monkeypatch, singlelabel_textclassification_records): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) ds = DatasetBase( records=singlelabel_textclassification_records, @@ -94,7 +94,7 @@ def test_init(self, monkeypatch, singlelabel_textclassification_records): ds._from_pandas("mock") def test_to_dataframe(self, monkeypatch, singlelabel_textclassification_records): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) df = DatasetBase(singlelabel_textclassification_records).to_pandas() @@ -103,7 +103,7 @@ def test_to_dataframe(self, monkeypatch, singlelabel_textclassification_records) assert list(df.columns) == list(TextClassificationRecord.__fields__) def test_prepare_dataset_and_column_mapping(self, monkeypatch): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) ds = datasets.Dataset.from_dict( {"unsupported_column": [None], "ID": [1], "inputs_a": ["a"], "inputs_b": ["b"], "metadata": ["mock"]} @@ -126,8 +126,8 @@ def test_prepare_dataset_and_column_mapping(self, monkeypatch): assert col_to_be_joined == {"inputs": ["inputs_a", "inputs_b"], "metadata": ["metadata"]} def test_from_pandas(self, monkeypatch): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) - monkeypatch.setattr("argilla.client.datasets.DatasetBase._from_pandas", lambda x: x) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._from_pandas", lambda x: x) df = pd.DataFrame({"unsupported_column": [None]}) @@ -140,9 +140,9 @@ def test_from_pandas(self, monkeypatch): assert len(empty_df.columns) == 0 def test_to_datasets(self, monkeypatch): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", "mock") + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", "mock") monkeypatch.setattr( - "argilla.client.datasets.DatasetBase._to_datasets_dict", + "argilla_v1.client.datasets.DatasetBase._to_datasets_dict", lambda x: {"metadata": [{"int_or_str": 1}, {"int_or_str": "str"}]}, ) @@ -153,13 +153,13 @@ def test_to_datasets(self, monkeypatch): assert len(datasets_ds) == 0 def test_datasets_not_installed(self, monkeypatch): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", "mock") + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", "mock") monkeypatch.setattr(sys, "meta_path", [], raising=False) with pytest.raises(ModuleNotFoundError, match="pip install datasets>1.17.0"): DatasetBase().to_datasets() def test_iter_len_getitem(self, monkeypatch, singlelabel_textclassification_records): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) dataset = DatasetBase(singlelabel_textclassification_records) for record, expected in zip(dataset, singlelabel_textclassification_records): @@ -169,7 +169,7 @@ def test_iter_len_getitem(self, monkeypatch, singlelabel_textclassification_reco assert dataset[1] is singlelabel_textclassification_records[1] def test_setitem_delitem(self, monkeypatch, singlelabel_textclassification_records): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) dataset = DatasetBase( [rec.copy(deep=True) for rec in singlelabel_textclassification_records], ) @@ -193,7 +193,7 @@ def test_setitem_delitem(self, monkeypatch, singlelabel_textclassification_recor dataset[0] = Text2TextRecord(text="mock") def test_prepare_for_training_train_test_splits(self, monkeypatch, singlelabel_textclassification_records): - monkeypatch.setattr("argilla.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) + monkeypatch.setattr("argilla_v1.client.datasets.DatasetBase._RECORD_TYPE", TextClassificationRecord) temp_records = copy.deepcopy(singlelabel_textclassification_records) settings = TextClassificationSettings(["a", "b", "c"]) ds = DatasetBase(temp_records) @@ -993,7 +993,7 @@ def test_read_pandas(monkeypatch, task, dataset_class): def mock_from_pandas(mock): return mock - monkeypatch.setattr(f"argilla.client.datasets.{dataset_class}.from_pandas", mock_from_pandas) + monkeypatch.setattr(f"argilla_v1.client.datasets.{dataset_class}.from_pandas", mock_from_pandas) assert read_pandas("mock", task) == "mock" @@ -1010,6 +1010,6 @@ def test_read_datasets(monkeypatch, task, dataset_class): def mock_from_datasets(mock): return mock - monkeypatch.setattr(f"argilla.client.datasets.{dataset_class}.from_datasets", mock_from_datasets) + monkeypatch.setattr(f"argilla_v1.client.datasets.{dataset_class}.from_datasets", mock_from_datasets) assert read_datasets("mock", task) == "mock" diff --git a/argilla/tests/integration/client/test_init.py b/argilla-v1/tests/integration/client/test_init.py similarity index 76% rename from argilla/tests/integration/client/test_init.py rename to argilla-v1/tests/integration/client/test_init.py index 4766d4ede3..fb3f54b7da 100644 --- a/argilla/tests/integration/client/test_init.py +++ b/argilla-v1/tests/integration/client/test_init.py @@ -11,12 +11,12 @@ # 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 argilla.client.singleton +import argilla_v1.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 argilla_v1.client import api +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.client.singleton import active_api, active_client from tests.factories import UserFactory, WorkspaceFactory from tests.integration.utils import delete_ignoring_errors @@ -24,15 +24,15 @@ def test_resource_leaking_with_several_init(argilla_user: User): dataset = "test_resource_leaking_with_several_init" - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) delete_ignoring_errors(dataset) # TODO: review performance in Windows. See https://github.com/recognai/argilla/pull/1702 for i in range(0, 20): - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) for i in range(0, 10): - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) api.log(TextClassificationRecord(text="The text"), name=dataset, verbose=False) assert len(api.load(dataset)) == 10 @@ -43,7 +43,7 @@ def test_init_with_extra_headers(argilla_user: User): "X-Custom-Header": "Mocking rules!", "Other-header": "Header value", } - argilla.client.singleton.init(api_key=argilla_user.api_key, extra_headers=expected_headers) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key, extra_headers=expected_headers) client = active_client() for key, value in expected_headers.items(): @@ -51,11 +51,11 @@ def test_init_with_extra_headers(argilla_user: User): def test_init(argilla_user: User): - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) client = active_client() assert client.user.username == "argilla" - argilla.client.singleton.init(api_key="argilla.apikey") + argilla_v1.client.singleton.init(api_key="argilla.apikey") client = active_api() assert client.user.username == "argilla" @@ -64,7 +64,7 @@ def test_init(argilla_user: User): async def test_init_with_default_user_without_workspaces(): argilla_user = await UserFactory.create(username="argilla") - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) client = active_client() assert client.get_workspace() is None @@ -78,7 +78,7 @@ async def test_init_with_default_user_and_different_workspace(): workspace = await WorkspaceFactory.create() argilla_user = await UserFactory.create(username="argilla", workspaces=[workspace]) - argilla.client.singleton.init(api_key=argilla_user.api_key) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key) client = active_client() assert client.get_workspace() is None diff --git a/argilla/tests/integration/client/test_models.py b/argilla-v1/tests/integration/client/test_models.py similarity index 99% rename from argilla/tests/integration/client/test_models.py rename to argilla-v1/tests/integration/client/test_models.py index a41f4b8e19..59451c0940 100644 --- a/argilla/tests/integration/client/test_models.py +++ b/argilla-v1/tests/integration/client/test_models.py @@ -20,7 +20,7 @@ import numpy import pandas as pd import pytest -from argilla.client.models import ( +from argilla_v1.client.models import ( Text2TextRecord, TextClassificationRecord, TokenClassificationRecord, diff --git a/argilla/tests/integration/client/test_record_update.py b/argilla-v1/tests/integration/client/test_record_update.py similarity index 95% rename from argilla/tests/integration/client/test_record_update.py rename to argilla-v1/tests/integration/client/test_record_update.py index d2452f1fe3..5245ab5390 100644 --- a/argilla/tests/integration/client/test_record_update.py +++ b/argilla-v1/tests/integration/client/test_record_update.py @@ -13,9 +13,9 @@ # limitations under the License. import pytest -from argilla.client.sdk.commons.errors import NotFoundApiError -from argilla.client.singleton import active_api, init from argilla_server.models import User +from argilla_v1.client.sdk.commons.errors import NotFoundApiError +from argilla_v1.client.singleton import active_api, init def test_partial_update_with_not_found(argilla_user: User, gutenberg_spacy_ner: str): diff --git a/argilla/tests/integration/client/test_scan_raw_records.py b/argilla-v1/tests/integration/client/test_scan_raw_records.py similarity index 95% rename from argilla/tests/integration/client/test_scan_raw_records.py rename to argilla-v1/tests/integration/client/test_scan_raw_records.py index 67ec6f7489..f7a3768dc1 100644 --- a/argilla/tests/integration/client/test_scan_raw_records.py +++ b/argilla-v1/tests/integration/client/test_scan_raw_records.py @@ -13,9 +13,9 @@ # 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 +from argilla_v1.client.api import load +from argilla_v1.client.sdk.token_classification.models import TokenClassificationRecord +from argilla_v1.client.singleton import active_api @pytest.mark.parametrize( @@ -23,7 +23,6 @@ argvalues=(set(), {"text"}, {"tokens"}), ) def test_scan_records(gutenberg_spacy_ner, fields): - import argilla as rg import pandas as pd data = active_api().datasets.scan( diff --git a/argilla/tests/integration/client/test_users.py b/argilla-v1/tests/integration/client/test_users.py similarity index 96% rename from argilla/tests/integration/client/test_users.py rename to argilla-v1/tests/integration/client/test_users.py index ca83734859..3eeffab551 100644 --- a/argilla/tests/integration/client/test_users.py +++ b/argilla-v1/tests/integration/client/test_users.py @@ -16,11 +16,11 @@ 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 -from argilla.client.singleton import ArgillaSingleton -from argilla.client.users import User +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel as WorkspaceModelV1 +from argilla_v1.client.sdk.workspaces.models import WorkspaceModel as WorkspaceModelV0 +from argilla_v1.client.singleton import ArgillaSingleton +from argilla_v1.client.users import User if TYPE_CHECKING: from argilla_server.models import User as ServerUser diff --git a/argilla/tests/integration/client/test_utils.py b/argilla-v1/tests/integration/client/test_utils.py similarity index 89% rename from argilla/tests/integration/client/test_utils.py rename to argilla-v1/tests/integration/client/test_utils.py index 20e0a880c4..a1f7a3d5bf 100644 --- a/argilla/tests/integration/client/test_utils.py +++ b/argilla-v1/tests/integration/client/test_utils.py @@ -15,9 +15,9 @@ 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 +from argilla_v1._version import version +from argilla_v1.client import singleton +from argilla_v1.client.utils import ServerInfo, server_info if TYPE_CHECKING: from argilla_server.models import User as ServerUser diff --git a/argilla/tests/integration/client/test_workspaces.py b/argilla-v1/tests/integration/client/test_workspaces.py similarity index 98% rename from argilla/tests/integration/client/test_workspaces.py rename to argilla-v1/tests/integration/client/test_workspaces.py index 8bdf631de3..35bac32e8f 100644 --- a/argilla/tests/integration/client/test_workspaces.py +++ b/argilla-v1/tests/integration/client/test_workspaces.py @@ -16,9 +16,9 @@ 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 argilla_v1.client.sdk.users.models import UserModel, UserRole +from argilla_v1.client.singleton import ArgillaSingleton +from argilla_v1.client.workspaces import Workspace from tests.factories import ( DatasetFactory, diff --git a/argilla-v1/tests/integration/conftest.py b/argilla-v1/tests/integration/conftest.py new file mode 100644 index 0000000000..fb68938121 --- /dev/null +++ b/argilla-v1/tests/integration/conftest.py @@ -0,0 +1,399 @@ +# 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. +import asyncio +import contextlib +import tempfile +import uuid +from typing import TYPE_CHECKING, AsyncGenerator, Dict, Generator + +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 argilla_v1._constants import API_KEY_HEADER_NAME, DEFAULT_API_KEY +from argilla_v1.client.api import log +from argilla_v1.client.apis.datasets import TextClassificationSettings +from argilla_v1.client.client import Argilla, AuthenticatedClient +from argilla_v1.client.datasets import read_datasets +from argilla_v1.client.models import Text2TextRecord, TextClassificationRecord +from argilla_v1.client.sdk.users import api as users_api +from argilla_v1.client.singleton import ArgillaSingleton +from argilla_v1.datasets import configure_dataset +from argilla_v1.utils import telemetry as client_telemetry +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, + UserFactory, + WorkspaceFactory, +) +from tests.integration.utils import delete_ignoring_errors +from tests.pydantic_v1 import BaseModel + +from ..database import SyncTestSession, TestSession, set_task +from .helpers import SecuredClient + +if TYPE_CHECKING: + from unittest.mock import MagicMock + + from pytest_mock import MockerFixture + from sqlalchemy import Connection + from sqlalchemy.ext.asyncio import AsyncConnection + from sqlalchemy.orm import Session + + +@pytest.fixture(scope="session") +def event_loop() -> Generator["asyncio.AbstractEventLoop", None, None]: + loop = asyncio.get_event_loop_policy().get_event_loop() + yield loop + loop.close() + + +@pytest.fixture(scope="session") +def database_url_for_tests() -> Generator[str, None, None]: + with tempfile.TemporaryDirectory() as tmpdir: + settings.database_url = f"sqlite+aiosqlite:///{tmpdir}/test.db?check_same_thread=False" + yield settings.database_url + + +@pytest_asyncio.fixture(scope="session") +async def connection(database_url_for_tests: str) -> AsyncGenerator["AsyncConnection", None]: + set_task(asyncio.current_task()) + # Create a temp directory to store a SQLite database used for testing + + engine = create_async_engine(database_url_for_tests) + conn = await engine.connect() + TestSession.configure(bind=conn) + migrate_db("head") + + yield conn + + migrate_db("base") + await conn.close() + await engine.dispose() + + +@pytest_asyncio.fixture(autouse=True) +async def db(connection: "AsyncConnection") -> AsyncGenerator["AsyncSession", None]: + await connection.begin_nested() + session = TestSession() + + yield session + + await session.close() + await TestSession.remove() + await connection.rollback() + + +@pytest.fixture +def sync_connection(database_url_for_tests: str) -> Generator["Connection", None, None]: + engine = create_engine(database_url_for_tests) + conn = engine.connect() + SyncTestSession.configure(bind=conn) + migrate_db("head") + + yield conn + + migrate_db("base") + conn.close() + engine.dispose() + + +@pytest.fixture +def sync_db(sync_connection: "Connection") -> Generator["Session", None, None]: + session = SyncTestSession() + + yield session + + session.close() + SyncTestSession.remove() + sync_connection.rollback() + + +@pytest.fixture(scope="function") +def client(request, mocker: "MockerFixture") -> Generator[TestClient, None, None]: + from argilla_server import app + from argilla_server.apis.routes import api_v0, api_v1 + + async def override_get_async_db(): + session = TestSession() + yield session + + mocker.patch("argilla_server._app._get_db_wrapper", wraps=contextlib.asynccontextmanager(override_get_async_db)) + # Here, we need to override the dependency for both versions of the API. This behavior changed from pull request #28 + # https://github.com/argilla-io/argilla-server/pull/28/files#diff-0cae8a7ee2d37098b1ad84b543d17cfc1e8535eed5fd6abac88c668bfe354cbbR98 + for api_app in [api_v0, api_v1]: + api_app.dependency_overrides[get_async_db] = override_get_async_db + + raise_server_exceptions = request.param if hasattr(request, "param") else False + with TestClient(app, raise_server_exceptions=raise_server_exceptions) as client: + yield client + + app.dependency_overrides.clear() + + +@pytest.fixture(scope="session") +def elasticsearch_config(): + return {"hosts": settings.elasticsearch} + + +@pytest_asyncio.fixture(scope="function") +async def owner() -> User: + return await OwnerFactory.create(first_name="Owner", username="owner", api_key="owner.apikey") + + +@pytest_asyncio.fixture(scope="function") +async def annotator() -> User: + return await AnnotatorFactory.create(first_name="Annotator", username="annotator", api_key="annotator.apikey") + + +@pytest_asyncio.fixture(scope="function") +async def mock_user() -> User: + workspace_a = await WorkspaceFactory.create(name="workspace-a") + workspace_b = await WorkspaceFactory.create(name="workspace-b") + return await UserFactory.create( + first_name="Mock", + username="mock-user", + password_hash="$2y$05$eaw.j2Kaw8s8vpscVIZMfuqSIX3OLmxA21WjtWicDdn0losQ91Hw.", + api_key="mock-user.apikey", + workspaces=[workspace_a, workspace_b], + ) + + +@pytest.fixture(scope="function") +def owner_auth_header(owner: User) -> Dict[str, str]: + return {API_KEY_HEADER_NAME: owner.api_key} + + +@pytest_asyncio.fixture(scope="function") +async def argilla_user() -> Generator[User, None, None]: + user = await UserFactory.create( + first_name="Argilla", + username="argilla", + role=UserRole.owner, + password_hash="$2y$05$eaw.j2Kaw8s8vpscVIZMfuqSIX3OLmxA21WjtWicDdn0losQ91Hw.", + api_key=DEFAULT_API_KEY, + workspaces=[Workspace(name="argilla")], + ) + yield user + ArgillaSingleton.clear() + + +@pytest.fixture(scope="function") +def argilla_auth_header(argilla_user: User) -> Dict[str, str]: + return {API_KEY_HEADER_NAME: argilla_user.api_key} + + +@pytest.fixture(autouse=True) +def server_telemetry_client(mocker: "MockerFixture") -> "MagicMock": + mock_telemetry = mocker.Mock(server_telemetry.TelemetryClient) + mock_telemetry.server_id = uuid.uuid4() + + server_telemetry._CLIENT = mock_telemetry + return server_telemetry._CLIENT + + +@pytest.fixture(autouse=True) +def client_telemetry_client(mocker: "MockerFixture") -> "MagicMock": + mock_telemetry = mocker.Mock(client_telemetry.TelemetryClient) + mock_telemetry.machine_id = uuid.uuid4() + + client_telemetry._CLIENT = mock_telemetry + return client_telemetry._CLIENT + + +@pytest.mark.parametrize("client", [True], indirect=True) +@pytest.fixture(autouse=True) +def using_test_client_from_argilla_python_client( + monkeypatch, server_telemetry_client, client_telemetry_client, client: "TestClient" +): + real_whoami = users_api.whoami + + def whoami_mocked(*args, **kwargs): + client_arg = args[-1] if args else kwargs["client"] + + monkeypatch.setattr(client_arg, "__httpx__", client) + client.headers.update(client_arg.get_headers()) + + return real_whoami(client_arg) + + monkeypatch.setattr(users_api, "whoami", whoami_mocked) + + monkeypatch.setattr(httpx, "post", client.post) + monkeypatch.setattr(httpx, "patch", client.patch) + monkeypatch.setattr(httpx, "get", client.get) + monkeypatch.setattr(httpx, "delete", client.delete) + monkeypatch.setattr(httpx, "put", client.put) + monkeypatch.setattr(httpx, "stream", client.stream) + + +@pytest.fixture +def api(argilla_user: User) -> Argilla: + return Argilla(api_key=argilla_user.api_key, workspace=argilla_user.username) + + +@pytest.fixture +def mocked_client( + monkeypatch, using_test_client_from_argilla_python_client, argilla_user: User, client: "TestClient" +) -> SecuredClient: + client_ = SecuredClient(client, argilla_user) + + real_whoami = users_api.whoami + + def whoami_mocked(client: AuthenticatedClient): + monkeypatch.setattr(client, "__httpx__", client_) + return real_whoami(client) + + monkeypatch.setattr(users_api, "whoami", whoami_mocked) + + monkeypatch.setattr(httpx, "post", client_.post) + monkeypatch.setattr(httpx, "patch", client_.patch) + monkeypatch.setattr(httpx, "get", client_.get) + monkeypatch.setattr(httpx, "delete", client_.delete) + monkeypatch.setattr(httpx, "put", client_.put) + + from argilla_v1.client.singleton import active_api + + rb_api = active_api() + monkeypatch.setattr(rb_api.http_client, "__httpx__", client_) + + return client_ + + +@pytest.fixture +def dataset_token_classification(mocked_client: SecuredClient) -> str: + from datasets import load_dataset + + dataset = "gutenberg_spacy_ner" + + dataset_ds = load_dataset( + "argilla/gutenberg_spacy-ner", + split="train[:3]", + # This revision does not includes the vectors info, so tests will pass + revision="fff5f572e4cc3127f196f46ba3f9914c6fd0d763", + ) + + dataset_rb = read_datasets(dataset_ds, task="TokenClassification") + # Set annotations, required for training tests + for rec in dataset_rb: + # Strip off "score" + rec.annotation = [prediction[:3] for prediction in rec.prediction] + rec.annotation_agent = rec.prediction_agent + rec.prediction = [] + rec.prediction_agent = None + + delete_ignoring_errors(dataset) + log(name=dataset, records=dataset_rb) + + return dataset + + +@pytest.fixture +def dataset_text_classification(mocked_client: SecuredClient) -> str: + from datasets import load_dataset + + dataset = "banking_sentiment_setfit" + + dataset_ds = load_dataset( + f"argilla/{dataset}", + split="train[:3]", + ) + dataset_rb = [TextClassificationRecord(text=rec["text"], annotation=rec["label"]) for rec in dataset_ds] + labels = set([rec.annotation for rec in dataset_rb]) + configure_dataset(dataset, settings=TextClassificationSettings(label_schema=labels)) + + delete_ignoring_errors(dataset) + log(name=dataset, records=dataset_rb) + + return dataset + + +@pytest.fixture +def dataset_text_classification_multi_label(mocked_client: SecuredClient) -> str: + from datasets import load_dataset + + dataset = "research_titles_multi_label" + + dataset_ds = load_dataset("argilla/research_titles_multi-label", split="train[:50]") + + dataset_rb = read_datasets(dataset_ds, task="TextClassification") + + dataset_rb = [rec for rec in dataset_rb if rec.annotation] + + delete_ignoring_errors(dataset) + log(name=dataset, records=dataset_rb) + + return dataset + + +@pytest.fixture +def dataset_text2text(mocked_client: SecuredClient) -> str: + from datasets import load_dataset + + dataset = "news_summary" + + dataset_ds = load_dataset("argilla/news-summary", split="train[:3]") + + records = [] + for entry in dataset_ds: + records.append(Text2TextRecord(text=entry["text"], annotation=entry["prediction"][0]["text"])) + + delete_ignoring_errors(dataset) + log(name=dataset, records=records) + + return dataset + + +class _MockResponse(BaseModel): + id: str = "1234" + + +@pytest.fixture +def mocked_openai(mocker): + # Mock the requests to OpenAI APIs + response = _MockResponse() + mocker.patch("openai.FineTune.retrieve", return_value=response) + mocker.patch("openai.FineTuningJob.retrieve", return_value=response) + mocker.patch("openai.Model.retrieve", return_value=response) + mocker.patch("openai.FineTuningJob.create", return_value=response) + mocker.patch("openai.FineTune.create", return_value=response) + mocker.patch("openai.File.create", return_value=response) + + +@pytest.fixture +def mocked_trainer_push_to_huggingface(mocker: "MockerFixture"): + # Mock the push_to_huggingface methods for the different trainers, + # most of the functionality is already tested by the frameworks itself. + # For transformers' model and tokenizer + mocker.patch("transformers.PreTrainedModel.push_to_hub", return_value="model_url") + mocker.patch("transformers.PreTrainedTokenizer.push_to_hub", return_value="model_url") + # For setfit + mocker.patch("setfit.trainer.SetFitTrainer.push_to_hub", return_value="model_url") + # For peft + mocker.patch("peft.PeftModel.push_to_hub", return_value="model_url") + mocker.patch("transformers.PreTrainedTokenizerBase.push_to_hub", return_value="model_url") + # For spacy and spacy-transformers + mocker.patch("spacy_huggingface_hub.push", return_value={"url": "model_url"}) + # For trl + mocker.patch("trl.trainer.sft_trainer.SFTTrainer.push_to_hub", return_value="model_url") + mocker.patch("trl.trainer.reward_trainer.RewardTrainer.push_to_hub", return_value="model_url") + mocker.patch("trl.trainer.base.BaseTrainer.push_to_hub", return_value="model_url") + mocker.patch("trl.trainer.dpo_trainer.DPOTrainer.push_to_hub", return_value="model_url") diff --git a/argilla/tests/integration/helpers.py b/argilla-v1/tests/integration/helpers.py similarity index 98% rename from argilla/tests/integration/helpers.py rename to argilla-v1/tests/integration/helpers.py index 1d5c6a24fd..3909e211fa 100644 --- a/argilla/tests/integration/helpers.py +++ b/argilla-v1/tests/integration/helpers.py @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._constants import ( +from argilla_server.models import User +from argilla_v1._constants import ( API_KEY_HEADER_NAME, WORKSPACE_HEADER_NAME, ) -from argilla_server.models import User from fastapi import FastAPI from starlette.testclient import TestClient diff --git a/argilla/tests/integration/labeling/__init__.py b/argilla-v1/tests/integration/labeling/__init__.py similarity index 100% rename from argilla/tests/integration/labeling/__init__.py rename to argilla-v1/tests/integration/labeling/__init__.py diff --git a/argilla/tests/integration/labeling/text_classification/__init__.py b/argilla-v1/tests/integration/labeling/text_classification/__init__.py similarity index 100% rename from argilla/tests/integration/labeling/text_classification/__init__.py rename to argilla-v1/tests/integration/labeling/text_classification/__init__.py diff --git a/argilla/tests/integration/labeling/text_classification/test_label_errors.py b/argilla-v1/tests/integration/labeling/text_classification/test_label_errors.py similarity index 95% rename from argilla/tests/integration/labeling/text_classification/test_label_errors.py rename to argilla-v1/tests/integration/labeling/text_classification/test_label_errors.py index c878460b14..05d3eca8c8 100644 --- a/argilla/tests/integration/labeling/text_classification/test_label_errors.py +++ b/argilla-v1/tests/integration/labeling/text_classification/test_label_errors.py @@ -16,12 +16,12 @@ import cleanlab import pytest -from argilla import User -from argilla.client.api import delete, load, log -from argilla.client.models import TextClassificationRecord -from argilla.client.singleton import init -from argilla.labeling.text_classification import find_label_errors -from argilla.labeling.text_classification.label_errors import ( +from argilla_v1 import User +from argilla_v1.client.api import delete, load, log +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.client.singleton import init +from argilla_v1.labeling.text_classification import find_label_errors +from argilla_v1.labeling.text_classification.label_errors import ( MissingPredictionError, NoRecordsError, SortBy, diff --git a/argilla/tests/integration/labeling/text_classification/test_rule.py b/argilla-v1/tests/integration/labeling/text_classification/test_rule.py similarity index 96% rename from argilla/tests/integration/labeling/text_classification/test_rule.py rename to argilla-v1/tests/integration/labeling/text_classification/test_rule.py index d618be5150..237a3e336e 100644 --- a/argilla/tests/integration/labeling/text_classification/test_rule.py +++ b/argilla-v1/tests/integration/labeling/text_classification/test_rule.py @@ -14,23 +14,23 @@ # limitations under the License. import httpx import pytest -from argilla import User -from argilla.client.api import copy, delete, load -from argilla.client.models import TextClassificationRecord -from argilla.client.sdk.datasets.models import TaskType -from argilla.client.sdk.text_classification.models import ( +from argilla_server.errors import EntityNotFoundError +from argilla_v1 import User +from argilla_v1.client.api import copy, load +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.client.sdk.datasets.models import TaskType +from argilla_v1.client.sdk.text_classification.models import ( CreationTextClassificationRecord, TextClassificationBulkData, ) -from argilla.labeling.text_classification import ( +from argilla_v1.labeling.text_classification import ( Rule, add_rules, delete_rules, load_rules, update_rules, ) -from argilla.labeling.text_classification.rule import RuleNotAppliedError -from argilla_server.errors import EntityNotFoundError +from argilla_v1.labeling.text_classification.rule import RuleNotAppliedError from tests.integration.helpers import SecuredClient from tests.integration.utils import delete_ignoring_errors diff --git a/argilla/tests/integration/labeling/text_classification/test_weak_labels.py b/argilla-v1/tests/integration/labeling/text_classification/test_weak_labels.py similarity index 93% rename from argilla/tests/integration/labeling/text_classification/test_weak_labels.py rename to argilla-v1/tests/integration/labeling/text_classification/test_weak_labels.py index 358243fe7a..ac45661a94 100644 --- a/argilla/tests/integration/labeling/text_classification/test_weak_labels.py +++ b/argilla-v1/tests/integration/labeling/text_classification/test_weak_labels.py @@ -18,14 +18,15 @@ import numpy as np import pandas as pd import pytest -from argilla.client.models import TextClassificationRecord -from argilla.client.sdk.text_classification.models import ( +from argilla_server.commons.models import TaskType +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.client.sdk.text_classification.models import ( CreationTextClassificationRecord, TextClassificationBulkData, ) -from argilla.labeling.text_classification import WeakLabels, WeakMultiLabels -from argilla.labeling.text_classification.rule import Rule -from argilla.labeling.text_classification.weak_labels import ( +from argilla_v1.labeling.text_classification import WeakLabels, WeakMultiLabels +from argilla_v1.labeling.text_classification.rule import Rule +from argilla_v1.labeling.text_classification.weak_labels import ( DuplicatedRuleNameError, MissingLabelError, MultiLabelError, @@ -33,7 +34,6 @@ NoRulesFoundError, WeakLabelsBase, ) -from argilla_server.commons.models import TaskType from pandas.testing import assert_frame_equal from tests.integration.helpers import SecuredClient @@ -170,7 +170,7 @@ def test_dataset_type_error(self): def test_rules_from_dataset(self, monkeypatch, log_dataset): mock_rules = [Rule(query="mock", label="mock")] monkeypatch.setattr( - "argilla.labeling.text_classification.weak_labels.load_rules", + "argilla_v1.labeling.text_classification.weak_labels.load_rules", lambda x: mock_rules, ) @@ -178,7 +178,7 @@ def test_rules_from_dataset(self, monkeypatch, log_dataset): assert wl.rules is mock_rules def test_norulesfounderror(self, monkeypatch): - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load_rules", lambda x: []) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load_rules", lambda x: []) with pytest.raises(NoRulesFoundError, match="No rules were found"): WeakLabelsBase("mock") @@ -192,7 +192,7 @@ def test_no_records_found_error(self, monkeypatch): def mock_load(*args, **kwargs): return [] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) with pytest.raises(NoRecordsFoundError, match="No records found in dataset 'mock'."): WeakLabels(rules=[lambda x: None], dataset="mock") @@ -221,7 +221,7 @@ def test_rules_records_properties(self, monkeypatch): def mock_load(*args, **kwargs): return expected_records - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) weak_labels = WeakLabelsBase(rules=[lambda x: "mock"] * 2, dataset="mock") @@ -240,7 +240,7 @@ def test_not_implemented_errors(self, monkeypatch): def mock_load(*args, **kwargs): return ["mock"] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) weak_labels = WeakLabelsBase(rules=["mock"], dataset="mock") @@ -263,7 +263,7 @@ def test_faiss_not_installed(self, monkeypatch): def mock_load(*args, **kwargs): return ["mock"] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) monkeypatch.setitem(sys.modules, "faiss", None) with pytest.raises(ModuleNotFoundError, match="pip install faiss-cpu"): weak_labels = WeakLabelsBase(rules=[lambda x: "mock"] * 2, dataset="mock") @@ -275,7 +275,7 @@ def test_multi_label_error(self, monkeypatch): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test", multi_label=True)] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) with pytest.raises(MultiLabelError): WeakLabels(rules=[lambda x: None], dataset="mock") @@ -346,7 +346,7 @@ def test_matrix_annotation_properties(self, monkeypatch): def mock_load(*args, **kwargs): return expected_records - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array([[0, 1], [-1, 0]], dtype=np.short) @@ -369,7 +369,7 @@ def test_summary(self, monkeypatch, rules): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test")] * 4 - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array([[0, 1, -1], [-1, 0, -1], [-1, -1, -1], [1, 1, -1]], dtype=np.short) @@ -445,7 +445,7 @@ def test_show_records(self, monkeypatch, rules): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test", id=i) for i in range(5)] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( @@ -479,7 +479,7 @@ def test_change_mapping(self, monkeypatch, rules): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test", id=i) for i in range(5)] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( @@ -530,7 +530,7 @@ def weak_labels(self, monkeypatch, rules): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test", id=i) for i in range(3)] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( @@ -597,7 +597,7 @@ def test_matrix_annotation(self, monkeypatch): def mock_load(*args, **kwargs): return expected_records - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array([[[1, 0], [0, 1]], [[-1, -1], [1, 0]]], dtype=np.short) @@ -618,7 +618,7 @@ def test_summary(self, monkeypatch, multilabel_rules): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test", multi_label=True)] * 4 - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( @@ -699,7 +699,7 @@ def test_compute_correct_incorrect(self, monkeypatch): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="mock")] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array([[[1, 0, 1, 0], [0, 1, 0, 1]]], dtype=np.short) @@ -717,7 +717,7 @@ def test_show_records(self, monkeypatch, multilabel_rules): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test", id=i, multi_label=True) for i in range(5)] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( @@ -756,7 +756,7 @@ def weak_multi_labels(self, monkeypatch, rules): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="test", id=i, multi_label=True) for i in range(3)] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( diff --git a/argilla/tests/integration/listeners/__init__.py b/argilla-v1/tests/integration/listeners/__init__.py similarity index 100% rename from argilla/tests/integration/listeners/__init__.py rename to argilla-v1/tests/integration/listeners/__init__.py diff --git a/argilla/tests/integration/listeners/test_listener.py b/argilla-v1/tests/integration/listeners/test_listener.py similarity index 94% rename from argilla/tests/integration/listeners/test_listener.py rename to argilla-v1/tests/integration/listeners/test_listener.py index 7eb141c20c..ec443ac881 100644 --- a/argilla/tests/integration/listeners/test_listener.py +++ b/argilla-v1/tests/integration/listeners/test_listener.py @@ -15,11 +15,10 @@ import time from typing import List -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 +from argilla_v1 import RGListenerContext, listener +from argilla_v1.client.api import delete, log +from argilla_v1.client.models import Record, TextClassificationRecord def condition_check_params(search): diff --git a/argilla/tests/integration/metrics/__init__.py b/argilla-v1/tests/integration/metrics/__init__.py similarity index 100% rename from argilla/tests/integration/metrics/__init__.py rename to argilla-v1/tests/integration/metrics/__init__.py diff --git a/argilla/tests/integration/metrics/test_common_metrics.py b/argilla-v1/tests/integration/metrics/test_common_metrics.py similarity index 85% rename from argilla/tests/integration/metrics/test_common_metrics.py rename to argilla-v1/tests/integration/metrics/test_common_metrics.py index 3b861ca8fd..8dd97cc9ff 100644 --- a/argilla/tests/integration/metrics/test_common_metrics.py +++ b/argilla-v1/tests/integration/metrics/test_common_metrics.py @@ -12,13 +12,12 @@ # 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 argilla -import argilla as rg -import argilla.client.singleton +import argilla_v1 +import argilla_v1.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 argilla_v1.client.api import log +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.metrics.commons import keywords, records_status, text_length from tests.integration.utils import delete_ignoring_errors @@ -35,11 +34,11 @@ def gutenberg_spacy_ner(mocked_client): revision="fff5f572e4cc3127f196f46ba3f9914c6fd0d763", ) - dataset_rb = argilla.read_datasets(dataset_ds, task="TokenClassification") + dataset_rb = argilla_v1.read_datasets(dataset_ds, task="TokenClassification") delete_ignoring_errors(dataset) - argilla.log(name=dataset, records=dataset_rb) + argilla_v1.log(name=dataset, records=dataset_rb) return dataset @@ -151,12 +150,12 @@ def test_keywords_metrics(mocked_client, gutenberg_spacy_ner): def test_failing_metrics(argilla_user: "User"): - argilla.client.singleton.init(api_key=argilla_user.api_key, workspace=argilla_user.username) + argilla_v1.client.singleton.init(api_key=argilla_user.api_key, workspace=argilla_user.username) dataset_name = "test_failing_metrics" delete_ignoring_errors(dataset_name) - argilla.log(argilla.TextClassificationRecord(text="This is a text, yeah!"), name=dataset_name) + argilla_v1.log(argilla_v1.TextClassificationRecord(text="This is a text, yeah!"), name=dataset_name) with pytest.raises(AssertionError, match="Metric missing-metric not found"): - argilla.client.singleton.active_client().compute_metric(name=dataset_name, metric="missing-metric") + argilla_v1.client.singleton.active_client().compute_metric(name=dataset_name, metric="missing-metric") diff --git a/argilla/tests/integration/metrics/test_text_classification.py b/argilla-v1/tests/integration/metrics/test_text_classification.py similarity index 94% rename from argilla/tests/integration/metrics/test_text_classification.py rename to argilla-v1/tests/integration/metrics/test_text_classification.py index 608a2389ae..ddfe02cd9e 100644 --- a/argilla/tests/integration/metrics/test_text_classification.py +++ b/argilla-v1/tests/integration/metrics/test_text_classification.py @@ -12,11 +12,10 @@ # 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 argilla as rg -from argilla.client import singleton -from argilla.client.api import log -from argilla.client.models import TextClassificationRecord -from argilla.metrics.text_classification import f1, f1_multilabel +from argilla_v1.client import singleton +from argilla_v1.client.api import log +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.metrics.text_classification import f1, f1_multilabel def test_metrics_for_text_classification(mocked_client): diff --git a/argilla/tests/integration/metrics/test_token_classification.py b/argilla-v1/tests/integration/metrics/test_token_classification.py similarity index 97% rename from argilla/tests/integration/metrics/test_token_classification.py rename to argilla-v1/tests/integration/metrics/test_token_classification.py index 4fcb12fadf..4f7c410136 100644 --- a/argilla/tests/integration/metrics/test_token_classification.py +++ b/argilla-v1/tests/integration/metrics/test_token_classification.py @@ -12,12 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla import pytest -from argilla.client.api import load, log -from argilla.client.models import TokenClassificationRecord -from argilla.metrics import entity_consistency -from argilla.metrics.token_classification import ( +from argilla_v1.client.api import load, log +from argilla_v1.client.models import TokenClassificationRecord +from argilla_v1.metrics import entity_consistency +from argilla_v1.metrics.token_classification import ( Annotations, entity_capitalness, entity_density, diff --git a/argilla/tests/integration/monitoring/__init__.py b/argilla-v1/tests/integration/monitoring/__init__.py similarity index 100% rename from argilla/tests/integration/monitoring/__init__.py rename to argilla-v1/tests/integration/monitoring/__init__.py diff --git a/argilla/tests/integration/monitoring/test_base_monitor.py b/argilla-v1/tests/integration/monitoring/test_base_monitor.py similarity index 90% rename from argilla/tests/integration/monitoring/test_base_monitor.py rename to argilla-v1/tests/integration/monitoring/test_base_monitor.py index f6d216730c..9c4d507026 100644 --- a/argilla/tests/integration/monitoring/test_base_monitor.py +++ b/argilla-v1/tests/integration/monitoring/test_base_monitor.py @@ -15,10 +15,10 @@ from time import sleep from typing import Any, Dict, List -from argilla.client.api import Api -from argilla.client.models import TextClassificationRecord -from argilla.client.singleton import active_api -from argilla.monitoring.base import BaseMonitor +from argilla_v1.client.api import Api +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.client.singleton import active_api +from argilla_v1.monitoring.base import BaseMonitor def test_base_monitor_shutdown(mocked_client): diff --git a/argilla/tests/integration/monitoring/test_flair_monitoring.py b/argilla-v1/tests/integration/monitoring/test_flair_monitoring.py similarity index 95% rename from argilla/tests/integration/monitoring/test_flair_monitoring.py rename to argilla-v1/tests/integration/monitoring/test_flair_monitoring.py index 2d96e7685a..cfe762711e 100644 --- a/argilla/tests/integration/monitoring/test_flair_monitoring.py +++ b/argilla-v1/tests/integration/monitoring/test_flair_monitoring.py @@ -14,9 +14,9 @@ from time import sleep -from argilla.client.api import load -from argilla.monitoring.model_monitor import monitor from argilla_server.models import User +from argilla_v1.client.api import load +from argilla_v1.monitoring.model_monitor import monitor from tests.integration.utils import delete_ignoring_errors diff --git a/argilla/tests/integration/monitoring/test_monitor.py b/argilla-v1/tests/integration/monitoring/test_monitor.py similarity index 92% rename from argilla/tests/integration/monitoring/test_monitor.py rename to argilla-v1/tests/integration/monitoring/test_monitor.py index 9abaca3105..4b929592cb 100644 --- a/argilla/tests/integration/monitoring/test_monitor.py +++ b/argilla-v1/tests/integration/monitoring/test_monitor.py @@ -14,7 +14,7 @@ import warnings -import argilla +import argilla_v1 from argilla_server.models import User @@ -26,7 +26,7 @@ def test_monitor_with_non_supported_model(argilla_user: User): with warnings.catch_warnings(record=True) as warning_list: model = MockModel() - maybe_monitored = argilla.monitor(model, dataset="mock") + maybe_monitored = argilla_v1.monitor(model, dataset="mock") assert model == maybe_monitored assert any( @@ -50,7 +50,7 @@ def test_monitor_non_supported_huggingface_model(argilla_user: User): model = AutoModelForTokenClassification.from_pretrained("dslim/bert-base-NER") nlp = pipeline("ner", model=model, tokenizer=tokenizer) - maybe_monitored = argilla.monitor(nlp, dataset="ds") + maybe_monitored = argilla_v1.monitor(nlp, dataset="ds") assert nlp == maybe_monitored assert any( [ diff --git a/argilla/tests/integration/monitoring/test_spacy_monitoring.py b/argilla-v1/tests/integration/monitoring/test_spacy_monitoring.py similarity index 95% rename from argilla/tests/integration/monitoring/test_spacy_monitoring.py rename to argilla-v1/tests/integration/monitoring/test_spacy_monitoring.py index ee186b0c16..05f975766b 100644 --- a/argilla/tests/integration/monitoring/test_spacy_monitoring.py +++ b/argilla-v1/tests/integration/monitoring/test_spacy_monitoring.py @@ -15,8 +15,8 @@ import random from time import sleep -from argilla.client.api import load -from argilla.monitoring.model_monitor import monitor +from argilla_v1.client.api import load +from argilla_v1.monitoring.model_monitor import monitor from tests.integration.utils import delete_ignoring_errors diff --git a/argilla/tests/integration/monitoring/test_transformers_monitoring.py b/argilla-v1/tests/integration/monitoring/test_transformers_monitoring.py similarity index 94% rename from argilla/tests/integration/monitoring/test_transformers_monitoring.py rename to argilla-v1/tests/integration/monitoring/test_transformers_monitoring.py index db59a82727..dc5b046de9 100644 --- a/argilla/tests/integration/monitoring/test_transformers_monitoring.py +++ b/argilla-v1/tests/integration/monitoring/test_transformers_monitoring.py @@ -14,9 +14,9 @@ from time import sleep from typing import List, Union -import argilla +import argilla_v1 import pytest -from argilla.client.models import TextClassificationRecord +from argilla_v1.client.models import TextClassificationRecord from tests.integration.utils import delete_ignoring_errors @@ -32,7 +32,7 @@ def test_classifier_monitoring_with_all_scores( classifier_monitor_all_scores(expected_text) sleep(1) # wait for the consumer time - ds = argilla.load(classifier_dataset) + ds = argilla_v1.load(classifier_dataset) df = ds.to_pandas() assert len(df) == 1 record = TextClassificationRecord.parse_obj(df.to_dict(orient="records")[0]) @@ -47,7 +47,7 @@ def test_classifier_monitoring(mocked_client, classifier_monitor, classifier_dat classifier_monitor(expected_text) sleep(1) # wait for the consumer time - ds = argilla.load(classifier_dataset) + ds = argilla_v1.load(classifier_dataset) df = ds.to_pandas() assert len(df) == 1 record = TextClassificationRecord.parse_obj(df.to_dict(orient="records")[0]) @@ -59,7 +59,7 @@ def test_classifier_monitoring(mocked_client, classifier_monitor, classifier_dat classifier_monitor(texts) sleep(1) # wait for the consumer time - ds = argilla.load(classifier_dataset) + ds = argilla_v1.load(classifier_dataset) df = ds.to_pandas() assert len(df) == 2 assert set([r["text"] for r in df.inputs.values.tolist()]) == set(texts) @@ -68,7 +68,7 @@ def test_classifier_monitoring(mocked_client, classifier_monitor, classifier_dat classifier_monitor(expected_text, metadata={"some": "metadata"}) sleep(1) # wait for the consumer time - ds = argilla.load(classifier_dataset) + ds = argilla_v1.load(classifier_dataset) df = ds.to_pandas() assert len(df) == 1 assert df.metadata.values.tolist()[0] == {"some": "metadata"} @@ -85,7 +85,7 @@ def classifier_monitor_all_scores( classifier_dataset, monkeypatch, ): - monitor = argilla.monitor( + monitor = argilla_v1.monitor( sentiment_classifier_all_scores, dataset=classifier_dataset, sample_rate=1.0, @@ -101,7 +101,7 @@ def classifier_monitor( classifier_dataset, monkeypatch, ): - monitor = argilla.monitor( + monitor = argilla_v1.monitor( sentiment_classifier, dataset=classifier_dataset, sample_rate=1.0, @@ -159,7 +159,7 @@ def dataset(): @pytest.fixture def mocked_monitor(dataset, monkeypatch, zero_shot_classifier): - monitor = argilla.monitor( + monitor = argilla_v1.monitor( zero_shot_classifier, dataset=dataset, sample_rate=1.0, @@ -193,7 +193,7 @@ def check_zero_shot_results( pass sleep(1) # wait for the consumer time - ds = argilla.load(dataset) + ds = argilla_v1.load(dataset) df = ds.to_pandas() assert len(df) == 1 record = TextClassificationRecord.parse_obj(df.to_dict(orient="records")[0]) @@ -279,7 +279,7 @@ def test_monitor_zero_shot_with_multilabel( ) with pytest.raises(Exception): - argilla.load(dataset) + argilla_v1.load(dataset) check_zero_shot_results( predictions, @@ -339,7 +339,7 @@ def test_monitor_zero_shot_passing_metadata( ) sleep(1) # wait for the consumer time - ds = argilla.load(dataset) + ds = argilla_v1.load(dataset) df = ds.to_pandas() assert len(df) == 1 diff --git a/argilla/tests/integration/test_datasets_settings.py b/argilla-v1/tests/integration/test_datasets_settings.py similarity index 92% rename from argilla/tests/integration/test_datasets_settings.py rename to argilla-v1/tests/integration/test_datasets_settings.py index ca7624eacf..02f629e5d4 100644 --- a/argilla/tests/integration/test_datasets_settings.py +++ b/argilla-v1/tests/integration/test_datasets_settings.py @@ -16,26 +16,26 @@ from uuid import uuid4 import pytest -from argilla import Workspace -from argilla.client import singleton -from argilla.client.api import get_workspace -from argilla.client.client import Argilla -from argilla.client.sdk.commons.errors import ForbiddenApiError -from argilla.client.singleton import init -from argilla.datasets import ( +from argilla_server.contexts import accounts +from argilla_v1 import Workspace +from argilla_v1.client import singleton +from argilla_v1.client.api import get_workspace +from argilla_v1.client.client import Argilla +from argilla_v1.client.sdk.commons.errors import ForbiddenApiError +from argilla_v1.client.singleton import init +from argilla_v1.datasets import ( TextClassificationSettings, TokenClassificationSettings, configure_dataset, configure_dataset_settings, load_dataset_settings, ) -from argilla_server.contexts import accounts 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 argilla_v1.client.apis.datasets import LabelsSchemaSettings from sqlalchemy.ext.asyncio import AsyncSession from .helpers import SecuredClient @@ -139,7 +139,7 @@ def test_configure_dataset_deprecation_warning( def test_list_dataset(mocked_client: "SecuredClient"): - from argilla.client.singleton import active_client + from argilla_v1.client.singleton import active_client client = active_client() datasets = client.http_client.get("/api/datasets") diff --git a/argilla/tests/integration/test_delete_records_from_datasets.py b/argilla-v1/tests/integration/test_delete_records_from_datasets.py similarity index 92% rename from argilla/tests/integration/test_delete_records_from_datasets.py rename to argilla-v1/tests/integration/test_delete_records_from_datasets.py index ae6b235ba1..d6a3aabf4e 100644 --- a/argilla/tests/integration/test_delete_records_from_datasets.py +++ b/argilla-v1/tests/integration/test_delete_records_from_datasets.py @@ -15,12 +15,12 @@ import time import pytest -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 argilla_v1.client.api import delete_records, load, log +from argilla_v1.client.client import Argilla +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.client.sdk.commons.errors import ForbiddenApiError +from argilla_v1.client.singleton import init from tests.factories import AnnotatorFactory, UserFactory, WorkspaceFactory from tests.integration.utils import delete_ignoring_errors diff --git a/argilla/tests/integration/test_log_for_text_classification.py b/argilla-v1/tests/integration/test_log_for_text_classification.py similarity index 96% rename from argilla/tests/integration/test_log_for_text_classification.py rename to argilla-v1/tests/integration/test_log_for_text_classification.py index 1c2377d8ce..a37dd19fbb 100644 --- a/argilla/tests/integration/test_log_for_text_classification.py +++ b/argilla-v1/tests/integration/test_log_for_text_classification.py @@ -14,19 +14,19 @@ from typing import TYPE_CHECKING -import argilla as rg +import argilla_v1 as rg import pytest -from argilla.client.api import load, log -from argilla.client.client import Argilla -from argilla.client.datasets import read_datasets -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.client.sdk.commons.errors import ( +from argilla_server.settings import settings +from argilla_v1.client.api import load, log +from argilla_v1.client.client import Argilla +from argilla_v1.client.datasets import read_datasets +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.client.sdk.commons.errors import ( BadRequestApiError, GenericApiError, ValidationApiError, ) -from argilla.client.singleton import init -from argilla_server.settings import settings +from argilla_v1.client.singleton import init from tests.factories import WorkspaceFactory from tests.integration.utils import delete_ignoring_errors diff --git a/argilla/tests/integration/test_log_for_token_classification.py b/argilla-v1/tests/integration/test_log_for_token_classification.py similarity index 92% rename from argilla/tests/integration/test_log_for_token_classification.py rename to argilla-v1/tests/integration/test_log_for_token_classification.py index d106270138..927b59df0d 100644 --- a/argilla/tests/integration/test_log_for_token_classification.py +++ b/argilla-v1/tests/integration/test_log_for_token_classification.py @@ -11,15 +11,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 argilla +import argilla_v1 import pytest -from argilla import TokenClassificationRecord -from argilla.client import api -from argilla.client.client import Argilla -from argilla.client.sdk.commons.errors import NotFoundApiError -from argilla.client.singleton import ArgillaSingleton -from argilla.metrics import __all__ as ALL_METRICS -from argilla.metrics import entity_consistency +from argilla_v1 import TokenClassificationRecord +from argilla_v1.client.client import Argilla +from argilla_v1.client.sdk.commons.errors import NotFoundApiError +from argilla_v1.client.singleton import ArgillaSingleton +from argilla_v1.metrics import __all__ as ALL_METRICS +from argilla_v1.metrics import entity_consistency from tests.integration.utils import delete_ignoring_errors @@ -165,7 +164,7 @@ def test_search_keywords(api: Argilla): # This revision does not includes the vectors info, so tests will pass revision="fff5f572e4cc3127f196f46ba3f9914c6fd0d763", ) - dataset_rb = argilla.read_datasets(dataset_ds, task="TokenClassification") + dataset_rb = argilla_v1.read_datasets(dataset_ds, task="TokenClassification") delete_ignoring_errors(dataset) api.log(name=dataset, records=dataset_rb) @@ -190,7 +189,7 @@ def test_log_data_with_vectors_and_update_ok(api: Argilla): delete_ignoring_errors(dataset) records = [ - argilla.TokenClassificationRecord( + argilla_v1.TokenClassificationRecord( id=i, text=text, tokens=text.split(), @@ -226,7 +225,7 @@ def test_log_data_with_vectors_and_partial_update_ok(api: Argilla): # Logging records with vector info records = [ - argilla.TokenClassificationRecord(id=i, text=text, tokens=text.split(), vectors={"test-vector": [i] * 5}) + argilla_v1.TokenClassificationRecord(id=i, text=text, tokens=text.split(), vectors={"test-vector": [i] * 5}) for i in range(0, expected_n_records) ] api.log(records=records, name=dataset) @@ -268,7 +267,7 @@ def test_logging_data_with_concurrency(api: Argilla): dataset = "test_logging_data_with_concurrency" dataset_ds = load_dataset("rubrix/gutenberg_spacy-ner", split="train") - dataset_rb = argilla.read_datasets(dataset_ds, task="TokenClassification") + dataset_rb = argilla_v1.read_datasets(dataset_ds, task="TokenClassification") delete_ignoring_errors(dataset) api.log(name=dataset, records=dataset_rb, batch_size=int(len(dataset_ds) / 4), num_threads=4) diff --git a/argilla/tests/integration/training/__init__.py b/argilla-v1/tests/integration/training/__init__.py similarity index 100% rename from argilla/tests/integration/training/__init__.py rename to argilla-v1/tests/integration/training/__init__.py diff --git a/argilla/tests/integration/training/helpers.py b/argilla-v1/tests/integration/training/helpers.py similarity index 96% rename from argilla/tests/integration/training/helpers.py rename to argilla-v1/tests/integration/training/helpers.py index e7d364a375..431c20c472 100644 --- a/argilla/tests/integration/training/helpers.py +++ b/argilla-v1/tests/integration/training/helpers.py @@ -16,7 +16,7 @@ import shutil from pathlib import Path -from argilla.training import ArgillaTrainer +from argilla_v1.training import ArgillaTrainer def train_with_cleanup(trainer: ArgillaTrainer, output_dir: str, train: bool = True) -> None: diff --git a/argilla/tests/integration/training/test_base.py b/argilla-v1/tests/integration/training/test_base.py similarity index 94% rename from argilla/tests/integration/training/test_base.py rename to argilla-v1/tests/integration/training/test_base.py index f076ed4191..4566aee624 100644 --- a/argilla/tests/integration/training/test_base.py +++ b/argilla-v1/tests/integration/training/test_base.py @@ -13,12 +13,12 @@ # limitations under the License. import pytest -from argilla.client.datasets import ( +from argilla_v1.client.datasets import ( DatasetForTextClassification, DatasetForTokenClassification, ) -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training import ArgillaTrainer +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training import ArgillaTrainer def test_wrong_framework(dataset_text_classification): diff --git a/argilla/tests/integration/training/test_openai.py b/argilla-v1/tests/integration/training/test_openai.py similarity index 97% rename from argilla/tests/integration/training/test_openai.py rename to argilla-v1/tests/integration/training/test_openai.py index 778a97c4c9..c152978728 100644 --- a/argilla/tests/integration/training/test_openai.py +++ b/argilla-v1/tests/integration/training/test_openai.py @@ -15,7 +15,7 @@ import os import pytest -from argilla.training import ArgillaTrainer +from argilla_v1.training import ArgillaTrainer FRAMEWORK = "openai" MODEL = "curie" diff --git a/argilla/tests/integration/training/test_peft.py b/argilla-v1/tests/integration/training/test_peft.py similarity index 96% rename from argilla/tests/integration/training/test_peft.py rename to argilla-v1/tests/integration/training/test_peft.py index cee8ec8066..49205e323d 100644 --- a/argilla/tests/integration/training/test_peft.py +++ b/argilla-v1/tests/integration/training/test_peft.py @@ -16,8 +16,8 @@ import sys import pytest -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training import ArgillaTrainer +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training import ArgillaTrainer from .helpers import train_with_cleanup diff --git a/argilla/tests/integration/training/test_setfit.py b/argilla-v1/tests/integration/training/test_setfit.py similarity index 95% rename from argilla/tests/integration/training/test_setfit.py rename to argilla-v1/tests/integration/training/test_setfit.py index 4c0022c9bc..b0bc8f6af7 100644 --- a/argilla/tests/integration/training/test_setfit.py +++ b/argilla-v1/tests/integration/training/test_setfit.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.models import TextClassificationRecord -from argilla.training import ArgillaTrainer +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.training import ArgillaTrainer from .helpers import train_with_cleanup diff --git a/argilla/tests/integration/training/test_spacy.py b/argilla-v1/tests/integration/training/test_spacy.py similarity index 98% rename from argilla/tests/integration/training/test_spacy.py rename to argilla-v1/tests/integration/training/test_spacy.py index 14a45ab6ad..10a3a620b8 100644 --- a/argilla/tests/integration/training/test_spacy.py +++ b/argilla-v1/tests/integration/training/test_spacy.py @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla as rg +import argilla_v1 as rg import pytest -from argilla.training import ArgillaTrainer +from argilla_v1.training import ArgillaTrainer from tests.integration.training.helpers import cleanup_spacy_config, train_with_cleanup diff --git a/argilla/tests/integration/training/test_span_marker.py b/argilla-v1/tests/integration/training/test_span_marker.py similarity index 97% rename from argilla/tests/integration/training/test_span_marker.py rename to argilla-v1/tests/integration/training/test_span_marker.py index 47ac1c30a1..c5bd8d5898 100644 --- a/argilla/tests/integration/training/test_span_marker.py +++ b/argilla-v1/tests/integration/training/test_span_marker.py @@ -13,8 +13,8 @@ # limitations under the License. -from argilla.client.models import TokenClassificationRecord -from argilla.training import ArgillaTrainer +from argilla_v1.client.models import TokenClassificationRecord +from argilla_v1.training import ArgillaTrainer from .helpers import train_with_cleanup diff --git a/argilla/tests/integration/training/test_transformers.py b/argilla-v1/tests/integration/training/test_transformers.py similarity index 96% rename from argilla/tests/integration/training/test_transformers.py rename to argilla-v1/tests/integration/training/test_transformers.py index da267d5b85..fb7efede56 100644 --- a/argilla/tests/integration/training/test_transformers.py +++ b/argilla-v1/tests/integration/training/test_transformers.py @@ -13,8 +13,8 @@ # limitations under the License. -from argilla.client.models import TextClassificationRecord, TokenClassificationRecord -from argilla.training import ArgillaTrainer +from argilla_v1.client.models import TextClassificationRecord, TokenClassificationRecord +from argilla_v1.training import ArgillaTrainer from .helpers import train_with_cleanup diff --git a/argilla/tests/integration/utils.py b/argilla-v1/tests/integration/utils.py similarity index 94% rename from argilla/tests/integration/utils.py rename to argilla-v1/tests/integration/utils.py index 0c26a6bcba..feca5b083a 100644 --- a/argilla/tests/integration/utils.py +++ b/argilla-v1/tests/integration/utils.py @@ -14,7 +14,7 @@ from typing import Any -from argilla.client.api import delete +from argilla_v1.client.api import delete def delete_ignoring_errors(*args: Any, **kwargs: Any) -> None: diff --git a/argilla/tests/pydantic_v1/__init__.py b/argilla-v1/tests/pydantic_v1/__init__.py similarity index 100% rename from argilla/tests/pydantic_v1/__init__.py rename to argilla-v1/tests/pydantic_v1/__init__.py diff --git a/argilla/tests/pydantic_v1/generics.py b/argilla-v1/tests/pydantic_v1/generics.py similarity index 100% rename from argilla/tests/pydantic_v1/generics.py rename to argilla-v1/tests/pydantic_v1/generics.py diff --git a/argilla/tests/pydantic_v1/utils.py b/argilla-v1/tests/pydantic_v1/utils.py similarity index 100% rename from argilla/tests/pydantic_v1/utils.py rename to argilla-v1/tests/pydantic_v1/utils.py diff --git a/argilla/tests/unit/__init__.py b/argilla-v1/tests/unit/__init__.py similarity index 100% rename from argilla/tests/unit/__init__.py rename to argilla-v1/tests/unit/__init__.py diff --git a/argilla/tests/unit/cli/__init__.py b/argilla-v1/tests/unit/cli/__init__.py similarity index 100% rename from argilla/tests/unit/cli/__init__.py rename to argilla-v1/tests/unit/cli/__init__.py diff --git a/argilla/tests/unit/cli/conftest.py b/argilla-v1/tests/unit/cli/conftest.py similarity index 80% rename from argilla/tests/unit/cli/conftest.py rename to argilla-v1/tests/unit/cli/conftest.py index 7399836bca..d775c51ab8 100644 --- a/argilla/tests/unit/cli/conftest.py +++ b/argilla-v1/tests/unit/cli/conftest.py @@ -18,15 +18,15 @@ import httpx import pytest -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 argilla_v1.cli.app import app +from argilla_v1.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.users import User +from argilla_v1.client.workspaces import Workspace from typer.testing import CliRunner if TYPE_CHECKING: - from argilla.cli.typer_ext import ArgillaTyper + from argilla_v1.cli.typer_ext import ArgillaTyper from pytest_mock import MockerFixture @@ -42,13 +42,13 @@ def cli() -> "ArgillaTyper": @pytest.fixture def login_mock(mocker: "MockerFixture") -> None: - mocker.patch("argilla.client.login.ArgillaCredentials.exists", return_value=True) - mocker.patch("argilla.client.api.ArgillaSingleton.init") + mocker.patch("argilla_v1.client.login.ArgillaCredentials.exists", return_value=True) + mocker.patch("argilla_v1.client.api.ArgillaSingleton.init") @pytest.fixture def not_logged_mock(mocker: "MockerFixture") -> None: - mocker.patch("argilla.client.login.ArgillaCredentials.exists", return_value=False) + mocker.patch("argilla_v1.client.login.ArgillaCredentials.exists", return_value=False) @pytest.fixture diff --git a/argilla/tests/unit/cli/datasets/__init__.py b/argilla-v1/tests/unit/cli/datasets/__init__.py similarity index 100% rename from argilla/tests/unit/cli/datasets/__init__.py rename to argilla-v1/tests/unit/cli/datasets/__init__.py diff --git a/argilla/tests/unit/cli/datasets/conftest.py b/argilla-v1/tests/unit/cli/datasets/conftest.py similarity index 80% rename from argilla/tests/unit/cli/datasets/conftest.py rename to argilla-v1/tests/unit/cli/datasets/conftest.py index 95d5203343..e0bc1362fc 100644 --- a/argilla/tests/unit/cli/datasets/conftest.py +++ b/argilla-v1/tests/unit/cli/datasets/conftest.py @@ -18,14 +18,14 @@ 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 -from argilla.client.feedback.schemas.remote.questions import RemoteTextQuestion -from argilla.client.sdk.datasets.models import Dataset +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas.remote.fields import RemoteTextField +from argilla_v1.client.feedback.schemas.remote.questions import RemoteTextQuestion +from argilla_v1.client.sdk.datasets.models import Dataset if TYPE_CHECKING: - from argilla.client.workspaces import Workspace + from argilla_v1.client.workspaces import Workspace @pytest.fixture diff --git a/argilla/tests/unit/cli/datasets/test_delete.py b/argilla-v1/tests/unit/cli/datasets/test_delete.py similarity index 85% rename from argilla/tests/unit/cli/datasets/test_delete.py rename to argilla-v1/tests/unit/cli/datasets/test_delete.py index 25b58c367e..317858a3e4 100644 --- a/argilla/tests/unit/cli/datasets/test_delete.py +++ b/argilla-v1/tests/unit/cli/datasets/test_delete.py @@ -17,7 +17,7 @@ import pytest if TYPE_CHECKING: - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer @@ -33,11 +33,11 @@ def test_delete_dataset( remote_feedback_dataset: "RemoteFeedbackDataset", ) -> None: dataset_from_argilla_mock = mocker.patch( - "argilla.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", + "argilla_v1.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", return_value=remote_feedback_dataset, ) remote_feedback_dataset_delete_mock = mocker.patch( - "argilla.client.feedback.dataset.remote.dataset.RemoteFeedbackDataset.delete" + "argilla_v1.client.feedback.dataset.remote.dataset.RemoteFeedbackDataset.delete" ) result = cli_runner.invoke(cli, "datasets --name unit-test --workspace unit-test delete") @@ -55,11 +55,11 @@ def test_delete_dataset_runtime_error( remote_feedback_dataset: "RemoteFeedbackDataset", ) -> None: dataset_from_argilla_mock = mocker.patch( - "argilla.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", + "argilla_v1.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", return_value=remote_feedback_dataset, ) remote_feedback_dataset_delete_mock = mocker.patch( - "argilla.client.feedback.dataset.remote.dataset.RemoteFeedbackDataset.delete", side_effect=RuntimeError + "argilla_v1.client.feedback.dataset.remote.dataset.RemoteFeedbackDataset.delete", side_effect=RuntimeError ) result = cli_runner.invoke(cli, "datasets --name unit-test --workspace unit-test delete") diff --git a/argilla/tests/unit/cli/datasets/test_list.py b/argilla-v1/tests/unit/cli/datasets/test_list.py similarity index 83% rename from argilla/tests/unit/cli/datasets/test_list.py rename to argilla-v1/tests/unit/cli/datasets/test_list.py index 6daa430316..e3432353db 100644 --- a/argilla/tests/unit/cli/datasets/test_list.py +++ b/argilla-v1/tests/unit/cli/datasets/test_list.py @@ -16,12 +16,12 @@ from unittest.mock import ANY, call import pytest -from argilla.client.enums import DatasetType +from argilla_v1.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 argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.sdk.datasets.models import Dataset from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer @@ -39,7 +39,7 @@ def test_list_datasets( ) -> None: add_row_spy = mocker.spy(Table, "add_row") list_datasets_mock = mocker.patch( - "argilla.client.api.list_datasets", return_value=[remote_feedback_dataset, dataset] + "argilla_v1.client.api.list_datasets", return_value=[remote_feedback_dataset, dataset] ) result = cli_runner.invoke(cli, "datasets list") @@ -72,8 +72,8 @@ def test_list_datasets( ) def test_list_datasets_with_workspace(self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture") -> None: - workspace_from_name_mock = mocker.patch("argilla.client.workspaces.Workspace.from_name") - list_datasets_mock = mocker.patch("argilla.client.api.list_datasets") + workspace_from_name_mock = mocker.patch("argilla_v1.client.workspaces.Workspace.from_name") + list_datasets_mock = mocker.patch("argilla_v1.client.api.list_datasets") result = cli_runner.invoke(cli, "datasets list --workspace unit-test") @@ -84,7 +84,9 @@ def test_list_datasets_with_workspace(self, cli_runner: "CliRunner", cli: "Typer def test_list_datasets_with_non_existing_workspace( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture" ) -> None: - workspace_from_name_mock = mocker.patch("argilla.client.workspaces.Workspace.from_name", side_effect=ValueError) + workspace_from_name_mock = mocker.patch( + "argilla_v1.client.workspaces.Workspace.from_name", side_effect=ValueError + ) result = cli_runner.invoke(cli, "datasets list --workspace unit-test") @@ -95,7 +97,7 @@ def test_list_datasets_with_non_existing_workspace( def test_list_datasets_using_type_feedback_filter( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture" ) -> None: - list_datasets_mock = mocker.patch("argilla.client.api.list_datasets") + list_datasets_mock = mocker.patch("argilla_v1.client.api.list_datasets") result = cli_runner.invoke(cli, "datasets list --type feedback") @@ -105,7 +107,7 @@ def test_list_datasets_using_type_feedback_filter( def test_list_datasets_using_type_other_filter( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture" ) -> None: - list_datasets_mock = mocker.patch("argilla.client.api.list_datasets") + list_datasets_mock = mocker.patch("argilla_v1.client.api.list_datasets") result = cli_runner.invoke(cli, "datasets list --type other") diff --git a/argilla/tests/unit/cli/datasets/test_push.py b/argilla-v1/tests/unit/cli/datasets/test_push.py similarity index 83% rename from argilla/tests/unit/cli/datasets/test_push.py rename to argilla-v1/tests/unit/cli/datasets/test_push.py index 5ecfd54bd7..362a3a61d4 100644 --- a/argilla/tests/unit/cli/datasets/test_push.py +++ b/argilla-v1/tests/unit/cli/datasets/test_push.py @@ -17,8 +17,8 @@ import pytest if TYPE_CHECKING: - from argilla.client.feedback.dataset.local.dataset import FeedbackDataset - from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset + from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset + from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer @@ -35,15 +35,15 @@ def test_push_to_huggingface( remote_feedback_dataset: "RemoteFeedbackDataset", ) -> None: dataset_from_argilla_mock = mocker.patch( - "argilla.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", + "argilla_v1.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", return_value=remote_feedback_dataset, ) dataset_pull_mock = mocker.patch( - "argilla.client.feedback.dataset.remote.dataset.RemoteFeedbackDataset.pull", + "argilla_v1.client.feedback.dataset.remote.dataset.RemoteFeedbackDataset.pull", return_value=feedback_dataset, ) push_to_huggingface_mock = mocker.patch( - "argilla.client.feedback.integrations.huggingface.dataset.HuggingFaceDatasetMixin.push_to_huggingface", + "argilla_v1.client.feedback.integrations.huggingface.dataset.HuggingFaceDatasetMixin.push_to_huggingface", return_value=None, ) @@ -67,7 +67,7 @@ def test_push_to_huggingface_missing_repo_id_arg( remote_feedback_dataset: "RemoteFeedbackDataset", ) -> None: mocker.patch( - "argilla.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", + "argilla_v1.client.feedback.dataset.local.dataset.FeedbackDataset.from_argilla", return_value=remote_feedback_dataset, ) diff --git a/argilla/tests/unit/cli/info/__init__.py b/argilla-v1/tests/unit/cli/info/__init__.py similarity index 100% rename from argilla/tests/unit/cli/info/__init__.py rename to argilla-v1/tests/unit/cli/info/__init__.py diff --git a/argilla/tests/unit/cli/info/test_info.py b/argilla-v1/tests/unit/cli/info/test_info.py similarity index 94% rename from argilla/tests/unit/cli/info/test_info.py rename to argilla-v1/tests/unit/cli/info/test_info.py index aff2c34359..0e66ac025e 100644 --- a/argilla/tests/unit/cli/info/test_info.py +++ b/argilla-v1/tests/unit/cli/info/test_info.py @@ -15,8 +15,8 @@ from typing import TYPE_CHECKING import pytest -from argilla._version import version -from argilla.client.apis.status import ApiStatus +from argilla_v1._version import version +from argilla_v1.client.apis.status import ApiStatus if TYPE_CHECKING: from click.testing import CliRunner @@ -27,7 +27,7 @@ @pytest.mark.usefixtures("login_mock") def test_info_command(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture") -> None: status_get_status_mock = mocker.patch( - "argilla.client.apis.status.Status.get_status", + "argilla_v1.client.apis.status.Status.get_status", return_value=ApiStatus( **{ "version": "1.2.3", diff --git a/argilla/tests/unit/cli/login/__init__.py b/argilla-v1/tests/unit/cli/login/__init__.py similarity index 100% rename from argilla/tests/unit/cli/login/__init__.py rename to argilla-v1/tests/unit/cli/login/__init__.py diff --git a/argilla/tests/unit/cli/login/test_login.py b/argilla-v1/tests/unit/cli/login/test_login.py similarity index 94% rename from argilla/tests/unit/cli/login/test_login.py rename to argilla-v1/tests/unit/cli/login/test_login.py index f7ded13ce2..0d13345453 100644 --- a/argilla/tests/unit/cli/login/test_login.py +++ b/argilla-v1/tests/unit/cli/login/test_login.py @@ -21,7 +21,7 @@ def test_login(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): - login_mock = mocker.patch("argilla.client.login.login") + login_mock = mocker.patch("argilla_v1.client.login.login") result = cli_runner.invoke( cli, @@ -38,7 +38,7 @@ def test_login(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): def test_login_fails(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): - login_mock = mocker.patch("argilla.client.login.login") + login_mock = mocker.patch("argilla_v1.client.login.login") login_mock.side_effect = ValueError result = cli_runner.invoke( diff --git a/argilla/tests/unit/cli/logout/__init__.py b/argilla-v1/tests/unit/cli/logout/__init__.py similarity index 100% rename from argilla/tests/unit/cli/logout/__init__.py rename to argilla-v1/tests/unit/cli/logout/__init__.py diff --git a/argilla/tests/unit/cli/logout/test_logout.py b/argilla-v1/tests/unit/cli/logout/test_logout.py similarity index 83% rename from argilla/tests/unit/cli/logout/test_logout.py rename to argilla-v1/tests/unit/cli/logout/test_logout.py index 876a29bbb6..2c6408f49a 100644 --- a/argilla/tests/unit/cli/logout/test_logout.py +++ b/argilla-v1/tests/unit/cli/logout/test_logout.py @@ -21,8 +21,8 @@ def test_logout(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): - init_callback_mock = mocker.patch("argilla.cli.callback.init_callback") - argilla_credentials_remove_mock = mocker.patch("argilla.client.login.ArgillaCredentials.remove") + init_callback_mock = mocker.patch("argilla_v1.cli.callback.init_callback") + argilla_credentials_remove_mock = mocker.patch("argilla_v1.client.login.ArgillaCredentials.remove") result = cli_runner.invoke( cli, @@ -35,7 +35,7 @@ def test_logout(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): def test_logout_fails(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): - init_callback_mock = mocker.patch("argilla.cli.callback.init_callback") + init_callback_mock = mocker.patch("argilla_v1.cli.callback.init_callback") init_callback_mock.side_effect = ValueError("Error") result = cli_runner.invoke( diff --git a/argilla/tests/unit/cli/test_server.py b/argilla-v1/tests/unit/cli/test_server.py similarity index 100% rename from argilla/tests/unit/cli/test_server.py rename to argilla-v1/tests/unit/cli/test_server.py diff --git a/argilla/tests/unit/cli/users/__init__.py b/argilla-v1/tests/unit/cli/users/__init__.py similarity index 100% rename from argilla/tests/unit/cli/users/__init__.py rename to argilla-v1/tests/unit/cli/users/__init__.py diff --git a/argilla/tests/unit/cli/users/test_create.py b/argilla-v1/tests/unit/cli/users/test_create.py similarity index 91% rename from argilla/tests/unit/cli/users/test_create.py rename to argilla-v1/tests/unit/cli/users/test_create.py index ff40d6464b..6b0b78c919 100644 --- a/argilla/tests/unit/cli/users/test_create.py +++ b/argilla-v1/tests/unit/cli/users/test_create.py @@ -15,10 +15,10 @@ from typing import TYPE_CHECKING, Type import pytest -from argilla.client.sdk.users.models import UserRole +from argilla_v1.client.sdk.users.models import UserRole if TYPE_CHECKING: - from argilla.client.users import User + from argilla_v1.client.users import User from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer @@ -27,7 +27,7 @@ @pytest.mark.usefixtures("login_mock") class TestSuiteCreateUserCommand: def test_create_user(self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", user: "User") -> None: - user_create_mock = mocker.patch("argilla.client.users.User.create", return_value=user) + user_create_mock = mocker.patch("argilla_v1.client.users.User.create", return_value=user) result = cli_runner.invoke( cli, @@ -66,7 +66,7 @@ def test_create_user_errors( ExceptionType: Type[Exception], expected_msg: str, ) -> None: - user_create_mock = mocker.patch("argilla.client.users.User.create", side_effect=ExceptionType) + user_create_mock = mocker.patch("argilla_v1.client.users.User.create", side_effect=ExceptionType) result = cli_runner.invoke( cli, diff --git a/argilla/tests/unit/cli/users/test_delete.py b/argilla-v1/tests/unit/cli/users/test_delete.py similarity index 84% rename from argilla/tests/unit/cli/users/test_delete.py rename to argilla-v1/tests/unit/cli/users/test_delete.py index 1435b4fe70..5fd699bd5a 100644 --- a/argilla/tests/unit/cli/users/test_delete.py +++ b/argilla-v1/tests/unit/cli/users/test_delete.py @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import TYPE_CHECKING, Type +from typing import TYPE_CHECKING import pytest if TYPE_CHECKING: - from argilla.client.users import User + from argilla_v1.client.users import User from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer @@ -26,8 +26,8 @@ @pytest.mark.usefixtures("login_mock") class TestSuiteDeleteUserCommand: def test_delete_user(self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", user: "User") -> None: - user_from_name_mock = mocker.patch("argilla.client.users.User.from_name", return_value=user) - user_delete_mock = mocker.patch("argilla.client.users.User.delete") + user_from_name_mock = mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) + user_delete_mock = mocker.patch("argilla_v1.client.users.User.delete") result = cli_runner.invoke(cli, "users --username unit-test delete") @@ -40,7 +40,7 @@ def test_delete_user(self, cli_runner: "CliRunner", cli: "Typer", mocker: "Mocke def test_delete_user_not_found( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", user: "User" ) -> None: - user_from_name_mock = mocker.patch("argilla.client.users.User.from_name", side_effect=ValueError) + user_from_name_mock = mocker.patch("argilla_v1.client.users.User.from_name", side_effect=ValueError) result = cli_runner.invoke(cli, "users --username unit-test delete") assert result.exit_code == 1 @@ -51,7 +51,7 @@ def test_delete_user_runtime_error( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", user: "User" ) -> None: user_delete_mock = mocker.patch.object(user, "delete", side_effect=RuntimeError) - user_from_name_mock = mocker.patch("argilla.client.users.User.from_name", return_value=user) + user_from_name_mock = mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) result = cli_runner.invoke(cli, "users --username unit-test delete") assert result.exit_code == 1 diff --git a/argilla/tests/unit/cli/users/test_list.py b/argilla-v1/tests/unit/cli/users/test_list.py similarity index 82% rename from argilla/tests/unit/cli/users/test_list.py rename to argilla-v1/tests/unit/cli/users/test_list.py index 7ef9bc34c5..16909894eb 100644 --- a/argilla/tests/unit/cli/users/test_list.py +++ b/argilla-v1/tests/unit/cli/users/test_list.py @@ -12,18 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -from datetime import datetime from typing import TYPE_CHECKING from unittest.mock import ANY -from uuid import uuid4 import pytest -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 argilla_v1.client.users import User + from argilla_v1.client.workspaces import Workspace from click.testing import CliRunner from pytest_mock import MockerFixture from typer import Typer @@ -33,7 +30,7 @@ class TestSuiteListUsersCommand: def test_list_users(self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", user: "User") -> None: add_row_spy = mocker.spy(Table, "add_row") - user_list_mock = mocker.patch("argilla.client.users.User.list", return_value=[user]) + user_list_mock = mocker.patch("argilla_v1.client.users.User.list", return_value=[user]) result = cli_runner.invoke(cli, "users list") @@ -55,8 +52,10 @@ def test_list_users_with_workspace( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", user: "User", workspace: "Workspace" ) -> None: add_row_spy = mocker.spy(Table, "add_row") - workspace_from_name_mock = mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.workspaces.Workspace.users", new_callable=lambda: [user]) + workspace_from_name_mock = mocker.patch( + "argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace + ) + mocker.patch("argilla_v1.client.workspaces.Workspace.users", new_callable=lambda: [user]) result = cli_runner.invoke(cli, "users list --workspace unit-test") @@ -78,7 +77,7 @@ def test_list_users_with_role( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", user: "User" ) -> None: add_row_spy = mocker.spy(Table, "add_row") - user_list_mock = mocker.patch("argilla.client.users.User.list", return_value=[user]) + user_list_mock = mocker.patch("argilla_v1.client.users.User.list", return_value=[user]) result = cli_runner.invoke(cli, "users list --role annotator") diff --git a/argilla/tests/unit/cli/whoami/__init__.py b/argilla-v1/tests/unit/cli/whoami/__init__.py similarity index 100% rename from argilla/tests/unit/cli/whoami/__init__.py rename to argilla-v1/tests/unit/cli/whoami/__init__.py diff --git a/argilla/tests/unit/cli/whoami/test_whoami.py b/argilla-v1/tests/unit/cli/whoami/test_whoami.py similarity index 100% rename from argilla/tests/unit/cli/whoami/test_whoami.py rename to argilla-v1/tests/unit/cli/whoami/test_whoami.py diff --git a/argilla/tests/unit/cli/workspaces/__init__.py b/argilla-v1/tests/unit/cli/workspaces/__init__.py similarity index 100% rename from argilla/tests/unit/cli/workspaces/__init__.py rename to argilla-v1/tests/unit/cli/workspaces/__init__.py diff --git a/argilla/tests/unit/cli/workspaces/test_add_user.py b/argilla-v1/tests/unit/cli/workspaces/test_add_user.py similarity index 73% rename from argilla/tests/unit/cli/workspaces/test_add_user.py rename to argilla-v1/tests/unit/cli/workspaces/test_add_user.py index 16551e2e32..30b14423a2 100644 --- a/argilla/tests/unit/cli/workspaces/test_add_user.py +++ b/argilla-v1/tests/unit/cli/workspaces/test_add_user.py @@ -27,9 +27,9 @@ class TestSuiteWorkspaceAddUser: def test_workspace_add_user( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", return_value=user) - mocker.patch("argilla.client.workspaces.Workspace.add_user") + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) + mocker.patch("argilla_v1.client.workspaces.Workspace.add_user") result = cli_runner.invoke(cli, "workspaces --name unit-test add-user unit-test") @@ -39,7 +39,7 @@ def test_workspace_add_user( def test_workspace_add_user_with_non_existing_workspace( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture" ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", side_effect=ValueError) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", side_effect=ValueError) result = cli_runner.invoke(cli, "workspaces --name unit-test add-user unit-test") @@ -49,8 +49,8 @@ def test_workspace_add_user_with_non_existing_workspace( def test_workspace_add_user_with_non_existing_user( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", side_effect=ValueError) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", side_effect=ValueError) result = cli_runner.invoke(cli, "workspaces --name unit-test add-user unit-test") @@ -61,8 +61,8 @@ def test_workspace_add_user_with_owner_user( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: user.role = "owner" - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", return_value=user) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) result = cli_runner.invoke(cli, "workspaces --name unit-test add-user unit-test") @@ -72,9 +72,9 @@ def test_workspace_add_user_with_owner_user( def test_workspace_add_user_with_user_belonging_to_workspace( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", return_value=user) - mocker.patch("argilla.client.workspaces.Workspace.add_user", side_effect=ValueError) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) + mocker.patch("argilla_v1.client.workspaces.Workspace.add_user", side_effect=ValueError) result = cli_runner.invoke(cli, "workspaces --name unit-test add-user unit-test") @@ -84,9 +84,9 @@ def test_workspace_add_user_with_user_belonging_to_workspace( def test_workspace_add_user_with_unexpected_error( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", return_value=user) - mocker.patch("argilla.client.workspaces.Workspace.add_user", side_effect=RuntimeError) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) + mocker.patch("argilla_v1.client.workspaces.Workspace.add_user", side_effect=RuntimeError) result = cli_runner.invoke(cli, "workspaces --name unit-test add-user unit-test") @@ -96,9 +96,9 @@ def test_workspace_add_user_with_unexpected_error( def test_workspace_add_user_with_unexpected_error_retieve_user( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", side_effect=RuntimeError) - mocker.patch("argilla.client.workspaces.Workspace.add_user") + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", side_effect=RuntimeError) + mocker.patch("argilla_v1.client.workspaces.Workspace.add_user") result = cli_runner.invoke(cli, "workspaces --name unit-test add-user unit-test") diff --git a/argilla/tests/unit/cli/workspaces/test_create.py b/argilla-v1/tests/unit/cli/workspaces/test_create.py similarity index 90% rename from argilla/tests/unit/cli/workspaces/test_create.py rename to argilla-v1/tests/unit/cli/workspaces/test_create.py index 994eea8cd5..c75cfeeefe 100644 --- a/argilla/tests/unit/cli/workspaces/test_create.py +++ b/argilla-v1/tests/unit/cli/workspaces/test_create.py @@ -13,7 +13,6 @@ # limitations under the License. from typing import TYPE_CHECKING -from unittest.mock import ANY import pytest @@ -22,8 +21,6 @@ from pytest_mock import MockerFixture from typer import Typer -from argilla.client.workspaces import Workspace - @pytest.mark.usefixtures("login_mock") class TestSuiteWorkspaceCreateCommand: @@ -34,7 +31,7 @@ def test_cli_workspaces_create_without_name(self, cli_runner: "CliRunner", cli: def test_cli_workspaces_create_with_name( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture" ) -> None: - workspaces_create_mock = mocker.patch("argilla.client.workspaces.Workspace.create") + workspaces_create_mock = mocker.patch("argilla_v1.client.workspaces.Workspace.create") result = cli_runner.invoke(cli, "workspaces create workspace25") assert result.exit_code == 0 @@ -42,7 +39,7 @@ def test_cli_workspaces_create_with_name( def test_workspace_create_already_exists(self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): mocker.patch( - "argilla.client.workspaces.Workspace.create", + "argilla_v1.client.workspaces.Workspace.create", side_effect=ValueError("Workspace with name=`workspace1` already exists, so please use a different name."), ) @@ -53,7 +50,7 @@ def test_workspace_create_already_exists(self, cli_runner: "CliRunner", cli: "Ty def test_workspace_create_runtime_exception(self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture"): mocker.patch( - "argilla.client.workspaces.Workspace.create", + "argilla_v1.client.workspaces.Workspace.create", side_effect=RuntimeError("An unexpected error occurred when trying to create the workspace"), ) diff --git a/argilla/tests/unit/cli/workspaces/test_delete_user.py b/argilla-v1/tests/unit/cli/workspaces/test_delete_user.py similarity index 77% rename from argilla/tests/unit/cli/workspaces/test_delete_user.py rename to argilla-v1/tests/unit/cli/workspaces/test_delete_user.py index 4d9d39fe1b..314eb552e5 100644 --- a/argilla/tests/unit/cli/workspaces/test_delete_user.py +++ b/argilla-v1/tests/unit/cli/workspaces/test_delete_user.py @@ -27,9 +27,9 @@ class TestSuiteWorkspaceDeleteUser: def test_workspace_delete_user( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", return_value=user) - mocker.patch("argilla.client.workspaces.Workspace.delete_user") + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) + mocker.patch("argilla_v1.client.workspaces.Workspace.delete_user") result = cli_runner.invoke(cli, "workspaces --name unit-test delete-user unit-test") @@ -39,7 +39,7 @@ def test_workspace_delete_user( def test_workspace_delete_user_with_non_existing_workspace( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture" ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", side_effect=ValueError) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", side_effect=ValueError) result = cli_runner.invoke(cli, "workspaces --name unit-test delete-user unit-test") @@ -49,8 +49,8 @@ def test_workspace_delete_user_with_non_existing_workspace( def test_workspace_delete_user_with_non_existing_user( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", side_effect=ValueError) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", side_effect=ValueError) result = cli_runner.invoke(cli, "workspaces --name unit-test delete-user unit-test") @@ -61,8 +61,8 @@ def test_workspace_delete_user_with_owner_user( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: user.role = "owner" - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", return_value=user) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) result = cli_runner.invoke(cli, "workspaces --name unit-test delete-user unit-test") @@ -72,9 +72,9 @@ def test_workspace_delete_user_with_owner_user( def test_workspace_delete_user_with_user_not_belonging_to_workspace( self, cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFixture", workspace, user ) -> None: - mocker.patch("argilla.client.workspaces.Workspace.from_name", return_value=workspace) - mocker.patch("argilla.client.users.User.from_name", return_value=user) - mocker.patch("argilla.client.workspaces.Workspace.delete_user", side_effect=ValueError) + mocker.patch("argilla_v1.client.workspaces.Workspace.from_name", return_value=workspace) + mocker.patch("argilla_v1.client.users.User.from_name", return_value=user) + mocker.patch("argilla_v1.client.workspaces.Workspace.delete_user", side_effect=ValueError) result = cli_runner.invoke(cli, "workspaces --name unit-test delete-user unit-test") diff --git a/argilla/tests/unit/cli/workspaces/test_list.py b/argilla-v1/tests/unit/cli/workspaces/test_list.py similarity index 93% rename from argilla/tests/unit/cli/workspaces/test_list.py rename to argilla-v1/tests/unit/cli/workspaces/test_list.py index f88197914a..ad19fd8252 100644 --- a/argilla/tests/unit/cli/workspaces/test_list.py +++ b/argilla-v1/tests/unit/cli/workspaces/test_list.py @@ -22,7 +22,7 @@ from pytest_mock import MockerFixture from typer import Typer -from argilla.client.workspaces import Workspace +from argilla_v1.client.workspaces import Workspace from rich.table import Table from tests.factories import WorkspaceSyncFactory @@ -42,7 +42,7 @@ def test_cli_workspaces_list(cli_runner: "CliRunner", cli: "Typer", mocker: "Moc "updated_at": workspace.updated_at, } ) - workspace_list_mock = mocker.patch("argilla.client.workspaces.Workspace.list", return_value=[workspace_obj]) + workspace_list_mock = mocker.patch("argilla_v1.client.workspaces.Workspace.list", return_value=[workspace_obj]) result = cli_runner.invoke(cli, "workspaces list") diff --git a/argilla/tests/unit/client/__init__.py b/argilla-v1/tests/unit/client/__init__.py similarity index 100% rename from argilla/tests/unit/client/__init__.py rename to argilla-v1/tests/unit/client/__init__.py diff --git a/argilla/tests/unit/client/apis/__init__.py b/argilla-v1/tests/unit/client/apis/__init__.py similarity index 100% rename from argilla/tests/unit/client/apis/__init__.py rename to argilla-v1/tests/unit/client/apis/__init__.py diff --git a/argilla/tests/unit/client/apis/test_datasets.py b/argilla-v1/tests/unit/client/apis/test_datasets.py similarity index 94% rename from argilla/tests/unit/client/apis/test_datasets.py rename to argilla-v1/tests/unit/client/apis/test_datasets.py index b68af9e366..ac81525959 100644 --- a/argilla/tests/unit/client/apis/test_datasets.py +++ b/argilla-v1/tests/unit/client/apis/test_datasets.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.apis.datasets import TextClassificationSettings +from argilla_v1.client.apis.datasets import TextClassificationSettings def test_text_classification_settings_preserve_labels_order() -> None: diff --git a/argilla/tests/unit/client/feedback/__init__.py b/argilla-v1/tests/unit/client/feedback/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/__init__.py rename to argilla-v1/tests/unit/client/feedback/__init__.py diff --git a/argilla/tests/unit/client/feedback/conftest.py b/argilla-v1/tests/unit/client/feedback/conftest.py similarity index 89% rename from argilla/tests/unit/client/feedback/conftest.py rename to argilla-v1/tests/unit/client/feedback/conftest.py index b13fdd5a98..f9fcc50650 100644 --- a/argilla/tests/unit/client/feedback/conftest.py +++ b/argilla-v1/tests/unit/client/feedback/conftest.py @@ -15,16 +15,16 @@ from typing import TYPE_CHECKING, List import pytest -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.questions import TextQuestion if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes, diff --git a/argilla/tests/unit/client/feedback/dataset/__init__.py b/argilla-v1/tests/unit/client/feedback/dataset/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/dataset/__init__.py rename to argilla-v1/tests/unit/client/feedback/dataset/__init__.py diff --git a/argilla/tests/unit/client/feedback/dataset/local/__init__.py b/argilla-v1/tests/unit/client/feedback/dataset/local/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/dataset/local/__init__.py rename to argilla-v1/tests/unit/client/feedback/dataset/local/__init__.py diff --git a/argilla/tests/unit/client/feedback/dataset/local/test_dataset.py b/argilla-v1/tests/unit/client/feedback/dataset/local/test_dataset.py similarity index 97% rename from argilla/tests/unit/client/feedback/dataset/local/test_dataset.py rename to argilla-v1/tests/unit/client/feedback/dataset/local/test_dataset.py index 5ad494336e..31bdb757bb 100644 --- a/argilla/tests/unit/client/feedback/dataset/local/test_dataset.py +++ b/argilla-v1/tests/unit/client/feedback/dataset/local/test_dataset.py @@ -16,20 +16,20 @@ 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 -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1 import RatingQuestion +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -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 argilla_v1.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes, diff --git a/argilla/tests/unit/client/feedback/dataset/remote/__init__.py b/argilla-v1/tests/unit/client/feedback/dataset/remote/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/dataset/remote/__init__.py rename to argilla-v1/tests/unit/client/feedback/dataset/remote/__init__.py diff --git a/argilla/tests/unit/client/feedback/dataset/remote/test_dataset.py b/argilla-v1/tests/unit/client/feedback/dataset/remote/test_dataset.py similarity index 94% rename from argilla/tests/unit/client/feedback/dataset/remote/test_dataset.py rename to argilla-v1/tests/unit/client/feedback/dataset/remote/test_dataset.py index 857004ae57..c8aaf51bb3 100644 --- a/argilla/tests/unit/client/feedback/dataset/remote/test_dataset.py +++ b/argilla-v1/tests/unit/client/feedback/dataset/remote/test_dataset.py @@ -14,26 +14,25 @@ from datetime import datetime from typing import Dict -from unittest import mock from uuid import uuid4 import httpx import pytest -from argilla import FeedbackDataset, FeedbackRecord, Workspace -from argilla.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset -from argilla.client.feedback.schemas import SuggestionSchema -from argilla.client.feedback.schemas.remote.fields import RemoteTextField -from argilla.client.feedback.schemas.remote.questions import RemoteTextQuestion -from argilla.client.feedback.schemas.remote.records import RemoteFeedbackRecord -from argilla.client.feedback.schemas.vector_settings import VectorSettings -from argilla.client.sdk.users.models import UserModel, UserRole -from argilla.client.sdk.v1.datasets.models import ( +from argilla_v1 import FeedbackDataset, FeedbackRecord, Workspace +from argilla_v1.client.feedback.dataset.remote.dataset import RemoteFeedbackDataset +from argilla_v1.client.feedback.schemas import SuggestionSchema +from argilla_v1.client.feedback.schemas.remote.fields import RemoteTextField +from argilla_v1.client.feedback.schemas.remote.questions import RemoteTextQuestion +from argilla_v1.client.feedback.schemas.remote.records import RemoteFeedbackRecord +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings +from argilla_v1.client.sdk.users.models import UserModel, UserRole +from argilla_v1.client.sdk.v1.datasets.models import ( FeedbackItemModel, FeedbackListVectorSettingsModel, FeedbackSuggestionModel, FeedbackVectorSettingsModel, ) -from argilla.client.sdk.v1.workspaces.models import WorkspaceModel +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel from pytest_mock import MockerFixture diff --git a/argilla/tests/unit/client/feedback/dataset/test_helpers.py b/argilla-v1/tests/unit/client/feedback/dataset/test_helpers.py similarity index 95% rename from argilla/tests/unit/client/feedback/dataset/test_helpers.py rename to argilla-v1/tests/unit/client/feedback/dataset/test_helpers.py index 7a95913499..530ad81a30 100644 --- a/argilla/tests/unit/client/feedback/dataset/test_helpers.py +++ b/argilla-v1/tests/unit/client/feedback/dataset/test_helpers.py @@ -15,13 +15,13 @@ 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 ( +from argilla_v1.client.feedback.dataset.helpers import generate_pydantic_schema_for_metadata +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.remote.metadata import ( +from argilla_v1.client.feedback.schemas.remote.metadata import ( RemoteFloatMetadataProperty, RemoteIntegerMetadataProperty, RemoteTermsMetadataProperty, @@ -30,7 +30,10 @@ from tests.pydantic_v1 import ValidationError if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import AllowedMetadataPropertyTypes, AllowedRemoteMetadataPropertyTypes + from argilla_v1.client.feedback.schemas.types import ( + AllowedMetadataPropertyTypes, + AllowedRemoteMetadataPropertyTypes, + ) @pytest.mark.parametrize( diff --git a/argilla/tests/unit/client/feedback/integrations/__init__.py b/argilla-v1/tests/unit/client/feedback/integrations/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/integrations/__init__.py rename to argilla-v1/tests/unit/client/feedback/integrations/__init__.py diff --git a/argilla/tests/unit/client/feedback/integrations/huggingface/__init__.py b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/integrations/huggingface/__init__.py rename to argilla-v1/tests/unit/client/feedback/integrations/huggingface/__init__.py diff --git a/argilla/tests/unit/client/feedback/integrations/huggingface/card/__init__.py b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/integrations/huggingface/card/__init__.py rename to argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/__init__.py diff --git a/argilla/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py similarity index 90% rename from argilla/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py rename to argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py index 890cfc3e73..4a01d83fd8 100644 --- a/argilla/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py +++ b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/test__dataset_card.py @@ -18,28 +18,28 @@ from uuid import uuid4 import pytest -from argilla.client.feedback.integrations.huggingface.card import ArgillaDatasetCard -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.integrations.huggingface.card import ArgillaDatasetCard +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextQuestion, ) -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 argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.types import AllowedMetadataPropertyTypes +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings from huggingface_hub import DatasetCardData if TYPE_CHECKING: - from argilla.client.feedback.schemas import FeedbackRecord - from argilla.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes + from argilla_v1.client.feedback.schemas import FeedbackRecord + from argilla_v1.client.feedback.schemas.types import AllowedFieldTypes, AllowedQuestionTypes class TestSuiteArgillaDatasetCard: diff --git a/argilla/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py similarity index 90% rename from argilla/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py rename to argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py index 5077867149..09148c7f53 100644 --- a/argilla/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py +++ b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/card/test__parser.py @@ -13,7 +13,7 @@ # limitations under the License. import pytest -from argilla.client.feedback.integrations.huggingface.card import size_categories_parser +from argilla_v1.client.feedback.integrations.huggingface.card import size_categories_parser @pytest.mark.parametrize( diff --git a/argilla/tests/unit/client/feedback/integrations/huggingface/test_dataset.py b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/test_dataset.py similarity index 85% rename from argilla/tests/unit/client/feedback/integrations/huggingface/test_dataset.py rename to argilla-v1/tests/unit/client/feedback/integrations/huggingface/test_dataset.py index 84c467bfa4..27a025ad5d 100644 --- a/argilla/tests/unit/client/feedback/integrations/huggingface/test_dataset.py +++ b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/test_dataset.py @@ -15,12 +15,12 @@ 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 -from argilla.client.feedback.schemas.fields import TextField -from argilla.client.feedback.schemas.questions import MultiLabelQuestion, TextQuestion -from argilla.client.feedback.schemas.records import FeedbackRecord +from argilla_v1 import SuggestionSchema +from argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.integrations.huggingface.dataset import HuggingFaceDatasetMixin +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import MultiLabelQuestion, TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord class TestSuiteHuggingFaceDatasetMixin: diff --git a/argilla/tests/unit/client/feedback/integrations/huggingface/test_model_card.py b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/test_model_card.py similarity index 94% rename from argilla/tests/unit/client/feedback/integrations/huggingface/test_model_card.py rename to argilla-v1/tests/unit/client/feedback/integrations/huggingface/test_model_card.py index 54a598b279..160f2b6826 100644 --- a/argilla/tests/unit/client/feedback/integrations/huggingface/test_model_card.py +++ b/argilla-v1/tests/unit/client/feedback/integrations/huggingface/test_model_card.py @@ -16,11 +16,11 @@ from typing import Any, Dict import pytest -from argilla.client.feedback.integrations.huggingface.model_card.model_card import ( +from argilla_v1.client.feedback.integrations.huggingface.model_card.model_card import ( _prepare_dict_for_comparison, _updated_arguments, ) -from argilla.training.utils import get_default_args +from argilla_v1.training.utils import get_default_args from transformers import TrainingArguments default_transformer_args = get_default_args(TrainingArguments.__init__) diff --git a/argilla/tests/unit/client/feedback/integrations/test_sentencetransformers.py b/argilla-v1/tests/unit/client/feedback/integrations/test_sentencetransformers.py similarity index 90% rename from argilla/tests/unit/client/feedback/integrations/test_sentencetransformers.py rename to argilla-v1/tests/unit/client/feedback/integrations/test_sentencetransformers.py index a26ac1daa9..3c78f22a07 100644 --- a/argilla/tests/unit/client/feedback/integrations/test_sentencetransformers.py +++ b/argilla-v1/tests/unit/client/feedback/integrations/test_sentencetransformers.py @@ -17,12 +17,12 @@ import numpy as np import pytest -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 argilla_v1.client.feedback.dataset.local.dataset import FeedbackDataset +from argilla_v1.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.vector_settings import VectorSettings from sentence_transformers import SentenceTransformer diff --git a/argilla/tests/unit/client/feedback/integrations/test_textdescriptives.py b/argilla-v1/tests/unit/client/feedback/integrations/test_textdescriptives.py similarity index 96% rename from argilla/tests/unit/client/feedback/integrations/test_textdescriptives.py rename to argilla-v1/tests/unit/client/feedback/integrations/test_textdescriptives.py index 74a3567e53..bb872207cb 100644 --- a/argilla/tests/unit/client/feedback/integrations/test_textdescriptives.py +++ b/argilla-v1/tests/unit/client/feedback/integrations/test_textdescriptives.py @@ -16,16 +16,16 @@ 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 -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.dataset import FeedbackDataset +from argilla_v1.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.questions import TextQuestion -from argilla.client.feedback.schemas.records import FeedbackRecord +from argilla_v1.client.feedback.schemas.questions import TextQuestion +from argilla_v1.client.feedback.schemas.records import FeedbackRecord @pytest.fixture diff --git a/argilla/tests/unit/client/feedback/schemas/__init__.py b/argilla-v1/tests/unit/client/feedback/schemas/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/schemas/__init__.py rename to argilla-v1/tests/unit/client/feedback/schemas/__init__.py diff --git a/argilla/tests/unit/client/feedback/schemas/remote/__init__.py b/argilla-v1/tests/unit/client/feedback/schemas/remote/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/schemas/remote/__init__.py rename to argilla-v1/tests/unit/client/feedback/schemas/remote/__init__.py diff --git a/argilla/tests/unit/client/feedback/schemas/remote/test_fields.py b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_fields.py similarity index 91% rename from argilla/tests/unit/client/feedback/schemas/remote/test_fields.py rename to argilla-v1/tests/unit/client/feedback/schemas/remote/test_fields.py index b65f8d873c..dcd3707873 100644 --- a/argilla/tests/unit/client/feedback/schemas/remote/test_fields.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_fields.py @@ -17,10 +17,10 @@ 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 -from argilla.client.sdk.v1.datasets.models import FeedbackFieldModel +from argilla_v1.client.feedback.schemas.enums import FieldTypes +from argilla_v1.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.remote.fields import RemoteTextField +from argilla_v1.client.sdk.v1.datasets.models import FeedbackFieldModel @pytest.mark.parametrize( diff --git a/argilla/tests/unit/client/feedback/schemas/remote/test_metadata.py b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_metadata.py similarity index 97% rename from argilla/tests/unit/client/feedback/schemas/remote/test_metadata.py rename to argilla-v1/tests/unit/client/feedback/schemas/remote/test_metadata.py index 1361ff10ef..e30f7bcb50 100644 --- a/argilla/tests/unit/client/feedback/schemas/remote/test_metadata.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_metadata.py @@ -17,18 +17,18 @@ from uuid import uuid4 import pytest -from argilla.client.feedback.schemas.enums import MetadataPropertyTypes -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.schemas.enums import MetadataPropertyTypes +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataProperty, IntegerMetadataProperty, TermsMetadataProperty, ) -from argilla.client.feedback.schemas.remote.metadata import ( +from argilla_v1.client.feedback.schemas.remote.metadata import ( RemoteFloatMetadataProperty, RemoteIntegerMetadataProperty, RemoteTermsMetadataProperty, ) -from argilla.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel +from argilla_v1.client.sdk.v1.datasets.models import FeedbackMetadataPropertyModel @pytest.mark.parametrize( diff --git a/argilla/tests/unit/client/feedback/schemas/remote/test_questions.py b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_questions.py similarity index 98% rename from argilla/tests/unit/client/feedback/schemas/remote/test_questions.py rename to argilla-v1/tests/unit/client/feedback/schemas/remote/test_questions.py index e6cf00a020..186fbee1be 100644 --- a/argilla/tests/unit/client/feedback/schemas/remote/test_questions.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_questions.py @@ -17,15 +17,15 @@ from uuid import uuid4 import pytest -from argilla.client.feedback.schemas.enums import LabelsOrder, QuestionTypes -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.schemas.enums import LabelsOrder, QuestionTypes +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextQuestion, ) -from argilla.client.feedback.schemas.remote.questions import ( +from argilla_v1.client.feedback.schemas.remote.questions import ( RemoteLabelQuestion, RemoteMultiLabelQuestion, RemoteRankingQuestion, @@ -33,7 +33,7 @@ RemoteSpanQuestion, RemoteTextQuestion, ) -from argilla.client.sdk.v1.datasets.models import FeedbackQuestionModel +from argilla_v1.client.sdk.v1.datasets.models import FeedbackQuestionModel @pytest.mark.parametrize( diff --git a/argilla/tests/unit/client/feedback/schemas/remote/test_records.py b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_records.py similarity index 98% rename from argilla/tests/unit/client/feedback/schemas/remote/test_records.py rename to argilla-v1/tests/unit/client/feedback/schemas/remote/test_records.py index b8debcecb5..9ca24088f1 100644 --- a/argilla/tests/unit/client/feedback/schemas/remote/test_records.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/remote/test_records.py @@ -17,13 +17,13 @@ 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 ( +from argilla_v1.client.feedback.schemas.records import FeedbackRecord, ResponseSchema, SuggestionSchema +from argilla_v1.client.feedback.schemas.remote.records import ( RemoteFeedbackRecord, RemoteResponseSchema, RemoteSuggestionSchema, ) -from argilla.client.sdk.v1.datasets.models import ( +from argilla_v1.client.sdk.v1.datasets.models import ( FeedbackItemModel, FeedbackRankingValueModel, FeedbackResponseModel, diff --git a/argilla/tests/unit/client/feedback/schemas/test_fields.py b/argilla-v1/tests/unit/client/feedback/schemas/test_fields.py similarity index 95% rename from argilla/tests/unit/client/feedback/schemas/test_fields.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_fields.py index 69cebf0a62..e1082cc151 100644 --- a/argilla/tests/unit/client/feedback/schemas/test_fields.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/test_fields.py @@ -15,8 +15,8 @@ from typing import Any, Dict import pytest -from argilla.client.feedback.schemas.enums import FieldTypes -from argilla.client.feedback.schemas.fields import TextField +from argilla_v1.client.feedback.schemas.enums import FieldTypes +from argilla_v1.client.feedback.schemas.fields import TextField from tests.pydantic_v1 import ValidationError diff --git a/argilla/tests/unit/client/feedback/schemas/test_metadata.py b/argilla-v1/tests/unit/client/feedback/schemas/test_metadata.py similarity index 99% rename from argilla/tests/unit/client/feedback/schemas/test_metadata.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_metadata.py index 7e8e93511e..75473893b0 100644 --- a/argilla/tests/unit/client/feedback/schemas/test_metadata.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/test_metadata.py @@ -15,8 +15,8 @@ from typing import Any, Dict import pytest -from argilla.client.feedback.schemas.enums import MetadataPropertyTypes -from argilla.client.feedback.schemas.metadata import ( +from argilla_v1.client.feedback.schemas.enums import MetadataPropertyTypes +from argilla_v1.client.feedback.schemas.metadata import ( FloatMetadataFilter, FloatMetadataProperty, IntegerMetadataFilter, diff --git a/argilla/tests/unit/client/feedback/schemas/test_questions.py b/argilla-v1/tests/unit/client/feedback/schemas/test_questions.py similarity index 99% rename from argilla/tests/unit/client/feedback/schemas/test_questions.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_questions.py index 6c884ce2cb..4f0b130c97 100644 --- a/argilla/tests/unit/client/feedback/schemas/test_questions.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/test_questions.py @@ -15,8 +15,8 @@ from typing import Any, Dict import pytest -from argilla.client.feedback.schemas.enums import LabelsOrder, QuestionTypes -from argilla.client.feedback.schemas.questions import ( +from argilla_v1.client.feedback.schemas.enums import LabelsOrder, QuestionTypes +from argilla_v1.client.feedback.schemas.questions import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, diff --git a/argilla/tests/unit/client/feedback/schemas/test_records.py b/argilla-v1/tests/unit/client/feedback/schemas/test_records.py similarity index 99% rename from argilla/tests/unit/client/feedback/schemas/test_records.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_records.py index 0aaada2e48..00d87e2be5 100644 --- a/argilla/tests/unit/client/feedback/schemas/test_records.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/test_records.py @@ -15,7 +15,7 @@ from typing import Any, Dict, List, Optional, Type, Union import pytest -from argilla.client.feedback.schemas.records import ( +from argilla_v1.client.feedback.schemas.records import ( FeedbackRecord, RankingValueSchema, ResponseSchema, diff --git a/argilla/tests/unit/client/feedback/schemas/test_responses.py b/argilla-v1/tests/unit/client/feedback/schemas/test_responses.py similarity index 96% rename from argilla/tests/unit/client/feedback/schemas/test_responses.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_responses.py index 43281e8bc3..41fc2f81f9 100644 --- a/argilla/tests/unit/client/feedback/schemas/test_responses.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/test_responses.py @@ -11,16 +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. -from uuid import uuid4 import pytest -from argilla.feedback import ( - FeedbackDataset, +from argilla_v1.feedback import ( ResponseSchema, ResponseStatus, SpanValueSchema, TextQuestion, - ValueSchema, ) diff --git a/argilla/tests/unit/client/feedback/schemas/test_suggestions.py b/argilla-v1/tests/unit/client/feedback/schemas/test_suggestions.py similarity index 94% rename from argilla/tests/unit/client/feedback/schemas/test_suggestions.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_suggestions.py index 5d56f356fb..935e9463f8 100644 --- a/argilla/tests/unit/client/feedback/schemas/test_suggestions.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/test_suggestions.py @@ -13,7 +13,7 @@ # limitations under the License. import pytest -from argilla.feedback import SuggestionSchema, TextQuestion +from argilla_v1.feedback import TextQuestion def test_create_suggestion(): diff --git a/argilla/tests/unit/client/feedback/schemas/test_utils.py b/argilla-v1/tests/unit/client/feedback/schemas/test_utils.py similarity index 94% rename from argilla/tests/unit/client/feedback/schemas/test_utils.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_utils.py index 554dfe0195..583cfe92a6 100644 --- a/argilla/tests/unit/client/feedback/schemas/test_utils.py +++ b/argilla-v1/tests/unit/client/feedback/schemas/test_utils.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.feedback.schemas.utils import LabelMappingMixin +from argilla_v1.client.feedback.schemas.utils import LabelMappingMixin from tests.pydantic_v1 import BaseModel, Field diff --git a/argilla/tests/unit/client/feedback/schemas/test_vectors_settings.py b/argilla-v1/tests/unit/client/feedback/schemas/test_vectors_settings.py similarity index 100% rename from argilla/tests/unit/client/feedback/schemas/test_vectors_settings.py rename to argilla-v1/tests/unit/client/feedback/schemas/test_vectors_settings.py diff --git a/argilla/tests/unit/client/feedback/test_config.py b/argilla-v1/tests/unit/client/feedback/test_config.py similarity index 98% rename from argilla/tests/unit/client/feedback/test_config.py rename to argilla-v1/tests/unit/client/feedback/test_config.py index 77bc6d733f..18b11be31c 100644 --- a/argilla/tests/unit/client/feedback/test_config.py +++ b/argilla-v1/tests/unit/client/feedback/test_config.py @@ -17,14 +17,14 @@ from typing import TYPE_CHECKING, Any, Dict, List import pytest -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 argilla_v1.client.feedback.config import DatasetConfig, DeprecatedDatasetConfig +from argilla_v1.client.feedback.schemas.enums import LabelsOrder +from argilla_v1.client.feedback.schemas.fields import FieldSchema +from argilla_v1.client.feedback.schemas.questions import QuestionSchema from yaml import SafeLoader, load if TYPE_CHECKING: - from argilla.client.feedback.schemas.types import ( + from argilla_v1.client.feedback.schemas.types import ( AllowedFieldTypes, AllowedMetadataPropertyTypes, AllowedQuestionTypes, diff --git a/argilla/tests/unit/client/feedback/training/__init__.py b/argilla-v1/tests/unit/client/feedback/training/__init__.py similarity index 100% rename from argilla/tests/unit/client/feedback/training/__init__.py rename to argilla-v1/tests/unit/client/feedback/training/__init__.py diff --git a/argilla/tests/unit/client/feedback/training/test_schemas.py b/argilla-v1/tests/unit/client/feedback/training/test_schemas.py similarity index 97% rename from argilla/tests/unit/client/feedback/training/test_schemas.py rename to argilla-v1/tests/unit/client/feedback/training/test_schemas.py index f337bcd63f..b3a730a110 100644 --- a/argilla/tests/unit/client/feedback/training/test_schemas.py +++ b/argilla-v1/tests/unit/client/feedback/training/test_schemas.py @@ -15,21 +15,21 @@ import pandas as pd import pytest import spacy -from argilla import ( +from argilla_v1 import ( LabelQuestion, MultiLabelQuestion, RankingQuestion, RatingQuestion, TextField, ) -from argilla.client.feedback.training.schemas.base import TrainingTask -from argilla.client.feedback.unification import ( +from argilla_v1.client.feedback.training.schemas.base import TrainingTask +from argilla_v1.client.feedback.unification import ( LabelQuestionUnification, MultiLabelQuestionUnification, RankingQuestionUnification, RatingQuestionUnification, ) -from argilla.client.models import Framework +from argilla_v1.client.models import Framework from datasets import Dataset, DatasetDict from spacy.tokens import DocBin diff --git a/argilla/tests/unit/client/feedback/utils/test_assignment.py b/argilla-v1/tests/unit/client/feedback/utils/test_assignment.py similarity index 88% rename from argilla/tests/unit/client/feedback/utils/test_assignment.py rename to argilla-v1/tests/unit/client/feedback/utils/test_assignment.py index 7db6a4af2a..c6400dd629 100644 --- a/argilla/tests/unit/client/feedback/utils/test_assignment.py +++ b/argilla-v1/tests/unit/client/feedback/utils/test_assignment.py @@ -12,11 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -import warnings from unittest.mock import Mock, patch import pytest -from argilla.client.feedback.utils.assignment import ( +from argilla_v1.client.feedback.utils.assignment import ( assign_records, assign_records_to_groups, assign_records_to_individuals, @@ -24,8 +23,8 @@ check_user, check_workspace, ) -from argilla.client.users import User -from argilla.client.workspaces import Workspace +from argilla_v1.client.users import User +from argilla_v1.client.workspaces import Workspace @pytest.fixture @@ -79,8 +78,8 @@ def add_user(user_id): "input, exists, warning, is_user_obj", [("existing_user", True, False, False), ("new_user", False, True, False), (mock_user, True, False, True)], ) -@patch("argilla.client.users.User.create") -@patch("argilla.client.users.User.from_name") +@patch("argilla_v1.client.users.User.create") +@patch("argilla_v1.client.users.User.from_name") def test_check_user(mock_from_name, mock_create, input, exists, warning, is_user_obj, mock_user): if is_user_obj: user_input = mock_user @@ -103,8 +102,8 @@ def test_check_user(mock_from_name, mock_create, input, exists, warning, is_user @pytest.mark.parametrize("workspace_name, workspace_exists", [("existing_workspace", True), ("new_workspace", False)]) -@patch("argilla.client.workspaces.Workspace.from_name") -@patch("argilla.client.workspaces.Workspace.create") +@patch("argilla_v1.client.workspaces.Workspace.from_name") +@patch("argilla_v1.client.workspaces.Workspace.create") def test_check_workspace(mock_create, mock_from_name, mock_workspace, workspace_name, workspace_exists): if workspace_exists: mock_from_name.return_value = mock_workspace @@ -157,12 +156,12 @@ def test_check_workspace(mock_create, mock_from_name, mock_workspace, workspace_ (-1, False, ValueError, None), ], ) -@patch("argilla.client.feedback.utils.assignment.random.shuffle") +@patch("argilla_v1.client.feedback.utils.assignment.random.shuffle") def test_assign_records_to_groups(mock_shuffle, overlap, shuffle, expected_error, expected_result, mock_check_user): mock_groups = {"group1": ["user1", "user2"], "group2": ["user3", "user4"], "group3": ["user5"]} mock_records = ["record1", "record2", "record3", "record4", "record5", "record6"] - with patch("argilla.client.feedback.utils.assignment.check_user", side_effect=mock_check_user): + with patch("argilla_v1.client.feedback.utils.assignment.check_user", side_effect=mock_check_user): if expected_error: with pytest.raises(expected_error): assign_records_to_groups(mock_groups, mock_records, overlap, shuffle) @@ -197,14 +196,14 @@ def test_assign_records_to_groups(mock_shuffle, overlap, shuffle, expected_error (-1, False, ValueError, None), ], ) -@patch("argilla.client.feedback.utils.assignment.random.shuffle") +@patch("argilla_v1.client.feedback.utils.assignment.random.shuffle") def test_assign_records_to_individuals( mock_shuffle, overlap, shuffle, expected_error, expected_result, mock_check_user ): mock_users = [f"user{i}" for i in range(1, 4)] mock_records = ["record1", "record2", "record3", "record4", "record5"] - with patch("argilla.client.feedback.utils.assignment.check_user", side_effect=mock_check_user): + with patch("argilla_v1.client.feedback.utils.assignment.check_user", side_effect=mock_check_user): if expected_error: with pytest.raises(expected_error): assign_records_to_individuals(mock_users, mock_records, overlap, shuffle) @@ -254,10 +253,11 @@ def mock_assign_records_to_individuals(users, records, overlap, shuffle): return expected_result with patch( - "argilla.client.feedback.utils.assignment.assign_records_to_groups", side_effect=mock_assign_records_to_groups + "argilla_v1.client.feedback.utils.assignment.assign_records_to_groups", + side_effect=mock_assign_records_to_groups, ): with patch( - "argilla.client.feedback.utils.assignment.assign_records_to_individuals", + "argilla_v1.client.feedback.utils.assignment.assign_records_to_individuals", side_effect=mock_assign_records_to_individuals, ): result = assign_records(input, mock_records, overlap, shuffle) @@ -291,11 +291,13 @@ def mock_assign_records_to_individuals(users, records, overlap, shuffle): ], ) def test_assign_workspaces(mock_check_user, mock_workspace_factory, mock_assignments, assignment_type, expected_result): - with patch("argilla.client.feedback.utils.assignment.check_user", side_effect=mock_check_user): + with patch("argilla_v1.client.feedback.utils.assignment.check_user", side_effect=mock_check_user): with patch( - "argilla.client.feedback.utils.assignment.User.from_id", + "argilla_v1.client.feedback.utils.assignment.User.from_id", side_effect=lambda user_id: Mock(username=user_id.split("_")[0]), ): - with patch("argilla.client.feedback.utils.assignment.check_workspace", side_effect=mock_workspace_factory): + with patch( + "argilla_v1.client.feedback.utils.assignment.check_workspace", side_effect=mock_workspace_factory + ): result = assign_workspaces(mock_assignments, assignment_type) assert result == expected_result diff --git a/argilla/tests/unit/client/feedback/utils/test_html_utils.py b/argilla-v1/tests/unit/client/feedback/utils/test_html_utils.py similarity index 96% rename from argilla/tests/unit/client/feedback/utils/test_html_utils.py rename to argilla-v1/tests/unit/client/feedback/utils/test_html_utils.py index da77e9ea99..08866d76d4 100644 --- a/argilla/tests/unit/client/feedback/utils/test_html_utils.py +++ b/argilla-v1/tests/unit/client/feedback/utils/test_html_utils.py @@ -17,15 +17,13 @@ from unittest import mock import pytest -from argilla.client.feedback.utils import ( +from argilla_v1.client.feedback.utils import ( audio_to_html, create_token_highlights, get_file_data, image_to_html, - is_valid_dimension, media_to_html, pdf_to_html, - validate_media_type, video_to_html, ) @@ -105,8 +103,8 @@ def test_get_file_data( ("document", "path/to/doc.txt", "txt", None, None, False, False, True, b"doc_data", None, ValueError), ], ) -@mock.patch("argilla.client.feedback.utils.html_utils.get_file_data") -@mock.patch("argilla.client.feedback.utils.html_utils.is_valid_dimension") +@mock.patch("argilla_v1.client.feedback.utils.html_utils.get_file_data") +@mock.patch("argilla_v1.client.feedback.utils.html_utils.is_valid_dimension") def test_media_to_html( mock_is_valid_dimension, mock_get_file_data, diff --git a/argilla/tests/unit/client/sdk/__init__.py b/argilla-v1/tests/unit/client/sdk/__init__.py similarity index 100% rename from argilla/tests/unit/client/sdk/__init__.py rename to argilla-v1/tests/unit/client/sdk/__init__.py diff --git a/argilla/tests/unit/client/sdk/models/__init__.py b/argilla-v1/tests/unit/client/sdk/models/__init__.py similarity index 100% rename from argilla/tests/unit/client/sdk/models/__init__.py rename to argilla-v1/tests/unit/client/sdk/models/__init__.py diff --git a/argilla/tests/unit/client/sdk/models/conftest.py b/argilla-v1/tests/unit/client/sdk/models/conftest.py similarity index 100% rename from argilla/tests/unit/client/sdk/models/conftest.py rename to argilla-v1/tests/unit/client/sdk/models/conftest.py diff --git a/argilla/tests/unit/client/sdk/models/test_datasets.py b/argilla-v1/tests/unit/client/sdk/models/test_datasets.py similarity index 94% rename from argilla/tests/unit/client/sdk/models/test_datasets.py rename to argilla-v1/tests/unit/client/sdk/models/test_datasets.py index b8014d28be..72cc66d03c 100644 --- a/argilla/tests/unit/client/sdk/models/test_datasets.py +++ b/argilla-v1/tests/unit/client/sdk/models/test_datasets.py @@ -13,8 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. import pytest -from argilla.client.sdk.datasets.models import Dataset, TaskType from argilla_server.schemas.v0.datasets import Dataset as ServerDataset +from argilla_v1.client.sdk.datasets.models import Dataset, TaskType def test_dataset_schema(helpers): diff --git a/argilla/tests/unit/client/sdk/models/test_text2text.py b/argilla-v1/tests/unit/client/sdk/models/test_text2text.py similarity index 95% rename from argilla/tests/unit/client/sdk/models/test_text2text.py rename to argilla-v1/tests/unit/client/sdk/models/test_text2text.py index c4abf84180..890bd2275a 100644 --- a/argilla/tests/unit/client/sdk/models/test_text2text.py +++ b/argilla-v1/tests/unit/client/sdk/models/test_text2text.py @@ -16,17 +16,17 @@ from datetime import datetime import pytest -from argilla.client.models import Text2TextRecord -from argilla.client.sdk.text2text.models import ( +from argilla_server.apis.v0.models.text2text import Text2TextBulkRequest as ServerText2TextBulkData +from argilla_server.apis.v0.models.text2text import Text2TextQuery as ServerText2TextQuery +from argilla_v1.client.models import Text2TextRecord +from argilla_v1.client.sdk.text2text.models import ( CreationText2TextRecord, Text2TextAnnotation, Text2TextBulkData, Text2TextPrediction, 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 +from argilla_v1.client.sdk.text2text.models import Text2TextRecord as SdkText2TextRecord def test_bulk_data_schema(helpers): diff --git a/argilla/tests/unit/client/sdk/models/test_text_classification.py b/argilla-v1/tests/unit/client/sdk/models/test_text_classification.py similarity index 95% rename from argilla/tests/unit/client/sdk/models/test_text_classification.py rename to argilla-v1/tests/unit/client/sdk/models/test_text_classification.py index 4a7e2d3254..9bc52d2f14 100644 --- a/argilla/tests/unit/client/sdk/models/test_text_classification.py +++ b/argilla-v1/tests/unit/client/sdk/models/test_text_classification.py @@ -16,17 +16,6 @@ from datetime import datetime import pytest -from argilla.client.models import TextClassificationRecord, TokenAttributions -from argilla.client.sdk.text_classification.models import ( - ClassPrediction, - CreationTextClassificationRecord, - LabelingRule, - LabelingRuleMetricsSummary, - TextClassificationAnnotation, - TextClassificationBulkData, - 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, @@ -35,6 +24,17 @@ TextClassificationBulkRequest as ServerTextClassificationBulkData, ) from argilla_server.apis.v0.models.text_classification import TextClassificationQuery as ServerTextClassificationQuery +from argilla_v1.client.models import TextClassificationRecord, TokenAttributions +from argilla_v1.client.sdk.text_classification.models import ( + ClassPrediction, + CreationTextClassificationRecord, + LabelingRule, + LabelingRuleMetricsSummary, + TextClassificationAnnotation, + TextClassificationBulkData, + TextClassificationQuery, +) +from argilla_v1.client.sdk.text_classification.models import TextClassificationRecord as SdkTextClassificationRecord def test_bulk_data_schema(helpers): diff --git a/argilla/tests/unit/client/sdk/models/test_token_classification.py b/argilla-v1/tests/unit/client/sdk/models/test_token_classification.py similarity index 94% rename from argilla/tests/unit/client/sdk/models/test_token_classification.py rename to argilla-v1/tests/unit/client/sdk/models/test_token_classification.py index 101eadf55f..f05c6d9116 100644 --- a/argilla/tests/unit/client/sdk/models/test_token_classification.py +++ b/argilla-v1/tests/unit/client/sdk/models/test_token_classification.py @@ -16,21 +16,21 @@ from datetime import datetime import pytest -from argilla.client.models import TokenClassificationRecord -from argilla.client.sdk.token_classification.models import ( - CreationTokenClassificationRecord, - EntitySpan, - TokenClassificationAnnotation, - TokenClassificationBulkData, - 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, ) +from argilla_v1.client.models import TokenClassificationRecord +from argilla_v1.client.sdk.token_classification.models import ( + CreationTokenClassificationRecord, + EntitySpan, + TokenClassificationAnnotation, + TokenClassificationBulkData, + TokenClassificationQuery, +) +from argilla_v1.client.sdk.token_classification.models import TokenClassificationRecord as SdkTokenClassificationRecord def test_bulk_data_schema(helpers): diff --git a/argilla/tests/unit/client/sdk/models/test_users.py b/argilla-v1/tests/unit/client/sdk/models/test_users.py similarity index 87% rename from argilla/tests/unit/client/sdk/models/test_users.py rename to argilla-v1/tests/unit/client/sdk/models/test_users.py index 0ce34f18f3..5dbc7065b5 100644 --- a/argilla/tests/unit/client/sdk/models/test_users.py +++ b/argilla-v1/tests/unit/client/sdk/models/test_users.py @@ -12,10 +12,10 @@ # 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_v1.client.sdk.users.models import UserModel as ClientUser +from argilla_v1.client.sdk.users.models import UserRole as ClientUserRole from tests.unit.client.sdk.models.conftest import Helpers diff --git a/argilla/tests/unit/client/sdk/models/test_workspaces.py b/argilla-v1/tests/unit/client/sdk/models/test_workspaces.py similarity index 90% rename from argilla/tests/unit/client/sdk/models/test_workspaces.py rename to argilla-v1/tests/unit/client/sdk/models/test_workspaces.py index 2735694121..ba24306875 100644 --- a/argilla/tests/unit/client/sdk/models/test_workspaces.py +++ b/argilla-v1/tests/unit/client/sdk/models/test_workspaces.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.sdk.workspaces.models import WorkspaceModel as ClientSchema from argilla_server.schemas.v1.workspaces import Workspace as ServerSchema +from argilla_v1.client.sdk.workspaces.models import WorkspaceModel as ClientSchema def test_users_schema(helpers): diff --git a/argilla/tests/unit/client/sdk/models/v1/__init__.py b/argilla-v1/tests/unit/client/sdk/models/v1/__init__.py similarity index 100% rename from argilla/tests/unit/client/sdk/models/v1/__init__.py rename to argilla-v1/tests/unit/client/sdk/models/v1/__init__.py diff --git a/argilla/tests/unit/client/sdk/models/v1/test_datasets.py b/argilla-v1/tests/unit/client/sdk/models/v1/test_datasets.py similarity index 89% rename from argilla/tests/unit/client/sdk/models/v1/test_datasets.py rename to argilla-v1/tests/unit/client/sdk/models/v1/test_datasets.py index 28760b077c..84b0a2e2e0 100644 --- a/argilla/tests/unit/client/sdk/models/v1/test_datasets.py +++ b/argilla-v1/tests/unit/client/sdk/models/v1/test_datasets.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -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 +from argilla_v1.client.sdk.v1.datasets.models import FeedbackDatasetModel as ClientSchema +from argilla_v1.client.sdk.v1.datasets.models import FeedbackQuestionModel as ClientQuestionSchema def test_feedback_dataset_schema(helpers) -> None: diff --git a/argilla/tests/unit/client/sdk/models/v1/test_suggestions.py b/argilla-v1/tests/unit/client/sdk/models/v1/test_suggestions.py similarity index 90% rename from argilla/tests/unit/client/sdk/models/v1/test_suggestions.py rename to argilla-v1/tests/unit/client/sdk/models/v1/test_suggestions.py index 9e573891e2..91de606714 100644 --- a/argilla/tests/unit/client/sdk/models/v1/test_suggestions.py +++ b/argilla-v1/tests/unit/client/sdk/models/v1/test_suggestions.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.sdk.v1.suggestions.models import SuggestionModel as ClientSchema from argilla_server.schemas.v1.suggestions import Suggestion as ServerSchema +from argilla_v1.client.sdk.v1.suggestions.models import SuggestionModel as ClientSchema def test_suggestion_schema(helpers) -> None: diff --git a/argilla/tests/unit/client/sdk/models/v1/test_workspaces.py b/argilla-v1/tests/unit/client/sdk/models/v1/test_workspaces.py similarity index 90% rename from argilla/tests/unit/client/sdk/models/v1/test_workspaces.py rename to argilla-v1/tests/unit/client/sdk/models/v1/test_workspaces.py index feab948944..699482e11e 100644 --- a/argilla/tests/unit/client/sdk/models/v1/test_workspaces.py +++ b/argilla-v1/tests/unit/client/sdk/models/v1/test_workspaces.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.client.sdk.v1.workspaces.models import WorkspaceModel as ClientSchema from argilla_server.schemas.v1.workspaces import Workspace as ServerSchema +from argilla_v1.client.sdk.v1.workspaces.models import WorkspaceModel as ClientSchema def test_workspace_schema(helpers) -> None: diff --git a/argilla/tests/unit/client/sdk/v1/__init__.py b/argilla-v1/tests/unit/client/sdk/v1/__init__.py similarity index 100% rename from argilla/tests/unit/client/sdk/v1/__init__.py rename to argilla-v1/tests/unit/client/sdk/v1/__init__.py diff --git a/argilla/tests/unit/client/sdk/v1/metadata_properties/__init__.py b/argilla-v1/tests/unit/client/sdk/v1/metadata_properties/__init__.py similarity index 100% rename from argilla/tests/unit/client/sdk/v1/metadata_properties/__init__.py rename to argilla-v1/tests/unit/client/sdk/v1/metadata_properties/__init__.py diff --git a/argilla/tests/unit/client/sdk/v1/metadata_properties/test_api.py b/argilla-v1/tests/unit/client/sdk/v1/metadata_properties/test_api.py similarity index 95% rename from argilla/tests/unit/client/sdk/v1/metadata_properties/test_api.py rename to argilla-v1/tests/unit/client/sdk/v1/metadata_properties/test_api.py index 7d689cafc4..829fb863ea 100644 --- a/argilla/tests/unit/client/sdk/v1/metadata_properties/test_api.py +++ b/argilla-v1/tests/unit/client/sdk/v1/metadata_properties/test_api.py @@ -15,7 +15,7 @@ from uuid import uuid4 import httpx -from argilla.client.sdk.v1.metadata_properties.api import update_metadata_property +from argilla_v1.client.sdk.v1.metadata_properties.api import update_metadata_property class TestSuiteMetadataPropertiesSDK: diff --git a/argilla/tests/unit/client/sdk/v1/records/__init__.py b/argilla-v1/tests/unit/client/sdk/v1/records/__init__.py similarity index 100% rename from argilla/tests/unit/client/sdk/v1/records/__init__.py rename to argilla-v1/tests/unit/client/sdk/v1/records/__init__.py diff --git a/argilla/tests/unit/client/sdk/v1/records/test_api.py b/argilla-v1/tests/unit/client/sdk/v1/records/test_api.py similarity index 97% rename from argilla/tests/unit/client/sdk/v1/records/test_api.py rename to argilla-v1/tests/unit/client/sdk/v1/records/test_api.py index 7aaeb1fc1b..ddbb9d203d 100644 --- a/argilla/tests/unit/client/sdk/v1/records/test_api.py +++ b/argilla-v1/tests/unit/client/sdk/v1/records/test_api.py @@ -16,7 +16,7 @@ from uuid import uuid4 import httpx -from argilla.client.sdk.v1.records.api import update_record +from argilla_v1.client.sdk.v1.records.api import update_record class TestSuiteRecordsSDK: diff --git a/argilla/tests/unit/client/sdk/v1/test_datasets.py b/argilla-v1/tests/unit/client/sdk/v1/test_datasets.py similarity index 98% rename from argilla/tests/unit/client/sdk/v1/test_datasets.py rename to argilla-v1/tests/unit/client/sdk/v1/test_datasets.py index 1796edad8a..8d61aec265 100644 --- a/argilla/tests/unit/client/sdk/v1/test_datasets.py +++ b/argilla-v1/tests/unit/client/sdk/v1/test_datasets.py @@ -17,8 +17,8 @@ import httpx import pytest -from argilla.client.sdk.v1.datasets import api -from argilla.client.sdk.v1.datasets.models import ( +from argilla_v1.client.sdk.v1.datasets import api +from argilla_v1.client.sdk.v1.datasets.models import ( FeedbackItemModel, FeedbackRecordSearchModel, FeedbackRecordsSearchModel, diff --git a/argilla/tests/unit/client/sdk/v1/test_get_records.py b/argilla-v1/tests/unit/client/sdk/v1/test_get_records.py similarity index 95% rename from argilla/tests/unit/client/sdk/v1/test_get_records.py rename to argilla-v1/tests/unit/client/sdk/v1/test_get_records.py index c6f725ff1f..6c1e45f61b 100644 --- a/argilla/tests/unit/client/sdk/v1/test_get_records.py +++ b/argilla-v1/tests/unit/client/sdk/v1/test_get_records.py @@ -15,7 +15,7 @@ import uuid import httpx -from argilla.client.sdk.v1.datasets.api import get_records +from argilla_v1.client.sdk.v1.datasets.api import get_records class TestSuiteGetRecordsSDK: diff --git a/argilla/tests/unit/client/sdk/v1/test_search_records.py b/argilla-v1/tests/unit/client/sdk/v1/test_search_records.py similarity index 95% rename from argilla/tests/unit/client/sdk/v1/test_search_records.py rename to argilla-v1/tests/unit/client/sdk/v1/test_search_records.py index 7b18d72a88..ba0fbee0ad 100644 --- a/argilla/tests/unit/client/sdk/v1/test_search_records.py +++ b/argilla-v1/tests/unit/client/sdk/v1/test_search_records.py @@ -16,9 +16,9 @@ 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 +from argilla_v1.client.sdk.commons.errors import ArApiResponseError +from argilla_v1.client.sdk.v1.datasets.api import search_records +from argilla_v1.client.sdk.v1.datasets.models import FeedbackRecordsSearchVectorQuery class TestSuiteSearchRecordsSDK: diff --git a/argilla/tests/unit/client/sdk/v1/vectors_settings/__init__.py b/argilla-v1/tests/unit/client/sdk/v1/vectors_settings/__init__.py similarity index 100% rename from argilla/tests/unit/client/sdk/v1/vectors_settings/__init__.py rename to argilla-v1/tests/unit/client/sdk/v1/vectors_settings/__init__.py diff --git a/argilla/tests/unit/client/sdk/v1/vectors_settings/test_api.py b/argilla-v1/tests/unit/client/sdk/v1/vectors_settings/test_api.py similarity index 95% rename from argilla/tests/unit/client/sdk/v1/vectors_settings/test_api.py rename to argilla-v1/tests/unit/client/sdk/v1/vectors_settings/test_api.py index 9496a3a266..392f26e8f2 100644 --- a/argilla/tests/unit/client/sdk/v1/vectors_settings/test_api.py +++ b/argilla-v1/tests/unit/client/sdk/v1/vectors_settings/test_api.py @@ -15,7 +15,7 @@ from uuid import uuid4 import httpx -from argilla.client.sdk.v1.vectors_settings.api import delete_vector_settings, update_vector_settings +from argilla_v1.client.sdk.v1.vectors_settings.api import delete_vector_settings, update_vector_settings class TestSuiteVectorsSettingsSDK: diff --git a/argilla/tests/unit/client/test_login.py b/argilla-v1/tests/unit/client/test_login.py similarity index 97% rename from argilla/tests/unit/client/test_login.py rename to argilla-v1/tests/unit/client/test_login.py index ecd2eb2396..d88b96b783 100644 --- a/argilla/tests/unit/client/test_login.py +++ b/argilla-v1/tests/unit/client/test_login.py @@ -17,7 +17,7 @@ from typing import TYPE_CHECKING import pytest -from argilla.client import login +from argilla_v1.client import login if TYPE_CHECKING: from pytest_mock import MockFixture @@ -84,7 +84,7 @@ def test_argilla_credentials_load_raises_error(): def test_login(mocker: "MockFixture"): mocker.patch("builtins.open", new_callable=mocker.mock_open) - init_mock = mocker.patch("argilla.client.login.init") + init_mock = mocker.patch("argilla_v1.client.login.init") login.login( api_url="http://unit-test.com:6900", diff --git a/argilla-v1/tests/unit/conftest.py b/argilla-v1/tests/unit/conftest.py new file mode 100644 index 0000000000..f30db8287e --- /dev/null +++ b/argilla-v1/tests/unit/conftest.py @@ -0,0 +1,34 @@ +# 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. + +import asyncio +from typing import TYPE_CHECKING, Generator + +import httpx +import pytest + +if TYPE_CHECKING: + pass + + +@pytest.fixture(scope="session") +def event_loop() -> Generator["asyncio.AbstractEventLoop", None, None]: + loop = asyncio.get_event_loop_policy().get_event_loop() + yield loop + loop.close() + + +@pytest.fixture(scope="function") +def mock_httpx_client(mocker) -> Generator[httpx.Client, None, None]: + return mocker.Mock(httpx.Client) diff --git a/argilla/tests/unit/labeling/__init__.py b/argilla-v1/tests/unit/labeling/__init__.py similarity index 100% rename from argilla/tests/unit/labeling/__init__.py rename to argilla-v1/tests/unit/labeling/__init__.py diff --git a/argilla/tests/unit/labeling/text_classification/__init__.py b/argilla-v1/tests/unit/labeling/text_classification/__init__.py similarity index 100% rename from argilla/tests/unit/labeling/text_classification/__init__.py rename to argilla-v1/tests/unit/labeling/text_classification/__init__.py diff --git a/argilla/tests/unit/labeling/text_classification/conftest.py b/argilla-v1/tests/unit/labeling/text_classification/conftest.py similarity index 100% rename from argilla/tests/unit/labeling/text_classification/conftest.py rename to argilla-v1/tests/unit/labeling/text_classification/conftest.py diff --git a/argilla/tests/unit/labeling/text_classification/resources/weak-supervision-guide-matrix.npy b/argilla-v1/tests/unit/labeling/text_classification/resources/weak-supervision-guide-matrix.npy similarity index 100% rename from argilla/tests/unit/labeling/text_classification/resources/weak-supervision-guide-matrix.npy rename to argilla-v1/tests/unit/labeling/text_classification/resources/weak-supervision-guide-matrix.npy diff --git a/argilla/tests/unit/labeling/text_classification/test_label_models.py b/argilla-v1/tests/unit/labeling/text_classification/test_label_models.py similarity index 98% rename from argilla/tests/unit/labeling/text_classification/test_label_models.py rename to argilla-v1/tests/unit/labeling/text_classification/test_label_models.py index fa20d68d72..93e8511eeb 100644 --- a/argilla/tests/unit/labeling/text_classification/test_label_models.py +++ b/argilla-v1/tests/unit/labeling/text_classification/test_label_models.py @@ -16,14 +16,14 @@ import numpy as np import pytest -from argilla.client.models import TextClassificationRecord -from argilla.labeling.text_classification import ( +from argilla_v1.client.models import TextClassificationRecord +from argilla_v1.labeling.text_classification import ( FlyingSquid, Snorkel, WeakLabels, WeakMultiLabels, ) -from argilla.labeling.text_classification.label_models import ( +from argilla_v1.labeling.text_classification.label_models import ( LabelModel, MajorityVoter, MissingAnnotationError, @@ -43,7 +43,7 @@ def mock_load(*args, **kwargs): TextClassificationRecord(text="test", annotation="neutral"), ] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( @@ -67,7 +67,7 @@ def weak_labels_from_guide(monkeypatch, resources): def mock_load(*args, **kwargs): return [TextClassificationRecord(text="mock", id=i) for i in range(len(matrix))] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): return matrix, annotation, {None: -1, "SPAM": 0, "HAM": 1} @@ -87,7 +87,7 @@ def mock_load(*args, **kwargs): TextClassificationRecord(text="test", multi_label=True), ] - monkeypatch.setattr("argilla.labeling.text_classification.weak_labels.load", mock_load) + monkeypatch.setattr("argilla_v1.labeling.text_classification.weak_labels.load", mock_load) def mock_apply(self, *args, **kwargs): weak_label_matrix = np.array( diff --git a/argilla/tests/unit/test__init__.py b/argilla-v1/tests/unit/test__init__.py similarity index 85% rename from argilla/tests/unit/test__init__.py rename to argilla-v1/tests/unit/test__init__.py index b58631b1e3..0d6e517140 100644 --- a/argilla/tests/unit/test__init__.py +++ b/argilla-v1/tests/unit/test__init__.py @@ -15,8 +15,8 @@ import sys -from argilla.utils import LazyargillaModule +from argilla_v1.utils import LazyargillaModule def test_lazy_module(): - assert isinstance(sys.modules["argilla"], LazyargillaModule) + assert isinstance(sys.modules["argilla_v1"], LazyargillaModule) diff --git a/argilla/tests/unit/test_logging.py b/argilla-v1/tests/unit/test_logging.py similarity index 97% rename from argilla/tests/unit/test_logging.py rename to argilla-v1/tests/unit/test_logging.py index d138ef015c..a937ccc84c 100644 --- a/argilla/tests/unit/test_logging.py +++ b/argilla-v1/tests/unit/test_logging.py @@ -15,7 +15,7 @@ import logging import pytest -from argilla.logging import ArgillaHandler, LoggingMixin +from argilla_v1.logging import ArgillaHandler, LoggingMixin class LoggingForTest(LoggingMixin): diff --git a/argilla/tests/unit/utils/__init__.py b/argilla-v1/tests/unit/utils/__init__.py similarity index 100% rename from argilla/tests/unit/utils/__init__.py rename to argilla-v1/tests/unit/utils/__init__.py diff --git a/argilla/tests/unit/utils/test_dependency.py b/argilla-v1/tests/unit/utils/test_dependency.py similarity index 89% rename from argilla/tests/unit/utils/test_dependency.py rename to argilla-v1/tests/unit/utils/test_dependency.py index 91cb2ee304..88b028086c 100644 --- a/argilla/tests/unit/utils/test_dependency.py +++ b/argilla-v1/tests/unit/utils/test_dependency.py @@ -17,7 +17,7 @@ from typing import Any, List import pytest -from argilla.utils.dependency import is_package_with_extras_installed, require_dependencies, requires_dependencies +from argilla_v1.utils.dependency import is_package_with_extras_installed, require_dependencies, requires_dependencies class TestDependencyRequirements: @@ -79,7 +79,7 @@ def test_inner(): # This method should fail, as our dependencies require a higher version of datasets with pytest.raises( ImportError, - match=f"but found datasets==.*?You can install a supported version of 'datasets' with this command: `pip install -U datasets<1.0.0`", + match="but found datasets==.*?You can install a supported version of 'datasets' with this command: `pip install -U datasets<1.0.0`", ): test_inner() @@ -114,12 +114,12 @@ def test_list_without_dependencies(self): @pytest.mark.parametrize( - "args, expected", [(["argilla", ["server"]], True), (["invented_package", ["invented"]], False)] + "args, expected", [(["argilla_v1", ["server"]], True), (["invented_package", ["invented"]], False)] ) def test_is_package_with_extras_installed(args: List[Any], expected: bool) -> None: assert is_package_with_extras_installed(*args) == expected def test_is_package_with_extras_installed_raises_key_error() -> None: - with pytest.raises(KeyError, match="'argilla' package does not provide 'invented' extra"): - is_package_with_extras_installed("argilla", ["invented"]) + with pytest.raises(KeyError, match="'argilla_v1' package does not provide 'invented' extra"): + is_package_with_extras_installed("argilla_v1", ["invented"]) diff --git a/argilla/tests/unit/utils/test_span_utils.py b/argilla-v1/tests/unit/utils/test_span_utils.py similarity index 99% rename from argilla/tests/unit/utils/test_span_utils.py rename to argilla-v1/tests/unit/utils/test_span_utils.py index 16b71d10b1..0faf171aae 100644 --- a/argilla/tests/unit/utils/test_span_utils.py +++ b/argilla-v1/tests/unit/utils/test_span_utils.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. import pytest -from argilla.utils.span_utils import SpanUtils +from argilla_v1.utils.span_utils import SpanUtils def test_init(): diff --git a/argilla/tests/unit/utils/test_utils.py b/argilla-v1/tests/unit/utils/test_utils.py similarity index 97% rename from argilla/tests/unit/utils/test_utils.py rename to argilla-v1/tests/unit/utils/test_utils.py index 6a08af0c66..4d40b8e398 100644 --- a/argilla/tests/unit/utils/test_utils.py +++ b/argilla-v1/tests/unit/utils/test_utils.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. import pytest -from argilla.utils import LazyargillaModule +from argilla_v1.utils import LazyargillaModule def test_lazy_argilla_module(monkeypatch): diff --git a/argilla-sdk/.gitignore b/argilla/.gitignore similarity index 100% rename from argilla-sdk/.gitignore rename to argilla/.gitignore diff --git a/argilla-sdk/LICENSE b/argilla/LICENSE similarity index 100% rename from argilla-sdk/LICENSE rename to argilla/LICENSE diff --git a/argilla-sdk/LICENSE_HEADER b/argilla/LICENSE_HEADER similarity index 100% rename from argilla-sdk/LICENSE_HEADER rename to argilla/LICENSE_HEADER diff --git a/argilla/README.md b/argilla/README.md index 9498444d25..c0ad40dfc4 100644 --- a/argilla/README.md +++ b/argilla/README.md @@ -1,332 +1,56 @@ +## `argilla-sdk` -

- Argilla -
- Argilla -
-

-

Work on data together, make your model outputs better!

+The argilla-sdk is an experimental project to rebuild Argilla's python client in a simpler and friendlier way. The goal is to have a minimal set of core features that are easy to use and understand, but also contribute to feedback task that build quality data. -

- -CI - -Codecov - -CI - - - - -

+!!! warning + This project is still in development and is not yet ready for production use. -

- - - - - - - - - -

+### Installation -Argilla is a **collaboration platform for AI engineers and domain experts** that require **high-quality outputs, full data ownership, and overall efficiency**. +Since this package is not yet published on PyPi, you can install it directly from the repository: -If you just want to get started, we recommend our [UI demo](https://demo.argilla.io/sign-in?auth=ZGVtbzoxMjM0NTY3OA%3D%3D) or our [2-click deployment quick start](https://docs.argilla.io/en/latest/getting_started/cheatsheet.html). Curious, and want to know more? Read our [documentation](https://docs.argilla.io/). - -## Why use Argilla? - -Whether you are working on monitoring and improving complex **generative tasks** involving LLM pipelines with RAG, or you are working on a **predictive task** for things like AB-testing of span- and text-classification models. Our versatile platform helps you ensure **your data work pays off**. - -### Improve your AI output quality through data quality - -Compute is expensive and output quality is important. We help you focus on data, which tackles the root cause of both of these problems at once. Argilla helps you to **achieve and keep high-quality standards** for your data. This means you can improve the quality of your AI output. - -### Take control of your data and models - -Most AI platforms are black boxes. Argilla is different. We believe that you should be the owner of both your data and your models. That's why we provide you with all the tools your team needs to **manage your data and models in a way that suits you best**. - -### Improve efficiency by quickly iterating on the right data and models - -Gathering data is a time-consuming process. Argilla helps by providing a platform that allows you to **interact with your data in a more engaging way**. This means you can quickly and easily label your data with filters, AI feedback suggestions and semantic search. So you can focus on training your models and monitoring their performance. - -## 🏘ī¸ Community - -We are an open-source community-driven project and we love to hear from you. Here are some ways to get involved: - -- [Community Meetup](https://lu.ma/embed-checkout/evt-IQtRiSuXZCIW6FB): listen in or present during one of our bi-weekly events. - -- [Slack](https://join.slack.com/t/rubrixworkspace/shared_invite/zt-whigkyjn-a3IUJLD7gDbTZ0rKlvcJ5g): get direct support from the community. - -- [Roadmap](https://github.com/orgs/argilla-io/projects/10/views/1): plans change but we love to discuss those with our community so feel encouraged to participate. - -## What do people build with Argilla? - -### Open-source datasets and models - -Argilla is a tool that can be used to achieve and keep **high-quality data standards** with a **focus on NLP and LLMs**. Our community uses Argilla to create amazing open-source [datasets](https://huggingface.co/datasets?other=argilla) and [models](https://huggingface.co/models?other=distilabel), and **we love contributions to open-source** ourselves too. - -- Our [cleaned UltraFeedback dataset](https://huggingface.co/datasets/argilla/ultrafeedback-binarized-preferences-cleaned) and the [Notus](https://huggingface.co/argilla/notus-7b-v1) and [Notux](https://huggingface.co/argilla/notux-8x7b-v1) models, where we improved benchmark and empirical human judgment for the Mistral and Mixtral models with cleaner data using **human feedback**. -- Our [distilabeled Intel Orca DPO dataset](https://huggingface.co/datasets/argilla/distilabel-intel-orca-dpo-pairs) and the [improved OpenHermes model](https://huggingface.co/argilla/distilabeled-OpenHermes-2.5-Mistral-7B), show how we improve model performance by filtering out 50% of the original dataset through **human and AI feedback**. - -### Internal Use cases - -AI teams from companies like [the Red Cross](https://510.global/), [Loris.ai](https://loris.ai/) and [Prolific](https://www.prolific.com/) use Argilla to **improve the quality and efficiency of AI** projects. They shared their experiences in our [AI community meetup](https://lu.ma/embed-checkout/evt-IQtRiSuXZCIW6FB). - -- AI for good: [the Red Cross presentation](https://youtu.be/ZsCqrAhzkFU?feature=shared) showcases **how their experts and AI team collaborate** by classifying and redirecting requests from refugees of the Ukrainian crisis to streamline the support processes of the Red Cross. -- Customer support: during [the Loris meetup](https://youtu.be/jWrtgf2w4VU?feature=shared) they showed how their AI team uses unsupervised and few-shot contrastive learning to help them **quickly validate and gain labelled samples for a huge amount of multi-label classifiers**. -- Research studies: [the showcase from Prolific](https://youtu.be/ePDlhIxnuAs?feature=shared) announced their integration with our platform. They use it to actively **distribute data collection projects** among their annotating workforce. This allows them to quickly and **efficiently collect high-quality data** for their research studies. - -## 👨‍đŸ’ģ Getting started - -
-pip install argilla -

- -First things first! You can install Argilla from pypi. - -```bash -pip install argilla -``` - -

-
- -
-Deploy Locally -

- -```bash -docker run -d --name argilla -p 6900:6900 argilla/argilla-quickstart:latest +# TODO: Changed this to use the testpypi releases. +```console +pip install git+https://github.com/argilla-io/argilla-python.git ``` -

-
- -
-Deploy on Hugging Face Hub -

+### Usage -HuggingFace Spaces now have persistent storage and this is supported from Argilla 1.11.0 onwards, but you will need to manually activate it via the HuggingFace Spaces settings. Otherwise, unless you're on a paid space upgrade, after 48 hours of inactivity the space will be shut off and you will lose all the data. To avoid losing data, we highly recommend using the persistent storage layer offered by HuggingFace. - -After this, we can connect to our server. - - - -

-
- -
-Connect to the Server -

-Once you have deployed Argilla, we will connect to the server. +To use the client, you need to import the `Argilla` class and instantiate it with the API URL and API key. You can use this SDK with any stable release of argilla server >= 1.27. ```python import argilla as rg -rg.init( - api_url="argilla-api-url", # e.g. http://localhost:6900 or https://[your-owner-name]-[your_space_name].hf.space - api_key="argilla-api-key" # e.g. "owner.apikey" - workspace="argilla-workspace" # e.g. "admin" -) +client = rg.Argilla(api_url="http://localhost:6900", api_key="argilla.apikey") ``` -After this, you can start using Argilla, so you can create a dataset and add records to it. We use the FeedbackDataset as an example, but you can use any of the other datasets available in Argilla. You can find more information about the different datasets here. +### Developer documentation -

-
+If you want to contribute to the development of the SDK, you can follow the instructions below. -
-Create workspace -

-Once you have connected to the server, we will create a workspace for datasets. +#### Installation -```python -workspace = rg.Workspace.create("new-workspace") -``` +To install the development dependencies, run the following command: -After this, you can assign users to the workspace, this will allow the datasets to appear in the UI for that user. +```console +# install pdm https://github.com/pdm-project/pdm +pip install pdm -```python -users = [u for u in rg.User.list() if u.role == "annotator"] -for user in users: - workspace.add_user(user) -``` - -

-
+# install the package in editable mode +pip install -e . -
-Configure datasets -

- -```python -import argilla as rg - -dataset = rg.FeedbackDataset( - guidelines="Please, read the question carefully and try to answer it as accurately as possible.", - fields=[ - rg.TextField(name="question"), - rg.TextField(name="answer"), - ], - questions=[ - rg.RatingQuestion( - name="answer_quality", - description="How would you rate the quality of the answer?", - values=[1, 2, 3, 4, 5], - ), - rg.TextQuestion( - name="answer_correction", - description="If you think the answer is not accurate, please, correct it.", - required=False, - ), - ] -) -remote_dataset = dataset.push_to_argilla(name="my-dataset", workspace="my-workspace") +# install the development dependencies with pdm +pdm install --dev ``` - - -

-
- -
-Add records -

+#### Generating Documentation -```python -import argilla as rg +To generate the docs you will need to install the development dependencies, and run the following command to create the development server with `mkdocs`: -record = rg.FeedbackRecord( - fields={ - "question": "Why can camels survive long without water?", - "answer": "Camels use the fat in their humps to keep them filled with energy and hydration for long periods of time." - }, - metadata={"source": "encyclopedia"}, - external_id='rec_1' -) -remote_dataset.add_records(record) +```console +mkdocs serve ``` -And that's it, you now have your first dataset ready. You can begin annotating it or embark on other related tasks. - - - -

-
- - -
-Query datasets -

- -```python -import argilla as rg - -filtered_dataset = dataset.filter_by(response_status="submitted") -``` - - - -

-
- -
-Semantic search -

- -```python -import argilla as rg - -# using text embeddings -similar_records = ds.find_similar_records( - vector_name="my_vector", - value=embedder_model.embeddings("My text is here") - # value=embedder_model.embeddings("My text is here").tolist() # for numpy arrays -) - -# using another record -similar_records = ds.find_similar_records( - vector_name="my_vector", - record=ds.records[0], - max_results=5 -) -``` - - - -

-
- -
-Weak supervision -

- -```python -from argilla.labeling.text_classification import add_rules, Rule - -rule = Rule(query="positive impact", label="optimism") -add_rules(dataset="go_emotion", rules=[rule]) -``` - - - - - -

-
- -
-Train models -

- -```python -from argilla.training import ArgillaTrainer - -trainer = ArgillaTrainer( - name="my_dataset", - workspace="my_workspace", - framework="my_framework", - model="my_framework_model", - train_size=0.8, - seed=42, - limit=10, - query="my-query" -) -trainer.update_config() # see usage below -trainer.train() -records = trainer.predict(["my-text"], as_argilla_records=True) -``` - - - -

-
- -## đŸĨ‡ Contributors - -We love contributors and have launched a [collaboration with JustDiggit](https://argilla.io/blog/introducing-argilla-community-growers) to hand out our very own bunds and help the re-greening of sub-Saharan Africa. To help our community with the creation of contributions, we have created our [developer](https://docs.argilla.io/en/latest/community/developer_docs.html) and [contributor](https://docs.argilla.io/en/latest/community/contributing.html) docs. Additionally, you can always [schedule a meeting](https://calendly.com/argilla-office-hours/30min) with our Developer Advocacy team so they can get you up to speed. - - - - - - +You will find the built documentation in `http://localhost:8000/argilla-python/`. +The docs will be deployed for pull request branches automatically. diff --git a/argilla-sdk/docs/assets/favicon.ico b/argilla/docs/assets/favicon.ico similarity index 100% rename from argilla-sdk/docs/assets/favicon.ico rename to argilla/docs/assets/favicon.ico diff --git a/argilla-sdk/docs/assets/images/community/contributing/argilla-slack.png b/argilla/docs/assets/images/community/contributing/argilla-slack.png similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/argilla-slack.png rename to argilla/docs/assets/images/community/contributing/argilla-slack.png diff --git a/argilla-sdk/docs/assets/images/community/contributing/channels.PNG b/argilla/docs/assets/images/community/contributing/channels.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/channels.PNG rename to argilla/docs/assets/images/community/contributing/channels.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/compare-across-forks.PNG b/argilla/docs/assets/images/community/contributing/compare-across-forks.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/compare-across-forks.PNG rename to argilla/docs/assets/images/community/contributing/compare-across-forks.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/compare-pull-request.PNG b/argilla/docs/assets/images/community/contributing/compare-pull-request.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/compare-pull-request.PNG rename to argilla/docs/assets/images/community/contributing/compare-pull-request.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/create-branch-together.png b/argilla/docs/assets/images/community/contributing/create-branch-together.png similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/create-branch-together.png rename to argilla/docs/assets/images/community/contributing/create-branch-together.png diff --git a/argilla-sdk/docs/assets/images/community/contributing/create-branch.PNG b/argilla/docs/assets/images/community/contributing/create-branch.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/create-branch.PNG rename to argilla/docs/assets/images/community/contributing/create-branch.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/create-fork.PNG b/argilla/docs/assets/images/community/contributing/create-fork.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/create-fork.PNG rename to argilla/docs/assets/images/community/contributing/create-fork.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/edit-file.PNG b/argilla/docs/assets/images/community/contributing/edit-file.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/edit-file.PNG rename to argilla/docs/assets/images/community/contributing/edit-file.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/fork-bar.PNG b/argilla/docs/assets/images/community/contributing/fork-bar.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/fork-bar.PNG rename to argilla/docs/assets/images/community/contributing/fork-bar.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/issue-feature-template.PNG b/argilla/docs/assets/images/community/contributing/issue-feature-template.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/issue-feature-template.PNG rename to argilla/docs/assets/images/community/contributing/issue-feature-template.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/issues-page.PNG b/argilla/docs/assets/images/community/contributing/issues-page.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/issues-page.PNG rename to argilla/docs/assets/images/community/contributing/issues-page.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/pull-request-feature.PNG b/argilla/docs/assets/images/community/contributing/pull-request-feature.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/pull-request-feature.PNG rename to argilla/docs/assets/images/community/contributing/pull-request-feature.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/pull-request.PNG b/argilla/docs/assets/images/community/contributing/pull-request.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/pull-request.PNG rename to argilla/docs/assets/images/community/contributing/pull-request.PNG diff --git a/argilla-sdk/docs/assets/images/community/contributing/templates-issues.PNG b/argilla/docs/assets/images/community/contributing/templates-issues.PNG similarity index 100% rename from argilla-sdk/docs/assets/images/community/contributing/templates-issues.PNG rename to argilla/docs/assets/images/community/contributing/templates-issues.PNG diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/fields.png b/argilla/docs/assets/images/how_to_guides/dataset/fields.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/fields.png rename to argilla/docs/assets/images/how_to_guides/dataset/fields.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/float_metadata.png b/argilla/docs/assets/images/how_to_guides/dataset/float_metadata.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/float_metadata.png rename to argilla/docs/assets/images/how_to_guides/dataset/float_metadata.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/guidelines.png b/argilla/docs/assets/images/how_to_guides/dataset/guidelines.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/guidelines.png rename to argilla/docs/assets/images/how_to_guides/dataset/guidelines.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/guidelines_description.png b/argilla/docs/assets/images/how_to_guides/dataset/guidelines_description.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/guidelines_description.png rename to argilla/docs/assets/images/how_to_guides/dataset/guidelines_description.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/integer_metadata.png b/argilla/docs/assets/images/how_to_guides/dataset/integer_metadata.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/integer_metadata.png rename to argilla/docs/assets/images/how_to_guides/dataset/integer_metadata.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/label_question.png b/argilla/docs/assets/images/how_to_guides/dataset/label_question.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/label_question.png rename to argilla/docs/assets/images/how_to_guides/dataset/label_question.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/multilabel_question.png b/argilla/docs/assets/images/how_to_guides/dataset/multilabel_question.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/multilabel_question.png rename to argilla/docs/assets/images/how_to_guides/dataset/multilabel_question.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/ranking_question.png b/argilla/docs/assets/images/how_to_guides/dataset/ranking_question.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/ranking_question.png rename to argilla/docs/assets/images/how_to_guides/dataset/ranking_question.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/rating_question.png b/argilla/docs/assets/images/how_to_guides/dataset/rating_question.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/rating_question.png rename to argilla/docs/assets/images/how_to_guides/dataset/rating_question.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/span_question.png b/argilla/docs/assets/images/how_to_guides/dataset/span_question.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/span_question.png rename to argilla/docs/assets/images/how_to_guides/dataset/span_question.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/term_metadata.png b/argilla/docs/assets/images/how_to_guides/dataset/term_metadata.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/term_metadata.png rename to argilla/docs/assets/images/how_to_guides/dataset/term_metadata.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/text_question.png b/argilla/docs/assets/images/how_to_guides/dataset/text_question.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/text_question.png rename to argilla/docs/assets/images/how_to_guides/dataset/text_question.png diff --git a/argilla-sdk/docs/assets/images/how_to_guides/dataset/vectors.png b/argilla/docs/assets/images/how_to_guides/dataset/vectors.png similarity index 100% rename from argilla-sdk/docs/assets/images/how_to_guides/dataset/vectors.png rename to argilla/docs/assets/images/how_to_guides/dataset/vectors.png diff --git a/argilla-sdk/docs/assets/logo.svg b/argilla/docs/assets/logo.svg similarity index 100% rename from argilla-sdk/docs/assets/logo.svg rename to argilla/docs/assets/logo.svg diff --git a/argilla-sdk/docs/assets/og-doc.png b/argilla/docs/assets/og-doc.png similarity index 100% rename from argilla-sdk/docs/assets/og-doc.png rename to argilla/docs/assets/og-doc.png diff --git a/argilla-sdk/docs/community/contributor.md b/argilla/docs/community/contributor.md similarity index 100% rename from argilla-sdk/docs/community/contributor.md rename to argilla/docs/community/contributor.md diff --git a/argilla-sdk/docs/community/index.md b/argilla/docs/community/index.md similarity index 100% rename from argilla-sdk/docs/community/index.md rename to argilla/docs/community/index.md diff --git a/argilla-sdk/docs/getting_started/faq.md b/argilla/docs/getting_started/faq.md similarity index 100% rename from argilla-sdk/docs/getting_started/faq.md rename to argilla/docs/getting_started/faq.md diff --git a/argilla-sdk/docs/getting_started/installation.md b/argilla/docs/getting_started/installation.md similarity index 98% rename from argilla-sdk/docs/getting_started/installation.md rename to argilla/docs/getting_started/installation.md index 1c75f064be..a8589a892e 100644 --- a/argilla-sdk/docs/getting_started/installation.md +++ b/argilla/docs/getting_started/installation.md @@ -39,7 +39,7 @@ Get your `` in `My Settings` in the Argilla UI (by default owner.apikey Make sure to replace `` and `` with your actual values. If you are using a private HF Space, you need to specify your `HF_TOKEN` which can be found [here](https://huggingface.co/settings/tokens). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla( api_url="", diff --git a/argilla-sdk/docs/getting_started/quickstart.md b/argilla/docs/getting_started/quickstart.md similarity index 97% rename from argilla-sdk/docs/getting_started/quickstart.md rename to argilla/docs/getting_started/quickstart.md index c373b81bd2..3d4737f35b 100644 --- a/argilla-sdk/docs/getting_started/quickstart.md +++ b/argilla/docs/getting_started/quickstart.md @@ -43,7 +43,7 @@ Get your `` in `My Settings` in the Argilla UI (by default `owner.apike Make sure to replace `` and `` with your actual values. If you are using a private Hugging Face Space, you need to specify your `HF_TOKEN` which can be found [here](https://huggingface.co/settings/tokens). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla( api_url="", @@ -116,4 +116,4 @@ dataset.records.log(records=data, mapping={"text": "review"}) * [Installation guide](installation.md) * [How-to guides](../how_to_guides/index.md) -* [API reference](../reference//argilla_sdk/client.md) +* [API reference](../reference//argilla/client.md) diff --git a/argilla-sdk/docs/how_to_guides/dataset.md b/argilla/docs/how_to_guides/dataset.md similarity index 97% rename from argilla-sdk/docs/how_to_guides/dataset.md rename to argilla/docs/how_to_guides/dataset.md index 95858040b4..5a755ffab1 100644 --- a/argilla-sdk/docs/how_to_guides/dataset.md +++ b/argilla/docs/how_to_guides/dataset.md @@ -25,7 +25,7 @@ A **dataset** is a collection of records that you can configure for labelers to client=client ) ``` - > Check the [Dataset - Python Reference](../reference/argilla_sdk/datasets/datasets.md) to see the attributes, arguments, and methods of the `Dataset` class in detail. + > Check the [Dataset - Python Reference](../../reference/argilla/datasets/datasets.md) to see the attributes, arguments, and methods of the `Dataset` class in detail. === "`rg.Settings`" @@ -45,7 +45,7 @@ A **dataset** is a collection of records that you can configure for labelers to ) ``` - > Check the [Settings - Python Reference](../reference/argilla_sdk/settings/settings.md) to see the attributes, arguments, and methods of the `Settings` class in detail. + > Check the [Settings - Python Reference](../../reference/argilla/settings/settings.md) to see the attributes, arguments, and methods of the `Settings` class in detail. ## Create a dataset @@ -54,7 +54,7 @@ To create a dataset, you can define it in the `Dataset` class and then call the > The created dataset will be empty, to add the records refer to this [how-to guide](record.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -90,7 +90,7 @@ dataset.create() To create multiple datasets with the same settings, define the settings once and pass it to each dataset. ```python -import argilla_sdk as rg +import argilla as rg settings = rg.Settings( guidelines="Select the sentiment of the prompt.", @@ -112,7 +112,7 @@ To create a new dataset with settings from an existing dataset, get the settings to the new dataset. ```python -import argilla_sdk as rg +import argilla as rg # Get the settings from an existing dataset existing_dataset = client.datasets("sentiment_analysis") @@ -400,7 +400,7 @@ It is good practice to use at least the dataset guidelines if not both methods. You can list all the datasets available in a workspace using the `datasets` attribute of the `Workspace` class. You can also use `len(workspace.datasets)` to get the number of datasets in a workspace. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -417,7 +417,7 @@ for dataset in datasets: You can retrieve a dataset by calling the `datasets` method on the `Argilla` class and passing the name of the dataset as an argument. By default, this method attempts to retrieve the dataset from the first workspace. If the dataset is in a different workspace, you must specify either the workspace name or id as an argument. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -435,7 +435,7 @@ retrieved_dataset = client.datasets(name="my_dataset", workspace=workspace) You can check if a dataset exists by calling the `exists` method on the `Dataset` class. This method returns a boolean value. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -452,7 +452,7 @@ You can update a dataset by calling the `update` method on the `Dataset` class a Keep in mind that once your dataset is published, only the guidelines can be updated. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -483,7 +483,7 @@ dataset_updated = dataset_to_update.update() You can delete an existing dataset by calling the `delete` method on the `Dataset` class. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") diff --git a/argilla-sdk/docs/how_to_guides/index.md b/argilla/docs/how_to_guides/index.md similarity index 52% rename from argilla-sdk/docs/how_to_guides/index.md rename to argilla/docs/how_to_guides/index.md index 3687526c53..ff089fd943 100644 --- a/argilla-sdk/docs/how_to_guides/index.md +++ b/argilla/docs/how_to_guides/index.md @@ -1,11 +1,11 @@ --- -description: These are the how-to guides for the the Argilla Python SDK SDK. They provide step-by-step instructions for common scenarios, including detailed explanations and code samples. +description: These are the how-to guides for the Argilla Python SDK. They provide step-by-step instructions for common scenarios, including detailed explanations and code samples. hide: toc --- # How-to guides -These are the how-to guides for the *the Argilla Python SDK SDK*. They provide step-by-step instructions for common scenarios, including detailed explanations and code samples. +These are the how-to guides for *the Argilla Python SDK*. They provide step-by-step instructions for common scenarios, including detailed explanations and code samples.
@@ -49,28 +49,12 @@ These are the how-to guides for the *the Argilla Python SDK SDK*. They provide s [:octicons-arrow-right-24: How-to guide](query_export.md) - + [:octicons-arrow-right-24: How-to guide](migrate_from_legacy_datasets.md)
\ No newline at end of file diff --git a/argilla/docs/how_to_guides/migrate_from_legacy_datasets.md b/argilla/docs/how_to_guides/migrate_from_legacy_datasets.md new file mode 100644 index 0000000000..9202741de7 --- /dev/null +++ b/argilla/docs/how_to_guides/migrate_from_legacy_datasets.md @@ -0,0 +1 @@ +# Migrate your legacy datasets to Argilla V2 diff --git a/argilla-sdk/docs/how_to_guides/query_export.md b/argilla/docs/how_to_guides/query_export.md similarity index 91% rename from argilla-sdk/docs/how_to_guides/query_export.md rename to argilla/docs/how_to_guides/query_export.md index 1a18a89436..a9a2f89d09 100644 --- a/argilla-sdk/docs/how_to_guides/query_export.md +++ b/argilla/docs/how_to_guides/query_export.md @@ -18,7 +18,7 @@ You can search for records in your dataset by **querying** or **filtering**. The filter=filter ) ``` - > Check the [Query - Python Reference](../reference/argilla_sdk/search.md) to see the attributes, arguments, and methods of the `Query` class in detail. + > Check the [Query - Python Reference](../../reference/argilla/search.md) to see the attributes, arguments, and methods of the `Query` class in detail. === "`rg.Filter`" @@ -29,7 +29,7 @@ You can search for records in your dataset by **querying** or **filtering**. The ] ) ``` - > Check the [Filter - Python Reference](../reference/argilla_sdk/search.md) to see the attributes, arguments, and methods of the `Filter` class in detail. + > Check the [Filter - Python Reference](../../reference/argilla/search.md) to see the attributes, arguments, and methods of the `Filter` class in detail. ## Query with search terms @@ -38,7 +38,7 @@ To search for records with terms, you can use the `Dataset.records` attribute wi === "Single search term" ```python - import argilla_sdk as rg + import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -54,7 +54,7 @@ To search for records with terms, you can use the `Dataset.records` attribute wi === "Multiple search term" ```python - import argilla_sdk as rg + import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -81,7 +81,7 @@ You can use the `Filter` class to define the conditions and pass them to the `Da === "Single condition" ```python - import argilla_sdk as rg + import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -97,7 +97,7 @@ You can use the `Filter` class to define the conditions and pass them to the `Da === "Multiple conditions" ```python - import argilla_sdk as rg + import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -125,7 +125,7 @@ You can use the `Filter` class to define the conditions and pass them to the `Da You can filter records based on their status. The status can be `pending`, `draft`, `submitted`, or `discarded`. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -134,7 +134,7 @@ workspace = client.workspaces("my_workspace") dataset = client.datasets(name="my_dataset", workspace=workspace) status_filter = rg.Query( - filter = rg.Filter(("status", "==", "submitted")) + filter=rg.Filter(("status", "==", "submitted")) ) filtered_records = list(dataset.records(status_filter)) @@ -145,7 +145,7 @@ filtered_records = list(dataset.records(status_filter)) As mentioned, you can use a query with a search term and a filter or various filters to create complex search queries. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -155,7 +155,7 @@ dataset = client.datasets(name="my_dataset", workspace=workspace) query_filter = rg.Query( query="my_term", - filter= rg.Filter( + filter=rg.Filter( [ ("label.suggestion", "==", "positive"), ("metadata.count", ">=", 10), @@ -167,7 +167,7 @@ queried_filtered_records = list(dataset.records( query=query_filter, with_metadata=True, with_suggestions=True - ) +) ) ``` @@ -176,8 +176,9 @@ queried_filtered_records = list(dataset.records( Records can be exported from `Dataset.records` as a dictionary. The `to_dict` method can be used to export records as a dictionary. You can specify the orientation of the dictionary output. You can also decide if to flatten or not the dictionary. === " + ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -203,7 +204,7 @@ exported_records = dataset.records.to_dict(flatten=True) Records can be exported from `Dataset.records` as a list of dictionaries. The `to_list` method can be used to export records as a list of dictionaries. You can decide if to flatten it or not. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") diff --git a/argilla-sdk/docs/how_to_guides/record.md b/argilla/docs/how_to_guides/record.md similarity index 95% rename from argilla-sdk/docs/how_to_guides/record.md rename to argilla/docs/how_to_guides/record.md index 9320045ae9..21792c8373 100644 --- a/argilla-sdk/docs/how_to_guides/record.md +++ b/argilla/docs/how_to_guides/record.md @@ -33,7 +33,7 @@ A **record** in Argilla is a data item that requires annotation, consisting of o ], ) ``` - > Check the [Record - Python Reference](../reference/argilla_sdk/records/records.md) to see the attributes, arguments, and methods of the `Record` class in detail. + > Check the [Record - Python Reference](../../reference/argilla/records/records.md) to see the attributes, arguments, and methods of the `Record` class in detail. ## Add records @@ -50,7 +50,7 @@ You can add records to a dataset in two different ways: either by using a dictio You can add records to a dataset by initializing a `Record` object directly. This is ideal if you need to apply logic to the data before defining the record. If the data is already structured, you should consider adding it directly as a dictionary or Hugging Face dataset. ```python - import argilla_sdk as rg + import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -85,7 +85,7 @@ You can add records to a dataset in two different ways: either by using a dictio We illustrate this python dictionaries that represent your data, but we would not advise you to to define dictionaries. Instead use the `Record` object for instatiating records. ```python - import argilla_sdk as rg + import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -133,7 +133,7 @@ You can add records to a dataset in two different ways: either by using a dictio ```python from uuid import uuid4 - import argilla_sdk as rg + import argilla as rg from datasets import load_dataset client = rg.Argilla(api_url="", api_key="") @@ -222,7 +222,7 @@ You can associate vectors, like text embeddings, to your records. They can be us You can also add vectors to a record in an initialized `Record` object. - > Check the [Vector - Python Reference](../reference/argilla_sdk/records/vectors.md) to see the attributes, arguments, and methods of the `Vector` class in detail. + > Check the [Vector - Python Reference](../../reference/argilla/records/vectors.md) to see the attributes, arguments, and methods of the `Vector` class in detail. ```python # Add records to the dataset with the vector 'my_vector' and dimension=3 @@ -277,7 +277,7 @@ Suggestions refer to suggested responses (e.g. model predictions) that you can a === "As `Record objects" You can also add suggestions to a record in an initialized `Record` object. - > Check the [Suggestions - Python Reference](../reference/argilla_sdk/records/suggestions.md) to see the attributes, arguments, and methods of the `Suggestion` class in detail. + > Check the [Suggestions - Python Reference](../../reference/argilla/records/suggestions.md) to see the attributes, arguments, and methods of the `Suggestion` class in detail. ```python # Add records to the dataset with the label 'my_label' @@ -348,7 +348,7 @@ If your dataset includes some annotations, you can add those to the records as y === "As `Record` objects" You can also add suggestions to a record in an initialized `Record` object. - > Check the [Responses - Python Reference](../reference/argilla_sdk/records/responses.md) to see the attributes, arguments, and methods of the `Suggestion` class in detail. + > Check the [Responses - Python Reference](../../reference/argilla/records/responses.md) to see the attributes, arguments, and methods of the `Suggestion` class in detail. ```python # Add records to the dataset with the label 'my_label' diff --git a/argilla-sdk/docs/how_to_guides/user.md b/argilla/docs/how_to_guides/user.md similarity index 95% rename from argilla-sdk/docs/how_to_guides/user.md rename to argilla/docs/how_to_guides/user.md index 5f9ed6f3ad..72d6f66b0c 100644 --- a/argilla-sdk/docs/how_to_guides/user.md +++ b/argilla/docs/how_to_guides/user.md @@ -69,14 +69,14 @@ Argilla provides a default user with the `owner` role to help you get started in client=client ) ``` - > Check the [User - Python Reference](../reference/argilla_sdk/users.md) to see the attributes, arguments, and methods of the `User` class in detail. + > Check the [User - Python Reference](../../reference/argilla/users.md) to see the attributes, arguments, and methods of the `User` class in detail. ## Get current user To ensure you're using the correct credentials for managing users, you can get the current user in Argilla using the `me` attribute of the `Argilla` class. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -88,7 +88,7 @@ current_user = client.me To create a new user in Argilla, you can define it in the `User` class and then call the `create` method. This method is inherited from the `Resource` base class and operates without modifications. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -108,7 +108,7 @@ created_user = user_to_create.create() You can list all the existing users in Argilla by accessing the `users` attribute on the `Argilla` class and iterating over them. You can also use `len(client.users)` to get the number of users. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -125,7 +125,7 @@ for user in users: You can retrieve an existing user from Argilla by accessing the `users` attribute on the `Argilla` class and passing the `username` as an argument. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -139,7 +139,7 @@ You can list all the users in a workspace by accessing the `users` attribute on > For further information on how to manage workspaces, check this [how-to guide](workspace.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -156,7 +156,7 @@ You can add an existing user to a workspace in Argilla by calling the `add_to_wo > For further information on how to manage workspaces, check this [how-to guide](workspace.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -173,7 +173,7 @@ You can remove an existing user from a workspace in Argilla by calling the `remo > For further information on how to manage workspaces, check this [how-to guide](workspace.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -188,7 +188,7 @@ removed_user = user.remove_from_workspace(workspace) You can delete an existing user from Argilla by calling the `delete` method on the `User` class. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") diff --git a/argilla-sdk/docs/how_to_guides/workspace.md b/argilla/docs/how_to_guides/workspace.md similarity index 92% rename from argilla-sdk/docs/how_to_guides/workspace.md rename to argilla/docs/how_to_guides/workspace.md index 27756574ce..912f17edc8 100644 --- a/argilla-sdk/docs/how_to_guides/workspace.md +++ b/argilla/docs/how_to_guides/workspace.md @@ -31,7 +31,7 @@ Argilla provides a default workspace to help you get started in Python and the U client=client ) ``` - > Check the [Workspace - Python Reference](../reference/argilla_sdk/workspaces.md) to see the attributes, arguments, and methods of the `Workspace` class in detail. + > Check the [Workspace - Python Reference](../../reference/argilla/workspaces.md) to see the attributes, arguments, and methods of the `Workspace` class in detail. ## Create a new workspace @@ -40,12 +40,12 @@ To create a new workspace in Argilla, you can define it in the `Workspace` class > When you create a new workspace, it will be empty. To create and add a new dataset, check these [guides](dataset.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") workspace_to_create = rg.Workspace( - name = "my_workspace", + name="my_workspace", client=client ) @@ -60,7 +60,7 @@ created_workspace You can list all the existing workspaces in Argilla by calling the `workspaces` attribute on the `Argilla` class and iterating over them. You can also use `len(client.workspaces)` to get the number of workspaces. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -77,7 +77,7 @@ for workspace in workspaces: You can retrieve a workspace by accessing the `workspaces` method on the `Argilla` class and passing the name of the workspace as an argument. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -89,7 +89,7 @@ retrieved_workspace = client.workspaces("my_workspace") You can check if a workspace exists by calling the `exists` method on the `Workspace` class. This method returns a boolean value. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -105,7 +105,7 @@ You can list all the users in a workspace by accessing the `users` attribute on > For further information on how to manage users, check this [how-to guide](user.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -122,7 +122,7 @@ You can also add a user to a workspace by calling the `add_user` method on the ` > For further information on how to manage users, check this [how-to guide](user.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -138,7 +138,7 @@ You can also remove a user from a workspace by calling the `remove_user` method > For further information on how to manage users, check this [how-to guide](user.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") @@ -154,7 +154,7 @@ To delete a workspace, **no dataset can be associated with it**. If the workspac > To clear a workspace and delete all their datasets, refer to this [how-to guide](dataset.md). ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla(api_url="", api_key="") diff --git a/argilla-sdk/docs/index.md b/argilla/docs/index.md similarity index 90% rename from argilla-sdk/docs/index.md rename to argilla/docs/index.md index d2db8f73b7..ee5521d746 100644 --- a/argilla-sdk/docs/index.md +++ b/argilla/docs/index.md @@ -7,6 +7,15 @@ hide: navigation Argilla is a **collaboration platform for AI engineers and domain experts** that require **high-quality outputs, full data ownership, and overall efficiency**. +!!! SUCCESS "Welcome to Argilla 2.x!" + To skip the introductions and go directly to installing and creating your first dataset, see [Quickstart](getting_started/quickstart/). + +!!! DANGER "Looking for Argilla 1.x?" + Looking for documentation for Argilla 1.x? Visit the latest release [here](https://docs.argilla.io/en/latest/). + +!!! NOTE "Migrate to Argilla 2.x" + Want to learn how to migrate from Argilla 1.x to 2.x? Take a look at our dedicated [Migration Guide](how_to_guides/migrate_from_legacy_datasets.md). +
- __Get started in 5 minutes!__ diff --git a/argilla-sdk/docs/reference/argilla_sdk/SUMMARY.md b/argilla/docs/reference/argilla/SUMMARY.md similarity index 100% rename from argilla-sdk/docs/reference/argilla_sdk/SUMMARY.md rename to argilla/docs/reference/argilla/SUMMARY.md diff --git a/argilla-sdk/docs/reference/argilla_sdk/client.md b/argilla/docs/reference/argilla/client.md similarity index 95% rename from argilla-sdk/docs/reference/argilla_sdk/client.md rename to argilla/docs/reference/argilla/client.md index 0dc268f8a0..194bf61f5f 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/client.md +++ b/argilla/docs/reference/argilla/client.md @@ -12,7 +12,7 @@ To interact with the Argilla server from Python you can use the `Argilla` class. To connect to an Argilla server, instantiate the `Argilla` class and pass the `api_url` of the server and the `api_key` to authenticate. ```python -import argilla_sdk as rg +import argilla as rg client = rg.Argilla( api_url="https://argilla.example.com", @@ -48,6 +48,6 @@ for dataset in my_workspace.datasets: ### `rg.Argilla` -::: argilla_sdk.client.Argilla +::: argilla.client.Argilla options: heading_level: 3 diff --git a/argilla-sdk/docs/reference/argilla_sdk/datasets/dataset_records.md b/argilla/docs/reference/argilla/datasets/dataset_records.md similarity index 95% rename from argilla-sdk/docs/reference/argilla_sdk/datasets/dataset_records.md rename to argilla/docs/reference/argilla/datasets/dataset_records.md index d4968b54ab..9ade4d146a 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/datasets/dataset_records.md +++ b/argilla/docs/reference/argilla/datasets/dataset_records.md @@ -12,7 +12,7 @@ dataset.records ``` !!! note "For user familiar with legacy approaches" - 1. `Dataset.records` object is used to interact with the records in a dataset. It interactively fetches records from the server in batches without using a local copy of the records. + 1. `Dataset.records` object is used to interact with the records in a dataset. It interactively fetches records from the server in batches without using a local copy of the records. 2. The `log` method of `Dataset.records` is used to both add and update records in a dataset. If the record includes a known `id` field, the record will be updated. If the record does not include a known `id` field, the record will be added. @@ -24,7 +24,7 @@ To add records to a dataset, use the `log` method. Records can be added as dicti You can also add records to a dataset by initializing a `Record` object directly. - ```python + ```python records = [ rg.Record( @@ -44,11 +44,11 @@ To add records to a dataset, use the `log` method. Records can be added as dicti dataset.records.log(records) ``` - 1. This is an illustration of a definition. In a real world scenario, you would iterate over a data structure and create `Record` objects for each iteration. + 1. This is an illustration of a definition. In a real world scenario, you would iterate over a data structure and create `Record` objects for each iteration. === "From a data structure" - ```python + ```python data = [ { @@ -64,7 +64,7 @@ To add records to a dataset, use the `log` method. Records can be added as dicti dataset.records.log(data) ``` - 1. The data structure's keys must match the fields or questions in the Argilla dataset. In this case, there are fields named `question` and `answer`. + 1. The data structure's keys must match the fields or questions in the Argilla dataset. In this case, there are fields named `question` and `answer`. === "From a data structure with a mapping" @@ -80,21 +80,21 @@ To add records to a dataset, use the `log` method. Records can be added as dicti }, ] # (1) dataset.records.log( - records=data, + records=data, mapping={"query": "question", "response": "answer"} # (2) ) ``` - 1. The data structure's keys must match the fields or questions in the Argilla dataset. In this case, there are fields named `question` and `answer`. + 1. The data structure's keys must match the fields or questions in the Argilla dataset. In this case, there are fields named `question` and `answer`. 2. The data structure has keys `query` and `response` and the Argilla dataset has `question` and `answer`. You can use the `mapping` parameter to map the keys in the data structure to the fields in the Argilla dataset. === "From a Hugging Face dataset" You can also add records to a dataset using a Hugging Face dataset. This is useful when you want to use a dataset from the Hugging Face Hub and add it to your Argilla dataset. - You can add the dataset where the column names correspond to the names of fields, questions, metadata or vectors in the Argilla dataset. - + You can add the dataset where the column names correspond to the names of fields, questions, metadata or vectors in the Argilla dataset. + If the dataset's schema does not correspond to your Argilla dataset names, you can use a `mapping` to indicate which columns in the dataset correspond to the Argilla dataset fields. ```python @@ -103,18 +103,18 @@ To add records to a dataset, use the `log` method. Records can be added as dicti hf_dataset = load_dataset("imdb", split="train[:100]") # (1) dataset.records.log(records=hf_dataset) - ``` + ``` 1. In this example, the Hugging Face dataset matches the Argilla dataset schema. If that is not the case, you could use the `.map` of the `datasets` library to prepare the data before adding it to the Argilla dataset. Here we use the `mapping` parameter to specify the relationship between the Hugging Face dataset and the Argilla dataset. - + ```python dataset.records.log(records=hf_dataset, mapping={"txt": "text", "y": "label"}) # (1) ``` 1. In this case, the `txt` key in the Hugging Face dataset corresponds to the `text` field in the Argilla dataset, and the `y` key in the Hugging Face dataset corresponds to the `label` field in the Argilla dataset. - + ### Updating records in a dataset @@ -124,7 +124,7 @@ Records can also be updated using the `log` method with records that contain an You can update records in a dataset by initializing a `Record` object directly and providing the `id` field. - ```python + ```python records = [ rg.Record( @@ -142,7 +142,7 @@ Records can also be updated using the `log` method with records that contain an You can also update records in a dataset by providing the `id` field in the data structure. - ```python + ```python data = [ { @@ -170,7 +170,7 @@ Records can also be updated using the `log` method with records that contain an ] dataset.records.log( - records=data, + records=data, mapping={"my_id": "id"} # (2) ) @@ -188,7 +188,7 @@ Records can also be updated using the `log` method with records that contain an hf_dataset = load_dataset("imdb", split="train[:100]") # (1) dataset.records.log(records=hf_dataset, mapping={"uuid": "id"}) # (2) - ``` + ``` 1. In this example, the Hugging Face dataset matches the Argilla dataset schema. 2. The `uuid` key in the Hugging Face dataset corresponds to the `id` field in the Argilla dataset. @@ -219,6 +219,6 @@ Check out the [`rg.Record`](../records/records.md) class reference for more info ### `rg.Dataset.records` -::: argilla_sdk.records.DatasetRecords +::: argilla.records.DatasetRecords options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/datasets/datasets.md b/argilla/docs/reference/argilla/datasets/datasets.md similarity index 96% rename from argilla-sdk/docs/reference/argilla_sdk/datasets/datasets.md rename to argilla/docs/reference/argilla/datasets/datasets.md index 84c430e3c0..d9cf78a024 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/datasets/datasets.md +++ b/argilla/docs/reference/argilla/datasets/datasets.md @@ -43,6 +43,6 @@ dataset = client.datasets("my_dataset") ### `rg.Dataset` -::: argilla_sdk.datasets.Dataset +::: argilla.datasets.Dataset options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/records/metadata.md b/argilla/docs/reference/argilla/records/metadata.md similarity index 98% rename from argilla-sdk/docs/reference/argilla_sdk/records/metadata.md rename to argilla/docs/reference/argilla/records/metadata.md index 13f1fbc0c9..68f1dd3f34 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/records/metadata.md +++ b/argilla/docs/reference/argilla/records/metadata.md @@ -10,7 +10,7 @@ Metadata in argilla is a dictionary that can be attached to a record. It is used To use metadata within a dataset, you must define a metadata property in the dataset settings. The metadata property is a list of metadata properties that can be attached to a record. The following example demonstrates how to add metadata to a dataset and how to access metadata from a record object: ```python -import argilla_sdk as rg +import argilla as rg dataset = Dataset( name="dataset_with_metadata", diff --git a/argilla-sdk/docs/reference/argilla_sdk/records/records.md b/argilla/docs/reference/argilla/records/records.md similarity index 95% rename from argilla-sdk/docs/reference/argilla_sdk/records/records.md rename to argilla/docs/reference/argilla/records/records.md index bd40be858f..24bd474083 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/records/records.md +++ b/argilla/docs/reference/argilla/records/records.md @@ -9,7 +9,7 @@ The `Record` object is used to represent a single record in Argilla. It contains ### Creating a Record -To create records, you can use the `Record` class and pass it to the `Dataset.records.log` method. The `Record` class requires a `fields` parameter, which is a dictionary of field names and values. The field names must match the field names in the dataset's `Settings` object to be accepted. +To create records, you can use the `Record` class and pass it to the `Dataset.records.log` method. The `Record` class requires a `fields` parameter, which is a dictionary of field names and values. The field names must match the field names in the dataset's `Settings` object to be accepted. ```python dataset.records.add( @@ -55,6 +55,6 @@ For changes to take effect, the user must call the `update` method on the `Datas ### `rg.Record` -::: argilla_sdk.records.Record +::: argilla.records.Record options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/records/responses.md b/argilla/docs/reference/argilla/records/responses.md similarity index 98% rename from argilla-sdk/docs/reference/argilla_sdk/records/responses.md rename to argilla/docs/reference/argilla/records/responses.md index af71cdc742..028fcd8db8 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/records/responses.md +++ b/argilla/docs/reference/argilla/records/responses.md @@ -64,6 +64,6 @@ for record in dataset.records: ### `rg.Response` -::: argilla_sdk.responses.Response +::: argilla.responses.Response options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/records/suggestions.md b/argilla/docs/reference/argilla/records/suggestions.md similarity index 98% rename from argilla-sdk/docs/reference/argilla_sdk/records/suggestions.md rename to argilla/docs/reference/argilla/records/suggestions.md index 22b2286984..3a8508721e 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/records/suggestions.md +++ b/argilla/docs/reference/argilla/records/suggestions.md @@ -73,6 +73,6 @@ for record in dataset.records(with_suggestions=True): ### `rg.Suggestion` -::: argilla_sdk.suggestions.Suggestion +::: argilla.suggestions.Suggestion options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/records/vectors.md b/argilla/docs/reference/argilla/records/vectors.md similarity index 97% rename from argilla-sdk/docs/reference/argilla_sdk/records/vectors.md rename to argilla/docs/reference/argilla/records/vectors.md index 18a7d50476..6a78908f13 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/records/vectors.md +++ b/argilla/docs/reference/argilla/records/vectors.md @@ -9,9 +9,8 @@ A vector is a numerical representation of a `Record` field or attribute, usually To use vectors within a dataset, you must define a vector field in the dataset settings. The vector field is a list of vector fields that can be attached to a record. The following example demonstrates how to add vectors to a dataset and how to access vectors from a record object: - ```python -import argilla_sdk as rg +import argilla as rg dataset = Dataset( name="dataset_with_metadata", @@ -72,6 +71,6 @@ dataset.records.log( ### `rg.Vector` -::: argilla_sdk.vectors.Vector +::: argilla.vectors.Vector options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/search.md b/argilla/docs/reference/argilla/search.md similarity index 95% rename from argilla-sdk/docs/reference/argilla_sdk/search.md rename to argilla/docs/reference/argilla/search.md index 80860e9eef..305953d5a2 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/search.md +++ b/argilla/docs/reference/argilla/search.md @@ -46,12 +46,12 @@ for record in dataset.records(query=query): ### `rg.Query` -::: argilla_sdk.records._search.Query +::: argilla.records._search.Query options: heading_level: 3 ### `rg.Filter` -::: argilla_sdk.records._search.Filter +::: argilla.records._search.Filter options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/settings/fields.md b/argilla/docs/reference/argilla/settings/fields.md similarity index 95% rename from argilla-sdk/docs/reference/argilla_sdk/settings/fields.md rename to argilla/docs/reference/argilla/settings/fields.md index 372405ed64..e482ce3836 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/settings/fields.md +++ b/argilla/docs/reference/argilla/settings/fields.md @@ -39,6 +39,6 @@ data = rg.Dataset( ### `rg.TextField` -::: argilla_sdk.settings.TextField +::: argilla.settings.TextField options: heading_level: 3 diff --git a/argilla-sdk/docs/reference/argilla_sdk/settings/metadata_property.md b/argilla/docs/reference/argilla/settings/metadata_property.md similarity index 90% rename from argilla-sdk/docs/reference/argilla_sdk/settings/metadata_property.md rename to argilla/docs/reference/argilla/settings/metadata_property.md index 266a250bc6..a33f0075cf 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/settings/metadata_property.md +++ b/argilla/docs/reference/argilla/settings/metadata_property.md @@ -14,9 +14,8 @@ We define metadata properties via type specific classes. The following example d `TermsMetadataProperty` is used to define a metadata field with a list of options. For example, a color field with options red, blue, and green. `FloatMetadataProperty` and `IntegerMetadataProperty` is used to define a metadata field with a float value. For example, a price field with a minimum value of 0.0 and a maximum value of 100.0. - ```python -import argilla_sdk as rg +import argilla as rg # Define metadata properties as terms metadata_field = rg.TermsMetadataProperty( @@ -26,7 +25,8 @@ metadata_field = rg.TermsMetadataProperty( ) # Define metadata properties as float -float_ metadata_field = rg.FloatMetadataProperty( +float_ +metadata_field = rg.FloatMetadataProperty( name="price", min=0.0, max=100.0, @@ -69,18 +69,18 @@ dataset = rg.Dataset( ### `rg.FloatMetadataProperty` -::: argilla_sdk.settings.FloatMetadataProperty +::: argilla.settings.FloatMetadataProperty options: heading_level: 3 ### `rg.IntegerMetadataProperty` -::: argilla_sdk.settings.IntegerMetadataProperty +::: argilla.settings.IntegerMetadataProperty options: heading_level: 3 ### `rg.TermsMetadataProperty` -::: argilla_sdk.settings.TermsMetadataProperty +::: argilla.settings.TermsMetadataProperty options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/settings/questions.md b/argilla/docs/reference/argilla/settings/questions.md similarity index 87% rename from argilla-sdk/docs/reference/argilla_sdk/settings/questions.md rename to argilla/docs/reference/argilla/settings/questions.md index 32e40e7b31..08b9b33a5c 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/settings/questions.md +++ b/argilla/docs/reference/argilla/settings/questions.md @@ -57,36 +57,36 @@ dataset = rg.Dataset( ### `rg.LabelQuestion` -::: argilla_sdk.settings.LabelQuestion +::: argilla.settings.LabelQuestion options: heading_level: 3 ### `rg.MultiLabelQuestion` -::: argilla_sdk.settings.MultiLabelQuestion +::: argilla.settings.MultiLabelQuestion options: heading_level: 3 ### `rg.RankingQuestion` -::: argilla_sdk.settings.RankingQuestion +::: argilla.settings.RankingQuestion options: heading_level: 3 ### `rg.TextQuestion` -::: argilla_sdk.settings.TextQuestion +::: argilla.settings.TextQuestion options: heading_level: 3 ### `rg.RatingQuestion` -::: argilla_sdk.settings.RatingQuestion +::: argilla.settings.RatingQuestion options: heading_level: 3 ### `rg.SpanQuestion` -::: argilla_sdk.settings.SpanQuestion +::: argilla.settings.SpanQuestion options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/settings/settings.md b/argilla/docs/reference/argilla/settings/settings.md similarity index 95% rename from argilla-sdk/docs/reference/argilla_sdk/settings/settings.md rename to argilla/docs/reference/argilla/settings/settings.md index 133b892673..677bc16b59 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/settings/settings.md +++ b/argilla/docs/reference/argilla/settings/settings.md @@ -15,7 +15,7 @@ cannot be changed. To create a new dataset with settings, instantiate the `Settings` class and pass it to the `Dataset` class. ```python -import argilla_sdk as rg +import argilla as rg settings = rg.Settings( guidelines="Select the sentiment of the prompt.", @@ -38,6 +38,6 @@ dataset.create() ### `rg.Settings` -::: argilla_sdk.settings.Settings +::: argilla.settings.Settings options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/settings/vectors.md b/argilla/docs/reference/argilla/settings/vectors.md similarity index 95% rename from argilla-sdk/docs/reference/argilla_sdk/settings/vectors.md rename to argilla/docs/reference/argilla/settings/vectors.md index 106e4b8a18..7d00f802b6 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/settings/vectors.md +++ b/argilla/docs/reference/argilla/settings/vectors.md @@ -32,6 +32,6 @@ settings = rg.Settings( ### `rg.VectorField` -::: argilla_sdk.settings.VectorField +::: argilla.settings.VectorField options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/users.md b/argilla/docs/reference/argilla/users.md similarity index 96% rename from argilla-sdk/docs/reference/argilla_sdk/users.md rename to argilla/docs/reference/argilla/users.md index cf58272f9f..0c79dd8644 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/users.md +++ b/argilla/docs/reference/argilla/users.md @@ -32,6 +32,6 @@ client.me ### `rg.User` -::: argilla_sdk.users.User +::: argilla.users.User options: heading_level: 3 \ No newline at end of file diff --git a/argilla-sdk/docs/reference/argilla_sdk/workspaces.md b/argilla/docs/reference/argilla/workspaces.md similarity index 94% rename from argilla-sdk/docs/reference/argilla_sdk/workspaces.md rename to argilla/docs/reference/argilla/workspaces.md index ce751759d4..f56ee1596f 100644 --- a/argilla-sdk/docs/reference/argilla_sdk/workspaces.md +++ b/argilla/docs/reference/argilla/workspaces.md @@ -27,6 +27,6 @@ workspace = client.workspaces("my_workspace") ### `rg.Workspace` -::: argilla_sdk.workspaces.Workspace +::: argilla.workspaces.Workspace options: heading_level: 4 \ No newline at end of file diff --git a/argilla-sdk/docs/scripts/gen_changelog.py b/argilla/docs/scripts/gen_changelog.py similarity index 91% rename from argilla-sdk/docs/scripts/gen_changelog.py rename to argilla/docs/scripts/gen_changelog.py index 5582433898..99688fb735 100644 --- a/argilla-sdk/docs/scripts/gen_changelog.py +++ b/argilla/docs/scripts/gen_changelog.py @@ -24,10 +24,12 @@ DATA_PATH = "community/changelog.md" -GITHUB_ACCESS_TOKEN = os.environ["GH_ACCESS_TOKEN"] # public_repo and read:org scopes are required +GITHUB_ACCESS_TOKEN = os.getenv("GH_ACCESS_TOKEN") # public_repo and read:org scopes are required def fetch_file_from_github(repository, changelog_path, branch, auth_token): + if auth_token is None: + return "" headers = {"Authorization": f"Bearer {auth_token}", "Accept": "application/vnd.github.v3+json"} owner, repo_name = repository.split("/") diff --git a/argilla-sdk/docs/scripts/gen_popular_issues.py b/argilla/docs/scripts/gen_popular_issues.py similarity index 89% rename from argilla-sdk/docs/scripts/gen_popular_issues.py rename to argilla/docs/scripts/gen_popular_issues.py index fd085a9d9e..46e6bfdf2c 100644 --- a/argilla-sdk/docs/scripts/gen_popular_issues.py +++ b/argilla/docs/scripts/gen_popular_issues.py @@ -22,10 +22,27 @@ REPOSITORY = "argilla-io/argilla" DATA_PATH = "community/popular_issues.md" -GITHUB_ACCESS_TOKEN = os.environ["GH_ACCESS_TOKEN"] # public_repo and read:org scopes are required +GITHUB_ACCESS_TOKEN = os.getenv("GH_ACCESS_TOKEN") # public_repo and read:org scopes are required def fetch_data_from_github(repository, auth_token): + if auth_token is None: + return pd.DataFrame( + { + "Issue": [], + "State": [], + "Created at": [], + "Closed at": [], + "Last update": [], + "Labels": [], + "Milestone": [], + "Reactions": [], + "Comments": [], + "URL": [], + "Repository": [], + "Author": [], + } + ) headers = {"Authorization": f"token {auth_token}", "Accept": "application/vnd.github.v3+json"} issues_data = [] diff --git a/argilla-sdk/docs/scripts/gen_ref_pages.py b/argilla/docs/scripts/gen_ref_pages.py similarity index 100% rename from argilla-sdk/docs/scripts/gen_ref_pages.py rename to argilla/docs/scripts/gen_ref_pages.py diff --git a/argilla-sdk/docs/stylesheets/extra.css b/argilla/docs/stylesheets/extra.css similarity index 100% rename from argilla-sdk/docs/stylesheets/extra.css rename to argilla/docs/stylesheets/extra.css diff --git a/argilla-sdk/docs/stylesheets/fonts/FontAwesome.otf b/argilla/docs/stylesheets/fonts/FontAwesome.otf similarity index 100% rename from argilla-sdk/docs/stylesheets/fonts/FontAwesome.otf rename to argilla/docs/stylesheets/fonts/FontAwesome.otf diff --git a/argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.eot b/argilla/docs/stylesheets/fonts/fontawesome-webfont.eot similarity index 100% rename from argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.eot rename to argilla/docs/stylesheets/fonts/fontawesome-webfont.eot diff --git a/argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.svg b/argilla/docs/stylesheets/fonts/fontawesome-webfont.svg similarity index 100% rename from argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.svg rename to argilla/docs/stylesheets/fonts/fontawesome-webfont.svg diff --git a/argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.ttf b/argilla/docs/stylesheets/fonts/fontawesome-webfont.ttf similarity index 100% rename from argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.ttf rename to argilla/docs/stylesheets/fonts/fontawesome-webfont.ttf diff --git a/argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.woff b/argilla/docs/stylesheets/fonts/fontawesome-webfont.woff similarity index 100% rename from argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.woff rename to argilla/docs/stylesheets/fonts/fontawesome-webfont.woff diff --git a/argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.woff2 b/argilla/docs/stylesheets/fonts/fontawesome-webfont.woff2 similarity index 100% rename from argilla-sdk/docs/stylesheets/fonts/fontawesome-webfont.woff2 rename to argilla/docs/stylesheets/fonts/fontawesome-webfont.woff2 diff --git a/argilla-sdk/docs/stylesheets/old.css b/argilla/docs/stylesheets/old.css similarity index 100% rename from argilla-sdk/docs/stylesheets/old.css rename to argilla/docs/stylesheets/old.css diff --git a/argilla-sdk/mkdocs.yml b/argilla/mkdocs.yml similarity index 77% rename from argilla-sdk/mkdocs.yml rename to argilla/mkdocs.yml index e9b02682cf..3a891141e9 100644 --- a/argilla-sdk/mkdocs.yml +++ b/argilla/mkdocs.yml @@ -71,7 +71,7 @@ theme: name: Switch to system preference watch: - - src/argilla_sdk + - src/argilla # Extensions markdown_extensions: @@ -91,13 +91,12 @@ markdown_extensions: - footnotes - tables - pymdownx.emoji: - emoji_index: !!python/name:material.extensions.emoji.twemoji - emoji_generator: !!python/name:material.extensions.emoji.to_svg + emoji_index: "!!python/name:material.extensions.emoji.twemoji" + emoji_generator: "!!python/name:material.extensions.emoji.to_svg" # activating permalink: true makes the anchor link works in the notebooks - toc: permalink: true - plugins: - search - open-in-new-tab @@ -130,22 +129,23 @@ plugins: nav: - Argilla: index.md - Getting started: - - Quickstart: getting_started/quickstart.md - - Installation: getting_started/installation.md - - FAQ: getting_started/faq.md + - Quickstart: getting_started/quickstart.md + - Installation: getting_started/installation.md + - FAQ: getting_started/faq.md - How-to guides: - - how_to_guides/index.md - - Manage users and credentials: how_to_guides/user.md - - Manage workspaces: how_to_guides/workspace.md - - Manage and create datasets: how_to_guides/dataset.md - - Add, update, and delete records: how_to_guides/record.md - - Query, filter, and export records: how_to_guides/query_export.md + - how_to_guides/index.md + - Manage users and credentials: how_to_guides/user.md + - Manage workspaces: how_to_guides/workspace.md + - Manage and create datasets: how_to_guides/dataset.md + - Add, update, and delete records: how_to_guides/record.md + - Query, filter, and export records: how_to_guides/query_export.md + - Migrate your legacy datasets to Argilla V2: how_to_guides/migrate_from_legacy_datasets.md - API Reference: - - Python SDK: reference/argilla_sdk/ + - Python SDK: reference/argilla/ - Community: - - community/index.md - - How to contribute?: community/contributor.md - - Issue dashboard: community/popular_issues.md - - Changelog: community/changelog.md + - community/index.md + - How to contribute?: community/contributor.md + - Issue dashboard: community/popular_issues.md + - Changelog: community/changelog.md - UI Demo ↗: - - https://demo.argilla.io/sign-in?auth=ZGVtbzoxMjM0NTY3OA== \ No newline at end of file + - https://demo.argilla.io/sign-in?auth=ZGVtbzoxMjM0NTY3OA== diff --git a/argilla-sdk/pdm.lock b/argilla/pdm.lock similarity index 54% rename from argilla-sdk/pdm.lock rename to argilla/pdm.lock index 8cafdb1606..04556ab3e9 100644 --- a/argilla-sdk/pdm.lock +++ b/argilla/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "dev"] strategy = ["cross_platform", "inherit_metadata"] lock_version = "4.4.1" -content_hash = "sha256:9833bffcf7bc5d794c2a0baa88d38e5f0d42dc87516c36fbd10905620c55d9c4" +content_hash = "sha256:10269e0bb9a8b44cdcb92d40bc63899c1ace59fd69d17d263a9d5a68067b7970" [[package]] name = "aiohttp" @@ -86,18 +86,18 @@ files = [ [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" requires_python = ">=3.8" summary = "Reusable constraint types to use with typing.Annotated" groups = ["default"] files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "anyio" -version = "4.3.0" +version = "4.4.0" requires_python = ">=3.8" summary = "High level compatibility layer for multiple asynchronous event loop implementations" groups = ["default", "dev"] @@ -108,8 +108,43 @@ dependencies = [ "typing-extensions>=4.1; python_version < \"3.11\"", ] files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, +] + +[[package]] +name = "argilla-v1" +version = "1.29.0a1" +requires_python = "<3.13,>=3.8" +path = "../argilla-v1" +summary = "Open-source tool for exploring, labeling, and monitoring data for NLP projects." +groups = ["default"] +dependencies = [ + "backoff", + "deprecated~=1.2.0", + "httpx<=0.26,>=0.15", + "monotonic", + "numpy<1.27.0", + "packaging>=20.0", + "pandas>=1.0.0", + "pydantic>=1.10.7", + "rich!=13.1.0", + "tqdm>=4.27.0", + "typer<0.10.0,>=0.6.0", + "wrapt<1.15,>=1.14", +] + +[[package]] +name = "argilla-v1" +version = "1.29.0a1" +extras = ["listeners"] +requires_python = "<3.13,>=3.8" +path = "../argilla-v1" +summary = "Open-source tool for exploring, labeling, and monitoring data for NLP projects." +groups = ["default"] +dependencies = [ + "argilla-v1 @ file:///${PROJECT_ROOT}/../argilla-v1", + "schedule~=1.1.0", ] [[package]] @@ -150,13 +185,24 @@ files = [ [[package]] name = "babel" -version = "2.14.0" -requires_python = ">=3.7" +version = "2.15.0" +requires_python = ">=3.8" summary = "Internationalization utilities" groups = ["dev"] files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, +] + +[[package]] +name = "backoff" +version = "2.2.1" +requires_python = ">=3.7,<4.0" +summary = "Function decoration for backoff and retry" +groups = ["default"] +files = [ + {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, + {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, ] [[package]] @@ -175,7 +221,7 @@ files = [ [[package]] name = "black" -version = "24.3.0" +version = "24.4.2" requires_python = ">=3.8" summary = "The uncompromising code formatter." groups = ["dev"] @@ -189,16 +235,20 @@ dependencies = [ "typing-extensions>=4.0.1; python_version < \"3.11\"", ] files = [ - {file = "black-24.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395"}, - {file = "black-24.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995"}, - {file = "black-24.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"}, - {file = "black-24.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0"}, - {file = "black-24.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb"}, - {file = "black-24.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7"}, - {file = "black-24.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7"}, - {file = "black-24.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f"}, - {file = "black-24.3.0-py3-none-any.whl", hash = "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93"}, - {file = "black-24.3.0.tar.gz", hash = "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f"}, + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] [[package]] @@ -218,34 +268,34 @@ files = [ [[package]] name = "build" -version = "1.1.1" -requires_python = ">= 3.7" +version = "1.2.1" +requires_python = ">=3.8" summary = "A simple, correct Python build frontend" groups = ["dev"] dependencies = [ "colorama; os_name == \"nt\"", "importlib-metadata>=4.6; python_full_version < \"3.10.2\"", - "packaging>=19.0", + "packaging>=19.1", "pyproject-hooks", "tomli>=1.1.0; python_version < \"3.11\"", ] files = [ - {file = "build-1.1.1-py3-none-any.whl", hash = "sha256:8ed0851ee76e6e38adce47e4bee3b51c771d86c64cf578d0c2245567ee200e73"}, - {file = "build-1.1.1.tar.gz", hash = "sha256:8eea65bb45b1aac2e734ba2cc8dad3a6d97d97901a395bd0ed3e7b46953d2a31"}, + {file = "build-1.2.1-py3-none-any.whl", hash = "sha256:75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4"}, + {file = "build-1.2.1.tar.gz", hash = "sha256:526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d"}, ] [[package]] name = "cairocffi" -version = "1.6.1" -requires_python = ">=3.7" +version = "1.7.0" +requires_python = ">=3.8" summary = "cffi-based cairo bindings for Python" groups = ["dev"] dependencies = [ "cffi>=1.1.0", ] files = [ - {file = "cairocffi-1.6.1-py3-none-any.whl", hash = "sha256:aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e"}, - {file = "cairocffi-1.6.1.tar.gz", hash = "sha256:78e6bbe47357640c453d0be929fa49cd05cce2e1286f3d2a1ca9cbda7efdb8b7"}, + {file = "cairocffi-1.7.0-py3-none-any.whl", hash = "sha256:1f29a8d41dbda4090c0aa33bcdea64f3b493e95f74a43ea107c4a8a7b7f632ef"}, + {file = "cairocffi-1.7.0.tar.gz", hash = "sha256:7761863603894305f3160eca68452f373433ca8745ab7dd445bd2c6ce50dcab7"}, ] [[package]] @@ -268,13 +318,13 @@ files = [ [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" requires_python = ">=3.6" summary = "Python package for providing Mozilla's CA Bundle." groups = ["default", "dev"] files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] @@ -298,6 +348,28 @@ files = [ {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] @@ -335,6 +407,36 @@ files = [ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] @@ -343,7 +445,7 @@ name = "click" version = "8.1.7" requires_python = ">=3.7" summary = "Composable command line interface toolkit" -groups = ["dev"] +groups = ["default", "dev"] dependencies = [ "colorama; platform_system == \"Windows\"", ] @@ -357,7 +459,7 @@ name = "colorama" version = "0.4.6" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Cross-platform colored terminal text." -groups = ["dev"] +groups = ["default", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -380,7 +482,7 @@ files = [ [[package]] name = "datasets" -version = "2.19.1" +version = "2.19.2" requires_python = ">=3.8.0" summary = "HuggingFace community-driven open-source library of datasets" groups = ["dev"] @@ -397,13 +499,13 @@ dependencies = [ "pyarrow-hotfix", "pyarrow>=12.0.0", "pyyaml>=5.1", - "requests>=2.19.0", + "requests>=2.32.1", "tqdm>=4.62.1", "xxhash", ] files = [ - {file = "datasets-2.19.1-py3-none-any.whl", hash = "sha256:f7a78d15896f45004ccac1c298f3c7121f92f91f6f2bfbd4e4f210f827e6e411"}, - {file = "datasets-2.19.1.tar.gz", hash = "sha256:0df9ef6c5e9138cdb996a07385220109ff203c204245578b69cca905eb151d3a"}, + {file = "datasets-2.19.2-py3-none-any.whl", hash = "sha256:e07ff15d75b1af75c87dd96323ba2a361128d495136652f37fd62f918d17bb4e"}, + {file = "datasets-2.19.2.tar.gz", hash = "sha256:eccb82fb3bb5ee26ccc6d7a15b7f1f834e2cc4e59b7cff7733a003552bad51ef"}, ] [[package]] @@ -428,6 +530,20 @@ files = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] +[[package]] +name = "deprecated" +version = "1.2.14" +requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +summary = "Python @deprecated decorator to deprecate old python classes, functions or methods." +groups = ["default"] +dependencies = [ + "wrapt<2,>=1.10", +] +files = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] + [[package]] name = "dill" version = "0.3.8" @@ -451,14 +567,14 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.1" requires_python = ">=3.7" summary = "Backport of PEP 654 (exception groups)" groups = ["default", "dev"] marker = "python_version < \"3.11\"" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, + {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, ] [[package]] @@ -484,13 +600,13 @@ files = [ [[package]] name = "filelock" -version = "3.13.1" +version = "3.15.1" requires_python = ">=3.8" summary = "A platform independent file lock." groups = ["dev"] files = [ - {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, - {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, + {file = "filelock-3.15.1-py3-none-any.whl", hash = "sha256:71b3102950e91dfc1bb4209b64be4dc8854f40e5f534428d8684f953ac847fac"}, + {file = "filelock-3.15.1.tar.gz", hash = "sha256:58a2549afdf9e02e10720eaa4d4470f56386d7a6f72edd7d0596337af8ed7ad8"}, ] [[package]] @@ -621,7 +737,7 @@ files = [ [[package]] name = "gitpython" -version = "3.1.42" +version = "3.1.43" requires_python = ">=3.7" summary = "GitPython is a Python library used to interact with Git repositories" groups = ["dev"] @@ -629,13 +745,13 @@ dependencies = [ "gitdb<5,>=4.0.1", ] files = [ - {file = "GitPython-3.1.42-py3-none-any.whl", hash = "sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd"}, - {file = "GitPython-3.1.42.tar.gz", hash = "sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb"}, + {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"}, + {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"}, ] [[package]] name = "griffe" -version = "0.42.1" +version = "0.45.3" requires_python = ">=3.8" summary = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." groups = ["dev"] @@ -643,8 +759,8 @@ dependencies = [ "colorama>=0.4", ] files = [ - {file = "griffe-0.42.1-py3-none-any.whl", hash = "sha256:7e805e35617601355edcac0d3511cedc1ed0cb1f7645e2d336ae4b05bbae7b3b"}, - {file = "griffe-0.42.1.tar.gz", hash = "sha256:57046131384043ed078692b85d86b76568a686266cc036b9b56b704466f803ce"}, + {file = "griffe-0.45.3-py3-none-any.whl", hash = "sha256:ed1481a680ae3e28f91a06e0d8a51a5c9b97555aa2527abc2664447cc22337d6"}, + {file = "griffe-0.45.3.tar.gz", hash = "sha256:02ee71cc1a5035864b97bd0dbfff65c33f6f2c8854d3bd48a791905c2b8a44b9"}, ] [[package]] @@ -660,7 +776,7 @@ files = [ [[package]] name = "httpcore" -version = "1.0.4" +version = "1.0.5" requires_python = ">=3.8" summary = "A minimal low-level HTTP client." groups = ["default", "dev"] @@ -669,13 +785,13 @@ dependencies = [ "h11<0.15,>=0.13", ] files = [ - {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, - {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, + {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, + {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, ] [[package]] name = "httpx" -version = "0.27.0" +version = "0.26.0" requires_python = ">=3.8" summary = "The next generation HTTP client." groups = ["default", "dev"] @@ -687,13 +803,13 @@ dependencies = [ "sniffio", ] files = [ - {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, - {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, ] [[package]] name = "huggingface-hub" -version = "0.23.2" +version = "0.23.3" requires_python = ">=3.8.0" summary = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" groups = ["dev"] @@ -707,35 +823,35 @@ dependencies = [ "typing-extensions>=3.7.4.3", ] files = [ - {file = "huggingface_hub-0.23.2-py3-none-any.whl", hash = "sha256:48727a16e704d409c4bb5913613308499664f22a99743435dc3a13b23c485827"}, - {file = "huggingface_hub-0.23.2.tar.gz", hash = "sha256:f6829b62d5fdecb452a76fdbec620cba4c1573655a8d710c1df71735fd9edbd2"}, + {file = "huggingface_hub-0.23.3-py3-none-any.whl", hash = "sha256:22222c41223f1b7c209ae5511d2d82907325a0e3cdbce5f66949d43c598ff3bc"}, + {file = "huggingface_hub-0.23.3.tar.gz", hash = "sha256:1a1118a0b3dea3bab6c325d71be16f5ffe441d32f3ac7c348d6875911b694b5b"}, ] [[package]] name = "identify" -version = "2.5.35" +version = "2.5.36" requires_python = ">=3.8" summary = "File identification library for Python" groups = ["dev"] files = [ - {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, - {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, + {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, + {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, ] [[package]] name = "idna" -version = "3.6" +version = "3.7" requires_python = ">=3.5" summary = "Internationalized Domain Names in Applications (IDNA)" groups = ["default", "dev"] files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] name = "importlib-metadata" -version = "7.0.2" +version = "7.1.0" requires_python = ">=3.8" summary = "Read metadata from Python packages" groups = ["dev"] @@ -743,13 +859,13 @@ dependencies = [ "zipp>=0.5", ] files = [ - {file = "importlib_metadata-7.0.2-py3-none-any.whl", hash = "sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100"}, - {file = "importlib_metadata-7.0.2.tar.gz", hash = "sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792"}, + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, ] [[package]] name = "importlib-resources" -version = "6.3.2" +version = "6.4.0" requires_python = ">=3.8" summary = "Read resources from Python packages" groups = ["dev"] @@ -757,8 +873,8 @@ dependencies = [ "zipp>=3.1.0; python_version < \"3.10\"", ] files = [ - {file = "importlib_resources-6.3.2-py3-none-any.whl", hash = "sha256:f41f4098b16cd140a97d256137cfd943d958219007990b2afb00439fc623f580"}, - {file = "importlib_resources-6.3.2.tar.gz", hash = "sha256:963eb79649252b0160c1afcfe5a1d3fe3ad66edd0a8b114beacffb70c0674223"}, + {file = "importlib_resources-6.4.0-py3-none-any.whl", hash = "sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c"}, + {file = "importlib_resources-6.4.0.tar.gz", hash = "sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145"}, ] [[package]] @@ -812,7 +928,7 @@ files = [ [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" requires_python = ">=3.7" summary = "A very fast and expressive template engine." groups = ["dev"] @@ -820,13 +936,13 @@ dependencies = [ "MarkupSafe>=2.0", ] files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [[package]] name = "jsonschema" -version = "4.21.1" +version = "4.22.0" requires_python = ">=3.8" summary = "An implementation of JSON Schema validation for Python" groups = ["dev"] @@ -837,8 +953,8 @@ dependencies = [ "rpds-py>=0.7.1", ] files = [ - {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, - {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, + {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, + {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, ] [[package]] @@ -857,7 +973,7 @@ files = [ [[package]] name = "jupyter-client" -version = "8.6.1" +version = "8.6.2" requires_python = ">=3.8" summary = "Jupyter protocol implementation and client libraries" groups = ["dev"] @@ -870,8 +986,8 @@ dependencies = [ "traitlets>=5.3", ] files = [ - {file = "jupyter_client-8.6.1-py3-none-any.whl", hash = "sha256:3b7bd22f058434e3b9a7ea4b1500ed47de2713872288c0d511d19926f99b459f"}, - {file = "jupyter_client-8.6.1.tar.gz", hash = "sha256:e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f"}, + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, ] [[package]] @@ -903,7 +1019,7 @@ files = [ [[package]] name = "markdown" -version = "3.5.2" +version = "3.6" requires_python = ">=3.8" summary = "Python implementation of John Gruber's Markdown." groups = ["dev"] @@ -911,8 +1027,22 @@ dependencies = [ "importlib-metadata>=4.4; python_version < \"3.10\"", ] files = [ - {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, - {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, + {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, + {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +requires_python = ">=3.8" +summary = "Python port of markdown-it. Markdown parsing, done right!" +groups = ["default"] +dependencies = [ + "mdurl~=0.1", +] +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, ] [[package]] @@ -932,21 +1062,41 @@ files = [ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] name = "matplotlib-inline" -version = "0.1.6" -requires_python = ">=3.5" +version = "0.1.7" +requires_python = ">=3.8" summary = "Inline Matplotlib backend for Jupyter" groups = ["dev"] dependencies = [ "traitlets", ] files = [ - {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"}, - {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"}, + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, ] [[package]] @@ -960,6 +1110,17 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] +[[package]] +name = "mdurl" +version = "0.1.2" +requires_python = ">=3.7" +summary = "Markdown URL utilities" +groups = ["default"] +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + [[package]] name = "mergedeep" version = "1.3.4" @@ -973,7 +1134,7 @@ files = [ [[package]] name = "mike" -version = "2.0.0" +version = "2.1.1" summary = "Manage multiple versions of your MkDocs-powered documentation" groups = ["dev"] dependencies = [ @@ -982,12 +1143,13 @@ dependencies = [ "jinja2>=2.7", "mkdocs>=1.0", "pyparsing>=3.0", + "pyyaml-env-tag", "pyyaml>=5.1", "verspec", ] files = [ - {file = "mike-2.0.0-py3-none-any.whl", hash = "sha256:87f496a65900f93ba92d72940242b65c86f3f2f82871bc60ebdcffc91fad1d9e"}, - {file = "mike-2.0.0.tar.gz", hash = "sha256:566f1cab1a58cc50b106fb79ea2f1f56e7bfc8b25a051e95e6eaee9fba0922de"}, + {file = "mike-2.1.1-py3-none-any.whl", hash = "sha256:0b1d01a397a423284593eeb1b5f3194e37169488f929b860c9bfe95c0d5efb79"}, + {file = "mike-2.1.1.tar.gz", hash = "sha256:f39ed39f3737da83ad0adc33e9f885092ed27f8c9e7ff0523add0480352a2c22"}, ] [[package]] @@ -1091,7 +1253,7 @@ files = [ [[package]] name = "mkdocs-material" -version = "9.5.21" +version = "9.5.26" requires_python = ">=3.8" summary = "Documentation that simply works" groups = ["dev"] @@ -1109,8 +1271,8 @@ dependencies = [ "requests~=2.26", ] files = [ - {file = "mkdocs_material-9.5.21-py3-none-any.whl", hash = "sha256:210e1f179682cd4be17d5c641b2f4559574b9dea2f589c3f0e7c17c5bd1959bc"}, - {file = "mkdocs_material-9.5.21.tar.gz", hash = "sha256:049f82770f40559d3c2aa2259c562ea7257dbb4aaa9624323b5ef27b2d95a450"}, + {file = "mkdocs_material-9.5.26-py3-none-any.whl", hash = "sha256:5d01fb0aa1c7946a1e3ae8689aa2b11a030621ecb54894e35aabb74c21016312"}, + {file = "mkdocs_material-9.5.26.tar.gz", hash = "sha256:56aeb91d94cffa43b6296fa4fbf0eb7c840136e563eecfd12c2d9e92e50ba326"}, ] [[package]] @@ -1140,21 +1302,21 @@ files = [ [[package]] name = "mkdocs-section-index" -version = "0.3.8" -requires_python = ">=3.7" +version = "0.3.9" +requires_python = ">=3.8" summary = "MkDocs plugin to allow clickable sections that lead to an index page" groups = ["dev"] dependencies = [ "mkdocs>=1.2", ] files = [ - {file = "mkdocs_section_index-0.3.8-py3-none-any.whl", hash = "sha256:823d298d78bc1e73e23678ff60889f3c369c2167b03dba73fea88bd0e268a60d"}, - {file = "mkdocs_section_index-0.3.8.tar.gz", hash = "sha256:bbd209f0da79441baf136ef3a9c40665bb9681d1fb62c73ca2f116fd1388a404"}, + {file = "mkdocs_section_index-0.3.9-py3-none-any.whl", hash = "sha256:5e5eb288e8d7984d36c11ead5533f376fdf23498f44e903929d72845b24dfe34"}, + {file = "mkdocs_section_index-0.3.9.tar.gz", hash = "sha256:b66128d19108beceb08b226ee1ba0981840d14baf8a652b6c59e650f3f92e4f8"}, ] [[package]] name = "mkdocstrings" -version = "0.24.1" +version = "0.25.1" requires_python = ">=3.8" summary = "Automatic documentation from sources, for MkDocs." groups = ["dev"] @@ -1171,40 +1333,39 @@ dependencies = [ "typing-extensions>=4.1; python_version < \"3.10\"", ] files = [ - {file = "mkdocstrings-0.24.1-py3-none-any.whl", hash = "sha256:b4206f9a2ca8a648e222d5a0ca1d36ba7dee53c88732818de183b536f9042b5d"}, - {file = "mkdocstrings-0.24.1.tar.gz", hash = "sha256:cc83f9a1c8724fc1be3c2fa071dd73d91ce902ef6a79710249ec8d0ee1064401"}, + {file = "mkdocstrings-0.25.1-py3-none-any.whl", hash = "sha256:da01fcc2670ad61888e8fe5b60afe9fee5781017d67431996832d63e887c2e51"}, + {file = "mkdocstrings-0.25.1.tar.gz", hash = "sha256:c3a2515f31577f311a9ee58d089e4c51fc6046dbd9e9b4c3de4c3194667fe9bf"}, ] [[package]] name = "mkdocstrings-python" -version = "1.9.0" +version = "1.10.3" requires_python = ">=3.8" summary = "A Python handler for mkdocstrings." groups = ["dev"] dependencies = [ - "griffe>=0.37", - "markdown<3.6,>=3.3", - "mkdocstrings>=0.20", + "griffe>=0.44", + "mkdocstrings>=0.25", ] files = [ - {file = "mkdocstrings_python-1.9.0-py3-none-any.whl", hash = "sha256:fad27d7314b4ec9c0359a187b477fb94c65ef561fdae941dca1b717c59aae96f"}, - {file = "mkdocstrings_python-1.9.0.tar.gz", hash = "sha256:6e1a442367cf75d30cf69774cbb1ad02aebec58bfff26087439df4955efecfde"}, + {file = "mkdocstrings_python-1.10.3-py3-none-any.whl", hash = "sha256:11ff6d21d3818fb03af82c3ea6225b1534837e17f790aa5f09626524171f949b"}, + {file = "mkdocstrings_python-1.10.3.tar.gz", hash = "sha256:321cf9c732907ab2b1fedaafa28765eaa089d89320f35f7206d00ea266889d03"}, ] [[package]] name = "mkdocstrings" -version = "0.24.1" +version = "0.25.1" extras = ["python"] requires_python = ">=3.8" summary = "Automatic documentation from sources, for MkDocs." groups = ["dev"] dependencies = [ "mkdocstrings-python>=0.5.2", - "mkdocstrings==0.24.1", + "mkdocstrings==0.25.1", ] files = [ - {file = "mkdocstrings-0.24.1-py3-none-any.whl", hash = "sha256:b4206f9a2ca8a648e222d5a0ca1d36ba7dee53c88732818de183b536f9042b5d"}, - {file = "mkdocstrings-0.24.1.tar.gz", hash = "sha256:cc83f9a1c8724fc1be3c2fa071dd73d91ce902ef6a79710249ec8d0ee1064401"}, + {file = "mkdocstrings-0.25.1-py3-none-any.whl", hash = "sha256:da01fcc2670ad61888e8fe5b60afe9fee5781017d67431996832d63e887c2e51"}, + {file = "mkdocstrings-0.25.1.tar.gz", hash = "sha256:c3a2515f31577f311a9ee58d089e4c51fc6046dbd9e9b4c3de4c3194667fe9bf"}, ] [[package]] @@ -1223,6 +1384,16 @@ files = [ {file = "mknotebooks-0.8.0-py3-none-any.whl", hash = "sha256:4a9b998260c09bcc311455a19a44cc395a30ee82dc1e86e3316dd09f2445ebd3"}, ] +[[package]] +name = "monotonic" +version = "1.6" +summary = "An implementation of time.monotonic() for Python 2 & < 3.3" +groups = ["default"] +files = [ + {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"}, + {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"}, +] + [[package]] name = "multidict" version = "6.0.5" @@ -1331,7 +1502,7 @@ files = [ [[package]] name = "nbconvert" -version = "7.16.2" +version = "7.16.4" requires_python = ">=3.8" summary = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." groups = ["dev"] @@ -1354,39 +1525,36 @@ dependencies = [ "traitlets>=5.1", ] files = [ - {file = "nbconvert-7.16.2-py3-none-any.whl", hash = "sha256:0c01c23981a8de0220255706822c40b751438e32467d6a686e26be08ba784382"}, - {file = "nbconvert-7.16.2.tar.gz", hash = "sha256:8310edd41e1c43947e4ecf16614c61469ebc024898eb808cce0999860fc9fb16"}, + {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, + {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, ] [[package]] name = "nbformat" -version = "5.10.3" +version = "5.10.4" requires_python = ">=3.8" summary = "The Jupyter Notebook format" groups = ["dev"] dependencies = [ - "fastjsonschema", + "fastjsonschema>=2.15", "jsonschema>=2.6", - "jupyter-core", + "jupyter-core!=5.0.*,>=4.12", "traitlets>=5.1", ] files = [ - {file = "nbformat-5.10.3-py3-none-any.whl", hash = "sha256:d9476ca28676799af85385f409b49d95e199951477a159a576ef2a675151e5e8"}, - {file = "nbformat-5.10.3.tar.gz", hash = "sha256:60ed5e910ef7c6264b87d644f276b1b49e24011930deef54605188ddeb211685"}, + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, ] [[package]] name = "nodeenv" -version = "1.8.0" -requires_python = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +version = "1.9.1" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Node.js virtual environment builder" groups = ["dev"] -dependencies = [ - "setuptools", -] files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] [[package]] @@ -1394,7 +1562,7 @@ name = "numpy" version = "1.26.4" requires_python = ">=3.9" summary = "Fundamental package for array computing in Python" -groups = ["dev"] +groups = ["default", "dev"] files = [ {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, @@ -1428,13 +1596,13 @@ files = [ [[package]] name = "packaging" -version = "24.0" -requires_python = ">=3.7" +version = "24.1" +requires_python = ">=3.8" summary = "Core utilities for Python packages" -groups = ["dev"] +groups = ["default", "dev"] files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -1451,10 +1619,11 @@ name = "pandas" version = "2.2.2" requires_python = ">=3.9" summary = "Powerful data structures for data analysis, time series, and statistics" -groups = ["dev"] +groups = ["default", "dev"] dependencies = [ "numpy>=1.22.4; python_version < \"3.11\"", "numpy>=1.23.2; python_version == \"3.11\"", + "numpy>=1.26.0; python_version >= \"3.12\"", "python-dateutil>=2.8.2", "pytz>=2020.1", "tzdata>=2022.7", @@ -1497,13 +1666,13 @@ files = [ [[package]] name = "parso" -version = "0.8.3" +version = "0.8.4" requires_python = ">=3.6" summary = "A Python Parser" groups = ["dev"] files = [ - {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, - {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, ] [[package]] @@ -1533,63 +1702,86 @@ files = [ [[package]] name = "pillow" -version = "10.2.0" +version = "10.3.0" requires_python = ">=3.8" summary = "Python Imaging Library (Fork)" groups = ["dev"] files = [ - {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, - {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, - {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, - {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, - {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, - {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, - {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, ] [[package]] name = "platformdirs" -version = "4.2.0" +version = "4.2.2" requires_python = ">=3.8" -summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." groups = ["dev"] files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" requires_python = ">=3.8" summary = "plugin and hook calling mechanisms for python" groups = ["dev"] files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [[package]] name = "pre-commit" -version = "3.6.2" +version = "3.7.1" requires_python = ">=3.9" summary = "A framework for managing and maintaining multi-language pre-commit hooks." groups = ["dev"] @@ -1601,13 +1793,13 @@ dependencies = [ "virtualenv>=20.10.0", ] files = [ - {file = "pre_commit-3.6.2-py2.py3-none-any.whl", hash = "sha256:ba637c2d7a670c10daedc059f5c49b5bd0aadbccfcd7ec15592cf9665117532c"}, - {file = "pre_commit-3.6.2.tar.gz", hash = "sha256:c3ef34f463045c88658c5b99f38c1e297abdcc0ff13f98d3370055fbbfabc67e"}, + {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, + {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, ] [[package]] name = "prompt-toolkit" -version = "3.0.43" +version = "3.0.47" requires_python = ">=3.7.0" summary = "Library for building powerful interactive command lines in Python" groups = ["dev"] @@ -1615,8 +1807,8 @@ dependencies = [ "wcwidth", ] files = [ - {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, - {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, + {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, + {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, ] [[package]] @@ -1698,82 +1890,95 @@ files = [ [[package]] name = "pycparser" -version = "2.21" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.22" +requires_python = ">=3.8" summary = "C parser in Python" groups = ["dev"] files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pydantic" -version = "2.6.4" +version = "2.7.4" requires_python = ">=3.8" summary = "Data validation using Python type hints" groups = ["default"] dependencies = [ "annotated-types>=0.4.0", - "pydantic-core==2.16.3", + "pydantic-core==2.18.4", "typing-extensions>=4.6.1", ] files = [ - {file = "pydantic-2.6.4-py3-none-any.whl", hash = "sha256:cc46fce86607580867bdc3361ad462bab9c222ef042d3da86f2fb333e1d916c5"}, - {file = "pydantic-2.6.4.tar.gz", hash = "sha256:b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"}, + {file = "pydantic-2.7.4-py3-none-any.whl", hash = "sha256:ee8538d41ccb9c0a9ad3e0e5f07bf15ed8015b481ced539a1759d8cc89ae90d0"}, + {file = "pydantic-2.7.4.tar.gz", hash = "sha256:0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52"}, ] [[package]] name = "pydantic-core" -version = "2.16.3" +version = "2.18.4" requires_python = ">=3.8" -summary = "" +summary = "Core functionality for Pydantic validation and serialization" groups = ["default"] dependencies = [ "typing-extensions!=4.7.0,>=4.6.0", ] files = [ - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"}, - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"}, - {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"}, - {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"}, - {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"}, - {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, - {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, + {file = "pydantic_core-2.18.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f76d0ad001edd426b92233d45c746fd08f467d56100fd8f30e9ace4b005266e4"}, + {file = "pydantic_core-2.18.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:59ff3e89f4eaf14050c8022011862df275b552caef8082e37b542b066ce1ff26"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a55b5b16c839df1070bc113c1f7f94a0af4433fcfa1b41799ce7606e5c79ce0a"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d0dcc59664fcb8974b356fe0a18a672d6d7cf9f54746c05f43275fc48636851"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8951eee36c57cd128f779e641e21eb40bc5073eb28b2d23f33eb0ef14ffb3f5d"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4701b19f7e3a06ea655513f7938de6f108123bf7c86bbebb1196eb9bd35cf724"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00a3f196329e08e43d99b79b286d60ce46bed10f2280d25a1718399457e06be"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97736815b9cc893b2b7f663628e63f436018b75f44854c8027040e05230eeddb"}, + {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6891a2ae0e8692679c07728819b6e2b822fb30ca7445f67bbf6509b25a96332c"}, + {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bc4ff9805858bd54d1a20efff925ccd89c9d2e7cf4986144b30802bf78091c3e"}, + {file = "pydantic_core-2.18.4-cp310-none-win32.whl", hash = "sha256:1b4de2e51bbcb61fdebd0ab86ef28062704f62c82bbf4addc4e37fa4b00b7cbc"}, + {file = "pydantic_core-2.18.4-cp310-none-win_amd64.whl", hash = "sha256:6a750aec7bf431517a9fd78cb93c97b9b0c496090fee84a47a0d23668976b4b0"}, + {file = "pydantic_core-2.18.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:942ba11e7dfb66dc70f9ae66b33452f51ac7bb90676da39a7345e99ffb55402d"}, + {file = "pydantic_core-2.18.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2ebef0e0b4454320274f5e83a41844c63438fdc874ea40a8b5b4ecb7693f1c4"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a642295cd0c8df1b86fc3dced1d067874c353a188dc8e0f744626d49e9aa51c4"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f09baa656c904807e832cf9cce799c6460c450c4ad80803517032da0cd062e2"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98906207f29bc2c459ff64fa007afd10a8c8ac080f7e4d5beff4c97086a3dabd"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19894b95aacfa98e7cb093cd7881a0c76f55731efad31073db4521e2b6ff5b7d"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fbbdc827fe5e42e4d196c746b890b3d72876bdbf160b0eafe9f0334525119c8"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f85d05aa0918283cf29a30b547b4df2fbb56b45b135f9e35b6807cb28bc47951"}, + {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e85637bc8fe81ddb73fda9e56bab24560bdddfa98aa64f87aaa4e4b6730c23d2"}, + {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f5966897e5461f818e136b8451d0551a2e77259eb0f73a837027b47dc95dab9"}, + {file = "pydantic_core-2.18.4-cp311-none-win32.whl", hash = "sha256:44c7486a4228413c317952e9d89598bcdfb06399735e49e0f8df643e1ccd0558"}, + {file = "pydantic_core-2.18.4-cp311-none-win_amd64.whl", hash = "sha256:8a7164fe2005d03c64fd3b85649891cd4953a8de53107940bf272500ba8a788b"}, + {file = "pydantic_core-2.18.4-cp311-none-win_arm64.whl", hash = "sha256:4e99bc050fe65c450344421017f98298a97cefc18c53bb2f7b3531eb39bc7805"}, + {file = "pydantic_core-2.18.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:44a688331d4a4e2129140a8118479443bd6f1905231138971372fcde37e43528"}, + {file = "pydantic_core-2.18.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a2fdd81edd64342c85ac7cf2753ccae0b79bf2dfa063785503cb85a7d3593223"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86110d7e1907ab36691f80b33eb2da87d780f4739ae773e5fc83fb272f88825f"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46387e38bd641b3ee5ce247563b60c5ca098da9c56c75c157a05eaa0933ed154"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:123c3cec203e3f5ac7b000bd82235f1a3eced8665b63d18be751f115588fea30"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1803ac5c32ec324c5261c7209e8f8ce88e83254c4e1aebdc8b0a39f9ddb443"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53db086f9f6ab2b4061958d9c276d1dbe3690e8dd727d6abf2321d6cce37fa94"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abc267fa9837245cc28ea6929f19fa335f3dc330a35d2e45509b6566dc18be23"}, + {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0d829524aaefdebccb869eed855e2d04c21d2d7479b6cada7ace5448416597b"}, + {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:509daade3b8649f80d4e5ff21aa5673e4ebe58590b25fe42fac5f0f52c6f034a"}, + {file = "pydantic_core-2.18.4-cp39-none-win32.whl", hash = "sha256:ca26a1e73c48cfc54c4a76ff78df3727b9d9f4ccc8dbee4ae3f73306a591676d"}, + {file = "pydantic_core-2.18.4-cp39-none-win_amd64.whl", hash = "sha256:c67598100338d5d985db1b3d21f3619ef392e185e71b8d52bceacc4a7771ea7e"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:574d92eac874f7f4db0ca653514d823a0d22e2354359d0759e3f6a406db5d55d"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1f4d26ceb5eb9eed4af91bebeae4b06c3fb28966ca3a8fb765208cf6b51102ab"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77450e6d20016ec41f43ca4a6c63e9fdde03f0ae3fe90e7c27bdbeaece8b1ed4"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d323a01da91851a4f17bf592faf46149c9169d68430b3146dcba2bb5e5719abc"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43d447dd2ae072a0065389092a231283f62d960030ecd27565672bd40746c507"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:578e24f761f3b425834f297b9935e1ce2e30f51400964ce4801002435a1b41ef"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:81b5efb2f126454586d0f40c4d834010979cb80785173d1586df845a632e4e6d"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ab86ce7c8f9bea87b9d12c7f0af71102acbf5ecbc66c17796cff45dae54ef9a5"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:90afc12421df2b1b4dcc975f814e21bc1754640d502a2fbcc6d41e77af5ec312"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:51991a89639a912c17bef4b45c87bd83593aee0437d8102556af4885811d59f5"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293afe532740370aba8c060882f7d26cfd00c94cae32fd2e212a3a6e3b7bc15e"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48ece5bde2e768197a2d0f6e925f9d7e3e826f0ad2271120f8144a9db18d5c8"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eae237477a873ab46e8dd748e515c72c0c804fb380fbe6c85533c7de51f23a8f"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:834b5230b5dfc0c1ec37b2fda433b271cbbc0e507560b5d1588e2cc1148cf1ce"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e858ac0a25074ba4bce653f9b5d0a85b7456eaddadc0ce82d3878c22489fa4ee"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2fd41f6eff4c20778d717af1cc50eca52f5afe7805ee530a4fbd0bae284f16e9"}, + {file = "pydantic_core-2.18.4.tar.gz", hash = "sha256:ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864"}, ] [[package]] @@ -1789,28 +1994,28 @@ files = [ [[package]] name = "pygments" -version = "2.17.2" -requires_python = ">=3.7" +version = "2.18.0" +requires_python = ">=3.8" summary = "Pygments is a syntax highlighting package written in Python." -groups = ["dev"] +groups = ["default", "dev"] files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [[package]] name = "pymdown-extensions" -version = "10.7.1" +version = "10.8.1" requires_python = ">=3.8" summary = "Extension pack for Python Markdown." groups = ["dev"] dependencies = [ - "markdown>=3.5", + "markdown>=3.6", "pyyaml", ] files = [ - {file = "pymdown_extensions-10.7.1-py3-none-any.whl", hash = "sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"}, - {file = "pymdown_extensions-10.7.1.tar.gz", hash = "sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584"}, + {file = "pymdown_extensions-10.8.1-py3-none-any.whl", hash = "sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"}, + {file = "pymdown_extensions-10.8.1.tar.gz", hash = "sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940"}, ] [[package]] @@ -1826,21 +2031,18 @@ files = [ [[package]] name = "pyproject-hooks" -version = "1.0.0" +version = "1.1.0" requires_python = ">=3.7" summary = "Wrappers to call pyproject.toml-based build backend hooks." groups = ["dev"] -dependencies = [ - "tomli>=1.1.0; python_version < \"3.11\"", -] files = [ - {file = "pyproject_hooks-1.0.0-py3-none-any.whl", hash = "sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8"}, - {file = "pyproject_hooks-1.0.0.tar.gz", hash = "sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5"}, + {file = "pyproject_hooks-1.1.0-py3-none-any.whl", hash = "sha256:7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2"}, + {file = "pyproject_hooks-1.1.0.tar.gz", hash = "sha256:4b37730834edbd6bd37f26ece6b44802fb1c1ee2ece0e54ddff8bfc06db86965"}, ] [[package]] name = "pytest" -version = "8.1.1" +version = "8.2.2" requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" groups = ["dev"] @@ -1849,41 +2051,41 @@ dependencies = [ "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", "iniconfig", "packaging", - "pluggy<2.0,>=1.4", + "pluggy<2.0,>=1.5", "tomli>=1; python_version < \"3.11\"", ] files = [ - {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, - {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [[package]] name = "pytest-httpx" -version = "0.30.0" +version = "0.29.0" requires_python = ">=3.9" summary = "Send responses to httpx." groups = ["dev"] dependencies = [ - "httpx==0.27.*", + "httpx==0.26.*", "pytest<9,>=7", ] files = [ - {file = "pytest-httpx-0.30.0.tar.gz", hash = "sha256:755b8edca87c974dd4f3605c374fda11db84631de3d163b99c0df5807023a19a"}, - {file = "pytest_httpx-0.30.0-py3-none-any.whl", hash = "sha256:6d47849691faf11d2532565d0c8e0e02b9f4ee730da31687feae315581d7520c"}, + {file = "pytest_httpx-0.29.0-py3-none-any.whl", hash = "sha256:7d6fd29042e7b98ed98199ded120bc8100c8078ca306952666e89bf8807b95ff"}, + {file = "pytest_httpx-0.29.0.tar.gz", hash = "sha256:ed08ed802e2b315b83cdd16f0b26cbb2b836c29e0fde5c18bc3105f1073e0332"}, ] [[package]] name = "pytest-mock" -version = "3.12.0" +version = "3.14.0" requires_python = ">=3.8" summary = "Thin-wrapper around the mock package for easier use with pytest" groups = ["dev"] dependencies = [ - "pytest>=5.0", + "pytest>=6.2.5", ] files = [ - {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"}, - {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"}, + {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, + {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, ] [[package]] @@ -1891,7 +2093,7 @@ name = "python-dateutil" version = "2.9.0.post0" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" summary = "Extensions to the standard Python datetime module" -groups = ["dev"] +groups = ["default", "dev"] dependencies = [ "six>=1.5", ] @@ -1904,7 +2106,7 @@ files = [ name = "pytz" version = "2024.1" summary = "World timezone definitions, modern and historical" -groups = ["dev"] +groups = ["default", "dev"] files = [ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, @@ -1919,6 +2121,11 @@ marker = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy files = [ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, ] [[package]] @@ -1936,6 +2143,14 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, @@ -1963,52 +2178,76 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.2" -requires_python = ">=3.6" +version = "26.0.3" +requires_python = ">=3.7" summary = "Python bindings for 0MQ" groups = ["dev"] dependencies = [ "cffi; implementation_name == \"pypy\"", ] files = [ - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, - {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, - {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, - {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, + {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, + {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, + {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, ] [[package]] name = "referencing" -version = "0.34.0" +version = "0.35.1" requires_python = ">=3.8" summary = "JSON Referencing + Python" groups = ["dev"] @@ -2017,40 +2256,71 @@ dependencies = [ "rpds-py>=0.7.0", ] files = [ - {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"}, - {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"}, + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, ] [[package]] name = "regex" -version = "2023.12.25" -requires_python = ">=3.7" +version = "2024.5.15" +requires_python = ">=3.8" summary = "Alternative regular expression module, to replace re." groups = ["dev"] files = [ - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, - {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, - {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, - {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"}, + {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"}, + {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"}, + {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"}, + {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"}, + {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"}, + {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"}, + {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"}, ] [[package]] name = "requests" -version = "2.31.0" -requires_python = ">=3.7" +version = "2.32.3" +requires_python = ">=3.8" summary = "Python HTTP for Humans." groups = ["dev"] dependencies = [ @@ -2060,101 +2330,142 @@ dependencies = [ "urllib3<3,>=1.21.1", ] files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[[package]] +name = "rich" +version = "13.7.1" +requires_python = ">=3.7.0" +summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +groups = ["default"] +dependencies = [ + "markdown-it-py>=2.2.0", + "pygments<3.0.0,>=2.13.0", +] +files = [ + {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, + {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, ] [[package]] name = "rpds-py" -version = "0.18.0" +version = "0.18.1" requires_python = ">=3.8" summary = "Python bindings to Rust's persistent data structures (rpds)" groups = ["dev"] files = [ - {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, - {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, - {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, - {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, - {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, + {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, + {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, + {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, + {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, + {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, ] [[package]] name = "ruff" -version = "0.3.3" +version = "0.4.8" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." groups = ["dev"] files = [ - {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:973a0e388b7bc2e9148c7f9be8b8c6ae7471b9be37e1cc732f8f44a6f6d7720d"}, - {file = "ruff-0.3.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cfa60d23269d6e2031129b053fdb4e5a7b0637fc6c9c0586737b962b2f834493"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eca7ff7a47043cf6ce5c7f45f603b09121a7cc047447744b029d1b719278eb5"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7d3f6762217c1da954de24b4a1a70515630d29f71e268ec5000afe81377642d"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b24c19e8598916d9c6f5a5437671f55ee93c212a2c4c569605dc3842b6820386"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5a6cbf216b69c7090f0fe4669501a27326c34e119068c1494f35aaf4cc683778"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352e95ead6964974b234e16ba8a66dad102ec7bf8ac064a23f95371d8b198aab"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d6ab88c81c4040a817aa432484e838aaddf8bfd7ca70e4e615482757acb64f8"}, - {file = "ruff-0.3.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79bca3a03a759cc773fca69e0bdeac8abd1c13c31b798d5bb3c9da4a03144a9f"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2700a804d5336bcffe063fd789ca2c7b02b552d2e323a336700abb8ae9e6a3f8"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fd66469f1a18fdb9d32e22b79f486223052ddf057dc56dea0caaf1a47bdfaf4e"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:45817af234605525cdf6317005923bf532514e1ea3d9270acf61ca2440691376"}, - {file = "ruff-0.3.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0da458989ce0159555ef224d5b7c24d3d2e4bf4c300b85467b08c3261c6bc6a8"}, - {file = "ruff-0.3.3-py3-none-win32.whl", hash = "sha256:f2831ec6a580a97f1ea82ea1eda0401c3cdf512cf2045fa3c85e8ef109e87de0"}, - {file = "ruff-0.3.3-py3-none-win_amd64.whl", hash = "sha256:be90bcae57c24d9f9d023b12d627e958eb55f595428bafcb7fec0791ad25ddfc"}, - {file = "ruff-0.3.3-py3-none-win_arm64.whl", hash = "sha256:0171aab5fecdc54383993389710a3d1227f2da124d76a2784a7098e818f92d61"}, - {file = "ruff-0.3.3.tar.gz", hash = "sha256:38671be06f57a2f8aba957d9f701ea889aa5736be806f18c0cd03d6ff0cbca8d"}, -] - -[[package]] -name = "setuptools" -version = "69.2.0" -requires_python = ">=3.8" -summary = "Easily download, build, install, upgrade, and uninstall Python packages" -groups = ["dev"] + {file = "ruff-0.4.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7663a6d78f6adb0eab270fa9cf1ff2d28618ca3a652b60f2a234d92b9ec89066"}, + {file = "ruff-0.4.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eeceb78da8afb6de0ddada93112869852d04f1cd0f6b80fe464fd4e35c330913"}, + {file = "ruff-0.4.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aad360893e92486662ef3be0a339c5ca3c1b109e0134fcd37d534d4be9fb8de3"}, + {file = "ruff-0.4.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:284c2e3f3396fb05f5f803c9fffb53ebbe09a3ebe7dda2929ed8d73ded736deb"}, + {file = "ruff-0.4.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7354f921e3fbe04d2a62d46707e569f9315e1a613307f7311a935743c51a764"}, + {file = "ruff-0.4.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:72584676164e15a68a15778fd1b17c28a519e7a0622161eb2debdcdabdc71883"}, + {file = "ruff-0.4.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9678d5c9b43315f323af2233a04d747409d1e3aa6789620083a82d1066a35199"}, + {file = "ruff-0.4.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704977a658131651a22b5ebeb28b717ef42ac6ee3b11e91dc87b633b5d83142b"}, + {file = "ruff-0.4.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d05f8d6f0c3cce5026cecd83b7a143dcad503045857bc49662f736437380ad45"}, + {file = "ruff-0.4.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6ea874950daca5697309d976c9afba830d3bf0ed66887481d6bca1673fc5b66a"}, + {file = "ruff-0.4.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fc95aac2943ddf360376be9aa3107c8cf9640083940a8c5bd824be692d2216dc"}, + {file = "ruff-0.4.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:384154a1c3f4bf537bac69f33720957ee49ac8d484bfc91720cc94172026ceed"}, + {file = "ruff-0.4.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e9d5ce97cacc99878aa0d084c626a15cd21e6b3d53fd6f9112b7fc485918e1fa"}, + {file = "ruff-0.4.8-py3-none-win32.whl", hash = "sha256:6d795d7639212c2dfd01991259460101c22aabf420d9b943f153ab9d9706e6a9"}, + {file = "ruff-0.4.8-py3-none-win_amd64.whl", hash = "sha256:e14a3a095d07560a9d6769a72f781d73259655919d9b396c650fc98a8157555d"}, + {file = "ruff-0.4.8-py3-none-win_arm64.whl", hash = "sha256:14019a06dbe29b608f6b7cbcec300e3170a8d86efaddb7b23405cb7f7dcaf780"}, + {file = "ruff-0.4.8.tar.gz", hash = "sha256:16d717b1d57b2e2fd68bd0bf80fb43931b79d05a7131aa477d66fc40fbd86268"}, +] + +[[package]] +name = "schedule" +version = "1.1.0" +requires_python = ">=3.6" +summary = "Job scheduling for humans." +groups = ["default"] files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, + {file = "schedule-1.1.0-py2.py3-none-any.whl", hash = "sha256:617adce8b4bf38c360b781297d59918fbebfb2878f1671d189f4f4af5d0567a4"}, + {file = "schedule-1.1.0.tar.gz", hash = "sha256:e6ca13585e62c810e13a08682e0a6a8ad245372e376ba2b8679294f377dfc8e4"}, ] [[package]] @@ -2162,7 +2473,7 @@ name = "six" version = "1.16.0" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" summary = "Python 2 and 3 compatibility utilities" -groups = ["dev"] +groups = ["default", "dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -2218,16 +2529,16 @@ files = [ [[package]] name = "tinycss2" -version = "1.2.1" -requires_python = ">=3.7" +version = "1.3.0" +requires_python = ">=3.8" summary = "A tiny CSS parser" groups = ["dev"] dependencies = [ "webencodings>=0.4", ] files = [ - {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"}, - {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"}, + {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, + {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, ] [[package]] @@ -2244,22 +2555,22 @@ files = [ [[package]] name = "tornado" -version = "6.4" -requires_python = ">= 3.8" +version = "6.4.1" +requires_python = ">=3.8" summary = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." groups = ["dev"] files = [ - {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, - {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, - {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, - {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, - {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, + {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, + {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, + {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, ] [[package]] @@ -2267,7 +2578,7 @@ name = "tqdm" version = "4.66.4" requires_python = ">=3.7" summary = "Fast, Extensible Progress Meter" -groups = ["dev"] +groups = ["default", "dev"] dependencies = [ "colorama; platform_system == \"Windows\"", ] @@ -2278,24 +2589,39 @@ files = [ [[package]] name = "traitlets" -version = "5.14.2" +version = "5.14.3" requires_python = ">=3.8" summary = "Traitlets Python configuration system" groups = ["dev"] files = [ - {file = "traitlets-5.14.2-py3-none-any.whl", hash = "sha256:fcdf85684a772ddeba87db2f398ce00b40ff550d1528c03c14dbf6a02003cd80"}, - {file = "traitlets-5.14.2.tar.gz", hash = "sha256:8cdd83c040dab7d1dee822678e5f5d100b514f7b72b01615b26fc5718916fdf9"}, + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, +] + +[[package]] +name = "typer" +version = "0.9.4" +requires_python = ">=3.6" +summary = "Typer, build great CLIs. Easy to code. Based on Python type hints." +groups = ["default"] +dependencies = [ + "click<9.0.0,>=7.1.1", + "typing-extensions>=3.7.4.3", +] +files = [ + {file = "typer-0.9.4-py3-none-any.whl", hash = "sha256:aa6c4a4e2329d868b80ecbaf16f807f2b54e192209d7ac9dd42691d63f7a54eb"}, + {file = "typer-0.9.4.tar.gz", hash = "sha256:f714c2d90afae3a7929fcd72a3abb08df305e1ff61719381384211c4070af57f"}, ] [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.12.2" requires_python = ">=3.8" summary = "Backported and Experimental Type Hints for Python 3.8+" groups = ["default", "dev"] files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -2303,7 +2629,7 @@ name = "tzdata" version = "2024.1" requires_python = ">=2" summary = "Provider of IANA time zone data" -groups = ["dev"] +groups = ["default", "dev"] files = [ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, @@ -2332,7 +2658,7 @@ files = [ [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.26.2" requires_python = ">=3.7" summary = "Virtual Python Environment builder" groups = ["dev"] @@ -2342,34 +2668,43 @@ dependencies = [ "platformdirs<5,>=3.9.1", ] files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.26.2-py3-none-any.whl", hash = "sha256:a624db5e94f01ad993d476b9ee5346fdf7b9de43ccaee0e0197012dc838a0e9b"}, + {file = "virtualenv-20.26.2.tar.gz", hash = "sha256:82bf0f4eebbb78d36ddaee0283d43fe5736b53880b8a8cdcd37390a07ac3741c"}, ] [[package]] name = "watchdog" -version = "4.0.0" +version = "4.0.1" requires_python = ">=3.8" summary = "Filesystem events monitoring" groups = ["dev"] files = [ - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, - {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, - {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, - {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, - {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, - {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, - {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, - {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"}, + {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"}, + {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"}, + {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"}, + {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"}, + {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"}, + {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"}, + {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"}, + {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"}, + {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"}, + {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, ] [[package]] @@ -2392,6 +2727,46 @@ files = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] +[[package]] +name = "wrapt" +version = "1.14.1" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +summary = "Module for decorators, wrappers and monkey patching." +groups = ["default"] +files = [ + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecee4132c6cd2ce5308e21672015ddfed1ff975ad0ac8d27168ea82e71413f55"}, + {file = "wrapt-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2020f391008ef874c6d9e208b24f28e31bcb85ccff4f335f15a3251d222b92d9"}, + {file = "wrapt-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2feecf86e1f7a86517cab34ae6c2f081fd2d0dac860cb0c0ded96d799d20b335"}, + {file = "wrapt-1.14.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:240b1686f38ae665d1b15475966fe0472f78e71b1b4903c143a842659c8e4cb9"}, + {file = "wrapt-1.14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9008dad07d71f68487c91e96579c8567c98ca4c3881b9b113bc7b33e9fd78b8"}, + {file = "wrapt-1.14.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6447e9f3ba72f8e2b985a1da758767698efa72723d5b59accefd716e9e8272bf"}, + {file = "wrapt-1.14.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:acae32e13a4153809db37405f5eba5bac5fbe2e2ba61ab227926a22901051c0a"}, + {file = "wrapt-1.14.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49ef582b7a1152ae2766557f0550a9fcbf7bbd76f43fbdc94dd3bf07cc7168be"}, + {file = "wrapt-1.14.1-cp311-cp311-win32.whl", hash = "sha256:358fe87cc899c6bb0ddc185bf3dbfa4ba646f05b1b0b9b5a27c2cb92c2cea204"}, + {file = "wrapt-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:26046cd03936ae745a502abf44dac702a5e6880b2b01c29aea8ddf3353b68224"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] + [[package]] name = "xxhash" version = "3.4.1" @@ -2529,11 +2904,11 @@ files = [ [[package]] name = "zipp" -version = "3.18.1" +version = "3.19.2" requires_python = ">=3.8" summary = "Backport of pathlib-compatible object wrapper for zip files" groups = ["dev"] files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] diff --git a/argilla/pyproject.toml b/argilla/pyproject.toml index 052d6dabaf..2e7832a53f 100644 --- a/argilla/pyproject.toml +++ b/argilla/pyproject.toml @@ -1,183 +1,71 @@ -[build-system] -requires = ["setuptools>=61.0.0"] -build-backend = "setuptools.build_meta" - [project] name = "argilla" -description = "Open-source tool for exploring, labeling, and monitoring data for NLP projects." -readme = "README.md" -requires-python = ">=3.8,<3.13" -license = { text = "Apache-2.0" } -keywords = [ - "data-science", - "natural-language-processing", - "text-labeling", - "data-annotation", - "artificial-intelligence", - "knowledged-graph", - "developers-tools", - "human-in-the-loop", - "mlops", -] -authors = [{ name = "argilla", email = "contact@argilla.io" }] -maintainers = [{ name = "argilla", email = "contact@argilla.io" }] -dependencies = [ - # Client - "httpx >= 0.15,<= 0.26", - "deprecated ~= 1.2.0", - "packaging >= 20.0", - # pandas -> For data loading - "pandas >=1.0.0", - # Aligned pydantic version with server fastAPI - "pydantic >= 1.10.7", - # monitoring - "wrapt >= 1.14,< 1.15", - # weaksupervision - "numpy < 1.27.0", - # for progressbars - "tqdm >= 4.27.0", - # monitor background consumers - "backoff", - "monotonic", - # for logging, tracebacks, printing, progressbars - "rich != 13.1.0", - # for CLI - "typer >= 0.6.0, < 0.10.0", # spaCy only supports typer<0.10.0 +description = "The Argilla python server SDK" +authors = [ + {name = "Argilla", email = "contact@argilla.io"}, ] +requires-python = ">=3.9,<=3.12" +readme = "README.md" +license = {text = "Apache 2.0"} + dynamic = ["version"] -[project.optional-dependencies] -server = [ - # "argilla-server", - # Comment previous line and uncomment the next line when we have a release - "argilla-server ~= 1.29.0", -] -server-postgresql = [ - # "argilla-server[postgresql]", - # Comment previous line and uncomment the next line when we have a release - "argilla-server[postgresql] ~= 1.29.0", -] -listeners = ["schedule ~= 1.1.0"] -integrations = [ - "PyYAML >= 5.4.1,< 6.1.0", # Required by `argilla.client.feedback.config` just used in `HuggingFaceDatasetMixin` - # TODO: `push_to_hub` fails up to 2.3.2, check patches when they come out eventually - "datasets > 1.17.0,!= 2.3.2", - # TODO: some backward comp. problems introduced in 0.5.0 - "huggingface_hub >= 0.5.0", - # Version 0.12 fixes a known installation issue related to `sentencepiece` and `tokenizers`, more at https://github.com/flairNLP/flair/issues/3129 - # Version 0.12.2 relaxes the `huggingface_hub` dependency - "flair >= 0.12.2", - "faiss-cpu", - "flyingsquid", - "pgmpy", - "plotly >= 4.1.0", - "snorkel >= 0.9.7", - "spacy>=3.5.0,<3.7.0", - "spacy-transformers >= 1.2.5", - "spacy-huggingface-hub >= 0.0.10", - "transformers[torch] >= 4.30.0", - "evaluate", - "seqeval", - "sentence-transformers", - "setfit>=1.0.0", - "span_marker", - "sentence-transformers>=2.0.0,<3.0.0", - "textdescriptives>=2.7.0,<3.0.0", - "openai>=0.27.10,<1.0.0", - "peft", - "trl>=0.5.0", - # To find the notebook name from within a notebook - "ipynbname", -] -tests = [ - "pytest", - "pytest-cov", - "pytest-mock", - "pytest-asyncio", - "pytest-env", - "factory_boy ~= 3.2.1", +dependencies = [ + "httpx>=0.26.0", + "pydantic>=2.6.0, <3.0.0", + "argilla-v1[listeners] @ file:///${PROJECT_ROOT}/../argilla-v1", ] -[project.urls] -homepage = "https://www.argilla.io" -documentation = "https://docs.argilla.io" -repository = "https://github.com/argilla-io/argilla" - -[project.scripts] -argilla = "argilla.cli.app:app" - -[tool.setuptools.packages.find] -where = ["src"] - -[tool.setuptools.dynamic] -version = { attr = "argilla.__version__" } - -[tool.setuptools.package-data] -"argilla.client.feedback.integrations.huggingface.card" = [ - "argilla_template.md", -] -"argilla.client.feedback.integrations.huggingface.model_card" = [ - "argilla_model_template.md", +[project.optional-dependencies] +io = [ + "datasets>=2.0.0", ] -[tool.pytest.ini_options] -log_format = "%(asctime)s %(name)s %(levelname)s %(message)s" -log_date_format = "%Y-%m-%d %H:%M:%S" -log_cli = "True" -testpaths = ["tests"] -env = ["ARGILLA_ENABLE_TELEMETRY=0"] +[build-system] +requires = ["pdm-backend"] +build-backend = "pdm.backend" +[tool.ruff] +line-length = 120 -[tool.coverage.run] -concurrency = ["greenlet", "thread", "multiprocessing"] +[tool.black] +line-length = 120 -[tool.coverage.report] -exclude_lines = [ - "pragma: no cover", - "def __repr__", - "def __str__", - "raise AssertionError", - "raise NotImplementedError", - "if __name__ == .__main__.:", - "if TYPE_CHECKING:", - "if _TYPE_CHECKING:", - "if typing.TYPE_CHECKING:", +[tool.pdm] +distribution = true + +[tool.pdm.version] +source = "file" +path = "src/argilla/__init__.py" + +[tool.pdm.dev-dependencies] +dev = [ + "ipython>=8.12.3", + "pytest>=7.4.4", + "flake8>=5.0.4", + "ruff>=0.1.12", + "pytest-mock>=3.12.0", + "pytest-httpx>=0.26.0", + "black>=23.12.1", + "build>=1.0.3", + "pre-commit>=3.5.0", + "mkdocs-material >= 9.5.17", + "mkdocstrings[python] >= 0.24.0", + "mkdocs-literate-nav >= 0.6.1", + "mkdocs-section-index >= 0.3.8", + "mkdocs-gen-files >= 0.5.0", + "mkdocs-open-in-new-tab >= 1.0.3", + "mike >= 2.0.0", + "Pillow >= 9.5.0", + "CairoSVG >= 2.7.1", + "mknotebooks >= 0.8.0", + "datasets>=2.19.1", ] -[tool.isort] -profile = "black" +[tool.pdm.scripts] +test = "pytest tests" +lint = "ruff check" +format = "black ." +all = {composite = ["format", "lint", "test"]} -[tool.ruff] -# Ignore line length violations -ignore = ["E501"] - -# Exclude a variety of commonly ignored directories. -exclude = [ - ".bzr", - ".direnv", - ".eggs", - ".git", - ".hg", - ".mypy_cache", - ".nox", - ".pants.d", - ".ruff_cache", - ".svn", - ".tox", - ".venv", - "__pypackages__", - "_build", - "buck-out", - "build", - "dist", - "node_modules", - "venv", -] -line-length = 120 -[tool.ruff.per-file-ignores] -# Ignore imported but unused; -"__init__.py" = ["F401"] - -[tool.black] -line-length = 120 diff --git a/argilla/src/argilla/__init__.py b/argilla/src/argilla/__init__.py index 3b51e4fd28..7b2e325318 100644 --- a/argilla/src/argilla/__init__.py +++ b/argilla/src/argilla/__init__.py @@ -1,171 +1,26 @@ -# coding=utf-8 -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Argilla, Inc. # -# 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 +# 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 +# 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. - -"""This file reflects the user facing API. -If you want to add something here, remember to add it as normal import in the _TYPE_CHECKING section (for IDEs), -as well as in the `_import_structure` dictionary. -""" - -import sys as _sys -from typing import TYPE_CHECKING as _TYPE_CHECKING - -from argilla.logging import configure_logging as _configure_logging - -from . import _version -from .utils import LazyargillaModule as _LazyargillaModule - -try: - from rich.traceback import install as _install_rich - - # Rely on `rich` for tracebacks - _install_rich() -except ModuleNotFoundError: - pass - -__version__ = _version.version - -if _TYPE_CHECKING: - from argilla.client.api import ( - copy, - delete, - delete_records, - get_workspace, - list_datasets, - list_workspaces, - load, - log, - log_async, - set_workspace, - ) - from argilla.client.datasets import ( - DatasetForText2Text, - DatasetForTextClassification, - DatasetForTokenClassification, - read_datasets, - read_pandas, - ) - from argilla.client.models import ( - Text2TextRecord, - TextClassificationRecord, - TextGenerationRecord, # TODO Remove TextGenerationRecord - TokenAttributions, - TokenClassificationRecord, - ) - from argilla.client.singleton import active_client, init - from argilla.client.users import User - from argilla.client.utils import server_info - from argilla.client.workspaces import Workspace - from argilla.datasets import ( - TextClassificationSettings, - TokenClassificationSettings, - configure_dataset, - configure_dataset_settings, - load_dataset_settings, - ) - from argilla.feedback import * # noqa - from argilla.listeners import Metrics, RGListenerContext, Search, listener - from argilla.monitoring.model_monitor import monitor - - -# TODO: remove me -_import_structure = { - "feedback": [ - "ArgillaTrainer", - "LabelQuestionStrategy", - "MultiLabelQuestionStrategy", - "RatingQuestionStrategy", - "FeedbackDataset", - "FeedbackRecord", - "LabelQuestion", - "MultiLabelQuestion", - "RatingQuestion", - "RankingQuestion", - "SpanQuestion", - "SpanLabelOption", - "ResponseSchema", - "ResponseStatusFilter", - "TextField", - "TextQuestion", - "ValueSchema", - "IntegerMetadataProperty", - "FloatMetadataProperty", - "TermsMetadataProperty", - "TermsMetadataFilter", - "IntegerMetadataFilter", - "FloatMetadataFilter", - "SortBy", - "SortOrder", - "SuggestionSchema", - "RecordSortField", - "VectorSettings", - ], - "client.api": [ - "copy", - "delete", - "delete_records", - "get_workspace", - "load", - "log", - "log_async", - "set_workspace", - "list_datasets", - "list_workspaces", - ], - "client.models": [ - "Text2TextRecord", - "TextGenerationRecord", # TODO Remove TextGenerationRecord - "TextClassificationRecord", - "TokenClassificationRecord", - "TokenAttributions", - ], - "client.singleton": [ - "init", - "active_client", - ], - "client.datasets": [ - "DatasetForText2Text", - "DatasetForTextClassification", - "DatasetForTokenClassification", - "read_datasets", - "read_pandas", - ], - "client.users": ["User"], - "client.utils": ["server_info"], - "client.workspaces": ["Workspace"], - "monitoring.model_monitor": ["monitor"], - "listeners.listener": [ - "listener", - "RGListenerContext", - "Search", - "Metrics", - ], - "datasets": [ - "configure_dataset", - "load_dataset_settings", - "configure_dataset_settings", - "TextClassificationSettings", - "TokenClassificationSettings", - ], -} - -_sys.modules[__name__] = _LazyargillaModule( - __name__, - globals()["__file__"], - _import_structure, - module_spec=__spec__, - extra_objects={"__version__": __version__}, -) - -_configure_logging() +# 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. + +from argilla.client import * # noqa +from argilla.datasets import * # noqa +from argilla.workspaces._resource import * # noqa +from argilla.users._resource import * # noqa +from argilla.settings import * # noqa +from argilla.suggestions import * # noqa +from argilla.responses import * # noqa +from argilla.records import * # noqa +from argilla.vectors import * # noqa + + +__version__ = "2.0.0a0.dev0" diff --git a/argilla/src/argilla/_api/__init__.py b/argilla/src/argilla/_api/__init__.py new file mode 100644 index 0000000000..e3f2ec69bf --- /dev/null +++ b/argilla/src/argilla/_api/__init__.py @@ -0,0 +1,22 @@ +# Copyright 2024-present, Argilla, Inc. +# +# 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. + +from argilla._api._datasets import * # noqa 403 +from argilla._api._http import * # noqa 403 +from argilla._api._workspaces import * # noqa 403 +from argilla._api._users import * # noqa 403 +from argilla._api._client import * # noqa 403 +from argilla._api._fields import * # noqa 403 +from argilla._api._records import * # noqa 403 +from argilla._api._questions import * # noqa 403 diff --git a/argilla-sdk/src/argilla_sdk/_api/_base.py b/argilla/src/argilla/_api/_base.py similarity index 97% rename from argilla-sdk/src/argilla_sdk/_api/_base.py rename to argilla/src/argilla/_api/_base.py index db102866ba..1ec6362807 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_base.py +++ b/argilla/src/argilla/_api/_base.py @@ -16,7 +16,7 @@ from typing import Generic, TYPE_CHECKING, TypeVar from uuid import UUID -from argilla_sdk._helpers import LoggingMixin +from argilla._helpers import LoggingMixin if TYPE_CHECKING: diff --git a/argilla-sdk/src/argilla_sdk/_api/_client.py b/argilla/src/argilla/_api/_client.py similarity index 88% rename from argilla-sdk/src/argilla_sdk/_api/_client.py rename to argilla/src/argilla/_api/_client.py index a4bbeb0ab4..7a8ec43c2e 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_client.py +++ b/argilla/src/argilla/_api/_client.py @@ -18,16 +18,16 @@ import httpx -from argilla_sdk._api import HTTPClientConfig, create_http_client -from argilla_sdk._api._datasets import DatasetsAPI -from argilla_sdk._api._fields import FieldsAPI -from argilla_sdk._api._metadata import MetadataAPI -from argilla_sdk._api._questions import QuestionsAPI -from argilla_sdk._api._records import RecordsAPI -from argilla_sdk._api._users import UsersAPI -from argilla_sdk._api._vectors import VectorsAPI -from argilla_sdk._api._workspaces import WorkspacesAPI -from argilla_sdk._constants import _DEFAULT_API_KEY, _DEFAULT_API_URL +from argilla._api import HTTPClientConfig, create_http_client +from argilla._api._datasets import DatasetsAPI +from argilla._api._fields import FieldsAPI +from argilla._api._metadata import MetadataAPI +from argilla._api._questions import QuestionsAPI +from argilla._api._records import RecordsAPI +from argilla._api._users import UsersAPI +from argilla._api._vectors import VectorsAPI +from argilla._api._workspaces import WorkspacesAPI +from argilla._constants import _DEFAULT_API_KEY, _DEFAULT_API_URL __all__ = ["APIClient"] diff --git a/argilla-sdk/src/argilla_sdk/_api/_datasets.py b/argilla/src/argilla/_api/_datasets.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/_api/_datasets.py rename to argilla/src/argilla/_api/_datasets.py index bc0f4358a1..70504f650c 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_datasets.py +++ b/argilla/src/argilla/_api/_datasets.py @@ -16,9 +16,9 @@ from uuid import UUID import httpx -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions._api import api_error_handler -from argilla_sdk._models import DatasetModel +from argilla._api._base import ResourceAPI +from argilla._exceptions._api import api_error_handler +from argilla._models import DatasetModel __all__ = ["DatasetsAPI"] diff --git a/argilla-sdk/src/argilla_sdk/_api/_fields.py b/argilla/src/argilla/_api/_fields.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/_api/_fields.py rename to argilla/src/argilla/_api/_fields.py index dc8a8f3ac6..c101e80d7d 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_fields.py +++ b/argilla/src/argilla/_api/_fields.py @@ -17,9 +17,9 @@ import httpx -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions import api_error_handler -from argilla_sdk._models import FieldModel +from argilla._api._base import ResourceAPI +from argilla._exceptions import api_error_handler +from argilla._models import FieldModel __all__ = ["FieldsAPI"] diff --git a/argilla-sdk/src/argilla_sdk/datasets/__init__.py b/argilla/src/argilla/_api/_http/__init__.py similarity index 82% rename from argilla-sdk/src/argilla_sdk/datasets/__init__.py rename to argilla/src/argilla/_api/_http/__init__.py index a1bf2af414..2d882c43bd 100644 --- a/argilla-sdk/src/argilla_sdk/datasets/__init__.py +++ b/argilla/src/argilla/_api/_http/__init__.py @@ -12,6 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk.datasets._resource import Dataset # noqa - -__all__ = ["Dataset"] +from argilla._api._http._client import * # noqa F401, F403 +from argilla._api._http._helpers import * # noqa F401, F403 diff --git a/argilla-sdk/src/argilla_sdk/_api/_http/_client.py b/argilla/src/argilla/_api/_http/_client.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/_api/_http/_client.py rename to argilla/src/argilla/_api/_http/_client.py index 6fcf092456..69348b86b0 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_http/_client.py +++ b/argilla/src/argilla/_api/_http/_client.py @@ -17,7 +17,7 @@ import httpx -from argilla_sdk._constants import _DEFAULT_API_URL, _DEFAULT_API_KEY +from argilla._constants import _DEFAULT_API_URL, _DEFAULT_API_KEY @dataclass diff --git a/argilla-sdk/src/argilla_sdk/_api/_http/_helpers.py b/argilla/src/argilla/_api/_http/_helpers.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_api/_http/_helpers.py rename to argilla/src/argilla/_api/_http/_helpers.py diff --git a/argilla-sdk/src/argilla_sdk/_api/_metadata.py b/argilla/src/argilla/_api/_metadata.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/_api/_metadata.py rename to argilla/src/argilla/_api/_metadata.py index beef1f7807..4cdaad543d 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_metadata.py +++ b/argilla/src/argilla/_api/_metadata.py @@ -17,9 +17,9 @@ import httpx -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions import api_error_handler -from argilla_sdk._models import MetadataFieldModel +from argilla._api._base import ResourceAPI +from argilla._exceptions import api_error_handler +from argilla._models import MetadataFieldModel __all__ = ["MetadataAPI"] diff --git a/argilla-sdk/src/argilla_sdk/_api/_questions.py b/argilla/src/argilla/_api/_questions.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/_api/_questions.py rename to argilla/src/argilla/_api/_questions.py index 6d29fad72b..5b112bc76f 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_questions.py +++ b/argilla/src/argilla/_api/_questions.py @@ -16,9 +16,9 @@ from uuid import UUID import httpx -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions import api_error_handler -from argilla_sdk._models import ( +from argilla._api._base import ResourceAPI +from argilla._exceptions import api_error_handler +from argilla._models import ( TextQuestionModel, LabelQuestionModel, MultiLabelQuestionModel, diff --git a/argilla-sdk/src/argilla_sdk/_api/_records.py b/argilla/src/argilla/_api/_records.py similarity index 98% rename from argilla-sdk/src/argilla_sdk/_api/_records.py rename to argilla/src/argilla/_api/_records.py index e7f9ac1f79..92b42a1617 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_records.py +++ b/argilla/src/argilla/_api/_records.py @@ -18,9 +18,9 @@ import httpx from typing_extensions import deprecated -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions import api_error_handler -from argilla_sdk._models import RecordModel, UserResponseModel, SearchQueryModel +from argilla._api._base import ResourceAPI +from argilla._exceptions import api_error_handler +from argilla._models import RecordModel, UserResponseModel, SearchQueryModel __all__ = ["RecordsAPI"] diff --git a/argilla-sdk/src/argilla_sdk/_api/_users.py b/argilla/src/argilla/_api/_users.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/_api/_users.py rename to argilla/src/argilla/_api/_users.py index 782c56efd5..30d711fcbf 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_users.py +++ b/argilla/src/argilla/_api/_users.py @@ -17,9 +17,9 @@ import httpx -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions import api_error_handler -from argilla_sdk._models._user import UserModel +from argilla._api._base import ResourceAPI +from argilla._exceptions import api_error_handler +from argilla._models._user import UserModel __all__ = ["UsersAPI"] diff --git a/argilla-sdk/src/argilla_sdk/_api/_vectors.py b/argilla/src/argilla/_api/_vectors.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/_api/_vectors.py rename to argilla/src/argilla/_api/_vectors.py index 211924def4..6a24f3d6d0 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_vectors.py +++ b/argilla/src/argilla/_api/_vectors.py @@ -17,9 +17,9 @@ import httpx -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions import api_error_handler -from argilla_sdk._models import VectorFieldModel +from argilla._api._base import ResourceAPI +from argilla._exceptions import api_error_handler +from argilla._models import VectorFieldModel __all__ = ["VectorsAPI"] diff --git a/argilla-sdk/src/argilla_sdk/_api/_workspaces.py b/argilla/src/argilla/_api/_workspaces.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/_api/_workspaces.py rename to argilla/src/argilla/_api/_workspaces.py index 11971fc795..b657963dac 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_workspaces.py +++ b/argilla/src/argilla/_api/_workspaces.py @@ -17,9 +17,9 @@ import httpx -from argilla_sdk._api._base import ResourceAPI -from argilla_sdk._exceptions._api import api_error_handler -from argilla_sdk._models._workspace import WorkspaceModel +from argilla._api._base import ResourceAPI +from argilla._exceptions._api import api_error_handler +from argilla._models._workspace import WorkspaceModel __all__ = ["WorkspacesAPI"] diff --git a/argilla/src/argilla/_constants.py b/argilla/src/argilla/_constants.py index e8cf15a9ee..7e28f0fc57 100644 --- a/argilla/src/argilla/_constants.py +++ b/argilla/src/argilla/_constants.py @@ -1,34 +1,16 @@ -# coding=utf-8 -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Argilla, Inc. # -# 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 +# 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 +# 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. +# 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. -_ES_INDEX_REGEX_PATTERN = r"^(?!-|_)[a-z0-9-_]+$" - -API_KEY_HEADER_NAME = "X-Argilla-Api-Key" -WORKSPACE_HEADER_NAME = "X-Argilla-Workspace" - -DEFAULT_USERNAME = "argilla" -DEFAULT_PASSWORD = "1234" -DEFAULT_API_URL = "http://localhost:6900" -DEFAULT_API_KEY = "argilla.apikey" -DEFAULT_MAX_KEYWORD_LENGTH = 128 - -DATASET_NAME_REGEX_PATTERN = _ES_INDEX_REGEX_PATTERN -WORKSPACE_NAME_REGEX_PATTERN = _ES_INDEX_REGEX_PATTERN - -# constants for prepare_for_training(framework="openai") -OPENAI_SEPARATOR = "\n\n###\n\n" -OPENAI_END_TOKEN = " END" -OPENAI_WHITESPACE = " " -OPENAI_LEGACY_MODELS = ["babbage", "davinci", "curie", "ada"] +_DEFAULT_API_KEY = "argilla.apikey" +_DEFAULT_API_URL = "http://localhost:6900" diff --git a/argilla-sdk/src/argilla_sdk/_api/_http/__init__.py b/argilla/src/argilla/_exceptions/__init__.py similarity index 71% rename from argilla-sdk/src/argilla_sdk/_api/_http/__init__.py rename to argilla/src/argilla/_exceptions/__init__.py index 801129e2be..298688769d 100644 --- a/argilla-sdk/src/argilla_sdk/_api/_http/__init__.py +++ b/argilla/src/argilla/_exceptions/__init__.py @@ -12,5 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk._api._http._client import * # noqa F401, F403 -from argilla_sdk._api._http._helpers import * # noqa F401, F403 +from argilla._exceptions._api import * # noqa: F403 +from argilla._exceptions._metadata import * # noqa: F403 +from argilla._exceptions._serialization import * # noqa: F403 +from argilla._exceptions._settings import * # noqa: F403 diff --git a/argilla-sdk/src/argilla_sdk/_exceptions/_api.py b/argilla/src/argilla/_exceptions/_api.py similarity index 97% rename from argilla-sdk/src/argilla_sdk/_exceptions/_api.py rename to argilla/src/argilla/_exceptions/_api.py index c37787cf7f..7ab82a90c5 100644 --- a/argilla-sdk/src/argilla_sdk/_exceptions/_api.py +++ b/argilla/src/argilla/_exceptions/_api.py @@ -14,7 +14,7 @@ from httpx import HTTPStatusError -from argilla_sdk._exceptions._base import ArgillaErrorBase +from argilla._exceptions._base import ArgillaErrorBase class ArgillaAPIError(ArgillaErrorBase): diff --git a/argilla-sdk/src/argilla_sdk/_exceptions/_base.py b/argilla/src/argilla/_exceptions/_base.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_exceptions/_base.py rename to argilla/src/argilla/_exceptions/_base.py diff --git a/argilla-sdk/src/argilla_sdk/_exceptions/_metadata.py b/argilla/src/argilla/_exceptions/_metadata.py similarity index 92% rename from argilla-sdk/src/argilla_sdk/_exceptions/_metadata.py rename to argilla/src/argilla/_exceptions/_metadata.py index 125dd7f6f9..504b8cc4d1 100644 --- a/argilla-sdk/src/argilla_sdk/_exceptions/_metadata.py +++ b/argilla/src/argilla/_exceptions/_metadata.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk._exceptions._base import ArgillaErrorBase +from argilla._exceptions._base import ArgillaErrorBase class MetadataError(ArgillaErrorBase): diff --git a/argilla-sdk/src/argilla_sdk/_exceptions/_serialization.py b/argilla/src/argilla/_exceptions/_serialization.py similarity index 91% rename from argilla-sdk/src/argilla_sdk/_exceptions/_serialization.py rename to argilla/src/argilla/_exceptions/_serialization.py index 31a8321281..e81bbfdcd9 100644 --- a/argilla-sdk/src/argilla_sdk/_exceptions/_serialization.py +++ b/argilla/src/argilla/_exceptions/_serialization.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk._exceptions._base import ArgillaErrorBase +from argilla._exceptions._base import ArgillaErrorBase class ArgillaSerializeError(ArgillaErrorBase): diff --git a/argilla-sdk/src/argilla_sdk/_exceptions/_settings.py b/argilla/src/argilla/_exceptions/_settings.py similarity index 91% rename from argilla-sdk/src/argilla_sdk/_exceptions/_settings.py rename to argilla/src/argilla/_exceptions/_settings.py index c23424706a..0266b76468 100644 --- a/argilla-sdk/src/argilla_sdk/_exceptions/_settings.py +++ b/argilla/src/argilla/_exceptions/_settings.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk._exceptions._base import ArgillaErrorBase +from argilla._exceptions._base import ArgillaErrorBase class SettingsError(ArgillaErrorBase): diff --git a/argilla-sdk/src/argilla_sdk/_helpers/__init__.py b/argilla/src/argilla/_helpers/__init__.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_helpers/__init__.py rename to argilla/src/argilla/_helpers/__init__.py diff --git a/argilla-sdk/src/argilla_sdk/_helpers/_dataclasses.py b/argilla/src/argilla/_helpers/_dataclasses.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_helpers/_dataclasses.py rename to argilla/src/argilla/_helpers/_dataclasses.py diff --git a/argilla-sdk/src/argilla_sdk/_helpers/_iterator.py b/argilla/src/argilla/_helpers/_iterator.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_helpers/_iterator.py rename to argilla/src/argilla/_helpers/_iterator.py diff --git a/argilla-sdk/src/argilla_sdk/_helpers/_log.py b/argilla/src/argilla/_helpers/_log.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_helpers/_log.py rename to argilla/src/argilla/_helpers/_log.py diff --git a/argilla-sdk/src/argilla_sdk/_helpers/_resource_repr.py b/argilla/src/argilla/_helpers/_resource_repr.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_helpers/_resource_repr.py rename to argilla/src/argilla/_helpers/_resource_repr.py diff --git a/argilla-sdk/src/argilla_sdk/_helpers/_uuid.py b/argilla/src/argilla/_helpers/_uuid.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_helpers/_uuid.py rename to argilla/src/argilla/_helpers/_uuid.py diff --git a/argilla-sdk/src/argilla_sdk/_models/__init__.py b/argilla/src/argilla/_models/__init__.py similarity index 62% rename from argilla-sdk/src/argilla_sdk/_models/__init__.py rename to argilla/src/argilla/_models/__init__.py index b7a2fa5c57..3e0421d65f 100644 --- a/argilla-sdk/src/argilla_sdk/_models/__init__.py +++ b/argilla/src/argilla/_models/__init__.py @@ -14,16 +14,16 @@ # We skip the flake8 check because we are importing all the models and the import order is important # flake8: noqa -from argilla_sdk._models._resource import ResourceModel -from argilla_sdk._models._workspace import WorkspaceModel -from argilla_sdk._models._user import UserModel, Role -from argilla_sdk._models._dataset import DatasetModel -from argilla_sdk._models._record._record import RecordModel -from argilla_sdk._models._record._suggestion import SuggestionModel -from argilla_sdk._models._record._response import UserResponseModel, ResponseStatus -from argilla_sdk._models._record._vector import VectorModel -from argilla_sdk._models._record._metadata import MetadataModel, MetadataValue -from argilla_sdk._models._search import ( +from argilla._models._resource import ResourceModel +from argilla._models._workspace import WorkspaceModel +from argilla._models._user import UserModel, Role +from argilla._models._dataset import DatasetModel +from argilla._models._record._record import RecordModel +from argilla._models._record._suggestion import SuggestionModel +from argilla._models._record._response import UserResponseModel, ResponseStatus +from argilla._models._record._vector import VectorModel +from argilla._models._record._metadata import MetadataModel, MetadataValue +from argilla._models._search import ( SearchQueryModel, AndFilterModel, FilterModel, @@ -31,12 +31,12 @@ TermsFilterModel, ScopeModel, ) -from argilla_sdk._models._settings._fields import ( +from argilla._models._settings._fields import ( FieldModel, TextFieldSettings, FieldModel, ) -from argilla_sdk._models._settings._questions import ( +from argilla._models._settings._questions import ( LabelQuestionModel, LabelQuestionSettings, MultiLabelQuestionModel, @@ -50,7 +50,7 @@ TextQuestionModel, TextQuestionSettings, ) -from argilla_sdk._models._settings._metadata import ( +from argilla._models._settings._metadata import ( MetadataFieldModel, MetadataPropertyType, BaseMetadataPropertySettings, @@ -59,4 +59,4 @@ FloatMetadataPropertySettings, IntegerMetadataPropertySettings, ) -from argilla_sdk._models._settings._vectors import VectorFieldModel +from argilla._models._settings._vectors import VectorFieldModel diff --git a/argilla-sdk/src/argilla_sdk/_models/_base.py b/argilla/src/argilla/_models/_base.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_models/_base.py rename to argilla/src/argilla/_models/_base.py diff --git a/argilla-sdk/src/argilla_sdk/_models/_dataset.py b/argilla/src/argilla/_models/_dataset.py similarity index 87% rename from argilla-sdk/src/argilla_sdk/_models/_dataset.py rename to argilla/src/argilla/_models/_dataset.py index 931df96c49..cd851752a5 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_dataset.py +++ b/argilla/src/argilla/_models/_dataset.py @@ -17,9 +17,9 @@ from uuid import UUID from typing import Literal -from pydantic import field_serializer +from pydantic import field_serializer, ConfigDict -from argilla_sdk._models import ResourceModel +from argilla._models import ResourceModel __all__ = ["DatasetModel"] @@ -35,9 +35,10 @@ class DatasetModel(ResourceModel): last_activity_at: Optional[datetime] = None url: Optional[str] = None - class Config: - validate_assignment = True - str_strip_whitespace = True + model_config = ConfigDict( + validate_assignment=True, + str_strip_whitespace=True, + ) @field_serializer("last_activity_at", when_used="unless-none") def serialize_last_activity_at(self, value: datetime) -> str: diff --git a/argilla-sdk/src/argilla_sdk/_models/_record/__init__.py b/argilla/src/argilla/_models/_record/__init__.py similarity index 99% rename from argilla-sdk/src/argilla_sdk/_models/_record/__init__.py rename to argilla/src/argilla/_models/_record/__init__.py index 749d13b87d..20542d78f0 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_record/__init__.py +++ b/argilla/src/argilla/_models/_record/__init__.py @@ -11,4 +11,3 @@ # 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. - diff --git a/argilla-sdk/src/argilla_sdk/_models/_record/_metadata.py b/argilla/src/argilla/_models/_record/_metadata.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_models/_record/_metadata.py rename to argilla/src/argilla/_models/_record/_metadata.py diff --git a/argilla-sdk/src/argilla_sdk/_models/_record/_record.py b/argilla/src/argilla/_models/_record/_record.py similarity index 89% rename from argilla-sdk/src/argilla_sdk/_models/_record/_record.py rename to argilla/src/argilla/_models/_record/_record.py index 9c98ce1a8b..4668163543 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_record/_record.py +++ b/argilla/src/argilla/_models/_record/_record.py @@ -16,11 +16,11 @@ from pydantic import Field, field_serializer, field_validator -from argilla_sdk._models._resource import ResourceModel -from argilla_sdk._models._record._metadata import MetadataModel, MetadataValue -from argilla_sdk._models._record._response import UserResponseModel -from argilla_sdk._models._record._suggestion import SuggestionModel -from argilla_sdk._models._record._vector import VectorModel +from argilla._models._resource import ResourceModel +from argilla._models._record._metadata import MetadataModel, MetadataValue +from argilla._models._record._response import UserResponseModel +from argilla._models._record._suggestion import SuggestionModel +from argilla._models._record._vector import VectorModel class RecordModel(ResourceModel): diff --git a/argilla-sdk/src/argilla_sdk/_models/_record/_response.py b/argilla/src/argilla/_models/_record/_response.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_models/_record/_response.py rename to argilla/src/argilla/_models/_record/_response.py diff --git a/argilla-sdk/src/argilla_sdk/_models/_record/_suggestion.py b/argilla/src/argilla/_models/_record/_suggestion.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_models/_record/_suggestion.py rename to argilla/src/argilla/_models/_record/_suggestion.py diff --git a/argilla-sdk/src/argilla_sdk/_models/_record/_vector.py b/argilla/src/argilla/_models/_record/_vector.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/_models/_record/_vector.py rename to argilla/src/argilla/_models/_record/_vector.py index 2b46f0c9b5..9efcb1ae75 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_record/_vector.py +++ b/argilla/src/argilla/_models/_record/_vector.py @@ -13,7 +13,7 @@ # limitations under the License. from typing import List -from argilla_sdk._models import ResourceModel +from argilla._models import ResourceModel import re from pydantic import field_validator diff --git a/argilla-sdk/src/argilla_sdk/_models/_resource.py b/argilla/src/argilla/_models/_resource.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_models/_resource.py rename to argilla/src/argilla/_models/_resource.py diff --git a/argilla-sdk/src/argilla_sdk/_models/_search.py b/argilla/src/argilla/_models/_search.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_models/_search.py rename to argilla/src/argilla/_models/_search.py diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/__init__.py b/argilla/src/argilla/_models/_settings/__init__.py similarity index 99% rename from argilla-sdk/src/argilla_sdk/_models/_settings/__init__.py rename to argilla/src/argilla/_models/_settings/__init__.py index 749d13b87d..20542d78f0 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/__init__.py +++ b/argilla/src/argilla/_models/_settings/__init__.py @@ -11,4 +11,3 @@ # 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. - diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_fields.py b/argilla/src/argilla/_models/_settings/_fields.py similarity index 94% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_fields.py rename to argilla/src/argilla/_models/_settings/_fields.py index fe7d7c902a..7ec1c2e6ff 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_fields.py +++ b/argilla/src/argilla/_models/_settings/_fields.py @@ -18,8 +18,8 @@ from pydantic import BaseModel, field_serializer, field_validator from pydantic_core.core_schema import ValidationInfo -from argilla_sdk._helpers import log_message -from argilla_sdk._models import ResourceModel +from argilla._helpers import log_message +from argilla._models import ResourceModel class TextFieldSettings(BaseModel): diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_metadata.py b/argilla/src/argilla/_models/_settings/_metadata.py similarity index 97% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_metadata.py rename to argilla/src/argilla/_models/_settings/_metadata.py index 272c051cd3..7cc97984df 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_metadata.py +++ b/argilla/src/argilla/_models/_settings/_metadata.py @@ -18,8 +18,8 @@ from pydantic import BaseModel, Field, field_serializer, field_validator, model_validator -from argilla_sdk._exceptions import MetadataError -from argilla_sdk._models import ResourceModel +from argilla._exceptions import MetadataError +from argilla._models import ResourceModel class MetadataPropertyType(str, Enum): diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/__init__.py b/argilla/src/argilla/_models/_settings/_questions/__init__.py similarity index 55% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/__init__.py rename to argilla/src/argilla/_models/_settings/_questions/__init__.py index 8d9dcc0aee..403774c032 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/__init__.py +++ b/argilla/src/argilla/_models/_settings/_questions/__init__.py @@ -14,16 +14,16 @@ # flake8: noqa from typing import Union -from argilla_sdk._models._settings._questions._label_selection import LabelQuestionModel, LabelQuestionSettings -from argilla_sdk._models._settings._questions._multi_label_selection import ( +from argilla._models._settings._questions._label_selection import LabelQuestionModel, LabelQuestionSettings +from argilla._models._settings._questions._multi_label_selection import ( MultiLabelQuestionModel, MultiLabelQuestionSettings, ) -from argilla_sdk._models._settings._questions._rating import RatingQuestionModel, RatingQuestionSettings -from argilla_sdk._models._settings._questions._ranking import RankingQuestionModel, RankingQuestionSettings -from argilla_sdk._models._settings._questions._text import TextQuestionModel, TextQuestionSettings -from argilla_sdk._models._settings._questions._base import QuestionBaseModel, QuestionSettings -from argilla_sdk._models._settings._questions._span import SpanQuestionModel, SpanQuestionSettings +from argilla._models._settings._questions._rating import RatingQuestionModel, RatingQuestionSettings +from argilla._models._settings._questions._ranking import RankingQuestionModel, RankingQuestionSettings +from argilla._models._settings._questions._text import TextQuestionModel, TextQuestionSettings +from argilla._models._settings._questions._base import QuestionBaseModel, QuestionSettings +from argilla._models._settings._questions._span import SpanQuestionModel, SpanQuestionSettings QuestionModel = Union[ LabelQuestionModel, diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_base.py b/argilla/src/argilla/_models/_settings/_questions/_base.py similarity index 100% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_base.py rename to argilla/src/argilla/_models/_settings/_questions/_base.py diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_label_selection.py b/argilla/src/argilla/_models/_settings/_questions/_label_selection.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_label_selection.py rename to argilla/src/argilla/_models/_settings/_questions/_label_selection.py index 717460e1f9..358bf441e7 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_label_selection.py +++ b/argilla/src/argilla/_models/_settings/_questions/_label_selection.py @@ -16,7 +16,7 @@ from pydantic import field_validator, Field, model_validator -from argilla_sdk._models._settings._questions._base import QuestionSettings, QuestionBaseModel +from argilla._models._settings._questions._base import QuestionSettings, QuestionBaseModel try: from typing import Self diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_multi_label_selection.py b/argilla/src/argilla/_models/_settings/_questions/_multi_label_selection.py similarity index 90% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_multi_label_selection.py rename to argilla/src/argilla/_models/_settings/_questions/_multi_label_selection.py index 0084b06cb8..8eeeb7f121 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_multi_label_selection.py +++ b/argilla/src/argilla/_models/_settings/_questions/_multi_label_selection.py @@ -16,7 +16,7 @@ from pydantic import Field -from argilla_sdk._models._settings._questions._label_selection import LabelQuestionSettings, LabelQuestionModel +from argilla._models._settings._questions._label_selection import LabelQuestionSettings, LabelQuestionModel class OptionsOrder(str, Enum): diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_ranking.py b/argilla/src/argilla/_models/_settings/_questions/_ranking.py similarity index 93% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_ranking.py rename to argilla/src/argilla/_models/_settings/_questions/_ranking.py index 70f43bedc5..6adb9aebac 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_ranking.py +++ b/argilla/src/argilla/_models/_settings/_questions/_ranking.py @@ -16,7 +16,7 @@ from pydantic import field_validator, Field -from argilla_sdk._models._settings._questions._base import QuestionSettings, QuestionBaseModel +from argilla._models._settings._questions._base import QuestionSettings, QuestionBaseModel class RankingQuestionSettings(QuestionSettings): diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_rating.py b/argilla/src/argilla/_models/_settings/_questions/_rating.py similarity index 92% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_rating.py rename to argilla/src/argilla/_models/_settings/_questions/_rating.py index 39ade0c29a..9248bf3ca8 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_rating.py +++ b/argilla/src/argilla/_models/_settings/_questions/_rating.py @@ -16,7 +16,7 @@ from pydantic import field_validator, Field -from argilla_sdk._models._settings._questions._base import QuestionSettings, QuestionBaseModel +from argilla._models._settings._questions._base import QuestionSettings, QuestionBaseModel class RatingQuestionSettings(QuestionSettings): diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_span.py b/argilla/src/argilla/_models/_settings/_questions/_span.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_span.py rename to argilla/src/argilla/_models/_settings/_questions/_span.py index bd66428843..a24b9e1059 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_span.py +++ b/argilla/src/argilla/_models/_settings/_questions/_span.py @@ -16,7 +16,7 @@ from pydantic import field_validator, Field, model_validator -from argilla_sdk._models._settings._questions._base import QuestionSettings, QuestionBaseModel +from argilla._models._settings._questions._base import QuestionSettings, QuestionBaseModel try: from typing import Self diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_text.py b/argilla/src/argilla/_models/_settings/_questions/_text.py similarity index 89% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_text.py rename to argilla/src/argilla/_models/_settings/_questions/_text.py index 2d3ecaf89c..86d4a43f12 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_questions/_text.py +++ b/argilla/src/argilla/_models/_settings/_questions/_text.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk._models._settings._questions._base import QuestionSettings, QuestionBaseModel +from argilla._models._settings._questions._base import QuestionSettings, QuestionBaseModel class TextQuestionSettings(QuestionSettings): diff --git a/argilla-sdk/src/argilla_sdk/_models/_settings/_vectors.py b/argilla/src/argilla/_models/_settings/_vectors.py similarity index 94% rename from argilla-sdk/src/argilla_sdk/_models/_settings/_vectors.py rename to argilla/src/argilla/_models/_settings/_vectors.py index 8b93293805..80b5d01e69 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_settings/_vectors.py +++ b/argilla/src/argilla/_models/_settings/_vectors.py @@ -18,8 +18,8 @@ from pydantic import field_validator, field_serializer from pydantic_core.core_schema import ValidationInfo -from argilla_sdk._models import ResourceModel -from argilla_sdk._helpers import log_message +from argilla._models import ResourceModel +from argilla._helpers import log_message class VectorFieldModel(ResourceModel): diff --git a/argilla-sdk/src/argilla_sdk/_models/_user.py b/argilla/src/argilla/_models/_user.py similarity index 88% rename from argilla-sdk/src/argilla_sdk/_models/_user.py rename to argilla/src/argilla/_models/_user.py index 3e4bc9dd96..ac94dc6465 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_user.py +++ b/argilla/src/argilla/_models/_user.py @@ -15,9 +15,9 @@ from enum import Enum from typing import Optional -from pydantic import field_validator +from pydantic import field_validator, ConfigDict -from argilla_sdk._models import ResourceModel +from argilla._models import ResourceModel __all__ = ["UserModel", "Role"] @@ -36,9 +36,10 @@ class UserModel(ResourceModel): last_name: Optional[str] = None password: Optional[str] = None - class Config: - validate_assignment = True - str_strip_whitespace = True + model_config = ConfigDict( + validate_assignment=True, + str_strip_whitespace=True, + ) @field_validator("first_name") @classmethod diff --git a/argilla-sdk/src/argilla_sdk/_models/_workspace.py b/argilla/src/argilla/_models/_workspace.py similarity index 83% rename from argilla-sdk/src/argilla_sdk/_models/_workspace.py rename to argilla/src/argilla/_models/_workspace.py index b06bd141de..c823d79b04 100644 --- a/argilla-sdk/src/argilla_sdk/_models/_workspace.py +++ b/argilla/src/argilla/_models/_workspace.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk._models import ResourceModel +from argilla._models import ResourceModel import re -from pydantic import field_validator +from pydantic import field_validator, ConfigDict __all__ = ["WorkspaceModel"] @@ -23,9 +23,10 @@ class WorkspaceModel(ResourceModel): name: str - class Config: - validate_assignment = True - str_strip_whitespace = True + model_config = ConfigDict( + validate_assignment=True, + str_strip_whitespace=True, + ) @field_validator("name") @classmethod diff --git a/argilla-sdk/src/argilla_sdk/_resource.py b/argilla/src/argilla/_resource.py similarity index 94% rename from argilla-sdk/src/argilla_sdk/_resource.py rename to argilla/src/argilla/_resource.py index c9cd668f1c..60bf3f11c7 100644 --- a/argilla-sdk/src/argilla_sdk/_resource.py +++ b/argilla/src/argilla/_resource.py @@ -16,13 +16,13 @@ from typing import Any, TYPE_CHECKING, Optional from uuid import UUID -from argilla_sdk._exceptions import ArgillaSerializeError -from argilla_sdk._helpers import LoggingMixin +from argilla._exceptions import ArgillaSerializeError +from argilla._helpers import LoggingMixin if TYPE_CHECKING: - from argilla_sdk.client import Argilla - from argilla_sdk._models import ResourceModel - from argilla_sdk._api._base import ResourceAPI + from argilla.client import Argilla + from argilla._models import ResourceModel + from argilla._api._base import ResourceAPI class Resource(LoggingMixin): diff --git a/argilla-sdk/src/argilla_sdk/client.py b/argilla/src/argilla/client.py similarity index 88% rename from argilla-sdk/src/argilla_sdk/client.py rename to argilla/src/argilla/client.py index c243159715..db2aa6d202 100644 --- a/argilla-sdk/src/argilla_sdk/client.py +++ b/argilla/src/argilla/client.py @@ -17,16 +17,16 @@ from collections.abc import Sequence from typing import TYPE_CHECKING, overload, List, Optional, Union -from argilla_sdk import _api -from argilla_sdk._api._client import DEFAULT_HTTP_CONFIG -from argilla_sdk._helpers import GenericIterator -from argilla_sdk._helpers._resource_repr import ResourceHTMLReprMixin -from argilla_sdk._models import UserModel, WorkspaceModel, DatasetModel +from argilla import _api +from argilla._api._client import DEFAULT_HTTP_CONFIG +from argilla._helpers import GenericIterator +from argilla._helpers._resource_repr import ResourceHTMLReprMixin +from argilla._models import UserModel, WorkspaceModel, DatasetModel if TYPE_CHECKING: - from argilla_sdk import Workspace - from argilla_sdk import Dataset - from argilla_sdk import User + from argilla import Workspace + from argilla import Dataset + from argilla import User __all__ = ["Argilla"] @@ -75,7 +75,7 @@ def users(self) -> "Users": @property def me(self) -> "User": """The current user.""" - from argilla_sdk import User + from argilla import User return User(client=self, _model=self.api.users.get_me()) @@ -107,7 +107,7 @@ def __init__(self, client: "Argilla") -> None: self._api = client.api.users def __call__(self, username: str, **kwargs) -> "User": - from argilla_sdk.users import User + from argilla.users import User user_models = self._api.list() for model in user_models: @@ -121,13 +121,11 @@ def __iter__(self): @overload @abstractmethod - def __getitem__(self, index: int) -> "User": - ... + def __getitem__(self, index: int) -> "User": ... @overload @abstractmethod - def __getitem__(self, index: slice) -> Sequence["User"]: - ... + def __getitem__(self, index: slice) -> Sequence["User"]: ... def __getitem__(self, index): model = self._api.list()[index] @@ -149,12 +147,10 @@ def add(self, user: "User") -> "User": return user.create() @overload - def list(self) -> List["User"]: - ... + def list(self) -> List["User"]: ... @overload - def list(self, workspace: "Workspace") -> List["User"]: - ... + def list(self, workspace: "Workspace") -> List["User"]: ... def list(self, workspace: Optional["Workspace"] = None) -> List["User"]: """List all users.""" @@ -173,7 +169,7 @@ def _repr_html_(self) -> str: return self._represent_as_html(resources=self.list()) def _from_model(self, model: UserModel) -> "User": - from argilla_sdk.users import User + from argilla.users import User return User(client=self._client, _model=model) @@ -189,7 +185,7 @@ def __init__(self, client: "Argilla") -> None: self._api = client.api.workspaces def __call__(self, name: str, **kwargs) -> "Workspace": - from argilla_sdk.workspaces import Workspace + from argilla.workspaces import Workspace workspace_models = self._api.list() @@ -206,13 +202,11 @@ def __iter__(self): @overload @abstractmethod - def __getitem__(self, index: int) -> "Workspace": - ... + def __getitem__(self, index: int) -> "Workspace": ... @overload @abstractmethod - def __getitem__(self, index: slice) -> Sequence["Workspace"]: - ... + def __getitem__(self, index: slice) -> Sequence["Workspace"]: ... def __getitem__(self, index) -> "Workspace": model = self._api.list()[index] @@ -252,7 +246,7 @@ def _repr_html_(self) -> str: return self._represent_as_html(resources=self.list()) def _from_model(self, model: WorkspaceModel) -> "Workspace": - from argilla_sdk.workspaces import Workspace + from argilla.workspaces import Workspace return Workspace(client=self._client, _model=model) @@ -268,7 +262,7 @@ def __init__(self, client: "Argilla") -> None: self._api = client.api.datasets def __call__(self, name: str, workspace: Optional[Union["Workspace", str]] = None, **kwargs) -> "Dataset": - from argilla_sdk.datasets import Dataset + from argilla.datasets import Dataset if isinstance(workspace, str): workspace = self._client.workspaces(workspace) @@ -286,13 +280,11 @@ def __iter__(self): @overload @abstractmethod - def __getitem__(self, index: int) -> "Dataset": - ... + def __getitem__(self, index: int) -> "Dataset": ... @overload @abstractmethod - def __getitem__(self, index: slice) -> Sequence["Dataset"]: - ... + def __getitem__(self, index: slice) -> Sequence["Dataset"]: ... def __getitem__(self, index) -> "Dataset": model = self._api.list()[index] @@ -327,6 +319,6 @@ def _repr_html_(self) -> str: return self._represent_as_html(resources=self.list()) def _from_model(self, model: DatasetModel) -> "Dataset": - from argilla_sdk.datasets import Dataset + from argilla.datasets import Dataset return Dataset(client=self._client, _model=model) diff --git a/argilla/src/argilla/datasets/__init__.py b/argilla/src/argilla/datasets/__init__.py index c1e2e7e322..5a9f7aa0ca 100644 --- a/argilla/src/argilla/datasets/__init__.py +++ b/argilla/src/argilla/datasets/__init__.py @@ -1,77 +1,17 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Argilla, Inc. # -# 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 +# 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 +# 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. -import logging -import warnings -from typing import Optional +# 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. -from argilla.client import singleton -from argilla.client.apis.datasets import Settings, TextClassificationSettings, TokenClassificationSettings +from argilla.datasets._resource import Dataset # noqa -__all__ = [TextClassificationSettings, TokenClassificationSettings, Settings] - -_LOGGER = logging.getLogger(__name__) - - -def load_dataset_settings(name: str, workspace: Optional[str] = None) -> Optional[Settings]: - """ - Loads the settings of a dataset - - Args: - name: The dataset name - workspace: The workspace name where the dataset belongs to - - Returns: - The dataset settings - """ - active_api = singleton.active_api() - datasets = active_api.datasets - - settings = datasets.load_settings(name, workspace=workspace) - if settings is None: - return None - else: - return settings - - -def configure_dataset_settings(name: str, settings: Settings, workspace: Optional[str] = None) -> None: - """ - Configures a dataset with a set of configured labels. If dataset does not - exist yet, an empty dataset will be created. - - A subset of settings can be provided. - - Args: - name: The dataset name - settings: The dataset settings - workspace: The workspace name where the dataset will belongs to - """ - active_api = singleton.active_api() - datasets = active_api.datasets - datasets.configure(name, workspace=workspace or active_api.get_workspace(), settings=settings) - - -def configure_dataset(name: str, settings: Settings, workspace: Optional[str] = None) -> None: - """ - Configures a dataset with a set of configured labels. If dataset does not - exist yet, an empty dataset will be created. - - A subset of settings can be provided. - - Args: - name: The dataset name - settings: The dataset settings - workspace: The workspace name where the dataset will belongs to - """ - warnings.warn("This method is deprecated. Use configure_dataset_settings instead.", DeprecationWarning) - return configure_dataset_settings(name, settings, workspace) +__all__ = ["Dataset"] diff --git a/argilla-sdk/src/argilla_sdk/datasets/_export.py b/argilla/src/argilla/datasets/_export.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/datasets/_export.py rename to argilla/src/argilla/datasets/_export.py index b597c1fcad..f6ac7f9b90 100644 --- a/argilla-sdk/src/argilla_sdk/datasets/_export.py +++ b/argilla/src/argilla/datasets/_export.py @@ -21,14 +21,14 @@ from typing import Optional, Union, TYPE_CHECKING, Tuple, Type from uuid import uuid4 -from argilla_sdk._models import DatasetModel -from argilla_sdk.client import Argilla -from argilla_sdk.settings import Settings -from argilla_sdk.workspaces._resource import Workspace +from argilla._models import DatasetModel +from argilla.client import Argilla +from argilla.settings import Settings +from argilla.workspaces._resource import Workspace if TYPE_CHECKING: - from argilla_sdk import Dataset + from argilla import Dataset class DiskImportExportMixin(ABC): diff --git a/argilla-sdk/src/argilla_sdk/datasets/_resource.py b/argilla/src/argilla/datasets/_resource.py similarity index 93% rename from argilla-sdk/src/argilla_sdk/datasets/_resource.py rename to argilla/src/argilla/datasets/_resource.py index 6459be412b..e09cd3baea 100644 --- a/argilla-sdk/src/argilla_sdk/datasets/_resource.py +++ b/argilla/src/argilla/datasets/_resource.py @@ -16,16 +16,16 @@ from typing import Optional, Union from uuid import UUID, uuid4 -from argilla_sdk._api import DatasetsAPI -from argilla_sdk._exceptions import NotFoundError, SettingsError -from argilla_sdk._helpers import UUIDUtilities -from argilla_sdk._models import DatasetModel -from argilla_sdk._resource import Resource -from argilla_sdk.client import Argilla -from argilla_sdk.datasets._export import DiskImportExportMixin -from argilla_sdk.records import DatasetRecords -from argilla_sdk.settings import Settings -from argilla_sdk.workspaces._resource import Workspace +from argilla._api import DatasetsAPI +from argilla._exceptions import NotFoundError, SettingsError +from argilla._helpers import UUIDUtilities +from argilla._models import DatasetModel +from argilla._resource import Resource +from argilla.client import Argilla +from argilla.datasets._export import DiskImportExportMixin +from argilla.records import DatasetRecords +from argilla.settings import Settings +from argilla.workspaces._resource import Workspace __all__ = ["Dataset"] diff --git a/argilla-sdk/src/argilla_sdk/records/__init__.py b/argilla/src/argilla/records/__init__.py similarity index 78% rename from argilla-sdk/src/argilla_sdk/records/__init__.py rename to argilla/src/argilla/records/__init__.py index bb25d4798a..19d6f816e7 100644 --- a/argilla-sdk/src/argilla_sdk/records/__init__.py +++ b/argilla/src/argilla/records/__init__.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk.records._dataset_records import DatasetRecords -from argilla_sdk.records._resource import Record -from argilla_sdk.records._search import Query, Filter, Condition +from argilla.records._dataset_records import DatasetRecords +from argilla.records._resource import Record +from argilla.records._search import Query, Filter, Condition __all__ = ["Record", "DatasetRecords", "Query", "Filter", "Condition"] diff --git a/argilla-sdk/src/argilla_sdk/records/_dataset_records.py b/argilla/src/argilla/records/_dataset_records.py similarity index 93% rename from argilla-sdk/src/argilla_sdk/records/_dataset_records.py rename to argilla/src/argilla/records/_dataset_records.py index dfb94f6d3c..00028ebd57 100644 --- a/argilla-sdk/src/argilla_sdk/records/_dataset_records.py +++ b/argilla/src/argilla/records/_dataset_records.py @@ -19,22 +19,22 @@ from tqdm import tqdm -from argilla_sdk._api import RecordsAPI -from argilla_sdk._helpers import LoggingMixin -from argilla_sdk._models import RecordModel, MetadataValue -from argilla_sdk.client import Argilla -from argilla_sdk.records._io import GenericIO, HFDataset, HFDatasetsIO, JsonIO -from argilla_sdk.records._resource import Record -from argilla_sdk.records._search import Query -from argilla_sdk.responses import Response -from argilla_sdk.settings import TextField, VectorField -from argilla_sdk.settings._metadata import MetadataPropertyBase -from argilla_sdk.settings._question import QuestionPropertyBase -from argilla_sdk.suggestions import Suggestion -from argilla_sdk.vectors import Vector +from argilla._api import RecordsAPI +from argilla._helpers import LoggingMixin +from argilla._models import RecordModel, MetadataValue +from argilla.client import Argilla +from argilla.records._io import GenericIO, HFDataset, HFDatasetsIO, JsonIO +from argilla.records._resource import Record +from argilla.records._search import Query +from argilla.responses import Response +from argilla.settings import TextField, VectorField +from argilla.settings._metadata import MetadataPropertyBase +from argilla.settings._question import QuestionPropertyBase +from argilla.suggestions import Suggestion +from argilla.vectors import Vector if TYPE_CHECKING: - from argilla_sdk.datasets import Dataset + from argilla.datasets import Dataset class DatasetRecordsIterator: @@ -116,6 +116,19 @@ def _fetch_from_server_with_search(self) -> List[RecordModel]: def _is_search_query(self) -> bool: return bool(self.__query and (self.__query.query or self.__query.filter)) + def to_list(self, flatten: bool) -> List[Dict[str, Any]]: + return GenericIO.to_list(records=list(self), flatten=flatten) + + def to_dict(self, flatten: bool, orient: str) -> Dict[str, Any]: + data = GenericIO.to_dict(records=list(self), flatten=flatten, orient=orient) + return data + + def to_json(self, path: Union[Path, str]) -> Path: + return JsonIO.to_json(records=list(self), path=path) + + def to_datasets(self) -> "HFDataset": + return HFDatasetsIO.to_datasets(records=list(self)) + class DatasetRecords(Iterable[Record], LoggingMixin): """This class is used to work with records from a dataset and is accessed via `Dataset.records`. @@ -142,7 +155,7 @@ def __init__(self, client: "Argilla", dataset: "Dataset"): self._api = self.__client.api.records def __iter__(self): - return DatasetRecordsIterator(self.__dataset, self.__client) + return DatasetRecordsIterator(self.__dataset, self.__client, with_suggestions=True, with_responses=True) def __call__( self, @@ -286,9 +299,7 @@ def to_dict(self, flatten: bool = False, orient: str = "names") -> Dict[str, Any A dictionary of records. """ - records = list(self(with_suggestions=True, with_responses=True)) - data = GenericIO.to_dict(records=records, flatten=flatten, orient=orient) - return data + return self().to_dict(flatten=flatten, orient=orient) def to_list(self, flatten: bool = False) -> List[Dict[str, Any]]: """ @@ -300,8 +311,7 @@ def to_list(self, flatten: bool = False) -> List[Dict[str, Any]]: Returns: A list of dictionaries of records. """ - records = list(self(with_suggestions=True, with_responses=True)) - data = GenericIO.to_list(records=records, flatten=flatten) + data = self().to_list(flatten=flatten) return data def to_json(self, path: Union[Path, str]) -> Path: @@ -315,8 +325,7 @@ def to_json(self, path: Union[Path, str]) -> Path: The path to the file where the records were saved. """ - records = list(self(with_suggestions=True, with_responses=True)) - return JsonIO.to_json(records=records, path=path) + return self().to_json(path=path) def from_json(self, path: Union[Path, str]) -> List[Record]: """Creates a DatasetRecords object from a disk path to a JSON file. @@ -340,8 +349,8 @@ def to_datasets(self) -> HFDataset: The dataset containing the records. """ - records = list(self(with_suggestions=True, with_responses=True)) - return HFDatasetsIO.to_datasets(records=records) + + return self().to_datasets() ############################ # Private methods diff --git a/argilla/src/argilla/records/_io/__init__.py b/argilla/src/argilla/records/_io/__init__.py new file mode 100644 index 0000000000..439cbc7c2e --- /dev/null +++ b/argilla/src/argilla/records/_io/__init__.py @@ -0,0 +1,18 @@ +# Copyright 2024-present, Argilla, Inc. +# +# 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. + +from argilla.records._io._datasets import HFDatasetsIO # noqa: F401 +from argilla.records._io._generic import GenericIO # noqa: F401 +from argilla.records._io._json import JsonIO # noqa: F401 +from argilla.records._io._datasets import HFDataset # noqa: F401 diff --git a/argilla-sdk/src/argilla_sdk/records/_io/_datasets.py b/argilla/src/argilla/records/_io/_datasets.py similarity index 75% rename from argilla-sdk/src/argilla_sdk/records/_io/_datasets.py rename to argilla/src/argilla/records/_io/_datasets.py index 642bb64383..419c36a705 100644 --- a/argilla-sdk/src/argilla_sdk/records/_io/_datasets.py +++ b/argilla/src/argilla/records/_io/_datasets.py @@ -12,24 +12,24 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict, List, Union, Optional, Type, TYPE_CHECKING +from typing import Dict, List, Union, Optional, Type, TYPE_CHECKING, Any -from argilla_sdk.records._io._generic import GenericIO +from argilla.records._io._generic import GenericIO if TYPE_CHECKING: - from argilla_sdk.records import Record + from argilla.records import Record -def _resolve_hf_datasets_type() -> Optional[Type]: +def _resolve_hf_datasets_type() -> Optional[Type["HFDataset"]]: """This function resolves the `datasets.Dataset` type safely in case the datasets package is not installed. Returns: Optional[Type]: The Dataset class definition in case the datasets package is installed. Otherwise, None. """ try: - from datasets import Dataset as HFDataset + from datasets import Dataset - return HFDataset + return Dataset except ImportError: return None @@ -39,7 +39,7 @@ def _resolve_hf_datasets_type() -> Optional[Type]: class HFDatasetsIO: @staticmethod - def _is_hf_dataset(dataset: HFDataset) -> bool: + def _is_hf_dataset(dataset: Any) -> bool: """Check if the object is a Hugging Face dataset. Parameters: @@ -48,26 +48,28 @@ def _is_hf_dataset(dataset: HFDataset) -> bool: Returns: bool: True if the object is a Hugging Face dataset, False otherwise. """ - HFDataset = _resolve_hf_datasets_type() - return isinstance(dataset, HFDataset) + datasets_class = _resolve_hf_datasets_type() + if datasets_class is None: + return False + return isinstance(dataset, datasets_class) @staticmethod - def to_datasets(records: List["Record"]) -> HFDataset: + def to_datasets(records: List["Record"]) -> "HFDataset": """ Export the records to a Hugging Face dataset. Returns: The dataset containing the records. """ - HFDataset = _resolve_hf_datasets_type() - if HFDataset is None: + dataset_class = _resolve_hf_datasets_type() + if dataset_class is None: raise ImportError("Hugging Face datasets is not installed. Please install it using `pip install datasets`.") record_dicts = GenericIO.to_list(records, flatten=True) - dataset = HFDataset.from_list(record_dicts) + dataset = dataset_class.from_list(record_dicts) return dataset @staticmethod - def _record_dicts_from_datasets(dataset: HFDataset) -> List[Dict[str, Union[str, float, int, list]]]: + def _record_dicts_from_datasets(dataset: "HFDataset") -> List[Dict[str, Union[str, float, int, list]]]: """Creates a dictionaries from a HF dataset that can be passed to DatasetRecords.add or DatasetRecords.update. Parameters: diff --git a/argilla-sdk/src/argilla_sdk/records/_io/_generic.py b/argilla/src/argilla/records/_io/_generic.py similarity index 99% rename from argilla-sdk/src/argilla_sdk/records/_io/_generic.py rename to argilla/src/argilla/records/_io/_generic.py index eb135de8e7..518181f85d 100644 --- a/argilla-sdk/src/argilla_sdk/records/_io/_generic.py +++ b/argilla/src/argilla/records/_io/_generic.py @@ -16,7 +16,7 @@ from typing import Any, Dict, List, TYPE_CHECKING, Union if TYPE_CHECKING: - from argilla_sdk import Record + from argilla import Record class GenericIO: diff --git a/argilla-sdk/src/argilla_sdk/records/_io/_json.py b/argilla/src/argilla/records/_io/_json.py similarity index 95% rename from argilla-sdk/src/argilla_sdk/records/_io/_json.py rename to argilla/src/argilla/records/_io/_json.py index 6d67627242..0bf6208726 100644 --- a/argilla-sdk/src/argilla_sdk/records/_io/_json.py +++ b/argilla/src/argilla/records/_io/_json.py @@ -15,8 +15,8 @@ from pathlib import Path from typing import List, Union -from argilla_sdk.records._resource import Record -from argilla_sdk.records._io import GenericIO +from argilla.records._resource import Record +from argilla.records._io import GenericIO class JsonIO: diff --git a/argilla-sdk/src/argilla_sdk/records/_resource.py b/argilla/src/argilla/records/_resource.py similarity index 98% rename from argilla-sdk/src/argilla_sdk/records/_resource.py rename to argilla/src/argilla/records/_resource.py index c8911a745f..4c20c463b6 100644 --- a/argilla-sdk/src/argilla_sdk/records/_resource.py +++ b/argilla/src/argilla/records/_resource.py @@ -16,7 +16,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union, Iterable from uuid import UUID, uuid4 -from argilla_sdk._models import ( +from argilla._models import ( MetadataModel, RecordModel, UserResponseModel, @@ -24,13 +24,13 @@ VectorModel, MetadataValue, ) -from argilla_sdk._resource import Resource -from argilla_sdk.responses import Response, UserResponse -from argilla_sdk.suggestions import Suggestion -from argilla_sdk.vectors import Vector +from argilla._resource import Resource +from argilla.responses import Response, UserResponse +from argilla.suggestions import Suggestion +from argilla.vectors import Vector if TYPE_CHECKING: - from argilla_sdk.datasets import Dataset + from argilla.datasets import Dataset class Record(Resource): diff --git a/argilla-sdk/src/argilla_sdk/records/_search.py b/argilla/src/argilla/records/_search.py similarity index 97% rename from argilla-sdk/src/argilla_sdk/records/_search.py rename to argilla/src/argilla/records/_search.py index fff81a6978..adc56b5750 100644 --- a/argilla-sdk/src/argilla_sdk/records/_search.py +++ b/argilla/src/argilla/records/_search.py @@ -14,8 +14,8 @@ from typing import Optional, List, Any, Union, Tuple -from argilla_sdk._models import SearchQueryModel -from argilla_sdk._models._search import ( +from argilla._models import SearchQueryModel +from argilla._models._search import ( TextQueryModel, ResponseFilterScopeModel, SuggestionFilterScopeModel, @@ -78,13 +78,13 @@ class Filter: def __init__(self, conditions: Union[List[Tuple[str, str, Any]], Tuple[str, str, Any], None] = None): """ Create a filter object for use in Argilla search requests. - + Parameters: conditions (Union[List[Tuple[str, str, Any]], Tuple[str, str, Any], None], optional): \ The conditions that will be used to filter the search results. \ The conditions should be a list of tuples where each tuple contains \ the field, operator, and value. For example `("label", "in", ["positive","happy"])`.\ - + """ if isinstance(conditions, tuple): diff --git a/argilla-sdk/src/argilla_sdk/responses.py b/argilla/src/argilla/responses.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/responses.py rename to argilla/src/argilla/responses.py index 592ddd6ceb..d27c1c0f5b 100644 --- a/argilla-sdk/src/argilla_sdk/responses.py +++ b/argilla/src/argilla/responses.py @@ -16,12 +16,12 @@ from typing import Any, TYPE_CHECKING, List, Dict, Optional, Iterable, Union from uuid import UUID -from argilla_sdk._models import UserResponseModel, ResponseStatus as ResponseStatusModel -from argilla_sdk._resource import Resource -from argilla_sdk.settings import RankingQuestion +from argilla._models import UserResponseModel, ResponseStatus as ResponseStatusModel +from argilla._resource import Resource +from argilla.settings import RankingQuestion if TYPE_CHECKING: - from argilla_sdk import Argilla, Dataset, Record + from argilla import Argilla, Dataset, Record __all__ = ["Response", "UserResponse", "ResponseStatus"] @@ -71,12 +71,12 @@ def __init__( def serialize(self) -> dict[str, Any]: """Serializes the Response to a dictionary. This is principally used for sending the response to the API, \ but can be used for data wrangling or manual export. - + Returns: dict[str, Any]: The serialized response as a dictionary with keys `question_name`, `value`, and `user_id`. - + Examples: - + ```python response = rg.Response("label", "negative", user_id=user.id) response.serialize() @@ -188,7 +188,7 @@ def _compute_status_from_answers(self, answers: List[Response]) -> ResponseStatu """Computes the status of the UserResponse from the responses""" statuses = set([answer.status for answer in answers if answer.status is not None]) if len(statuses) > 1: - warnings.warn(f"Multiple status found in user answers. Using {ResponseStatus.draft!r} as default.") + warnings.warn(f"Multiple status found in user answers. Using {ResponseStatus.draft.value!r} as default.") elif len(statuses) == 1: return ResponseStatusModel(next(iter(statuses))) return ResponseStatusModel.draft diff --git a/argilla-sdk/src/argilla_sdk/_exceptions/__init__.py b/argilla/src/argilla/settings/__init__.py similarity index 68% rename from argilla-sdk/src/argilla_sdk/_exceptions/__init__.py rename to argilla/src/argilla/settings/__init__.py index dafd682bba..af38765efc 100644 --- a/argilla-sdk/src/argilla_sdk/_exceptions/__init__.py +++ b/argilla/src/argilla/settings/__init__.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk._exceptions._api import * # noqa: F403 -from argilla_sdk._exceptions._metadata import * # noqa: F403 -from argilla_sdk._exceptions._serialization import * # noqa: F403 -from argilla_sdk._exceptions._settings import * # noqa: F403 +from argilla.settings._field import * # noqa: F403 +from argilla.settings._metadata import * # noqa: F403 +from argilla.settings._vector import * # noqa: F403 +from argilla.settings._question import * # noqa: F403 +from argilla.settings._resource import * # noqa: F403 diff --git a/argilla-sdk/src/argilla_sdk/settings/_common.py b/argilla/src/argilla/settings/_common.py similarity index 94% rename from argilla-sdk/src/argilla_sdk/settings/_common.py rename to argilla/src/argilla/settings/_common.py index 64e198cfc4..cee3ffcba0 100644 --- a/argilla-sdk/src/argilla_sdk/settings/_common.py +++ b/argilla/src/argilla/settings/_common.py @@ -14,8 +14,8 @@ from typing import Any, Optional, Union -from argilla_sdk._models import FieldModel, QuestionBaseModel -from argilla_sdk._resource import Resource +from argilla._models import FieldModel, QuestionBaseModel +from argilla._resource import Resource __all__ = ["SettingsPropertyBase"] diff --git a/argilla-sdk/src/argilla_sdk/settings/_field.py b/argilla/src/argilla/settings/_field.py similarity index 89% rename from argilla-sdk/src/argilla_sdk/settings/_field.py rename to argilla/src/argilla/settings/_field.py index c2c8544874..63a596bdcf 100644 --- a/argilla-sdk/src/argilla_sdk/settings/_field.py +++ b/argilla/src/argilla/settings/_field.py @@ -14,15 +14,15 @@ from typing import Optional, Union, TYPE_CHECKING -from argilla_sdk import Argilla -from argilla_sdk._api import FieldsAPI -from argilla_sdk._models import FieldModel, TextFieldSettings -from argilla_sdk.settings._common import SettingsPropertyBase -from argilla_sdk.settings._metadata import MetadataField, MetadataType -from argilla_sdk.settings._vector import VectorField +from argilla import Argilla +from argilla._api import FieldsAPI +from argilla._models import FieldModel, TextFieldSettings +from argilla.settings._common import SettingsPropertyBase +from argilla.settings._metadata import MetadataField, MetadataType +from argilla.settings._vector import VectorField if TYPE_CHECKING: - from argilla_sdk.datasets import Dataset + from argilla.datasets import Dataset __all__ = ["TextField"] diff --git a/argilla-sdk/src/argilla_sdk/settings/_metadata.py b/argilla/src/argilla/settings/_metadata.py similarity index 97% rename from argilla-sdk/src/argilla_sdk/settings/_metadata.py rename to argilla/src/argilla/settings/_metadata.py index 9c54376fb7..a2f3df58a8 100644 --- a/argilla-sdk/src/argilla_sdk/settings/_metadata.py +++ b/argilla/src/argilla/settings/_metadata.py @@ -14,20 +14,20 @@ from typing import Optional, Union, List, TYPE_CHECKING -from argilla_sdk._api._metadata import MetadataAPI -from argilla_sdk._exceptions import MetadataError -from argilla_sdk._models import ( +from argilla._api._metadata import MetadataAPI +from argilla._exceptions import MetadataError +from argilla._models import ( MetadataPropertyType, TermsMetadataPropertySettings, FloatMetadataPropertySettings, IntegerMetadataPropertySettings, MetadataFieldModel, ) -from argilla_sdk._resource import Resource -from argilla_sdk.client import Argilla +from argilla._resource import Resource +from argilla.client import Argilla if TYPE_CHECKING: - from argilla_sdk import Dataset + from argilla import Dataset __all__ = [ "TermsMetadataProperty", diff --git a/argilla-sdk/src/argilla_sdk/settings/_question.py b/argilla/src/argilla/settings/_question.py similarity index 98% rename from argilla-sdk/src/argilla_sdk/settings/_question.py rename to argilla/src/argilla/settings/_question.py index 8476b5f049..77592976c9 100644 --- a/argilla-sdk/src/argilla_sdk/settings/_question.py +++ b/argilla/src/argilla/settings/_question.py @@ -14,7 +14,7 @@ from typing import List, Literal, Optional, Union, Dict -from argilla_sdk._models._settings._questions import ( +from argilla._models._settings._questions import ( LabelQuestionModel, LabelQuestionSettings, MultiLabelQuestionModel, @@ -29,7 +29,7 @@ MultiLabelQuestionSettings, RankingQuestionSettings, ) -from argilla_sdk.settings._common import SettingsPropertyBase +from argilla.settings._common import SettingsPropertyBase __all__ = [ "LabelQuestion", @@ -87,10 +87,10 @@ def __init__( """ Define a new label question for `Settings` of a `Dataset`. A label \ question is a question where the user can select one label from \ a list of available labels. - + Parameters: name: str: The name of the question to be used as a reference. - labels: Union[List[str], Dict[str, str]]: The list of available labels for the question, + labels: Union[List[str], Dict[str, str]]: The list of available labels for the question, or a dictionary of key-value pairs where the key is the label and the value is the label text in the UI. title: Optional[str]: The title of the question to be shown in the UI. description: Optional[str]: The description of the question to be shown in the UI. @@ -159,7 +159,7 @@ def __init__( """Create a new multilabel question for `Settings` of a `Dataset`. A \ multilabel question is a question where the user can select multiple \ labels from a list of available labels. - + Parameters: name: str: The name of the question to be used as a reference. labels: List[str]: The list of available labels for the question. @@ -169,7 +169,7 @@ def __init__( description: Optional[str]: The description of the question to be shown in the UI. required: bool: If the question is required for a record to be valid. visible_labels: Optional[int]: The number of visible labels for the question. - labels_order: str: The order of the labels in the UI. Can be either "natural" or "suggestion". Default is "natural". + labels_order: str: The order of the labels in the UI. Can be either "natural" or "suggestion". Default is "natural". """ self._model = MultiLabelQuestionModel( name=name, @@ -213,7 +213,7 @@ def __init__( ) -> None: """Create a new text question for `Settings` of a `Dataset`. A text question \ is a question where the user can input text. - + Parameters: name: str: The name of the question to be used as a reference. title: Optional[str]: The title of the question to be shown in the UI. @@ -263,7 +263,7 @@ def __init__( ) -> None: """Create a new rating question for `Settings` of a `Dataset`. A rating question \ is a question where the user can select a value from a sequential list of options. - + Parameters: name: str: The name of the question to be used as a reference. values: List[int]: The list of available values for the question. @@ -314,7 +314,7 @@ def __init__( ) -> None: """Create a new ranking question for `Settings` of a `Dataset`. A ranking question \ is a question where the user can rank a list of options. - + Parameters: name: str: The name of the question to be used as a reference. values: List[str]: The list of available values for the question. @@ -368,7 +368,7 @@ def __init__( """ Create a new span question for `Settings` of a `Dataset`. A span question \ is a question where the user can select a section of text within a text field \ and assign it a label. - + Parameters: name: str: The name of the question to be used as a reference. field: str: The name of the text field to apply the span question to. diff --git a/argilla-sdk/src/argilla_sdk/settings/_resource.py b/argilla/src/argilla/settings/_resource.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/settings/_resource.py rename to argilla/src/argilla/settings/_resource.py index d62f16b4a1..7a6dc4ea86 100644 --- a/argilla-sdk/src/argilla_sdk/settings/_resource.py +++ b/argilla/src/argilla/settings/_resource.py @@ -19,16 +19,16 @@ from typing import List, Optional, TYPE_CHECKING, Dict, Union, Iterator, Sequence from uuid import UUID -from argilla_sdk._exceptions import SettingsError, ArgillaAPIError, ArgillaSerializeError -from argilla_sdk._models._dataset import DatasetModel -from argilla_sdk._resource import Resource -from argilla_sdk.settings._field import TextField -from argilla_sdk.settings._metadata import MetadataType, MetadataField -from argilla_sdk.settings._question import QuestionType, question_from_model, question_from_dict, QuestionPropertyBase -from argilla_sdk.settings._vector import VectorField +from argilla._exceptions import SettingsError, ArgillaAPIError, ArgillaSerializeError +from argilla._models._dataset import DatasetModel +from argilla._resource import Resource +from argilla.settings._field import TextField +from argilla.settings._metadata import MetadataType, MetadataField +from argilla.settings._question import QuestionType, question_from_model, question_from_dict, QuestionPropertyBase +from argilla.settings._vector import VectorField if TYPE_CHECKING: - from argilla_sdk.datasets import Dataset + from argilla.datasets import Dataset __all__ = ["Settings"] diff --git a/argilla-sdk/src/argilla_sdk/settings/_vector.py b/argilla/src/argilla/settings/_vector.py similarity index 92% rename from argilla-sdk/src/argilla_sdk/settings/_vector.py rename to argilla/src/argilla/settings/_vector.py index cc6a5727b6..cb9c8636f5 100644 --- a/argilla-sdk/src/argilla_sdk/settings/_vector.py +++ b/argilla/src/argilla/settings/_vector.py @@ -14,13 +14,13 @@ from typing import Optional, TYPE_CHECKING -from argilla_sdk._api._vectors import VectorsAPI -from argilla_sdk._models import VectorFieldModel -from argilla_sdk._resource import Resource -from argilla_sdk.client import Argilla +from argilla._api._vectors import VectorsAPI +from argilla._models import VectorFieldModel +from argilla._resource import Resource +from argilla.client import Argilla if TYPE_CHECKING: - from argilla_sdk import Dataset + from argilla import Dataset __all__ = ["VectorField"] diff --git a/argilla-sdk/src/argilla_sdk/suggestions.py b/argilla/src/argilla/suggestions.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/suggestions.py rename to argilla/src/argilla/suggestions.py index db9ec8c10d..bcffe3f2b3 100644 --- a/argilla-sdk/src/argilla_sdk/suggestions.py +++ b/argilla/src/argilla/suggestions.py @@ -14,12 +14,12 @@ from typing import Any, Optional, Literal, Union, List, TYPE_CHECKING, Dict from uuid import UUID -from argilla_sdk._models import SuggestionModel -from argilla_sdk._resource import Resource -from argilla_sdk.settings import RankingQuestion +from argilla._models import SuggestionModel +from argilla._resource import Resource +from argilla.settings import RankingQuestion if TYPE_CHECKING: - from argilla_sdk import QuestionType, Record, Dataset + from argilla import QuestionType, Record, Dataset __all__ = ["Suggestion"] diff --git a/argilla-sdk/src/argilla_sdk/users/__init__.py b/argilla/src/argilla/users/__init__.py similarity index 93% rename from argilla-sdk/src/argilla_sdk/users/__init__.py rename to argilla/src/argilla/users/__init__.py index c40fb8bce2..3a33cdc9ab 100644 --- a/argilla-sdk/src/argilla_sdk/users/__init__.py +++ b/argilla/src/argilla/users/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk.users._resource import User +from argilla.users._resource import User __all__ = ["User"] diff --git a/argilla-sdk/src/argilla_sdk/users/_resource.py b/argilla/src/argilla/users/_resource.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/users/_resource.py rename to argilla/src/argilla/users/_resource.py index e95835a380..6ebe6b074a 100644 --- a/argilla-sdk/src/argilla_sdk/users/_resource.py +++ b/argilla/src/argilla/users/_resource.py @@ -15,11 +15,11 @@ from typing import Optional from uuid import UUID -from argilla_sdk import Workspace -from argilla_sdk._api import UsersAPI -from argilla_sdk._models import Role, UserModel -from argilla_sdk._resource import Resource -from argilla_sdk.client import Argilla +from argilla import Workspace +from argilla._api import UsersAPI +from argilla._models import UserModel, Role +from argilla._resource import Resource +from argilla.client import Argilla class User(Resource): diff --git a/argilla-sdk/tests/unit/conftest.py b/argilla/src/argilla/v1/__init__.py similarity index 66% rename from argilla-sdk/tests/unit/conftest.py rename to argilla/src/argilla/v1/__init__.py index e27f091979..75284d237e 100644 --- a/argilla-sdk/tests/unit/conftest.py +++ b/argilla/src/argilla/v1/__init__.py @@ -12,10 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. +import warnings -# @pytest.fixture(scope="function", autouse=True) -# def mock_httpx_client(mocker) -> Generator[httpx.Client, None, None]: -# mock_client = mocker.Mock(httpx.Client) -# argilla_sdk.DEFAULT_HTTP_CLIENT = mock_client +from argilla_v1 import * # noqa -# return mock_client + +def deprecation(message: str): + warnings.warn(message, DeprecationWarning, stacklevel=2) + + +deprecation( + "The module `argilla_sdk.v1` has been include for migration purposes. " + "It's deprecated and will be removed in the future" +) diff --git a/argilla-sdk/src/argilla_sdk/vectors.py b/argilla/src/argilla/vectors.py similarity index 96% rename from argilla-sdk/src/argilla_sdk/vectors.py rename to argilla/src/argilla/vectors.py index 17f83b7ebd..8e0e9003b1 100644 --- a/argilla-sdk/src/argilla_sdk/vectors.py +++ b/argilla/src/argilla/vectors.py @@ -14,8 +14,8 @@ from typing import Any -from argilla_sdk._models import VectorModel -from argilla_sdk._resource import Resource +from argilla._models import VectorModel +from argilla._resource import Resource __all__ = ["Vector"] diff --git a/argilla-sdk/src/argilla_sdk/workspaces/__init__.py b/argilla/src/argilla/workspaces/__init__.py similarity index 91% rename from argilla-sdk/src/argilla_sdk/workspaces/__init__.py rename to argilla/src/argilla/workspaces/__init__.py index f833ea9e96..4bd9a9f135 100644 --- a/argilla-sdk/src/argilla_sdk/workspaces/__init__.py +++ b/argilla/src/argilla/workspaces/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk.workspaces._resource import Workspace +from argilla.workspaces._resource import Workspace __all__ = ["Workspace"] diff --git a/argilla-sdk/src/argilla_sdk/workspaces/_resource.py b/argilla/src/argilla/workspaces/_resource.py similarity index 91% rename from argilla-sdk/src/argilla_sdk/workspaces/_resource.py rename to argilla/src/argilla/workspaces/_resource.py index 1870bec715..8a1b6b3a3e 100644 --- a/argilla-sdk/src/argilla_sdk/workspaces/_resource.py +++ b/argilla/src/argilla/workspaces/_resource.py @@ -15,15 +15,15 @@ from typing import List, TYPE_CHECKING, Optional, overload, Union, Sequence from uuid import UUID -from argilla_sdk._api._workspaces import WorkspacesAPI -from argilla_sdk._helpers import GenericIterator -from argilla_sdk._helpers import LoggingMixin -from argilla_sdk._models import WorkspaceModel -from argilla_sdk._resource import Resource -from argilla_sdk.client import Argilla +from argilla._api._workspaces import WorkspacesAPI +from argilla._helpers import GenericIterator +from argilla._helpers import LoggingMixin +from argilla._models import WorkspaceModel +from argilla._resource import Resource +from argilla.client import Argilla if TYPE_CHECKING: - from argilla_sdk import Dataset, User + from argilla import Dataset, User class Workspace(Resource): @@ -97,7 +97,7 @@ def remove_user(self, user: Union["User", str]) -> "User": # TODO: Make this method private def list_datasets(self) -> List["Dataset"]: - from argilla_sdk.datasets import Dataset + from argilla.datasets import Dataset datasets = self._client.api.datasets.list(self.id) self._log_message(f"Got {len(datasets)} datasets for workspace {self.id}") @@ -147,12 +147,10 @@ def __init__(self, workspace: "Workspace") -> None: self._workspace = workspace @overload - def add(self, user: "User") -> "User": - ... + def add(self, user: "User") -> "User": ... @overload - def add(self, user: str) -> "User": - ... + def add(self, user: str) -> "User": ... def add(self, user: Union["User", str]) -> "User": if isinstance(user, str): @@ -160,12 +158,10 @@ def add(self, user: Union["User", str]) -> "User": return user.add_to_workspace(workspace=self._workspace) @overload - def delete(self, user: "User") -> "User": - ... + def delete(self, user: "User") -> "User": ... @overload - def delete(self, user: str) -> "User": - ... + def delete(self, user: str) -> "User": ... def delete(self, user: Union["User", str]) -> "User": if isinstance(user, str): diff --git a/argilla/tests/integration/conftest.py b/argilla/tests/integration/conftest.py index b2e43961bf..2ffd41290b 100644 --- a/argilla/tests/integration/conftest.py +++ b/argilla/tests/integration/conftest.py @@ -1,399 +1,36 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Argilla, Inc. # -# 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 +# 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 +# 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. -import asyncio -import contextlib -import tempfile -import uuid -from typing import TYPE_CHECKING, AsyncGenerator, Dict, Generator +# 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. -import httpx import pytest -import pytest_asyncio -from argilla._constants import API_KEY_HEADER_NAME, DEFAULT_API_KEY -from argilla.client.api import log -from argilla.client.apis.datasets import TextClassificationSettings -from argilla.client.client import Argilla, AuthenticatedClient -from argilla.client.datasets import read_datasets -from argilla.client.models import Text2TextRecord, TextClassificationRecord -from argilla.client.sdk.users import api as users_api -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, - UserFactory, - WorkspaceFactory, -) -from tests.integration.utils import delete_ignoring_errors -from tests.pydantic_v1 import BaseModel - -from ..database import SyncTestSession, TestSession, set_task -from .helpers import SecuredClient - -if TYPE_CHECKING: - from unittest.mock import MagicMock - - from pytest_mock import MockerFixture - from sqlalchemy import Connection - from sqlalchemy.ext.asyncio import AsyncConnection - from sqlalchemy.orm import Session +import argilla as rg @pytest.fixture(scope="session") -def event_loop() -> Generator["asyncio.AbstractEventLoop", None, None]: - loop = asyncio.get_event_loop_policy().get_event_loop() - yield loop - loop.close() - - -@pytest.fixture(scope="session") -def database_url_for_tests() -> Generator[str, None, None]: - with tempfile.TemporaryDirectory() as tmpdir: - settings.database_url = f"sqlite+aiosqlite:///{tmpdir}/test.db?check_same_thread=False" - yield settings.database_url - - -@pytest_asyncio.fixture(scope="session") -async def connection(database_url_for_tests: str) -> AsyncGenerator["AsyncConnection", None]: - set_task(asyncio.current_task()) - # Create a temp directory to store a SQLite database used for testing - - engine = create_async_engine(database_url_for_tests) - conn = await engine.connect() - TestSession.configure(bind=conn) - migrate_db("head") - - yield conn - - migrate_db("base") - await conn.close() - await engine.dispose() - - -@pytest_asyncio.fixture(autouse=True) -async def db(connection: "AsyncConnection") -> AsyncGenerator["AsyncSession", None]: - await connection.begin_nested() - session = TestSession() - - yield session - - await session.close() - await TestSession.remove() - await connection.rollback() - - -@pytest.fixture -def sync_connection(database_url_for_tests: str) -> Generator["Connection", None, None]: - engine = create_engine(database_url_for_tests) - conn = engine.connect() - SyncTestSession.configure(bind=conn) - migrate_db("head") - - yield conn - - migrate_db("base") - conn.close() - engine.dispose() - - -@pytest.fixture -def sync_db(sync_connection: "Connection") -> Generator["Session", None, None]: - session = SyncTestSession() - - yield session - - session.close() - SyncTestSession.remove() - sync_connection.rollback() - - -@pytest.fixture(scope="function") -def client(request, mocker: "MockerFixture") -> Generator[TestClient, None, None]: - from argilla_server import app - from argilla_server.apis.routes import api_v0, api_v1 - - async def override_get_async_db(): - session = TestSession() - yield session - - mocker.patch("argilla_server._app._get_db_wrapper", wraps=contextlib.asynccontextmanager(override_get_async_db)) - # Here, we need to override the dependency for both versions of the API. This behavior changed from pull request #28 - # https://github.com/argilla-io/argilla-server/pull/28/files#diff-0cae8a7ee2d37098b1ad84b543d17cfc1e8535eed5fd6abac88c668bfe354cbbR98 - for api_app in [api_v0, api_v1]: - api_app.dependency_overrides[get_async_db] = override_get_async_db - - raise_server_exceptions = request.param if hasattr(request, "param") else False - with TestClient(app, raise_server_exceptions=raise_server_exceptions) as client: - yield client - - app.dependency_overrides.clear() - - -@pytest.fixture(scope="session") -def elasticsearch_config(): - return {"hosts": settings.elasticsearch} - - -@pytest_asyncio.fixture(scope="function") -async def owner() -> User: - return await OwnerFactory.create(first_name="Owner", username="owner", api_key="owner.apikey") - - -@pytest_asyncio.fixture(scope="function") -async def annotator() -> User: - return await AnnotatorFactory.create(first_name="Annotator", username="annotator", api_key="annotator.apikey") - - -@pytest_asyncio.fixture(scope="function") -async def mock_user() -> User: - workspace_a = await WorkspaceFactory.create(name="workspace-a") - workspace_b = await WorkspaceFactory.create(name="workspace-b") - return await UserFactory.create( - first_name="Mock", - username="mock-user", - password_hash="$2y$05$eaw.j2Kaw8s8vpscVIZMfuqSIX3OLmxA21WjtWicDdn0losQ91Hw.", - api_key="mock-user.apikey", - workspaces=[workspace_a, workspace_b], - ) - - -@pytest.fixture(scope="function") -def owner_auth_header(owner: User) -> Dict[str, str]: - return {API_KEY_HEADER_NAME: owner.api_key} - - -@pytest_asyncio.fixture(scope="function") -async def argilla_user() -> Generator[User, None, None]: - user = await UserFactory.create( - first_name="Argilla", - username="argilla", - role=UserRole.owner, - password_hash="$2y$05$eaw.j2Kaw8s8vpscVIZMfuqSIX3OLmxA21WjtWicDdn0losQ91Hw.", - api_key=DEFAULT_API_KEY, - workspaces=[Workspace(name="argilla")], - ) - yield user - ArgillaSingleton.clear() - - -@pytest.fixture(scope="function") -def argilla_auth_header(argilla_user: User) -> Dict[str, str]: - return {API_KEY_HEADER_NAME: argilla_user.api_key} - - -@pytest.fixture(autouse=True) -def server_telemetry_client(mocker: "MockerFixture") -> "MagicMock": - mock_telemetry = mocker.Mock(server_telemetry.TelemetryClient) - mock_telemetry.server_id = uuid.uuid4() - - server_telemetry._CLIENT = mock_telemetry - return server_telemetry._CLIENT - - -@pytest.fixture(autouse=True) -def client_telemetry_client(mocker: "MockerFixture") -> "MagicMock": - mock_telemetry = mocker.Mock(client_telemetry.TelemetryClient) - mock_telemetry.machine_id = uuid.uuid4() +def client() -> rg.Argilla: + client = rg.Argilla() + yield client - client_telemetry._CLIENT = mock_telemetry - return client_telemetry._CLIENT - -@pytest.mark.parametrize("client", [True], indirect=True) @pytest.fixture(autouse=True) -def using_test_client_from_argilla_python_client( - monkeypatch, server_telemetry_client, client_telemetry_client, client: "TestClient" -): - real_whoami = users_api.whoami - - def whoami_mocked(*args, **kwargs): - client_arg = args[-1] if args else kwargs["client"] - - monkeypatch.setattr(client_arg, "__httpx__", client) - client.headers.update(client_arg.get_headers()) - - return real_whoami(client_arg) - - monkeypatch.setattr(users_api, "whoami", whoami_mocked) - - monkeypatch.setattr(httpx, "post", client.post) - monkeypatch.setattr(httpx, "patch", client.patch) - monkeypatch.setattr(httpx, "get", client.get) - monkeypatch.setattr(httpx, "delete", client.delete) - monkeypatch.setattr(httpx, "put", client.put) - monkeypatch.setattr(httpx, "stream", client.stream) - - -@pytest.fixture -def api(argilla_user: User) -> Argilla: - return Argilla(api_key=argilla_user.api_key, workspace=argilla_user.username) - - -@pytest.fixture -def mocked_client( - monkeypatch, using_test_client_from_argilla_python_client, argilla_user: User, client: "TestClient" -) -> SecuredClient: - client_ = SecuredClient(client, argilla_user) - - real_whoami = users_api.whoami - - def whoami_mocked(client: AuthenticatedClient): - monkeypatch.setattr(client, "__httpx__", client_) - return real_whoami(client) - - monkeypatch.setattr(users_api, "whoami", whoami_mocked) - - monkeypatch.setattr(httpx, "post", client_.post) - monkeypatch.setattr(httpx, "patch", client_.patch) - monkeypatch.setattr(httpx, "get", client_.get) - monkeypatch.setattr(httpx, "delete", client_.delete) - monkeypatch.setattr(httpx, "put", client_.put) - - from argilla.client.singleton import active_api - - rb_api = active_api() - monkeypatch.setattr(rb_api.http_client, "__httpx__", client_) - - return client_ - - -@pytest.fixture -def dataset_token_classification(mocked_client: SecuredClient) -> str: - from datasets import load_dataset - - dataset = "gutenberg_spacy_ner" - - dataset_ds = load_dataset( - "argilla/gutenberg_spacy-ner", - split="train[:3]", - # This revision does not includes the vectors info, so tests will pass - revision="fff5f572e4cc3127f196f46ba3f9914c6fd0d763", - ) - - dataset_rb = read_datasets(dataset_ds, task="TokenClassification") - # Set annotations, required for training tests - for rec in dataset_rb: - # Strip off "score" - rec.annotation = [prediction[:3] for prediction in rec.prediction] - rec.annotation_agent = rec.prediction_agent - rec.prediction = [] - rec.prediction_agent = None - - delete_ignoring_errors(dataset) - log(name=dataset, records=dataset_rb) - - return dataset - - -@pytest.fixture -def dataset_text_classification(mocked_client: SecuredClient) -> str: - from datasets import load_dataset - - dataset = "banking_sentiment_setfit" - - dataset_ds = load_dataset( - f"argilla/{dataset}", - split="train[:3]", - ) - dataset_rb = [TextClassificationRecord(text=rec["text"], annotation=rec["label"]) for rec in dataset_ds] - labels = set([rec.annotation for rec in dataset_rb]) - configure_dataset(dataset, settings=TextClassificationSettings(label_schema=labels)) - - delete_ignoring_errors(dataset) - log(name=dataset, records=dataset_rb) - - return dataset - - -@pytest.fixture -def dataset_text_classification_multi_label(mocked_client: SecuredClient) -> str: - from datasets import load_dataset - - dataset = "research_titles_multi_label" - - dataset_ds = load_dataset("argilla/research_titles_multi-label", split="train[:50]") - - dataset_rb = read_datasets(dataset_ds, task="TextClassification") - - dataset_rb = [rec for rec in dataset_rb if rec.annotation] - - delete_ignoring_errors(dataset) - log(name=dataset, records=dataset_rb) - - return dataset - - -@pytest.fixture -def dataset_text2text(mocked_client: SecuredClient) -> str: - from datasets import load_dataset - - dataset = "news_summary" - - dataset_ds = load_dataset("argilla/news-summary", split="train[:3]") - - records = [] - for entry in dataset_ds: - records.append(Text2TextRecord(text=entry["text"], annotation=entry["prediction"][0]["text"])) - - delete_ignoring_errors(dataset) - log(name=dataset, records=records) - - return dataset - - -class _MockResponse(BaseModel): - id: str = "1234" - - -@pytest.fixture -def mocked_openai(mocker): - # Mock the requests to OpenAI APIs - response = _MockResponse() - mocker.patch("openai.FineTune.retrieve", return_value=response) - mocker.patch("openai.FineTuningJob.retrieve", return_value=response) - mocker.patch("openai.Model.retrieve", return_value=response) - mocker.patch("openai.FineTuningJob.create", return_value=response) - mocker.patch("openai.FineTune.create", return_value=response) - mocker.patch("openai.File.create", return_value=response) - - -@pytest.fixture -def mocked_trainer_push_to_huggingface(mocker: "MockerFixture"): - # Mock the push_to_huggingface methods for the different trainers, - # most of the functionality is already tested by the frameworks itself. - # For transformers' model and tokenizer - mocker.patch("transformers.PreTrainedModel.push_to_hub", return_value="model_url") - mocker.patch("transformers.PreTrainedTokenizer.push_to_hub", return_value="model_url") - # For setfit - mocker.patch("setfit.trainer.SetFitTrainer.push_to_hub", return_value="model_url") - # For peft - mocker.patch("peft.PeftModel.push_to_hub", return_value="model_url") - mocker.patch("transformers.PreTrainedTokenizerBase.push_to_hub", return_value="model_url") - # For spacy and spacy-transformers - mocker.patch("spacy_huggingface_hub.push", return_value={"url": "model_url"}) - # For trl - mocker.patch("trl.trainer.sft_trainer.SFTTrainer.push_to_hub", return_value="model_url") - mocker.patch("trl.trainer.reward_trainer.RewardTrainer.push_to_hub", return_value="model_url") - mocker.patch("trl.trainer.base.BaseTrainer.push_to_hub", return_value="model_url") - mocker.patch("trl.trainer.dpo_trainer.DPOTrainer.push_to_hub", return_value="model_url") +def cleanup(client: rg.Argilla): + for workspace in client.workspaces: + if workspace.name.startswith("test_"): + for dataset in workspace.datasets: + dataset.delete() + workspace.delete() + + for user in client.users: + if user.username.startswith("test_"): + user.delete() diff --git a/argilla-sdk/tests/integration/test_add_records.py b/argilla/tests/integration/test_add_records.py similarity index 99% rename from argilla-sdk/tests/integration/test_add_records.py rename to argilla/tests/integration/test_add_records.py index c1e164372c..d6c64b8c85 100644 --- a/argilla-sdk/tests/integration/test_add_records.py +++ b/argilla/tests/integration/test_add_records.py @@ -16,8 +16,9 @@ import uuid from datetime import datetime -import argilla_sdk as rg -from argilla_sdk import Argilla + +import argilla as rg +from argilla import Argilla def test_create_dataset(client): diff --git a/argilla-sdk/tests/integration/test_create_datasets.py b/argilla/tests/integration/test_create_datasets.py similarity index 97% rename from argilla-sdk/tests/integration/test_create_datasets.py rename to argilla/tests/integration/test_create_datasets.py index 160f602bb6..5ea3850c41 100644 --- a/argilla-sdk/tests/integration/test_create_datasets.py +++ b/argilla/tests/integration/test_create_datasets.py @@ -15,7 +15,7 @@ import pytest -from argilla_sdk import Argilla, Dataset, Settings, TextField, RatingQuestion +from argilla import Argilla, Dataset, Settings, TextField, RatingQuestion @pytest.fixture(scope="session", autouse=True) diff --git a/argilla-sdk/tests/integration/test_dataset_workspace.py b/argilla/tests/integration/test_dataset_workspace.py similarity index 98% rename from argilla-sdk/tests/integration/test_dataset_workspace.py rename to argilla/tests/integration/test_dataset_workspace.py index 3faad1e57a..50eb5f7b7f 100644 --- a/argilla-sdk/tests/integration/test_dataset_workspace.py +++ b/argilla/tests/integration/test_dataset_workspace.py @@ -16,8 +16,8 @@ import pytest -import argilla_sdk as rg -from argilla_sdk._exceptions import NotFoundError +import argilla as rg +from argilla._exceptions import NotFoundError @pytest.fixture(autouse=True, scope="session") diff --git a/argilla-sdk/tests/integration/test_delete_records.py b/argilla/tests/integration/test_delete_records.py similarity index 99% rename from argilla-sdk/tests/integration/test_delete_records.py rename to argilla/tests/integration/test_delete_records.py index 7b4dd3a661..768c67e53c 100644 --- a/argilla-sdk/tests/integration/test_delete_records.py +++ b/argilla/tests/integration/test_delete_records.py @@ -15,7 +15,7 @@ import uuid import pytest -import argilla_sdk as rg +import argilla as rg @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_empty_settings.py b/argilla/tests/integration/test_empty_settings.py similarity index 94% rename from argilla-sdk/tests/integration/test_empty_settings.py rename to argilla/tests/integration/test_empty_settings.py index 3b1305a68c..874cb300c1 100644 --- a/argilla-sdk/tests/integration/test_empty_settings.py +++ b/argilla/tests/integration/test_empty_settings.py @@ -17,8 +17,8 @@ import pytest -from argilla_sdk import Argilla, Dataset, Settings, Workspace, TextQuestion, TextField -from argilla_sdk._exceptions import SettingsError +from argilla import Argilla, Dataset, Settings, Workspace, TextQuestion, TextField +from argilla._exceptions import SettingsError @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_export_dataset.py b/argilla/tests/integration/test_export_dataset.py similarity index 99% rename from argilla-sdk/tests/integration/test_export_dataset.py rename to argilla/tests/integration/test_export_dataset.py index b57158ac65..a2f81c4024 100644 --- a/argilla-sdk/tests/integration/test_export_dataset.py +++ b/argilla/tests/integration/test_export_dataset.py @@ -21,7 +21,7 @@ import pytest -import argilla_sdk as rg +import argilla as rg @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_export_records.py b/argilla/tests/integration/test_export_records.py similarity index 88% rename from argilla-sdk/tests/integration/test_export_records.py rename to argilla/tests/integration/test_export_records.py index 06e4a3bfda..3465d7e64b 100644 --- a/argilla-sdk/tests/integration/test_export_records.py +++ b/argilla/tests/integration/test_export_records.py @@ -22,8 +22,8 @@ import pytest from datasets import Dataset as HFDataset -import argilla_sdk as rg -from argilla_sdk import Argilla +import argilla as rg +from argilla import Argilla @pytest.fixture @@ -105,6 +105,37 @@ def test_export_records_list_flattened(client: Argilla, dataset: rg.Dataset): assert exported_records[0]["label.suggestion.score"] is None +def test_export_record_list_with_filtered_records(client: Argilla, dataset: rg.Dataset): + mock_data = [ + { + "text": "Hello World, how are you?", + "label": "positive", + "id": uuid.uuid4(), + }, + { + "text": "Hello World, how are you?", + "label": "negative", + "id": uuid.uuid4(), + }, + { + "text": "Hello World, how are you?", + "label": "positive", + "id": uuid.uuid4(), + }, + ] + dataset.records.log(records=mock_data) + exported_records = dataset.records(query=rg.Query(query="hello")).to_list(flatten=True) + assert len(exported_records) == len(mock_data) + assert isinstance(exported_records, list) + assert isinstance(exported_records[0], dict) + assert isinstance(exported_records[0]["id"], str) + assert isinstance(exported_records[0]["text"], str) + assert isinstance(exported_records[0]["label.suggestion"], str) + assert exported_records[0]["text"] == "Hello World, how are you?" + assert exported_records[0]["label.suggestion"] == "positive" + assert exported_records[0]["label.suggestion.score"] is None + + def test_export_records_list_nested(client: Argilla, dataset: rg.Dataset): mock_data = [ { diff --git a/argilla-sdk/tests/integration/test_list_records.py b/argilla/tests/integration/test_list_records.py similarity index 96% rename from argilla-sdk/tests/integration/test_list_records.py rename to argilla/tests/integration/test_list_records.py index ec771feb73..19d956649a 100644 --- a/argilla-sdk/tests/integration/test_list_records.py +++ b/argilla/tests/integration/test_list_records.py @@ -17,7 +17,7 @@ import pytest -from argilla_sdk import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, LabelQuestion +from argilla import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, LabelQuestion @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_listing_datasets.py b/argilla/tests/integration/test_listing_datasets.py similarity index 93% rename from argilla-sdk/tests/integration/test_listing_datasets.py rename to argilla/tests/integration/test_listing_datasets.py index 18376c9d03..c228968405 100644 --- a/argilla-sdk/tests/integration/test_listing_datasets.py +++ b/argilla/tests/integration/test_listing_datasets.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace +from argilla import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace class TestDatasetsList: diff --git a/argilla-sdk/tests/integration/test_manage_users.py b/argilla/tests/integration/test_manage_users.py similarity index 95% rename from argilla-sdk/tests/integration/test_manage_users.py rename to argilla/tests/integration/test_manage_users.py index 414a772aae..312a949d1f 100644 --- a/argilla-sdk/tests/integration/test_manage_users.py +++ b/argilla/tests/integration/test_manage_users.py @@ -13,8 +13,9 @@ # limitations under the License. import pytest -from argilla_sdk import Argilla, User -from argilla_sdk._exceptions import UnprocessableEntityError + +from argilla import User, Argilla +from argilla._exceptions import UnprocessableEntityError @pytest.fixture(scope="session", autouse=True) diff --git a/argilla-sdk/tests/integration/test_manage_workspaces.py b/argilla/tests/integration/test_manage_workspaces.py similarity index 97% rename from argilla-sdk/tests/integration/test_manage_workspaces.py rename to argilla/tests/integration/test_manage_workspaces.py index 7f9989577e..3db4523c7e 100644 --- a/argilla-sdk/tests/integration/test_manage_workspaces.py +++ b/argilla/tests/integration/test_manage_workspaces.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_sdk import Argilla, Workspace +from argilla import Argilla, Workspace class TestWorkspacesManagement: diff --git a/argilla-sdk/tests/integration/test_metadata.py b/argilla/tests/integration/test_metadata.py similarity index 97% rename from argilla-sdk/tests/integration/test_metadata.py rename to argilla/tests/integration/test_metadata.py index 8c92baabe5..bfe07ef688 100644 --- a/argilla-sdk/tests/integration/test_metadata.py +++ b/argilla/tests/integration/test_metadata.py @@ -17,8 +17,8 @@ import pytest -import argilla_sdk as rg -from argilla_sdk import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion +import argilla as rg +from argilla import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_publish_datasets.py b/argilla/tests/integration/test_publish_datasets.py similarity index 99% rename from argilla-sdk/tests/integration/test_publish_datasets.py rename to argilla/tests/integration/test_publish_datasets.py index de4fa524db..30e1f4a1b9 100644 --- a/argilla-sdk/tests/integration/test_publish_datasets.py +++ b/argilla/tests/integration/test_publish_datasets.py @@ -13,7 +13,7 @@ # limitations under the License. -from argilla_sdk import ( +from argilla import ( Argilla, Settings, TextField, diff --git a/argilla-sdk/tests/integration/test_query_records.py b/argilla/tests/integration/test_query_records.py similarity index 96% rename from argilla-sdk/tests/integration/test_query_records.py rename to argilla/tests/integration/test_query_records.py index b708f90bc1..6e8ce13448 100644 --- a/argilla-sdk/tests/integration/test_query_records.py +++ b/argilla/tests/integration/test_query_records.py @@ -17,8 +17,8 @@ import pytest -import argilla_sdk as rg -from argilla_sdk import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion +import argilla as rg +from argilla import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_ranking_questions.py b/argilla/tests/integration/test_ranking_questions.py similarity index 98% rename from argilla-sdk/tests/integration/test_ranking_questions.py rename to argilla/tests/integration/test_ranking_questions.py index 13a27467df..7e309be845 100644 --- a/argilla-sdk/tests/integration/test_ranking_questions.py +++ b/argilla/tests/integration/test_ranking_questions.py @@ -16,7 +16,7 @@ import pytest -import argilla_sdk as rg +import argilla as rg @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_update_dataset_settings.py b/argilla/tests/integration/test_update_dataset_settings.py similarity index 94% rename from argilla-sdk/tests/integration/test_update_dataset_settings.py rename to argilla/tests/integration/test_update_dataset_settings.py index 0be6aa6ca5..173c4d5f1e 100644 --- a/argilla-sdk/tests/integration/test_update_dataset_settings.py +++ b/argilla/tests/integration/test_update_dataset_settings.py @@ -16,7 +16,7 @@ import pytest -from argilla_sdk import Dataset, Settings, TextField, LabelQuestion, Argilla, VectorField, FloatMetadataProperty +from argilla import Dataset, Settings, TextField, LabelQuestion, Argilla, VectorField, FloatMetadataProperty @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_update_records.py b/argilla/tests/integration/test_update_records.py similarity index 97% rename from argilla-sdk/tests/integration/test_update_records.py rename to argilla/tests/integration/test_update_records.py index 4a8dc0f9d2..19c706ad18 100644 --- a/argilla-sdk/tests/integration/test_update_records.py +++ b/argilla/tests/integration/test_update_records.py @@ -18,9 +18,9 @@ import pytest -import argilla_sdk as rg -from argilla_sdk import Record -from argilla_sdk._models import RecordModel +import argilla as rg +from argilla import Record +from argilla._models import RecordModel @pytest.fixture diff --git a/argilla-sdk/tests/integration/test_vectors.py b/argilla/tests/integration/test_vectors.py similarity index 99% rename from argilla-sdk/tests/integration/test_vectors.py rename to argilla/tests/integration/test_vectors.py index 856057a924..e9edb49a1d 100644 --- a/argilla-sdk/tests/integration/test_vectors.py +++ b/argilla/tests/integration/test_vectors.py @@ -18,7 +18,7 @@ import pytest -import argilla_sdk as rg +import argilla as rg @pytest.fixture diff --git a/argilla-sdk/tests/unit/api/http/test_http_client.py b/argilla/tests/unit/api/http/test_http_client.py similarity index 98% rename from argilla-sdk/tests/unit/api/http/test_http_client.py rename to argilla/tests/unit/api/http/test_http_client.py index 3a65d710a7..8be069c085 100644 --- a/argilla-sdk/tests/unit/api/http/test_http_client.py +++ b/argilla/tests/unit/api/http/test_http_client.py @@ -14,7 +14,7 @@ from httpx import Timeout -from argilla_sdk import Argilla +from argilla import Argilla class TestHTTPClient: diff --git a/argilla/tests/unit/conftest.py b/argilla/tests/unit/conftest.py index f30db8287e..0dd05ae768 100644 --- a/argilla/tests/unit/conftest.py +++ b/argilla/tests/unit/conftest.py @@ -1,34 +1,21 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Argilla, Inc. # -# 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 +# 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 +# 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. +# 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. -import asyncio -from typing import TYPE_CHECKING, Generator -import httpx -import pytest +# @pytest.fixture(scope="function", autouse=True) +# def mock_httpx_client(mocker) -> Generator[httpx.Client, None, None]: +# mock_client = mocker.Mock(httpx.Client) +# argilla.DEFAULT_HTTP_CLIENT = mock_client -if TYPE_CHECKING: - pass - - -@pytest.fixture(scope="session") -def event_loop() -> Generator["asyncio.AbstractEventLoop", None, None]: - loop = asyncio.get_event_loop_policy().get_event_loop() - yield loop - loop.close() - - -@pytest.fixture(scope="function") -def mock_httpx_client(mocker) -> Generator[httpx.Client, None, None]: - return mocker.Mock(httpx.Client) +# return mock_client diff --git a/argilla-sdk/tests/unit/export/test_record_export_import_compatibillity.py b/argilla/tests/unit/export/test_record_export_import_compatibillity.py similarity index 96% rename from argilla-sdk/tests/unit/export/test_record_export_import_compatibillity.py rename to argilla/tests/unit/export/test_record_export_import_compatibillity.py index 5c9c93f89d..7018dc502f 100644 --- a/argilla-sdk/tests/unit/export/test_record_export_import_compatibillity.py +++ b/argilla/tests/unit/export/test_record_export_import_compatibillity.py @@ -17,8 +17,8 @@ import pytest -import argilla_sdk as rg -from argilla_sdk.records._resource import Record +import argilla as rg +from argilla.records._resource import Record @pytest.fixture diff --git a/argilla-sdk/tests/unit/export/test_settings_export_import_compatibillity.py b/argilla/tests/unit/export/test_settings_export_import_compatibillity.py similarity index 99% rename from argilla-sdk/tests/unit/export/test_settings_export_import_compatibillity.py rename to argilla/tests/unit/export/test_settings_export_import_compatibillity.py index 69617a003c..fbd8be20f8 100644 --- a/argilla-sdk/tests/unit/export/test_settings_export_import_compatibillity.py +++ b/argilla/tests/unit/export/test_settings_export_import_compatibillity.py @@ -20,7 +20,7 @@ import httpx from pytest_httpx import HTTPXMock -import argilla_sdk as rg +import argilla as rg @pytest.fixture diff --git a/argilla-sdk/tests/unit/helpers/test_resource_repr.py b/argilla/tests/unit/helpers/test_resource_repr.py similarity index 93% rename from argilla-sdk/tests/unit/helpers/test_resource_repr.py rename to argilla/tests/unit/helpers/test_resource_repr.py index 82659678c4..e6bdcbd5fe 100644 --- a/argilla-sdk/tests/unit/helpers/test_resource_repr.py +++ b/argilla/tests/unit/helpers/test_resource_repr.py @@ -14,9 +14,9 @@ import uuid -import argilla_sdk as rg -from argilla_sdk._helpers._resource_repr import ResourceHTMLReprMixin -from argilla_sdk._models import DatasetModel +import argilla as rg +from argilla._helpers._resource_repr import ResourceHTMLReprMixin +from argilla._models import DatasetModel class TestResourceHTMLReprMixin: diff --git a/argilla-sdk/tests/unit/test_interface.py b/argilla/tests/unit/test_interface.py similarity index 89% rename from argilla-sdk/tests/unit/test_interface.py rename to argilla/tests/unit/test_interface.py index 41066b67fc..85c72faa63 100644 --- a/argilla-sdk/tests/unit/test_interface.py +++ b/argilla/tests/unit/test_interface.py @@ -14,12 +14,12 @@ from unittest import mock -import argilla_sdk as rg +import argilla as rg class TestArgilla: def test_default_client(self): - with mock.patch("argilla_sdk.Argilla") as mock_client: + with mock.patch("argilla.Argilla") as mock_client: mock_client.return_value.api_url = "http://localhost:6900" mock_client.return_value.api_key = "admin.apikey" mock_client.return_value.workspace = "argilla" @@ -29,7 +29,7 @@ def test_default_client(self): assert client.api_key == "admin.apikey" def test_multiple_clients(self): - with mock.patch("argilla_sdk.client._api.APIClient.http_client"): + with mock.patch("argilla.client._api.APIClient.http_client"): local_client = rg.Argilla(api_url="http://localhost:6900", api_key="admin.apikey") remote_client = rg.Argilla(api_url="http://argilla.production.net", api_key="admin.apikey") assert local_client.api_url == "http://localhost:6900" diff --git a/argilla-sdk/tests/unit/test_record_ingestion.py b/argilla/tests/unit/test_record_ingestion.py similarity index 99% rename from argilla-sdk/tests/unit/test_record_ingestion.py rename to argilla/tests/unit/test_record_ingestion.py index 54c41d06fe..fb7167f66c 100644 --- a/argilla-sdk/tests/unit/test_record_ingestion.py +++ b/argilla/tests/unit/test_record_ingestion.py @@ -16,7 +16,7 @@ import pytest -import argilla_sdk as rg +import argilla as rg @pytest.fixture diff --git a/argilla-sdk/tests/unit/test_record_responses.py b/argilla/tests/unit/test_record_responses.py similarity index 97% rename from argilla-sdk/tests/unit/test_record_responses.py rename to argilla/tests/unit/test_record_responses.py index b6f57ee3fd..d83bb6cf1d 100644 --- a/argilla-sdk/tests/unit/test_record_responses.py +++ b/argilla/tests/unit/test_record_responses.py @@ -15,8 +15,8 @@ import pytest -from argilla_sdk import Response, User, Dataset, Settings, TextQuestion, TextField, Workspace -from argilla_sdk.records._resource import RecordResponses, Record +from argilla import Response, User, Dataset, Settings, TextQuestion, TextField, Workspace +from argilla.records._resource import RecordResponses, Record @pytest.fixture diff --git a/argilla-sdk/tests/unit/test_record_suggestions.py b/argilla/tests/unit/test_record_suggestions.py similarity index 92% rename from argilla-sdk/tests/unit/test_record_suggestions.py rename to argilla/tests/unit/test_record_suggestions.py index 8ce6105b02..d21f807831 100644 --- a/argilla-sdk/tests/unit/test_record_suggestions.py +++ b/argilla/tests/unit/test_record_suggestions.py @@ -14,8 +14,8 @@ import pytest -from argilla_sdk import Record, Suggestion -from argilla_sdk.records._resource import RecordSuggestions +from argilla import Record, Suggestion +from argilla.records._resource import RecordSuggestions @pytest.fixture diff --git a/argilla-sdk/tests/unit/test_resources/test_datasets.py b/argilla/tests/unit/test_resources/test_datasets.py similarity index 99% rename from argilla-sdk/tests/unit/test_resources/test_datasets.py rename to argilla/tests/unit/test_resources/test_datasets.py index 34b0005276..b4bfa3b386 100644 --- a/argilla-sdk/tests/unit/test_resources/test_datasets.py +++ b/argilla/tests/unit/test_resources/test_datasets.py @@ -19,8 +19,8 @@ import pytest from pytest_httpx import HTTPXMock -import argilla_sdk as rg -from argilla_sdk._exceptions import ( +import argilla as rg +from argilla._exceptions import ( BadRequestError, ConflictError, ForbiddenError, diff --git a/argilla-sdk/tests/unit/test_resources/test_fields.py b/argilla/tests/unit/test_resources/test_fields.py similarity index 96% rename from argilla-sdk/tests/unit/test_resources/test_fields.py rename to argilla/tests/unit/test_resources/test_fields.py index 44a1edb279..73eb460019 100644 --- a/argilla-sdk/tests/unit/test_resources/test_fields.py +++ b/argilla/tests/unit/test_resources/test_fields.py @@ -18,8 +18,8 @@ import httpx from pytest_httpx import HTTPXMock -import argilla_sdk as rg -from argilla_sdk._models import FieldModel +import argilla as rg +from argilla._models import FieldModel class TestFieldsAPI: diff --git a/argilla-sdk/tests/unit/test_resources/test_questions.py b/argilla/tests/unit/test_resources/test_questions.py similarity index 97% rename from argilla-sdk/tests/unit/test_resources/test_questions.py rename to argilla/tests/unit/test_resources/test_questions.py index 0b28b2fefe..f4bd1ecec7 100644 --- a/argilla-sdk/tests/unit/test_resources/test_questions.py +++ b/argilla/tests/unit/test_resources/test_questions.py @@ -18,9 +18,9 @@ import httpx from pytest_httpx import HTTPXMock -import argilla_sdk as rg -from argilla_sdk._models import TextQuestionModel, LabelQuestionModel -from argilla_sdk._models._settings._questions import SpanQuestionModel +import argilla as rg +from argilla._models import TextQuestionModel, LabelQuestionModel +from argilla._models._settings._questions import SpanQuestionModel class TestQuestionsAPI: diff --git a/argilla-sdk/tests/unit/test_resources/test_records.py b/argilla/tests/unit/test_resources/test_records.py similarity index 95% rename from argilla-sdk/tests/unit/test_resources/test_records.py rename to argilla/tests/unit/test_resources/test_records.py index 4366766d47..8e662fe781 100644 --- a/argilla-sdk/tests/unit/test_resources/test_records.py +++ b/argilla/tests/unit/test_resources/test_records.py @@ -14,8 +14,8 @@ import uuid -from argilla_sdk import Record, Suggestion, Response -from argilla_sdk._models import MetadataModel +from argilla import Record, Suggestion, Response +from argilla._models import MetadataModel class TestRecords: diff --git a/argilla-sdk/tests/unit/test_resources/test_responses.py b/argilla/tests/unit/test_resources/test_responses.py similarity index 98% rename from argilla-sdk/tests/unit/test_resources/test_responses.py rename to argilla/tests/unit/test_resources/test_responses.py index 687601ba0a..947774acdb 100644 --- a/argilla-sdk/tests/unit/test_resources/test_responses.py +++ b/argilla/tests/unit/test_resources/test_responses.py @@ -16,7 +16,7 @@ import pytest -from argilla_sdk import UserResponse, Response +from argilla import UserResponse, Response class TestResponses: diff --git a/argilla-sdk/tests/unit/test_resources/test_users.py b/argilla/tests/unit/test_resources/test_users.py similarity index 99% rename from argilla-sdk/tests/unit/test_resources/test_users.py rename to argilla/tests/unit/test_resources/test_users.py index 89170a29ba..7dda199756 100644 --- a/argilla-sdk/tests/unit/test_resources/test_users.py +++ b/argilla/tests/unit/test_resources/test_users.py @@ -16,10 +16,10 @@ import uuid from datetime import datetime -import argilla_sdk as rg +import argilla as rg import httpx import pytest -from argilla_sdk._exceptions import ( +from argilla._exceptions import ( BadRequestError, ConflictError, ForbiddenError, @@ -27,7 +27,7 @@ NotFoundError, UnprocessableEntityError, ) -from argilla_sdk._models import UserModel +from argilla._models import UserModel from pytest_httpx import HTTPXMock diff --git a/argilla-sdk/tests/unit/test_resources/test_workspaces.py b/argilla/tests/unit/test_resources/test_workspaces.py similarity index 99% rename from argilla-sdk/tests/unit/test_resources/test_workspaces.py rename to argilla/tests/unit/test_resources/test_workspaces.py index 6be53c3eb5..6cc9c5d757 100644 --- a/argilla-sdk/tests/unit/test_resources/test_workspaces.py +++ b/argilla/tests/unit/test_resources/test_workspaces.py @@ -19,8 +19,8 @@ import pytest from pytest_httpx import HTTPXMock -import argilla_sdk as rg -from argilla_sdk._exceptions import ( +import argilla as rg +from argilla._exceptions import ( BadRequestError, ConflictError, ForbiddenError, diff --git a/argilla-sdk/tests/unit/test_settings/test_multi_label_question.py b/argilla/tests/unit/test_settings/test_multi_label_question.py similarity index 98% rename from argilla-sdk/tests/unit/test_settings/test_multi_label_question.py rename to argilla/tests/unit/test_settings/test_multi_label_question.py index 4818f61c5a..713f6931f1 100644 --- a/argilla-sdk/tests/unit/test_settings/test_multi_label_question.py +++ b/argilla/tests/unit/test_settings/test_multi_label_question.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla_sdk as rg +import argilla as rg class TestMultiLabelQuestions: diff --git a/argilla-sdk/tests/unit/test_settings/test_settings.py b/argilla/tests/unit/test_settings/test_settings.py similarity index 98% rename from argilla-sdk/tests/unit/test_settings/test_settings.py rename to argilla/tests/unit/test_settings/test_settings.py index 92650e495e..3d7e6d9a37 100644 --- a/argilla-sdk/tests/unit/test_settings/test_settings.py +++ b/argilla/tests/unit/test_settings/test_settings.py @@ -13,8 +13,8 @@ # limitations under the License. import pytest -import argilla_sdk as rg -from argilla_sdk._exceptions import SettingsError +import argilla as rg +from argilla._exceptions import SettingsError class TestSettings: diff --git a/argilla-sdk/tests/unit/test_settings/test_settings_fields.py b/argilla/tests/unit/test_settings/test_settings_fields.py similarity index 98% rename from argilla-sdk/tests/unit/test_settings/test_settings_fields.py rename to argilla/tests/unit/test_settings/test_settings_fields.py index 917521f4ef..8a3a28c9f6 100644 --- a/argilla-sdk/tests/unit/test_settings/test_settings_fields.py +++ b/argilla/tests/unit/test_settings/test_settings_fields.py @@ -13,7 +13,7 @@ # limitations under the License. import pytest -import argilla_sdk as rg +import argilla as rg class TestTextField: diff --git a/argilla-sdk/tests/unit/test_settings/test_settings_questions.py b/argilla/tests/unit/test_settings/test_settings_questions.py similarity index 99% rename from argilla-sdk/tests/unit/test_settings/test_settings_questions.py rename to argilla/tests/unit/test_settings/test_settings_questions.py index cec8ad1a6c..2465e1c020 100644 --- a/argilla-sdk/tests/unit/test_settings/test_settings_questions.py +++ b/argilla/tests/unit/test_settings/test_settings_questions.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla_sdk as rg +import argilla as rg class TestQuestions: diff --git a/argilla-sdk/tests/unit/test_settings/test_span_question.py b/argilla/tests/unit/test_settings/test_span_question.py similarity index 98% rename from argilla-sdk/tests/unit/test_settings/test_span_question.py rename to argilla/tests/unit/test_settings/test_span_question.py index 67168d8b3c..b6feca7880 100644 --- a/argilla-sdk/tests/unit/test_settings/test_span_question.py +++ b/argilla/tests/unit/test_settings/test_span_question.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla_sdk as rg +import argilla as rg class TestSpanQuestions: diff --git a/argilla-sdk/tests/unit/test_settings/test_terms_metadata.py b/argilla/tests/unit/test_settings/test_terms_metadata.py similarity index 96% rename from argilla-sdk/tests/unit/test_settings/test_terms_metadata.py rename to argilla/tests/unit/test_settings/test_terms_metadata.py index 0cc39acdff..f850724173 100644 --- a/argilla-sdk/tests/unit/test_settings/test_terms_metadata.py +++ b/argilla/tests/unit/test_settings/test_terms_metadata.py @@ -14,8 +14,8 @@ import uuid -import argilla_sdk as rg -from argilla_sdk._models import MetadataFieldModel, TermsMetadataPropertySettings +import argilla as rg +from argilla._models import MetadataFieldModel, TermsMetadataPropertySettings class TestTermsMetadata: diff --git a/docs/_source/conf.py b/docs/_source/conf.py index 9000fa5e5e..48dbbe3cc6 100644 --- a/docs/_source/conf.py +++ b/docs/_source/conf.py @@ -39,7 +39,8 @@ version_ = rg.__version__ except ModuleNotFoundError: version_ = os.environ.get("VERSION") - +except AttributeError: + version_ = os.environ.get("VERSION") project = "Argilla" copyright = f"{datetime.today().year}, Argilla.io" @@ -82,9 +83,7 @@ "pipversion": "" if "dev" in release else "==" + release, "dockertag": "master" if "dev" in release else "v" + release, } -myst_substitutions[ - "dockercomposeyaml" -] = """```yaml +myst_substitutions["dockercomposeyaml"] = """```yaml # docker-compose.yaml version: "3" @@ -97,12 +96,8 @@ ARGILLA_ELASTICSEARCH: ARGILLA_AUTH_SECRET_KEY: Please generate a 32 character random string with: openssl rand -hex 32 restart: unless-stopped -```""".format( - myst_substitutions["dockertag"] -) -myst_substitutions[ - "dockercomposeuseryaml" -] = """```yaml +```""".format(myst_substitutions["dockertag"]) +myst_substitutions["dockercomposeuseryaml"] = """```yaml # docker-compose.yaml services: argilla: @@ -118,15 +113,15 @@ # We mount the local file .users.yaml in remote container in path /config/.users.yaml - ${}/.users.yaml:/config/.users.yaml ... -```""".format( - myst_substitutions["dockertag"], "PWD" -) +```""".format(myst_substitutions["dockertag"], "PWD") # Do not execute the notebooks when building the docs nbsphinx_execute = "never" # open html file as Python string -getting_started_html = open("./_common/getting_started.html", "r", encoding="utf8").read() +getting_started_html = open( + "./_common/getting_started.html", "r", encoding="utf8" +).read() next_steps_html = open("./_common/next_steps.html", "r", encoding="utf8").read() # -- AUTODOC IMPORT MOCKS --------------------------------------------------- diff --git a/docs/_source/getting_started/argilla.md b/docs/_source/getting_started/argilla.md index 5d6718d525..b8a2e56561 100644 --- a/docs/_source/getting_started/argilla.md +++ b/docs/_source/getting_started/argilla.md @@ -2,6 +2,12 @@ [Argilla](https://argilla.io) is an open-source data curation platform for LLMs. Using Argilla, everyone can build robust language models through faster data curation using both human and machine feedback. We provide support for each step in the MLOps cycle, from data labeling to model monitoring. +```{admonition} Argilla 2.x +:class: danger +We are announcing that Argilla 1.29 is the final minor release for Argilla 1.x. Although we will continue to release bug fixes for this version, we will neither be adding nor removing any functionalities. Instead, we will focus our efforts on Argilla 2.x. Argilla 1.29 will reach its end-of-life on June 20, 2025. +Looking for documentation for Argilla 2.x? Visit the docs [here](https://argilla-io.github.io/argilla/dev/)! +``` +