refactor: convert jbig2 properties to direct fields in OCROptions

Co-authored-by: aider (openrouter/anthropic/claude-sonnet-4) <aider@aider.chat>
This commit is contained in:
James R. Barlow
2025-12-21 12:21:48 -08:00
co-authored by aider
parent b7640bdb9c
commit 40f01d85ae
+11 -32
View File
@@ -140,37 +140,6 @@ class OCROptions(BaseModel):
"""Compatibility alias for jpg_quality."""
self.jpg_quality = value
# Backward compatibility properties for jbig2 options
@property
def jbig2_lossy(self):
"""Backward compatibility for jbig2_lossy."""
return getattr(self, '_jbig2_lossy', None)
@jbig2_lossy.setter
def jbig2_lossy(self, value):
"""Backward compatibility for jbig2_lossy."""
self._jbig2_lossy = value
@property
def jbig2_page_group_size(self):
"""Backward compatibility for jbig2_page_group_size."""
return getattr(self, '_jbig2_page_group_size', None)
@jbig2_page_group_size.setter
def jbig2_page_group_size(self, value):
"""Backward compatibility for jbig2_page_group_size."""
self._jbig2_page_group_size = value
@property
def jbig2_threshold(self):
"""Backward compatibility for jbig2_threshold."""
return getattr(self, '_jbig2_threshold', 0.85)
@jbig2_threshold.setter
def jbig2_threshold(self, value):
"""Backward compatibility for jbig2_threshold."""
self._jbig2_threshold = value
# Advanced options
max_image_mpixels: float = 250.0
pdf_renderer: str = 'auto'
@@ -196,6 +165,11 @@ class OCROptions(BaseModel):
# Legacy ghostscript options (for backward compatibility)
pdfa_image_compression: str | None = None
color_conversion_strategy: str = "LeaveColorUnchanged"
# Legacy jbig2 options (for backward compatibility)
jbig2_lossy: bool | None = None
jbig2_page_group_size: int | None = None
jbig2_threshold: float = 0.85
# Plugin system
plugins: Sequence[Path | str] | None = None
@@ -384,6 +358,9 @@ class OCROptions(BaseModel):
elif hasattr(value, '__class__') and 'Iterator' in value.__class__.__name__:
# Handle Pydantic serialization iterators
return {'__type__': 'Stream', 'value': 'stream'}
elif isinstance(value, property):
# Handle property objects that shouldn't be serialized
return None
elif isinstance(value, (list, tuple)):
return [_serialize_value(item) for item in value]
elif isinstance(value, dict):
@@ -394,7 +371,9 @@ class OCROptions(BaseModel):
# Process all fields
serializable_data = {}
for key, value in data.items():
serializable_data[key] = _serialize_value(value)
serialized_value = _serialize_value(value)
if serialized_value is not None: # Skip None values from properties
serializable_data[key] = serialized_value
# Add extra_attrs
if self.extra_attrs: