diff --git a/docs/guide/namespaces.md b/docs/guide/namespaces.md index 7a3e5794a..7fe8a80bd 100644 --- a/docs/guide/namespaces.md +++ b/docs/guide/namespaces.md @@ -159,3 +159,26 @@ dc.read_values(scores=[0.8, 1.5, 2.1]).save("metrics") ds = dc.read_dataset("local.local.metrics") ds.show() +``` + +## Removing Namespaces and Projects + +Use `delete_namespace` to remove an empty namespace or an empty project within a namespace. Delete will fail if the target is not empty. + +### Signature + +```python +def delete_namespace(name: str, session: Optional[Session]) -> None: +``` + +- **``** — deletes the namespace (must contain no projects or datasets). +- **`.`** — deletes the project (must contain no datasets). + +### Examples + +```python +import datachain as dc + +dc.delete_namespace("dev.my-project") # delete project +dc.delete_namespace("dev") # delete namespace +``` diff --git a/docs/references/datachain.md b/docs/references/datachain.md index c6228365d..3277793b9 100644 --- a/docs/references/datachain.md +++ b/docs/references/datachain.md @@ -19,6 +19,8 @@ for examples of how to create a chain. ::: datachain.lib.dc.datasets.move_dataset +::: datachain.lib.namespaces.delete_namespace + ::: datachain.lib.dc.hf.read_hf ::: datachain.lib.dc.json.read_json diff --git a/src/datachain/__init__.py b/src/datachain/__init__.py index f40eccb6d..b61f1f8ac 100644 --- a/src/datachain/__init__.py +++ b/src/datachain/__init__.py @@ -37,7 +37,7 @@ VideoFrame, ) from datachain.lib.model_store import ModelStore -from datachain.lib.namespaces import delete as delete_namespace +from datachain.lib.namespaces import delete_namespace from datachain.lib.projects import create as create_project from datachain.lib.udf import Aggregator, Generator, Mapper from datachain.lib.utils import AbstractUDF, DataChainError diff --git a/src/datachain/lib/namespaces.py b/src/datachain/lib/namespaces.py index 36dccb6bb..a68674f8a 100644 --- a/src/datachain/lib/namespaces.py +++ b/src/datachain/lib/namespaces.py @@ -77,7 +77,7 @@ def ls(session: Optional[Session] = None) -> list[Namespace]: return Session.get(session).catalog.metastore.list_namespaces() -def delete(name: str, session: Optional[Session]) -> None: +def delete_namespace(name: str, session: Optional[Session]) -> None: """ Removes a namespace by name. @@ -88,14 +88,13 @@ def delete(name: str, session: Optional[Session]) -> None: as these cannot be removed. Parameters: - name : The name of the namespace. - session : Session to use for getting project. + name: The name of the namespace. + session: Session to use for getting project. Example: ```py import datachain as dc - from datachain.lib.namespace import delete as delete_namespace - delete_namespace("dev") + dc.delete_namespace("dev") ``` """ session = Session.get(session) diff --git a/tests/unit/lib/test_namespace.py b/tests/unit/lib/test_namespace.py index 77d7e8a1d..3dc80c7a0 100644 --- a/tests/unit/lib/test_namespace.py +++ b/tests/unit/lib/test_namespace.py @@ -7,7 +7,7 @@ NamespaceNotFoundError, ) from datachain.lib.namespaces import create as create_namespace -from datachain.lib.namespaces import delete as delete_namespace +from datachain.lib.namespaces import delete_namespace from datachain.lib.namespaces import get as get_namespace from datachain.lib.namespaces import ls as ls_namespaces from datachain.lib.projects import create as create_project diff --git a/tests/unit/lib/test_project.py b/tests/unit/lib/test_project.py index 2b557e4a8..177428ef1 100644 --- a/tests/unit/lib/test_project.py +++ b/tests/unit/lib/test_project.py @@ -8,7 +8,7 @@ ProjectNotFoundError, ) from datachain.lib.namespaces import create as create_namespace -from datachain.lib.namespaces import delete as delete_namespace +from datachain.lib.namespaces import delete_namespace from datachain.lib.namespaces import get as get_namespace from datachain.lib.projects import get as get_project from datachain.lib.projects import ls as ls_projects