Exemplo n.º 1
0
import io
from matplotlib.backend_bases import GraphicsContextBase, FigureManagerBase, FigureCanvasBase
from matplotlib.figure import Figure
from fable.logs import log

_log = log('fab')

class FigureCanvas(FigureCanvasBase):
    pass

class FigureManager(FigureManagerBase):
    pass

def new_figure_manager(num, *args, **kwargs):
    FigureClass = kwargs.pop('FigureClass', Figure)
    thisFig = FigureClass(*args, **kwargs)
    return new_figure_manager_given_figure(num, thisFig)

def new_figure_manager_given_figure(num, figure):
    canvas = FigureCanvas(figure)
    manager = FigureManager(canvas, num)
    return manager

def show(fmt='svg', **kw):
    import matplotlib.pyplot as plt
    from fable.fab import plot

    formats = ('svg', 'png')
    if fmt not in formats:
        raise Exception('Format must be one of: ' + ', '.join(formats))
Exemplo n.º 2
0
import asyncio
import signal
import html
import sys
import os
from fable.back.repl_proto import Events, encode, decode
from fable.logs import log

_PYTHON = sys.executable
_REPL = os.path.join(*os.path.split(__file__)[:-1], 'repl.py')

_shells = {}
_glock = asyncio.Lock()

_log = log('backend')


class Shell:
    def __init__(self, name, user, buffsize=1024):
        self._proc = None
        self._user = user
        self._name = name
        self._hidden = False
        self._lock = asyncio.Lock()
        self._buff = b''

        # run state
        self._running = False
        self._interrupting = False
        self._nointerrupt = False
Exemplo n.º 3
0
import os
import sys
import json
import signal
import argparse

from fable.back.interpreter import Interpreter
from fable.back.repl_proto import Events, encode, decode
from fable.logs import log

_log = log('repl')


class IO:
    def __init__(self, inp, out):
        self.inp = inp
        self.out = out

    def write(self, event, data, urgent=False):
        _log.debug('Writing', event, data)
        _log.debug('Length', event, len(data))
        print(encode(event, data), file=self.out, flush=urgent)

    def read(self, size=-1):
        print(encode(Event.INP), file=self.out, flush=True)
        return decode(self.inp.readline())

    def flush(self):
        self.out.flush()