Esempio n. 1
0
def make_root(score_names, table):
    result = {}
    for score_file, name in score_names:
        resolved_file = DataFile.resolve('score', score_file)
        if not resolved_file:
            LOGGER.error('No such score file: "%s".',
                         DataFile.base_file('score', score_file))
            continue
        elements = Yaml.read(resolved_file)
        description = {'elements': elements, 'type': 'score'}
        parts = resolved_file.split('/')
        final_file = '/'.join([parts[1]] + parts[3:])

        try:
            element = Root(description, final_file)
        except Exception:
            LOGGER.error("\nError when reading score file %s", score_file)
            continue

        name = os.path.splitext(name or score_file)[0]
        name = UniqueName.unique_name(name, table)
        result[name] = element
        element.name = name

    return result
Esempio n. 2
0
    def _make(name, tags, project, show_error):
        Name.set_name(name)
        Name.set_tags(tags)
        Path.set_project_path(project_path=project, show_error=show_error)

        DataFile.compute_command_path(force=True)
        return MergeSettings(args)
Esempio n. 3
0
    def _make(name, tags, project, show_error):
        Name.set_name(name)
        Name.set_tags(tags)
        Path.set_project_path(project_path=project, show_error=show_error)

        DataFile.compute_command_path(force=True)
        return MergeSettings(args)
Esempio n. 4
0
def resolve_extensions(data):
    extensions = set()
    datas = [data]

    while True:
        extension = data.get('inherit')
        if not extension:
            break

        try:
            extension, data = DataFile.load_resolve('score', extension)
        except Exception as e:
            raise Exception("Couldn't find extension for %s: %s" %
                            (extension, str(e)))

        if extension in extensions:
            raise Exception('Infinite circular extension for %s' % extension)

        if len(data) > 1:
            LOGGER.error("More than one element in extension %s", extension)
        data = data[0]

        datas.append(data)
        extensions.add(extension)

    result = {}
    for data in reversed(datas):
        result.update(data)
    if extensions:
        del result['inherit']

    return result
Esempio n. 5
0
def resolve_extensions(data):
    extensions = set()
    datas = [data]

    while True:
        extension = data.get('inherit')
        if not extension:
            break

        try:
            extension, data = DataFile.load_resolve('score', extension)
        except Exception as e:
            raise Exception("Couldn't find extension for %s: %s" %
                            (extension, str(e)))

        if extension in extensions:
            raise Exception('Infinite circular extension for %s' % extension)

        if len(data) > 1:
            LOGGER.error("More than one element in extension %s", extension)
        data = data[0]

        datas.append(data)
        extensions.add(extension)

    result = {}
    for data in reversed(datas):
        result.update(data)
    if extensions:
        del result['inherit']

    return result
Esempio n. 6
0
def _get_api():
    global API
    if not API:
        try:
            auth = DataFile.load('auth.yml')[0]
        except:
            raise Exception('Couldn\'t get twitter authorization')
        else:
            API = twitter.Api(**auth['twitter'])
    return API
Esempio n. 7
0
def _get_api():
    global API
    if not API:
        try:
            auth = DataFile.load('auth.yml')[0]
        except:
            raise Exception('Couldn\'t get twitter authorization')
        else:
            API = twitter.Api(**auth['twitter'])
    return API
Esempio n. 8
0
    def __init__(self, name, suffix):
        if suffix.startswith('.'):
            self.suffix = suffix
        else:
            self.suffix = '.' + suffix

        name_file = DataFile.clean('cache', name)
        self.cachedir = os.path.abspath(os.path.join(*name_file))
        MakeDirs.makedirs(self.cachedir)
        self.manifest_file = os.path.join(self.cachedir, MANIFEST_NAME)
        self.manifest = Merge.merge(*Yaml.read(self.manifest_file))
Esempio n. 9
0
    def __init__(self, name, suffix):
        if suffix.startswith('.'):
            self.suffix = suffix
        else:
            self.suffix = '.' + suffix

        name_file = DataFile.clean('cache', name)
        self.cachedir = os.path.abspath(os.path.join(*name_file))
        MakeDirs.makedirs(self.cachedir)
        self.manifest_file = os.path.join(self.cachedir, MANIFEST_NAME)
        self.manifest = Merge.merge(*Yaml.read(self.manifest_file))
Esempio n. 10
0
def make_pattern(element, description, name=None, patterns=None):
    if not isinstance(description, dict):
        name = description
        pattern = (patterns or {}).get(name)
        if pattern:
            return pattern
        description = DataFile.load('pattern', name)[0]

    entry = REGISTRY.get_from_description(description)
    name = name + entry.name if name else entry.name
    return entry.function(description, element, name)
Esempio n. 11
0
    def _read_file_settings(self):
        self.file_settings = []
        base_settings = None

        for f in reversed(DataFile.expand_settings()):
            settings = Yaml.read(f, 'settings')
            for c in settings:
                if base_settings:
                    base_settings = Merge.merge_for_settings(base_settings, c)
                else:
                    base_settings = copy.deepcopy(c)
            while len(settings) < 3:
                settings.append({})
            self.file_settings.append([f, settings])
Esempio n. 12
0
    def _read_file_settings(self):
        self.file_settings = []
        base_settings = None

        for f in reversed(DataFile.expand_settings()):
            settings = Yaml.read(f, 'settings')
            for c in settings:
                if base_settings:
                    base_settings = Merge.merge_for_settings(base_settings, c)
                else:
                    base_settings = copy.deepcopy(c)
            while len(settings) < 3:
                settings.append({})
            self.file_settings.append([f, settings])
Esempio n. 13
0
def make_root(score_names, table):
    result = {}
    for score_file, name in score_names:
        resolved_file = DataFile.resolve("score", score_file)
        if not resolved_file:
            LOGGER.error('No such score file: "%s".', DataFile.base_file("score", score_file))
            continue
        elements = Yaml.read(resolved_file)
        description = {"elements": elements, "type": "score"}
        parts = resolved_file.split("/")
        final_file = "/".join([parts[1]] + parts[3:])

        try:
            element = Root(description, final_file)
        except Exception:
            LOGGER.error("\nError when reading score file %s", score_file)
            continue

        name = os.path.splitext(name or score_file)[0]
        name = UniqueName.unique_name(name, table)
        result[name] = element
        element.name = name

    return result
Esempio n. 14
0
 def get_output(self, name):
     with self.lock:
         output = self.outputs.setdefault(name, [None, 1])
         if output[0]:
             output[1] += 1
         else:
             if name:
                 try:
                     data = DataFile.load('output', name)
                 except:
                     try:
                         from echomesh.output.Registry import REGISTRY
                         entry = REGISTRY.entry(name)
                         data = {'type': entry.name}
                     except:
                         del self.outputs[name]
                         raise Exception('No output named "%s".' % name)
             else:
                 data = None
             output[0] = _SingleOutput(name, data, self)
             self.outputs[name] = output
         return output[0]
Esempio n. 15
0
 def get_output(self, name):
     with self.lock:
         output = self.outputs.setdefault(name, [None, 1])
         if output[0]:
             output[1] += 1
         else:
             if name:
                 try:
                     data = DataFile.load('output', name)
                 except:
                     try:
                         from echomesh.output.Registry import REGISTRY
                         entry = REGISTRY.entry(name)
                         data = {'type': entry.name}
                     except:
                         del self.outputs[name]
                         raise Exception('No output named "%s".' % name)
             else:
                 data = None
             output[0] = _SingleOutput(name, data, self)
             self.outputs[name] = output
         return output[0]
Esempio n. 16
0
def contexts(_):
    parts = DataFile.named_paths()
    con = ('  %s:\n    %s' % (x, os.path.abspath(y)) for x, y in parts)
    LOGGER.info('%s\n', '\n'.join(con))
Esempio n. 17
0
def contexts(_):
    parts = DataFile.named_paths()
    con = ('  %s:\n    %s' % (x, os.path.abspath(y)) for x, y in parts)
    LOGGER.info('%s\n', '\n'.join(con))
Esempio n. 18
0
def settings(_, scope, cfg):
    f = DataFile.settings_file(scope)
    settings = Yaml.read(f) + [cfg]
    Yaml.write(f, Merge.merge(*settings))
    # TODO: needs to propagate!
    LOGGER.info('Changing settings for %s', scope)
Esempio n. 19
0
def settings(_, scope, cfg):
    f = DataFile.settings_file(scope)
    settings = Yaml.read(f) + [cfg]
    Yaml.write(f, Merge.merge(*settings))
    # TODO: needs to propagate!
    LOGGER.info('Changing settings for %s', scope)