From b2788f8656811428532af2696e2e44792470374f Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Tue, 31 Mar 2020 17:39:13 +0100 Subject: [PATCH] move cython shadow module to fontTools.misc --- Lib/fontTools/cu2qu.py | 14 +------------- Lib/fontTools/misc/cython.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 Lib/fontTools/misc/cython.py diff --git a/Lib/fontTools/cu2qu.py b/Lib/fontTools/cu2qu.py index 767a683e8..4710f3c6f 100644 --- a/Lib/fontTools/cu2qu.py +++ b/Lib/fontTools/cu2qu.py @@ -19,19 +19,7 @@ try: import cython except ImportError: # if cython not installed, use mock module with no-op decorators and types - from types import SimpleNamespace - - def _empty_decorator(x): - return x - - cython = SimpleNamespace() - cython.compiled = False - for name in ("double", "complex", "int"): - setattr(cython, name, None) - for name in ("cfunc", "inline"): - setattr(cython, name, _empty_decorator) - cython.locals = lambda **_: _empty_decorator - cython.returns = lambda _: _empty_decorator + from fontTools.misc import cython import math diff --git a/Lib/fontTools/misc/cython.py b/Lib/fontTools/misc/cython.py new file mode 100644 index 000000000..0ba659f60 --- /dev/null +++ b/Lib/fontTools/misc/cython.py @@ -0,0 +1,25 @@ +""" Exports a no-op 'cython' namespace similar to +https://github.com/cython/cython/blob/master/Cython/Shadow.py + +This allows to optionally compile @cython decorated functions +(when cython is available at built time), or run the same code +as pure-python, without runtime dependency on cython module. + +We only define the symbols that we use. E.g. see fontTools.cu2qu +""" + +from types import SimpleNamespace + +def _empty_decorator(x): + return x + +compiled = False + +for name in ("double", "complex", "int"): + globals()[name] = None + +for name in ("cfunc", "inline"): + globals()[name] = _empty_decorator + +locals = lambda **_: _empty_decorator +returns = lambda _: _empty_decorator