Skip to content

Commit

Permalink
New Formatted, and cleanups to some arguments.
Browse files Browse the repository at this point in the history
  • Loading branch information
rec committed Jan 5, 2015
1 parent 10103c7 commit c89567d
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 16 deletions.
20 changes: 10 additions & 10 deletions code/python/echomesh/base/MergeSettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,28 +34,28 @@
"""

class MergeSettings(object):
def __init__(self, settings):
self.settings = settings
def __init__(self, args):
self.args = args
self._read()

def _read(self):
self._read_file_settings()
self.arg_settings = self._assignment_to_settings(
self.settings, _ARGUMENT_ERROR)
self.arg_settings = self._args_to_settings(
self.args, _ARGUMENT_ERROR)
return self.recalculate()

def recalculate(self):
self.settings = None
self.args = None
self.changed = {}
for _, settings in self.file_settings:
self.settings = Merge.merge(self.settings, *settings)
self.args = Merge.merge(self.args, *settings)
self.changed = Merge.merge(self.changed, *settings[2:])

arg = copy.deepcopy(self.arg_settings)
clean_arg = Merge.difference_strict(arg, self.changed)
self.settings = Merge.merge_for_settings(self.settings, clean_arg)
self.args = Merge.merge_for_settings(self.args, clean_arg)

return self.settings
return self.args

def has_changes(self):
return any(settings[2] for (_, settings) in self.file_settings)
Expand All @@ -68,7 +68,7 @@ def assign(self, args, index=2): # default is 'master'

while len(settings) < 3:
settings.append({})
assignments = self._assignment_to_settings(args, _ASSIGNMENT_ERROR)
assignments = self._args_to_settings(args, _ASSIGNMENT_ERROR)
settings[2] = Merge.merge(settings[2], assignments)
self.recalculate()
return assignments
Expand Down Expand Up @@ -122,7 +122,7 @@ def _read_file_settings(self):
settings.append({})
self.file_settings.append([f, settings])

def _assignment_to_settings(self, args, error):
def _args_to_settings(self, args, error):
args = ' '.join(args)
settings = {}
base_settings = self.file_settings[0][1][0]
Expand Down
8 changes: 4 additions & 4 deletions code/python/echomesh/base/Settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from echomesh.base import DataFile
from echomesh.base import Join
from echomesh.base import MergeSettings
from echomesh.base.MergeSettings import MergeSettings
from echomesh.base import Name
from echomesh.base import Path

Expand All @@ -28,14 +28,14 @@ def _make(name, tags, project, show_error):
Path.set_project_path(project_path=project, show_error=show_error)

DataFile.compute_command_path(force=True)
return MergeSettings.MergeSettings(args)
return MergeSettings(args)

# Read a settings file with a given name, tags, and project.
# First, make a settings with the default information.
merge_settings = _make(None, [], None, False)

# Now, use the name, tags and project to get the correct configuration.
get = merge_settings.settings.get
get = merge_settings.args.get

name = get('name') or Name.lookup(get('map', {}).get('name', {}))
tags = get('tag') or Name.lookup(get('map', {}).get('tag', {})) or []
Expand All @@ -60,7 +60,7 @@ def update_clients():
def get_settings():
if not MERGE_SETTINGS:
read_settings()
return MERGE_SETTINGS.settings
return MERGE_SETTINGS.args

def get(*parts):
settings = get_settings()
Expand Down
13 changes: 13 additions & 0 deletions code/python/echomesh/util/Importer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from __future__ import absolute_import, division, print_function, unicode_literals

import importlib

def importer(classpath):
try:
# Try to import a module.
return importlib.import_module(classpath)
except ImportError:
# Try to import a function out of a module.
parts = classpath.split('.')
function = classpath.pop()
return getattr(importlib.import_module(classpath), function)
5 changes: 3 additions & 2 deletions code/python/echomesh/util/string/Formatted.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ class Formatted(object):
string suitable for use in format()."""

FORMAT = ''
MEMBERS = []
FORMAT_MEMBERS = []
FORMAT_WITH_CLASS = True

def _formatted(self):
if not self.FORMAT:
self.FORMAT = ' '.join('%s={%s}' % (m, m) for m in self.MEMBERS)
self.FORMAT = ' '.join(
'%s={%s}' % (m, m) for m in self.FORMAT_MEMBERS)
return self.FORMAT.format(**self.__dict__)

def __str__(self):
Expand Down

0 comments on commit c89567d

Please sign in to comment.