dhisana 0.0.1.dev182__tar.gz → 0.0.1.dev183__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.
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/PKG-INFO +1 -1
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/setup.py +1 -1
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serpapi_google_search.py +3 -8
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serperdev_search.py +13 -9
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana.egg-info/PKG-INFO +1 -1
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/README.md +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/pyproject.toml +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/setup.cfg +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/__init__.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/cli/__init__.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/cli/cli.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/cli/datasets.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/cli/models.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/cli/predictions.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/schemas/__init__.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/schemas/common.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/schemas/sales.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/ui/__init__.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/ui/components.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/__init__.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/add_mapping.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/agent_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/apollo_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/assistant_tool_tag.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/built_with_api_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/cache_output_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/cache_output_tools_local.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/check_email_validity_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/check_for_intent_signal.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/clay_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/clean_properties.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/company_utils.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/compose_salesnav_query.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/compose_search_query.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/composite_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/dataframe_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/domain_parser.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/email_parse_helpers.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/email_provider.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/enrich_lead_information.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/fetch_openai_config.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/field_validators.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/g2_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_content.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_email.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_email_response.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_flow.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_linkedin_connect_message.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_linkedin_response_message.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_structured_output_internal.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/google_custom_search.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/google_workspace_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/hubspot_clearbit.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/instantly_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/linkedin_crawler.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/lusha_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openai_assistant_and_file_utils.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openai_helpers.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/proxy_curl_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/python_function_to_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/research_lead.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/search_router.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/search_router_jobs.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/sendgrid_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serarch_router_local_business.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serpapi_search_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serperdev_local_business.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/smtp_email_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/test_connect.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/trasform_json.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/web_download_parse_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/workflow_code_model.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/zoominfo_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/workflow/__init__.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/workflow/agent.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/workflow/flow.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/workflow/task.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/workflow/test.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana.egg-info/SOURCES.txt +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana.egg-info/dependency_links.txt +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana.egg-info/entry_points.txt +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana.egg-info/requires.txt +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana.egg-info/top_level.txt +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/tests/test_agent_tools.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/tests/test_linkedin_serper.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/tests/test_mcp_connectivity.py +0 -0
- {dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/tests/test_structured_output_with_mcp.py +0 -0
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
|
-
import
|
|
4
|
-
from typing import Any, Dict, List, Optional
|
|
5
|
-
from urllib.parse import urlparse
|
|
3
|
+
from typing import Dict, List, Optional
|
|
6
4
|
import aiohttp
|
|
7
|
-
from bs4 import BeautifulSoup
|
|
8
|
-
import urllib
|
|
9
5
|
|
|
10
6
|
from dhisana.utils.assistant_tool_tag import assistant_tool
|
|
11
7
|
from dhisana.utils.cache_output_tools import cache_output, retrieve_output
|
|
12
|
-
from dhisana.utils.web_download_parse_tools import fetch_html_content
|
|
13
8
|
|
|
14
9
|
import logging
|
|
15
10
|
logging.basicConfig(level=logging.INFO)
|
|
@@ -91,8 +86,8 @@ async def search_google_serpai(
|
|
|
91
86
|
SERPAPI_KEY = get_serp_api_access_token(tool_config)
|
|
92
87
|
base_url = "https://serpapi.com/search"
|
|
93
88
|
|
|
94
|
-
page_size =
|
|
95
|
-
start_index = offset
|
|
89
|
+
page_size = number_of_results
|
|
90
|
+
start_index = 0 if offset == 0 else offset + 1 # SerpAPI Pagination Mechanism: Uses the start parameter to specify the first result (zero-indexed)
|
|
96
91
|
all_items: list[dict] = []
|
|
97
92
|
seen_links: set[str] = set() # dedupe across blocks/pages
|
|
98
93
|
|
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
|
-
import re
|
|
4
3
|
from typing import Any, Dict, List, Optional
|
|
5
4
|
import aiohttp
|
|
6
|
-
from bs4 import BeautifulSoup
|
|
7
5
|
|
|
8
6
|
import logging
|
|
9
7
|
logging.basicConfig(level=logging.INFO)
|
|
10
8
|
logger = logging.getLogger(__name__)
|
|
11
9
|
|
|
12
|
-
from urllib.parse import urlparse
|
|
13
|
-
import urllib
|
|
14
10
|
|
|
15
11
|
# If you have these utils in your project, import them; otherwise, remove them or replace them.
|
|
16
|
-
from dhisana.utils.assistant_tool_tag import assistant_tool
|
|
17
12
|
from dhisana.utils.cache_output_tools import cache_output, retrieve_output
|
|
18
|
-
from dhisana.utils.web_download_parse_tools import fetch_html_content
|
|
19
13
|
|
|
20
14
|
|
|
21
15
|
def get_serper_dev_api_access_token(tool_config: Optional[List[Dict]] = None) -> str:
|
|
@@ -119,8 +113,18 @@ async def search_google_serper(
|
|
|
119
113
|
"Content-Type": "application/json"
|
|
120
114
|
}
|
|
121
115
|
|
|
122
|
-
# Serper.dev uses 'page' to paginate. We
|
|
123
|
-
|
|
116
|
+
# Serper.dev uses 'page' to paginate. We need to calculate the page number based on offset.
|
|
117
|
+
# Serper.dev uses 1-based indexing for pages, so we need to adjust accordingly
|
|
118
|
+
# e.g., if offset is 0, we want page 1; if offset is 10, we want page 2, etc.
|
|
119
|
+
# Assuming number_of_results is the number of results per page.
|
|
120
|
+
# If offset is 0, we want the first page,
|
|
121
|
+
# if offset is 10 and number_of_results is 10, we want the second page, etc.
|
|
122
|
+
# This means we can calculate the page as follows:
|
|
123
|
+
# page = (offset // number_of_results) + 1
|
|
124
|
+
# If offset is 0, page will be 1; if offset is 10 and number_of_results is 10, page will be 2.
|
|
125
|
+
# This is consistent with how Serper.dev handles pagination.
|
|
126
|
+
if number_of_results <= 0:
|
|
127
|
+
page = 1 if offset == 0 else (offset // number_of_results) + 1
|
|
124
128
|
all_results: List[Dict[str, Any]] = []
|
|
125
129
|
|
|
126
130
|
# We'll collect results from "organic", converting each to a SerpAPI-like format.
|
|
@@ -132,7 +136,7 @@ async def search_google_serper(
|
|
|
132
136
|
"hl": "en", # language
|
|
133
137
|
"autocorrect": True,
|
|
134
138
|
"page": page,
|
|
135
|
-
"num":
|
|
139
|
+
"num": number_of_results,
|
|
136
140
|
"type": "search" # or 'news', 'images', etc., if needed
|
|
137
141
|
}
|
|
138
142
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/check_email_validity_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/check_linkedin_url_validity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/compose_three_step_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/extract_email_content_for_llm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/generate_linkedin_connect_message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openai_assistant_and_file_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/openapi_tool/openapi_tool.py
RENAMED
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/parse_linkedin_messages_txt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serarch_router_local_business.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dhisana-0.0.1.dev182 → dhisana-0.0.1.dev183}/src/dhisana/utils/serpapi_local_business_search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|