...
Code Block | ||||
---|---|---|---|---|
| ||||
def get_slice(self, ids_name, time_requested, interpolation_method, occurrence=0): # idsName (e.g. 'equilibrium') return ids |
Any other method is needed to ba added to DBEntry class?
def delete(self, ids_name, occurrence=0):
IDS superclass
IDSBase
- Parent class for all classes representing particular IDSes.
Class methods (aka "static")
def get_ids(cls, ids_name):
. For internal use only - it should not be called by users.
IDS class
Warning | ||
---|---|---|
| ||
Backward compatibility, understood as possibility of using 'old' and 'new' approach at the same time is kept: All 'old' scripts will work - no modifications needed Currently all methods use context kept in IDS that was a reason of many problems. New API is designed to overcome this issue. Keeping compatibility means that methods still have to be able to use context stored in IDS that is error prone. All unwanted, messy methods operating on context stored (setCtx, etc) must be kept Compatibility can be also ensured by introducing new names of methods - |
Class methods (aka "static")
Code Block |
---|
def get_max_occurrences(cls): def read_time_mode(self, ctx): def read_time(self, ctx): |
IDS storing / reading
DBEntry
is used to provide explicitly context to methods. This parameter is optional to keep backward compatibility....
...
Code Block |
---|
def put(self, occurrence=0, db_entry=None): def get(self, occurrence=0, db_entry=None): def putSlice(self, occurrence=0, db_entry=None): def getSlice(self, time_requested, interpolation_method, occurrence=0, db_entry=None): |
Additional methods
def copy_values(self, ids):
def delete_data(self, occurrence=0, db_entry=None ):
def partial_get(self, dataPath, occurrence=0, db_entry=None):
def get_field(self, dataPath, occurrence=0, db_entry=None): |
"Messy" methods
... that are not in line with proposed design but they must be kept to ensure backward compatibility.
...
Backward compatibility
PUT | GET | ||||
---|---|---|---|---|---|
|
|
...
PUT | GET | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
...
PUT | GET | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
...
IDS
...
Suggested method:
Code Block |
---|
import imas
ids_wall = imas.wall() |
It is also possible to write:
Code Block |
---|
import imas
from imas.wall import wall
ids_wall = wall() |
or
Code Block |
---|
import imas
ids_wall = imas.wall.wall() |
IDS names
Code Block |
---|
ids = db_entry.get('pf_active') |
...
EQUILIBRIUM = 'equilibrium'
WALL = 'wall' etc etc
Code Block |
---|
class IDSName(enum):
AMNS_DATA = 'amns_data'
......
WAVES = 'waves' |
Code Block |
---|
from ids_names import IDSName ids = db_entry.get(IDSName.WALL) |
...