diff --git a/.github/workflows/02-check-python-formatting.yml b/.github/workflows/02-check-python-formatting.yml new file mode 100644 index 0000000000..d13649275c --- /dev/null +++ b/.github/workflows/02-check-python-formatting.yml @@ -0,0 +1,28 @@ +name: 02 - check python formatting + +permissions: + contents: read + +on: + pull_request: + paths: + - 'api/**' + - 'sdk/**' + workflow_dispatch: + +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Ruff + run: pip install ruff==0.14.0 + + - name: Run Ruff formatting check + run: ruff format --check api sdk \ No newline at end of file diff --git a/.github/workflows/03-check-python-linting.yml b/.github/workflows/03-check-python-linting.yml new file mode 100644 index 0000000000..347912d093 --- /dev/null +++ b/.github/workflows/03-check-python-linting.yml @@ -0,0 +1,28 @@ +name: 03 - check python linting + +permissions: + contents: read + +on: + pull_request: + paths: + - 'api/**' + - 'sdk/**' + workflow_dispatch: + +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Ruff + run: pip install ruff==0.14.0 + + - name: Run Ruff linting check + run: ruff check api sdk \ No newline at end of file diff --git a/api/ee/databases/postgres/migrations/core/data_migrations/workspaces.py b/api/ee/databases/postgres/migrations/core/data_migrations/workspaces.py index 2c5a241acc..a704ca9826 100644 --- a/api/ee/databases/postgres/migrations/core/data_migrations/workspaces.py +++ b/api/ee/databases/postgres/migrations/core/data_migrations/workspaces.py @@ -56,7 +56,8 @@ def create_default_project_for_workspaces(session: Connection): for workspace in workspaces: # Create a new default project for each workspace get_or_create_workspace_default_project( - session=session, workspace=workspace # type: ignore + session=session, + workspace=workspace, # type: ignore ) # Commit the changes for the current batch diff --git a/api/ee/databases/postgres/migrations/core/utils.py b/api/ee/databases/postgres/migrations/core/utils.py index 206e46db64..4691a38ec0 100644 --- a/api/ee/databases/postgres/migrations/core/utils.py +++ b/api/ee/databases/postgres/migrations/core/utils.py @@ -73,7 +73,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): async with engine.connect() as connection: try: - result = await connection.execute(text("SELECT version_num FROM alembic_version")) # type: ignore + result = await connection.execute( + text("SELECT version_num FROM alembic_version") + ) # type: ignore except (asyncpg.exceptions.UndefinedTableError, ProgrammingError): # Note: If the alembic_version table does not exist, it will result in raising an UndefinedTableError exception. # We need to suppress the error and return a list with the alembic_version table name to inform the user that there is a pending migration \ @@ -83,9 +85,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): return "alembic_version" migration_heads = [row[0] for row in result.fetchall()] - assert ( - len(migration_heads) == 1 - ), "There can only be one migration head stored in the database." + assert len(migration_heads) == 1, ( + "There can only be one migration head stored in the database." + ) return migration_heads[0] diff --git a/api/ee/databases/postgres/migrations/tracing/utils.py b/api/ee/databases/postgres/migrations/tracing/utils.py index 15f3e66b5f..f0d62a3c3d 100644 --- a/api/ee/databases/postgres/migrations/tracing/utils.py +++ b/api/ee/databases/postgres/migrations/tracing/utils.py @@ -66,7 +66,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): async with engine.connect() as connection: try: - result = await connection.execute(text("SELECT version_num FROM alembic_version")) # type: ignore + result = await connection.execute( + text("SELECT version_num FROM alembic_version") + ) # type: ignore except (asyncpg.exceptions.UndefinedTableError, ProgrammingError): # Note: If the alembic_version table does not exist, it will result in raising an UndefinedTableError exception. # We need to suppress the error and return a list with the alembic_version table name to inform the user that there is a pending migration \ @@ -76,9 +78,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): return "alembic_version" migration_heads = [row[0] for row in result.fetchall()] - assert ( - len(migration_heads) == 1 - ), "There can only be one migration head stored in the database." + assert len(migration_heads) == 1, ( + "There can only be one migration head stored in the database." + ) return migration_heads[0] diff --git a/api/ee/src/apis/fastapi/billing/router.py b/api/ee/src/apis/fastapi/billing/router.py index 08762eaa76..ff8dbaf476 100644 --- a/api/ee/src/apis/fastapi/billing/router.py +++ b/api/ee/src/apis/fastapi/billing/router.py @@ -35,7 +35,7 @@ stripe.api_key = environ.get("STRIPE_API_KEY") -MAC_ADDRESS = ":".join(f"{(getnode() >> ele) & 0xff:02x}" for ele in range(40, -1, -8)) +MAC_ADDRESS = ":".join(f"{(getnode() >> ele) & 0xFF:02x}" for ele in range(40, -1, -8)) STRIPE_WEBHOOK_SECRET = environ.get("STRIPE_WEBHOOK_SECRET") STRIPE_TARGET = environ.get("STRIPE_TARGET") or MAC_ADDRESS AGENTA_PRICING = loads(environ.get("AGENTA_PRICING") or "{}") diff --git a/api/ee/src/core/subscriptions/service.py b/api/ee/src/core/subscriptions/service.py index f69adcbd74..30e026eded 100644 --- a/api/ee/src/core/subscriptions/service.py +++ b/api/ee/src/core/subscriptions/service.py @@ -25,7 +25,7 @@ stripe.api_key = environ.get("STRIPE_SECRET_KEY") -MAC_ADDRESS = ":".join(f"{(getnode() >> ele) & 0xff:02x}" for ele in range(40, -1, -8)) +MAC_ADDRESS = ":".join(f"{(getnode() >> ele) & 0xFF:02x}" for ele in range(40, -1, -8)) STRIPE_TARGET = environ.get("STRIPE_TARGET") or MAC_ADDRESS AGENTA_PRICING = loads(environ.get("AGENTA_PRICING") or "{}") diff --git a/api/ee/src/services/db_manager_ee.py b/api/ee/src/services/db_manager_ee.py index bc174918b6..f7cb117e65 100644 --- a/api/ee/src/services/db_manager_ee.py +++ b/api/ee/src/services/db_manager_ee.py @@ -645,9 +645,7 @@ async def remove_user_from_workspace( project = await db_manager.get_project_by_id(project_id=project_id) async with engine.core_session() as session: - if ( - not user - ): # User is an invited user who has not yet created an account and therefore does not have a user object + if not user: # User is an invited user who has not yet created an account and therefore does not have a user object pass else: # Ensure that a user can not remove the owner of the workspace diff --git a/api/ee/src/services/workspace_manager.py b/api/ee/src/services/workspace_manager.py index 5bbebc78e6..49fe01b426 100644 --- a/api/ee/src/services/workspace_manager.py +++ b/api/ee/src/services/workspace_manager.py @@ -317,9 +317,9 @@ async def accept_workspace_invitation( invitation = await check_valid_invitation(project_id, user.email, token) if invitation is not None: - assert ( - invitation.role is not None - ), "Invitation does not have any workspace role" + assert invitation.role is not None, ( + "Invitation does not have any workspace role" + ) await db_manager_ee.add_user_to_workspace_and_org( organization, workspace, user, project_id, invitation.role ) diff --git a/api/ee/src/utils/entitlements.py b/api/ee/src/utils/entitlements.py index 13360aad77..99614caec4 100644 --- a/api/ee/src/utils/entitlements.py +++ b/api/ee/src/utils/entitlements.py @@ -36,25 +36,25 @@ class EntitlementsException(Exception): pass -NOT_ENTITLED_RESPONSE: Callable[ - [Tracker], JSONResponse -] = lambda tracker=None: JSONResponse( - status_code=403, - content={ - "detail": ( - "You have reached your monthly quota limit. Please upgrade your plan to continue." - if tracker == Tracker.COUNTERS - else ( - "You have reached your quota limit. Please upgrade your plan to continue." - if tracker == Tracker.GAUGES +NOT_ENTITLED_RESPONSE: Callable[[Tracker], JSONResponse] = ( + lambda tracker=None: JSONResponse( + status_code=403, + content={ + "detail": ( + "You have reached your monthly quota limit. Please upgrade your plan to continue." + if tracker == Tracker.COUNTERS else ( - "You do not have access to this feature. Please upgrade your plan to continue." - if tracker == Tracker.FLAGS - else "You do not have access to this feature." + "You have reached your quota limit. Please upgrade your plan to continue." + if tracker == Tracker.GAUGES + else ( + "You do not have access to this feature. Please upgrade your plan to continue." + if tracker == Tracker.FLAGS + else "You do not have access to this feature." + ) ) - ) - ), - }, + ), + }, + ) ) @@ -163,7 +163,7 @@ async def check_entitlements( # TODO: remove this line log.info( - f"adjusting: {organization_id} | {(('0' if (meter.month != 0 and meter.month < 10) else '') + str(meter.month)) if meter.month != 0 else ' '}.{meter.year if meter.year else ' '} | {'allow' if check else 'deny '} | {meter.key}: {meter.value-meter.synced} [{meter.value}]" + f"adjusting: {organization_id} | {(('0' if (meter.month != 0 and meter.month < 10) else '') + str(meter.month)) if meter.month != 0 else ' '}.{meter.year if meter.year else ' '} | {'allow' if check else 'deny '} | {meter.key}: {meter.value - meter.synced} [{meter.value}]" ) return check is True, meter, _ diff --git a/api/ee/src/utils/permissions.py b/api/ee/src/utils/permissions.py index 312bcb05b6..4454a0ac6b 100644 --- a/api/ee/src/utils/permissions.py +++ b/api/ee/src/utils/permissions.py @@ -218,17 +218,17 @@ async def check_rbac_permission( bool: True if the user belongs to the workspace and has the specified permission, False otherwise. """ - assert ( - project_id is not None - ), "Project_ID is required to check object-level permissions" + assert project_id is not None, ( + "Project_ID is required to check object-level permissions" + ) # Assert that either permission or role is provided, but not both - assert (permission is not None) or ( - role is not None - ), "Either 'permission' or 'role' must be provided, but neither is provided" - assert not ( - (permission is not None) and (role is not None) - ), "'permission' and 'role' cannot both be provided at the same time" + assert (permission is not None) or (role is not None), ( + "Either 'permission' or 'role' must be provided, but neither is provided" + ) + assert not ((permission is not None) and (role is not None)), ( + "'permission' and 'role' cannot both be provided at the same time" + ) if project_id is not None: project = await db_manager.get_project_by_id(project_id) @@ -281,9 +281,9 @@ async def check_project_has_role_or_permission( if not check: return True - assert ( - role is not None or permission is not None - ), "Either role or permission must be provided" + assert role is not None or permission is not None, ( + "Either role or permission must be provided" + ) project_members = await db_manager_ee.get_project_members( project_id=str(project.id) diff --git a/api/oss/databases/postgres/migrations/core/data_migrations/projects.py b/api/oss/databases/postgres/migrations/core/data_migrations/projects.py index 5ed91ee5f9..e5db291b3b 100644 --- a/api/oss/databases/postgres/migrations/core/data_migrations/projects.py +++ b/api/oss/databases/postgres/migrations/core/data_migrations/projects.py @@ -131,13 +131,13 @@ def add_default_evaluators_to_project(session: Session, project_id: str): } for setting_name, default_value in settings_values.items(): - assert ( - default_value != "" - ), f"Default value for ground truth key '{setting_name}' in Evaluator is empty" + assert default_value != "", ( + f"Default value for ground truth key '{setting_name}' in Evaluator is empty" + ) - assert hasattr(evaluator, "name") and hasattr( - evaluator, "key" - ), f"'name' and 'key' does not exist in the evaluator: {evaluator}" + assert hasattr(evaluator, "name") and hasattr(evaluator, "key"), ( + f"'name' and 'key' does not exist in the evaluator: {evaluator}" + ) evaluator_config = EvaluatorConfigDB( project_id=uuid.UUID(project_id), diff --git a/api/oss/databases/postgres/migrations/core/utils.py b/api/oss/databases/postgres/migrations/core/utils.py index 9994ce2e54..adeb34bd50 100644 --- a/api/oss/databases/postgres/migrations/core/utils.py +++ b/api/oss/databases/postgres/migrations/core/utils.py @@ -73,7 +73,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): async with engine.connect() as connection: try: - result = await connection.execute(text("SELECT version_num FROM alembic_version")) # type: ignore + result = await connection.execute( + text("SELECT version_num FROM alembic_version") + ) # type: ignore except (asyncpg.exceptions.UndefinedTableError, ProgrammingError): # Note: If the alembic_version table does not exist, it will result in raising an UndefinedTableError exception. # We need to suppress the error and return a list with the alembic_version table name to inform the user that there is a pending migration \ @@ -83,9 +85,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): return "alembic_version" migration_heads = [row[0] for row in result.fetchall()] - assert ( - len(migration_heads) == 1 - ), "There can only be one migration head stored in the database." + assert len(migration_heads) == 1, ( + "There can only be one migration head stored in the database." + ) return migration_heads[0] diff --git a/api/oss/databases/postgres/migrations/tracing/utils.py b/api/oss/databases/postgres/migrations/tracing/utils.py index db61035477..6966d0e1c8 100644 --- a/api/oss/databases/postgres/migrations/tracing/utils.py +++ b/api/oss/databases/postgres/migrations/tracing/utils.py @@ -65,7 +65,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): async with engine.connect() as connection: try: - result = await connection.execute(text("SELECT version_num FROM alembic_version")) # type: ignore + result = await connection.execute( + text("SELECT version_num FROM alembic_version") + ) # type: ignore except (asyncpg.exceptions.UndefinedTableError, ProgrammingError): # Note: If the alembic_version table does not exist, it will result in raising an UndefinedTableError exception. # We need to suppress the error and return a list with the alembic_version table name to inform the user that there is a pending migration \ @@ -75,9 +77,9 @@ async def get_current_migration_head_from_db(engine: AsyncEngine): return "alembic_version" migration_heads = [row[0] for row in result.fetchall()] - assert ( - len(migration_heads) == 1 - ), "There can only be one migration head stored in the database." + assert len(migration_heads) == 1, ( + "There can only be one migration head stored in the database." + ) return migration_heads[0] diff --git a/api/oss/src/apis/fastapi/observability/extractors/adapters/default_agenta_adapter.py b/api/oss/src/apis/fastapi/observability/extractors/adapters/default_agenta_adapter.py index f9664d80ba..7203208ede 100644 --- a/api/oss/src/apis/fastapi/observability/extractors/adapters/default_agenta_adapter.py +++ b/api/oss/src/apis/fastapi/observability/extractors/adapters/default_agenta_adapter.py @@ -40,9 +40,7 @@ def process(self, attributes: CanonicalAttributes, features: SpanFeatures) -> No # Exceptions - Rebuilt from attributes.events to match previous output structure exception_events = attributes.get_events_by_name("exception") - if ( - exception_events - ): # Process the first one if multiple exist, or adapt if all should be processed + if exception_events: # Process the first one if multiple exist, or adapt if all should be processed event_data = exception_events[0] # Ensure timestamp is decoded and formatted as previously (likely to string by decode_value if it's datetime) decoded_ts = decode_value(event_data.timestamp) diff --git a/api/oss/src/apis/fastapi/observability/extractors/adapters/logfire_adapter.py b/api/oss/src/apis/fastapi/observability/extractors/adapters/logfire_adapter.py index c1106e118d..f71b18fa72 100644 --- a/api/oss/src/apis/fastapi/observability/extractors/adapters/logfire_adapter.py +++ b/api/oss/src/apis/fastapi/observability/extractors/adapters/logfire_adapter.py @@ -95,12 +95,9 @@ def process(self, bag: CanonicalAttributes, features: SpanFeatures) -> None: and transformed_attributes.get("ag.metrics.unit.tokens.completion") and not transformed_attributes.get("ag.metrics.unit.tokens.total") ): - transformed_attributes[ - "ag.metrics.unit.tokens.total" - ] = transformed_attributes.get( - "ag.metrics.unit.tokens.prompt" - ) + transformed_attributes.get( - "ag.metrics.unit.tokens.completion" + transformed_attributes["ag.metrics.unit.tokens.total"] = ( + transformed_attributes.get("ag.metrics.unit.tokens.prompt") + + transformed_attributes.get("ag.metrics.unit.tokens.completion") ) if not has_logfire_data: return diff --git a/api/oss/src/apis/fastapi/observability/opentelemetry/traces_proto.py b/api/oss/src/apis/fastapi/observability/opentelemetry/traces_proto.py index 899bf0765c..bbbc95d9a9 100644 --- a/api/oss/src/apis/fastapi/observability/opentelemetry/traces_proto.py +++ b/api/oss/src/apis/fastapi/observability/opentelemetry/traces_proto.py @@ -3,6 +3,7 @@ # NO CHECKED-IN PROTOBUF GENCODE # source: traces.proto """Generated protocol buffer code.""" + from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database diff --git a/api/oss/src/apis/fastapi/shared/utils.py b/api/oss/src/apis/fastapi/shared/utils.py index b9accb73b9..6982ddb8f8 100644 --- a/api/oss/src/apis/fastapi/shared/utils.py +++ b/api/oss/src/apis/fastapi/shared/utils.py @@ -12,7 +12,11 @@ def parse_metadata( flags: Optional[str] = None, tags: Optional[str] = None, meta: Optional[str] = None, -) -> Tuple[Optional[Flags], Optional[Tags], Optional[Meta],]: +) -> Tuple[ + Optional[Flags], + Optional[Tags], + Optional[Meta], +]: _flags = None try: _flags = loads(flags) if flags else None diff --git a/api/oss/src/apis/fastapi/testsets/router.py b/api/oss/src/apis/fastapi/testsets/router.py index 9fcd8bcab6..3c8ba795c4 100644 --- a/api/oss/src/apis/fastapi/testsets/router.py +++ b/api/oss/src/apis/fastapi/testsets/router.py @@ -1162,19 +1162,23 @@ async def fetch_simple_testset( if testset is None: return SimpleTestsetResponse() - testset_variant = await self.simple_testsets_service.testsets_service.fetch_testset_variant( - project_id=UUID(request.state.project_id), - # - testset_ref=Reference(id=testset.id), + testset_variant = ( + await self.simple_testsets_service.testsets_service.fetch_testset_variant( + project_id=UUID(request.state.project_id), + # + testset_ref=Reference(id=testset.id), + ) ) if testset_variant is None: return SimpleTestsetResponse() - testset_revision = await self.simple_testsets_service.testsets_service.fetch_testset_revision( - project_id=UUID(request.state.project_id), - # - testset_variant_ref=Reference(id=testset_variant.id), + testset_revision = ( + await self.simple_testsets_service.testsets_service.fetch_testset_revision( + project_id=UUID(request.state.project_id), + # + testset_variant_ref=Reference(id=testset_variant.id), + ) ) if testset_revision is None: diff --git a/api/oss/src/core/annotations/service.py b/api/oss/src/core/annotations/service.py index c7229ffbdc..3d9d734955 100644 --- a/api/oss/src/core/annotations/service.py +++ b/api/oss/src/core/annotations/service.py @@ -146,10 +146,12 @@ async def create( ) if simple_evaluator: - evaluator_revision = await self.evaluators_service.fetch_evaluator_revision( - project_id=project_id, - # - evaluator_ref=Reference(id=simple_evaluator.id), + evaluator_revision = ( + await self.evaluators_service.fetch_evaluator_revision( + project_id=project_id, + # + evaluator_ref=Reference(id=simple_evaluator.id), + ) ) elif evaluator_revision.evaluator_id: simple_evaluator = await self.simple_evaluators_service.fetch( @@ -333,10 +335,12 @@ async def edit( ) if simple_evaluator: - evaluator_revision = await self.evaluators_service.fetch_evaluator_revision( - project_id=project_id, - # - evaluator_ref=Reference(id=simple_evaluator.id), + evaluator_revision = ( + await self.evaluators_service.fetch_evaluator_revision( + project_id=project_id, + # + evaluator_ref=Reference(id=simple_evaluator.id), + ) ) if not evaluator_revision or not evaluator_revision.data: diff --git a/api/oss/src/core/evaluations/service.py b/api/oss/src/core/evaluations/service.py index b36a9d47ef..5aa820cec6 100644 --- a/api/oss/src/core/evaluations/service.py +++ b/api/oss/src/core/evaluations/service.py @@ -1804,10 +1804,12 @@ async def _make_evaluation_run_data( ) return None - testset_revision = await self.testsets_service.fetch_testset_revision( - project_id=project_id, - # - testset_ref=testset_ref, + testset_revision = ( + await self.testsets_service.fetch_testset_revision( + project_id=project_id, + # + testset_ref=testset_ref, + ) ) if ( @@ -2035,10 +2037,12 @@ async def _make_evaluation_run_data( ) return None - evaluator_revision = await self.evaluators_service.fetch_evaluator_revision( - project_id=project_id, - # - evaluator_ref=evaluator_ref, + evaluator_revision = ( + await self.evaluators_service.fetch_evaluator_revision( + project_id=project_id, + # + evaluator_ref=evaluator_ref, + ) ) if ( @@ -2058,10 +2062,12 @@ async def _make_evaluation_run_data( for evaluator_revision_id, origin in (evaluator_steps or {}).items(): evaluator_revision_ref = Reference(id=evaluator_revision_id) - evaluator_revision = await self.evaluators_service.fetch_evaluator_revision( - project_id=project_id, - # - evaluator_revision_ref=evaluator_revision_ref, + evaluator_revision = ( + await self.evaluators_service.fetch_evaluator_revision( + project_id=project_id, + # + evaluator_revision_ref=evaluator_revision_ref, + ) ) if not evaluator_revision or not evaluator_revision.slug: @@ -2080,10 +2086,12 @@ async def _make_evaluation_run_data( evaluator_variant_ref = Reference(id=evaluator_revision.variant_id) - evaluator_variant = await self.evaluators_service.fetch_evaluator_variant( - project_id=project_id, - # - evaluator_variant_ref=evaluator_variant_ref, + evaluator_variant = ( + await self.evaluators_service.fetch_evaluator_variant( + project_id=project_id, + # + evaluator_variant_ref=evaluator_variant_ref, + ) ) if not evaluator_variant: diff --git a/api/oss/src/core/testsets/service.py b/api/oss/src/core/testsets/service.py index 0d34def73d..6bc781ef85 100644 --- a/api/oss/src/core/testsets/service.py +++ b/api/oss/src/core/testsets/service.py @@ -490,10 +490,12 @@ async def create_testset_revision( ) if testset_revision.data and testset_revision.data.testcase_ids: - testset_revision.data.testcases = await self.testcases_service.fetch_testcases( - project_id=project_id, - # - testcase_ids=testset_revision.data.testcase_ids, + testset_revision.data.testcases = ( + await self.testcases_service.fetch_testcases( + project_id=project_id, + # + testcase_ids=testset_revision.data.testcase_ids, + ) ) return testset_revision @@ -556,10 +558,12 @@ async def fetch_testset_revision( ) if testset_revision.data and testset_revision.data.testcase_ids: - testset_revision.data.testcases = await self.testcases_service.fetch_testcases( - project_id=project_id, - # - testcase_ids=testset_revision.data.testcase_ids, + testset_revision.data.testcases = ( + await self.testcases_service.fetch_testcases( + project_id=project_id, + # + testcase_ids=testset_revision.data.testcase_ids, + ) ) return testset_revision @@ -595,10 +599,12 @@ async def edit_testset_revision( ) if testset_revision.data and testset_revision.data.testcase_ids: - testset_revision.data.testcases = await self.testcases_service.fetch_testcases( - project_id=project_id, - # - testcase_ids=testset_revision.data.testcase_ids, + testset_revision.data.testcases = ( + await self.testcases_service.fetch_testcases( + project_id=project_id, + # + testcase_ids=testset_revision.data.testcase_ids, + ) ) return testset_revision @@ -691,10 +697,12 @@ async def query_testset_revisions( ) if testset_revision.data and testset_revision.data.testcase_ids: - testset_revision.data.testcases = await self.testcases_service.fetch_testcases( - project_id=project_id, - # - testcase_ids=testset_revision.data.testcase_ids, + testset_revision.data.testcases = ( + await self.testcases_service.fetch_testcases( + project_id=project_id, + # + testcase_ids=testset_revision.data.testcase_ids, + ) ) testset_revisions.append(testset_revision) @@ -750,10 +758,12 @@ async def commit_testset_revision( ) if testset_revision.data and testset_revision.data.testcase_ids: - testset_revision.data.testcases = await self.testcases_service.fetch_testcases( - project_id=project_id, - # - testcase_ids=testset_revision.data.testcase_ids, + testset_revision.data.testcases = ( + await self.testcases_service.fetch_testcases( + project_id=project_id, + # + testcase_ids=testset_revision.data.testcase_ids, + ) ) return testset_revision @@ -785,10 +795,12 @@ async def log_testset_revisions( ) if testset_revision.data and testset_revision.data.testcase_ids: - testset_revision.data.testcases = await self.testcases_service.fetch_testcases( - project_id=project_id, - # - testcase_ids=testset_revision.data.testcase_ids, + testset_revision.data.testcases = ( + await self.testcases_service.fetch_testcases( + project_id=project_id, + # + testcase_ids=testset_revision.data.testcase_ids, + ) ) testset_revisions.append(testset_revision) diff --git a/api/oss/src/core/workflows/dtos.py b/api/oss/src/core/workflows/dtos.py index c6b71caccf..880da2a44a 100644 --- a/api/oss/src/core/workflows/dtos.py +++ b/api/oss/src/core/workflows/dtos.py @@ -172,9 +172,9 @@ class WorkflowServiceVersion(BaseModel): class WorkflowServiceInterface(WorkflowServiceVersion): uri: Optional[str] = None # str (Enum) w/ validation url: Optional[str] = None # str w/ validation - headers: Optional[ - Dict[str, Union[Reference, str]] - ] = None # either hardcoded or a secret + headers: Optional[Dict[str, Union[Reference, str]]] = ( + None # either hardcoded or a secret + ) # handler: Optional[Callable] = None schemas: Optional[Dict[str, Schema]] = None # json-schema instead of pydantic diff --git a/api/oss/src/core/workflows/service.py b/api/oss/src/core/workflows/service.py index 18e4835b97..866fddf38e 100644 --- a/api/oss/src/core/workflows/service.py +++ b/api/oss/src/core/workflows/service.py @@ -732,7 +732,10 @@ async def invoke_workflow( request: WorkflowServiceRequest, # **kwargs, - ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse,]: + ) -> Union[ + WorkflowServiceBatchResponse, + WorkflowServiceStreamResponse, + ]: project = await get_project_by_id( project_id=str(project_id), ) diff --git a/api/oss/src/dbs/postgres/git/dao.py b/api/oss/src/dbs/postgres/git/dao.py index f1bb94f45f..8d275d6dae 100644 --- a/api/oss/src/dbs/postgres/git/dao.py +++ b/api/oss/src/dbs/postgres/git/dao.py @@ -342,7 +342,9 @@ async def query_artifacts( if artifact_query.description: stmt = stmt.filter( - self.ArtifactDBE.description.ilike(f"%{artifact_query.description}%"), # type: ignore + self.ArtifactDBE.description.ilike( + f"%{artifact_query.description}%" + ), # type: ignore ) if include_archived is not True: @@ -1173,7 +1175,9 @@ async def query_revisions( if revision_query.description: stmt = stmt.filter( - self.RevisionDBE.description.ilike(f"%{revision_query.description}%") # type: ignore + self.RevisionDBE.description.ilike( + f"%{revision_query.description}%" + ) # type: ignore ) if include_archived is not True: diff --git a/api/oss/src/models/converters.py b/api/oss/src/models/converters.py index 768fded064..b7e9080dbf 100644 --- a/api/oss/src/models/converters.py +++ b/api/oss/src/models/converters.py @@ -143,7 +143,8 @@ async def environment_db_to_output( ) -> EnvironmentOutput: deployed_app_variant_id = ( str(environment_db.deployed_app_variant_id) - if environment_db.deployed_app_variant_id and isinstance(environment_db.deployed_app_variant_id, uuid.UUID) # type: ignore + if environment_db.deployed_app_variant_id + and isinstance(environment_db.deployed_app_variant_id, uuid.UUID) # type: ignore else None ) if deployed_app_variant_id: diff --git a/api/oss/src/models/db/models.py b/api/oss/src/models/db/models.py index 4e78e945ac..da7a99c099 100644 --- a/api/oss/src/models/db/models.py +++ b/api/oss/src/models/db/models.py @@ -58,4 +58,14 @@ ] if is_ee(): - models.extend([OrganizationDB, WorkspaceDB, APIKeyDB, InvitationDB, OrganizationMemberDB, ProjectMemberDB, WorkspaceMemberDB]) # type: ignore + models.extend( + [ + OrganizationDB, + WorkspaceDB, + APIKeyDB, + InvitationDB, + OrganizationMemberDB, + ProjectMemberDB, + WorkspaceMemberDB, + ] + ) # type: ignore diff --git a/api/oss/src/models/deprecated_models.py b/api/oss/src/models/deprecated_models.py index 070536fa13..85ac4be0c4 100644 --- a/api/oss/src/models/deprecated_models.py +++ b/api/oss/src/models/deprecated_models.py @@ -442,9 +442,7 @@ class DeprecatedEvaluationDB(DeprecatedBase): ) average_cost = Column(mutable_json_type(dbtype=JSONB, nested=True)) # type: ignore # Result total_cost = Column(mutable_json_type(dbtype=JSONB, nested=True)) # type: ignore # Result - average_latency = Column( - mutable_json_type(dbtype=JSONB, nested=True) - ) # type: ignore # Result + average_latency = Column(mutable_json_type(dbtype=JSONB, nested=True)) # type: ignore # Result created_at = Column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) ) diff --git a/api/oss/src/routers/app_router.py b/api/oss/src/routers/app_router.py index 52e724ee83..d0a60affca 100644 --- a/api/oss/src/routers/app_router.py +++ b/api/oss/src/routers/app_router.py @@ -389,7 +389,9 @@ async def list_apps( """ if is_ee(): - user_org_workspace_data = await get_user_org_and_workspace_id(request.state.user_id) # type: ignore + user_org_workspace_data = await get_user_org_and_workspace_id( + request.state.user_id + ) # type: ignore has_permission = await check_rbac_permission( # type: ignore user_org_workspace_data=user_org_workspace_data, project_id=request.state.project_id, diff --git a/api/oss/src/routers/configs_router.py b/api/oss/src/routers/configs_router.py index 8c432b31d6..2271fc41bc 100644 --- a/api/oss/src/routers/configs_router.py +++ b/api/oss/src/routers/configs_router.py @@ -94,9 +94,9 @@ async def get_config( "parameters": found_variant.config_parameters, } - assert ( - "name" and "parameters" in config - ), "'name' and 'parameters' not found in configuration" + assert "name" and "parameters" in config, ( + "'name' and 'parameters' not found in configuration" + ) return GetConfigResponse( config_name=config["name"], # type: ignore current_version=variant_revision, # type: ignore diff --git a/api/oss/src/routers/user_profile.py b/api/oss/src/routers/user_profile.py index 67a66f21ae..0b082467b6 100644 --- a/api/oss/src/routers/user_profile.py +++ b/api/oss/src/routers/user_profile.py @@ -39,9 +39,9 @@ async def user_profile(request: Request): user = await db_manager.get_user_with_id(user_id=request.state.user_id) - assert ( - user is not None - ), "User not found. Please ensure that the user_id is specified correctly." + assert user is not None, ( + "User not found. Please ensure that the user_id is specified correctly." + ) user = User( id=str(user.id), diff --git a/api/oss/src/routers/variants_router.py b/api/oss/src/routers/variants_router.py index 8edeef5d3c..405910d540 100644 --- a/api/oss/src/routers/variants_router.py +++ b/api/oss/src/routers/variants_router.py @@ -393,9 +393,9 @@ async def get_variant_revision( revision_number: int, request: Request, ): - assert ( - variant_id != "undefined" - ), "Variant id is required to retrieve variant revision" + assert variant_id != "undefined", ( + "Variant id is required to retrieve variant revision" + ) app_variant = await db_manager.fetch_app_variant_by_id(app_variant_id=variant_id) if is_ee(): diff --git a/api/oss/src/services/app_manager.py b/api/oss/src/services/app_manager.py index f644399ebd..7128b2f54e 100644 --- a/api/oss/src/services/app_manager.py +++ b/api/oss/src/services/app_manager.py @@ -135,12 +135,12 @@ async def terminate_and_remove_app_variant( Exception: Any other exception raised during the operation. """ - assert ( - app_variant_id or app_variant_db - ), "Either app_variant_id or app_variant_db must be provided" - assert not ( - app_variant_id and app_variant_db - ), "Only one of app_variant_id or app_variant_db must be provided" + assert app_variant_id or app_variant_db, ( + "Either app_variant_id or app_variant_db must be provided" + ) + assert not (app_variant_id and app_variant_db), ( + "Only one of app_variant_id or app_variant_db must be provided" + ) if app_variant_id: app_variant_db = await db_manager.fetch_app_variant_by_id(app_variant_id) diff --git a/api/oss/src/services/auth_helper.py b/api/oss/src/services/auth_helper.py index 9f49188cb3..fb1bd08bd2 100644 --- a/api/oss/src/services/auth_helper.py +++ b/api/oss/src/services/auth_helper.py @@ -483,9 +483,9 @@ async def verify_bearer_token( else: workspaces = await db_manager.get_workspaces() - assert ( - len(workspaces) == 1 - ), "You can only have a single workspace in OSS." + assert len(workspaces) == 1, ( + "You can only have a single workspace in OSS." + ) workspace_id = str(workspaces[0].id) project_id = await db_manager.get_default_project_id_from_workspace( diff --git a/api/oss/src/services/db_manager.py b/api/oss/src/services/db_manager.py index 9833c104dc..09e4ef2a0a 100644 --- a/api/oss/src/services/db_manager.py +++ b/api/oss/src/services/db_manager.py @@ -223,8 +223,12 @@ async def fetch_app_variant_by_id(app_variant_id: str) -> Optional[AppVariantDB] assert app_variant_id is not None, "app_variant_id cannot be None" async with engine.core_session() as session: query = select(AppVariantDB).options( - joinedload(AppVariantDB.app.of_type(AppDB)).load_only(AppDB.id, AppDB.app_name), # type: ignore - joinedload(AppVariantDB.base.of_type(VariantBaseDB)).joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)).load_only(DeploymentDB.id, DeploymentDB.uri), # type: ignore + joinedload(AppVariantDB.app.of_type(AppDB)).load_only( + AppDB.id, AppDB.app_name + ), # type: ignore + joinedload(AppVariantDB.base.of_type(VariantBaseDB)) + .joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)) + .load_only(DeploymentDB.id, DeploymentDB.uri), # type: ignore ) result = await session.execute( @@ -564,9 +568,9 @@ async def create_new_app_variant( AppVariantDB: The created variant. """ - assert ( - config.parameters == {} - ), "Parameters should be empty when calling create_new_app_variant (otherwise revision should not be set to 0)" + assert config.parameters == {}, ( + "Parameters should be empty when calling create_new_app_variant (otherwise revision should not be set to 0)" + ) async with engine.core_session() as session: variant = AppVariantDB( @@ -1869,7 +1873,9 @@ async def add_variant_from_base_and_config( app_variant_for_base = await list_variants_for_base(base_db) already_exists = any( - av for av in app_variant_for_base if av.config_name == new_config_name # type: ignore + av + for av in app_variant_for_base + if av.config_name == new_config_name # type: ignore ) if already_exists: raise ValueError("App variant with the same name already exists") @@ -1954,8 +1960,12 @@ async def list_app_variants(app_id: str): result = await session.execute( select(AppVariantDB) .options( - joinedload(AppVariantDB.app.of_type(AppDB)).load_only(AppDB.id, AppDB.app_name), # type: ignore - joinedload(AppVariantDB.base.of_type(VariantBaseDB)).joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)).load_only(DeploymentDB.uri), # type: ignore + joinedload(AppVariantDB.app.of_type(AppDB)).load_only( + AppDB.id, AppDB.app_name + ), # type: ignore + joinedload(AppVariantDB.base.of_type(VariantBaseDB)) + .joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)) + .load_only(DeploymentDB.uri), # type: ignore ) .where(AppVariantDB.hidden.is_not(True)) .filter_by(app_id=uuid.UUID(app_uuid)) @@ -2253,7 +2263,9 @@ async def fetch_app_environment_revision_by_app_variant_revision_id( ) if is_ee(): query = query.options( - joinedload(AppEnvironmentRevisionDB.deployed_app_variant.of_type(AppVariantDB)), # type: ignore + joinedload( + AppEnvironmentRevisionDB.deployed_app_variant.of_type(AppVariantDB) + ), # type: ignore ) result = await session.execute(query) app_environment = result.scalars().one_or_none() @@ -2276,7 +2288,9 @@ async def fetch_app_variant_revision_by_id( result = await session.execute( select(AppVariantRevisionsDB) .options( - joinedload(AppVariantRevisionsDB.base.of_type(VariantBaseDB)).joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)).load_only(DeploymentDB.id, DeploymentDB.uri), # type: ignore + joinedload(AppVariantRevisionsDB.base.of_type(VariantBaseDB)) + .joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)) + .load_only(DeploymentDB.id, DeploymentDB.uri), # type: ignore ) .filter_by(id=uuid.UUID(variant_revision_id)) ) @@ -2303,9 +2317,7 @@ async def fetch_environment_revisions_for_environment(environment: AppEnvironmen query = query.options( joinedload( AppEnvironmentRevisionDB.modified_by.of_type(UserDB) - ).load_only( - UserDB.username - ) # type: ignore + ).load_only(UserDB.username) # type: ignore ) else: query = query.options( @@ -2495,9 +2507,9 @@ async def create_environment_revision( ) if kwargs: - assert ( - "deployed_app_variant_revision" in kwargs - ), "Deployed app variant revision is required" + assert "deployed_app_variant_revision" in kwargs, ( + "Deployed app variant revision is required" + ) assert ( isinstance( kwargs.get("deployed_app_variant_revision"), AppVariantRevisionsDB @@ -2512,9 +2524,9 @@ async def create_environment_revision( ) deployment = kwargs.get("deployment") - assert ( - isinstance(deployment, DeploymentDB) == True - ), "Type of deployment in kwargs is not correct" + assert isinstance(deployment, DeploymentDB) == True, ( + "Type of deployment in kwargs is not correct" + ) if deployment is not None: environment_revision.deployment_id = deployment.id # type: ignore @@ -2582,9 +2594,7 @@ async def fetch_app_variant_revision( ) else: query = base_query.options( - joinedload(AppVariantRevisionsDB.modified_by).load_only( - UserDB.username - ) # type: ignore + joinedload(AppVariantRevisionsDB.modified_by).load_only(UserDB.username) # type: ignore ) result = await session.execute(query) app_variant_revision = result.scalars().first() @@ -2777,8 +2787,12 @@ async def get_app_variant_instance_by_id( result = await session.execute( select(AppVariantDB) .options( - joinedload(AppVariantDB.app.of_type(AppDB)).load_only(AppDB.id, AppDB.app_name), # type: ignore - joinedload(AppVariantDB.base.of_type(VariantBaseDB)).joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)).load_only(DeploymentDB.uri), # type: ignore + joinedload(AppVariantDB.app.of_type(AppDB)).load_only( + AppDB.id, AppDB.app_name + ), # type: ignore + joinedload(AppVariantDB.base.of_type(VariantBaseDB)) + .joinedload(VariantBaseDB.deployment.of_type(DeploymentDB)) + .load_only(DeploymentDB.uri), # type: ignore ) .filter_by(id=uuid.UUID(variant_id), project_id=uuid.UUID(project_id)), ) @@ -3266,9 +3280,9 @@ async def get_object_uuid(object_id: str, table_name: str) -> str: # Use the object_id directly if it is not a valid MongoDB ObjectId object_uuid_as_str = object_id - assert ( - object_uuid_as_str is not None - ), f"{table_name} Object UUID cannot be none. Is the object_id {object_id} a valid MongoDB ObjectId?" + assert object_uuid_as_str is not None, ( + f"{table_name} Object UUID cannot be none. Is the object_id {object_id} a valid MongoDB ObjectId?" + ) return object_uuid_as_str @@ -3392,13 +3406,19 @@ async def fetch_evaluation_by_id( id=uuid.UUID(evaluation_id), ) query = base_query.options( - joinedload(EvaluationDB.testset.of_type(TestsetDB)).load_only(TestsetDB.id, TestsetDB.name), # type: ignore + joinedload(EvaluationDB.testset.of_type(TestsetDB)).load_only( + TestsetDB.id, TestsetDB.name + ), # type: ignore ) result = await session.execute( query.options( - joinedload(EvaluationDB.variant.of_type(AppVariantDB)).load_only(AppVariantDB.id, AppVariantDB.variant_name), # type: ignore - joinedload(EvaluationDB.variant_revision.of_type(AppVariantRevisionsDB)).load_only(AppVariantRevisionsDB.revision), # type: ignore + joinedload(EvaluationDB.variant.of_type(AppVariantDB)).load_only( + AppVariantDB.id, AppVariantDB.variant_name + ), # type: ignore + joinedload( + EvaluationDB.variant_revision.of_type(AppVariantRevisionsDB) + ).load_only(AppVariantRevisionsDB.revision), # type: ignore joinedload( EvaluationDB.aggregated_results.of_type( EvaluationAggregatedResultDB @@ -3425,7 +3445,9 @@ async def list_human_evaluations(app_id: str, project_id: str): .filter(HumanEvaluationDB.testset_id.isnot(None)) ) query = base_query.options( - joinedload(HumanEvaluationDB.testset.of_type(TestsetDB)).load_only(TestsetDB.id, TestsetDB.name), # type: ignore + joinedload(HumanEvaluationDB.testset.of_type(TestsetDB)).load_only( + TestsetDB.id, TestsetDB.name + ), # type: ignore ) result = await session.execute(query) @@ -3488,8 +3510,12 @@ async def fetch_human_evaluation_variants(human_evaluation_id: str): human_evaluation_id=uuid.UUID(human_evaluation_id) ) query = base_query.options( - joinedload(HumanEvaluationVariantDB.variant.of_type(AppVariantDB)).load_only(AppVariantDB.id, AppVariantDB.variant_name), # type: ignore - joinedload(HumanEvaluationVariantDB.variant_revision.of_type(AppVariantRevisionsDB)).load_only(AppVariantRevisionsDB.id, AppVariantRevisionsDB.revision), # type: ignore + joinedload( + HumanEvaluationVariantDB.variant.of_type(AppVariantDB) + ).load_only(AppVariantDB.id, AppVariantDB.variant_name), # type: ignore + joinedload( + HumanEvaluationVariantDB.variant_revision.of_type(AppVariantRevisionsDB) + ).load_only(AppVariantRevisionsDB.id, AppVariantRevisionsDB.revision), # type: ignore ) result = await session.execute(query) @@ -3518,7 +3544,9 @@ async def create_human_evaluation_variants( variants_revisions_dict = {} for variant_id, variant in variants_dict.items(): variant_revision = await fetch_app_variant_revision_by_variant( - app_variant_id=str(variant.id), project_id=str(variant.project_id), revision=variant.revision # type: ignore + app_variant_id=str(variant.id), + project_id=str(variant.project_id), + revision=variant.revision, # type: ignore ) if variant_revision: variants_revisions_dict[variant_id] = variant_revision @@ -3557,7 +3585,9 @@ async def fetch_human_evaluation_by_id( async with engine.core_session() as session: base_query = select(HumanEvaluationDB).filter_by(id=uuid.UUID(evaluation_id)) query = base_query.options( - joinedload(HumanEvaluationDB.testset.of_type(TestsetDB)).load_only(TestsetDB.id, TestsetDB.name), # type: ignore + joinedload(HumanEvaluationDB.testset.of_type(TestsetDB)).load_only( + TestsetDB.id, TestsetDB.name + ), # type: ignore ) result = await session.execute(query) evaluation = result.scalars().first() @@ -3833,13 +3863,19 @@ async def list_evaluations(app_id: str, project_id: str): app_id=uuid.UUID(app_id), project_id=uuid.UUID(project_id) ) query = base_query.options( - joinedload(EvaluationDB.testset.of_type(TestsetDB)).load_only(TestsetDB.id, TestsetDB.name), # type: ignore + joinedload(EvaluationDB.testset.of_type(TestsetDB)).load_only( + TestsetDB.id, TestsetDB.name + ), # type: ignore ) result = await session.execute( query.options( - joinedload(EvaluationDB.variant.of_type(AppVariantDB)).load_only(AppVariantDB.id, AppVariantDB.variant_name), # type: ignore - joinedload(EvaluationDB.variant_revision.of_type(AppVariantRevisionsDB)).load_only(AppVariantRevisionsDB.revision), # type: ignore + joinedload(EvaluationDB.variant.of_type(AppVariantDB)).load_only( + AppVariantDB.id, AppVariantDB.variant_name + ), # type: ignore + joinedload( + EvaluationDB.variant_revision.of_type(AppVariantRevisionsDB) + ).load_only(AppVariantRevisionsDB.revision), # type: ignore joinedload( EvaluationDB.aggregated_results.of_type( EvaluationAggregatedResultDB diff --git a/api/oss/src/services/evaluation_service.py b/api/oss/src/services/evaluation_service.py index ca40a70cef..ba0e146678 100644 --- a/api/oss/src/services/evaluation_service.py +++ b/api/oss/src/services/evaluation_service.py @@ -71,7 +71,7 @@ async def prepare_csvdata_and_create_evaluation_scenario( msg = f""" Columns in the testset should match the names of the inputs in the variant. Inputs names in variant are: {[variant_input for variant_input in payload_inputs]} while - columns in testset are: {[col for col in datum.keys() if col != 'correct_answer']} + columns in testset are: {[col for col in datum.keys() if col != "correct_answer"]} """ raise HTTPException( status_code=400, @@ -404,9 +404,9 @@ async def create_new_evaluation( variant_revision_id=revision_id ) - assert ( - variant_revision and variant_revision.revision is not None - ), f"Variant revision with {revision_id} cannot be None" + assert variant_revision and variant_revision.revision is not None, ( + f"Variant revision with {revision_id} cannot be None" + ) assert testset is not None, f"Testset with id {testset_id} does not exist" diff --git a/api/oss/src/services/evaluator_manager.py b/api/oss/src/services/evaluator_manager.py index 68f44ee3d4..375eec953a 100644 --- a/api/oss/src/services/evaluator_manager.py +++ b/api/oss/src/services/evaluator_manager.py @@ -138,13 +138,13 @@ async def create_ready_to_use_evaluators(project_id: str): } for setting_name, default_value in settings_values.items(): - assert ( - default_value != "" - ), f"Default value for ground truth key '{setting_name}' in Evaluator is empty" + assert default_value != "", ( + f"Default value for ground truth key '{setting_name}' in Evaluator is empty" + ) - assert hasattr(evaluator, "name") and hasattr( - evaluator, "key" - ), f"'name' and 'key' does not exist in the evaluator: {evaluator}" + assert hasattr(evaluator, "name") and hasattr(evaluator, "key"), ( + f"'name' and 'key' does not exist in the evaluator: {evaluator}" + ) await db_manager.create_evaluator_config( project_id=project_id, name=evaluator.name, diff --git a/api/oss/src/services/evaluators_service.py b/api/oss/src/services/evaluators_service.py index 13e1538bc4..cbb4643c13 100644 --- a/api/oss/src/services/evaluators_service.py +++ b/api/oss/src/services/evaluators_service.py @@ -734,9 +734,10 @@ async def ai_critique(input: EvaluatorInputInterface) -> EvaluatorOutputInterfac raise e if ( - input.settings.get("version") == "4" - ) and ( # this check is used when running in the background (celery) - type(input.settings.get("prompt_template", "")) is not str + (input.settings.get("version") == "4") + and ( # this check is used when running in the background (celery) + type(input.settings.get("prompt_template", "")) is not str + ) ): # this check is used when running in the frontend (since in that case we'll alway have version 2) try: parameters = input.settings or dict() @@ -930,9 +931,10 @@ async def ai_critique(input: EvaluatorInputInterface) -> EvaluatorOutputInterfac except Exception as e: raise RuntimeError(f"Evaluation failed: {str(e)}") elif ( - input.settings.get("version") == "3" - ) and ( # this check is used when running in the background (celery) - type(input.settings.get("prompt_template", "")) is not str + (input.settings.get("version") == "3") + and ( # this check is used when running in the background (celery) + type(input.settings.get("prompt_template", "")) is not str + ) ): # this check is used when running in the frontend (since in that case we'll alway have version 2) try: parameters = input.settings or dict() @@ -1089,9 +1091,10 @@ async def ai_critique(input: EvaluatorInputInterface) -> EvaluatorOutputInterfac except Exception as e: raise RuntimeError(f"Evaluation failed: {str(e)}") elif ( - input.settings.get("version") == "2" - ) and ( # this check is used when running in the background (celery) - type(input.settings.get("prompt_template", "")) is not str + (input.settings.get("version") == "2") + and ( # this check is used when running in the background (celery) + type(input.settings.get("prompt_template", "")) is not str + ) ): # this check is used when running in the frontend (since in that case we'll alway have version 2) try: prompt_template = input.settings.get("prompt_template", "") @@ -1547,9 +1550,9 @@ async def json_diff(input: EvaluatorInputInterface) -> EvaluatorOutputInterface: # 1. extract llm app output if app output format is v2+ app_output = input.inputs["prediction"] - assert isinstance( - app_output, (str, dict) - ), "App output is expected to be a string or a JSON object" + assert isinstance(app_output, (str, dict)), ( + "App output is expected to be a string or a JSON object" + ) app_output = ( app_output.get("data", "") if isinstance(app_output, dict) else app_output ) @@ -1557,9 +1560,7 @@ async def json_diff(input: EvaluatorInputInterface) -> EvaluatorOutputInterface: try: app_output = json.loads(app_output) except json.JSONDecodeError: - app_output = ( - {} - ) # we will return 0 score for json diff in case we cannot parse the output as json + app_output = {} # we will return 0 score for json diff in case we cannot parse the output as json score = compare_jsons( ground_truth=ground_truth, diff --git a/api/oss/src/services/llm_apps_service.py b/api/oss/src/services/llm_apps_service.py index b1d8ab5995..d5ba69f965 100644 --- a/api/oss/src/services/llm_apps_service.py +++ b/api/oss/src/services/llm_apps_service.py @@ -146,9 +146,9 @@ async def make_payload( payload["ag_config"] = parameters elif param["type"] == "input": item = datapoint.get(param["name"], parameters.get(param["name"], "")) - assert ( - param["name"] != "ag_config" - ), "ag_config should be handled separately" + assert param["name"] != "ag_config", ( + "ag_config should be handled separately" + ) payload[param["name"]] = item # in case of dynamic inputs (as in our templates) diff --git a/api/oss/src/tasks/evaluations/legacy.py b/api/oss/src/tasks/evaluations/legacy.py index d3bc69f9cc..e034439691 100644 --- a/api/oss/src/tasks/evaluations/legacy.py +++ b/api/oss/src/tasks/evaluations/legacy.py @@ -292,9 +292,9 @@ async def setup_evaluation( testset_id=UUID(testset_id), ) - assert ( - testset_response.count != 0 - ), f"Testset with id {testset_id} not found!" + assert testset_response.count != 0, ( + f"Testset with id {testset_id} not found!" + ) testset = testset_response.testset testcases = testset.data.testcases @@ -334,9 +334,9 @@ async def setup_evaluation( query_ref=query_ref, ) - assert ( - query_revision is not None - ), f"Query revision with id {query_id} not found!" + assert query_revision is not None, ( + f"Query revision with id {query_id} not found!" + ) query_revision_ref = Reference( id=query_revision.id, @@ -352,9 +352,9 @@ async def setup_evaluation( ), ) - assert ( - query_variant is not None - ), f"Query variant with id {query_revision.variant_id} not found!" + assert query_variant is not None, ( + f"Query variant with id {query_revision.variant_id} not found!" + ) query_variant_ref = Reference( id=query_variant.id, @@ -374,9 +374,9 @@ async def setup_evaluation( if revision_id: revision = await fetch_app_variant_revision_by_id(revision_id) - assert ( - revision is not None - ), f"App revision with id {revision_id} not found!" + assert revision is not None, ( + f"App revision with id {revision_id} not found!" + ) application_references["revision"] = Reference( id=UUID(str(revision.id)), @@ -384,9 +384,9 @@ async def setup_evaluation( variant = await fetch_app_variant_by_id(str(revision.variant_id)) - assert ( - variant is not None - ), f"App variant with id {revision.variant_id} not found!" + assert variant is not None, ( + f"App variant with id {revision.variant_id} not found!" + ) application_references["variant"] = Reference( id=UUID(str(variant.id)), @@ -402,9 +402,9 @@ async def setup_evaluation( deployment = await get_deployment_by_id(str(revision.base.deployment_id)) - assert ( - deployment is not None - ), f"Deployment with id {revision.base.deployment_id} not found!" + assert deployment is not None, ( + f"Deployment with id {revision.base.deployment_id} not found!" + ) uri = parse_url(url=deployment.uri) @@ -412,9 +412,9 @@ async def setup_evaluation( revision_parameters = revision.config_parameters - assert ( - revision_parameters is not None - ), f"Revision parameters for variant {variant.id} not found!" + assert revision_parameters is not None, ( + f"Revision parameters for variant {variant.id} not found!" + ) invocation_steps_keys.append( get_slug_from_name_and_id(app.app_name, revision.id) @@ -498,18 +498,18 @@ async def setup_evaluation( workflow_ref=workflow_ref, ) - assert ( - workflow_revision is not None - ), f"Workflow revision with id {workflow_ref.id} not found!" + assert workflow_revision is not None, ( + f"Workflow revision with id {workflow_ref.id} not found!" + ) workflow_revision_ref = Reference( id=workflow_revision.id, slug=workflow_revision.slug, ) - evaluator_references[annotation_step_key][ - "revision" - ] = workflow_revision_ref + evaluator_references[annotation_step_key]["revision"] = ( + workflow_revision_ref + ) evaluators[annotation_step_key]["revision"] = workflow_revision @@ -520,9 +520,9 @@ async def setup_evaluation( ), ) - assert ( - workflow_variant is not None - ), f"Workflow variant with id {workflow_revision.variant_id} not found!" + assert workflow_variant is not None, ( + f"Workflow variant with id {workflow_revision.variant_id} not found!" + ) workflow_variant_ref = Reference( id=workflow_variant.id, @@ -893,9 +893,9 @@ def annotate( fetch_app_variant_by_id(str(revision.variant_id)), ) - assert ( - variant is not None - ), f"App variant with id {revision.variant_id} not found!" + assert variant is not None, ( + f"App variant with id {revision.variant_id} not found!" + ) app = loop.run_until_complete( fetch_app_by_id(str(variant.app_id)), @@ -907,9 +907,9 @@ def annotate( get_deployment_by_id(str(revision.base.deployment_id)), ) - assert ( - deployment is not None - ), f"Deployment with id {revision.base.deployment_id} not found!" + assert deployment is not None, ( + f"Deployment with id {revision.base.deployment_id} not found!" + ) uri = parse_url(url=deployment.uri) @@ -917,9 +917,9 @@ def annotate( revision_parameters = revision.config_parameters - assert ( - revision_parameters is not None - ), f"Revision parameters for variant {variant.id} not found!" + assert revision_parameters is not None, ( + f"Revision parameters for variant {variant.id} not found!" + ) # ---------------------------------------------------------------------- # fetch evaluators ----------------------------------------------------- @@ -997,9 +997,9 @@ def annotate( ) ) - assert ( - len(scenarios) == nof_testcases - ), f"Failed to create evaluation scenarios for run {run_id}!" + assert len(scenarios) == nof_testcases, ( + f"Failed to create evaluation scenarios for run {run_id}!" + ) # ---------------------------------------------------------------------- # create input steps --------------------------------------------------- @@ -1025,9 +1025,9 @@ def annotate( ) ) - assert ( - len(steps) == nof_testcases - ), f"Failed to create evaluation steps for run {run_id}!" + assert len(steps) == nof_testcases, ( + f"Failed to create evaluation steps for run {run_id}!" + ) # ---------------------------------------------------------------------- # flatten testcases ---------------------------------------------------- @@ -1101,9 +1101,9 @@ def annotate( ) ) - assert ( - len(steps) == nof_testcases - ), f"Failed to create evaluation steps for run {run_id}!" + assert len(steps) == nof_testcases, ( + f"Failed to create evaluation steps for run {run_id}!" + ) # ---------------------------------------------------------------------- run_has_errors = 0 @@ -1431,9 +1431,9 @@ def annotate( ) ) - assert ( - len(steps) == 1 - ), f"Failed to create evaluation step for scenario with id {scenario.id}!" + assert len(steps) == 1, ( + f"Failed to create evaluation step for scenario with id {scenario.id}!" + ) # ------------------------------------------------------------------ scenario_edit = EvaluationScenarioEdit( @@ -1452,9 +1452,9 @@ def annotate( ) ) - assert ( - scenario - ), f"Failed to edit evaluation scenario with id {scenario.id}!" + assert scenario, ( + f"Failed to edit evaluation scenario with id {scenario.id}!" + ) if scenario_status != EvaluationStatus.FAILURE: try: diff --git a/api/oss/src/tasks/evaluations/live.py b/api/oss/src/tasks/evaluations/live.py index 43208bd42d..932ae57ebd 100644 --- a/api/oss/src/tasks/evaluations/live.py +++ b/api/oss/src/tasks/evaluations/live.py @@ -253,7 +253,9 @@ def evaluate( steps = run.data.steps input_steps = { - step.key: step for step in steps if step.type == "input" # -------- + step.key: step + for step in steps + if step.type == "input" # -------- } invocation_steps = { step.key: step for step in steps if step.type == "invocation" @@ -490,9 +492,9 @@ def evaluate( ) ) - assert ( - len(results) == nof_traces - ), f"Failed to create evaluation results for run {run_id}!" + assert len(results) == nof_traces, ( + f"Failed to create evaluation results for run {run_id}!" + ) # ------------------------------------------------------------------ scenario_has_errors: Dict[int, int] = dict() @@ -772,9 +774,9 @@ def evaluate( ) ) - assert ( - len(results) == 1 - ), f"Failed to create evaluation result for scenario with id {scenario.id}!" + assert len(results) == 1, ( + f"Failed to create evaluation result for scenario with id {scenario.id}!" + ) # -------------------------------------------------------------- scenario_edit = EvaluationScenarioEdit( diff --git a/api/oss/tests/legacy/admin/tests.py b/api/oss/tests/legacy/admin/tests.py index 356aa29581..27d4aeb883 100644 --- a/api/oss/tests/legacy/admin/tests.py +++ b/api/oss/tests/legacy/admin/tests.py @@ -16,9 +16,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -35,9 +35,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -54,6 +54,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/api/oss/tests/legacy/apps/tests.py b/api/oss/tests/legacy/apps/tests.py index d1be36c456..59afc1b7d7 100644 --- a/api/oss/tests/legacy/apps/tests.py +++ b/api/oss/tests/legacy/apps/tests.py @@ -39,12 +39,12 @@ async def test_create_without_default_params(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" - assert ( - response_data["app_name"] == app_data["app_name"] - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) + assert response_data["app_name"] == app_data["app_name"], ( + f"Failed for case: {description}" + ) # Cleanup: Remove application await delete_application(http_client, response_data["app_id"], headers) @@ -64,9 +64,9 @@ async def test_create_invalid_params(self, http_client): response = await http_client.post("/apps", json=app_data, headers=headers) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -86,9 +86,9 @@ async def test_create_conflicts(self, http_client): response = await http_client.post("/apps", json=app_data, headers=headers) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup: Remove application app_cleanup_response = await http_client.get("/apps", headers=headers) @@ -120,9 +120,9 @@ async def test_permissions_principal_not_in_scope_post(self, http_client): ) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -213,9 +213,9 @@ async def test_list_query_filter_no_element(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == len(elements), f"Failed for case: {description}" @pytest.mark.asyncio @@ -236,9 +236,9 @@ async def test_list_query_filter_one_element(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 1, f"Failed for case: {description}" # Cleanup: Remove application @@ -263,9 +263,9 @@ async def test_list_query_filter_many_elements_small_data(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 3, f"Failed for case: {description}" # Cleanup: Remove applications @@ -291,9 +291,9 @@ async def test_list_query_filter_many_elements_big_data(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 6, f"Failed for case: {description}" # Cleanup: Remove applications @@ -326,9 +326,9 @@ async def test_permissions_principal_not_in_scope(self, http_client): ) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup: Delete the application with valid principal await delete_application(http_client, app["app_id"], owner_headers) @@ -361,9 +361,9 @@ async def test_permissions_allowed(self, http_client): list_of_status_codes.append(response.status_code) # Assert: Verify the response - assert ( - list_of_status_codes.count(expected_status) == 3 - ), f"Failed for case: {description}" + assert list_of_status_codes.count(expected_status) == 3, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical diff --git a/api/oss/tests/legacy/auth/tests.py b/api/oss/tests/legacy/auth/tests.py index b09b4b4c61..1a61f0a034 100644 --- a/api/oss/tests/legacy/auth/tests.py +++ b/api/oss/tests/legacy/auth/tests.py @@ -16,9 +16,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -35,9 +35,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -54,6 +54,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/api/oss/tests/legacy/old_tests/models.py b/api/oss/tests/legacy/old_tests/models.py index 5c1d0ad49b..8e24e032d9 100644 --- a/api/oss/tests/legacy/old_tests/models.py +++ b/api/oss/tests/legacy/old_tests/models.py @@ -62,4 +62,14 @@ ] if is_ee(): - models.extend([OrganizationDB, WorkspaceDB, APIKeyDB, InvitationDB, OrganizationMemberDB, ProjectMemberDB, WorkspaceMemberDB]) # type: ignore + models.extend( + [ + OrganizationDB, + WorkspaceDB, + APIKeyDB, + InvitationDB, + OrganizationMemberDB, + ProjectMemberDB, + WorkspaceMemberDB, + ] + ) # type: ignore diff --git a/api/oss/tests/legacy/old_tests/unit/test_llm_apps_service.py b/api/oss/tests/legacy/old_tests/unit/test_llm_apps_service.py index af2757cf09..8ad085a396 100644 --- a/api/oss/tests/legacy/old_tests/unit/test_llm_apps_service.py +++ b/api/oss/tests/legacy/old_tests/unit/test_llm_apps_service.py @@ -20,14 +20,16 @@ async def test_batch_invoke_success(): to simulate successful invocations. It verifies that the batch_invoke function correctly returns the expected results for the given test data. """ - with patch( - "src.services.llm_apps_service.get_parameters_from_openapi", - new_callable=AsyncMock, - ) as mock_get_parameters_from_openapi, patch( - "src.services.llm_apps_service.invoke_app", new_callable=AsyncMock - ) as mock_invoke_app, patch( - "asyncio.sleep", new_callable=AsyncMock - ) as mock_sleep: + with ( + patch( + "src.services.llm_apps_service.get_parameters_from_openapi", + new_callable=AsyncMock, + ) as mock_get_parameters_from_openapi, + patch( + "src.services.llm_apps_service.invoke_app", new_callable=AsyncMock + ) as mock_invoke_app, + patch("asyncio.sleep", new_callable=AsyncMock) as mock_sleep, + ): mock_get_parameters_from_openapi.return_value = [ {"name": "param1", "type": "input"}, {"name": "param2", "type": "input"}, @@ -90,14 +92,16 @@ async def test_batch_invoke_retries_and_failure(): function correctly retries the specified number of times and returns an error result after reaching the maximum retries. """ - with patch( - "src.services.llm_apps_service.get_parameters_from_openapi", - new_callable=AsyncMock, - ) as mock_get_parameters_from_openapi, patch( - "src.services.llm_apps_service.invoke_app", new_callable=AsyncMock - ) as mock_invoke_app, patch( - "asyncio.sleep", new_callable=AsyncMock - ) as mock_sleep: + with ( + patch( + "src.services.llm_apps_service.get_parameters_from_openapi", + new_callable=AsyncMock, + ) as mock_get_parameters_from_openapi, + patch( + "src.services.llm_apps_service.invoke_app", new_callable=AsyncMock + ) as mock_invoke_app, + patch("asyncio.sleep", new_callable=AsyncMock) as mock_sleep, + ): mock_get_parameters_from_openapi.return_value = [ {"name": "param1", "type": "input"}, {"name": "param2", "type": "input"}, @@ -155,14 +159,16 @@ async def test_batch_invoke_generic_exception(): batch_invoke function correctly handles the exception and returns an error result with the appropriate error message. """ - with patch( - "src.m_apps_service.get_parameters_from_openapi", - new_callable=AsyncMock, - ) as mock_get_parameters_from_openapi, patch( - "src.services.llm_apps_service.invoke_app", new_callable=AsyncMock - ) as mock_invoke_app, patch( - "asyncio.sleep", new_callable=AsyncMock - ) as mock_sleep: + with ( + patch( + "src.m_apps_service.get_parameters_from_openapi", + new_callable=AsyncMock, + ) as mock_get_parameters_from_openapi, + patch( + "src.services.llm_apps_service.invoke_app", new_callable=AsyncMock + ) as mock_invoke_app, + patch("asyncio.sleep", new_callable=AsyncMock) as mock_sleep, + ): mock_get_parameters_from_openapi.return_value = [ {"name": "param1", "type": "input"}, {"name": "param2", "type": "input"}, diff --git a/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_evaluators_router.py b/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_evaluators_router.py index 90e18ea27f..dc670b8589 100644 --- a/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_evaluators_router.py +++ b/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_evaluators_router.py @@ -183,9 +183,9 @@ async def wait_for_evaluation_to_finish(evaluation_id): return await asyncio.sleep(intervals) - assert ( - False - ), f"Evaluation status did not become '{EvaluationStatusEnum.EVALUATION_FINISHED}' within the specified polling time" + assert False, ( + f"Evaluation status did not become '{EvaluationStatusEnum.EVALUATION_FINISHED}' within the specified polling time" + ) async def create_evaluation_with_evaluator(evaluator_config_name): diff --git a/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_versioning_deployment.py b/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_versioning_deployment.py index 9f9a87672b..004b54e48f 100644 --- a/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_versioning_deployment.py +++ b/api/oss/tests/legacy/old_tests/variants_main_router/test_variant_versioning_deployment.py @@ -80,6 +80,6 @@ async def test_deploy_to_environment(deploy_to_environment_payload): ) list_of_response_status_codes.append(response.status_code) - assert ( - list_of_response_status_codes.count(200) == 3 - ), "The list does not contain 3 occurrences of 200 status code" + assert list_of_response_status_codes.count(200) == 3, ( + "The list does not contain 3 occurrences of 200 status code" + ) diff --git a/api/oss/tests/legacy/sdk/apps/tests.py b/api/oss/tests/legacy/sdk/apps/tests.py index 3d379d5d5f..d53a001e99 100644 --- a/api/oss/tests/legacy/sdk/apps/tests.py +++ b/api/oss/tests/legacy/sdk/apps/tests.py @@ -44,9 +44,9 @@ async def test_create_app_successfully(self, http_client, setup_class_fixture): # ASSERT assert response.app_name == app_name - assert isinstance( - response.model_dump(), dict - ), "Response data is not a dictionary." + assert isinstance(response.model_dump(), dict), ( + "Response data is not a dictionary." + ) # CLEANUP await delete_application( diff --git a/api/oss/tests/legacy/testsets/tests.py b/api/oss/tests/legacy/testsets/tests.py index edf1474f15..68931fd204 100644 --- a/api/oss/tests/legacy/testsets/tests.py +++ b/api/oss/tests/legacy/testsets/tests.py @@ -77,9 +77,9 @@ async def test_upload_file_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # @pytest.mark.asyncio # @pytest.mark.typical @@ -148,9 +148,9 @@ async def test_get_testset_owner_access(self, http_client): response = await http_client.get(f"/testsets/{testset['id']}", headers=headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert "id" in response.json(), f"Failed for case: {description}" # Cleanup @@ -191,9 +191,9 @@ async def test_create_testset_success(self, http_client): await delete_testset(http_client, response_data["id"], headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert "id" in response_data, f"Failed for case: {description}" @pytest.mark.asyncio @@ -213,9 +213,9 @@ async def test_create_testset_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -241,9 +241,9 @@ async def test_create_testset_non_member_access(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -260,9 +260,9 @@ async def test_no_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 0, f"Failed for case: {description}" @pytest.mark.asyncio @@ -282,9 +282,9 @@ async def test_one_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 1, f"Failed for case: {description}" # Cleanup @@ -308,9 +308,9 @@ async def test_many_elements_small_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 3, f"Failed for case: {description}" # Cleanup @@ -335,9 +335,9 @@ async def test_many_elements_big_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 6, f"Failed for case: {description}" # Cleanup @@ -368,9 +368,9 @@ async def test_permissions_principal_not_in_scope(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], owner_headers) @@ -391,9 +391,9 @@ async def test_permissions_allowed(self, http_client): response = await http_client.get("/testsets", headers=owner_headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -410,9 +410,9 @@ async def test_no_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 0, f"Failed for case: {description}" @pytest.mark.asyncio @@ -432,9 +432,9 @@ async def test_one_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 1, f"Failed for case: {description}" # Cleanup @@ -458,9 +458,9 @@ async def test_many_elements_small_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 3, f"Failed for case: {description}" # Cleanup @@ -485,9 +485,9 @@ async def test_many_elements_big_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 6, f"Failed for case: {description}" # Cleanup @@ -518,9 +518,9 @@ async def test_permissions_principal_not_in_scope(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], owner_headers) @@ -541,9 +541,9 @@ async def test_permissions_allowed(self, http_client): response = await http_client.get("/testsets", headers=owner_headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -565,9 +565,9 @@ async def test_update_success(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert response_data["_id"] == testset["id"], f"Failed for case: {description}" # Cleanup @@ -592,9 +592,9 @@ async def test_update_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], headers) @@ -622,9 +622,9 @@ async def test_update_non_member_access(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], member_headers) @@ -650,9 +650,9 @@ async def test_delete_success(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -674,9 +674,9 @@ async def test_delete_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -698,6 +698,6 @@ async def test_delete_non_existent(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/api/oss/tests/legacy/vault_router/test_vault_secrets_apis.py b/api/oss/tests/legacy/vault_router/test_vault_secrets_apis.py index 245b5affc1..0de50397f6 100644 --- a/api/oss/tests/legacy/vault_router/test_vault_secrets_apis.py +++ b/api/oss/tests/legacy/vault_router/test_vault_secrets_apis.py @@ -41,9 +41,9 @@ async def test_create_secret_with_viewer_role( json=valid_secret_payload, ) - assert ( - create_response.status_code == 403 - ), "Secret creation cannot be successful. Given that apikey belongs to a user with 'viewer' role." + assert create_response.status_code == 403, ( + "Secret creation cannot be successful. Given that apikey belongs to a user with 'viewer' role." + ) created_secret_message = create_response.json()["detail"] assert ( @@ -84,9 +84,9 @@ async def test_create_secret_with_invalid_secret_kind(self, async_client): "secrets", json=invalid_payload, ) - assert ( - response.status_code == 422 - ), "Should reject payload with invalid secret kind" + assert response.status_code == 422, ( + "Should reject payload with invalid secret kind" + ) @pytest.mark.asyncio @pytest.mark.secret_creation @@ -104,9 +104,9 @@ async def test_create_secret_with_invalid_provider_kind(self, async_client): "secrets", json=invalid_payload, ) - assert ( - response.status_code == 422 - ), "Should reject payload with invalid secret provider kind" + assert response.status_code == 422, ( + "Should reject payload with invalid secret provider kind" + ) @pytest.mark.asyncio @pytest.mark.secret_retrieval @@ -204,9 +204,9 @@ async def test_update_secret_with_viewer_role( json=update_payload, ) - assert ( - update_response.status_code == 403 - ), "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + assert update_response.status_code == 403, ( + "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + ) update_response_message = update_response.json()["detail"] assert ( @@ -233,9 +233,9 @@ async def test_delete_secret(self, async_client, valid_secret_payload): get_response = await async_client.get( f"secrets/{secret_id}", ) - assert ( - get_response.status_code == 404 - ), "Deleted secret should not be retrievable" + assert get_response.status_code == 404, ( + "Deleted secret should not be retrievable" + ) @pytest.mark.asyncio @pytest.mark.secret_deletion @@ -254,9 +254,9 @@ async def test_delete_secret_with_viewer_role( f"secrets/{secret_id}", headers={"Authorization": f"ApiKey {os.environ.get('VIEWER_API_KEY', '')}"}, ) - assert ( - delete_response.status_code == 403 - ), "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + assert delete_response.status_code == 403, ( + "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + ) delete_response_message = delete_response.json()["detail"] assert ( @@ -272,6 +272,6 @@ async def test_delete_nonexistent_secret(self, async_client): response = await async_client.delete( f"secrets/{non_existent_id}", ) - assert ( - response.status_code == 204 - ), "Should always return 204 since the endpoint is idempotent" + assert response.status_code == 204, ( + "Should always return 204 since the endpoint is idempotent" + ) diff --git a/api/oss/tests/legacy/workflows/admin/tests.py b/api/oss/tests/legacy/workflows/admin/tests.py index efa0a31025..3b695fe6d5 100644 --- a/api/oss/tests/legacy/workflows/admin/tests.py +++ b/api/oss/tests/legacy/workflows/admin/tests.py @@ -17,9 +17,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -37,9 +37,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -57,6 +57,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/api/oss/tests/legacy/workflows/auth/tests.py b/api/oss/tests/legacy/workflows/auth/tests.py index 32dee3c697..5dbfeb795e 100644 --- a/api/oss/tests/legacy/workflows/auth/tests.py +++ b/api/oss/tests/legacy/workflows/auth/tests.py @@ -17,9 +17,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -37,9 +37,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -57,6 +57,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/api/oss/tests/legacy/workflows/observability/tests.py b/api/oss/tests/legacy/workflows/observability/tests.py index 8b6bf6b47a..d0bc109555 100644 --- a/api/oss/tests/legacy/workflows/observability/tests.py +++ b/api/oss/tests/legacy/workflows/observability/tests.py @@ -70,6 +70,6 @@ async def test_completion_generate_observability_tree( ) is_match = exact_match(workflow_nodes, observability_nodes) - assert ( - is_match is True - ), "Workflow nodes does not match nodes from observability" + assert is_match is True, ( + "Workflow nodes does not match nodes from observability" + ) diff --git a/api/oss/tests/legacy/workflows/permissions/tests.py b/api/oss/tests/legacy/workflows/permissions/tests.py index 50a98eef6e..541b8e67a5 100644 --- a/api/oss/tests/legacy/workflows/permissions/tests.py +++ b/api/oss/tests/legacy/workflows/permissions/tests.py @@ -67,9 +67,9 @@ async def test_permissions_principal_not_in_scope( response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" - assert ( - response.json().get("detail") == "Service execution not allowed." - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) + assert response.json().get("detail") == "Service execution not allowed.", ( + f"Failed for case: {description}" + ) diff --git a/api/oss/tests/manual/tracing/ingestion/agenta_streaming_response.py b/api/oss/tests/manual/tracing/ingestion/agenta_streaming_response.py index 3106a372b8..751011e23c 100644 --- a/api/oss/tests/manual/tracing/ingestion/agenta_streaming_response.py +++ b/api/oss/tests/manual/tracing/ingestion/agenta_streaming_response.py @@ -9,6 +9,7 @@ 2. Batch size configuration issues with OpenTelemetry environment variables """ + from dotenv import load_dotenv import asyncio diff --git a/api/oss/tests/manual/tracing/ingestion/openinference_dspy.py b/api/oss/tests/manual/tracing/ingestion/openinference_dspy.py index d5a828df80..53d193eda2 100644 --- a/api/oss/tests/manual/tracing/ingestion/openinference_dspy.py +++ b/api/oss/tests/manual/tracing/ingestion/openinference_dspy.py @@ -72,9 +72,10 @@ def forward(self, topic: str): outline = self.build_outline(topic=topic) sections = [] for heading, subheadings in outline.section_subheadings.items(): - section, subheadings = f"## {heading}", [ - f"### {subheading}" for subheading in subheadings - ] + section, subheadings = ( + f"## {heading}", + [f"### {subheading}" for subheading in subheadings], + ) section = self.draft_section( topic=outline.title, section_heading=section, diff --git a/api/oss/tests/pytest/workflows/test_workflow_revisions_queries.py b/api/oss/tests/pytest/workflows/test_workflow_revisions_queries.py index abf22c9dc7..2f4121c8e3 100644 --- a/api/oss/tests/pytest/workflows/test_workflow_revisions_queries.py +++ b/api/oss/tests/pytest/workflows/test_workflow_revisions_queries.py @@ -221,7 +221,7 @@ def test_query_paginated_workflow_revisions( # ACT ------------------------------------------------------------------ response = authed_api( "GET", - "/preview/workflows/revisions/?include_archived=true" "&limit=1", + "/preview/workflows/revisions/?include_archived=true&limit=1", ) # ---------------------------------------------------------------------- diff --git a/api/oss/tests/pytest/workflows/test_workflow_variants_queries.py b/api/oss/tests/pytest/workflows/test_workflow_variants_queries.py index 19eae82dbd..b294b45116 100644 --- a/api/oss/tests/pytest/workflows/test_workflow_variants_queries.py +++ b/api/oss/tests/pytest/workflows/test_workflow_variants_queries.py @@ -185,7 +185,7 @@ def test_query_paginated_workflow_variants( # ACT ------------------------------------------------------------------ response = authed_api( "GET", - "/preview/workflows/variants/?include_archived=true" "&limit=1", + "/preview/workflows/variants/?include_archived=true&limit=1", ) # ---------------------------------------------------------------------- diff --git a/api/oss/tests/pytest/workflows/test_workflows_queries.py b/api/oss/tests/pytest/workflows/test_workflows_queries.py index 57163be02b..91de434e0b 100644 --- a/api/oss/tests/pytest/workflows/test_workflows_queries.py +++ b/api/oss/tests/pytest/workflows/test_workflows_queries.py @@ -144,7 +144,7 @@ def test_query_paginated_workflows( # ACT ------------------------------------------------------------------ response = authed_api( "GET", - "/preview/workflows/?include_archived=true" "&limit=1", + "/preview/workflows/?include_archived=true&limit=1", ) # ---------------------------------------------------------------------- diff --git a/api/oss/tests/pytest/workflows/test_workflows_retrieve.py b/api/oss/tests/pytest/workflows/test_workflows_retrieve.py index 8d824dc30f..fa6df8ea4b 100644 --- a/api/oss/tests/pytest/workflows/test_workflows_retrieve.py +++ b/api/oss/tests/pytest/workflows/test_workflows_retrieve.py @@ -201,8 +201,7 @@ def test_retrieve_by_revision_id(self, authed_api, mock_data): response = authed_api( "GET", - f"/preview/workflows/revisions/retrieve" - f"?workflow_revision_id={revision_id}", + f"/preview/workflows/revisions/retrieve?workflow_revision_id={revision_id}", ) assert response.status_code == 200 @@ -289,8 +288,7 @@ def test_retrieve_by_variant_id(self, authed_api, mock_data): response = authed_api( "GET", - f"/preview/workflows/revisions/retrieve" - f"?workflow_variant_id={variant_id}", + f"/preview/workflows/revisions/retrieve?workflow_variant_id={variant_id}", ) assert response.status_code == 200 diff --git a/sdk/agenta/client/backend/api_keys/client.py b/sdk/agenta/client/backend/api_keys/client.py index 167b48913e..b6cfa2e3c9 100644 --- a/sdk/agenta/client/backend/api_keys/client.py +++ b/sdk/agenta/client/backend/api_keys/client.py @@ -95,7 +95,7 @@ def delete_api_key( self, key_prefix: str, *, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> typing.Dict[str, typing.Optional[typing.Any]]: """ Delete an API key with the given key prefix for the authenticated user. @@ -246,7 +246,7 @@ async def delete_api_key( self, key_prefix: str, *, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> typing.Dict[str, typing.Optional[typing.Any]]: """ Delete an API key with the given key prefix for the authenticated user. diff --git a/sdk/agenta/client/backend/billing/client.py b/sdk/agenta/client/backend/billing/client.py index c4040b5cdc..b7881f3122 100644 --- a/sdk/agenta/client/backend/billing/client.py +++ b/sdk/agenta/client/backend/billing/client.py @@ -80,7 +80,7 @@ def create_checkout( *, plan: Plan, success_url: str, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> typing.Optional[typing.Any]: """ Parameters @@ -343,7 +343,7 @@ async def create_checkout( *, plan: Plan, success_url: str, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> typing.Optional[typing.Any]: """ Parameters diff --git a/sdk/agenta/client/backend/billing/raw_client.py b/sdk/agenta/client/backend/billing/raw_client.py index 055805a444..f937046f78 100644 --- a/sdk/agenta/client/backend/billing/raw_client.py +++ b/sdk/agenta/client/backend/billing/raw_client.py @@ -110,7 +110,7 @@ def create_checkout( *, plan: Plan, success_url: str, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[typing.Optional[typing.Any]]: """ Parameters @@ -506,7 +506,7 @@ async def create_checkout( *, plan: Plan, success_url: str, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[typing.Optional[typing.Any]]: """ Parameters diff --git a/sdk/agenta/client/backend/core/client_wrapper.py b/sdk/agenta/client/backend/core/client_wrapper.py index 84887b5aaa..bd3c9a874b 100644 --- a/sdk/agenta/client/backend/core/client_wrapper.py +++ b/sdk/agenta/client/backend/core/client_wrapper.py @@ -35,7 +35,7 @@ def __init__( api_key: str, base_url: str, timeout: typing.Optional[float] = None, - httpx_client: httpx.Client + httpx_client: httpx.Client, ): super().__init__(api_key=api_key, base_url=base_url, timeout=timeout) self.httpx_client = HttpClient( @@ -53,7 +53,7 @@ def __init__( api_key: str, base_url: str, timeout: typing.Optional[float] = None, - httpx_client: httpx.AsyncClient + httpx_client: httpx.AsyncClient, ): super().__init__(api_key=api_key, base_url=base_url, timeout=timeout) self.httpx_client = AsyncHttpClient( diff --git a/sdk/agenta/client/backend/core/file.py b/sdk/agenta/client/backend/core/file.py index c6d11fc708..3467175cb7 100644 --- a/sdk/agenta/client/backend/core/file.py +++ b/sdk/agenta/client/backend/core/file.py @@ -53,7 +53,9 @@ def with_content_type(*, file: File, default_content_type: str) -> File: filename, content = cast(Tuple[Optional[str], FileContent], file) # type: ignore return (filename, content, default_content_type) elif len(file) == 3: - filename, content, file_content_type = cast(Tuple[Optional[str], FileContent, Optional[str]], file) # type: ignore + filename, content, file_content_type = cast( + Tuple[Optional[str], FileContent, Optional[str]], file + ) # type: ignore out_content_type = file_content_type or default_content_type return (filename, content, out_content_type) elif len(file) == 4: diff --git a/sdk/agenta/client/backend/core/pydantic_utilities.py b/sdk/agenta/client/backend/core/pydantic_utilities.py index 9035a193ec..e498155179 100644 --- a/sdk/agenta/client/backend/core/pydantic_utilities.py +++ b/sdk/agenta/client/backend/core/pydantic_utilities.py @@ -78,7 +78,9 @@ class UniversalBaseModel(pydantic.BaseModel): ) @pydantic.model_serializer(mode="wrap", when_used="json") # type: ignore[attr-defined] - def serialize_model(self, handler: pydantic.SerializerFunctionWrapHandler) -> Any: # type: ignore[name-defined] + def serialize_model( + self, handler: pydantic.SerializerFunctionWrapHandler + ) -> Any: # type: ignore[name-defined] serialized = handler(self) data = { k: serialize_datetime(v) if isinstance(v, dt.datetime) else v @@ -260,7 +262,10 @@ def universal_root_validator( ) -> Callable[[AnyCallable], AnyCallable]: def decorator(func: AnyCallable) -> AnyCallable: if IS_PYDANTIC_V2: - return cast(AnyCallable, pydantic.model_validator(mode="before" if pre else "after")(func)) # type: ignore[attr-defined] + return cast( + AnyCallable, + pydantic.model_validator(mode="before" if pre else "after")(func), + ) # type: ignore[attr-defined] return cast(AnyCallable, pydantic.root_validator(pre=pre)(func)) # type: ignore[call-overload] return decorator @@ -271,7 +276,12 @@ def universal_field_validator( ) -> Callable[[AnyCallable], AnyCallable]: def decorator(func: AnyCallable) -> AnyCallable: if IS_PYDANTIC_V2: - return cast(AnyCallable, pydantic.field_validator(field_name, mode="before" if pre else "after")(func)) # type: ignore[attr-defined] + return cast( + AnyCallable, + pydantic.field_validator(field_name, mode="before" if pre else "after")( + func + ), + ) # type: ignore[attr-defined] return cast(AnyCallable, pydantic.validator(field_name, pre=pre)(func)) return decorator diff --git a/sdk/agenta/client/backend/types/account_request.py b/sdk/agenta/client/backend/types/account_request.py index 1c133345f3..d1bac62bd1 100644 --- a/sdk/agenta/client/backend/types/account_request.py +++ b/sdk/agenta/client/backend/types/account_request.py @@ -15,7 +15,9 @@ class AccountRequest(UniversalBaseModel): subscription: typing.Optional[LegacySubscriptionRequest] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/account_response.py b/sdk/agenta/client/backend/types/account_response.py index 6cb5ecbcd6..2894d7acf4 100644 --- a/sdk/agenta/client/backend/types/account_response.py +++ b/sdk/agenta/client/backend/types/account_response.py @@ -13,7 +13,9 @@ class AccountResponse(UniversalBaseModel): scopes: typing.Optional[typing.List[LegacyScopesResponse]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/agenta_node_dto.py b/sdk/agenta/client/backend/types/agenta_node_dto.py index 507b46f080..7992f8fe0a 100644 --- a/sdk/agenta/client/backend/types/agenta_node_dto.py +++ b/sdk/agenta/client/backend/types/agenta_node_dto.py @@ -39,7 +39,9 @@ class AgentaNodeDto(UniversalBaseModel): ] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/agenta_nodes_response.py b/sdk/agenta/client/backend/types/agenta_nodes_response.py index 77494ee114..a07dfb596f 100644 --- a/sdk/agenta/client/backend/types/agenta_nodes_response.py +++ b/sdk/agenta/client/backend/types/agenta_nodes_response.py @@ -17,7 +17,9 @@ class AgentaNodesResponse(UniversalBaseModel): count: typing.Optional[int] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/agenta_root_dto.py b/sdk/agenta/client/backend/types/agenta_root_dto.py index 5490cf802d..327d4de5db 100644 --- a/sdk/agenta/client/backend/types/agenta_root_dto.py +++ b/sdk/agenta/client/backend/types/agenta_root_dto.py @@ -19,7 +19,9 @@ class AgentaRootDto(UniversalBaseModel): trees: typing.List[AgentaTreeDto] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/agenta_roots_response.py b/sdk/agenta/client/backend/types/agenta_roots_response.py index 9d6b877368..3f24b51c8f 100644 --- a/sdk/agenta/client/backend/types/agenta_roots_response.py +++ b/sdk/agenta/client/backend/types/agenta_roots_response.py @@ -19,7 +19,9 @@ class AgentaRootsResponse(UniversalBaseModel): count: typing.Optional[int] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/agenta_tree_dto.py b/sdk/agenta/client/backend/types/agenta_tree_dto.py index 6ee850955b..1d741e6b6d 100644 --- a/sdk/agenta/client/backend/types/agenta_tree_dto.py +++ b/sdk/agenta/client/backend/types/agenta_tree_dto.py @@ -19,7 +19,9 @@ class AgentaTreeDto(UniversalBaseModel): nodes: typing.List[AgentaNodeDto] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/agenta_trees_response.py b/sdk/agenta/client/backend/types/agenta_trees_response.py index d3acaf17d3..974159fee1 100644 --- a/sdk/agenta/client/backend/types/agenta_trees_response.py +++ b/sdk/agenta/client/backend/types/agenta_trees_response.py @@ -19,7 +19,9 @@ class AgentaTreesResponse(UniversalBaseModel): count: typing.Optional[int] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/aggregated_result.py b/sdk/agenta/client/backend/types/aggregated_result.py index 5318a7c568..3d6ed569aa 100644 --- a/sdk/agenta/client/backend/types/aggregated_result.py +++ b/sdk/agenta/client/backend/types/aggregated_result.py @@ -13,7 +13,9 @@ class AggregatedResult(UniversalBaseModel): result: Result if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/analytics_response.py b/sdk/agenta/client/backend/types/analytics_response.py index f3002caf54..ae779bc85f 100644 --- a/sdk/agenta/client/backend/types/analytics_response.py +++ b/sdk/agenta/client/backend/types/analytics_response.py @@ -13,7 +13,9 @@ class AnalyticsResponse(UniversalBaseModel): buckets: typing.List[BucketDto] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation.py b/sdk/agenta/client/backend/types/annotation.py index a3247c4b4e..0cc814d1f6 100644 --- a/sdk/agenta/client/backend/types/annotation.py +++ b/sdk/agenta/client/backend/types/annotation.py @@ -29,14 +29,16 @@ class Annotation(UniversalBaseModel): kind: typing.Optional[AnnotationKind] = None source: typing.Optional[AnnotationSource] = None data: typing.Dict[str, typing.Optional["FullJsonOutput"]] - metadata: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + metadata: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) references: AnnotationReferences links: typing.Dict[str, AnnotationLink] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_create.py b/sdk/agenta/client/backend/types/annotation_create.py index deb2cb42e7..3065c3a914 100644 --- a/sdk/agenta/client/backend/types/annotation_create.py +++ b/sdk/agenta/client/backend/types/annotation_create.py @@ -25,7 +25,9 @@ class AnnotationCreate(UniversalBaseModel): links: typing.Dict[str, AnnotationLink] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_edit.py b/sdk/agenta/client/backend/types/annotation_edit.py index 2e5a99b974..a2783bedcc 100644 --- a/sdk/agenta/client/backend/types/annotation_edit.py +++ b/sdk/agenta/client/backend/types/annotation_edit.py @@ -17,7 +17,9 @@ class AnnotationEdit(UniversalBaseModel): meta: typing.Optional[typing.Dict[str, typing.Optional["FullJsonInput"]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_link.py b/sdk/agenta/client/backend/types/annotation_link.py index 8643681c52..bbc8ad0acb 100644 --- a/sdk/agenta/client/backend/types/annotation_link.py +++ b/sdk/agenta/client/backend/types/annotation_link.py @@ -11,7 +11,9 @@ class AnnotationLink(UniversalBaseModel): trace_id: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_link_response.py b/sdk/agenta/client/backend/types/annotation_link_response.py index b6bc1cade3..9821a81825 100644 --- a/sdk/agenta/client/backend/types/annotation_link_response.py +++ b/sdk/agenta/client/backend/types/annotation_link_response.py @@ -11,7 +11,9 @@ class AnnotationLinkResponse(UniversalBaseModel): annotation: AnnotationLink if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_query.py b/sdk/agenta/client/backend/types/annotation_query.py index ac5033a31e..44c339afd5 100644 --- a/sdk/agenta/client/backend/types/annotation_query.py +++ b/sdk/agenta/client/backend/types/annotation_query.py @@ -26,7 +26,9 @@ class AnnotationQuery(UniversalBaseModel): links: typing.Optional[typing.Dict[str, typing.Optional[AnnotationLink]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_query_request.py b/sdk/agenta/client/backend/types/annotation_query_request.py index 85fff1453e..d2afd6aeac 100644 --- a/sdk/agenta/client/backend/types/annotation_query_request.py +++ b/sdk/agenta/client/backend/types/annotation_query_request.py @@ -11,7 +11,9 @@ class AnnotationQueryRequest(UniversalBaseModel): annotation: typing.Optional[AnnotationQuery] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_reference.py b/sdk/agenta/client/backend/types/annotation_reference.py index e3a8899ef7..af194702ef 100644 --- a/sdk/agenta/client/backend/types/annotation_reference.py +++ b/sdk/agenta/client/backend/types/annotation_reference.py @@ -12,7 +12,9 @@ class AnnotationReference(UniversalBaseModel): version: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_references.py b/sdk/agenta/client/backend/types/annotation_references.py index f580cc93eb..79255ade37 100644 --- a/sdk/agenta/client/backend/types/annotation_references.py +++ b/sdk/agenta/client/backend/types/annotation_references.py @@ -13,7 +13,9 @@ class AnnotationReferences(UniversalBaseModel): testcase: typing.Optional[AnnotationReference] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotation_response.py b/sdk/agenta/client/backend/types/annotation_response.py index e42904a404..84393ac781 100644 --- a/sdk/agenta/client/backend/types/annotation_response.py +++ b/sdk/agenta/client/backend/types/annotation_response.py @@ -11,7 +11,9 @@ class AnnotationResponse(UniversalBaseModel): annotation: typing.Optional[Annotation] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/annotations_response.py b/sdk/agenta/client/backend/types/annotations_response.py index 4ca6ac4504..6285bb00e6 100644 --- a/sdk/agenta/client/backend/types/annotations_response.py +++ b/sdk/agenta/client/backend/types/annotations_response.py @@ -15,7 +15,9 @@ class AnnotationsResponse(UniversalBaseModel): annotations: typing.Optional[typing.List[Annotation]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/app.py b/sdk/agenta/client/backend/types/app.py index 1fdbeee2d9..acf3089c5c 100644 --- a/sdk/agenta/client/backend/types/app.py +++ b/sdk/agenta/client/backend/types/app.py @@ -13,7 +13,9 @@ class App(UniversalBaseModel): updated_at: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/app_variant_response.py b/sdk/agenta/client/backend/types/app_variant_response.py index d6fe10e48b..63f116ada8 100644 --- a/sdk/agenta/client/backend/types/app_variant_response.py +++ b/sdk/agenta/client/backend/types/app_variant_response.py @@ -24,7 +24,9 @@ class AppVariantResponse(UniversalBaseModel): workspace_id: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/app_variant_revision.py b/sdk/agenta/client/backend/types/app_variant_revision.py index 709d9f8f2c..1c3312185d 100644 --- a/sdk/agenta/client/backend/types/app_variant_revision.py +++ b/sdk/agenta/client/backend/types/app_variant_revision.py @@ -16,7 +16,9 @@ class AppVariantRevision(UniversalBaseModel): commit_message: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/artifact.py b/sdk/agenta/client/backend/types/artifact.py index d6fa55c584..35c235fd41 100644 --- a/sdk/agenta/client/backend/types/artifact.py +++ b/sdk/agenta/client/backend/types/artifact.py @@ -25,12 +25,14 @@ class Artifact(UniversalBaseModel): slug: typing.Optional[str] = None id: typing.Optional[str] = None flags: typing.Optional[typing.Dict[str, typing.Optional[bool]]] = None - metadata: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + metadata: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/base_output.py b/sdk/agenta/client/backend/types/base_output.py index cc04f56e96..7c8e8dd2c2 100644 --- a/sdk/agenta/client/backend/types/base_output.py +++ b/sdk/agenta/client/backend/types/base_output.py @@ -11,7 +11,9 @@ class BaseOutput(UniversalBaseModel): base_name: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/body_fetch_workflow_revision.py b/sdk/agenta/client/backend/types/body_fetch_workflow_revision.py index ef14df0220..5957cdb08e 100644 --- a/sdk/agenta/client/backend/types/body_fetch_workflow_revision.py +++ b/sdk/agenta/client/backend/types/body_fetch_workflow_revision.py @@ -12,7 +12,9 @@ class BodyFetchWorkflowRevision(UniversalBaseModel): revision_ref: typing.Optional[Reference] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/body_import_testset.py b/sdk/agenta/client/backend/types/body_import_testset.py index 11f4de5d00..f507f40fc0 100644 --- a/sdk/agenta/client/backend/types/body_import_testset.py +++ b/sdk/agenta/client/backend/types/body_import_testset.py @@ -11,7 +11,9 @@ class BodyImportTestset(UniversalBaseModel): testset_name: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/bucket_dto.py b/sdk/agenta/client/backend/types/bucket_dto.py index 663d00d6a4..c274787aaf 100644 --- a/sdk/agenta/client/backend/types/bucket_dto.py +++ b/sdk/agenta/client/backend/types/bucket_dto.py @@ -15,7 +15,9 @@ class BucketDto(UniversalBaseModel): error: MetricsDto if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/collect_status_response.py b/sdk/agenta/client/backend/types/collect_status_response.py index 10494451ee..377c566ef2 100644 --- a/sdk/agenta/client/backend/types/collect_status_response.py +++ b/sdk/agenta/client/backend/types/collect_status_response.py @@ -11,7 +11,9 @@ class CollectStatusResponse(UniversalBaseModel): status: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/config_db.py b/sdk/agenta/client/backend/types/config_db.py index ddf00f6ac2..0c0a348818 100644 --- a/sdk/agenta/client/backend/types/config_db.py +++ b/sdk/agenta/client/backend/types/config_db.py @@ -11,7 +11,9 @@ class ConfigDb(UniversalBaseModel): parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/config_dto.py b/sdk/agenta/client/backend/types/config_dto.py index 5a9a9e0233..be8bb9e0b6 100644 --- a/sdk/agenta/client/backend/types/config_dto.py +++ b/sdk/agenta/client/backend/types/config_dto.py @@ -21,7 +21,9 @@ class ConfigDto(UniversalBaseModel): environment_lifecycle: typing.Optional[LifecycleDto] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/config_response_model.py b/sdk/agenta/client/backend/types/config_response_model.py index e8946ddfe6..166cac71b4 100644 --- a/sdk/agenta/client/backend/types/config_response_model.py +++ b/sdk/agenta/client/backend/types/config_response_model.py @@ -21,7 +21,9 @@ class ConfigResponseModel(UniversalBaseModel): environment_lifecycle: typing.Optional[LifecycleDto] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/correct_answer.py b/sdk/agenta/client/backend/types/correct_answer.py index 774b58a351..cd33710c88 100644 --- a/sdk/agenta/client/backend/types/correct_answer.py +++ b/sdk/agenta/client/backend/types/correct_answer.py @@ -11,7 +11,9 @@ class CorrectAnswer(UniversalBaseModel): value: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/create_app_output.py b/sdk/agenta/client/backend/types/create_app_output.py index dc7ccf44cf..22d105444b 100644 --- a/sdk/agenta/client/backend/types/create_app_output.py +++ b/sdk/agenta/client/backend/types/create_app_output.py @@ -11,7 +11,9 @@ class CreateAppOutput(UniversalBaseModel): app_name: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/custom_model_settings_dto.py b/sdk/agenta/client/backend/types/custom_model_settings_dto.py index 11542da489..5f47561fc7 100644 --- a/sdk/agenta/client/backend/types/custom_model_settings_dto.py +++ b/sdk/agenta/client/backend/types/custom_model_settings_dto.py @@ -11,7 +11,9 @@ class CustomModelSettingsDto(UniversalBaseModel): extras: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/custom_provider_dto.py b/sdk/agenta/client/backend/types/custom_provider_dto.py index 9fe91614d3..51b2d8cf71 100644 --- a/sdk/agenta/client/backend/types/custom_provider_dto.py +++ b/sdk/agenta/client/backend/types/custom_provider_dto.py @@ -17,7 +17,9 @@ class CustomProviderDto(UniversalBaseModel): model_keys: typing.Optional[typing.List[str]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/custom_provider_settings_dto.py b/sdk/agenta/client/backend/types/custom_provider_settings_dto.py index 6742ce5647..16f5cb38c3 100644 --- a/sdk/agenta/client/backend/types/custom_provider_settings_dto.py +++ b/sdk/agenta/client/backend/types/custom_provider_settings_dto.py @@ -13,7 +13,9 @@ class CustomProviderSettingsDto(UniversalBaseModel): extras: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/delete_evaluation.py b/sdk/agenta/client/backend/types/delete_evaluation.py index ee5a46656d..f1791f8119 100644 --- a/sdk/agenta/client/backend/types/delete_evaluation.py +++ b/sdk/agenta/client/backend/types/delete_evaluation.py @@ -10,7 +10,9 @@ class DeleteEvaluation(UniversalBaseModel): evaluations_ids: typing.List[str] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/environment_output.py b/sdk/agenta/client/backend/types/environment_output.py index cb846cdd7d..c0fcf595e5 100644 --- a/sdk/agenta/client/backend/types/environment_output.py +++ b/sdk/agenta/client/backend/types/environment_output.py @@ -18,7 +18,9 @@ class EnvironmentOutput(UniversalBaseModel): workspace_id: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/environment_output_extended.py b/sdk/agenta/client/backend/types/environment_output_extended.py index 5058b3e323..bb7aae3db7 100644 --- a/sdk/agenta/client/backend/types/environment_output_extended.py +++ b/sdk/agenta/client/backend/types/environment_output_extended.py @@ -20,7 +20,9 @@ class EnvironmentOutputExtended(UniversalBaseModel): workspace_id: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/environment_revision.py b/sdk/agenta/client/backend/types/environment_revision.py index 885f714679..7dca7e6baf 100644 --- a/sdk/agenta/client/backend/types/environment_revision.py +++ b/sdk/agenta/client/backend/types/environment_revision.py @@ -17,7 +17,9 @@ class EnvironmentRevision(UniversalBaseModel): deployed_variant_name: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/error.py b/sdk/agenta/client/backend/types/error.py index faebb12bed..ebf7449865 100644 --- a/sdk/agenta/client/backend/types/error.py +++ b/sdk/agenta/client/backend/types/error.py @@ -11,7 +11,9 @@ class Error(UniversalBaseModel): stacktrace: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluation.py b/sdk/agenta/client/backend/types/evaluation.py index b811b63a7d..4b6aafdf2e 100644 --- a/sdk/agenta/client/backend/types/evaluation.py +++ b/sdk/agenta/client/backend/types/evaluation.py @@ -28,7 +28,9 @@ class Evaluation(UniversalBaseModel): updated_at: dt.datetime if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluation_scenario.py b/sdk/agenta/client/backend/types/evaluation_scenario.py index a4386cba17..bd6cbc5b0e 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario.py @@ -21,7 +21,9 @@ class EvaluationScenario(UniversalBaseModel): results: typing.List[EvaluationScenarioResult] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluation_scenario_input.py b/sdk/agenta/client/backend/types/evaluation_scenario_input.py index 6839f0009e..fc9cba6320 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario_input.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario_input.py @@ -12,7 +12,9 @@ class EvaluationScenarioInput(UniversalBaseModel): value: typing.Optional[typing.Any] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluation_scenario_output.py b/sdk/agenta/client/backend/types/evaluation_scenario_output.py index c8dc74923a..28a786c8c3 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario_output.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario_output.py @@ -13,7 +13,9 @@ class EvaluationScenarioOutput(UniversalBaseModel): latency: typing.Optional[float] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluation_scenario_result.py b/sdk/agenta/client/backend/types/evaluation_scenario_result.py index ec1a1b1016..b313435a92 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario_result.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario_result.py @@ -12,7 +12,9 @@ class EvaluationScenarioResult(UniversalBaseModel): result: Result if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator.py b/sdk/agenta/client/backend/types/evaluator.py index 107548ff21..2a40891d87 100644 --- a/sdk/agenta/client/backend/types/evaluator.py +++ b/sdk/agenta/client/backend/types/evaluator.py @@ -27,13 +27,15 @@ class Evaluator(UniversalBaseModel): slug: typing.Optional[str] = None id: typing.Optional[str] = None flags: typing.Optional[WorkflowFlags] = None - metadata: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + metadata: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) data: typing.Optional[WorkflowData] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_config.py b/sdk/agenta/client/backend/types/evaluator_config.py index 7134db5e79..f21f4c63cb 100644 --- a/sdk/agenta/client/backend/types/evaluator_config.py +++ b/sdk/agenta/client/backend/types/evaluator_config.py @@ -11,14 +11,16 @@ class EvaluatorConfig(UniversalBaseModel): name: str project_id: str evaluator_key: str - settings_values: typing.Optional[ - typing.Dict[str, typing.Optional[typing.Any]] - ] = None + settings_values: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = ( + None + ) created_at: str updated_at: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_flags.py b/sdk/agenta/client/backend/types/evaluator_flags.py index 14aadde2b5..cc8197a297 100644 --- a/sdk/agenta/client/backend/types/evaluator_flags.py +++ b/sdk/agenta/client/backend/types/evaluator_flags.py @@ -12,7 +12,9 @@ class EvaluatorFlags(UniversalBaseModel): is_human: typing.Optional[bool] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py b/sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py index a3aeeb0757..3856bb811d 100644 --- a/sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py +++ b/sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py @@ -10,7 +10,9 @@ class EvaluatorMappingOutputInterface(UniversalBaseModel): outputs: typing.Dict[str, typing.Optional[typing.Any]] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_output_interface.py b/sdk/agenta/client/backend/types/evaluator_output_interface.py index 1db8220dfb..e146e4b2b1 100644 --- a/sdk/agenta/client/backend/types/evaluator_output_interface.py +++ b/sdk/agenta/client/backend/types/evaluator_output_interface.py @@ -10,7 +10,9 @@ class EvaluatorOutputInterface(UniversalBaseModel): outputs: typing.Dict[str, typing.Optional[typing.Any]] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_query.py b/sdk/agenta/client/backend/types/evaluator_query.py index 7ed73abd28..fbc1d6f275 100644 --- a/sdk/agenta/client/backend/types/evaluator_query.py +++ b/sdk/agenta/client/backend/types/evaluator_query.py @@ -18,7 +18,9 @@ class EvaluatorQuery(UniversalBaseModel): meta: typing.Optional[typing.Dict[str, typing.Optional["FullJsonInput"]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_query_request.py b/sdk/agenta/client/backend/types/evaluator_query_request.py index 0d2d0bbe16..63a428d3ac 100644 --- a/sdk/agenta/client/backend/types/evaluator_query_request.py +++ b/sdk/agenta/client/backend/types/evaluator_query_request.py @@ -16,7 +16,9 @@ class EvaluatorQueryRequest(UniversalBaseModel): metadata: typing.Dict[str, typing.Optional["FullJsonInput"]] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_request.py b/sdk/agenta/client/backend/types/evaluator_request.py index b98fee8c76..2954faf33d 100644 --- a/sdk/agenta/client/backend/types/evaluator_request.py +++ b/sdk/agenta/client/backend/types/evaluator_request.py @@ -11,7 +11,9 @@ class EvaluatorRequest(UniversalBaseModel): evaluator: Evaluator if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluator_response.py b/sdk/agenta/client/backend/types/evaluator_response.py index 6c51063e19..4ecdc97d8d 100644 --- a/sdk/agenta/client/backend/types/evaluator_response.py +++ b/sdk/agenta/client/backend/types/evaluator_response.py @@ -12,7 +12,9 @@ class EvaluatorResponse(UniversalBaseModel): evaluator: typing.Optional[Evaluator] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/evaluators_response.py b/sdk/agenta/client/backend/types/evaluators_response.py index 6767051b1f..e1f51d917e 100644 --- a/sdk/agenta/client/backend/types/evaluators_response.py +++ b/sdk/agenta/client/backend/types/evaluators_response.py @@ -12,7 +12,9 @@ class EvaluatorsResponse(UniversalBaseModel): evaluator: typing.Optional[typing.List[Evaluator]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/exception_dto.py b/sdk/agenta/client/backend/types/exception_dto.py index da5e15f981..42202e195e 100644 --- a/sdk/agenta/client/backend/types/exception_dto.py +++ b/sdk/agenta/client/backend/types/exception_dto.py @@ -15,7 +15,9 @@ class ExceptionDto(UniversalBaseModel): attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/extended_o_tel_tracing_response.py b/sdk/agenta/client/backend/types/extended_o_tel_tracing_response.py index b71c3072be..ddf616323c 100644 --- a/sdk/agenta/client/backend/types/extended_o_tel_tracing_response.py +++ b/sdk/agenta/client/backend/types/extended_o_tel_tracing_response.py @@ -13,7 +13,9 @@ class ExtendedOTelTracingResponse(UniversalBaseModel): spans: typing.List[OTelSpanDto] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/get_config_response.py b/sdk/agenta/client/backend/types/get_config_response.py index 332e10b131..6eb698283f 100644 --- a/sdk/agenta/client/backend/types/get_config_response.py +++ b/sdk/agenta/client/backend/types/get_config_response.py @@ -12,7 +12,9 @@ class GetConfigResponse(UniversalBaseModel): parameters: typing.Dict[str, typing.Optional[typing.Any]] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/header.py b/sdk/agenta/client/backend/types/header.py index f274f59b7b..6980ec887a 100644 --- a/sdk/agenta/client/backend/types/header.py +++ b/sdk/agenta/client/backend/types/header.py @@ -11,7 +11,9 @@ class Header(UniversalBaseModel): description: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/http_validation_error.py b/sdk/agenta/client/backend/types/http_validation_error.py index 70a0f5f172..b066ebba5f 100644 --- a/sdk/agenta/client/backend/types/http_validation_error.py +++ b/sdk/agenta/client/backend/types/http_validation_error.py @@ -11,7 +11,9 @@ class HttpValidationError(UniversalBaseModel): detail: typing.Optional[typing.List[ValidationError]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/human_evaluation.py b/sdk/agenta/client/backend/types/human_evaluation.py index 562b47ac09..2b2098e2ed 100644 --- a/sdk/agenta/client/backend/types/human_evaluation.py +++ b/sdk/agenta/client/backend/types/human_evaluation.py @@ -22,7 +22,9 @@ class HumanEvaluation(UniversalBaseModel): updated_at: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/human_evaluation_scenario.py b/sdk/agenta/client/backend/types/human_evaluation_scenario.py index dcdc3d4fdf..cf75465f7e 100644 --- a/sdk/agenta/client/backend/types/human_evaluation_scenario.py +++ b/sdk/agenta/client/backend/types/human_evaluation_scenario.py @@ -21,7 +21,9 @@ class HumanEvaluationScenario(UniversalBaseModel): note: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/human_evaluation_scenario_input.py b/sdk/agenta/client/backend/types/human_evaluation_scenario_input.py index f6245cbbc8..6e64ddf64b 100644 --- a/sdk/agenta/client/backend/types/human_evaluation_scenario_input.py +++ b/sdk/agenta/client/backend/types/human_evaluation_scenario_input.py @@ -11,7 +11,9 @@ class HumanEvaluationScenarioInput(UniversalBaseModel): input_value: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/human_evaluation_scenario_output.py b/sdk/agenta/client/backend/types/human_evaluation_scenario_output.py index df597596e9..70652ea3f0 100644 --- a/sdk/agenta/client/backend/types/human_evaluation_scenario_output.py +++ b/sdk/agenta/client/backend/types/human_evaluation_scenario_output.py @@ -11,7 +11,9 @@ class HumanEvaluationScenarioOutput(UniversalBaseModel): variant_output: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/invite_request.py b/sdk/agenta/client/backend/types/invite_request.py index e5386bd40f..db34e84579 100644 --- a/sdk/agenta/client/backend/types/invite_request.py +++ b/sdk/agenta/client/backend/types/invite_request.py @@ -11,7 +11,9 @@ class InviteRequest(UniversalBaseModel): roles: typing.Optional[typing.List[str]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_analytics_response.py b/sdk/agenta/client/backend/types/legacy_analytics_response.py index c3125eb2b3..3dff39deb3 100644 --- a/sdk/agenta/client/backend/types/legacy_analytics_response.py +++ b/sdk/agenta/client/backend/types/legacy_analytics_response.py @@ -18,7 +18,9 @@ class LegacyAnalyticsResponse(UniversalBaseModel): data: typing.List[LegacyDataPoint] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_data_point.py b/sdk/agenta/client/backend/types/legacy_data_point.py index 99fa9a1ba5..fbbecae573 100644 --- a/sdk/agenta/client/backend/types/legacy_data_point.py +++ b/sdk/agenta/client/backend/types/legacy_data_point.py @@ -16,7 +16,9 @@ class LegacyDataPoint(UniversalBaseModel): total_tokens: int if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_evaluator.py b/sdk/agenta/client/backend/types/legacy_evaluator.py index 2cfef45886..ef2325c4ab 100644 --- a/sdk/agenta/client/backend/types/legacy_evaluator.py +++ b/sdk/agenta/client/backend/types/legacy_evaluator.py @@ -17,7 +17,9 @@ class LegacyEvaluator(UniversalBaseModel): tags: typing.List[str] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_scope_request.py b/sdk/agenta/client/backend/types/legacy_scope_request.py index b4eb0af563..b209fea283 100644 --- a/sdk/agenta/client/backend/types/legacy_scope_request.py +++ b/sdk/agenta/client/backend/types/legacy_scope_request.py @@ -10,7 +10,9 @@ class LegacyScopeRequest(UniversalBaseModel): name: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_scopes_response.py b/sdk/agenta/client/backend/types/legacy_scopes_response.py index 8e26d5830d..0c73ad5124 100644 --- a/sdk/agenta/client/backend/types/legacy_scopes_response.py +++ b/sdk/agenta/client/backend/types/legacy_scopes_response.py @@ -18,7 +18,9 @@ class LegacyScopesResponse(UniversalBaseModel): credentials: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_subscription_request.py b/sdk/agenta/client/backend/types/legacy_subscription_request.py index 84f3d4db8b..1139139284 100644 --- a/sdk/agenta/client/backend/types/legacy_subscription_request.py +++ b/sdk/agenta/client/backend/types/legacy_subscription_request.py @@ -10,7 +10,9 @@ class LegacySubscriptionRequest(UniversalBaseModel): plan: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_user_request.py b/sdk/agenta/client/backend/types/legacy_user_request.py index f3c1631bc0..748f1f6912 100644 --- a/sdk/agenta/client/backend/types/legacy_user_request.py +++ b/sdk/agenta/client/backend/types/legacy_user_request.py @@ -11,7 +11,9 @@ class LegacyUserRequest(UniversalBaseModel): email: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/legacy_user_response.py b/sdk/agenta/client/backend/types/legacy_user_response.py index 76d5b11542..fa833dc82b 100644 --- a/sdk/agenta/client/backend/types/legacy_user_response.py +++ b/sdk/agenta/client/backend/types/legacy_user_response.py @@ -10,7 +10,9 @@ class LegacyUserResponse(UniversalBaseModel): id: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/lifecycle_dto.py b/sdk/agenta/client/backend/types/lifecycle_dto.py index d9a958d835..a948b7433a 100644 --- a/sdk/agenta/client/backend/types/lifecycle_dto.py +++ b/sdk/agenta/client/backend/types/lifecycle_dto.py @@ -13,7 +13,9 @@ class LifecycleDto(UniversalBaseModel): updated_by: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/link_dto.py b/sdk/agenta/client/backend/types/link_dto.py index 7ec2c9ef42..53792bbbb5 100644 --- a/sdk/agenta/client/backend/types/link_dto.py +++ b/sdk/agenta/client/backend/types/link_dto.py @@ -13,7 +13,9 @@ class LinkDto(UniversalBaseModel): tree_id: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/list_api_keys_response.py b/sdk/agenta/client/backend/types/list_api_keys_response.py index f369b622c2..5645b7b97a 100644 --- a/sdk/agenta/client/backend/types/list_api_keys_response.py +++ b/sdk/agenta/client/backend/types/list_api_keys_response.py @@ -13,7 +13,9 @@ class ListApiKeysResponse(UniversalBaseModel): expiration_date: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/llm_run_rate_limit.py b/sdk/agenta/client/backend/types/llm_run_rate_limit.py index 0980d9214d..e49c088b8a 100644 --- a/sdk/agenta/client/backend/types/llm_run_rate_limit.py +++ b/sdk/agenta/client/backend/types/llm_run_rate_limit.py @@ -13,7 +13,9 @@ class LlmRunRateLimit(UniversalBaseModel): delay_between_batches: int if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/meta_request.py b/sdk/agenta/client/backend/types/meta_request.py index c6c5c2f637..8d327c8e1d 100644 --- a/sdk/agenta/client/backend/types/meta_request.py +++ b/sdk/agenta/client/backend/types/meta_request.py @@ -16,7 +16,9 @@ class MetaRequest(UniversalBaseModel): meta: typing.Dict[str, typing.Optional["FullJsonInput"]] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/metrics_dto.py b/sdk/agenta/client/backend/types/metrics_dto.py index a0eefd86f5..0069e27753 100644 --- a/sdk/agenta/client/backend/types/metrics_dto.py +++ b/sdk/agenta/client/backend/types/metrics_dto.py @@ -13,7 +13,9 @@ class MetricsDto(UniversalBaseModel): tokens: typing.Optional[int] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/new_testset.py b/sdk/agenta/client/backend/types/new_testset.py index decf6d3828..365f7ca7a6 100644 --- a/sdk/agenta/client/backend/types/new_testset.py +++ b/sdk/agenta/client/backend/types/new_testset.py @@ -11,7 +11,9 @@ class NewTestset(UniversalBaseModel): csvdata: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/node_dto.py b/sdk/agenta/client/backend/types/node_dto.py index 259f18b33c..a80a41b4fe 100644 --- a/sdk/agenta/client/backend/types/node_dto.py +++ b/sdk/agenta/client/backend/types/node_dto.py @@ -13,7 +13,9 @@ class NodeDto(UniversalBaseModel): type: typing.Optional[NodeType] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_context_dto.py b/sdk/agenta/client/backend/types/o_tel_context_dto.py index 2faa593ba4..518183ae00 100644 --- a/sdk/agenta/client/backend/types/o_tel_context_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_context_dto.py @@ -11,7 +11,9 @@ class OTelContextDto(UniversalBaseModel): span_id: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_event.py b/sdk/agenta/client/backend/types/o_tel_event.py index f5a2bc7cc5..2dd62903bb 100644 --- a/sdk/agenta/client/backend/types/o_tel_event.py +++ b/sdk/agenta/client/backend/types/o_tel_event.py @@ -16,12 +16,14 @@ class OTelEvent(UniversalBaseModel): name: str timestamp: Timestamp - attributes: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + attributes: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_event_dto.py b/sdk/agenta/client/backend/types/o_tel_event_dto.py index 2031177463..152ccc1cd0 100644 --- a/sdk/agenta/client/backend/types/o_tel_event_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_event_dto.py @@ -12,7 +12,9 @@ class OTelEventDto(UniversalBaseModel): attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_extra_dto.py b/sdk/agenta/client/backend/types/o_tel_extra_dto.py index 68b5fca1f2..f497b57a56 100644 --- a/sdk/agenta/client/backend/types/o_tel_extra_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_extra_dto.py @@ -15,7 +15,9 @@ class OTelExtraDto(UniversalBaseModel): links: typing.Optional[typing.List[OTelLinkDto]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_flat_span.py b/sdk/agenta/client/backend/types/o_tel_flat_span.py index 5873d6d85c..97bc818ec5 100644 --- a/sdk/agenta/client/backend/types/o_tel_flat_span.py +++ b/sdk/agenta/client/backend/types/o_tel_flat_span.py @@ -35,14 +35,16 @@ class OTelFlatSpan(UniversalBaseModel): end_time: typing.Optional[OTelFlatSpanOutputEndTime] = None status_code: typing.Optional[OTelStatusCode] = None status_message: typing.Optional[str] = None - attributes: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + attributes: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) events: typing.Optional[typing.List[OTelEvent]] = None links: typing.Optional[typing.List[OTelLink]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_link.py b/sdk/agenta/client/backend/types/o_tel_link.py index 0d449c52b9..186ff2c4a3 100644 --- a/sdk/agenta/client/backend/types/o_tel_link.py +++ b/sdk/agenta/client/backend/types/o_tel_link.py @@ -15,12 +15,14 @@ class OTelLink(UniversalBaseModel): span_id: str trace_id: str - attributes: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + attributes: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_link_dto.py b/sdk/agenta/client/backend/types/o_tel_link_dto.py index 7261632637..b439486296 100644 --- a/sdk/agenta/client/backend/types/o_tel_link_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_link_dto.py @@ -12,7 +12,9 @@ class OTelLinkDto(UniversalBaseModel): attributes: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_links_response.py b/sdk/agenta/client/backend/types/o_tel_links_response.py index 9f7be47a34..83844ba741 100644 --- a/sdk/agenta/client/backend/types/o_tel_links_response.py +++ b/sdk/agenta/client/backend/types/o_tel_links_response.py @@ -13,7 +13,9 @@ class OTelLinksResponse(UniversalBaseModel): links: typing.Optional[typing.List[OTelLink]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_span.py b/sdk/agenta/client/backend/types/o_tel_span.py index a39377066f..eec70d2f1a 100644 --- a/sdk/agenta/client/backend/types/o_tel_span.py +++ b/sdk/agenta/client/backend/types/o_tel_span.py @@ -45,7 +45,7 @@ class OTelSpan(UniversalBaseModel): model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( extra="allow", frozen=True, - json_schema_extra=lambda schema, model: None, # Disable schema generation to prevent recursion + json_schema_extra=lambda schema, model: None, # fmt: off ) # type: ignore # Pydantic v2 else: diff --git a/sdk/agenta/client/backend/types/o_tel_span_dto.py b/sdk/agenta/client/backend/types/o_tel_span_dto.py index 24999a7127..b60460f142 100644 --- a/sdk/agenta/client/backend/types/o_tel_span_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_span_dto.py @@ -26,7 +26,9 @@ class OTelSpanDto(UniversalBaseModel): links: typing.Optional[typing.List[OTelLinkDto]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_spans_tree.py b/sdk/agenta/client/backend/types/o_tel_spans_tree.py index c58bc757ad..92f4809a66 100644 --- a/sdk/agenta/client/backend/types/o_tel_spans_tree.py +++ b/sdk/agenta/client/backend/types/o_tel_spans_tree.py @@ -13,7 +13,9 @@ class OTelSpansTree(UniversalBaseModel): ] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_tracing_data_response.py b/sdk/agenta/client/backend/types/o_tel_tracing_data_response.py index 078d7899c8..2c44e2eebc 100644 --- a/sdk/agenta/client/backend/types/o_tel_tracing_data_response.py +++ b/sdk/agenta/client/backend/types/o_tel_tracing_data_response.py @@ -13,7 +13,9 @@ class OTelTracingDataResponse(UniversalBaseModel): spans: typing.List[OTelSpanDto] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_tracing_request.py b/sdk/agenta/client/backend/types/o_tel_tracing_request.py index 73a7395f4a..f098ae74f3 100644 --- a/sdk/agenta/client/backend/types/o_tel_tracing_request.py +++ b/sdk/agenta/client/backend/types/o_tel_tracing_request.py @@ -13,7 +13,9 @@ class OTelTracingRequest(UniversalBaseModel): traces: typing.Optional[typing.Dict[str, typing.Optional[OTelSpansTree]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/o_tel_tracing_response.py b/sdk/agenta/client/backend/types/o_tel_tracing_response.py index 63739203ab..8f4987c81e 100644 --- a/sdk/agenta/client/backend/types/o_tel_tracing_response.py +++ b/sdk/agenta/client/backend/types/o_tel_tracing_response.py @@ -18,7 +18,9 @@ class OTelTracingResponse(UniversalBaseModel): traces: typing.Optional[typing.Dict[str, typing.Optional[OTelSpansTree]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/organization.py b/sdk/agenta/client/backend/types/organization.py index 182b59e638..fef8794c5e 100644 --- a/sdk/agenta/client/backend/types/organization.py +++ b/sdk/agenta/client/backend/types/organization.py @@ -15,7 +15,9 @@ class Organization(UniversalBaseModel): workspaces: typing.Optional[typing.List[str]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/organization_details.py b/sdk/agenta/client/backend/types/organization_details.py index fe92068238..9720147c63 100644 --- a/sdk/agenta/client/backend/types/organization_details.py +++ b/sdk/agenta/client/backend/types/organization_details.py @@ -18,7 +18,9 @@ class OrganizationDetails(UniversalBaseModel): ] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/organization_membership_request.py b/sdk/agenta/client/backend/types/organization_membership_request.py index a68fbb3359..15e639eaa6 100644 --- a/sdk/agenta/client/backend/types/organization_membership_request.py +++ b/sdk/agenta/client/backend/types/organization_membership_request.py @@ -15,7 +15,9 @@ class OrganizationMembershipRequest(UniversalBaseModel): organization_ref: Reference if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/organization_output.py b/sdk/agenta/client/backend/types/organization_output.py index 55d4a1aea3..45dc45a53e 100644 --- a/sdk/agenta/client/backend/types/organization_output.py +++ b/sdk/agenta/client/backend/types/organization_output.py @@ -11,7 +11,9 @@ class OrganizationOutput(UniversalBaseModel): name: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/organization_request.py b/sdk/agenta/client/backend/types/organization_request.py index 688eeaff1b..a8bda700a3 100644 --- a/sdk/agenta/client/backend/types/organization_request.py +++ b/sdk/agenta/client/backend/types/organization_request.py @@ -12,7 +12,9 @@ class OrganizationRequest(UniversalBaseModel): is_paying: bool if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/parent_dto.py b/sdk/agenta/client/backend/types/parent_dto.py index 285505beae..be3179f83f 100644 --- a/sdk/agenta/client/backend/types/parent_dto.py +++ b/sdk/agenta/client/backend/types/parent_dto.py @@ -10,7 +10,9 @@ class ParentDto(UniversalBaseModel): id: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/project_membership_request.py b/sdk/agenta/client/backend/types/project_membership_request.py index efbb405623..8438f57ae9 100644 --- a/sdk/agenta/client/backend/types/project_membership_request.py +++ b/sdk/agenta/client/backend/types/project_membership_request.py @@ -15,7 +15,9 @@ class ProjectMembershipRequest(UniversalBaseModel): project_ref: Reference if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/project_request.py b/sdk/agenta/client/backend/types/project_request.py index 7fc1a9429a..ff6098e47b 100644 --- a/sdk/agenta/client/backend/types/project_request.py +++ b/sdk/agenta/client/backend/types/project_request.py @@ -15,7 +15,9 @@ class ProjectRequest(UniversalBaseModel): organization_ref: Reference if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/project_scope.py b/sdk/agenta/client/backend/types/project_scope.py index 17d17438bd..80244f856d 100644 --- a/sdk/agenta/client/backend/types/project_scope.py +++ b/sdk/agenta/client/backend/types/project_scope.py @@ -18,7 +18,9 @@ class ProjectScope(UniversalBaseModel): organization: Reference if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/projects_response.py b/sdk/agenta/client/backend/types/projects_response.py index 2688ea5348..6bd68600a5 100644 --- a/sdk/agenta/client/backend/types/projects_response.py +++ b/sdk/agenta/client/backend/types/projects_response.py @@ -17,7 +17,9 @@ class ProjectsResponse(UniversalBaseModel): is_demo: typing.Optional[bool] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/reference.py b/sdk/agenta/client/backend/types/reference.py index ef16defd21..09f33766ae 100644 --- a/sdk/agenta/client/backend/types/reference.py +++ b/sdk/agenta/client/backend/types/reference.py @@ -16,12 +16,14 @@ class Reference(UniversalBaseModel): id: typing.Optional[str] = None slug: typing.Optional[str] = None version: typing.Optional[str] = None - attributes: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonInput"]] - ] = None + attributes: typing.Optional[typing.Dict[str, typing.Optional["FullJsonInput"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/reference_dto.py b/sdk/agenta/client/backend/types/reference_dto.py index c4ce3b6094..40fd02f23a 100644 --- a/sdk/agenta/client/backend/types/reference_dto.py +++ b/sdk/agenta/client/backend/types/reference_dto.py @@ -13,7 +13,9 @@ class ReferenceDto(UniversalBaseModel): id: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/reference_request_model.py b/sdk/agenta/client/backend/types/reference_request_model.py index 37e8f65155..859f77daf2 100644 --- a/sdk/agenta/client/backend/types/reference_request_model.py +++ b/sdk/agenta/client/backend/types/reference_request_model.py @@ -13,7 +13,9 @@ class ReferenceRequestModel(UniversalBaseModel): id: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/result.py b/sdk/agenta/client/backend/types/result.py index 8eec65536a..f9154bae26 100644 --- a/sdk/agenta/client/backend/types/result.py +++ b/sdk/agenta/client/backend/types/result.py @@ -13,7 +13,9 @@ class Result(UniversalBaseModel): error: typing.Optional[Error] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/root_dto.py b/sdk/agenta/client/backend/types/root_dto.py index e099af2cbb..2753ce6105 100644 --- a/sdk/agenta/client/backend/types/root_dto.py +++ b/sdk/agenta/client/backend/types/root_dto.py @@ -10,7 +10,9 @@ class RootDto(UniversalBaseModel): id: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/scopes_response_model.py b/sdk/agenta/client/backend/types/scopes_response_model.py index 4531c11be0..a7526eac7b 100644 --- a/sdk/agenta/client/backend/types/scopes_response_model.py +++ b/sdk/agenta/client/backend/types/scopes_response_model.py @@ -11,7 +11,9 @@ class ScopesResponseModel(UniversalBaseModel): projects: typing.Optional[typing.Dict[str, typing.Dict[str, ProjectScope]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/secret_dto.py b/sdk/agenta/client/backend/types/secret_dto.py index 9aa3259b53..37ce12b9a7 100644 --- a/sdk/agenta/client/backend/types/secret_dto.py +++ b/sdk/agenta/client/backend/types/secret_dto.py @@ -13,7 +13,9 @@ class SecretDto(UniversalBaseModel): data: Data if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/secret_response_dto.py b/sdk/agenta/client/backend/types/secret_response_dto.py index 77c2a45945..5d0b6d9f75 100644 --- a/sdk/agenta/client/backend/types/secret_response_dto.py +++ b/sdk/agenta/client/backend/types/secret_response_dto.py @@ -18,7 +18,9 @@ class SecretResponseDto(UniversalBaseModel): lifecycle: typing.Optional[LifecycleDto] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/simple_evaluation_output.py b/sdk/agenta/client/backend/types/simple_evaluation_output.py index c0b927f73c..02b6f5bafe 100644 --- a/sdk/agenta/client/backend/types/simple_evaluation_output.py +++ b/sdk/agenta/client/backend/types/simple_evaluation_output.py @@ -15,7 +15,9 @@ class SimpleEvaluationOutput(UniversalBaseModel): evaluation_type: EvaluationType if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/span_dto.py b/sdk/agenta/client/backend/types/span_dto.py index 691d71a6f9..b92370d2ad 100644 --- a/sdk/agenta/client/backend/types/span_dto.py +++ b/sdk/agenta/client/backend/types/span_dto.py @@ -39,12 +39,14 @@ class SpanDto(UniversalBaseModel): refs: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None links: typing.Optional[typing.List[LinkDto]] = None otel: typing.Optional[OTelExtraDto] = None - nodes: typing.Optional[ - typing.Dict[str, typing.Optional["SpanDtoNodesValue"]] - ] = None + nodes: typing.Optional[typing.Dict[str, typing.Optional["SpanDtoNodesValue"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/standard_provider_dto.py b/sdk/agenta/client/backend/types/standard_provider_dto.py index df25d76d4d..9ce6db03ff 100644 --- a/sdk/agenta/client/backend/types/standard_provider_dto.py +++ b/sdk/agenta/client/backend/types/standard_provider_dto.py @@ -13,7 +13,9 @@ class StandardProviderDto(UniversalBaseModel): provider: StandardProviderSettingsDto if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/standard_provider_settings_dto.py b/sdk/agenta/client/backend/types/standard_provider_settings_dto.py index c0bc92be60..3b26a3f201 100644 --- a/sdk/agenta/client/backend/types/standard_provider_settings_dto.py +++ b/sdk/agenta/client/backend/types/standard_provider_settings_dto.py @@ -10,7 +10,9 @@ class StandardProviderSettingsDto(UniversalBaseModel): key: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/status_dto.py b/sdk/agenta/client/backend/types/status_dto.py index 47a96e3984..51d96949a3 100644 --- a/sdk/agenta/client/backend/types/status_dto.py +++ b/sdk/agenta/client/backend/types/status_dto.py @@ -12,7 +12,9 @@ class StatusDto(UniversalBaseModel): message: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/tags_request.py b/sdk/agenta/client/backend/types/tags_request.py index 5ee86f99d9..46056e16e7 100644 --- a/sdk/agenta/client/backend/types/tags_request.py +++ b/sdk/agenta/client/backend/types/tags_request.py @@ -16,7 +16,9 @@ class TagsRequest(UniversalBaseModel): metadata: typing.Dict[str, typing.Optional["FullJsonInput"]] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/testcase_response.py b/sdk/agenta/client/backend/types/testcase_response.py index 56fab720ae..72a99183ad 100644 --- a/sdk/agenta/client/backend/types/testcase_response.py +++ b/sdk/agenta/client/backend/types/testcase_response.py @@ -14,12 +14,14 @@ class TestcaseResponse(UniversalBaseModel): count: int - testcase: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + testcase: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/testset.py b/sdk/agenta/client/backend/types/testset.py index 5a50875540..b0f93a2067 100644 --- a/sdk/agenta/client/backend/types/testset.py +++ b/sdk/agenta/client/backend/types/testset.py @@ -27,12 +27,14 @@ class Testset(UniversalBaseModel): testcases: typing.Optional[ typing.List[typing.Dict[str, typing.Optional["FullJsonOutput"]]] ] = None - metadata: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + metadata: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/testset_output_response.py b/sdk/agenta/client/backend/types/testset_output_response.py index c73add9298..882a60687c 100644 --- a/sdk/agenta/client/backend/types/testset_output_response.py +++ b/sdk/agenta/client/backend/types/testset_output_response.py @@ -15,7 +15,9 @@ class TestsetOutputResponse(UniversalBaseModel): updated_at: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/testset_request.py b/sdk/agenta/client/backend/types/testset_request.py index 1e0448b2d3..12a336b7f0 100644 --- a/sdk/agenta/client/backend/types/testset_request.py +++ b/sdk/agenta/client/backend/types/testset_request.py @@ -11,7 +11,9 @@ class TestsetRequest(UniversalBaseModel): testset: Testset if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/testset_response.py b/sdk/agenta/client/backend/types/testset_response.py index 55a02c3e83..5c402dc3c3 100644 --- a/sdk/agenta/client/backend/types/testset_response.py +++ b/sdk/agenta/client/backend/types/testset_response.py @@ -12,7 +12,9 @@ class TestsetResponse(UniversalBaseModel): testset: typing.Optional[Testset] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/testset_simple_response.py b/sdk/agenta/client/backend/types/testset_simple_response.py index abd4e66869..6b6c4cbdff 100644 --- a/sdk/agenta/client/backend/types/testset_simple_response.py +++ b/sdk/agenta/client/backend/types/testset_simple_response.py @@ -12,7 +12,9 @@ class TestsetSimpleResponse(UniversalBaseModel): created_at: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/testsets_response.py b/sdk/agenta/client/backend/types/testsets_response.py index e1778bf1eb..f2f3eaeb46 100644 --- a/sdk/agenta/client/backend/types/testsets_response.py +++ b/sdk/agenta/client/backend/types/testsets_response.py @@ -12,7 +12,9 @@ class TestsetsResponse(UniversalBaseModel): testsets: typing.Optional[typing.List[Testset]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/time_dto.py b/sdk/agenta/client/backend/types/time_dto.py index 7f0aa58a57..5ed2705441 100644 --- a/sdk/agenta/client/backend/types/time_dto.py +++ b/sdk/agenta/client/backend/types/time_dto.py @@ -12,7 +12,9 @@ class TimeDto(UniversalBaseModel): end: dt.datetime if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/tree_dto.py b/sdk/agenta/client/backend/types/tree_dto.py index f62fd7f7e4..da4d5edb5b 100644 --- a/sdk/agenta/client/backend/types/tree_dto.py +++ b/sdk/agenta/client/backend/types/tree_dto.py @@ -12,7 +12,9 @@ class TreeDto(UniversalBaseModel): type: typing.Optional[TreeType] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/update_app_output.py b/sdk/agenta/client/backend/types/update_app_output.py index b96c4af042..bc24403f19 100644 --- a/sdk/agenta/client/backend/types/update_app_output.py +++ b/sdk/agenta/client/backend/types/update_app_output.py @@ -11,7 +11,9 @@ class UpdateAppOutput(UniversalBaseModel): app_name: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/user_request.py b/sdk/agenta/client/backend/types/user_request.py index f36c14bbed..c12e4d4e7b 100644 --- a/sdk/agenta/client/backend/types/user_request.py +++ b/sdk/agenta/client/backend/types/user_request.py @@ -11,7 +11,9 @@ class UserRequest(UniversalBaseModel): email: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/validation_error.py b/sdk/agenta/client/backend/types/validation_error.py index e388c3c1c1..a632c6d67b 100644 --- a/sdk/agenta/client/backend/types/validation_error.py +++ b/sdk/agenta/client/backend/types/validation_error.py @@ -13,7 +13,9 @@ class ValidationError(UniversalBaseModel): type: str if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_artifact.py b/sdk/agenta/client/backend/types/workflow_artifact.py index 4ea448652c..b772b1ff68 100644 --- a/sdk/agenta/client/backend/types/workflow_artifact.py +++ b/sdk/agenta/client/backend/types/workflow_artifact.py @@ -26,12 +26,14 @@ class WorkflowArtifact(UniversalBaseModel): slug: typing.Optional[str] = None id: typing.Optional[str] = None flags: typing.Optional[WorkflowFlags] = None - metadata: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + metadata: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_data.py b/sdk/agenta/client/backend/types/workflow_data.py index 81b144eb04..aef669af24 100644 --- a/sdk/agenta/client/backend/types/workflow_data.py +++ b/sdk/agenta/client/backend/types/workflow_data.py @@ -11,7 +11,9 @@ class WorkflowData(UniversalBaseModel): configuration: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_flags.py b/sdk/agenta/client/backend/types/workflow_flags.py index fe1e606e5c..815178930a 100644 --- a/sdk/agenta/client/backend/types/workflow_flags.py +++ b/sdk/agenta/client/backend/types/workflow_flags.py @@ -12,7 +12,9 @@ class WorkflowFlags(UniversalBaseModel): is_human: typing.Optional[bool] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_request.py b/sdk/agenta/client/backend/types/workflow_request.py index 2a00daa602..ba7b43f283 100644 --- a/sdk/agenta/client/backend/types/workflow_request.py +++ b/sdk/agenta/client/backend/types/workflow_request.py @@ -11,7 +11,9 @@ class WorkflowRequest(UniversalBaseModel): workflow: WorkflowArtifact if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_response.py b/sdk/agenta/client/backend/types/workflow_response.py index 62583827bb..38edf76823 100644 --- a/sdk/agenta/client/backend/types/workflow_response.py +++ b/sdk/agenta/client/backend/types/workflow_response.py @@ -12,7 +12,9 @@ class WorkflowResponse(UniversalBaseModel): workflow: typing.Optional[WorkflowArtifact] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_revision.py b/sdk/agenta/client/backend/types/workflow_revision.py index a114ebb0a8..68dd05400e 100644 --- a/sdk/agenta/client/backend/types/workflow_revision.py +++ b/sdk/agenta/client/backend/types/workflow_revision.py @@ -33,9 +33,9 @@ class WorkflowRevision(UniversalBaseModel): slug: typing.Optional[str] = None id: typing.Optional[str] = None flags: typing.Optional[WorkflowFlags] = None - metadata: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + metadata: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) data: typing.Optional[WorkflowData] = None artifact_id: typing.Optional[str] = None artifact: typing.Optional[Artifact] = None @@ -43,7 +43,9 @@ class WorkflowRevision(UniversalBaseModel): variant: typing.Optional[WorkflowVariant] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_revision_request.py b/sdk/agenta/client/backend/types/workflow_revision_request.py index 49f78fdfb6..96d604a712 100644 --- a/sdk/agenta/client/backend/types/workflow_revision_request.py +++ b/sdk/agenta/client/backend/types/workflow_revision_request.py @@ -11,7 +11,9 @@ class WorkflowRevisionRequest(UniversalBaseModel): revision: WorkflowRevision if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_revision_response.py b/sdk/agenta/client/backend/types/workflow_revision_response.py index 3f6169a7d8..bbf0cf80fa 100644 --- a/sdk/agenta/client/backend/types/workflow_revision_response.py +++ b/sdk/agenta/client/backend/types/workflow_revision_response.py @@ -12,7 +12,9 @@ class WorkflowRevisionResponse(UniversalBaseModel): revision: typing.Optional[WorkflowRevision] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_revisions_response.py b/sdk/agenta/client/backend/types/workflow_revisions_response.py index 23e72a17e2..180cd8c261 100644 --- a/sdk/agenta/client/backend/types/workflow_revisions_response.py +++ b/sdk/agenta/client/backend/types/workflow_revisions_response.py @@ -12,7 +12,9 @@ class WorkflowRevisionsResponse(UniversalBaseModel): revisions: typing.Optional[typing.List[WorkflowRevision]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_variant.py b/sdk/agenta/client/backend/types/workflow_variant.py index 2cea82ae9e..a4f5bb3c6a 100644 --- a/sdk/agenta/client/backend/types/workflow_variant.py +++ b/sdk/agenta/client/backend/types/workflow_variant.py @@ -27,14 +27,16 @@ class WorkflowVariant(UniversalBaseModel): slug: typing.Optional[str] = None id: typing.Optional[str] = None flags: typing.Optional[WorkflowFlags] = None - metadata: typing.Optional[ - typing.Dict[str, typing.Optional["FullJsonOutput"]] - ] = None + metadata: typing.Optional[typing.Dict[str, typing.Optional["FullJsonOutput"]]] = ( + None + ) artifact_id: typing.Optional[str] = None artifact: typing.Optional[WorkflowArtifact] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_variant_request.py b/sdk/agenta/client/backend/types/workflow_variant_request.py index 78044e7682..8eb98f1b36 100644 --- a/sdk/agenta/client/backend/types/workflow_variant_request.py +++ b/sdk/agenta/client/backend/types/workflow_variant_request.py @@ -11,7 +11,9 @@ class WorkflowVariantRequest(UniversalBaseModel): variant: WorkflowVariant if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_variant_response.py b/sdk/agenta/client/backend/types/workflow_variant_response.py index 1622e4709d..ba4b7221b7 100644 --- a/sdk/agenta/client/backend/types/workflow_variant_response.py +++ b/sdk/agenta/client/backend/types/workflow_variant_response.py @@ -12,7 +12,9 @@ class WorkflowVariantResponse(UniversalBaseModel): variant: typing.Optional[WorkflowVariant] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflow_variants_response.py b/sdk/agenta/client/backend/types/workflow_variants_response.py index b97a378f72..140d48a4aa 100644 --- a/sdk/agenta/client/backend/types/workflow_variants_response.py +++ b/sdk/agenta/client/backend/types/workflow_variants_response.py @@ -12,7 +12,9 @@ class WorkflowVariantsResponse(UniversalBaseModel): variants: typing.Optional[typing.List[WorkflowVariant]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workflows_response.py b/sdk/agenta/client/backend/types/workflows_response.py index 8bf9724d44..e85e8940de 100644 --- a/sdk/agenta/client/backend/types/workflows_response.py +++ b/sdk/agenta/client/backend/types/workflows_response.py @@ -12,7 +12,9 @@ class WorkflowsResponse(UniversalBaseModel): workflows: typing.Optional[typing.List[WorkflowArtifact]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workspace.py b/sdk/agenta/client/backend/types/workspace.py index 0cb0f3340b..0b368ecc4b 100644 --- a/sdk/agenta/client/backend/types/workspace.py +++ b/sdk/agenta/client/backend/types/workspace.py @@ -13,7 +13,9 @@ class Workspace(UniversalBaseModel): type: typing.Optional[str] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workspace_member_response.py b/sdk/agenta/client/backend/types/workspace_member_response.py index 487d9c405d..d7971468de 100644 --- a/sdk/agenta/client/backend/types/workspace_member_response.py +++ b/sdk/agenta/client/backend/types/workspace_member_response.py @@ -12,7 +12,9 @@ class WorkspaceMemberResponse(UniversalBaseModel): roles: typing.List[WorkspacePermission] if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workspace_membership_request.py b/sdk/agenta/client/backend/types/workspace_membership_request.py index d6767b4237..27bad0f18f 100644 --- a/sdk/agenta/client/backend/types/workspace_membership_request.py +++ b/sdk/agenta/client/backend/types/workspace_membership_request.py @@ -15,7 +15,9 @@ class WorkspaceMembershipRequest(UniversalBaseModel): workspace_ref: Reference if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workspace_permission.py b/sdk/agenta/client/backend/types/workspace_permission.py index b493882843..c883b966ad 100644 --- a/sdk/agenta/client/backend/types/workspace_permission.py +++ b/sdk/agenta/client/backend/types/workspace_permission.py @@ -14,7 +14,9 @@ class WorkspacePermission(UniversalBaseModel): permissions: typing.Optional[typing.List[Permission]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workspace_request.py b/sdk/agenta/client/backend/types/workspace_request.py index 301bce0e26..849cde31fd 100644 --- a/sdk/agenta/client/backend/types/workspace_request.py +++ b/sdk/agenta/client/backend/types/workspace_request.py @@ -14,7 +14,9 @@ class WorkspaceRequest(UniversalBaseModel): organization_ref: Reference if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/types/workspace_response.py b/sdk/agenta/client/backend/types/workspace_response.py index c79b86eb73..43c8d543ee 100644 --- a/sdk/agenta/client/backend/types/workspace_response.py +++ b/sdk/agenta/client/backend/types/workspace_response.py @@ -18,7 +18,9 @@ class WorkspaceResponse(UniversalBaseModel): members: typing.Optional[typing.List[WorkspaceMemberResponse]] = None if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( + extra="allow", frozen=True + ) # type: ignore # Pydantic v2 else: class Config: diff --git a/sdk/agenta/client/backend/workspace/client.py b/sdk/agenta/client/backend/workspace/client.py index 9997c212af..5eba1c5c32 100644 --- a/sdk/agenta/client/backend/workspace/client.py +++ b/sdk/agenta/client/backend/workspace/client.py @@ -102,7 +102,7 @@ def remove_user_from_workspace( workspace_id: str, *, email: str, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> typing.Optional[typing.Any]: """ Remove a user from a workspace. @@ -255,7 +255,7 @@ async def remove_user_from_workspace( workspace_id: str, *, email: str, - request_options: typing.Optional[RequestOptions] = None + request_options: typing.Optional[RequestOptions] = None, ) -> typing.Optional[typing.Any]: """ Remove a user from a workspace. diff --git a/sdk/agenta/sdk/agenta_init.py b/sdk/agenta/sdk/agenta_init.py index 45c85a13ff..612ffbf5e2 100644 --- a/sdk/agenta/sdk/agenta_init.py +++ b/sdk/agenta/sdk/agenta_init.py @@ -97,9 +97,9 @@ def init( _api_url = _host + "/api" try: - assert _host and isinstance( - _host, str - ), "Host is required. Please provide a valid host or set AGENTA_HOST environment variable." + assert _host and isinstance(_host, str), ( + "Host is required. Please provide a valid host or set AGENTA_HOST environment variable." + ) self.host = parse_url(url=_host) self.api_url = self.host + "/api" except AssertionError as e: diff --git a/sdk/agenta/sdk/decorators/running.py b/sdk/agenta/sdk/decorators/running.py index 0a44bcd072..b01ee15133 100644 --- a/sdk/agenta/sdk/decorators/running.py +++ b/sdk/agenta/sdk/decorators/running.py @@ -53,13 +53,11 @@ class InvokeFn(Protocol): async def __call__( self, request: Union[WorkflowServiceRequest, dict], - ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse]: - ... + ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse]: ... class InspectFn(Protocol): - async def __call__(self) -> WorkflowServiceRequest: - ... + async def __call__(self) -> WorkflowServiceRequest: ... class Workflow: @@ -81,8 +79,7 @@ async def invoke( credentials: Optional[str] = None, # **kwargs, - ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse]: - ... + ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse]: ... async def inspect( self, @@ -90,8 +87,7 @@ async def inspect( credentials: Optional[str] = None, # **kwargs, - ) -> WorkflowServiceRequest: - ... + ) -> WorkflowServiceRequest: ... def __call__(self, *args, **kwargs) -> Any: return self._fn(*args, **kwargs) diff --git a/sdk/agenta/sdk/decorators/serving.py b/sdk/agenta/sdk/decorators/serving.py index c8683e4f63..6f2d501cf7 100644 --- a/sdk/agenta/sdk/decorators/serving.py +++ b/sdk/agenta/sdk/decorators/serving.py @@ -656,9 +656,9 @@ def add_config_params_to_parser( def add_func_params_to_parser(self, updated_params: list) -> None: """Add function parameters to function signature.""" for name, param in signature(self.func).parameters.items(): - assert ( - len(param.default.__class__.__bases__) == 1 - ), f"Inherited standard type of {param.default.__class__} needs to be one." + assert len(param.default.__class__.__bases__) == 1, ( + f"Inherited standard type of {param.default.__class__} needs to be one." + ) updated_params.append( Parameter( name, @@ -718,9 +718,9 @@ def openapi(self): -1 ] # Extract schema name if schema_name in schema_name_map: - content["schema"][ - "$ref" - ] = f"#/components/schemas/{schema_name_map[schema_name]}" + content["schema"]["$ref"] = ( + f"#/components/schemas/{schema_name_map[schema_name]}" + ) if "responses" in method: for status_code, response in method["responses"].items(): @@ -734,9 +734,9 @@ def openapi(self): -1 ] # Extract schema name if schema_name in schema_name_map: - content["schema"][ - "$ref" - ] = f"#/components/schemas/{schema_name_map[schema_name]}" + content["schema"]["$ref"] = ( + f"#/components/schemas/{schema_name_map[schema_name]}" + ) # ✅ Update OpenAPI schema with fixed schemas openapi_schema["components"]["schemas"] = updated_schemas diff --git a/sdk/agenta/sdk/evaluations/preview/evaluate.py b/sdk/agenta/sdk/evaluations/preview/evaluate.py index c5e460ffb6..af809876a4 100644 --- a/sdk/agenta/sdk/evaluations/preview/evaluate.py +++ b/sdk/agenta/sdk/evaluations/preview/evaluate.py @@ -301,13 +301,11 @@ async def aevaluate( print() print( - "──────────────────────────────────────" - "──────────────────────────────────────" + "────────────────────────────────────────────────────────────────────────────" ) print(f"Evaluation running...") print( - "──────────────────────────────────────" - "──────────────────────────────────────" + "────────────────────────────────────────────────────────────────────────────" ) suffix = _timestamp_suffix() @@ -377,7 +375,7 @@ async def aevaluate( print( f"{UNICODE['pipe']}" - f"{UNICODE['next'if testcase_idx < len(testcases) - 1 else 'last']}" + f"{UNICODE['next' if testcase_idx < len(testcases) - 1 else 'last']}" f"{UNICODE['here']}" f"{UNICODE['skip']}" f"{UNICODE['skip']}" @@ -748,18 +746,15 @@ async def aevaluate( run_url = await aget_url(run_id=run.id) print( - "──────────────────────────────────────" - "──────────────────────────────────────" + "────────────────────────────────────────────────────────────────────────────" ) print(f"Evaluation finished.") print( - "--------------------------------------" - "--------------------------------------" + "----------------------------------------------------------------------------" ) print(f"Evaluation URL: {run_url or '[unavailable]'}") print( - "──────────────────────────────────────" - "──────────────────────────────────────" + "────────────────────────────────────────────────────────────────────────────" ) print() diff --git a/sdk/agenta/sdk/evaluations/preview/utils.py b/sdk/agenta/sdk/evaluations/preview/utils.py index 609ecfce47..c6b1e72f98 100644 --- a/sdk/agenta/sdk/evaluations/preview/utils.py +++ b/sdk/agenta/sdk/evaluations/preview/utils.py @@ -191,7 +191,7 @@ def smart_format_content(content: Any, max_length: int = 200) -> str: if len(content) <= max_length: return content else: - return f"{content[:max_length-3]}..." + return f"{content[: max_length - 3]}..." if isinstance(content, (dict, list)): try: @@ -213,7 +213,7 @@ def smart_format_content(content: Any, max_length: int = 200) -> str: if len(full_preview) <= max_length: return full_preview else: - return f"{full_preview[:max_length-3]}..." + return f"{full_preview[: max_length - 3]}..." else: # list count = len(content) item_preview = ( @@ -411,7 +411,7 @@ def make_row(values, widths, left="┃", mid="┃", right="┃"): if "\n" in val_str: # Take first line for table display val_str = val_str.split("\n")[0] - formatted.append(f" {val_str:<{width-2}} ") + formatted.append(f" {val_str:<{width - 2}} ") return left + mid.join(formatted) + right # Responsive column widths @@ -541,7 +541,7 @@ async def display_evaluation_results( for i, scenario in enumerate(scenario_iterator): if not RICH_AVAILABLE and show_detailed_logs: print( - f" 📄 scenario {i+1}/{len(scenarios_to_process)}: {scenario['scenario'].id}" + f" 📄 scenario {i + 1}/{len(scenarios_to_process)}: {scenario['scenario'].id}" ) # type:ignore elif show_detailed_logs: print(f" scenario_id={scenario['scenario'].id}") # type:ignore diff --git a/sdk/agenta/sdk/litellm/mockllm.py b/sdk/agenta/sdk/litellm/mockllm.py index 01b9fecff2..249505be82 100644 --- a/sdk/agenta/sdk/litellm/mockllm.py +++ b/sdk/agenta/sdk/litellm/mockllm.py @@ -67,8 +67,7 @@ def user_aws_credentials_from(ps: dict): class LitellmProtocol(Protocol): - async def acompletion(self, *args: Any, **kwargs: Any) -> Any: - ... + async def acompletion(self, *args: Any, **kwargs: Any) -> Any: ... async def acompletion(*args, **kwargs): diff --git a/sdk/agenta/sdk/managers/shared.py b/sdk/agenta/sdk/managers/shared.py index 0c214e408a..99fc5cba32 100644 --- a/sdk/agenta/sdk/managers/shared.py +++ b/sdk/agenta/sdk/managers/shared.py @@ -478,7 +478,9 @@ def commit( config=ConfigRequest( params=parameters, variant_ref=variant_ref.model_dump() if variant_ref else None, # type: ignore - application_ref=application_ref.model_dump() if application_ref else None, # type: ignore + application_ref=application_ref.model_dump() + if application_ref + else None, # type: ignore ) ) diff --git a/sdk/agenta/sdk/middlewares/running/normalizer.py b/sdk/agenta/sdk/middlewares/running/normalizer.py index e3fdd2acdd..cec3cda676 100644 --- a/sdk/agenta/sdk/middlewares/running/normalizer.py +++ b/sdk/agenta/sdk/middlewares/running/normalizer.py @@ -106,7 +106,10 @@ async def _normalize_request( async def _normalize_response( self, result: Any, - ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse,]: + ) -> Union[ + WorkflowServiceBatchResponse, + WorkflowServiceStreamResponse, + ]: if isawaitable(result): result = await result diff --git a/sdk/tests/legacy/management/variant/test_variant_manager.py b/sdk/tests/legacy/management/variant/test_variant_manager.py index 660f105cbc..1d555a0db4 100644 --- a/sdk/tests/legacy/management/variant/test_variant_manager.py +++ b/sdk/tests/legacy/management/variant/test_variant_manager.py @@ -24,9 +24,9 @@ async def test_configs_add_success(self, http_client, get_completion_app_from_li ) # ASSERT: Verify response - assert ( - response.status_code == 200 - ), f"Failed to add config for variant {test_variant_slug}" + assert response.status_code == 200, ( + f"Failed to add config for variant {test_variant_slug}" + ) response_data = response.json() assert "params" in response_data, "Response missing 'params'" assert "url" in response_data, "Response missing 'url'" @@ -55,9 +55,9 @@ async def test_configs_add_duplicate( # ASSERT: Verify error response for duplicate assert response.status_code == 400, "Expected 400 error for duplicate config" - assert ( - response.json()["detail"] == "Config already exists." - ), "Incorrect error message for duplicate config" + assert response.json()["detail"] == "Config already exists.", ( + "Incorrect error message for duplicate config" + ) @pytest.mark.asyncio @pytest.mark.variant_manager @@ -79,12 +79,12 @@ async def test_configs_nonexistent_app(self, http_client): ) # ASSERT: Verify error response for non-existent application - assert ( - response.status_code == 404 - ), "Expected 404 error for non-existent application" - assert ( - response.json()["detail"] == "Config not found." - ), "Incorrect error message for non-existent application" + assert response.status_code == 404, ( + "Expected 404 error for non-existent application" + ) + assert response.json()["detail"] == "Config not found.", ( + "Incorrect error message for non-existent application" + ) @pytest.mark.asyncio @pytest.mark.variant_manager diff --git a/sdk/tests/legacy/new_tests/admin/tests.py b/sdk/tests/legacy/new_tests/admin/tests.py index 356aa29581..27d4aeb883 100644 --- a/sdk/tests/legacy/new_tests/admin/tests.py +++ b/sdk/tests/legacy/new_tests/admin/tests.py @@ -16,9 +16,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -35,9 +35,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -54,6 +54,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/sdk/tests/legacy/new_tests/apps/tests.py b/sdk/tests/legacy/new_tests/apps/tests.py index 5eb076f323..60b77aba13 100644 --- a/sdk/tests/legacy/new_tests/apps/tests.py +++ b/sdk/tests/legacy/new_tests/apps/tests.py @@ -39,12 +39,12 @@ async def test_create_without_default_params(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" - assert ( - response_data["app_name"] == app_data["app_name"] - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) + assert response_data["app_name"] == app_data["app_name"], ( + f"Failed for case: {description}" + ) # Cleanup: Remove application await delete_application(http_client, response_data["app_id"], headers) @@ -64,9 +64,9 @@ async def test_create_invalid_params(self, http_client): response = await http_client.post("/apps", json=app_data, headers=headers) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -86,9 +86,9 @@ async def test_create_conflicts(self, http_client): response = await http_client.post("/apps", json=app_data, headers=headers) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup: Remove application app_cleanup_response = await http_client.get("/apps", headers=headers) @@ -120,9 +120,9 @@ async def test_permissions_principal_not_in_scope_post(self, http_client): ) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -213,9 +213,9 @@ async def test_list_query_filter_no_element(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == len(elements), f"Failed for case: {description}" @pytest.mark.asyncio @@ -236,9 +236,9 @@ async def test_list_query_filter_one_element(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 1, f"Failed for case: {description}" # Cleanup: Remove application @@ -263,9 +263,9 @@ async def test_list_query_filter_many_elements_small_data(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 3, f"Failed for case: {description}" # Cleanup: Remove applications @@ -291,9 +291,9 @@ async def test_list_query_filter_many_elements_big_data(self, http_client): response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 6, f"Failed for case: {description}" # Cleanup: Remove applications @@ -326,9 +326,9 @@ async def test_permissions_principal_not_in_scope(self, http_client): ) # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup: Delete the application with valid principal await delete_application(http_client, app["app_id"], owner_headers) @@ -361,9 +361,9 @@ async def test_permissions_allowed(self, http_client): list_of_status_codes.append(response.status_code) # Assert: Verify the response - assert ( - list_of_status_codes.count(expected_status) == 3 - ), f"Failed for case: {description}" + assert list_of_status_codes.count(expected_status) == 3, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical diff --git a/sdk/tests/legacy/new_tests/auth/tests.py b/sdk/tests/legacy/new_tests/auth/tests.py index b09b4b4c61..1a61f0a034 100644 --- a/sdk/tests/legacy/new_tests/auth/tests.py +++ b/sdk/tests/legacy/new_tests/auth/tests.py @@ -16,9 +16,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -35,9 +35,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -54,6 +54,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/sdk/tests/legacy/new_tests/sdk/apps/tests.py b/sdk/tests/legacy/new_tests/sdk/apps/tests.py index 3d379d5d5f..d53a001e99 100644 --- a/sdk/tests/legacy/new_tests/sdk/apps/tests.py +++ b/sdk/tests/legacy/new_tests/sdk/apps/tests.py @@ -44,9 +44,9 @@ async def test_create_app_successfully(self, http_client, setup_class_fixture): # ASSERT assert response.app_name == app_name - assert isinstance( - response.model_dump(), dict - ), "Response data is not a dictionary." + assert isinstance(response.model_dump(), dict), ( + "Response data is not a dictionary." + ) # CLEANUP await delete_application( diff --git a/sdk/tests/legacy/new_tests/testsets/tests.py b/sdk/tests/legacy/new_tests/testsets/tests.py index 70646d4f9c..543bdaceaf 100644 --- a/sdk/tests/legacy/new_tests/testsets/tests.py +++ b/sdk/tests/legacy/new_tests/testsets/tests.py @@ -77,9 +77,9 @@ async def test_upload_file_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # @pytest.mark.asyncio # @pytest.mark.typical @@ -148,9 +148,9 @@ async def test_get_testset_owner_access(self, http_client): response = await http_client.get(f"/testsets/{testset['id']}", headers=headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert "id" in response.json(), f"Failed for case: {description}" # Cleanup @@ -191,9 +191,9 @@ async def test_create_testset_success(self, http_client): await delete_testset(http_client, response_data["id"], headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert "id" in response_data, f"Failed for case: {description}" @pytest.mark.asyncio @@ -213,9 +213,9 @@ async def test_create_testset_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -241,9 +241,9 @@ async def test_create_testset_non_member_access(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -260,9 +260,9 @@ async def test_no_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 0, f"Failed for case: {description}" @pytest.mark.asyncio @@ -282,9 +282,9 @@ async def test_one_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 1, f"Failed for case: {description}" # Cleanup @@ -308,9 +308,9 @@ async def test_many_elements_small_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 3, f"Failed for case: {description}" # Cleanup @@ -335,9 +335,9 @@ async def test_many_elements_big_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 6, f"Failed for case: {description}" # Cleanup @@ -368,9 +368,9 @@ async def test_permissions_principal_not_in_scope(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], owner_headers) @@ -391,9 +391,9 @@ async def test_permissions_allowed(self, http_client): response = await http_client.get("/testsets", headers=owner_headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -410,9 +410,9 @@ async def test_no_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 0, f"Failed for case: {description}" @pytest.mark.asyncio @@ -432,9 +432,9 @@ async def test_one_element(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 1, f"Failed for case: {description}" # Cleanup @@ -458,9 +458,9 @@ async def test_many_elements_small_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 3, f"Failed for case: {description}" # Cleanup @@ -485,9 +485,9 @@ async def test_many_elements_big_data(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert len(response_data) == 6, f"Failed for case: {description}" # Cleanup @@ -518,9 +518,9 @@ async def test_permissions_principal_not_in_scope(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], owner_headers) @@ -541,9 +541,9 @@ async def test_permissions_allowed(self, http_client): response = await http_client.get("/testsets", headers=owner_headers) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -565,9 +565,9 @@ async def test_update_success(self, http_client): response_data = response.json() # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) assert response_data["_id"] == testset["id"], f"Failed for case: {description}" # Cleanup @@ -592,9 +592,9 @@ async def test_update_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], headers) @@ -622,9 +622,9 @@ async def test_update_non_member_access(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) # Cleanup await delete_testset(http_client, testset["id"], member_headers) @@ -650,9 +650,9 @@ async def test_delete_success(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -674,9 +674,9 @@ async def test_delete_validation_failure(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -698,6 +698,6 @@ async def test_delete_non_existent(self, http_client): ) # Assert - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/sdk/tests/legacy/new_tests/vault_router/test_vault_secrets_apis.py b/sdk/tests/legacy/new_tests/vault_router/test_vault_secrets_apis.py index 245b5affc1..0de50397f6 100644 --- a/sdk/tests/legacy/new_tests/vault_router/test_vault_secrets_apis.py +++ b/sdk/tests/legacy/new_tests/vault_router/test_vault_secrets_apis.py @@ -41,9 +41,9 @@ async def test_create_secret_with_viewer_role( json=valid_secret_payload, ) - assert ( - create_response.status_code == 403 - ), "Secret creation cannot be successful. Given that apikey belongs to a user with 'viewer' role." + assert create_response.status_code == 403, ( + "Secret creation cannot be successful. Given that apikey belongs to a user with 'viewer' role." + ) created_secret_message = create_response.json()["detail"] assert ( @@ -84,9 +84,9 @@ async def test_create_secret_with_invalid_secret_kind(self, async_client): "secrets", json=invalid_payload, ) - assert ( - response.status_code == 422 - ), "Should reject payload with invalid secret kind" + assert response.status_code == 422, ( + "Should reject payload with invalid secret kind" + ) @pytest.mark.asyncio @pytest.mark.secret_creation @@ -104,9 +104,9 @@ async def test_create_secret_with_invalid_provider_kind(self, async_client): "secrets", json=invalid_payload, ) - assert ( - response.status_code == 422 - ), "Should reject payload with invalid secret provider kind" + assert response.status_code == 422, ( + "Should reject payload with invalid secret provider kind" + ) @pytest.mark.asyncio @pytest.mark.secret_retrieval @@ -204,9 +204,9 @@ async def test_update_secret_with_viewer_role( json=update_payload, ) - assert ( - update_response.status_code == 403 - ), "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + assert update_response.status_code == 403, ( + "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + ) update_response_message = update_response.json()["detail"] assert ( @@ -233,9 +233,9 @@ async def test_delete_secret(self, async_client, valid_secret_payload): get_response = await async_client.get( f"secrets/{secret_id}", ) - assert ( - get_response.status_code == 404 - ), "Deleted secret should not be retrievable" + assert get_response.status_code == 404, ( + "Deleted secret should not be retrievable" + ) @pytest.mark.asyncio @pytest.mark.secret_deletion @@ -254,9 +254,9 @@ async def test_delete_secret_with_viewer_role( f"secrets/{secret_id}", headers={"Authorization": f"ApiKey {os.environ.get('VIEWER_API_KEY', '')}"}, ) - assert ( - delete_response.status_code == 403 - ), "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + assert delete_response.status_code == 403, ( + "Secret update cannot be successful. Given that apikey belongs to a user with 'viewer' role." + ) delete_response_message = delete_response.json()["detail"] assert ( @@ -272,6 +272,6 @@ async def test_delete_nonexistent_secret(self, async_client): response = await async_client.delete( f"secrets/{non_existent_id}", ) - assert ( - response.status_code == 204 - ), "Should always return 204 since the endpoint is idempotent" + assert response.status_code == 204, ( + "Should always return 204 since the endpoint is idempotent" + ) diff --git a/sdk/tests/legacy/new_tests/workflows/admin/tests.py b/sdk/tests/legacy/new_tests/workflows/admin/tests.py index efa0a31025..3b695fe6d5 100644 --- a/sdk/tests/legacy/new_tests/workflows/admin/tests.py +++ b/sdk/tests/legacy/new_tests/workflows/admin/tests.py @@ -17,9 +17,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -37,9 +37,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -57,6 +57,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("admin/accounts", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/sdk/tests/legacy/new_tests/workflows/auth/tests.py b/sdk/tests/legacy/new_tests/workflows/auth/tests.py index 32dee3c697..5dbfeb795e 100644 --- a/sdk/tests/legacy/new_tests/workflows/auth/tests.py +++ b/sdk/tests/legacy/new_tests/workflows/auth/tests.py @@ -17,9 +17,9 @@ async def test_api_authentication_missing_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -37,9 +37,9 @@ async def test_api_authentication_unsupported_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) @pytest.mark.asyncio @pytest.mark.typical @@ -57,6 +57,6 @@ async def test_api_authentication_invalid_token(self, http_client): response = await http_client.get("apps", headers=headers) # ASSERT: verify response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) diff --git a/sdk/tests/legacy/new_tests/workflows/observability/tests.py b/sdk/tests/legacy/new_tests/workflows/observability/tests.py index 3e215fab92..26a539563d 100644 --- a/sdk/tests/legacy/new_tests/workflows/observability/tests.py +++ b/sdk/tests/legacy/new_tests/workflows/observability/tests.py @@ -70,6 +70,6 @@ async def test_completion_generate_observability_tree( ) is_match = exact_match(workflow_nodes, observability_nodes) - assert ( - is_match is True - ), "Workflow nodes does not match nodes from observability" + assert is_match is True, ( + "Workflow nodes does not match nodes from observability" + ) diff --git a/sdk/tests/legacy/new_tests/workflows/permissions/tests.py b/sdk/tests/legacy/new_tests/workflows/permissions/tests.py index 97dcb14561..d33923c12c 100644 --- a/sdk/tests/legacy/new_tests/workflows/permissions/tests.py +++ b/sdk/tests/legacy/new_tests/workflows/permissions/tests.py @@ -67,9 +67,9 @@ async def test_permissions_principal_not_in_scope( response_data = response.json() # Assert: Verify the response - assert ( - response.status_code == expected_status - ), f"Failed for case: {description}" - assert ( - response.json().get("detail") == "Service execution not allowed." - ), f"Failed for case: {description}" + assert response.status_code == expected_status, ( + f"Failed for case: {description}" + ) + assert response.json().get("detail") == "Service execution not allowed.", ( + f"Failed for case: {description}" + ) diff --git a/sdk/tests/legacy/sdk_routing/conftest.py b/sdk/tests/legacy/sdk_routing/conftest.py index d02938591b..ba5866d645 100644 --- a/sdk/tests/legacy/sdk_routing/conftest.py +++ b/sdk/tests/legacy/sdk_routing/conftest.py @@ -177,10 +177,10 @@ def ensure_server(fastapi_server, http_client): return print( - f"Health check attempt {i+1}/10 failed with status {response.status_code}" + f"Health check attempt {i + 1}/10 failed with status {response.status_code}" ) except (ConnectionError, TimeoutError) as e: - print(f"Health check attempt {i+1}/10 failed: {e}") + print(f"Health check attempt {i + 1}/10 failed: {e}") time.sleep(2) stdout, stderr = process.communicate(timeout=1) diff --git a/sdk/tests/legacy/sdk_tests/prompt_sdk/test_client.py b/sdk/tests/legacy/sdk_tests/prompt_sdk/test_client.py index 378fe2e7a0..7ad09615d3 100644 --- a/sdk/tests/legacy/sdk_tests/prompt_sdk/test_client.py +++ b/sdk/tests/legacy/sdk_tests/prompt_sdk/test_client.py @@ -30,18 +30,18 @@ def test_get_config_with_caching(agenta_client): ) as mock_get_config: # Retrieve configuration to store in cache response = agenta_client.get_config("base123", "production") - assert response == { - "parameters": "something" - }, "First response should match the mock data." + assert response == {"parameters": "something"}, ( + "First response should match the mock data." + ) # Modify the return value of the mock mock_get_config.return_value = {"parameters": "something else"} # Attempt to retrieve configuration again, expecting cached data response = agenta_client.get_config("base123", "production") - assert response == { - "parameters": "something" - }, "Second response should return cached data, not new mock data." + assert response == {"parameters": "something"}, ( + "Second response should return cached data, not new mock data." + ) def test_get_config_without_caching(agenta_client): @@ -59,15 +59,15 @@ def test_get_config_without_caching(agenta_client): ) as mock_get_config: # Retrieve configuration with caching disabled response = agenta_client.get_config("base123", "production", cache_timeout=0) - assert response == { - "parameters": "something" - }, "First response should match the mock data." + assert response == {"parameters": "something"}, ( + "First response should match the mock data." + ) # Modify the return value of the mock mock_get_config.return_value = {"parameters": "something else"} # Retrieve new configuration with caching disabled response = agenta_client.get_config("base123", "production", cache_timeout=0) - assert response == { - "parameters": "something else" - }, "Second response should match the new mock data." + assert response == {"parameters": "something else"}, ( + "Second response should match the new mock data." + )