feedback_forensics.data.operations.merge#

Merge operation for AnnotatedPairs datasets.

Module Contents#

Functions#

merge_ap

Merge two AnnotatedPairs datasets.

_categorize_comparisons

Categorize comparisons between datasets by ID overlap.

_merge_single_comparison

Merge two comparisons, first takes precedence in conflicts.

_merge_value

Generic value merging with conflict checking.

_merge_dict

Generic dictionary merging with optional strict conflict checking.

_merge_prompt

Merge prompt strings from two comparisons, raising on conflicts.

_merge_response

Merge response objects from two comparisons, raising on conflicts.

_merge_annotations

Merge annotation dictionaries from two comparisons, warning on conflicts.

_merge_comparison_metadata

Merge comparison-level metadata from two comparisons, detecting conflicts.

_merge_annotators

Merge annotator definitions, first takes precedence.

_merge_name_or_description

Merge name or description fields, reusing if identical or creating combined name.

_merge_default_annotator

Merge default annotator fields with first precedence and warning on disagreement.

_merge_metadata

Create merged metadata.

API#

feedback_forensics.data.operations.merge.merge_ap(first_data: Dict[str, Any], second_data: Dict[str, Any], dataset_name: Optional[str] = None, description: Optional[str] = None) Dict[str, Any]#

Merge two AnnotatedPairs datasets.

Args: first_data: First AnnotatedPairs dataset (takes precedence in conflicts) second_data: Second AnnotatedPairs dataset dataset_name: Override dataset name for merged result description: Override description for merged result

Returns: Merged AnnotatedPairs data structure

Raises: ValueError: If inputs are invalid

feedback_forensics.data.operations.merge._categorize_comparisons(comps1: List[Dict], comps2: List[Dict]) Tuple[List[Tuple[int, int]], List[int], List[int]]#

Categorize comparisons between datasets by ID overlap.

Returns: Tuple of: - paired: List of (first_idx, second_idx) tuples for matches - first_only: List of indices only in first dataset - second_only: List of indices only in second dataset

feedback_forensics.data.operations.merge._merge_single_comparison(comp1: Dict, comp2: Dict) Dict#

Merge two comparisons, first takes precedence in conflicts.

feedback_forensics.data.operations.merge._merge_value(value1: Any, value2: Any, context: str, strict: bool) Any#

Generic value merging with conflict checking.

feedback_forensics.data.operations.merge._merge_dict(dict1: Dict, dict2: Dict, context: str, strict: bool) Dict#

Generic dictionary merging with optional strict conflict checking.

feedback_forensics.data.operations.merge._merge_prompt(comp1: Dict, comp2: Dict) Optional[str]#

Merge prompt strings from two comparisons, raising on conflicts.

feedback_forensics.data.operations.merge._merge_response(comp1: Dict, comp2: Dict, field_name: str) Optional[Dict]#

Merge response objects from two comparisons, raising on conflicts.

feedback_forensics.data.operations.merge._merge_annotations(comp1: Dict, comp2: Dict) Dict#

Merge annotation dictionaries from two comparisons, warning on conflicts.

feedback_forensics.data.operations.merge._merge_comparison_metadata(comp1: Dict, comp2: Dict) Dict#

Merge comparison-level metadata from two comparisons, detecting conflicts.

feedback_forensics.data.operations.merge._merge_annotators(ann1: Dict, ann2: Dict) Dict#

Merge annotator definitions, first takes precedence.

feedback_forensics.data.operations.merge._merge_name_or_description(value1: Optional[str], value2: Optional[str]) Optional[str]#

Merge name or description fields, reusing if identical or creating combined name.

feedback_forensics.data.operations.merge._merge_default_annotator(annotator1: Optional[str], annotator2: Optional[str]) Optional[str]#

Merge default annotator fields with first precedence and warning on disagreement.

feedback_forensics.data.operations.merge._merge_metadata(meta1: Dict, meta2: Dict) Dict#

Create merged metadata.