Closed mikofski closed 8 years ago
Move data layer arg proposed changes from untracked layers.py
files to a new issue.
Summary of untracked files on disk:
layers-data-layers-args-A.py
is similar to layers-data-layers-args-B.py
but has proposed changes for rel_path
alt_path
instead of rel_path
alt_path
not explicitly in function signature for open()
in case the data layer doesn't use them, instead method has generic positional and keyword arguments.is_file_reader
True
then gets filename, path and alt_path
from argsOutputs
layer, move open()
method before add()
method_open()
for data layer, but why?--- Carousel\carousel\core\layers-data-layers-args-B.py
+++ Carousel\carousel\core\layers-data-layers-args-A.py
@@ -73,12 +73,12 @@
# get layer class definition from the module
self.classes[src_cls] = getattr(mod, src_cls)
- def load(self, relpath=None):
+ def load(self, alt_path=None):
"""
Load the layer from the model data. This method must be implemented by
each layer.
- :param relpath: alternate path if specified path is missing or ``None``
+ :param alt_path: alternate path if specified path is missing or ``None``
:raises: :exc:`~exceptions.NotImplementedError`
"""
raise NotImplementedError('load')
@@ -149,7 +149,7 @@
# add a place holder for the data source object when it's constructed
self.data_obj[data_source] = None
- def open(self, data_source, filename, path=None, rel_path=None):
+ def _open(self, data_source, *args, **kwargs):
"""
Open filename to get data for data_source.
@@ -160,13 +160,15 @@
:type filename: str
:param path: Path of file containting data. [../data]
:type path: str
- :param rel_path: relative path to model file
- """
- # default path for data is in ../data
+ :param alt_path: relative path to model file
+ """
+ # args include filename, path and alt_path for data sources with
+ # file readers
+ if self.classes[data_source].data_reader.is_file_reader:
+ filename, path, alt_path = args[:3]
if not path:
- path = rel_path
- else:
- path = os.path.join(rel_path, path)
+ # no path given use default path relative to model file
+ path = alt_path
# only update layer info if it is missing!
if data_source not in self.layer:
# update path and filename to this layer of the model
@@ -185,14 +187,16 @@
meta = [getattr(data_src_obj, m) for m in self.data._meta_names]
self.data.register(data_src_obj.data, *meta)
- def load(self, rel_path=None):
+ def load(self, path=None):
"""
Add data_sources to layer and open files with data for the data_source.
+
+ :param path: optional path to use if specified path is missing or None
"""
for k, v in self.layer.iteritems():
self.add(k, v['module'], v.get('package'))
if v.get('filename'):
- self.open(k, v['filename'], v.get('path'), rel_path)
+ self._open(k, v['filename'], v.get('path', path))
def edit(self, data_src, value):
"""
@@ -318,6 +322,9 @@
self.outputs = OutputRegistry()
# layers are initialized by the model
+ def open(self, output, module, package=None):
+ self.add(output, module, package=package)
+
def add(self, output, module, package=None):
"""
Add output to
@@ -330,9 +337,6 @@
meta = [getattr(out_src_obj, m) for m in self.outputs._meta_names]
self.outputs.register(out_src_obj.outputs, *meta)
- def open(self, output, module, package=None):
- self.add(output, module, package=package)
-
def load(self, _=None):
"""
Add output_source to layer.
@@ -356,15 +360,15 @@
"""
super(Simulations, self).add(sim, module, package)
- def open(self, sim_src, filename, path=None, rel_path=None):
+ def open(self, sim_src, filename, path=None, alt_path=None):
# default path for data is in ../simulations
if not path:
- path = rel_path
+ path = alt_path
else:
- path = os.path.join(rel_path, path)
+ path = os.path.join(alt_path, path)
filename = os.path.join(path, filename)
# call constructor of sim source with filename argument
- self.sim_obj[sim_src] = self.sim_src[sim_src](filename)
+ self.sim_obj[sim_src] = self.classes[sim_src](filename)
# register simulations in registry, the only reason to register an item
# is make sure it doesn't overwrite other items
sim_src_obj = self.sim_obj[sim_src]
@@ -372,10 +376,10 @@
self.simulations._meta_names]
self.simulations.register({sim_src: sim_src_obj}, *meta)
- def load(self, rel_path=None):
+ def load(self, alt_path=None):
"""
Add sim_src to layer.
"""
for k, v in self.layer.iteritems():
self.add(k, v['module'], v.get('package'))
- self.open(k, v['filename'], v.get('path'), rel_path)
+ self.open(k, v['filename'], v.get('path'), alt_path)
$ git diff 9771d87b45d9c460aef45c72e9d628085f7d1930:carousel/core/layers.py carousel/core/layers-data-layers-args-B.py
layers-data-layers-args-B.py
is same as 9771d87b45d9c460aef45c72e9d628085f7d1930
$ git diff 79c37f6d3cd79c683c0bc7da21f8a54741ff8efd:carousel/core/layers.py carousel/core/layers-79c37f6d3cd79c683c0bc7da21f8a54741ff8efd.py
layers-79c37f6d3cd79c683c0bc7da21f8a54741ff8efd.py
is same as 79c37f6d3cd79c683c0bc7da21f8a54741ff8efd