Skip to content

Commit 9c09ded

Browse files
committed
Version 1.4.84
1 parent 523e4fd commit 9c09ded

31 files changed

Lines changed: 340 additions & 56 deletions

File tree

abacusai/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,4 @@
303303
from .workflow_node_template import WorkflowNodeTemplate
304304

305305

306-
__version__ = "1.4.83"
306+
__version__ = "1.4.84"

abacusai/api_class/enums.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,7 @@ class LLMName(ApiEnum):
562562
CLAUDE_V4_SONNET = 'CLAUDE_V4_SONNET'
563563
CLAUDE_V4_OPUS = 'CLAUDE_V4_OPUS'
564564
CLAUDE_V4_5_SONNET = 'CLAUDE_V4_5_SONNET'
565+
CLAUDE_V4_6_SONNET = 'CLAUDE_V4_6_SONNET'
565566
CLAUDE_V4_5_OPUS = 'CLAUDE_V4_5_OPUS'
566567
CLAUDE_V4_6_OPUS = 'CLAUDE_V4_6_OPUS'
567568
GEMINI_1_5_PRO = 'GEMINI_1_5_PRO'
@@ -570,6 +571,7 @@ class LLMName(ApiEnum):
570571
GEMINI_2_FLASH = 'GEMINI_2_FLASH'
571572
GEMINI_2_5_PRO = 'GEMINI_2_5_PRO'
572573
GEMINI_3_PRO = 'GEMINI_3_PRO'
574+
GEMINI_3_1_PRO = 'GEMINI_3_1_PRO'
573575
GEMINI_2_5_FLASH = 'GEMINI_2_5_FLASH'
574576
GEMINI_3_FLASH = 'GEMINI_3_FLASH'
575577
XAI_GROK = 'XAI_GROK'

abacusai/api_class/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
522522
keyword_requirement_instructions: str = dataclasses.field(default=None)
523523
query_rewrite_instructions: str = dataclasses.field(default=None)
524524
max_search_results: int = dataclasses.field(default=None)
525-
max_page_images: int = dataclasses.field(default=5)
525+
max_page_images: int = dataclasses.field(default=None)
526526
data_feature_group_ids: List[str] = dataclasses.field(default=None)
527527
data_prompt_context: str = dataclasses.field(default=None)
528528
data_prompt_table_context: Dict[str, str] = dataclasses.field(default=None)

abacusai/api_client_utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def avro_to_pandas_dtype(avro_type):
3333
'bytes': 'object',
3434
'null': 'object',
3535
'date': 'object',
36-
'datetime': 'datetime',
36+
'datetime': None,
3737
}
3838

3939
if isinstance(avro_type, dict):
@@ -177,14 +177,14 @@ def load_as_pandas_from_avro_fd(fd: IO):
177177
[r for r in reader], columns=col_dtypes.keys())
178178

179179
for col in df_part.columns:
180-
if col_dtypes[col] == 'datetime':
180+
if col_dtypes[col] is None:
181181
df_part[col] = pd.to_datetime(
182182
df_part[col], errors='coerce')
183183

184-
if pd.core.dtypes.common.is_datetime64_ns_dtype(df_part[col]):
184+
if pd.api.types.is_datetime64_any_dtype(df_part[col]):
185185
df_part[col] = df_part[col].dt.tz_localize(
186186
None)
187-
elif str(df_part[col].dtype).lower() != str(col_dtypes[col]).lower():
187+
elif col_dtypes[col] is not None and str(df_part[col].dtype).lower() != str(col_dtypes[col]).lower():
188188
df_part[col] = df_part[col].astype(
189189
col_dtypes[col])
190190
return df_part

abacusai/chatllm_task.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,13 @@ class ChatllmTask(AbstractApiClass):
2929
executionMode (str): The execution mode of the chatllm task.
3030
taskDefinition (dict): The task definition (for web_service_trigger tasks).
3131
webAppHostname (str): The hostname of the web app associated with the daemon task.
32+
triggerType (str): The trigger type of the daemon task (scheduled or event_based).
33+
webhookUrl (str): The webhook URL for event-based daemon tasks.
3234
hostedDatabase (HostedDatabase): The hosted database for the daemon task.
3335
latestDaemonTaskInstance (DaemonTaskInstance): The latest task instance for daemon tasks.
3436
"""
3537

36-
def __init__(self, client, chatllmTaskId=None, daemonTaskId=None, taskType=None, name=None, instructions=None, description=None, lifecycle=None, scheduleInfo=None, externalApplicationId=None, deploymentConversationId=None, sourceDeploymentConversationId=None, enableEmailAlerts=None, email=None, numUnreadTaskInstances=None, computePointsUsed=None, displayMarkdown=None, requiresNewConversation=None, executionMode=None, taskDefinition=None, webAppHostname=None, hostedDatabase={}, latestDaemonTaskInstance={}):
38+
def __init__(self, client, chatllmTaskId=None, daemonTaskId=None, taskType=None, name=None, instructions=None, description=None, lifecycle=None, scheduleInfo=None, externalApplicationId=None, deploymentConversationId=None, sourceDeploymentConversationId=None, enableEmailAlerts=None, email=None, numUnreadTaskInstances=None, computePointsUsed=None, displayMarkdown=None, requiresNewConversation=None, executionMode=None, taskDefinition=None, webAppHostname=None, triggerType=None, webhookUrl=None, hostedDatabase={}, latestDaemonTaskInstance={}):
3739
super().__init__(client, chatllmTaskId)
3840
self.chatllm_task_id = chatllmTaskId
3941
self.daemon_task_id = daemonTaskId
@@ -55,15 +57,17 @@ def __init__(self, client, chatllmTaskId=None, daemonTaskId=None, taskType=None,
5557
self.execution_mode = executionMode
5658
self.task_definition = taskDefinition
5759
self.web_app_hostname = webAppHostname
60+
self.trigger_type = triggerType
61+
self.webhook_url = webhookUrl
5862
self.hosted_database = client._build_class(
5963
HostedDatabase, hostedDatabase)
6064
self.latest_daemon_task_instance = client._build_class(
6165
DaemonTaskInstance, latestDaemonTaskInstance)
6266
self.deprecated_keys = {}
6367

6468
def __repr__(self):
65-
repr_dict = {f'chatllm_task_id': repr(self.chatllm_task_id), f'daemon_task_id': repr(self.daemon_task_id), f'task_type': repr(self.task_type), f'name': repr(self.name), f'instructions': repr(self.instructions), f'description': repr(self.description), f'lifecycle': repr(self.lifecycle), f'schedule_info': repr(self.schedule_info), f'external_application_id': repr(self.external_application_id), f'deployment_conversation_id': repr(self.deployment_conversation_id), f'source_deployment_conversation_id': repr(self.source_deployment_conversation_id), f'enable_email_alerts': repr(
66-
self.enable_email_alerts), f'email': repr(self.email), f'num_unread_task_instances': repr(self.num_unread_task_instances), f'compute_points_used': repr(self.compute_points_used), f'display_markdown': repr(self.display_markdown), f'requires_new_conversation': repr(self.requires_new_conversation), f'execution_mode': repr(self.execution_mode), f'task_definition': repr(self.task_definition), f'web_app_hostname': repr(self.web_app_hostname), f'hosted_database': repr(self.hosted_database), f'latest_daemon_task_instance': repr(self.latest_daemon_task_instance)}
69+
repr_dict = {f'chatllm_task_id': repr(self.chatllm_task_id), f'daemon_task_id': repr(self.daemon_task_id), f'task_type': repr(self.task_type), f'name': repr(self.name), f'instructions': repr(self.instructions), f'description': repr(self.description), f'lifecycle': repr(self.lifecycle), f'schedule_info': repr(self.schedule_info), f'external_application_id': repr(self.external_application_id), f'deployment_conversation_id': repr(self.deployment_conversation_id), f'source_deployment_conversation_id': repr(self.source_deployment_conversation_id), f'enable_email_alerts': repr(self.enable_email_alerts), f'email': repr(
70+
self.email), f'num_unread_task_instances': repr(self.num_unread_task_instances), f'compute_points_used': repr(self.compute_points_used), f'display_markdown': repr(self.display_markdown), f'requires_new_conversation': repr(self.requires_new_conversation), f'execution_mode': repr(self.execution_mode), f'task_definition': repr(self.task_definition), f'web_app_hostname': repr(self.web_app_hostname), f'trigger_type': repr(self.trigger_type), f'webhook_url': repr(self.webhook_url), f'hosted_database': repr(self.hosted_database), f'latest_daemon_task_instance': repr(self.latest_daemon_task_instance)}
6771
class_name = "ChatllmTask"
6872
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
6973
) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -76,6 +80,6 @@ def to_dict(self):
7680
Returns:
7781
dict: The dict value representation of the class parameters
7882
"""
79-
resp = {'chatllm_task_id': self.chatllm_task_id, 'daemon_task_id': self.daemon_task_id, 'task_type': self.task_type, 'name': self.name, 'instructions': self.instructions, 'description': self.description, 'lifecycle': self.lifecycle, 'schedule_info': self.schedule_info, 'external_application_id': self.external_application_id, 'deployment_conversation_id': self.deployment_conversation_id, 'source_deployment_conversation_id': self.source_deployment_conversation_id, 'enable_email_alerts': self.enable_email_alerts,
80-
'email': self.email, 'num_unread_task_instances': self.num_unread_task_instances, 'compute_points_used': self.compute_points_used, 'display_markdown': self.display_markdown, 'requires_new_conversation': self.requires_new_conversation, 'execution_mode': self.execution_mode, 'task_definition': self.task_definition, 'web_app_hostname': self.web_app_hostname, 'hosted_database': self._get_attribute_as_dict(self.hosted_database), 'latest_daemon_task_instance': self._get_attribute_as_dict(self.latest_daemon_task_instance)}
83+
resp = {'chatllm_task_id': self.chatllm_task_id, 'daemon_task_id': self.daemon_task_id, 'task_type': self.task_type, 'name': self.name, 'instructions': self.instructions, 'description': self.description, 'lifecycle': self.lifecycle, 'schedule_info': self.schedule_info, 'external_application_id': self.external_application_id, 'deployment_conversation_id': self.deployment_conversation_id, 'source_deployment_conversation_id': self.source_deployment_conversation_id, 'enable_email_alerts': self.enable_email_alerts, 'email': self.email,
84+
'num_unread_task_instances': self.num_unread_task_instances, 'compute_points_used': self.compute_points_used, 'display_markdown': self.display_markdown, 'requires_new_conversation': self.requires_new_conversation, 'execution_mode': self.execution_mode, 'task_definition': self.task_definition, 'web_app_hostname': self.web_app_hostname, 'trigger_type': self.trigger_type, 'webhook_url': self.webhook_url, 'hosted_database': self._get_attribute_as_dict(self.hosted_database), 'latest_daemon_task_instance': self._get_attribute_as_dict(self.latest_daemon_task_instance)}
8185
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}

abacusai/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ class BaseApiClient:
716716
client_options (ClientOptions): Optional API client configurations
717717
skip_version_check (bool): If true, will skip checking the server's current API version on initializing the client
718718
"""
719-
client_version = '1.4.83'
719+
client_version = '1.4.84'
720720

721721
def __init__(self, api_key: str = None, server: str = None, client_options: ClientOptions = None, skip_version_check: bool = False, include_tb: bool = False):
722722
self.api_key = api_key

abacusai/llm_artifact.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ class LlmArtifact(AbstractApiClass):
1919
hasDatabase (bool): Whether the app associated with the artifact has a database
2020
hasStorage (bool): Whether the app associated with the artifact has a storage
2121
projectMetadata (dict): The metadata of the web app project
22+
hasSeparateProdDatabase (bool): Whether the artifact has a separate prod database
2223
hasDatabaseSnapshot (bool): Whether the artifact database has a snapshot
2324
supportsPreviewRestore (bool): Whether the artifact supports preview restore
2425
accessLevel (str): The access level of the artifact
2526
"""
2627

27-
def __init__(self, client, llmArtifactId=None, info=None, description=None, createdAt=None, webAppDeploymentId=None, deploymentStatus=None, isLatest=None, deploymentConversationId=None, webAppProjectId=None, hasDatabase=None, hasStorage=None, projectMetadata=None, hasDatabaseSnapshot=None, supportsPreviewRestore=None, accessLevel=None):
28+
def __init__(self, client, llmArtifactId=None, info=None, description=None, createdAt=None, webAppDeploymentId=None, deploymentStatus=None, isLatest=None, deploymentConversationId=None, webAppProjectId=None, hasDatabase=None, hasStorage=None, projectMetadata=None, hasSeparateProdDatabase=None, hasDatabaseSnapshot=None, supportsPreviewRestore=None, accessLevel=None):
2829
super().__init__(client, llmArtifactId)
2930
self.llm_artifact_id = llmArtifactId
3031
self.info = info
@@ -38,14 +39,15 @@ def __init__(self, client, llmArtifactId=None, info=None, description=None, crea
3839
self.has_database = hasDatabase
3940
self.has_storage = hasStorage
4041
self.project_metadata = projectMetadata
42+
self.has_separate_prod_database = hasSeparateProdDatabase
4143
self.has_database_snapshot = hasDatabaseSnapshot
4244
self.supports_preview_restore = supportsPreviewRestore
4345
self.access_level = accessLevel
4446
self.deprecated_keys = {}
4547

4648
def __repr__(self):
47-
repr_dict = {f'llm_artifact_id': repr(self.llm_artifact_id), f'info': repr(self.info), f'description': repr(self.description), f'created_at': repr(self.created_at), f'web_app_deployment_id': repr(self.web_app_deployment_id), f'deployment_status': repr(self.deployment_status), f'is_latest': repr(self.is_latest), f'deployment_conversation_id': repr(
48-
self.deployment_conversation_id), f'web_app_project_id': repr(self.web_app_project_id), f'has_database': repr(self.has_database), f'has_storage': repr(self.has_storage), f'project_metadata': repr(self.project_metadata), f'has_database_snapshot': repr(self.has_database_snapshot), f'supports_preview_restore': repr(self.supports_preview_restore), f'access_level': repr(self.access_level)}
49+
repr_dict = {f'llm_artifact_id': repr(self.llm_artifact_id), f'info': repr(self.info), f'description': repr(self.description), f'created_at': repr(self.created_at), f'web_app_deployment_id': repr(self.web_app_deployment_id), f'deployment_status': repr(self.deployment_status), f'is_latest': repr(self.is_latest), f'deployment_conversation_id': repr(self.deployment_conversation_id), f'web_app_project_id': repr(
50+
self.web_app_project_id), f'has_database': repr(self.has_database), f'has_storage': repr(self.has_storage), f'project_metadata': repr(self.project_metadata), f'has_separate_prod_database': repr(self.has_separate_prod_database), f'has_database_snapshot': repr(self.has_database_snapshot), f'supports_preview_restore': repr(self.supports_preview_restore), f'access_level': repr(self.access_level)}
4951
class_name = "LlmArtifact"
5052
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
5153
) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -58,6 +60,6 @@ def to_dict(self):
5860
Returns:
5961
dict: The dict value representation of the class parameters
6062
"""
61-
resp = {'llm_artifact_id': self.llm_artifact_id, 'info': self.info, 'description': self.description, 'created_at': self.created_at, 'web_app_deployment_id': self.web_app_deployment_id, 'deployment_status': self.deployment_status, 'is_latest': self.is_latest, 'deployment_conversation_id': self.deployment_conversation_id,
62-
'web_app_project_id': self.web_app_project_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'project_metadata': self.project_metadata, 'has_database_snapshot': self.has_database_snapshot, 'supports_preview_restore': self.supports_preview_restore, 'access_level': self.access_level}
63+
resp = {'llm_artifact_id': self.llm_artifact_id, 'info': self.info, 'description': self.description, 'created_at': self.created_at, 'web_app_deployment_id': self.web_app_deployment_id, 'deployment_status': self.deployment_status, 'is_latest': self.is_latest, 'deployment_conversation_id': self.deployment_conversation_id, 'web_app_project_id':
64+
self.web_app_project_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'project_metadata': self.project_metadata, 'has_separate_prod_database': self.has_separate_prod_database, 'has_database_snapshot': self.has_database_snapshot, 'supports_preview_restore': self.supports_preview_restore, 'access_level': self.access_level}
6365
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}

abacusai/vertical.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,24 @@ class Vertical(AbstractApiClass):
88
Args:
99
client (ApiClient): An authenticated API Client instance
1010
externalApplicationId (str): The ID of the vertical's external application.
11+
deploymentId (str): The ID of the vertical's deployment.
1112
name (str): The name of the vertical.
1213
description (str): The description of the vertical.
1314
verticalType (str): The type of vertical (e.g., HEALTH).
1415
"""
1516

16-
def __init__(self, client, externalApplicationId=None, name=None, description=None, verticalType=None):
17+
def __init__(self, client, externalApplicationId=None, deploymentId=None, name=None, description=None, verticalType=None):
1718
super().__init__(client, None)
1819
self.external_application_id = externalApplicationId
20+
self.deployment_id = deploymentId
1921
self.name = name
2022
self.description = description
2123
self.vertical_type = verticalType
2224
self.deprecated_keys = {}
2325

2426
def __repr__(self):
25-
repr_dict = {f'external_application_id': repr(self.external_application_id), f'name': repr(
26-
self.name), f'description': repr(self.description), f'vertical_type': repr(self.vertical_type)}
27+
repr_dict = {f'external_application_id': repr(self.external_application_id), f'deployment_id': repr(
28+
self.deployment_id), f'name': repr(self.name), f'description': repr(self.description), f'vertical_type': repr(self.vertical_type)}
2729
class_name = "Vertical"
2830
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
2931
) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -36,6 +38,6 @@ def to_dict(self):
3638
Returns:
3739
dict: The dict value representation of the class parameters
3840
"""
39-
resp = {'external_application_id': self.external_application_id, 'name': self.name,
40-
'description': self.description, 'vertical_type': self.vertical_type}
41+
resp = {'external_application_id': self.external_application_id, 'deployment_id': self.deployment_id,
42+
'name': self.name, 'description': self.description, 'vertical_type': self.vertical_type}
4143
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}

0 commit comments

Comments
 (0)