firecrawl 4.3.6__tar.gz → 4.4.0__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.

Potentially problematic release.


This version of firecrawl might be problematic. Click here for more details.

Files changed (86) hide show
  1. {firecrawl-4.3.6 → firecrawl-4.4.0}/LICENSE +0 -0
  2. {firecrawl-4.3.6 → firecrawl-4.4.0}/PKG-INFO +6 -2
  3. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__init__.py +1 -1
  4. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/crawl.py +1 -1
  5. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/search.py +1 -1
  6. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/types.py +8 -2
  7. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/watcher_async.py +2 -1
  8. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl.egg-info/PKG-INFO +6 -2
  9. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl.egg-info/top_level.txt +1 -0
  10. {firecrawl-4.3.6 → firecrawl-4.4.0}/tests/test_change_tracking.py +0 -0
  11. {firecrawl-4.3.6 → firecrawl-4.4.0}/README.md +0 -0
  12. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_batch_scrape.py +0 -0
  13. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_crawl.py +0 -0
  14. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_extract.py +0 -0
  15. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_map.py +0 -0
  16. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_scrape.py +0 -0
  17. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_search.py +0 -0
  18. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_usage.py +0 -0
  19. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/aio/test_aio_watcher.py +0 -0
  20. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/conftest.py +0 -0
  21. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_async.py +0 -0
  22. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_batch_scrape.py +0 -0
  23. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_crawl.py +0 -0
  24. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_extract.py +0 -0
  25. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_map.py +0 -0
  26. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_scrape.py +0 -0
  27. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_search.py +0 -0
  28. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_usage.py +0 -0
  29. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/e2e/v2/test_watcher.py +0 -0
  30. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_aio_crawl_params.py +0 -0
  31. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_aio_crawl_request_preparation.py +0 -0
  32. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_aio_crawl_validation.py +0 -0
  33. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_aio_map_request_preparation.py +0 -0
  34. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_aio_scrape_request_preparation.py +0 -0
  35. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_aio_search_request_preparation.py +0 -0
  36. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_batch_request_preparation_async.py +0 -0
  37. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/aio/test_ensure_async.py +0 -0
  38. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_batch_request_preparation.py +0 -0
  39. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_crawl_params.py +0 -0
  40. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_crawl_request_preparation.py +0 -0
  41. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_crawl_validation.py +0 -0
  42. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_map_request_preparation.py +0 -0
  43. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_pagination.py +0 -0
  44. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_scrape_request_preparation.py +0 -0
  45. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_search_request_preparation.py +0 -0
  46. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_search_validation.py +0 -0
  47. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_usage_types.py +0 -0
  48. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/methods/test_webhook.py +0 -0
  49. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/utils/test_validation.py +0 -0
  50. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/__tests__/unit/v2/watcher/test_ws_watcher.py +0 -0
  51. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/client.py +0 -0
  52. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/firecrawl.backup.py +0 -0
  53. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/types.py +0 -0
  54. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v1/__init__.py +0 -0
  55. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v1/client.py +0 -0
  56. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/__init__.py +0 -0
  57. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/client.py +0 -0
  58. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/client_async.py +0 -0
  59. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/__init__.py +0 -0
  60. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/batch.py +0 -0
  61. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/crawl.py +0 -0
  62. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/extract.py +0 -0
  63. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/map.py +0 -0
  64. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/scrape.py +0 -0
  65. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/search.py +0 -0
  66. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/aio/usage.py +0 -0
  67. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/batch.py +0 -0
  68. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/extract.py +0 -0
  69. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/map.py +0 -0
  70. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/scrape.py +0 -0
  71. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/methods/usage.py +0 -0
  72. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/utils/__init__.py +0 -0
  73. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/utils/error_handler.py +0 -0
  74. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/utils/get_version.py +0 -0
  75. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/utils/http_client.py +0 -0
  76. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/utils/http_client_async.py +0 -0
  77. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/utils/normalize.py +0 -0
  78. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/utils/validation.py +0 -0
  79. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl/v2/watcher.py +0 -0
  80. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl.egg-info/SOURCES.txt +0 -0
  81. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl.egg-info/dependency_links.txt +0 -0
  82. {firecrawl-4.3.6 → firecrawl-4.4.0}/firecrawl.egg-info/requires.txt +0 -0
  83. {firecrawl-4.3.6 → firecrawl-4.4.0}/pyproject.toml +0 -0
  84. {firecrawl-4.3.6 → firecrawl-4.4.0}/setup.cfg +0 -0
  85. {firecrawl-4.3.6 → firecrawl-4.4.0}/setup.py +0 -0
  86. {firecrawl-4.3.6 → firecrawl-4.4.0}/tests/test_timeout_conversion.py +0 -0
File without changes
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: firecrawl
3
- Version: 4.3.6
3
+ Version: 4.4.0
4
4
  Summary: Python SDK for Firecrawl API
5
5
  Home-page: https://github.com/firecrawl/firecrawl
6
6
  Author: Mendable.ai
@@ -40,6 +40,10 @@ Requires-Dist: websockets
40
40
  Requires-Dist: nest-asyncio
41
41
  Requires-Dist: pydantic>=2.0
42
42
  Requires-Dist: aiohttp
43
+ Dynamic: author
44
+ Dynamic: home-page
45
+ Dynamic: license-file
46
+ Dynamic: requires-python
43
47
 
44
48
  # Firecrawl Python SDK
45
49
 
@@ -17,7 +17,7 @@ from .v1 import (
17
17
  V1ChangeTrackingOptions,
18
18
  )
19
19
 
20
- __version__ = "4.3.6"
20
+ __version__ = "4.4.0"
21
21
 
22
22
  # Define the logger for the Firecrawl project
23
23
  logger: logging.Logger = logging.getLogger("firecrawl")
@@ -333,7 +333,7 @@ def wait_for_crawl_completion(
333
333
  crawl_job = get_crawl_status(client, job_id)
334
334
 
335
335
  # Check if job is complete
336
- if crawl_job.status in ["completed", "failed"]:
336
+ if crawl_job.status in ["completed", "failed", "cancelled"]:
337
337
  return crawl_job
338
338
 
339
339
  # Check timeout
@@ -123,7 +123,7 @@ def _validate_search_request(request: SearchRequest) -> SearchRequest:
123
123
 
124
124
  # Validate categories (if provided)
125
125
  if request.categories is not None:
126
- valid_categories = {"github", "research"}
126
+ valid_categories = {"github", "research", "pdf"}
127
127
  for category in request.categories:
128
128
  if isinstance(category, str):
129
129
  if category not in valid_categories:
@@ -186,7 +186,13 @@ class Source(BaseModel):
186
186
  SourceOption = Union[str, Source]
187
187
 
188
188
  class Category(BaseModel):
189
- """Configuration for a search category."""
189
+ """Configuration for a search category.
190
+
191
+ Supported categories:
192
+ - "github": Filter results to GitHub repositories
193
+ - "research": Filter results to research papers and academic sites
194
+ - "pdf": Filter results to PDF files (adds filetype:pdf to search)
195
+ """
190
196
  type: str
191
197
 
192
198
  CategoryOption = Union[str, Category]
@@ -348,7 +354,7 @@ class CrawlResponse(BaseModel):
348
354
 
349
355
  class CrawlJob(BaseModel):
350
356
  """Crawl job status and progress data."""
351
- status: Literal["scraping", "completed", "failed"]
357
+ status: Literal["scraping", "completed", "failed", "cancelled"]
352
358
  total: int = 0
353
359
  completed: int = 0
354
360
  credits_used: int = 0
@@ -28,13 +28,14 @@ class AsyncWatcher:
28
28
  job_id: str,
29
29
  *,
30
30
  kind: JobKind = "crawl",
31
+ poll_interval: int = 2,
31
32
  timeout: Optional[int] = None,
32
33
  ) -> None:
33
34
  self._client = client
34
35
  self._job_id = job_id
35
36
  self._kind = kind
36
37
  self._timeout = timeout
37
- self._poll_interval: float = 2.0
38
+ self._poll_interval: float = max(0.0, float(poll_interval)) # Guard against negative values
38
39
 
39
40
  http_client = getattr(client, "http_client", None)
40
41
  if http_client is not None:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: firecrawl
3
- Version: 4.3.6
3
+ Version: 4.4.0
4
4
  Summary: Python SDK for Firecrawl API
5
5
  Home-page: https://github.com/firecrawl/firecrawl
6
6
  Author: Mendable.ai
@@ -40,6 +40,10 @@ Requires-Dist: websockets
40
40
  Requires-Dist: nest-asyncio
41
41
  Requires-Dist: pydantic>=2.0
42
42
  Requires-Dist: aiohttp
43
+ Dynamic: author
44
+ Dynamic: home-page
45
+ Dynamic: license-file
46
+ Dynamic: requires-python
43
47
 
44
48
  # Firecrawl Python SDK
45
49
 
@@ -1,2 +1,3 @@
1
+ dist
1
2
  firecrawl
2
3
  tests
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes