from __future__ import absolute_import, print_function, unicode_literals

from wolframclient.utils.importutils import API

ast = API(
    Module="ast.Module",
    PyCF_ONLY_AST="ast.PyCF_ONLY_AST",
    Expr="ast.Expr",
    Expression="ast.Expression",
    FunctionDef="ast.FunctionDef",
    ClassDef="ast.ClassDef",
)

pytz = API(
    FixedOffset="pytz.FixedOffset",
    timezone="pytz.timezone",
    utc="pytz.utc",
    UnknownTimeZoneError="pytz.UnknownTimeZoneError",
)

json = API(
    dumps="json.dumps",
    dump="json.dump",
    loads="wolframclient.utils.json.loads",
    load="json.load",
    JSONDecodeError="json.decoder.JSONDecodeError",
)

zlib = API(compressobj="zlib.compressobj", decompressobj="zlib.decompressobj")

os = API(
Esempio n. 2
0
# -*- coding: utf-8 -*-

from __future__ import absolute_import, print_function, unicode_literals

from wolframclient.utils.importutils import API

pytz = API(
    FixedOffset='pytz.FixedOffset',
    timezone='pytz.timezone',
    utc='pytz.utc',
    UnknownTimeZoneError='pytz.UnknownTimeZoneError')

json = API(
    dumps='json.dumps',
    dump='json.dump',
    loads='wolframclient.utils.json.loads',
    load='json.load',
    JSONDecodeError='json.decoder.JSONDecodeError')

zlib = API(compressobj='zlib.compressobj', decompressobj='zlib.decompressobj')

os = API(
    X_OK='os.X_OK',
    access='os.access',
    expandvars='os.path.expandvars',
    expanduser='******',
    dirname='os.path.dirname',
    path_join='os.path.join',
    isfile='os.path.isfile',
    isdir='os.path.isdir',
    exists='os.path.exists',
Esempio n. 3
0
from __future__ import absolute_import, print_function, unicode_literals

from wolframclient.serializers.encoder import wolfram_encoder
from wolframclient.serializers.serializable import WLSerializable
from wolframclient.utils.importutils import API

__all__ = ["export", "WLSerializable", "wolfram_encoder"]

DEFAULT_FORMAT = "wl"

available_formats = API(
    wl="wolframclient.serializers.wl.WLSerializer",
    wxf="wolframclient.serializers.wxf.WXFSerializer",
)


def export(data, stream=None, target_format=DEFAULT_FORMAT, **options):
    """ Serialize input `data` to a target format.

    Input `data` can be any supported Python type, including :class:`list`, :class:`dict` or any serializable Python
    object.
    
    Serializable python objects are class extending :class:`~wolframclient.serializers.serializable.WLSerializable` and
    types declared in an encoder.

    The default format is :wl:`InputForm` string::

        >>> export(wl.Range(3))
        b'Range[3]'

    Specify WXF format by setting `target_format`::
from __future__ import absolute_import, print_function, unicode_literals

from functools import partial

from wolframclient.utils.importutils import API
from wolframwebengine.web.utils import is_coroutine_function

available_backends = API(
    aiohttp="wolframwebengine.web.aiohttp.generate_http_response",
    django="wolframwebengine.web.django.generate_http_response",
)


def get_backend(backend):
    if not backend in available_backends:
        raise ValueError(
            "Invalid backend %s. Choices are: %s"
            % (backend, ", ".join(available_backends.keys()))
        )
    return available_backends[backend]


def generate_http_response(session, backend):
    generator = get_backend(backend)

    def outer(func):

        if is_coroutine_function(func):

            async def inner(request, *args, **opts):
                return await generator(session, request, await func(request, *args, **opts))