gnome.gnomeobject¶
Attributes¶
Classes¶
Mixin for including a logger |
|
Class to store and handle references during saving/loading. |
|
A class for assigning a unique ID for an object |
Functions¶
|
object type must be a string in the gnome namespace: |
|
convenience function for initializing a logger with an object |
|
Decorator to tag a function or class that needs a full function signature. |
|
Looks through the class for tagged functions, then builds and assigns |
Module Contents¶
- gnome.gnomeobject.log¶
- gnome.gnomeobject.allowzip64 = False¶
- gnome.gnomeobject.SAVEFILE_VERSION = '5'¶
- gnome.gnomeobject.class_from_objtype(obj_type)¶
- object type must be a string in the gnome namespace:
gnome.xxx.xxx
- gnome.gnomeobject.init_obj_log(obj, setLevel=logging.INFO)¶
convenience function for initializing a logger with an object the logging.getLogger() will always return the same logger so calling this multiple times for same object is valid.
By default adds a NullHandler() so we don’t get errors if application using PyGnome hasn’t configured a logging.
- class gnome.gnomeobject.AddLogger(*args, **kwargs)¶
Bases:
object
Mixin for including a logger
- property logger¶
define attribute ‘_log’. If it doesn’t exist, define it here. This is so we don’t have to add it to all PyGnome classes - this property makes the logger available to each object. - default log_level is INFO
- class gnome.gnomeobject.Refs¶
Bases:
dict
Class to store and handle references during saving/loading. Provides some convenience functions
Initialize self. See help(type(self)) for accurate signature.
- gen_default_name(obj)¶
Goes through the dict, finds all objects of obj.obj_type stored, and provides a unique name by appending length+1
- gnome.gnomeobject.combine_signatures(cls_or_func)¶
Decorator to tag a function or class that needs a full function signature. CAUTION: Do not use this decorator on functions that do not pass kwargs up to super, or do so after alteration. Doing so will definitely give you a wrong signature. Use with care, verify your work.
This may not work when applied to classes if they get imported in a particular sequence. If this occurs try applying this decorator to the __init__ directly.
- gnome.gnomeobject.create_signatures(cls, dct)¶
Looks through the class for tagged functions, then builds and assigns signatures. Uses the MRO to find ancestor functions and merges the signatures.
- class gnome.gnomeobject.GnomeObjMeta¶
Bases:
type
- class gnome.gnomeobject.GnomeId(name=None, _appearance=None, *args, **kwargs)¶
Bases:
AddLogger
A class for assigning a unique ID for an object
- make_default_refs = True¶
- RTOL = 1e-05¶
- ATOL = 1e-38¶
- array_types¶
- property all_array_types¶
Returns all the array types required by this object
If this object contains or is composed of other gnome objects (Spill->Substance->Initializers for example) then override this function to ensure all array types get presented at the top level. See
Spill
for an example
- property id¶
Override this method for more exotic forms of identification.
- Returns:
a unique ID assigned during construction
- property obj_type¶
- property name¶
define as property in base class so all objects will have a name by default
- gather_ref_as(src, refs)¶
Gathers refs from single or collection of GnomeId objects. :param src: GnomeId object or collection of GnomeId :param refs: dictionary of str->list of GnomeId :returns {‘ref1’: [list of GnomeId], ‘ref2 : [list of GnomeId], …}
- validate_refs(refs=['wind', 'water', 'waves'])¶
level is the logging level to use for messages. Default is ‘warning’ but if called from prepare_for_model_run, we want to use error and raise exception.
- validate()¶
All pygnome objects should be able to validate themselves. Many py_gnome objects reference other objects like wind, water, waves. These may not be defined when object is created so they can be None at construction time; however, they should reference valid objects when running in the model. If make_default_refs is True, then object is valid because the model will set these up at runtime. To raise an exception for missing references at runtime, directly call validate_refs(level=’error’)
‘wind’, ‘water’, ‘waves’ attributes also have special meaning. An object containing this attribute references the corresponding object.
Logs warnings:
- Returns:
a tuple of length two containing: (a list of messages that were logged, isvalid bool) If any references are missing and make_default_refs is False, object is not valid
- classmethod new_from_dict(dict_)¶
creates a new object from dictionary
This is base implementation and can be over-ridden by classes using this mixin
- to_dict(json_=None)¶
Returns a dictionary representation of this object. Uses the schema to determine which attributes are put into the dictionary. No extra processing is done to each attribute. They are presented as is.
The
json_
parameter is ignored in this base class. ‘save’ is passed in when the schema is saving the object. This allows an override of this function to do any custom stuff necessary to prepare for saving.
- update_from_dict(dict_, refs=None)¶
- update(*args, **kwargs)¶
- serialize(options={})¶
Returns a json serialization of this object (“webapi” mode only)
- classmethod deserialize(json_, refs=None)¶
classmethod takes json structure as input, deserializes it using a colander schema then invokes the new_from_dict method to create an instance of the object described by the json schema.
We also need to accept sparse json objects, in which case we will not treat them, but just send them back.
- save(saveloc='.', refs=None, overwrite=True)¶
Save object state as json to user specified saveloc
- Parameters:
saveloc –
A directory, file path, open zipfile.ZipFile, or None. If a directory, it will place the zip file there, overwriting if specified.
If a file path, it will write the file there as follows:
If the file does not exist, it will create the zip archive there. If the saveloc is a zip file or
zipfile.Zipfile
object and overwrite is False, it will append there. Otherwise, it will overwrite the file if allowed.If set to None, this function will instead return an open
zipfile.Zipfile
object linked to a temporary file. The zip file will be named [object.name].zip if a directory is specifiedrefs – dictionary of references to objects
overwrite – If True, overwrites the file at the saveloc
- Returns (obj_json, saveloc, refs):
obj_json
is the json that is written to this object’s file in the zipfile. For example if saving a Model named Model1, obj_json will contain the contents of the Model1.json in the save file.saveloc
will be the string path passed in EXCEPT if None was passed in. In this case, it will be an openzipfile.ZipFile
based on a temporary file.refs
will be a dict containing all the objects that were saved in the save file, keyed by object id. It will also contain the reference to the object that called.save
itself.
- classmethod load(saveloc='.', filename=None, refs=None)¶
Load an instance of this class from an archive or folder
- Parameters:
saveloc – Can be an open zipfile.ZipFile archive, a folder, or a filename. If it is an open zipfile or folder, it must contain a .json file that describes an instance of this object type. If ‘filename’ is not specified, it will load the first instance of this object discovered. If a filename, it must be a zip archive or a json file describing an object of this type.
filename – If saveloc is an open zipfile or folder, this indicates the name of the file to be loaded. If saveloc is a filename, this parameter is ignored.
refs – A dictionary of id -> object instances that will be used to complete references, if available.