Skip to content

Commit 701a4c1

Browse files
committed
chore: fix _make_request not using it
1 parent 433e7d0 commit 701a4c1

File tree

2 files changed

+149
-164
lines changed

2 files changed

+149
-164
lines changed

scrapegraph-py/scrapegraph_py/async_client.py

Lines changed: 77 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import asyncio
22
from typing import Any, Optional
33

4-
import aiohttp
54
from aiohttp import ClientSession, ClientTimeout, TCPConnector
65
from aiohttp.client_exceptions import ClientError
76
from pydantic import BaseModel
@@ -101,18 +100,14 @@ def __init__(
101100

102101
async def _make_request(self, method: str, url: str, **kwargs) -> Any:
103102
"""Make HTTP request with retry logic."""
104-
batch_size = len(kwargs.get('json', {}).get('urls', [1])) if kwargs.get('json') else 1
105-
timeout = ClientTimeout(total=self.timeout.total * batch_size)
106-
107103
for attempt in range(self.max_retries):
108104
try:
109105
logger.info(
110106
f"🚀 Making {method} request to {url} (Attempt {attempt + 1}/{self.max_retries})"
111107
)
112108
logger.debug(f"🔍 Request parameters: {kwargs}")
113109

114-
# Use the calculated timeout for this request
115-
async with self.session.request(method, url, timeout=timeout, **kwargs) as response:
110+
async with self.session.request(method, url, **kwargs) as response:
116111
logger.debug(f"📥 Response status: {response.status}")
117112
result = await handle_async_response(response)
118113
logger.info(f"✅ Request completed successfully: {method} {url}")
@@ -141,6 +136,33 @@ async def _make_request(self, method: str, url: str, **kwargs) -> Any:
141136
logger.info(f"⏳ Waiting {retry_delay}s before retry {attempt + 2}")
142137
await asyncio.sleep(retry_delay)
143138

139+
async def markdownify(self, website_url: str):
140+
"""Send a markdownify request"""
141+
logger.info(f"🔍 Starting markdownify request for {website_url}")
142+
143+
request = MarkdownifyRequest(website_url=website_url)
144+
logger.debug("✅ Request validation passed")
145+
146+
result = await self._make_request(
147+
"POST", f"{API_BASE_URL}/markdownify", json=request.model_dump()
148+
)
149+
logger.info("✨ Markdownify request completed successfully")
150+
return result
151+
152+
async def get_markdownify(self, request_id: str):
153+
"""Get the result of a previous markdownify request"""
154+
logger.info(f"🔍 Fetching markdownify result for request {request_id}")
155+
156+
# Validate input using Pydantic model
157+
GetMarkdownifyRequest(request_id=request_id)
158+
logger.debug("✅ Request ID validation passed")
159+
160+
result = await self._make_request(
161+
"GET", f"{API_BASE_URL}/markdownify/{request_id}"
162+
)
163+
logger.info(f"✨ Successfully retrieved result for request {request_id}")
164+
return result
165+
144166
async def smartscraper(
145167
self,
146168
website_url: str,
@@ -158,17 +180,11 @@ async def smartscraper(
158180
)
159181
logger.debug("✅ Request validation passed")
160182

161-
try:
162-
async with self.session.post(
163-
f"{API_BASE_URL}/smartscraper", json=request.model_dump()
164-
) as response:
165-
response.raise_for_status()
166-
result = await handle_async_response(response)
167-
logger.info("✨ Smartscraper request completed successfully")
168-
return result
169-
except aiohttp.ClientError as e:
170-
logger.error(f"❌ Smartscraper request failed: {str(e)}")
171-
raise ConnectionError(f"Failed to connect to API: {str(e)}")
183+
result = await self._make_request(
184+
"POST", f"{API_BASE_URL}/smartscraper", json=request.model_dump()
185+
)
186+
logger.info("✨ Smartscraper request completed successfully")
187+
return result
172188

173189
async def get_smartscraper(self, request_id: str):
174190
"""Get the result of a previous smartscraper request"""
@@ -178,80 +194,8 @@ async def get_smartscraper(self, request_id: str):
178194
GetSmartScraperRequest(request_id=request_id)
179195
logger.debug("✅ Request ID validation passed")
180196

181-
async with self.session.get(
182-
f"{API_BASE_URL}/smartscraper/{request_id}"
183-
) as response:
184-
result = await handle_async_response(response)
185-
logger.info(f"✨ Successfully retrieved result for request {request_id}")
186-
return result
187-
188-
async def get_credits(self):
189-
"""Get credits information"""
190-
logger.info("💳 Fetching credits information")
191-
192-
async with self.session.get(
193-
f"{API_BASE_URL}/credits",
194-
) as response:
195-
result = await handle_async_response(response)
196-
logger.info(
197-
f"✨ Credits info retrieved: {result.get('remaining_credits')} credits remaining"
198-
)
199-
return result
200-
201-
async def submit_feedback(
202-
self, request_id: str, rating: int, feedback_text: Optional[str] = None
203-
):
204-
"""Submit feedback for a request"""
205-
logger.info(f"📝 Submitting feedback for request {request_id}")
206-
logger.debug(f"⭐ Rating: {rating}, Feedback: {feedback_text}")
207-
208-
feedback = FeedbackRequest(
209-
request_id=request_id, rating=rating, feedback_text=feedback_text
210-
)
211-
logger.debug("✅ Feedback validation passed")
212-
213-
async with self.session.post(
214-
f"{API_BASE_URL}/feedback", json=feedback.model_dump()
215-
) as response:
216-
result = await handle_async_response(response)
217-
logger.info("✨ Feedback submitted successfully")
218-
return result
219-
220-
async def close(self):
221-
"""Close the session to free up resources"""
222-
logger.info("🔒 Closing AsyncClient session")
223-
await self.session.close()
224-
logger.debug("✅ Session closed successfully")
225-
226-
async def __aenter__(self):
227-
return self
228-
229-
async def __aexit__(self, exc_type, exc_val, exc_tb):
230-
await self.close()
231-
232-
async def markdownify(self, website_url: str):
233-
"""Send a markdownify request"""
234-
logger.info(f"🔍 Starting markdownify request for {website_url}")
235-
236-
request = MarkdownifyRequest(website_url=website_url)
237-
logger.debug("✅ Request validation passed")
238-
239-
result = await self._make_request(
240-
"POST", f"{API_BASE_URL}/markdownify", json=request.model_dump()
241-
)
242-
logger.info("✨ Markdownify request completed successfully")
243-
return result
244-
245-
async def get_markdownify(self, request_id: str):
246-
"""Get the result of a previous markdownify request"""
247-
logger.info(f"🔍 Fetching markdownify result for request {request_id}")
248-
249-
# Validate input using Pydantic model
250-
GetMarkdownifyRequest(request_id=request_id)
251-
logger.debug("✅ Request ID validation passed")
252-
253197
result = await self._make_request(
254-
"GET", f"{API_BASE_URL}/markdownify/{request_id}"
198+
"GET", f"{API_BASE_URL}/smartscraper/{request_id}"
255199
)
256200
logger.info(f"✨ Successfully retrieved result for request {request_id}")
257201
return result
@@ -292,3 +236,46 @@ async def get_localscraper(self, request_id: str):
292236
)
293237
logger.info(f"✨ Successfully retrieved result for request {request_id}")
294238
return result
239+
240+
async def submit_feedback(
241+
self, request_id: str, rating: int, feedback_text: Optional[str] = None
242+
):
243+
"""Submit feedback for a request"""
244+
logger.info(f"📝 Submitting feedback for request {request_id}")
245+
logger.debug(f"⭐ Rating: {rating}, Feedback: {feedback_text}")
246+
247+
feedback = FeedbackRequest(
248+
request_id=request_id, rating=rating, feedback_text=feedback_text
249+
)
250+
logger.debug("✅ Feedback validation passed")
251+
252+
result = await self._make_request(
253+
"POST", f"{API_BASE_URL}/feedback", json=feedback.model_dump()
254+
)
255+
logger.info("✨ Feedback submitted successfully")
256+
return result
257+
258+
async def get_credits(self):
259+
"""Get credits information"""
260+
logger.info("💳 Fetching credits information")
261+
262+
result = await self._make_request(
263+
"GET",
264+
f"{API_BASE_URL}/credits",
265+
)
266+
logger.info(
267+
f"✨ Credits info retrieved: {result.get('remaining_credits')} credits remaining"
268+
)
269+
return result
270+
271+
async def close(self):
272+
"""Close the session to free up resources"""
273+
logger.info("🔒 Closing AsyncClient session")
274+
await self.session.close()
275+
logger.debug("✅ Session closed successfully")
276+
277+
async def __aenter__(self):
278+
return self
279+
280+
async def __aexit__(self, exc_type, exc_val, exc_tb):
281+
await self.close()

scrapegraph-py/scrapegraph_py/client.py

Lines changed: 72 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,14 @@ def __init__(
115115
logger.info("✅ Client initialized successfully")
116116

117117
def _make_request(self, method: str, url: str, **kwargs) -> Any:
118-
"""Make HTTP request with retry logic."""
119-
# Calculate timeout based on batch size if present in kwargs
120-
batch_size = len(kwargs.get('json', {}).get('urls', [1])) if kwargs.get('json') else 1
121-
timeout = self.timeout * batch_size
122-
118+
"""Make HTTP request with error handling."""
123119
try:
124120
logger.info(f"🚀 Making {method} request to {url}")
125121
logger.debug(f"🔍 Request parameters: {kwargs}")
126122

127-
response = self.session.request(method, url, timeout=timeout, **kwargs)
123+
response = self.session.request(method, url, timeout=self.timeout, **kwargs)
124+
logger.debug(f"📥 Response status: {response.status_code}")
125+
128126
result = handle_sync_response(response)
129127
logger.info(f"✅ Request completed successfully: {method} {url}")
130128
return result
@@ -150,6 +148,31 @@ def _make_request(self, method: str, url: str, **kwargs) -> Any:
150148
logger.error(f"🔴 Connection Error: {str(e)}")
151149
raise ConnectionError(f"Failed to connect to API: {str(e)}")
152150

151+
def markdownify(self, website_url: str):
152+
"""Send a markdownify request"""
153+
logger.info(f"🔍 Starting markdownify request for {website_url}")
154+
155+
request = MarkdownifyRequest(website_url=website_url)
156+
logger.debug("✅ Request validation passed")
157+
158+
result = self._make_request(
159+
"POST", f"{API_BASE_URL}/markdownify", json=request.model_dump()
160+
)
161+
logger.info("✨ Markdownify request completed successfully")
162+
return result
163+
164+
def get_markdownify(self, request_id: str):
165+
"""Get the result of a previous markdownify request"""
166+
logger.info(f"🔍 Fetching markdownify result for request {request_id}")
167+
168+
# Validate input using Pydantic model
169+
GetMarkdownifyRequest(request_id=request_id)
170+
logger.debug("✅ Request ID validation passed")
171+
172+
result = self._make_request("GET", f"{API_BASE_URL}/markdownify/{request_id}")
173+
logger.info(f"✨ Successfully retrieved result for request {request_id}")
174+
return result
175+
153176
def smartscraper(
154177
self,
155178
website_url: str,
@@ -185,74 +208,6 @@ def get_smartscraper(self, request_id: str):
185208
logger.info(f"✨ Successfully retrieved result for request {request_id}")
186209
return result
187210

188-
def get_credits(self):
189-
"""Get credits information"""
190-
logger.info("💳 Fetching credits information")
191-
192-
result = self._make_request(
193-
"GET",
194-
f"{API_BASE_URL}/credits",
195-
)
196-
logger.info(
197-
f"✨ Credits info retrieved: {result.get('remaining_credits')} credits remaining"
198-
)
199-
return result
200-
201-
def submit_feedback(
202-
self, request_id: str, rating: int, feedback_text: Optional[str] = None
203-
):
204-
"""Submit feedback for a request"""
205-
logger.info(f"📝 Submitting feedback for request {request_id}")
206-
logger.debug(f"⭐ Rating: {rating}, Feedback: {feedback_text}")
207-
208-
feedback = FeedbackRequest(
209-
request_id=request_id, rating=rating, feedback_text=feedback_text
210-
)
211-
logger.debug("✅ Feedback validation passed")
212-
213-
result = self._make_request(
214-
"POST", f"{API_BASE_URL}/feedback", json=feedback.model_dump()
215-
)
216-
logger.info("✨ Feedback submitted successfully")
217-
return result
218-
219-
def close(self):
220-
"""Close the session to free up resources"""
221-
logger.info("🔒 Closing Client session")
222-
self.session.close()
223-
logger.debug("✅ Session closed successfully")
224-
225-
def __enter__(self):
226-
return self
227-
228-
def __exit__(self, exc_type, exc_val, exc_tb):
229-
self.close()
230-
231-
def markdownify(self, website_url: str):
232-
"""Send a markdownify request"""
233-
logger.info(f"🔍 Starting markdownify request for {website_url}")
234-
235-
request = MarkdownifyRequest(website_url=website_url)
236-
logger.debug("✅ Request validation passed")
237-
238-
result = self._make_request(
239-
"POST", f"{API_BASE_URL}/markdownify", json=request.model_dump()
240-
)
241-
logger.info("✨ Markdownify request completed successfully")
242-
return result
243-
244-
def get_markdownify(self, request_id: str):
245-
"""Get the result of a previous markdownify request"""
246-
logger.info(f"🔍 Fetching markdownify result for request {request_id}")
247-
248-
# Validate input using Pydantic model
249-
GetMarkdownifyRequest(request_id=request_id)
250-
logger.debug("✅ Request ID validation passed")
251-
252-
result = self._make_request("GET", f"{API_BASE_URL}/markdownify/{request_id}")
253-
logger.info(f"✨ Successfully retrieved result for request {request_id}")
254-
return result
255-
256211
def localscraper(
257212
self,
258213
user_prompt: str,
@@ -287,3 +242,46 @@ def get_localscraper(self, request_id: str):
287242
result = self._make_request("GET", f"{API_BASE_URL}/localscraper/{request_id}")
288243
logger.info(f"✨ Successfully retrieved result for request {request_id}")
289244
return result
245+
246+
def submit_feedback(
247+
self, request_id: str, rating: int, feedback_text: Optional[str] = None
248+
):
249+
"""Submit feedback for a request"""
250+
logger.info(f"📝 Submitting feedback for request {request_id}")
251+
logger.debug(f"⭐ Rating: {rating}, Feedback: {feedback_text}")
252+
253+
feedback = FeedbackRequest(
254+
request_id=request_id, rating=rating, feedback_text=feedback_text
255+
)
256+
logger.debug("✅ Feedback validation passed")
257+
258+
result = self._make_request(
259+
"POST", f"{API_BASE_URL}/feedback", json=feedback.model_dump()
260+
)
261+
logger.info("✨ Feedback submitted successfully")
262+
return result
263+
264+
def get_credits(self):
265+
"""Get credits information"""
266+
logger.info("💳 Fetching credits information")
267+
268+
result = self._make_request(
269+
"GET",
270+
f"{API_BASE_URL}/credits",
271+
)
272+
logger.info(
273+
f"✨ Credits info retrieved: {result.get('remaining_credits')} credits remaining"
274+
)
275+
return result
276+
277+
def close(self):
278+
"""Close the session to free up resources"""
279+
logger.info("🔒 Closing Client session")
280+
self.session.close()
281+
logger.debug("✅ Session closed successfully")
282+
283+
def __enter__(self):
284+
return self
285+
286+
def __exit__(self, exc_type, exc_val, exc_tb):
287+
self.close()

0 commit comments

Comments
 (0)