Exemplo n.º 1
0
Arquivo: mad.py Projeto: mfiers/kea2
from collections import defaultdict
import os
from pprint import pprint
import re
import tempfile
import shlex
import time

from path import Path

from kea2.util import register_hook
from kea2.log import get_logger

lg = get_logger(__name__, 'info')

def add_mad_stuff(meta):

    iodata = meta['_io']
    if len(iodata) == 0:
        return

    to_add = []
    for_ta = defaultdict(list)

    for cat in iodata:
        for fgroup in iodata[cat]:
            for fname in iodata[cat][fgroup]:
                for_ta[{'i': 'input',
                        'o': 'output',
                        'm': 'misc',
Exemplo n.º 2
0
Arquivo: cli.py Projeto: mfiers/kea2
import re
import shlex
import sys
import uuid

import yaml
from path import Path

from jinja2 import Environment

from kea2 import render
from kea2.log import get_logger
from kea2.util import run_hook, register_hook, get_recursive_dict
from kea2 import util

lg = get_logger('k2', 'warning')

JENV = Environment()
util.register_jinja2_filters(JENV)

RE_PARFIND = re.compile('(?<!\{)\{\s*\*\s*([A-Za-z_]\w*)?\s*\}(?!\})')


def _get_base_argsparse(add_template=True):
    parser = argparse.ArgumentParser()
    parser.add_argument('-x', '--executor', default='simple')
    parser.add_argument('-v', '--verbose', action='count', default=0)
    parser.add_argument('-q', '--quiet', action='count', default=0)
    parser.add_argument('-X', '--execute', action='store_const', help='run immediately',
                        const='run', dest='execute')
    parser.add_argument('-N', '--do-not-execute', action='store_const', help='do not run',
Exemplo n.º 3
0
Arquivo: mad.py Projeto: mfiers/kea2
from collections import defaultdict
import os
from pprint import pprint
import re
import tempfile
import shlex
import time

from path import Path

from kea2.util import register_hook
from kea2.log import get_logger

lg = get_logger(__name__, "info")


def add_mad_stuff(meta):

    iodata = meta["_io"]
    if len(iodata) == 0:
        return

    to_add = []
    for_ta = defaultdict(list)

    for cat in iodata:
        for fgroup in iodata[cat]:
            for fname in iodata[cat][fgroup]:
                for_ta[{"i": "input", "o": "output", "m": "misc", "x": "executable", "d": "db"}[cat]].append(
                    "%s:%s" % (fgroup, fname)
                )
Exemplo n.º 4
0
Arquivo: inout.py Projeto: mfiers/kea2
import copy
import functools
import os
import re
import sh
from path import Path

from kea2.util import register_hook
from kea2.log import get_logger

lg = get_logger(__name__, 'warning')

find_inout = re.compile(r'\{([imoxd])(?: ([A-Za-z][\w]*))?\}')


def parse_inout(meta):

    #first - start with the parameter descriptions
    for pname, pdata in meta['_parameters'].items():
        if not 'io' in pdata:
            continue

        category = pdata['io']
        if ':' in category:
            category, name = category.split(':')
        else:
            name = dict(
                i='input',
                o='output',
                x='executable',
Exemplo n.º 5
0
from logging import INFO
import re
import shlex

from kea2.log import get_logger

lg = get_logger('k2.render')
lg.setLevel(INFO)

re_find_param_r = (r'#p\s+'
                   r'(?P<name>[A-Za-z][A-Za-z0-9_]*)'
                   r'([ \t]+(?P<keywords>[^\n]+))?'
                   r'\n')

re_find_param_embed_r = (r'{p\s+'
                         r'(?P<name>[A-Za-z][A-Za-z0-9_]*)'
                         r'([ \t]+(?P<keywords>[^\n]+))?'
                         r'\n')

re_find_param = re.compile(re_find_param_r)

ALLOWED_PARAMETER_FLAGS = """
    opt
    int     float
    hide
""".split()


def find_params(meta):

    src = meta['_src']
Exemplo n.º 6
0
from itertools import chain
import os
from pprint import pprint
import re
import time

from path import Path

from kea2.util import register_hook
from kea2.log import get_logger

lg = get_logger(__name__, 'info')

find_inout = re.compile(r'{([ioxd])(?: ([A-Za-z][\w]*))?}')

def file_time_report(ot, idxt):
    oldest_output = min(ot.values())
    newest_input = max(idxt.values())

    fmt = lambda x: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(x))

    print("# newest input  :", fmt(newest_input))
    print("# oldest output :", fmt(oldest_output))

    for (c, g, f), t in ot.items():
        flag = '>' if t < newest_input else ' '
        print('%s %s %-10s %s %s' % (flag, c, g, fmt(t), f))
    for (c, g, f), t in idxt.items():
        flag = '<' if t > oldest_output else ' '
        print('%s %s %-10s %s %s' % (flag, c, g, fmt(t), f))