projects

Client API for projects in Nexus.

qnexus.client.projects.add_property(
name: str,
property_type: Literal['bool', 'int', 'float', 'string'],
project: ProjectRef | None = None,
description: str | None = None,
required: bool = False,
) None[source]

Add a property definition to a project.

Examples

>>> import qnexus as qnx
>>> qnx.projects.add_property(
...     name="iteration",
...     property_type="int",
...     project=project_ref,
... )
qnexus.client.projects.create(
name: str,
description: str | None = None,
properties: OrderedDict[str, bool | int | float | str] | None = None,
) ProjectRef[source]

Create a new project in Nexus.

Examples

>>> import qnexus as qnx
>>> project_ref = qnx.projects.create(
...     name="ProjectUnobtanium",
...     description="Chemistry experiments on unobtanium",
... )
qnexus.client.projects.delete(
project: ProjectRef,
scope: ScopeFilterEnum = ScopeFilterEnum.USER,
) None[source]

Delete a project and all associated data in Nexus. Project must be archived first. WARNING: this will delete all data associated with the project.

Examples

>>> import qnexus as qnx
>>> qnx.projects.update(project_ref, archive=True)
>>> qnx.projects.delete(project_ref)
qnexus.client.projects.get(
*,
id: str | UUID | None = None,
name: str | None = None,
name_like: str | None = None,
creator_email: list[str] | None = None,
created_before: datetime | None = None,
created_after: datetime | None = datetime.datetime(2023, 1, 1, 0, 0),
modified_before: datetime | None = None,
modified_after: datetime | None = None,
is_archived: bool = False,
sort_filters: list[SortFilterEnum] | None = None,
page_number: int | None = None,
page_size: int | None = None,
scope: ScopeFilterEnum = ScopeFilterEnum.USER,
) ProjectRef[source]

Get a single project using filters. Throws an exception if the filters do not match exactly one object.

Examples

>>> import qnexus as qnx
>>> project_ref = qnx.projects.get(name="MyProject")
>>> project_ref = qnx.projects.get(id="dca33f7f-9619-4cf7-a3fb-56256b117d6e")
qnexus.client.projects.get_all(
*,
name_like: str | None = None,
name_exact: list[str] | None = None,
creator_email: list[str] | None = None,
created_before: datetime | None = None,
created_after: datetime | None = datetime.datetime(2023, 1, 1, 0, 0),
modified_before: datetime | None = None,
modified_after: datetime | None = None,
is_archived: bool = False,
sort_filters: list[SortFilterEnum] | None = None,
page_number: int | None = None,
page_size: int | None = None,
scope: ScopeFilterEnum = ScopeFilterEnum.USER,
) NexusIterator[ProjectRef][source]

Get a NexusIterator over projects with optional filters.

Examples

>>> import qnexus as qnx
>>> my_projects = qnx.projects.get_all(
...     name_like="experiment",
...     created_after=datetime(2026, 1, 1),
... )
>>> my_projects.df()
qnexus.client.projects.get_or_create(
name: str,
description: str | None = None,
properties: OrderedDict[str, bool | int | float | str] | None = None,
) ProjectRef[source]

Get a project reference if the projects exists (by name), otherwise create a new project using the supplied description and properties.

Examples

>>> import qnexus as qnx
>>> project_ref = qnx.projects.get_or_create(name="MyProject")
>>> project_ref = qnx.projects.get_or_create(
...     name="MyProject",
...     description="A new experiment",
...     properties={"team": "quantum"},
... )
qnexus.client.projects.get_properties(
project: ProjectRef | None = None,
) DataframableList[Property][source]

Get the property definitions for the Project.

Examples

>>> import qnexus as qnx
>>> qnx.projects.get_properties(project=project_ref).df()
qnexus.client.projects.summarize(
project: ProjectRef | None = None,
) DataFrame[source]

Summarize the current state of a project.

Examples

>>> import qnexus as qnx
>>> qnx.projects.summarize(project=project_ref)
qnexus.client.projects.update(
project: ProjectRef,
name: str | None = None,
description: str | None = None,
archive: bool = False,
scope: ScopeFilterEnum = ScopeFilterEnum.USER,
) ProjectRef[source]

Update the details of a project.

Examples

>>> import qnexus as qnx
>>> updated = qnx.projects.update(project_ref, name="NewName")
>>> qnx.projects.update(project_ref, archive=True)  # archive a project
class qnexus.projects.Property(
*,
annotations: Annotations,
property_type: str,
required: bool,
color: str,
id: UUID,
)[source]

A property definition.

df() DataFrame[source]

Convert to a pandas DataFrame.