Diff#

TensorBay supports showing changes between commits or drafts.

Before operating the diff, a dataset client instance with commits is needed. See more details in Draft and Commit

Get Diff#

TensorBay SDK allows getting the dataset diff through basehead. Currently, only obtaining the diff between the head and its parent commit is supported; that is, the head is the given version(commit or draft) while the base is parent commit of the head.

diff = dataset_client.get_diff(head=head)

The type of the head indicates the version status: string for commit, int for draft.

Get Diff on Revision#

For example, the following diff records the difference between the commit whose id is "3bc35d806e0347d08fc23564b82737dc" and its parent commit.

diff = dataset_client.get_diff(head="3bc35d806e0347d08fc23564b82737dc")

Get Diff on Draft Number#

For example, the following diff records the difference between the draft whose draft number is 1 and its parent commit.

diff = dataset_client.get_diff(head=1)

Diff Object#

The structure of the returning DatasetDiff looks like:

dataset_diff
├── segment_diff
│   ├── action
│   │   └── <str>
│   ├── data_diff
│   │   ├── file_diff
│   │   │   └── action
│   │   │       └── <str>
│   │   └── label_diff
│   │       └── action
│   │           └── <str>
│   └── ...
├── segment_diff
│   ├── action
│   │   └── <str>
│   ├── data_diff
│   │   ├── file_diff
│   │   │   └── action
│   │   │       └── <str>
│   │   └── label_diff
│   │       └── action
│   │           └── <str>
│   └── ...
└── ...

The DatasetDiff is a list which is composed of SegmentDiff recording the changes of the segment. The SegmentDiff is a lazy-load sequence which is composed of DataDiff recording the changes of data.

The attribute “action” represents the status difference of the relative resource. It is an enum which includes:

  • unmodify

  • add

  • delete

  • modify