Versions
Versions lets you create and manage snapshots of a CXAS app. Every time you publish significant changes, you can tag that state as a version — giving you a rollback point if something goes wrong, and a stable target for running evaluations against a known baseline.
You can also use Sessions to run conversations against a specific version by passing version_id to the constructor or to individual run() calls.
Quick Example
from cxas_scrapi import Versions
app_name = "projects/my-project/locations/us/apps/my-app-id"
versions = Versions(app_name=app_name)
# List all versions
all_versions = versions.list_versions()
for v in all_versions:
print(v.display_name, v.name)
# Get a map of version display names to resource names
versions_map = versions.get_versions_map()
print(versions_map)
# Use a specific version in a session
from cxas_scrapi import Sessions
sessions = Sessions(app_name=app_name, version_id="v1-0-0")
Reference
Versions
Versions(app_name, creds_path=None, creds_dict=None, creds=None, scope=None, **kwargs)
Bases: Apps
Core Class for managing AppVersion Resources.
Initializes the Versions client.
Source code in src/cxas_scrapi/core/versions.py
| def __init__(
self,
app_name: str,
creds_path: str = None,
creds_dict: Dict[str, str] = None,
creds: Any = None,
scope: List[str] = None,
**kwargs,
):
"""Initializes the Versions client."""
project_id = app_name.split("/")[1]
location = app_name.split("/")[3]
super().__init__(
project_id=project_id,
location=location,
creds_path=creds_path,
creds_dict=creds_dict,
creds=creds,
scope=scope,
**kwargs,
)
self.resource_type = "versions"
self.app_name = app_name
|
list_versions
Lists versions within the app.
Source code in src/cxas_scrapi/core/versions.py
| def list_versions(self) -> List[types.AppVersion]:
"""Lists versions within the app."""
request = types.ListAppVersionsRequest(parent=self.app_name)
response = self.client.list_app_versions(request=request)
return list(response)
|
get_versions_map
get_versions_map(reverse=False)
Returns a map of version display names to full resource names.
Parameters:
| Name | Type | Description | Default |
reverse | bool | If True, map display_name -> name. | False |
Source code in src/cxas_scrapi/core/versions.py
| def get_versions_map(self, reverse: bool = False) -> Dict[str, str]:
"""Returns a map of version display names to full resource names.
Args:
reverse: If True, map display_name -> name.
"""
versions = self.list_versions()
versions_map: Dict[str, str] = {}
for version in versions:
display_name = version.display_name
name = version.name
if display_name and name:
if reverse:
versions_map[display_name] = name
else:
versions_map[name] = display_name
return versions_map
|
get_version
Gets a specific version.
Source code in src/cxas_scrapi/core/versions.py
| def get_version(self, version_id: str) -> types.AppVersion:
"""Gets a specific version."""
request = types.GetAppVersionRequest(
name=f"{self.app_name}/versions/{version_id}"
)
return self.client.get_app_version(request=request)
|
delete_version
delete_version(version_id)
Deletes a specific version.
Source code in src/cxas_scrapi/core/versions.py
| def delete_version(self, version_id: str) -> None:
"""Deletes a specific version."""
request = types.DeleteAppVersionRequest(
name=f"{self.app_name}/versions/{version_id}"
)
self.client.delete_app_version(request=request)
|
revert_version
revert_version(version_id)
Reverts (Restores) a specific version.
Source code in src/cxas_scrapi/core/versions.py
| def revert_version(self, version_id: str) -> Any:
"""Reverts (Restores) a specific version."""
request = types.RestoreAppVersionRequest(
name=f"{self.app_name}/versions/{version_id}"
)
return self.client.restore_app_version(request=request)
|