Example #1
0
    def __init__(self, G=None, persist=None):
        self.logger = log.get_logger('api')
        if G is not None:
            self.G, self.filename = G, None
        else:
            self.G, self.filename = self.load_graph(persist)

        self.Node = FileNodeAPI(self.G, self.logger, filename=self.filename)
        self.Edge = FileEdgeAPI(self.G, self.logger, filename=self.filename)

        # Save the graph before closing
        if persist:
            atexit.register(_save, self.G, self.filename)
Example #2
0
File: cli.py Project: jad-b/atomic
    def __init__(self, api, out=sys.stdout):
        """Initialize a Recator instance.

        No action is taken until :meth:`~.Reactor.setup` is invoked.

        Arguments:
            api: Backing API.
            out (:obj:file): File-like object; defaults to :attr:`sys.stdout`.

        Attributes:
            api: Backing API.
            file (:obj:file): File-like object; defaults to :attr:`sys.stdout`.
            logger (:class:`logging.Logger`): CLI logger.
            parser (:class:`argparse.ArgumentParser`): Argument parser.
        """
        self.api = api
        self.logger = log.get_logger("cli")
        self.out = out
Example #3
0
 def __init__(self, start=1):
     self.logger = log.get_logger('api')
     self.logger.debug("Initializing serial to %d", start)
     self._index = start
Example #4
0
 def __init__(self, reactor):
     super().__init__()
     self.reactor = reactor
     self.logger = log.get_logger('valence')
Example #5
0
import bs4
import mistune
from bs4 import BeautifulSoup

from atomic.utils.log import get_logger


# key1=string key2=multi-word string...
PARSE_KEY_VALUE_RE = re.compile(
    r'\b([^\s]+)\s*=\s*([^=]*)(?=\s+\w+\s*=|$)')
# <src> <dest> <type> [key=value]...
PARSE_LINK_ARGS_RE = re.compile(
    r'(?P<src>\d+)\s+(?P<dest>\d+)\s+(?:type=)?(?P<type>\w+)\s*(?P<kwargs>.*)')

logger = get_logger('atomic')


def parse_key_values(s):
    """Parse key-value pairs from 'key1=string key2=multi-word string ...'"""
    return {m.group(1): m.group(2)
            for m in PARSE_KEY_VALUE_RE.finditer(s)}


def parse_non_kv(s):
    """Parse _up_ to the first key=value; 'cats k=v' returns 'cats'."""
    m = PARSE_KEY_VALUE_RE.search(s)
    if m is None:
        return s
    return s[:m.start()].strip()
Example #6
0
import json
import os

import networkx as nx
from colorama import Fore, Style
from networkx.readwrite import json_graph

from atomic.darkmatter import api
from atomic.errors import AtomicError
from atomic.graph import graph, serial
from atomic.utils import log


DEFAULT_FILENAME = os.path.expanduser('~/atomic.json')

_logger = log.get_logger('atomic')


def _load(filename=DEFAULT_FILENAME):
    """Load the persisted :class:`networkx.MultiDiGraph`."""
    try:
        with open(filename) as f:
            data = json.load(f)
            _logger.debug("Loaded %s", filename)
            return json_graph.node_link_graph(data, directed=True,
                                              multigraph=False)
    except FileNotFoundError:
        _logger.debug("No graph file found; instantiating")
        return nx.DiGraph()