dhisana 0.0.1.dev256__tar.gz → 0.0.1.dev258__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/PKG-INFO +1 -1
  2. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/setup.py +1 -1
  3. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/enrich_lead_information.py +2 -2
  4. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/google_workspace_tools.py +26 -3
  5. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serpapi_search_tools.py +2 -2
  6. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana.egg-info/PKG-INFO +1 -1
  7. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/README.md +0 -0
  8. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/pyproject.toml +0 -0
  9. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/setup.cfg +0 -0
  10. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/__init__.py +0 -0
  11. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/cli/__init__.py +0 -0
  12. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/cli/cli.py +0 -0
  13. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/cli/datasets.py +0 -0
  14. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/cli/models.py +0 -0
  15. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/cli/predictions.py +0 -0
  16. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/schemas/__init__.py +0 -0
  17. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/schemas/common.py +0 -0
  18. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/schemas/sales.py +0 -0
  19. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/ui/__init__.py +0 -0
  20. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/ui/components.py +0 -0
  21. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/__init__.py +0 -0
  22. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/add_mapping.py +0 -0
  23. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/agent_tools.py +0 -0
  24. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/apollo_tools.py +0 -0
  25. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/assistant_tool_tag.py +0 -0
  26. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/built_with_api_tools.py +0 -0
  27. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/cache_output_tools.py +0 -0
  28. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/cache_output_tools_local.py +0 -0
  29. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/check_email_validity_tools.py +0 -0
  30. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/check_for_intent_signal.py +0 -0
  31. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
  32. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/clay_tools.py +0 -0
  33. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/clean_properties.py +0 -0
  34. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/company_utils.py +0 -0
  35. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/compose_salesnav_query.py +0 -0
  36. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/compose_search_query.py +0 -0
  37. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
  38. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/composite_tools.py +0 -0
  39. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/dataframe_tools.py +0 -0
  40. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/domain_parser.py +0 -0
  41. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/email_body_utils.py +0 -0
  42. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/email_parse_helpers.py +0 -0
  43. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/email_provider.py +0 -0
  44. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
  45. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/fetch_openai_config.py +0 -0
  46. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/field_validators.py +0 -0
  47. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/g2_tools.py +0 -0
  48. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_content.py +0 -0
  49. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_custom_message.py +0 -0
  50. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_email.py +0 -0
  51. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_email_response.py +0 -0
  52. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_flow.py +0 -0
  53. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
  54. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_linkedin_connect_message.py +0 -0
  55. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_linkedin_response_message.py +0 -0
  56. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/generate_structured_output_internal.py +0 -0
  57. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/google_custom_search.py +0 -0
  58. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/google_oauth_tools.py +0 -0
  59. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/hubspot_clearbit.py +0 -0
  60. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
  61. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/instantly_tools.py +0 -0
  62. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/linkedin_crawler.py +0 -0
  63. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/lusha_tools.py +0 -0
  64. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/mailgun_tools.py +0 -0
  65. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/mailreach_tools.py +0 -0
  66. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/microsoft365_tools.py +0 -0
  67. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/openai_assistant_and_file_utils.py +0 -0
  68. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/openai_helpers.py +0 -0
  69. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
  70. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
  71. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
  72. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
  73. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
  74. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
  75. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/profile.py +0 -0
  76. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/proxy_curl_tools.py +0 -0
  77. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
  78. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/python_function_to_tools.py +0 -0
  79. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/research_lead.py +0 -0
  80. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
  81. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
  82. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/search_router.py +0 -0
  83. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/search_router_jobs.py +0 -0
  84. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/sendgrid_tools.py +0 -0
  85. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serarch_router_local_business.py +0 -0
  86. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
  87. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
  88. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serpapi_google_search.py +0 -0
  89. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
  90. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
  91. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serperdev_local_business.py +0 -0
  92. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/serperdev_search.py +0 -0
  93. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/smtp_email_tools.py +0 -0
  94. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/test_connect.py +0 -0
  95. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/trasform_json.py +0 -0
  96. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/web_download_parse_tools.py +0 -0
  97. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/workflow_code_model.py +0 -0
  98. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/utils/zoominfo_tools.py +0 -0
  99. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/workflow/__init__.py +0 -0
  100. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/workflow/agent.py +0 -0
  101. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/workflow/flow.py +0 -0
  102. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/workflow/task.py +0 -0
  103. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana/workflow/test.py +0 -0
  104. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana.egg-info/SOURCES.txt +0 -0
  105. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana.egg-info/dependency_links.txt +0 -0
  106. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana.egg-info/entry_points.txt +0 -0
  107. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana.egg-info/requires.txt +0 -0
  108. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/src/dhisana.egg-info/top_level.txt +0 -0
  109. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_agent_tools.py +0 -0
  110. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_apollo_company_search.py +0 -0
  111. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_apollo_lead_search.py +0 -0
  112. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_connectivity.py +0 -0
  113. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_email_body_utils.py +0 -0
  114. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_google_document.py +0 -0
  115. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_hubspot_call_logs.py +0 -0
  116. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_linkedin_serper.py +0 -0
  117. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_mailreach.py +0 -0
  118. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_mcp_connectivity.py +0 -0
  119. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_proxycurl_get_company_search_id.py +0 -0
  120. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_proxycurl_job_count.py +0 -0
  121. {dhisana-0.0.1.dev256 → dhisana-0.0.1.dev258}/tests/test_structured_output_with_mcp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev256
3
+ Version: 0.0.1.dev258
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='dhisana',
5
- version='0.0.1-dev256',
5
+ version='0.0.1-dev258',
6
6
  description='A Python SDK for Dhisana AI Platform',
7
7
  author='Admin',
8
8
  author_email='contact@dhisana.ai',
@@ -753,8 +753,8 @@ async def get_organization_linkedin_url(lead: Dict[str, Any], tools: Optional[Li
753
753
 
754
754
  linkedin_url = await find_organization_linkedin_url_with_google_search(
755
755
  name,
756
- company_location="US",
757
- company_domain=lead.get("primary_domain_of_organization"),
756
+ company_location="USA",
757
+ company_domain=lead.get("primary_domain_of_organization", ""),
758
758
  use_strict_check=True,
759
759
  tool_config=tools,
760
760
  )
@@ -33,7 +33,7 @@ from dhisana.schemas.common import (SendEmailContext, QueryEmailContext, ReplyEm
33
33
  # HELPER FUNCTIONS
34
34
  ################################################################################
35
35
 
36
- def get_google_workspace_token(tool_config: Optional[List[Dict]] = None) -> str:
36
+ def get_google_workspace_token(tool_config: Optional[List[Dict]] = None) -> Any:
37
37
  """
38
38
  Retrieves the GOOGLE_SERVICE_KEY (base64-encoded JSON) from the provided tool configuration or environment.
39
39
 
@@ -43,7 +43,7 @@ def get_google_workspace_token(tool_config: Optional[List[Dict]] = None) -> str:
43
43
  where "configuration" is a list of dictionaries containing "name" and "value" keys.
44
44
 
45
45
  Returns:
46
- str: The base64-encoded JSON string for the service account credentials.
46
+ Any: The service account payload (JSON string, base64 string, or dict) for credentials.
47
47
 
48
48
  Raises:
49
49
  ValueError: If the Google Workspace integration has not been configured.
@@ -75,6 +75,29 @@ def get_google_workspace_token(tool_config: Optional[List[Dict]] = None) -> str:
75
75
  return GOOGLE_SERVICE_KEY
76
76
 
77
77
 
78
+ def _normalize_service_account_info(service_account_json: Any) -> Dict[str, Any]:
79
+ """
80
+ Normalize a service account payload into a dict for Credentials.from_service_account_info.
81
+ Accepts dict, JSON string, or base64-encoded JSON string.
82
+ """
83
+ if isinstance(service_account_json, dict):
84
+ return service_account_json
85
+ if isinstance(service_account_json, (bytes, bytearray)):
86
+ service_account_json = service_account_json.decode("utf-8")
87
+ if not isinstance(service_account_json, str):
88
+ raise TypeError(
89
+ "Google Workspace service account payload must be a dict, str, bytes, or bytearray."
90
+ )
91
+ try:
92
+ return json.loads(service_account_json)
93
+ except json.JSONDecodeError:
94
+ try:
95
+ decoded = base64.b64decode(service_account_json).decode("utf-8")
96
+ except (ValueError, UnicodeDecodeError) as exc:
97
+ raise ValueError("Invalid Google Workspace service account payload.") from exc
98
+ return json.loads(decoded)
99
+
100
+
78
101
 
79
102
  def get_google_credentials(
80
103
  sender_email: str,
@@ -97,7 +120,7 @@ def get_google_credentials(
97
120
  raise ValueError("sender_email is required to impersonate via service account.")
98
121
 
99
122
  service_account_json = get_google_workspace_token(tool_config)
100
- service_account_info = json.loads(service_account_json)
123
+ service_account_info = _normalize_service_account_info(service_account_json)
101
124
 
102
125
  # Create Credentials object and impersonate the sender_email
103
126
  credentials = service_account.Credentials.from_service_account_info(
@@ -709,8 +709,8 @@ def extract_company_page(url: str) -> str:
709
709
  @assistant_tool
710
710
  async def find_organization_linkedin_url_with_google_search(
711
711
  company_name: str,
712
- company_location: Optional[str] = None,
713
- company_domain: Optional[str] = None,
712
+ company_location: str = "",
713
+ company_domain: str = "",
714
714
  use_strict_check: bool = True,
715
715
  tool_config: Optional[List[Dict]] = None,
716
716
  ) -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev256
3
+ Version: 0.0.1.dev258
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
File without changes
File without changes