Skip to content

Commit

Permalink
updates after testing
Browse files Browse the repository at this point in the history
  • Loading branch information
rozyczko committed Apr 12, 2024
1 parent 364f895 commit df2a39c
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 71 deletions.
22 changes: 2 additions & 20 deletions easyCore/Objects/Job/Analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,20 @@
# SPDX-License-Identifier: BSD-3-Clause
# © 2021-2023 Contributors to the easyCore project <https://github.com/easyScience/easyCore

from typing import Any
from typing import List

from easyCore.Objects.ObjectClasses import BaseObj
from easyCore.Objects.ObjectClasses import Parameter


class AnalysisBase(BaseObj):
"""
This virtual class allows for the creation of technique-specific Analysis objects.
"""
def __init__(self, name: str, parameters: List[Parameter], *args, **kwargs):
def __init__(self, name: str, *args, **kwargs):
super(AnalysisBase, self).__init__(name, *args, **kwargs)
self.parameters = parameters

self.name = name

# required dunder methods
def __str__(self):
return f"Analysis: {self.name}"

def __call__(self, *args: Any, **kwds: Any) -> Any:
return super().__call__(*args, **kwds)

def __copy__(self) -> 'AnalysisBase':
raise NotImplementedError("Copy not implemented")
#return super().__copy__()

def __deepcopy__(self, memo: Any) -> 'AnalysisBase':
raise NotImplementedError("Deepcopy not implemented")
#return super().__deepcopy__(memo)

def __eq__(self, other: Any) -> bool:
raise NotImplementedError("Equality not implemented")
#return super().__eq__(other)

24 changes: 3 additions & 21 deletions easyCore/Objects/Job/Experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,20 @@
# SPDX-License-Identifier: BSD-3-Clause
# © 2021-2023 Contributors to the easyCore project <https://github.com/easyScience/easyCore

from typing import Any
from typing import List

from easyCore.Objects.ObjectClasses import BaseObj
from easyCore.Objects.ObjectClasses import Parameter


class ExperimentBase(BaseObj):
"""
This virtual class allows for the creation of technique-specific Experiment objects.
"""
def __init__(self, name: str, parameters: List[Parameter], *args, **kwargs):
def __init__(self, name: str, *args, **kwargs):
super(ExperimentBase, self).__init__(name, *args, **kwargs)
self.parameters = parameters
self.name = name
self._name = name

# required dunder methods
def __str__(self):
return f"Experiment: {self.name}"
return f"Experiment: {self._name}"

def __call__(self, *args: Any, **kwds: Any) -> Any:
return super().__call__(*args, **kwds)

def __copy__(self) -> 'ExperimentBase':
raise NotImplementedError("Copy not implemented")
#return super().__copy__()

def __deepcopy__(self, memo: Any) -> 'ExperimentBase':
raise NotImplementedError("Deepcopy not implemented")
#return super().__deepcopy__(memo)

def __eq__(self, other: Any) -> bool:
raise NotImplementedError("Equality not implemented")
#return super().__eq__(other)

43 changes: 35 additions & 8 deletions easyCore/Objects/Job/Job.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,55 @@
# SPDX-License-Identifier: BSD-3-Clause
# © 2021-2023 Contributors to the easyCore project <https://github.com/easyScience/easyCore

from typing import List
from abc import abstractmethod

from easyCore.Objects.Job.Analysis import AnalysisBase
from easyCore.Objects.Job.Experiment import ExperimentBase
from easyCore.Objects.Job.Theory import TheoryBase
from easyCore.Objects.ObjectClasses import BaseObj
from easyCore.Objects.ObjectClasses import Parameter

# from easyCore.Objects.ObjectClasses import Parameter


class JobBase(BaseObj):
"""
This virtual class allows for the creation of technique-specific Job objects.
"""
def __init__(self, name: str, parameters: List[Parameter], *args, **kwargs):
def __init__(self, name: str, *args, **kwargs):
super(JobBase, self).__init__(name, *args, **kwargs)
self.parameters = parameters
self.name = name
self._theory = None
self._experiment = None
self._analysis = None
self._summary = None
self._info = None

"""
JobBase consists of Theory, Experiment, Analysis virtual classes.
Additionally, Summary and Info classes are included to store additional information.
"""
@abstractmethod
def set_theory(self, theory: TheoryBase):
# The implementation must include __copy__ and __deepcopy__ methods
raise NotImplementedError("setTheory not implemented")

@abstractmethod
def set_experiment(self, experiment: ExperimentBase):
# We might not have an experiment but this should be dealt with in the specific implementation
raise NotImplementedError("setExperiment not implemented")


@abstractmethod
def set_analysis(self, analysis: AnalysisBase):
raise NotImplementedError("setAnalysis not implemented")

@abstractmethod
def set_summary(self, summary: BaseObj):
raise NotImplementedError("setSummary not implemented")

@abstractmethod
def set_info(self, info: BaseObj):
raise NotImplementedError("setInfo not implemented")

@property
def theory(self):
return self._theory
Expand All @@ -48,9 +63,21 @@ def experiment(self):
def analysis(self):
return self._analysis

def calculate_model(self, *args, **kwargs):
raise NotImplementedError("calculateModel not implemented")
@property
def summary(self):
return self._summary

@property
def info(self):
return self._info

@abstractmethod
def calculate_model(self, *args, **kwargs):
#raise NotImplementedError("calculateModel not implemented")
pass

@abstractmethod
def fit(self, *args, **kwargs):
raise NotImplementedError("fit not implemented")
#raise NotImplementedError("fit not implemented")
pass

27 changes: 6 additions & 21 deletions easyCore/Objects/Job/Theory.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,23 @@
# SPDX-License-Identifier: BSD-3-Clause
# © 2021-2023 Contributors to the easyCore project <https://github.com/easyScience/easyCore

from typing import Any
from typing import List

from easyCore.Objects.ObjectClasses import BaseObj
from easyCore.Objects.ObjectClasses import Parameter


class TheoryBase(BaseObj):
"""
This virtual class allows for the creation of technique-specific Theory objects.
"""
def __init__(self, name: str, parameters: List[Parameter], *args, **kwargs):
def __init__(self, name: str, *args, **kwargs):
self._name = name
super(TheoryBase, self).__init__(name, *args, **kwargs)
self.parameters = parameters


# required dunder methods
def __str__(self):
return f"Theory: {self.name}"

def __call__(self, *args: Any, **kwds: Any) -> Any:
return super().__call__(*args, **kwds)

def __copy__(self) -> 'TheoryBase':
raise NotImplementedError("Copy not implemented")
#return super().__copy__()

def __deepcopy__(self, memo: Any) -> 'TheoryBase':
raise NotImplementedError("Deepcopy not implemented")
#return super().__deepcopy__(memo)

def __eq__(self, other: Any) -> bool:
raise NotImplementedError("Equality not implemented")
#return super().__eq__(other)

def as_dict(self, skip: list = []) -> dict:
this_dict = super(TheoryBase, self).as_dict(skip=skip)
return this_dict

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ exclude = [
[tool.ruff.format]
quote-style = "single"

[tool.ruff.per-file-ignores]
[tool.ruff.lint.per-file-ignores]
# allow asserts in test files
"*test_*.py" = ["S101"]

Expand Down

0 comments on commit df2a39c

Please sign in to comment.