Skip to content

Commit

Permalink
[pre-commit.ci] auto fixes from pre-commit.com hooks
Browse files Browse the repository at this point in the history
for more information, see https://pre-commit.ci
  • Loading branch information
pre-commit-ci[bot] committed Nov 21, 2024
1 parent 5f67bc0 commit 3f935e1
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 101 deletions.
14 changes: 6 additions & 8 deletions src/aiidalab_qe/app/submission/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

from aiidalab_qe.app.parameters import DEFAULT_PARAMETERS
from aiidalab_qe.app.utils import get_entry_items
from aiidalab_qe.common.code import CodeModel, PluginCodes, PwCodeModel
from aiidalab_qe.common.panel import SettingsModel, SettingsPanel
from aiidalab_qe.common.setup_codes import QESetupWidget
from aiidalab_qe.common.setup_pseudos import PseudosInstallWidget
Expand All @@ -19,9 +20,8 @@
)
from aiidalab_widgets_base import WizardAppWidgetStep

from aiidalab_qe.common.code import CodeModel, PluginCodes, PwCodeModel
from .model import SubmissionStepModel
from .basic import BasicCodeModel, BasicCodeSettings
from .model import SubmissionStepModel

DEFAULT: dict = DEFAULT_PARAMETERS # type: ignore

Expand Down Expand Up @@ -99,15 +99,13 @@ def __init__(self, model: SubmissionStepModel, qe_auto_setup=True, **kwargs):
}
self._fetch_plugin_settings()


self._install_sssp(qe_auto_setup)
self._set_up_qe(qe_auto_setup)

def render(self):
if self.rendered:
return


self.process_label = ipw.Text(
description="Label:",
layout=ipw.Layout(width="auto", indent="0px"),
Expand Down Expand Up @@ -210,7 +208,7 @@ def reset(self):
@tl.observe("previous_step_state")
def _on_previous_step_state_change(self, _):
self._update_state()

def _on_tab_change(self, change):
if (tab_index := change["new"]) is None:
return
Expand All @@ -226,10 +224,10 @@ def _on_input_parameters_change(self, _):
self._update_tabs()
self._model.update_process_label()
self._model.update_submission_blockers()

def _on_plugin_submission_blockers_change(self, _):
self._model.update_submission_blockers()

def _on_plugin_submission_warning_messages_change(self, _):
print("plugin submission warning messages change")
self._model.update_submission_warnings()
Expand Down Expand Up @@ -364,4 +362,4 @@ def toggle_plugin(change, identifier=identifier, model=model):
self.settings[identifier] = panel(
identifier=identifier,
model=model,
)
)
47 changes: 24 additions & 23 deletions src/aiidalab_qe/app/submission/basic/model.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
from __future__ import annotations

import os

import traitlets as tl
import os

from aiida import orm
from aiidalab_qe.app.parameters import DEFAULT_PARAMETERS
from aiidalab_qe.common.panel import SettingsModel
from aiidalab_qe.common.code import CodeModel, PluginCodes, PwCodeModel
from aiidalab_qe.common.code import CodeModel, PwCodeModel
from aiidalab_qe.common.mixins import HasInputStructure
from aiidalab_qe.common.panel import SettingsModel
from aiidalab_qe.common.widgets import (
QEAppComputationalResourcesWidget,
)

DEFAULT: dict = DEFAULT_PARAMETERS # type: ignore

class BasicCodeModel(SettingsModel,

class BasicCodeModel(
SettingsModel,
HasInputStructure,
):
):
"""Model for the basic code setting."""

dependencies = [
Expand All @@ -28,14 +30,14 @@ class BasicCodeModel(SettingsModel,
input_parameters = tl.Dict()

codes = tl.Dict(
key_trait=tl.Unicode(), # code name
value_trait=tl.Instance(CodeModel), # code metadata
)
key_trait=tl.Unicode(), # code name
value_trait=tl.Instance(CodeModel), # code metadata
)
# this is a copy of the codes trait, which is used to trigger the update of the plugin
basic_codes = tl.Dict(
key_trait=tl.Unicode(), # code name
value_trait=tl.Instance(CodeModel), # code metadata
)
key_trait=tl.Unicode(), # code name
value_trait=tl.Instance(CodeModel), # code metadata
)

plugin_mapping = tl.Dict(
key_trait=tl.Unicode(), # plugin identifier
Expand Down Expand Up @@ -94,23 +96,25 @@ def add_code(self, identifier: str, code: CodeModel) -> CodeModel | None:
name = default_calc_job_plugin.split(".")[-1]
if default_calc_job_plugin not in self.codes:
if default_calc_job_plugin == "quantumespresso.pw":
code_model = PwCodeModel(name=name,
description=name,
default_calc_job_plugin=default_calc_job_plugin,
)
code_model = PwCodeModel(
name=name,
description=name,
default_calc_job_plugin=default_calc_job_plugin,
)
else:
code_model = CodeModel(name=name,
description=name,
default_calc_job_plugin=default_calc_job_plugin,
)
code_model = CodeModel(
name=name,
description=name,
default_calc_job_plugin=default_calc_job_plugin,
)
self.codes[default_calc_job_plugin] = code_model
return code_model
# update the plugin mapping to keep track of which codes are associated with which plugins
if identifier not in self.plugin_mapping:
self.plugin_mapping[identifier] = [default_calc_job_plugin]
else:
self.plugin_mapping[identifier].append(default_calc_job_plugin)

def get_code(self, name) -> CodeModel | None:
if name in self.codes: # type: ignore
return self.codes[name] # type: ignore
Expand Down Expand Up @@ -140,7 +144,6 @@ def update_submission_blockers(self):
self.submission_blockers = list(self._check_submission_blockers())

def _check_submission_blockers(self):

# No pw code selected (this is ignored while the setup process is running).
pw_code = self._model.get_code("quantumespresso.pw")
if pw_code and not pw_code.selected and not self.installing_qe:
Expand All @@ -166,7 +169,6 @@ def _check_submission_blockers(self):
yield (
f"Error: hi, plugin developer, please use the QEAppComputationalResourcesWidget from aiidalab_qe.common.widgets for code {name}."
)


def check_resources(self):
pw_code = self.get_code("quantumespresso.pw")
Expand Down Expand Up @@ -250,7 +252,6 @@ def check_resources(self):
message=alert_message,
)
)


def _estimate_min_cpus(
self,
Expand Down
30 changes: 19 additions & 11 deletions src/aiidalab_qe/app/submission/basic/setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,17 @@
from __future__ import annotations

import ipywidgets as ipw
import traitlets as tl

from aiidalab_qe.app.parameters import DEFAULT_PARAMETERS
from aiidalab_qe.app.utils import get_entry_items
from aiidalab_qe.common.setup_codes import QESetupWidget
from aiidalab_qe.common.setup_pseudos import PseudosInstallWidget
from aiidalab_qe.common.code import CodeModel, PluginCodes, PwCodeModel
from aiidalab_qe.common.panel import SettingsPanel
from aiidalab_qe.common.widgets import (
LoadingWidget,
PwCodeResourceSetupWidget,
QEAppComputationalResourcesWidget,
)
from aiidalab_qe.common.code import CodeModel, PluginCodes, PwCodeModel
from aiidalab_qe.common.panel import SettingsPanel

from .model import BasicCodeModel

DEFAULT: dict = DEFAULT_PARAMETERS # type: ignore
Expand All @@ -28,7 +26,6 @@ class BasicCodeSettings(SettingsPanel[BasicCodeModel]):
title = "Basic"
identifier = "basic"


def __init__(self, model: BasicCodeModel, **kwargs):
super().__init__(model, **kwargs)
self._set_up_codes()
Expand Down Expand Up @@ -71,7 +68,7 @@ def reset(self):

def _on_input_parameters_change(self, _):
self._model.update_active_codes()

def _on_input_structure_change(self, _):
self._model.check_resources()

Expand All @@ -80,7 +77,7 @@ def _on_code_activation_change(self, change):

def _on_code_selection_change(self, _):
""""""
#TODO: update the selected code in the input parameters
# TODO: update the selected code in the input parameters
# self._model.update_submission_blockers()

def _on_pw_code_resource_change(self, _):
Expand All @@ -93,7 +90,6 @@ def _on_code_resource_change(self, _):
self._model.basic_codes = self._model.get_model_state()["codes"]

def _set_up_codes(self):

codes: PluginCodes = {
"dft": {
"pw": PwCodeModel(
Expand Down Expand Up @@ -193,11 +189,23 @@ def _render_code_widget(
)
code_model.observe(
self._on_pw_code_resource_change,
["num_cpus", "num_nodes", "ntasks_per_node", "cpus_per_task", "max_wallclock_seconds"],
[
"num_cpus",
"num_nodes",
"ntasks_per_node",
"cpus_per_task",
"max_wallclock_seconds",
],
)
code_model.observe(
self._on_code_resource_change,
["num_cpus", "num_nodes", "ntasks_per_node", "cpus_per_task", "max_wallclock_seconds"],
[
"num_cpus",
"num_nodes",
"ntasks_per_node",
"cpus_per_task",
"max_wallclock_seconds",
],
)
code_widgets = self.code_widgets_container.children[:-1] # type: ignore
self.code_widgets_container.children = [*code_widgets, code_widget]
Expand Down
16 changes: 4 additions & 12 deletions src/aiidalab_qe/app/submission/model.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
from __future__ import annotations

import os
import typing as t
from copy import deepcopy

import ipywidgets as ipw
Expand All @@ -14,11 +12,8 @@
from aiidalab_qe.common.mixins import Confirmable, HasInputStructure, HasModels
from aiidalab_qe.common.mvc import Model
from aiidalab_qe.common.panel import SettingsModel
from aiidalab_qe.common.widgets import QEAppComputationalResourcesWidget
from aiidalab_qe.workflows import QeAppWorkChain

from aiidalab_qe.common.code import CodeModel, CodesDict

DEFAULT: dict = DEFAULT_PARAMETERS # type: ignore


Expand Down Expand Up @@ -77,11 +72,10 @@ def confirm(self):
# Once submitted, nothing should unconfirm the model!
self.unobserve_all("confirmed")


def refresh_codes(self):
for _, model in self.get_models():
model.refresh_codes()

def update_active_models(self):
for identifier, model in self.get_models():
if identifier in ["basic"]:
Expand Down Expand Up @@ -124,7 +118,7 @@ def update_submission_blockers(self):
if hasattr(model, "submission_blockers"):
submission_blockers += model.submission_blockers
self.internal_submission_blockers = submission_blockers

def update_submission_warnings(self):
submission_warning_messages = self._check_submission_warnings()
for _, model in self.get_models():
Expand Down Expand Up @@ -176,13 +170,12 @@ def set_model_state(self, parameters):
if parameters.get(identifier):
model.set_model_state(parameters[identifier])
model.loaded_from_process = True

if self.process_node:
self.process_label = self.process_node.label
self.process_description = self.process_node.description
self.loaded_from_process = True


def get_selected_codes(self) -> dict[str, dict]:
return {
name: code_model.get_model_state()
Expand Down Expand Up @@ -269,8 +262,7 @@ def _check_submission_blockers(self):
# SSSP library not installed
if not self.sssp_installed:
yield "The SSSP library is not installed."

def _check_submission_warnings(self):
"""Check for any warnings that should be displayed to the user."""
return ""

6 changes: 4 additions & 2 deletions src/aiidalab_qe/common/code/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
from aiida import orm
from aiida.common import NotExistent
from aiidalab_qe.common.mvc import Model
from aiidalab_qe.common.widgets import QEAppComputationalResourcesWidget, PwCodeResourceSetupWidget
from aiidalab_qe.common.widgets import (
PwCodeResourceSetupWidget,
QEAppComputationalResourcesWidget,
)


class CodeModel(Model):
Expand Down Expand Up @@ -122,7 +125,6 @@ class PwCodeModel(CodeModel):
override = tl.Bool(False)
npool = tl.Int(1)


def __init__(
self,
*,
Expand Down
2 changes: 1 addition & 1 deletion src/aiidalab_qe/plugins/bands/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# from aiidalab_qe.bands.result import Result
from aiidalab_qe.common.panel import SettingsOutline

from .code import BandsCodeModel, BandsCodeSettings
from .model import BandsModel
from .result import BandsResults, BandsResultsModel
from .setting import BandsSettings
from .workchain import workchain_and_builder
from .code import BandsCodeModel, BandsCodeSettings


class BandsOutline(SettingsOutline):
Expand Down
Loading

0 comments on commit 3f935e1

Please sign in to comment.