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,
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,
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,
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,
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,
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,
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,
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,
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,
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