collaboration.merge module

binaryninja.collaboration.merge.ConflictHandler()

Helper class that resolves conflicts

binaryninja.collaboration.merge.MergeConflict(handle)

Structure representing an individual merge conflict

class ConflictHandler[source]

Bases: object

Helper class that resolves conflicts

abstract handle(conflicts: Dict[str, MergeConflict]) bool[source]

Handle any merge conflicts by calling their success() function with a merged value

Parameters:

conflicts (Dict[str, MergeConflict]) – Map of conflict id to conflict structure

Returns:

True if all conflicts were successfully merged

Return type:

bool

class MergeConflict(handle: LP_BNAnalysisMergeConflict)[source]

Bases: object

Structure representing an individual merge conflict

Parameters:

handle (LP_BNAnalysisMergeConflict) –

get_path_item(path_key: str) object | None[source]

Get item in the merge conflict’s path for a given key.

Parameters:

path_key (str) – Key for path item

Returns:

Path item, or an None if not found

Return type:

object | None

success(value: Dict[str, object] | None) bool[source]

Call this when you’ve resolved the conflict to save the result

Parameters:

value (Dict[str, object] | None) – Resolved value

Returns:

True if successful

Return type:

bool

property base: Dict[str, object] | None

Json object for conflicting data in the base snapshot

Returns:

Python dictionary from parsed json

property base_file: FileMetadata | None

FileMetadata with contents of file for base snapshot This function is slow! Only use it if you really need it.

Returns:

FileMetadata object

property base_snapshot: Snapshot | None

Snapshot which is the parent of the two being merged

Returns:

Snapshot object

property data_type: MergeConflictDataType

Type of data in the conflict, Text/Json/Binary

Returns:

Conflict data type

property database: Database

Database backing all snapshots in the merge conflict

Returns:

Database object

property first: Dict[str, object] | None

Json object for conflicting data in the first snapshot

Returns:

Python dictionary from parsed json

property first_file: FileMetadata | None

FileMetadata with contents of file for first snapshot This function is slow! Only use it if you really need it.

Returns:

FileMetadata object

property first_snapshot: Snapshot | None

First snapshot being merged

Returns:

Snapshot object

property key: str

Lookup key for the merge conflict, ideally a tree path that contains the name of the conflict and all the recursive children leading up to this conflict.

Returns:

Key name

property second: Dict[str, object] | None

Json object for conflicting data in the second snapshot

Returns:

Python dictionary from parsed json

property second_file: FileMetadata | None

FileMetadata with contents of file for second snapshot This function is slow! Only use it if you really need it.

Returns:

FileMetadata object

property second_snapshot: Snapshot | None

Second snapshot being merged

Returns:

Snapshot object

property type: str

String representing the type name of the data, not the same as data_type. This is like “typeName” or “tag” depending on what object the conflict represents.

Returns:

Type name