Skip to content

Commit fa6deb5

Browse files
authored
[PLT-0] Clone method project (#1624)
1 parent 1862a6a commit fa6deb5

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

libs/labelbox/src/labelbox/schema/project.py

+17
Original file line numberDiff line numberDiff line change
@@ -1809,6 +1809,23 @@ def get_overview(self) -> ProjectOverview:
18091809
overview["all_in_data_rows"] = overview.pop("all")
18101810

18111811
return ProjectOverview(**overview)
1812+
1813+
def clone(self) -> "Project":
1814+
"""
1815+
Clones the current project.
1816+
1817+
Returns:
1818+
Project: The cloned project.
1819+
"""
1820+
mutation = """
1821+
mutation CloneProjectPyApi($projectId: ID!) {
1822+
cloneProject(data: { projectId: $projectId }) {
1823+
id
1824+
}
1825+
}
1826+
"""
1827+
result = self.client.execute(mutation, {"projectId": self.uid})
1828+
return self.client.get_project(result["cloneProject"]["id"])
18121829

18131830

18141831
class ProjectMember(DbObject):

libs/labelbox/tests/integration/test_project.py

+16
Original file line numberDiff line numberDiff line change
@@ -279,3 +279,19 @@ def test_label_count(client, configured_batch_project_with_label):
279279
[source_project, _, _, _] = configured_batch_project_with_label
280280
num_labels = sum([1 for _ in source_project.labels()])
281281
assert source_project.get_label_count() == num_labels
282+
283+
284+
def test_clone(client, project, rand_gen):
285+
# cannot clone unknown project media type
286+
project = client.create_project(name=rand_gen(str), media_type=MediaType.Image)
287+
cloned_project = project.clone()
288+
289+
assert cloned_project.description == project.description
290+
assert cloned_project.media_type == project.media_type
291+
assert cloned_project.queue_mode == project.queue_mode
292+
assert cloned_project.auto_audit_number_of_labels == project.auto_audit_number_of_labels
293+
assert cloned_project.auto_audit_percentage == project.auto_audit_percentage
294+
assert cloned_project.get_label_count() == 0
295+
296+
project.delete()
297+
cloned_project.delete()

0 commit comments

Comments
 (0)