diff --git a/.turbo/config.json b/.turbo/config.json new file mode 100644 index 0000000000..72bc99363e --- /dev/null +++ b/.turbo/config.json @@ -0,0 +1 @@ +{"team": "agenta", "apiUrl": "http://localhost:3040"} 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 a704ca9826..2c5a241acc 100644 --- a/api/ee/databases/postgres/migrations/core/data_migrations/workspaces.py +++ b/api/ee/databases/postgres/migrations/core/data_migrations/workspaces.py @@ -56,8 +56,7 @@ 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 4691a38ec0..206e46db64 100644 --- a/api/ee/databases/postgres/migrations/core/utils.py +++ b/api/ee/databases/postgres/migrations/core/utils.py @@ -73,9 +73,7 @@ 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 \ @@ -85,9 +83,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 f0d62a3c3d..15f3e66b5f 100644 --- a/api/ee/databases/postgres/migrations/tracing/utils.py +++ b/api/ee/databases/postgres/migrations/tracing/utils.py @@ -66,9 +66,7 @@ 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 \ @@ -78,9 +76,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 ff8dbaf476..08762eaa76 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 30e026eded..f69adcbd74 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 f7cb117e65..bc174918b6 100644 --- a/api/ee/src/services/db_manager_ee.py +++ b/api/ee/src/services/db_manager_ee.py @@ -645,7 +645,9 @@ 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 49fe01b426..5bbebc78e6 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 99614caec4..13360aad77 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 +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 else ( - "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." - ) + "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 4454a0ac6b..312bcb05b6 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 e5db291b3b..5ed91ee5f9 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 adeb34bd50..9994ce2e54 100644 --- a/api/oss/databases/postgres/migrations/core/utils.py +++ b/api/oss/databases/postgres/migrations/core/utils.py @@ -73,9 +73,7 @@ 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 \ @@ -85,9 +83,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 6966d0e1c8..db61035477 100644 --- a/api/oss/databases/postgres/migrations/tracing/utils.py +++ b/api/oss/databases/postgres/migrations/tracing/utils.py @@ -65,9 +65,7 @@ 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 \ @@ -77,9 +75,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 7203208ede..f9664d80ba 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,7 +40,9 @@ 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 f71b18fa72..c1106e118d 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,9 +95,12 @@ 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 bbbc95d9a9..899bf0765c 100644 --- a/api/oss/src/apis/fastapi/observability/opentelemetry/traces_proto.py +++ b/api/oss/src/apis/fastapi/observability/opentelemetry/traces_proto.py @@ -3,7 +3,6 @@ # 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 6982ddb8f8..b9accb73b9 100644 --- a/api/oss/src/apis/fastapi/shared/utils.py +++ b/api/oss/src/apis/fastapi/shared/utils.py @@ -12,11 +12,7 @@ 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 3c8ba795c4..9fcd8bcab6 100644 --- a/api/oss/src/apis/fastapi/testsets/router.py +++ b/api/oss/src/apis/fastapi/testsets/router.py @@ -1162,23 +1162,19 @@ 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 3d9d734955..c7229ffbdc 100644 --- a/api/oss/src/core/annotations/service.py +++ b/api/oss/src/core/annotations/service.py @@ -146,12 +146,10 @@ 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( @@ -335,12 +333,10 @@ 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 5aa820cec6..b36a9d47ef 100644 --- a/api/oss/src/core/evaluations/service.py +++ b/api/oss/src/core/evaluations/service.py @@ -1804,12 +1804,10 @@ 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 ( @@ -2037,12 +2035,10 @@ 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 ( @@ -2062,12 +2058,10 @@ 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: @@ -2086,12 +2080,10 @@ 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 6bc781ef85..0d34def73d 100644 --- a/api/oss/src/core/testsets/service.py +++ b/api/oss/src/core/testsets/service.py @@ -490,12 +490,10 @@ 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 @@ -558,12 +556,10 @@ 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 @@ -599,12 +595,10 @@ 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 @@ -697,12 +691,10 @@ 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) @@ -758,12 +750,10 @@ 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 @@ -795,12 +785,10 @@ 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 880da2a44a..c6b71caccf 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 866fddf38e..18e4835b97 100644 --- a/api/oss/src/core/workflows/service.py +++ b/api/oss/src/core/workflows/service.py @@ -732,10 +732,7 @@ 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 8d275d6dae..f1bb94f45f 100644 --- a/api/oss/src/dbs/postgres/git/dao.py +++ b/api/oss/src/dbs/postgres/git/dao.py @@ -342,9 +342,7 @@ 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: @@ -1175,9 +1173,7 @@ 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 b7e9080dbf..768fded064 100644 --- a/api/oss/src/models/converters.py +++ b/api/oss/src/models/converters.py @@ -143,8 +143,7 @@ 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 da7a99c099..4e78e945ac 100644 --- a/api/oss/src/models/db/models.py +++ b/api/oss/src/models/db/models.py @@ -58,14 +58,4 @@ ] 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 85ac4be0c4..070536fa13 100644 --- a/api/oss/src/models/deprecated_models.py +++ b/api/oss/src/models/deprecated_models.py @@ -442,7 +442,9 @@ 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/resources/evaluators/evaluators.py b/api/oss/src/resources/evaluators/evaluators.py index cbca48d4fc..53a2d48542 100644 --- a/api/oss/src/resources/evaluators/evaluators.py +++ b/api/oss/src/resources/evaluators/evaluators.py @@ -229,12 +229,12 @@ "description": "Extract information from the user's response.", "type": "object", "properties": { - "score": { + "correctness": { "type": "boolean", "description": "The grade results", } }, - "required": ["score"], + "required": ["correctness"], "strict": True, }, }, @@ -264,12 +264,12 @@ "description": "Extract information from the user's response.", "type": "object", "properties": { - "score": { + "correctness": { "type": "boolean", "description": "The hallucination detection result", } }, - "required": ["score"], + "required": ["correctness"], "strict": True, }, }, @@ -339,12 +339,12 @@ "description": "Extract information from the user's response.", "type": "object", "properties": { - "score": { + "correctness": { "type": "boolean", "description": "The grade results", } }, - "required": ["score"], + "required": ["correctness"], "strict": True, }, }, diff --git a/api/oss/src/routers/app_router.py b/api/oss/src/routers/app_router.py index d0a60affca..52e724ee83 100644 --- a/api/oss/src/routers/app_router.py +++ b/api/oss/src/routers/app_router.py @@ -389,9 +389,7 @@ 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 2271fc41bc..8c432b31d6 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 0b082467b6..67a66f21ae 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 405910d540..8edeef5d3c 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 7128b2f54e..f644399ebd 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 fb1bd08bd2..9f49188cb3 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/converters.py b/api/oss/src/services/converters.py index ad9cb64169..8ead9b7df4 100644 --- a/api/oss/src/services/converters.py +++ b/api/oss/src/services/converters.py @@ -13,6 +13,7 @@ HumanEvaluationScenario, EvaluationScenarioOutput, ) +from oss.src.services import db_manager from oss.src.models.db_models import ( EvaluationDB, HumanEvaluationDB, diff --git a/api/oss/src/services/db_manager.py b/api/oss/src/services/db_manager.py index 09e4ef2a0a..9833c104dc 100644 --- a/api/oss/src/services/db_manager.py +++ b/api/oss/src/services/db_manager.py @@ -223,12 +223,8 @@ 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( @@ -568,9 +564,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( @@ -1873,9 +1869,7 @@ 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") @@ -1960,12 +1954,8 @@ 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)) @@ -2263,9 +2253,7 @@ 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() @@ -2288,9 +2276,7 @@ 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)) ) @@ -2317,7 +2303,9 @@ 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( @@ -2507,9 +2495,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 @@ -2524,9 +2512,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 @@ -2594,7 +2582,9 @@ 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() @@ -2787,12 +2777,8 @@ 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)), ) @@ -3280,9 +3266,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 @@ -3406,19 +3392,13 @@ 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 @@ -3445,9 +3425,7 @@ 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) @@ -3510,12 +3488,8 @@ 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) @@ -3544,9 +3518,7 @@ 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 @@ -3585,9 +3557,7 @@ 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() @@ -3863,19 +3833,13 @@ 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 ba0e146678..ca40a70cef 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 375eec953a..68f44ee3d4 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 cbb4643c13..13e1538bc4 100644 --- a/api/oss/src/services/evaluators_service.py +++ b/api/oss/src/services/evaluators_service.py @@ -734,10 +734,9 @@ 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() @@ -931,10 +930,9 @@ 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() @@ -1091,10 +1089,9 @@ 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", "") @@ -1550,9 +1547,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 ) @@ -1560,7 +1557,9 @@ 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 d5ba69f965..b1d8ab5995 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 e034439691..d3bc69f9cc 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 932ae57ebd..43208bd42d 100644 --- a/api/oss/src/tasks/evaluations/live.py +++ b/api/oss/src/tasks/evaluations/live.py @@ -253,9 +253,7 @@ 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" @@ -492,9 +490,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() @@ -774,9 +772,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 27d4aeb883..356aa29581 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 59afc1b7d7..d1be36c456 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 1a61f0a034..b09b4b4c61 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 8e24e032d9..5c1d0ad49b 100644 --- a/api/oss/tests/legacy/old_tests/models.py +++ b/api/oss/tests/legacy/old_tests/models.py @@ -62,14 +62,4 @@ ] 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 8ad085a396..af2757cf09 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,16 +20,14 @@ 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"}, @@ -92,16 +90,14 @@ 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"}, @@ -159,16 +155,14 @@ 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 dc670b8589..90e18ea27f 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 004b54e48f..9f9a87672b 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 d53a001e99..3d379d5d5f 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 68931fd204..edf1474f15 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 0de50397f6..245b5affc1 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 3b695fe6d5..efa0a31025 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 5dbfeb795e..32dee3c697 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 d0bc109555..8b6bf6b47a 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 541b8e67a5..50a98eef6e 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 751011e23c..3106a372b8 100644 --- a/api/oss/tests/manual/tracing/ingestion/agenta_streaming_response.py +++ b/api/oss/tests/manual/tracing/ingestion/agenta_streaming_response.py @@ -9,7 +9,6 @@ 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 53d193eda2..d5a828df80 100644 --- a/api/oss/tests/manual/tracing/ingestion/openinference_dspy.py +++ b/api/oss/tests/manual/tracing/ingestion/openinference_dspy.py @@ -72,10 +72,9 @@ 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 2f4121c8e3..abf22c9dc7 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 b294b45116..19eae82dbd 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 91de434e0b..57163be02b 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 fa6df8ea4b..8d824dc30f 100644 --- a/api/oss/tests/pytest/workflows/test_workflows_retrieve.py +++ b/api/oss/tests/pytest/workflows/test_workflows_retrieve.py @@ -201,7 +201,8 @@ def test_retrieve_by_revision_id(self, authed_api, mock_data): response = authed_api( "GET", - f"/preview/workflows/revisions/retrieve?workflow_revision_id={revision_id}", + f"/preview/workflows/revisions/retrieve" + f"?workflow_revision_id={revision_id}", ) assert response.status_code == 200 @@ -288,7 +289,8 @@ def test_retrieve_by_variant_id(self, authed_api, mock_data): response = authed_api( "GET", - f"/preview/workflows/revisions/retrieve?workflow_variant_id={variant_id}", + f"/preview/workflows/revisions/retrieve" + f"?workflow_variant_id={variant_id}", ) assert response.status_code == 200 diff --git a/api/pyproject.toml b/api/pyproject.toml index e8c38e1e19..0b922bbfb8 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "api" -version = "0.62.1" +version = "0.62.0" description = "Agenta API" authors = [ { name = "Mahmoud Mabrouk", email = "mahmoud@agenta.ai" }, diff --git a/hosting/docker-compose/ee/docker-compose.dev.yml b/hosting/docker-compose/ee/docker-compose.dev.yml index 09861d7b20..23a606d425 100644 --- a/hosting/docker-compose/ee/docker-compose.dev.yml +++ b/hosting/docker-compose/ee/docker-compose.dev.yml @@ -290,6 +290,23 @@ services: labels: - "traefik.enable=false" + turbo-cache: + image: ducktors/turborepo-remote-cache:2.6.1 + ports: + - "3040:3000" + environment: + TURBO_TOKEN: ${TURBO_TOKEN:-localtoken} + STORAGE_PROVIDER: ${STORAGE_PROVIDER:-s3} + STORAGE_PATH: ${STORAGE_PATH:-agenta-turbocache} + AWS_REGION: ${AWS_REGION:-us-east-1} + AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-} + AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-} + S3_ENDPOINT: ${S3_ENDPOINT:-} # e.g. https://nyc3.digitaloceanspaces.com + volumes: + - turbo-cache-data:/cache + networks: + - agenta-network + healthcheck: test: ["CMD", "redis-cli", "-p", "6378", "ping"] interval: 10s @@ -371,3 +388,4 @@ volumes: redis-data: cache-data: nextjs_cache: + turbo-cache-data: diff --git a/hosting/docker-compose/ee/env.ee.dev.example b/hosting/docker-compose/ee/env.ee.dev.example index c42666965b..f661ccb39c 100644 --- a/hosting/docker-compose/ee/env.ee.dev.example +++ b/hosting/docker-compose/ee/env.ee.dev.example @@ -89,3 +89,14 @@ OPENAI_API_KEY= OPENROUTER_API_KEY= PERPLEXITYAI_API_KEY= TOGETHERAI_API_KEY= + +# Turborepo remote cache +TURBO_API=http://localhost:3040 +TURBO_TEAM=agenta +TURBO_TOKEN= +STORAGE_PROVIDER=s3 +STORAGE_PATH=agenta-turbocache +AWS_REGION= +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +S3_ENDPOINT= # e.g. https://nyc3.digitaloceanspaces.com diff --git a/hosting/docker-compose/ee/env.ee.gh.example b/hosting/docker-compose/ee/env.ee.gh.example index 5cba09c18c..6329f49b83 100644 --- a/hosting/docker-compose/ee/env.ee.gh.example +++ b/hosting/docker-compose/ee/env.ee.gh.example @@ -77,4 +77,15 @@ MISTRAL_API_KEY= OPENAI_API_KEY= OPENROUTER_API_KEY= PERPLEXITYAI_API_KEY= -TOGETHERAI_API_KEY= \ No newline at end of file +TOGETHERAI_API_KEY= + +# Turborepo remote cache +TURBO_API=http://localhost:3040 +TURBO_TEAM=agenta +TURBO_TOKEN= +STORAGE_PROVIDER=s3 +STORAGE_PATH=agenta-turbocache +AWS_REGION= +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +S3_ENDPOINT= # e.g. https://nyc3.digitaloceanspaces.com diff --git a/hosting/docker-compose/oss/docker-compose.dev.yml b/hosting/docker-compose/oss/docker-compose.dev.yml index 53c0eaef52..1c56dd8e1a 100644 --- a/hosting/docker-compose/oss/docker-compose.dev.yml +++ b/hosting/docker-compose/oss/docker-compose.dev.yml @@ -265,6 +265,20 @@ services: volumes: - cache-data:/data + turbo-cache: + image: ducktors/turborepo-remote-cache:2.6.1 + ports: + - "3040:3000" + environment: + TURBO_TOKEN: ${TURBO_TOKEN:-localtoken} + STORAGE_PROVIDER: ${STORAGE_PROVIDER:-s3} + STORAGE_PATH: ${STORAGE_PATH:-agenta-turbocache} + AWS_REGION: ${AWS_REGION:-us-east-1} + AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-} + AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-} + S3_ENDPOINT: ${S3_ENDPOINT:-} # e.g. https://nyc3.digitaloceanspaces.com + volumes: + - turbo-cache-data:/cache networks: - agenta-network @@ -327,3 +341,4 @@ volumes: redis-data: cache-data: nextjs_cache: + turbo-cache-data: diff --git a/hosting/docker-compose/oss/env.oss.dev.example b/hosting/docker-compose/oss/env.oss.dev.example index 05e16eda8a..b1f69c0b48 100644 --- a/hosting/docker-compose/oss/env.oss.dev.example +++ b/hosting/docker-compose/oss/env.oss.dev.example @@ -92,6 +92,17 @@ OPENROUTER_API_KEY= PERPLEXITYAI_API_KEY= TOGETHERAI_API_KEY= +# Turborepo remote cache +TURBO_API=http://localhost:3040 +TURBO_TEAM=agenta +TURBO_TOKEN= +STORAGE_PROVIDER=s3 +STORAGE_PATH=agenta-turbocache +AWS_REGION= +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +S3_ENDPOINT= # e.g. https://nyc3.digitaloceanspaces.com + # Legacy (deprecated, to be removed) AGENTA_PORT=80 BARE_DOMAIN_NAME=localhost diff --git a/hosting/docker-compose/oss/env.oss.gh.example b/hosting/docker-compose/oss/env.oss.gh.example index 05e16eda8a..b1f69c0b48 100644 --- a/hosting/docker-compose/oss/env.oss.gh.example +++ b/hosting/docker-compose/oss/env.oss.gh.example @@ -92,6 +92,17 @@ OPENROUTER_API_KEY= PERPLEXITYAI_API_KEY= TOGETHERAI_API_KEY= +# Turborepo remote cache +TURBO_API=http://localhost:3040 +TURBO_TEAM=agenta +TURBO_TOKEN= +STORAGE_PROVIDER=s3 +STORAGE_PATH=agenta-turbocache +AWS_REGION= +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +S3_ENDPOINT= # e.g. https://nyc3.digitaloceanspaces.com + # Legacy (deprecated, to be removed) AGENTA_PORT=80 BARE_DOMAIN_NAME=localhost diff --git a/sdk/agenta/client/backend/api_keys/client.py b/sdk/agenta/client/backend/api_keys/client.py index b6cfa2e3c9..167b48913e 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 b7881f3122..c4040b5cdc 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 f937046f78..055805a444 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 bd3c9a874b..84887b5aaa 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 3467175cb7..c6d11fc708 100644 --- a/sdk/agenta/client/backend/core/file.py +++ b/sdk/agenta/client/backend/core/file.py @@ -53,9 +53,7 @@ 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 e498155179..9035a193ec 100644 --- a/sdk/agenta/client/backend/core/pydantic_utilities.py +++ b/sdk/agenta/client/backend/core/pydantic_utilities.py @@ -78,9 +78,7 @@ 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 @@ -262,10 +260,7 @@ 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 @@ -276,12 +271,7 @@ 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 d1bac62bd1..1c133345f3 100644 --- a/sdk/agenta/client/backend/types/account_request.py +++ b/sdk/agenta/client/backend/types/account_request.py @@ -15,9 +15,7 @@ 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 2894d7acf4..6cb5ecbcd6 100644 --- a/sdk/agenta/client/backend/types/account_response.py +++ b/sdk/agenta/client/backend/types/account_response.py @@ -13,9 +13,7 @@ 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 7992f8fe0a..507b46f080 100644 --- a/sdk/agenta/client/backend/types/agenta_node_dto.py +++ b/sdk/agenta/client/backend/types/agenta_node_dto.py @@ -39,9 +39,7 @@ 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 a07dfb596f..77494ee114 100644 --- a/sdk/agenta/client/backend/types/agenta_nodes_response.py +++ b/sdk/agenta/client/backend/types/agenta_nodes_response.py @@ -17,9 +17,7 @@ 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 327d4de5db..5490cf802d 100644 --- a/sdk/agenta/client/backend/types/agenta_root_dto.py +++ b/sdk/agenta/client/backend/types/agenta_root_dto.py @@ -19,9 +19,7 @@ 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 3f24b51c8f..9d6b877368 100644 --- a/sdk/agenta/client/backend/types/agenta_roots_response.py +++ b/sdk/agenta/client/backend/types/agenta_roots_response.py @@ -19,9 +19,7 @@ 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 1d741e6b6d..6ee850955b 100644 --- a/sdk/agenta/client/backend/types/agenta_tree_dto.py +++ b/sdk/agenta/client/backend/types/agenta_tree_dto.py @@ -19,9 +19,7 @@ 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 974159fee1..d3acaf17d3 100644 --- a/sdk/agenta/client/backend/types/agenta_trees_response.py +++ b/sdk/agenta/client/backend/types/agenta_trees_response.py @@ -19,9 +19,7 @@ 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 3d6ed569aa..5318a7c568 100644 --- a/sdk/agenta/client/backend/types/aggregated_result.py +++ b/sdk/agenta/client/backend/types/aggregated_result.py @@ -13,9 +13,7 @@ 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 ae779bc85f..f3002caf54 100644 --- a/sdk/agenta/client/backend/types/analytics_response.py +++ b/sdk/agenta/client/backend/types/analytics_response.py @@ -13,9 +13,7 @@ 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 0cc814d1f6..a3247c4b4e 100644 --- a/sdk/agenta/client/backend/types/annotation.py +++ b/sdk/agenta/client/backend/types/annotation.py @@ -29,16 +29,14 @@ 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 3065c3a914..deb2cb42e7 100644 --- a/sdk/agenta/client/backend/types/annotation_create.py +++ b/sdk/agenta/client/backend/types/annotation_create.py @@ -25,9 +25,7 @@ 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 a2783bedcc..2e5a99b974 100644 --- a/sdk/agenta/client/backend/types/annotation_edit.py +++ b/sdk/agenta/client/backend/types/annotation_edit.py @@ -17,9 +17,7 @@ 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 bbc8ad0acb..8643681c52 100644 --- a/sdk/agenta/client/backend/types/annotation_link.py +++ b/sdk/agenta/client/backend/types/annotation_link.py @@ -11,9 +11,7 @@ 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 9821a81825..b6bc1cade3 100644 --- a/sdk/agenta/client/backend/types/annotation_link_response.py +++ b/sdk/agenta/client/backend/types/annotation_link_response.py @@ -11,9 +11,7 @@ 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 44c339afd5..ac5033a31e 100644 --- a/sdk/agenta/client/backend/types/annotation_query.py +++ b/sdk/agenta/client/backend/types/annotation_query.py @@ -26,9 +26,7 @@ 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 d2afd6aeac..85fff1453e 100644 --- a/sdk/agenta/client/backend/types/annotation_query_request.py +++ b/sdk/agenta/client/backend/types/annotation_query_request.py @@ -11,9 +11,7 @@ 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 af194702ef..e3a8899ef7 100644 --- a/sdk/agenta/client/backend/types/annotation_reference.py +++ b/sdk/agenta/client/backend/types/annotation_reference.py @@ -12,9 +12,7 @@ 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 79255ade37..f580cc93eb 100644 --- a/sdk/agenta/client/backend/types/annotation_references.py +++ b/sdk/agenta/client/backend/types/annotation_references.py @@ -13,9 +13,7 @@ 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 84393ac781..e42904a404 100644 --- a/sdk/agenta/client/backend/types/annotation_response.py +++ b/sdk/agenta/client/backend/types/annotation_response.py @@ -11,9 +11,7 @@ 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 6285bb00e6..4ca6ac4504 100644 --- a/sdk/agenta/client/backend/types/annotations_response.py +++ b/sdk/agenta/client/backend/types/annotations_response.py @@ -15,9 +15,7 @@ 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 acf3089c5c..1fdbeee2d9 100644 --- a/sdk/agenta/client/backend/types/app.py +++ b/sdk/agenta/client/backend/types/app.py @@ -13,9 +13,7 @@ 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 63f116ada8..d6fe10e48b 100644 --- a/sdk/agenta/client/backend/types/app_variant_response.py +++ b/sdk/agenta/client/backend/types/app_variant_response.py @@ -24,9 +24,7 @@ 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 1c3312185d..709d9f8f2c 100644 --- a/sdk/agenta/client/backend/types/app_variant_revision.py +++ b/sdk/agenta/client/backend/types/app_variant_revision.py @@ -16,9 +16,7 @@ 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 35c235fd41..d6fa55c584 100644 --- a/sdk/agenta/client/backend/types/artifact.py +++ b/sdk/agenta/client/backend/types/artifact.py @@ -25,14 +25,12 @@ 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 7c8e8dd2c2..cc04f56e96 100644 --- a/sdk/agenta/client/backend/types/base_output.py +++ b/sdk/agenta/client/backend/types/base_output.py @@ -11,9 +11,7 @@ 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 5957cdb08e..ef14df0220 100644 --- a/sdk/agenta/client/backend/types/body_fetch_workflow_revision.py +++ b/sdk/agenta/client/backend/types/body_fetch_workflow_revision.py @@ -12,9 +12,7 @@ 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 f507f40fc0..11f4de5d00 100644 --- a/sdk/agenta/client/backend/types/body_import_testset.py +++ b/sdk/agenta/client/backend/types/body_import_testset.py @@ -11,9 +11,7 @@ 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 c274787aaf..663d00d6a4 100644 --- a/sdk/agenta/client/backend/types/bucket_dto.py +++ b/sdk/agenta/client/backend/types/bucket_dto.py @@ -15,9 +15,7 @@ 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 377c566ef2..10494451ee 100644 --- a/sdk/agenta/client/backend/types/collect_status_response.py +++ b/sdk/agenta/client/backend/types/collect_status_response.py @@ -11,9 +11,7 @@ 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 0c0a348818..ddf00f6ac2 100644 --- a/sdk/agenta/client/backend/types/config_db.py +++ b/sdk/agenta/client/backend/types/config_db.py @@ -11,9 +11,7 @@ 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 be8bb9e0b6..5a9a9e0233 100644 --- a/sdk/agenta/client/backend/types/config_dto.py +++ b/sdk/agenta/client/backend/types/config_dto.py @@ -21,9 +21,7 @@ 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 166cac71b4..e8946ddfe6 100644 --- a/sdk/agenta/client/backend/types/config_response_model.py +++ b/sdk/agenta/client/backend/types/config_response_model.py @@ -21,9 +21,7 @@ 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 cd33710c88..774b58a351 100644 --- a/sdk/agenta/client/backend/types/correct_answer.py +++ b/sdk/agenta/client/backend/types/correct_answer.py @@ -11,9 +11,7 @@ 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 22d105444b..dc7ccf44cf 100644 --- a/sdk/agenta/client/backend/types/create_app_output.py +++ b/sdk/agenta/client/backend/types/create_app_output.py @@ -11,9 +11,7 @@ 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 5f47561fc7..11542da489 100644 --- a/sdk/agenta/client/backend/types/custom_model_settings_dto.py +++ b/sdk/agenta/client/backend/types/custom_model_settings_dto.py @@ -11,9 +11,7 @@ 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 51b2d8cf71..9fe91614d3 100644 --- a/sdk/agenta/client/backend/types/custom_provider_dto.py +++ b/sdk/agenta/client/backend/types/custom_provider_dto.py @@ -17,9 +17,7 @@ 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 16f5cb38c3..6742ce5647 100644 --- a/sdk/agenta/client/backend/types/custom_provider_settings_dto.py +++ b/sdk/agenta/client/backend/types/custom_provider_settings_dto.py @@ -13,9 +13,7 @@ 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 f1791f8119..ee5a46656d 100644 --- a/sdk/agenta/client/backend/types/delete_evaluation.py +++ b/sdk/agenta/client/backend/types/delete_evaluation.py @@ -10,9 +10,7 @@ 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 c0fcf595e5..cb846cdd7d 100644 --- a/sdk/agenta/client/backend/types/environment_output.py +++ b/sdk/agenta/client/backend/types/environment_output.py @@ -18,9 +18,7 @@ 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 bb7aae3db7..5058b3e323 100644 --- a/sdk/agenta/client/backend/types/environment_output_extended.py +++ b/sdk/agenta/client/backend/types/environment_output_extended.py @@ -20,9 +20,7 @@ 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 7dca7e6baf..885f714679 100644 --- a/sdk/agenta/client/backend/types/environment_revision.py +++ b/sdk/agenta/client/backend/types/environment_revision.py @@ -17,9 +17,7 @@ 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 ebf7449865..faebb12bed 100644 --- a/sdk/agenta/client/backend/types/error.py +++ b/sdk/agenta/client/backend/types/error.py @@ -11,9 +11,7 @@ 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 4b6aafdf2e..b811b63a7d 100644 --- a/sdk/agenta/client/backend/types/evaluation.py +++ b/sdk/agenta/client/backend/types/evaluation.py @@ -28,9 +28,7 @@ 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 bd6cbc5b0e..a4386cba17 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario.py @@ -21,9 +21,7 @@ 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 fc9cba6320..6839f0009e 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario_input.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario_input.py @@ -12,9 +12,7 @@ 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 28a786c8c3..c8dc74923a 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario_output.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario_output.py @@ -13,9 +13,7 @@ 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 b313435a92..ec1a1b1016 100644 --- a/sdk/agenta/client/backend/types/evaluation_scenario_result.py +++ b/sdk/agenta/client/backend/types/evaluation_scenario_result.py @@ -12,9 +12,7 @@ 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 2a40891d87..107548ff21 100644 --- a/sdk/agenta/client/backend/types/evaluator.py +++ b/sdk/agenta/client/backend/types/evaluator.py @@ -27,15 +27,13 @@ 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 f21f4c63cb..7134db5e79 100644 --- a/sdk/agenta/client/backend/types/evaluator_config.py +++ b/sdk/agenta/client/backend/types/evaluator_config.py @@ -11,16 +11,14 @@ 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 cc8197a297..14aadde2b5 100644 --- a/sdk/agenta/client/backend/types/evaluator_flags.py +++ b/sdk/agenta/client/backend/types/evaluator_flags.py @@ -12,9 +12,7 @@ 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 3856bb811d..a3aeeb0757 100644 --- a/sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py +++ b/sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py @@ -10,9 +10,7 @@ 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 e146e4b2b1..1db8220dfb 100644 --- a/sdk/agenta/client/backend/types/evaluator_output_interface.py +++ b/sdk/agenta/client/backend/types/evaluator_output_interface.py @@ -10,9 +10,7 @@ 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 fbc1d6f275..7ed73abd28 100644 --- a/sdk/agenta/client/backend/types/evaluator_query.py +++ b/sdk/agenta/client/backend/types/evaluator_query.py @@ -18,9 +18,7 @@ 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 63a428d3ac..0d2d0bbe16 100644 --- a/sdk/agenta/client/backend/types/evaluator_query_request.py +++ b/sdk/agenta/client/backend/types/evaluator_query_request.py @@ -16,9 +16,7 @@ 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 2954faf33d..b98fee8c76 100644 --- a/sdk/agenta/client/backend/types/evaluator_request.py +++ b/sdk/agenta/client/backend/types/evaluator_request.py @@ -11,9 +11,7 @@ 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 4ecdc97d8d..6c51063e19 100644 --- a/sdk/agenta/client/backend/types/evaluator_response.py +++ b/sdk/agenta/client/backend/types/evaluator_response.py @@ -12,9 +12,7 @@ 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 e1f51d917e..6767051b1f 100644 --- a/sdk/agenta/client/backend/types/evaluators_response.py +++ b/sdk/agenta/client/backend/types/evaluators_response.py @@ -12,9 +12,7 @@ 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 42202e195e..da5e15f981 100644 --- a/sdk/agenta/client/backend/types/exception_dto.py +++ b/sdk/agenta/client/backend/types/exception_dto.py @@ -15,9 +15,7 @@ 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 ddf616323c..b71c3072be 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,9 +13,7 @@ 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 6eb698283f..332e10b131 100644 --- a/sdk/agenta/client/backend/types/get_config_response.py +++ b/sdk/agenta/client/backend/types/get_config_response.py @@ -12,9 +12,7 @@ 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 6980ec887a..f274f59b7b 100644 --- a/sdk/agenta/client/backend/types/header.py +++ b/sdk/agenta/client/backend/types/header.py @@ -11,9 +11,7 @@ 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 b066ebba5f..70a0f5f172 100644 --- a/sdk/agenta/client/backend/types/http_validation_error.py +++ b/sdk/agenta/client/backend/types/http_validation_error.py @@ -11,9 +11,7 @@ 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 2b2098e2ed..562b47ac09 100644 --- a/sdk/agenta/client/backend/types/human_evaluation.py +++ b/sdk/agenta/client/backend/types/human_evaluation.py @@ -22,9 +22,7 @@ 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 cf75465f7e..dcdc3d4fdf 100644 --- a/sdk/agenta/client/backend/types/human_evaluation_scenario.py +++ b/sdk/agenta/client/backend/types/human_evaluation_scenario.py @@ -21,9 +21,7 @@ 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 6e64ddf64b..f6245cbbc8 100644 --- a/sdk/agenta/client/backend/types/human_evaluation_scenario_input.py +++ b/sdk/agenta/client/backend/types/human_evaluation_scenario_input.py @@ -11,9 +11,7 @@ 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 70652ea3f0..df597596e9 100644 --- a/sdk/agenta/client/backend/types/human_evaluation_scenario_output.py +++ b/sdk/agenta/client/backend/types/human_evaluation_scenario_output.py @@ -11,9 +11,7 @@ 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 db34e84579..e5386bd40f 100644 --- a/sdk/agenta/client/backend/types/invite_request.py +++ b/sdk/agenta/client/backend/types/invite_request.py @@ -11,9 +11,7 @@ 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 3dff39deb3..c3125eb2b3 100644 --- a/sdk/agenta/client/backend/types/legacy_analytics_response.py +++ b/sdk/agenta/client/backend/types/legacy_analytics_response.py @@ -18,9 +18,7 @@ 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 fbbecae573..99fa9a1ba5 100644 --- a/sdk/agenta/client/backend/types/legacy_data_point.py +++ b/sdk/agenta/client/backend/types/legacy_data_point.py @@ -16,9 +16,7 @@ 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 ef2325c4ab..2cfef45886 100644 --- a/sdk/agenta/client/backend/types/legacy_evaluator.py +++ b/sdk/agenta/client/backend/types/legacy_evaluator.py @@ -17,9 +17,7 @@ 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 b209fea283..b4eb0af563 100644 --- a/sdk/agenta/client/backend/types/legacy_scope_request.py +++ b/sdk/agenta/client/backend/types/legacy_scope_request.py @@ -10,9 +10,7 @@ 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 0c73ad5124..8e26d5830d 100644 --- a/sdk/agenta/client/backend/types/legacy_scopes_response.py +++ b/sdk/agenta/client/backend/types/legacy_scopes_response.py @@ -18,9 +18,7 @@ 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 1139139284..84f3d4db8b 100644 --- a/sdk/agenta/client/backend/types/legacy_subscription_request.py +++ b/sdk/agenta/client/backend/types/legacy_subscription_request.py @@ -10,9 +10,7 @@ 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 748f1f6912..f3c1631bc0 100644 --- a/sdk/agenta/client/backend/types/legacy_user_request.py +++ b/sdk/agenta/client/backend/types/legacy_user_request.py @@ -11,9 +11,7 @@ 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 fa833dc82b..76d5b11542 100644 --- a/sdk/agenta/client/backend/types/legacy_user_response.py +++ b/sdk/agenta/client/backend/types/legacy_user_response.py @@ -10,9 +10,7 @@ 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 a948b7433a..d9a958d835 100644 --- a/sdk/agenta/client/backend/types/lifecycle_dto.py +++ b/sdk/agenta/client/backend/types/lifecycle_dto.py @@ -13,9 +13,7 @@ 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 53792bbbb5..7ec2c9ef42 100644 --- a/sdk/agenta/client/backend/types/link_dto.py +++ b/sdk/agenta/client/backend/types/link_dto.py @@ -13,9 +13,7 @@ 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 5645b7b97a..f369b622c2 100644 --- a/sdk/agenta/client/backend/types/list_api_keys_response.py +++ b/sdk/agenta/client/backend/types/list_api_keys_response.py @@ -13,9 +13,7 @@ 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 e49c088b8a..0980d9214d 100644 --- a/sdk/agenta/client/backend/types/llm_run_rate_limit.py +++ b/sdk/agenta/client/backend/types/llm_run_rate_limit.py @@ -13,9 +13,7 @@ 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 8d327c8e1d..c6c5c2f637 100644 --- a/sdk/agenta/client/backend/types/meta_request.py +++ b/sdk/agenta/client/backend/types/meta_request.py @@ -16,9 +16,7 @@ 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 0069e27753..a0eefd86f5 100644 --- a/sdk/agenta/client/backend/types/metrics_dto.py +++ b/sdk/agenta/client/backend/types/metrics_dto.py @@ -13,9 +13,7 @@ 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 365f7ca7a6..decf6d3828 100644 --- a/sdk/agenta/client/backend/types/new_testset.py +++ b/sdk/agenta/client/backend/types/new_testset.py @@ -11,9 +11,7 @@ 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 a80a41b4fe..259f18b33c 100644 --- a/sdk/agenta/client/backend/types/node_dto.py +++ b/sdk/agenta/client/backend/types/node_dto.py @@ -13,9 +13,7 @@ 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 518183ae00..2faa593ba4 100644 --- a/sdk/agenta/client/backend/types/o_tel_context_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_context_dto.py @@ -11,9 +11,7 @@ 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 2dd62903bb..f5a2bc7cc5 100644 --- a/sdk/agenta/client/backend/types/o_tel_event.py +++ b/sdk/agenta/client/backend/types/o_tel_event.py @@ -16,14 +16,12 @@ 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 152ccc1cd0..2031177463 100644 --- a/sdk/agenta/client/backend/types/o_tel_event_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_event_dto.py @@ -12,9 +12,7 @@ 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 f497b57a56..68b5fca1f2 100644 --- a/sdk/agenta/client/backend/types/o_tel_extra_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_extra_dto.py @@ -15,9 +15,7 @@ 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 97bc818ec5..5873d6d85c 100644 --- a/sdk/agenta/client/backend/types/o_tel_flat_span.py +++ b/sdk/agenta/client/backend/types/o_tel_flat_span.py @@ -35,16 +35,14 @@ 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 186ff2c4a3..0d449c52b9 100644 --- a/sdk/agenta/client/backend/types/o_tel_link.py +++ b/sdk/agenta/client/backend/types/o_tel_link.py @@ -15,14 +15,12 @@ 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 b439486296..7261632637 100644 --- a/sdk/agenta/client/backend/types/o_tel_link_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_link_dto.py @@ -12,9 +12,7 @@ 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 83844ba741..9f7be47a34 100644 --- a/sdk/agenta/client/backend/types/o_tel_links_response.py +++ b/sdk/agenta/client/backend/types/o_tel_links_response.py @@ -13,9 +13,7 @@ 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 eec70d2f1a..a39377066f 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, # fmt: off + json_schema_extra=lambda schema, model: None, # Disable schema generation to prevent recursion ) # 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 b60460f142..24999a7127 100644 --- a/sdk/agenta/client/backend/types/o_tel_span_dto.py +++ b/sdk/agenta/client/backend/types/o_tel_span_dto.py @@ -26,9 +26,7 @@ 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 92f4809a66..c58bc757ad 100644 --- a/sdk/agenta/client/backend/types/o_tel_spans_tree.py +++ b/sdk/agenta/client/backend/types/o_tel_spans_tree.py @@ -13,9 +13,7 @@ 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 2c44e2eebc..078d7899c8 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,9 +13,7 @@ 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 f098ae74f3..73a7395f4a 100644 --- a/sdk/agenta/client/backend/types/o_tel_tracing_request.py +++ b/sdk/agenta/client/backend/types/o_tel_tracing_request.py @@ -13,9 +13,7 @@ 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 8f4987c81e..63739203ab 100644 --- a/sdk/agenta/client/backend/types/o_tel_tracing_response.py +++ b/sdk/agenta/client/backend/types/o_tel_tracing_response.py @@ -18,9 +18,7 @@ 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 fef8794c5e..182b59e638 100644 --- a/sdk/agenta/client/backend/types/organization.py +++ b/sdk/agenta/client/backend/types/organization.py @@ -15,9 +15,7 @@ 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 9720147c63..fe92068238 100644 --- a/sdk/agenta/client/backend/types/organization_details.py +++ b/sdk/agenta/client/backend/types/organization_details.py @@ -18,9 +18,7 @@ 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 15e639eaa6..a68fbb3359 100644 --- a/sdk/agenta/client/backend/types/organization_membership_request.py +++ b/sdk/agenta/client/backend/types/organization_membership_request.py @@ -15,9 +15,7 @@ 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 45dc45a53e..55d4a1aea3 100644 --- a/sdk/agenta/client/backend/types/organization_output.py +++ b/sdk/agenta/client/backend/types/organization_output.py @@ -11,9 +11,7 @@ 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 a8bda700a3..688eeaff1b 100644 --- a/sdk/agenta/client/backend/types/organization_request.py +++ b/sdk/agenta/client/backend/types/organization_request.py @@ -12,9 +12,7 @@ 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 be3179f83f..285505beae 100644 --- a/sdk/agenta/client/backend/types/parent_dto.py +++ b/sdk/agenta/client/backend/types/parent_dto.py @@ -10,9 +10,7 @@ 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 8438f57ae9..efbb405623 100644 --- a/sdk/agenta/client/backend/types/project_membership_request.py +++ b/sdk/agenta/client/backend/types/project_membership_request.py @@ -15,9 +15,7 @@ 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 ff6098e47b..7fc1a9429a 100644 --- a/sdk/agenta/client/backend/types/project_request.py +++ b/sdk/agenta/client/backend/types/project_request.py @@ -15,9 +15,7 @@ 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 80244f856d..17d17438bd 100644 --- a/sdk/agenta/client/backend/types/project_scope.py +++ b/sdk/agenta/client/backend/types/project_scope.py @@ -18,9 +18,7 @@ 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 6bd68600a5..2688ea5348 100644 --- a/sdk/agenta/client/backend/types/projects_response.py +++ b/sdk/agenta/client/backend/types/projects_response.py @@ -17,9 +17,7 @@ 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 09f33766ae..ef16defd21 100644 --- a/sdk/agenta/client/backend/types/reference.py +++ b/sdk/agenta/client/backend/types/reference.py @@ -16,14 +16,12 @@ 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 40fd02f23a..c4ce3b6094 100644 --- a/sdk/agenta/client/backend/types/reference_dto.py +++ b/sdk/agenta/client/backend/types/reference_dto.py @@ -13,9 +13,7 @@ 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 859f77daf2..37e8f65155 100644 --- a/sdk/agenta/client/backend/types/reference_request_model.py +++ b/sdk/agenta/client/backend/types/reference_request_model.py @@ -13,9 +13,7 @@ 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 f9154bae26..8eec65536a 100644 --- a/sdk/agenta/client/backend/types/result.py +++ b/sdk/agenta/client/backend/types/result.py @@ -13,9 +13,7 @@ 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 2753ce6105..e099af2cbb 100644 --- a/sdk/agenta/client/backend/types/root_dto.py +++ b/sdk/agenta/client/backend/types/root_dto.py @@ -10,9 +10,7 @@ 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 a7526eac7b..4531c11be0 100644 --- a/sdk/agenta/client/backend/types/scopes_response_model.py +++ b/sdk/agenta/client/backend/types/scopes_response_model.py @@ -11,9 +11,7 @@ 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 37ce12b9a7..9aa3259b53 100644 --- a/sdk/agenta/client/backend/types/secret_dto.py +++ b/sdk/agenta/client/backend/types/secret_dto.py @@ -13,9 +13,7 @@ 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 5d0b6d9f75..77c2a45945 100644 --- a/sdk/agenta/client/backend/types/secret_response_dto.py +++ b/sdk/agenta/client/backend/types/secret_response_dto.py @@ -18,9 +18,7 @@ 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 02b6f5bafe..c0b927f73c 100644 --- a/sdk/agenta/client/backend/types/simple_evaluation_output.py +++ b/sdk/agenta/client/backend/types/simple_evaluation_output.py @@ -15,9 +15,7 @@ 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 b92370d2ad..691d71a6f9 100644 --- a/sdk/agenta/client/backend/types/span_dto.py +++ b/sdk/agenta/client/backend/types/span_dto.py @@ -39,14 +39,12 @@ 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 9ce6db03ff..df25d76d4d 100644 --- a/sdk/agenta/client/backend/types/standard_provider_dto.py +++ b/sdk/agenta/client/backend/types/standard_provider_dto.py @@ -13,9 +13,7 @@ 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 3b26a3f201..c0bc92be60 100644 --- a/sdk/agenta/client/backend/types/standard_provider_settings_dto.py +++ b/sdk/agenta/client/backend/types/standard_provider_settings_dto.py @@ -10,9 +10,7 @@ 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 51d96949a3..47a96e3984 100644 --- a/sdk/agenta/client/backend/types/status_dto.py +++ b/sdk/agenta/client/backend/types/status_dto.py @@ -12,9 +12,7 @@ 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 46056e16e7..5ee86f99d9 100644 --- a/sdk/agenta/client/backend/types/tags_request.py +++ b/sdk/agenta/client/backend/types/tags_request.py @@ -16,9 +16,7 @@ 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 72a99183ad..56fab720ae 100644 --- a/sdk/agenta/client/backend/types/testcase_response.py +++ b/sdk/agenta/client/backend/types/testcase_response.py @@ -14,14 +14,12 @@ 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 b0f93a2067..5a50875540 100644 --- a/sdk/agenta/client/backend/types/testset.py +++ b/sdk/agenta/client/backend/types/testset.py @@ -27,14 +27,12 @@ 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 882a60687c..c73add9298 100644 --- a/sdk/agenta/client/backend/types/testset_output_response.py +++ b/sdk/agenta/client/backend/types/testset_output_response.py @@ -15,9 +15,7 @@ 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 12a336b7f0..1e0448b2d3 100644 --- a/sdk/agenta/client/backend/types/testset_request.py +++ b/sdk/agenta/client/backend/types/testset_request.py @@ -11,9 +11,7 @@ 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 5c402dc3c3..55a02c3e83 100644 --- a/sdk/agenta/client/backend/types/testset_response.py +++ b/sdk/agenta/client/backend/types/testset_response.py @@ -12,9 +12,7 @@ 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 6b6c4cbdff..abd4e66869 100644 --- a/sdk/agenta/client/backend/types/testset_simple_response.py +++ b/sdk/agenta/client/backend/types/testset_simple_response.py @@ -12,9 +12,7 @@ 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 f2f3eaeb46..e1778bf1eb 100644 --- a/sdk/agenta/client/backend/types/testsets_response.py +++ b/sdk/agenta/client/backend/types/testsets_response.py @@ -12,9 +12,7 @@ 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 5ed2705441..7f0aa58a57 100644 --- a/sdk/agenta/client/backend/types/time_dto.py +++ b/sdk/agenta/client/backend/types/time_dto.py @@ -12,9 +12,7 @@ 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 da4d5edb5b..f62fd7f7e4 100644 --- a/sdk/agenta/client/backend/types/tree_dto.py +++ b/sdk/agenta/client/backend/types/tree_dto.py @@ -12,9 +12,7 @@ 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 bc24403f19..b96c4af042 100644 --- a/sdk/agenta/client/backend/types/update_app_output.py +++ b/sdk/agenta/client/backend/types/update_app_output.py @@ -11,9 +11,7 @@ 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 c12e4d4e7b..f36c14bbed 100644 --- a/sdk/agenta/client/backend/types/user_request.py +++ b/sdk/agenta/client/backend/types/user_request.py @@ -11,9 +11,7 @@ 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 a632c6d67b..e388c3c1c1 100644 --- a/sdk/agenta/client/backend/types/validation_error.py +++ b/sdk/agenta/client/backend/types/validation_error.py @@ -13,9 +13,7 @@ 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 b772b1ff68..4ea448652c 100644 --- a/sdk/agenta/client/backend/types/workflow_artifact.py +++ b/sdk/agenta/client/backend/types/workflow_artifact.py @@ -26,14 +26,12 @@ 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 aef669af24..81b144eb04 100644 --- a/sdk/agenta/client/backend/types/workflow_data.py +++ b/sdk/agenta/client/backend/types/workflow_data.py @@ -11,9 +11,7 @@ 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 815178930a..fe1e606e5c 100644 --- a/sdk/agenta/client/backend/types/workflow_flags.py +++ b/sdk/agenta/client/backend/types/workflow_flags.py @@ -12,9 +12,7 @@ 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 ba7b43f283..2a00daa602 100644 --- a/sdk/agenta/client/backend/types/workflow_request.py +++ b/sdk/agenta/client/backend/types/workflow_request.py @@ -11,9 +11,7 @@ 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 38edf76823..62583827bb 100644 --- a/sdk/agenta/client/backend/types/workflow_response.py +++ b/sdk/agenta/client/backend/types/workflow_response.py @@ -12,9 +12,7 @@ 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 68dd05400e..a114ebb0a8 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,9 +43,7 @@ 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 96d604a712..49f78fdfb6 100644 --- a/sdk/agenta/client/backend/types/workflow_revision_request.py +++ b/sdk/agenta/client/backend/types/workflow_revision_request.py @@ -11,9 +11,7 @@ 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 bbf0cf80fa..3f6169a7d8 100644 --- a/sdk/agenta/client/backend/types/workflow_revision_response.py +++ b/sdk/agenta/client/backend/types/workflow_revision_response.py @@ -12,9 +12,7 @@ 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 180cd8c261..23e72a17e2 100644 --- a/sdk/agenta/client/backend/types/workflow_revisions_response.py +++ b/sdk/agenta/client/backend/types/workflow_revisions_response.py @@ -12,9 +12,7 @@ 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 a4f5bb3c6a..2cea82ae9e 100644 --- a/sdk/agenta/client/backend/types/workflow_variant.py +++ b/sdk/agenta/client/backend/types/workflow_variant.py @@ -27,16 +27,14 @@ 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 8eb98f1b36..78044e7682 100644 --- a/sdk/agenta/client/backend/types/workflow_variant_request.py +++ b/sdk/agenta/client/backend/types/workflow_variant_request.py @@ -11,9 +11,7 @@ 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 ba4b7221b7..1622e4709d 100644 --- a/sdk/agenta/client/backend/types/workflow_variant_response.py +++ b/sdk/agenta/client/backend/types/workflow_variant_response.py @@ -12,9 +12,7 @@ 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 140d48a4aa..b97a378f72 100644 --- a/sdk/agenta/client/backend/types/workflow_variants_response.py +++ b/sdk/agenta/client/backend/types/workflow_variants_response.py @@ -12,9 +12,7 @@ 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 e85e8940de..8bf9724d44 100644 --- a/sdk/agenta/client/backend/types/workflows_response.py +++ b/sdk/agenta/client/backend/types/workflows_response.py @@ -12,9 +12,7 @@ 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 0b368ecc4b..0cb0f3340b 100644 --- a/sdk/agenta/client/backend/types/workspace.py +++ b/sdk/agenta/client/backend/types/workspace.py @@ -13,9 +13,7 @@ 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 d7971468de..487d9c405d 100644 --- a/sdk/agenta/client/backend/types/workspace_member_response.py +++ b/sdk/agenta/client/backend/types/workspace_member_response.py @@ -12,9 +12,7 @@ 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 27bad0f18f..d6767b4237 100644 --- a/sdk/agenta/client/backend/types/workspace_membership_request.py +++ b/sdk/agenta/client/backend/types/workspace_membership_request.py @@ -15,9 +15,7 @@ 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 c883b966ad..b493882843 100644 --- a/sdk/agenta/client/backend/types/workspace_permission.py +++ b/sdk/agenta/client/backend/types/workspace_permission.py @@ -14,9 +14,7 @@ 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 849cde31fd..301bce0e26 100644 --- a/sdk/agenta/client/backend/types/workspace_request.py +++ b/sdk/agenta/client/backend/types/workspace_request.py @@ -14,9 +14,7 @@ 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 43c8d543ee..c79b86eb73 100644 --- a/sdk/agenta/client/backend/types/workspace_response.py +++ b/sdk/agenta/client/backend/types/workspace_response.py @@ -18,9 +18,7 @@ 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 5eba1c5c32..9997c212af 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 612ffbf5e2..45c85a13ff 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 b01ee15133..0a44bcd072 100644 --- a/sdk/agenta/sdk/decorators/running.py +++ b/sdk/agenta/sdk/decorators/running.py @@ -53,11 +53,13 @@ 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: @@ -79,7 +81,8 @@ async def invoke( credentials: Optional[str] = None, # **kwargs, - ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse]: ... + ) -> Union[WorkflowServiceBatchResponse, WorkflowServiceStreamResponse]: + ... async def inspect( self, @@ -87,7 +90,8 @@ 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 6f2d501cf7..c8683e4f63 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 af809876a4..c5e460ffb6 100644 --- a/sdk/agenta/sdk/evaluations/preview/evaluate.py +++ b/sdk/agenta/sdk/evaluations/preview/evaluate.py @@ -301,11 +301,13 @@ async def aevaluate( print() print( - "────────────────────────────────────────────────────────────────────────────" + "──────────────────────────────────────" + "──────────────────────────────────────" ) print(f"Evaluation running...") print( - "────────────────────────────────────────────────────────────────────────────" + "──────────────────────────────────────" + "──────────────────────────────────────" ) suffix = _timestamp_suffix() @@ -375,7 +377,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']}" @@ -746,15 +748,18 @@ 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 c6b1e72f98..609ecfce47 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 249505be82..01b9fecff2 100644 --- a/sdk/agenta/sdk/litellm/mockllm.py +++ b/sdk/agenta/sdk/litellm/mockllm.py @@ -67,7 +67,8 @@ 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 99fc5cba32..0c214e408a 100644 --- a/sdk/agenta/sdk/managers/shared.py +++ b/sdk/agenta/sdk/managers/shared.py @@ -478,9 +478,7 @@ 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 cec3cda676..e3fdd2acdd 100644 --- a/sdk/agenta/sdk/middlewares/running/normalizer.py +++ b/sdk/agenta/sdk/middlewares/running/normalizer.py @@ -106,10 +106,7 @@ 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/agenta/sdk/workflows/handlers.py b/sdk/agenta/sdk/workflows/handlers.py index 7216761897..738392f345 100644 --- a/sdk/agenta/sdk/workflows/handlers.py +++ b/sdk/agenta/sdk/workflows/handlers.py @@ -511,24 +511,20 @@ def field_match_test_v0( correct_answer = inputs[correct_answer_key] if not isinstance(outputs, str) and not isinstance(outputs, dict): - # raise InvalidOutputsV0Error(expected=["dict", "str"], got=outputs) - return {"success": False} + raise InvalidOutputsV0Error(expected=["dict", "str"], got=outputs) outputs_dict = outputs if isinstance(outputs, str): try: outputs_dict = loads(outputs) except json.JSONDecodeError as e: - # raise InvalidOutputsV0Error(expected="dict", got=outputs) from e - return {"success": False} + raise InvalidOutputsV0Error(expected="dict", got=outputs) from e if not isinstance(outputs_dict, dict): - # raise InvalidOutputsV0Error(expected=["dict", "str"], got=outputs) - return {"success": False} + raise InvalidOutputsV0Error(expected=["dict", "str"], got=outputs) if not json_field in outputs_dict: - # raise MissingOutputV0Error(path=json_field) - return {"success": False} + raise MissingOutputV0Error(path=json_field) # -------------------------------------------------------------------------- success = outputs_dict[json_field] == correct_answer diff --git a/sdk/pyproject.toml b/sdk/pyproject.toml index 00e85df3dc..47db074d71 100644 --- a/sdk/pyproject.toml +++ b/sdk/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "agenta" -version = "0.62.1" +version = "0.62.0" description = "The SDK for agenta is an open-source LLMOps platform." readme = "README.md" authors = [ diff --git a/sdk/tests/legacy/management/variant/test_variant_manager.py b/sdk/tests/legacy/management/variant/test_variant_manager.py index 1d555a0db4..660f105cbc 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 27d4aeb883..356aa29581 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 60b77aba13..5eb076f323 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 1a61f0a034..b09b4b4c61 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 d53a001e99..3d379d5d5f 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 543bdaceaf..70646d4f9c 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 0de50397f6..245b5affc1 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 3b695fe6d5..efa0a31025 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 5dbfeb795e..32dee3c697 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 26a539563d..3e215fab92 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 d33923c12c..97dcb14561 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 ba5866d645..d02938591b 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 7ad09615d3..378fe2e7a0 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." diff --git a/web/ee/package.json b/web/ee/package.json index 555d036cf2..3a7d0209d2 100644 --- a/web/ee/package.json +++ b/web/ee/package.json @@ -1,6 +1,6 @@ { "name": "@agenta/ee", - "version": "0.62.1", + "version": "0.62.0", "private": true, "engines": { "node": ">=18" diff --git a/web/oss/package.json b/web/oss/package.json index e5e89e0037..b586042152 100644 --- a/web/oss/package.json +++ b/web/oss/package.json @@ -1,6 +1,6 @@ { "name": "@agenta/oss", - "version": "0.62.1", + "version": "0.62.0", "private": true, "engines": { "node": ">=18" diff --git a/web/oss/src/components/pages/evaluations/autoEvaluation/EvaluatorsModal/ConfigureEvaluator/JSONSchema/JSONSchemaGenerator.ts b/web/oss/src/components/pages/evaluations/autoEvaluation/EvaluatorsModal/ConfigureEvaluator/JSONSchema/JSONSchemaGenerator.ts index a56de11836..b6acddb008 100644 --- a/web/oss/src/components/pages/evaluations/autoEvaluation/EvaluatorsModal/ConfigureEvaluator/JSONSchema/JSONSchemaGenerator.ts +++ b/web/oss/src/components/pages/evaluations/autoEvaluation/EvaluatorsModal/ConfigureEvaluator/JSONSchema/JSONSchemaGenerator.ts @@ -23,15 +23,15 @@ export function generateJSONSchema(config: SchemaConfig): GeneratedJSONSchema { const {responseFormat, includeReasoning, continuousConfig, categoricalOptions} = config const properties: Record = {} - const required: string[] = ["score"] + const required: string[] = ["correctness"] // Base description is always "The grade results" const baseDescription = "The grade results" - // Add the main score field based on response format + // Add the main correctness field based on response format switch (responseFormat) { case "continuous": - properties.score = { + properties.correctness = { type: "number", description: baseDescription, minimum: continuousConfig?.minimum ?? 0, @@ -40,7 +40,7 @@ export function generateJSONSchema(config: SchemaConfig): GeneratedJSONSchema { break case "boolean": - properties.score = { + properties.correctness = { type: "boolean", description: baseDescription, } @@ -53,14 +53,14 @@ export function generateJSONSchema(config: SchemaConfig): GeneratedJSONSchema { .map((opt) => `"${opt.name}": ${opt.description}`) .join("| ") - properties.score = { + properties.correctness = { type: "string", description: `${baseDescription}. Categories: ${categoryDescriptions}`, enum: enumValues, } } else { // Fallback if no categories defined - properties.score = { + properties.correctness = { type: "string", description: baseDescription, } @@ -97,43 +97,43 @@ export function parseJSONSchema(schemaString: string): SchemaConfig | null { // Handle both old format (direct schema) and new format (with name wrapper) const schema = parsed.schema || parsed - if (!schema.properties || !schema.properties.score) { + if (!schema.properties || !schema.properties.correctness) { return null } - const score = schema.properties.score + const correctness = schema.properties.correctness const hasReasoning = !!schema.properties.comment let responseFormat: SchemaConfig["responseFormat"] = "boolean" let continuousConfig: SchemaConfig["continuousConfig"] let categoricalOptions: SchemaConfig["categoricalOptions"] - if (score.type === "number") { + if (correctness.type === "number") { responseFormat = "continuous" continuousConfig = { - minimum: score.minimum ?? 0, - maximum: score.maximum ?? 10, + minimum: correctness.minimum ?? 0, + maximum: correctness.maximum ?? 10, } - } else if (score.type === "boolean") { + } else if (correctness.type === "boolean") { responseFormat = "boolean" - } else if (score.type === "string" && score.enum) { + } else if (correctness.type === "string" && correctness.enum) { responseFormat = "categorical" // Parse category descriptions from the description field - const desc = score.description || "" + const desc = correctness.description || "" const categoriesMatch = desc.match(/Categories: (.+)/) if (categoriesMatch) { const categoriesStr = categoriesMatch[1] const categoryPairs = categoriesStr.split("| ") - categoricalOptions = score.enum.map((name: string) => { + categoricalOptions = correctness.enum.map((name: string) => { const pair = categoryPairs.find((p: string) => p.startsWith(`"${name}":`)) const description = pair ? pair.split(": ")[1] || "" : "" return {name, description} }) } else { - categoricalOptions = score.enum.map((name: string) => ({ + categoricalOptions = correctness.enum.map((name: string) => ({ name, description: "", })) diff --git a/web/package.json b/web/package.json index c7b4ea6ec9..f06cb54ce3 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "agenta-web", - "version": "0.62.1", + "version": "0.62.0", "workspaces": [ "ee", "oss", diff --git a/web/turbo.json b/web/turbo.json index 5fbbe1b8bc..748d6c2e9f 100644 --- a/web/turbo.json +++ b/web/turbo.json @@ -1,5 +1,9 @@ { "$schema": "https://turbo.build/schema.json", + "remoteCache": { + "teamSlug":"agenta", + "apiUrl":"http://localhost:3040" + }, "tasks": { "dev": { "cache": false @@ -11,10 +15,10 @@ "cache": false }, "@agenta/ee#build": { - "outputs": [".next/**"] + "outputs": [".next/**", "!.next/cache/**"] }, "@agenta/oss#build": { - "outputs": [".next/**"] + "outputs": [".next/**", "!.next/cache/**"] } }, "globalDependencies": ["*/**/tsconfig.json"]