Classes
SpeculationRule
4
▼
A single speculation rule for prefetch or prerender.
SpeculationRule
4
▼
A single speculation rule for prefetch or prerender.
Attributes
| Name | Type | Description |
|---|---|---|
href_matches |
list[str]
|
URL pattern(s) to match |
eagerness |
str
|
How eagerly to trigger (conservative | moderate | eager) |
exclude_selectors |
list[str]
|
CSS selectors to exclude from the rule |
Methods
to_dict
0
dict[str, Any]
▼
Convert rule to speculation rules JSON format.
to_dict
0
dict[str, Any]
▼
def to_dict(self) -> dict[str, Any]
Returns
dict[str, Any]
SpeculationRulesGenerator
8
▼
Generates speculation rules based on site configuration and structure.
The generator can:
1. Use e…
SpeculationRulesGenerator
8
▼
Generates speculation rules based on site configuration and structure.
The generator can:
- Use explicit configuration from bengal.yaml
- Auto-generate rules based on site analysis
- Combine both approaches
Example config in bengal.yaml: document_application: speculation: enabled: true prerender: eagerness: moderate patterns:
- "/docs/*"
- "/blog/*"
prefetch:eagerness: conservativepatterns: - "/*"
exclude_patterns: - "/admin/*"
- "*.pdf"
Methods
is_enabled
0
bool
▼
Check if speculation rules are enabled.
is_enabled
0
bool
▼
def is_enabled(self) -> bool
Returns
bool
generate
0
dict[str, Any]
▼
Generate the complete speculation rules JSON.
generate
0
dict[str, Any]
▼
def generate(self) -> dict[str, Any]
Returns
dict[str, Any]
Dictionary suitable for JSON serialization as <script type="speculationrules">
to_json
1
str
▼
Generate speculation rules as JSON string.
to_json
1
str
▼
def to_json(self, indent: int | None = 2) -> str
Parameters
| Name | Type | Description |
|---|---|---|
indent |
— |
JSON indentation level (None for compact) Default:2
|
Returns
str
JSON string for <script type="speculationrules">
Internal Methods 5 ▼
__init__
1
▼
Initialize the speculation rules generator.
__init__
1
▼
def __init__(self, site: SiteLike)
Parameters
| Name | Type | Description |
|---|---|---|
site |
— |
The Bengal site instance |
_get_speculation_config
0
dict[str, Any]
▼
Get speculation configuration with defaults.
_get_speculation_config
0
dict[str, Any]
▼
def _get_speculation_config(self) -> dict[str, Any]
Returns
dict[str, Any]
_create_rule
2
SpeculationRule
▼
Create a speculation rule with standard exclusions.
_create_rule
2
SpeculationRule
▼
def _create_rule(self, patterns: list[str], eagerness: str = 'conservative') -> SpeculationRule
Parameters
| Name | Type | Description |
|---|---|---|
patterns |
— |
|
eagerness |
— |
Default:'conservative'
|
Returns
SpeculationRule
_auto_generate_rules
0
dict[str, list[Speculati…
▼
Auto-generate speculation rules based on site analysis.
**Analyzes:**
- High-t…
_auto_generate_rules
0
dict[str, list[Speculati…
▼
def _auto_generate_rules(self) -> dict[str, list[SpeculationRule]]
Auto-generate speculation rules based on site analysis.
Analyzes:
- High-traffic navigation paths
- Content relationships
- Section structure
Returns
dict[str, list[SpeculationRule]]
Dictionary with 'prerender' and 'prefetch' rule lists
_analyze_sections
0
dict[str, dict[str, Any]]
▼
Analyze site sections for speculation rules.
_analyze_sections
0
dict[str, dict[str, Any]]
▼
def _analyze_sections(self) -> dict[str, dict[str, Any]]
Returns
dict[str, dict[str, Any]]
Dictionary mapping section paths to analysis info
Functions
generate_speculation_rules
1
str
▼
Convenience function to generate speculation rules JSON.
generate_speculation_rules
1
str
▼
def generate_speculation_rules(site: SiteLike) -> str
Parameters
| Name | Type | Description |
|---|---|---|
site |
SiteLike |
The Bengal site instance |
Returns
str