Document set_defaults/get_defaults/reset_defaults in config guides
This commit is contained in:
@@ -367,6 +367,55 @@ no_cache_config = base_config.clone(
|
|||||||
|
|
||||||
The `clone()` method is particularly useful when you need slightly different configurations for different use cases, without modifying the original config.
|
The `clone()` method is particularly useful when you need slightly different configurations for different use cases, without modifying the original config.
|
||||||
|
|
||||||
|
### Class-Level Defaults (`set_defaults` / `get_defaults` / `reset_defaults`)
|
||||||
|
|
||||||
|
Both config classes support class-level default overrides. When deploying in a server or cloud context, this eliminates the need to pass the same parameters at every call site.
|
||||||
|
|
||||||
|
**Resolution order:** explicit arg > class-level default > hardcoded default
|
||||||
|
|
||||||
|
```python
|
||||||
|
from crawl4ai import BrowserConfig, CrawlerRunConfig
|
||||||
|
|
||||||
|
# Set once at application startup
|
||||||
|
BrowserConfig.set_defaults(
|
||||||
|
cache_cdp_connection=True,
|
||||||
|
cdp_close_delay=0,
|
||||||
|
create_isolated_context=True,
|
||||||
|
)
|
||||||
|
CrawlerRunConfig.set_defaults(verbose=False)
|
||||||
|
|
||||||
|
# All new instances inherit the class defaults
|
||||||
|
cfg1 = BrowserConfig(cdp_url="ws://localhost:9222")
|
||||||
|
# → cache_cdp_connection=True, cdp_close_delay=0
|
||||||
|
|
||||||
|
cfg2 = BrowserConfig(cdp_url="ws://localhost:9222", cache_cdp_connection=False)
|
||||||
|
# → cache_cdp_connection=False (explicit value wins)
|
||||||
|
|
||||||
|
# Inspect current defaults
|
||||||
|
BrowserConfig.get_defaults()
|
||||||
|
# → {"cache_cdp_connection": True, "cdp_close_delay": 0, "create_isolated_context": True}
|
||||||
|
|
||||||
|
# Remove a single default
|
||||||
|
BrowserConfig.reset_defaults("cdp_close_delay")
|
||||||
|
|
||||||
|
# Remove all defaults
|
||||||
|
BrowserConfig.reset_defaults()
|
||||||
|
```
|
||||||
|
|
||||||
|
**API Reference:**
|
||||||
|
|
||||||
|
| Method | Signature | Description |
|
||||||
|
|--------|-----------|-------------|
|
||||||
|
| `set_defaults` | `set_defaults(**kwargs)` | Set class-level defaults for new instances. Raises `ValueError` if any key is not a valid `__init__` parameter. |
|
||||||
|
| `get_defaults` | `get_defaults() → dict` | Return a deep copy of the current class-level defaults. |
|
||||||
|
| `reset_defaults` | `reset_defaults(*names)` | With no args, clears all defaults. With args, removes only the named defaults. |
|
||||||
|
|
||||||
|
**Notes:**
|
||||||
|
- Defaults are independent per class — `BrowserConfig.set_defaults()` has no effect on `CrawlerRunConfig`.
|
||||||
|
- Mutable values (lists, dicts) are deep-copied on storage and on each instance creation, so instances do not share objects.
|
||||||
|
- `clone()`, `dump()`/`load()`, and `from_kwargs()` all work correctly with class defaults — serialized data is self-contained and independent of the current class defaults.
|
||||||
|
- Defaults are stored in memory for the lifetime of the process. They are not persisted to disk.
|
||||||
|
|
||||||
## 2.3 Example Usage
|
## 2.3 Example Usage
|
||||||
|
|
||||||
```python
|
```python
|
||||||
@@ -467,4 +516,8 @@ stream_cfg = run_cfg.clone(
|
|||||||
stream=True,
|
stream=True,
|
||||||
cache_mode=CacheMode.BYPASS
|
cache_mode=CacheMode.BYPASS
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Or set project-wide defaults once at startup
|
||||||
|
BrowserConfig.set_defaults(headless=True, text_mode=True)
|
||||||
|
CrawlerRunConfig.set_defaults(cache_mode=CacheMode.BYPASS)
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -136,6 +136,41 @@ debug_browser = base_browser.clone(
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Class-Level Defaults
|
||||||
|
|
||||||
|
Both `BrowserConfig` and `CrawlerRunConfig` support **class-level default overrides** via `set_defaults()`. This is useful in server/cloud deployments where every config instance needs the same base settings — set them once at startup instead of repeating at every call site.
|
||||||
|
|
||||||
|
```python
|
||||||
|
from crawl4ai import BrowserConfig, CrawlerRunConfig
|
||||||
|
|
||||||
|
# At application startup — one time
|
||||||
|
BrowserConfig.set_defaults(
|
||||||
|
cache_cdp_connection=True,
|
||||||
|
cdp_close_delay=0,
|
||||||
|
create_isolated_context=True,
|
||||||
|
)
|
||||||
|
CrawlerRunConfig.set_defaults(verbose=False)
|
||||||
|
|
||||||
|
# Every new instance automatically inherits those defaults
|
||||||
|
cfg = BrowserConfig(cdp_url="ws://localhost:9222")
|
||||||
|
# → cache_cdp_connection=True, cdp_close_delay=0, create_isolated_context=True
|
||||||
|
|
||||||
|
# Explicit values still win
|
||||||
|
cfg = BrowserConfig(cdp_url="ws://localhost:9222", cache_cdp_connection=False)
|
||||||
|
# → cache_cdp_connection=False (explicit overrides the class default)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Available methods** (on both `BrowserConfig` and `CrawlerRunConfig`):
|
||||||
|
|
||||||
|
| Method | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `set_defaults(**kwargs)` | Set class-level defaults. Invalid parameter names raise `ValueError`. |
|
||||||
|
| `get_defaults()` | Return a copy of the current class-level defaults. |
|
||||||
|
| `reset_defaults()` | Clear all class-level defaults. |
|
||||||
|
| `reset_defaults("param1", "param2")` | Clear only the named defaults. |
|
||||||
|
|
||||||
|
> **Note:** Class defaults are independent per class — `BrowserConfig.set_defaults()` does not affect `CrawlerRunConfig`, and vice versa. Defaults are stored in memory and apply for the lifetime of the process.
|
||||||
|
|
||||||
**Minimal Example**:
|
**Minimal Example**:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|||||||
Reference in New Issue
Block a user