Fix: Handle both dict and model instances in actions parameter (#1508)

* Fix: Handle both dict and model instances in actions parameter

Co-Authored-By: Nicolas Camara <nicolascamara29@gmail.com>

* Update __init__.py

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Camara <nicolascamara29@gmail.com>
This commit is contained in:
devin-ai-integration[bot] 2025-04-29 13:06:12 -03:00 committed by GitHub
parent 6dbfd54e2c
commit f0b1507290
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 4 deletions

View File

@ -13,7 +13,7 @@ import os
from .firecrawl import FirecrawlApp, AsyncFirecrawlApp, JsonConfig, ScrapeOptions, ChangeTrackingOptions # noqa from .firecrawl import FirecrawlApp, AsyncFirecrawlApp, JsonConfig, ScrapeOptions, ChangeTrackingOptions # noqa
__version__ = "2.5.2" __version__ = "2.5.3"
# Define the logger for the Firecrawl project # Define the logger for the Firecrawl project
logger: logging.Logger = logging.getLogger("firecrawl") logger: logging.Logger = logging.getLogger("firecrawl")

View File

@ -540,9 +540,9 @@ class FirecrawlApp:
json_options["schema"] = self._ensure_schema_dict(json_options["schema"]) json_options["schema"] = self._ensure_schema_dict(json_options["schema"])
scrape_params['jsonOptions'] = json_options if isinstance(json_options, dict) else json_options.dict(exclude_none=True) scrape_params['jsonOptions'] = json_options if isinstance(json_options, dict) else json_options.dict(exclude_none=True)
if actions: if actions:
scrape_params['actions'] = [action.dict(exclude_none=True) for action in actions] scrape_params['actions'] = [action if isinstance(action, dict) else action.dict(exclude_none=True) for action in actions]
if change_tracking_options: if change_tracking_options:
scrape_params['changeTrackingOptions'] = change_tracking_options.dict(exclude_none=True) scrape_params['changeTrackingOptions'] = change_tracking_options if isinstance(change_tracking_options, dict) else change_tracking_options.dict(exclude_none=True)
scrape_params.update(kwargs) scrape_params.update(kwargs)
@ -2924,7 +2924,7 @@ class AsyncFirecrawlApp(FirecrawlApp):
json_options["schema"] = self._ensure_schema_dict(json_options["schema"]) json_options["schema"] = self._ensure_schema_dict(json_options["schema"])
scrape_params['jsonOptions'] = json_options if isinstance(json_options, dict) else json_options.dict(exclude_none=True) scrape_params['jsonOptions'] = json_options if isinstance(json_options, dict) else json_options.dict(exclude_none=True)
if actions: if actions:
scrape_params['actions'] = [action.dict(exclude_none=True) for action in actions] scrape_params['actions'] = [action if isinstance(action, dict) else action.dict(exclude_none=True) for action in actions]
if 'extract' in scrape_params and scrape_params['extract'] and 'schema' in scrape_params['extract']: if 'extract' in scrape_params and scrape_params['extract'] and 'schema' in scrape_params['extract']:
scrape_params['extract']['schema'] = self._ensure_schema_dict(scrape_params['extract']['schema']) scrape_params['extract']['schema'] = self._ensure_schema_dict(scrape_params['extract']['schema'])