dhisana 0.0.1.dev225__tar.gz → 0.0.1.dev226__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 (116) hide show
  1. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/PKG-INFO +1 -1
  2. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/setup.py +1 -1
  3. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/test_connect.py +93 -0
  4. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana.egg-info/PKG-INFO +1 -1
  5. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/README.md +0 -0
  6. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/pyproject.toml +0 -0
  7. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/setup.cfg +0 -0
  8. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/__init__.py +0 -0
  9. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/cli/__init__.py +0 -0
  10. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/cli/cli.py +0 -0
  11. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/cli/datasets.py +0 -0
  12. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/cli/models.py +0 -0
  13. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/cli/predictions.py +0 -0
  14. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/schemas/__init__.py +0 -0
  15. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/schemas/common.py +0 -0
  16. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/schemas/sales.py +0 -0
  17. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/ui/__init__.py +0 -0
  18. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/ui/components.py +0 -0
  19. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/__init__.py +0 -0
  20. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/add_mapping.py +0 -0
  21. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/agent_tools.py +0 -0
  22. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/apollo_tools.py +0 -0
  23. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/assistant_tool_tag.py +0 -0
  24. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/built_with_api_tools.py +0 -0
  25. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/cache_output_tools.py +0 -0
  26. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/cache_output_tools_local.py +0 -0
  27. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/check_email_validity_tools.py +0 -0
  28. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/check_for_intent_signal.py +0 -0
  29. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
  30. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/clay_tools.py +0 -0
  31. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/clean_properties.py +0 -0
  32. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/company_utils.py +0 -0
  33. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/compose_salesnav_query.py +0 -0
  34. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/compose_search_query.py +0 -0
  35. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
  36. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/composite_tools.py +0 -0
  37. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/dataframe_tools.py +0 -0
  38. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/domain_parser.py +0 -0
  39. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/email_parse_helpers.py +0 -0
  40. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/email_provider.py +0 -0
  41. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/enrich_lead_information.py +0 -0
  42. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
  43. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/fetch_openai_config.py +0 -0
  44. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/field_validators.py +0 -0
  45. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/g2_tools.py +0 -0
  46. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_content.py +0 -0
  47. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_email.py +0 -0
  48. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_email_response.py +0 -0
  49. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_flow.py +0 -0
  50. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
  51. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_linkedin_connect_message.py +0 -0
  52. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_linkedin_response_message.py +0 -0
  53. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/generate_structured_output_internal.py +0 -0
  54. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/google_custom_search.py +0 -0
  55. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/google_oauth_tools.py +0 -0
  56. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/google_workspace_tools.py +0 -0
  57. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/hubspot_clearbit.py +0 -0
  58. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
  59. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/instantly_tools.py +0 -0
  60. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/linkedin_crawler.py +0 -0
  61. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/lusha_tools.py +0 -0
  62. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/mailgun_tools.py +0 -0
  63. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/microsoft365_tools.py +0 -0
  64. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/openai_assistant_and_file_utils.py +0 -0
  65. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/openai_helpers.py +0 -0
  66. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
  67. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
  68. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
  69. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
  70. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
  71. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
  72. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/profile.py +0 -0
  73. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/proxy_curl_tools.py +0 -0
  74. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
  75. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/python_function_to_tools.py +0 -0
  76. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/research_lead.py +0 -0
  77. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
  78. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
  79. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/search_router.py +0 -0
  80. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/search_router_jobs.py +0 -0
  81. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/sendgrid_tools.py +0 -0
  82. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serarch_router_local_business.py +0 -0
  83. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
  84. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
  85. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serpapi_google_search.py +0 -0
  86. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
  87. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serpapi_search_tools.py +0 -0
  88. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
  89. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serperdev_local_business.py +0 -0
  90. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/serperdev_search.py +0 -0
  91. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/smtp_email_tools.py +0 -0
  92. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/trasform_json.py +0 -0
  93. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/web_download_parse_tools.py +0 -0
  94. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/workflow_code_model.py +0 -0
  95. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/utils/zoominfo_tools.py +0 -0
  96. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/workflow/__init__.py +0 -0
  97. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/workflow/agent.py +0 -0
  98. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/workflow/flow.py +0 -0
  99. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/workflow/task.py +0 -0
  100. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana/workflow/test.py +0 -0
  101. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana.egg-info/SOURCES.txt +0 -0
  102. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana.egg-info/dependency_links.txt +0 -0
  103. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana.egg-info/entry_points.txt +0 -0
  104. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana.egg-info/requires.txt +0 -0
  105. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/src/dhisana.egg-info/top_level.txt +0 -0
  106. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_agent_tools.py +0 -0
  107. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_apollo_company_search.py +0 -0
  108. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_apollo_lead_search.py +0 -0
  109. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_connectivity.py +0 -0
  110. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_google_document.py +0 -0
  111. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_hubspot_call_logs.py +0 -0
  112. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_linkedin_serper.py +0 -0
  113. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_mcp_connectivity.py +0 -0
  114. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_proxycurl_get_company_search_id.py +0 -0
  115. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/tests/test_proxycurl_job_count.py +0 -0
  116. {dhisana-0.0.1.dev225 → dhisana-0.0.1.dev226}/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.dev225
3
+ Version: 0.0.1.dev226
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-dev225',
5
+ version='0.0.1-dev226',
6
6
  description='A Python SDK for Dhisana AI Platform',
7
7
  author='Admin',
8
8
  author_email='contact@dhisana.ai',
@@ -810,6 +810,76 @@ async def test_clay(api_key: str, webhook: str) -> Dict[str, Any]:
810
810
  logger.error(f"Clay test failed: {exc}")
811
811
  return {"success": False, "status_code": 0, "error_message": str(exc)}
812
812
 
813
+ ###############################################################################
814
+ # POSTHOG CONNECTIVITY TEST
815
+ ###############################################################################
816
+
817
+ async def test_posthog(
818
+ api_host: str,
819
+ project_id: str,
820
+ personal_api_key: str,
821
+ ) -> Dict[str, Any]:
822
+ """
823
+ Validate PostHog connectivity by issuing a lightweight HogQL query.
824
+
825
+ Requires:
826
+ • api_host (e.g. https://app.posthog.com or self-hosted URL)
827
+ • project_id (numeric or string project identifier)
828
+ • personal_api_key (token with query access)
829
+ """
830
+ base_url = (api_host or "").rstrip("/")
831
+ if not base_url:
832
+ return {
833
+ "success": False,
834
+ "status_code": 0,
835
+ "error_message": "Missing api_host for PostHog connectivity test.",
836
+ }
837
+ if not project_id:
838
+ return {
839
+ "success": False,
840
+ "status_code": 0,
841
+ "error_message": "Missing project_id for PostHog connectivity test.",
842
+ }
843
+ if not personal_api_key:
844
+ return {
845
+ "success": False,
846
+ "status_code": 0,
847
+ "error_message": "Missing personal_api_key for PostHog connectivity test.",
848
+ }
849
+
850
+ url = f"{base_url}/api/projects/{project_id}/query/"
851
+ headers = {
852
+ "Authorization": f"Bearer {personal_api_key}",
853
+ "Content-Type": "application/json",
854
+ }
855
+ payload = {"query": {"kind": "HogQLQuery", "query": "SELECT 1"}}
856
+
857
+ try:
858
+ async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=10)) as session:
859
+ async with session.post(url, headers=headers, json=payload) as response:
860
+ status = response.status
861
+ data = await safe_json(response)
862
+
863
+ if status == 200:
864
+ return {"success": True, "status_code": status, "error_message": None}
865
+
866
+ detail = None
867
+ if isinstance(data, dict):
868
+ detail = (
869
+ data.get("message")
870
+ or data.get("detail")
871
+ or data.get("error")
872
+ or data.get("code")
873
+ )
874
+ return {
875
+ "success": False,
876
+ "status_code": status,
877
+ "error_message": detail or f"PostHog responded with {status}",
878
+ }
879
+ except Exception as exc:
880
+ logger.error(f"PostHog connectivity test failed: {exc}")
881
+ return {"success": False, "status_code": 0, "error_message": str(exc)}
882
+
813
883
  ###############################################################################
814
884
  # MCP SERVER CONNECTIVITY TEST
815
885
  ###############################################################################
@@ -1358,6 +1428,7 @@ async def test_connectivity(tool_config: List[Dict[str, Any]]) -> Dict[str, Dict
1358
1428
  "youtube": test_youtube,
1359
1429
  "salesforce": test_salesforce,
1360
1430
  "clay": test_clay,
1431
+ "posthog": test_posthog,
1361
1432
  "mcpServer": test_mcp_server,
1362
1433
  "slack": test_slack,
1363
1434
  "mailgun": test_mailgun,
@@ -1479,6 +1550,28 @@ async def test_connectivity(tool_config: List[Dict[str, Any]]) -> Dict[str, Dict
1479
1550
  results[tool_name] = await test_mailgun(api_key, domain)
1480
1551
  continue
1481
1552
 
1553
+ # ------------------------------------------------------------------ #
1554
+ # Special-case: PostHog (needs host + project id + personal API key)
1555
+ # ------------------------------------------------------------------ #
1556
+ if tool_name == "posthog":
1557
+ api_host = next((c["value"] for c in config_entries if c["name"] == "api_host"), None)
1558
+ project_id = next((c["value"] for c in config_entries if c["name"] == "project_id"), None)
1559
+ personal_api_key = next(
1560
+ (c["value"] for c in config_entries if c["name"] in ("personal_api_key", "personalApiKey")),
1561
+ None,
1562
+ )
1563
+
1564
+ if not api_host or not project_id or not personal_api_key:
1565
+ results[tool_name] = {
1566
+ "success": False,
1567
+ "status_code": 0,
1568
+ "error_message": "Missing api_host, project_id, or personal_api_key for PostHog.",
1569
+ }
1570
+ else:
1571
+ logger.info("Testing connectivity for PostHog…")
1572
+ results[tool_name] = await test_posthog(api_host, project_id, personal_api_key)
1573
+ continue
1574
+
1482
1575
  # ------------------------------------------------------------------ #
1483
1576
  # Special-case: Salesforce (requires credentials)
1484
1577
  # ------------------------------------------------------------------ #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev225
3
+ Version: 0.0.1.dev226
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