Skip to content

Support MacOS (Python 3.9) #28

@ybnd

Description

@ybnd
  • Tested with Python 3.9, but no 3.9-specific issues popped up
  • Deployment scripts fail
  • Backend fails due to cairo
    2021-01-20 12:31:43,948 - INFO - shapeflow.server - serving on http://127.0.0.1:7951
    2021-01-20 12:31:44,554 - INFO - shapeflow.server - opening a browser window...
    ERROR:shapeflow.server:Exception on /favicon.ico [GET]
    Traceback (most recent call last):
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 2447, in wsgi_app
        response = self.full_dispatch_request()
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1952, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1821, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise
        raise value
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1950, in full_dispatch_request
        rv = self.dispatch_request()
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1936, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 94, in _get_file
        return self.get_file(file)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 175, in get_file
        raise FileNotFoundError
    FileNotFoundError
    2021-01-20 12:31:45,512 - WARNING - waitress.queue - Task queue depth is 1
    2021-01-20 12:31:45,583 - ERROR - shapeflow.server - 'get_settings' - OSError: no library called "cairo" was found no library called "libcairo-2" was found cannot load library 'libcairo.so.2': dlopen(libcairo.so.2, 2): image not found cannot load library 'libcairo.2.dylib': dlopen(libcairo.2.dylib, 2): image not found cannot load library 'libcairo-2.dll': dlopen(libcairo-2.dll, 2): image not found
    2021-01-20 12:31:45,583 - ERROR - shapeflow.server - 'stop_events' - ImportError: cannot import name 'load' from 'shapeflow.main' (/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/main.py)
    2021-01-20 12:31:45,584 - ERROR - shapeflow.server - 'schemas' - ImportError: cannot import name 'load' from 'shapeflow.main' (/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/main.py)
    2021-01-20 12:31:45,584 - ERROR - shapeflow.server - 'va/state' - ImportError: cannot import name 'load' from 'shapeflow.main' (/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/main.py)
    ERROR:shapeflow.server:Exception on /api/get_settings [GET]
    Traceback (most recent call last):
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 2447, in wsgi_app
        response = self.full_dispatch_request()
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1952, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1821, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise
        raise value
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1950, in full_dispatch_request
        rv = self.dispatch_request()
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1936, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 98, in _call_api
        return self.call_api(address)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 245, in call_api
        raise e
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 224, in call_api
        result = self.api.dispatch(address, **kwargs)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 285, in api
        from shapeflow.main import load
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/main.py", line 21, in <module>
        from OnionSVG import check_svg
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/OnionSVG/__init__.py", line 2, in <module>
        import cairosvg as csvg
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/cairosvg/__init__.py", line 26, in <module>
        from . import surface  # noqa isort:skip
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/cairosvg/surface.py", line 9, in <module>
        import cairocffi as cairo
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/cairocffi/__init__.py", line 48, in <module>
        cairo = dlopen(
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/cairocffi/__init__.py", line 45, in dlopen
        raise OSError(error_message)  # pragma: no cover
    OSError: no library called "cairo" was found
    no library called "libcairo-2" was found
    cannot load library 'libcairo.so.2': dlopen(libcairo.so.2, 2): image not found
    cannot load library 'libcairo.2.dylib': dlopen(libcairo.2.dylib, 2): image not found
    cannot load library 'libcairo-2.dll': dlopen(libcairo-2.dll, 2): image not found
    ERROR:shapeflow.server:Exception on /api/stop_events [POST]
    Traceback (most recent call last):
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 2447, in wsgi_app
        response = self.full_dispatch_request()
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1952, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1821, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise
        raise value
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1950, in full_dispatch_request
        rv = self.dispatch_request()
      File "/Users/yura/temp/test-shapeflow/shapeflow/.venv/lib/python3.9/site-packages/flask/app.py", line 1936, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 98, in _call_api
        return self.call_api(address)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 245, in call_api
        raise e
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 224, in call_api
        result = self.api.dispatch(address, **kwargs)
      File "/Users/yura/temp/test-shapeflow/shapeflow/shapeflow/server.py", line 285, in api
        from shapeflow.main import load
        ...
    
  • After brew install cairo, backend fails with
    2021-01-20 12:34:09,714 - INFO - shapeflow.server - serving on http://127.0.0.1:7951
    2021-01-20 12:34:10,321 - INFO - shapeflow.server - opening a browser window...
    2021-01-20 12:34:10.735 Python[72800:968840] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!'
    *** First throw call stack:
    (
        0   CoreFoundation                      0x00007fff204c56af __exceptionPreprocess + 242
        1   libobjc.A.dylib                     0x00007fff201fd3c9 objc_exception_throw + 48
        2   CoreFoundation                      0x00007fff204eda9a -[NSException raise] + 9
        3   AppKit                              0x00007fff22c918a0 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 321
        4   AppKit                              0x00007fff22c7c561 -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1375
        5   AppKit                              0x00007fff22c7bffb -[NSWindow initWithContentRect:styleMask:backing:defer:] + 42
        6   libtk8.6.dylib                      0x000000013870b2a8 TkMacOSXMakeRealWindowExist + 694
        7   libtk8.6.dylib                      0x000000013870aec4 TkWmMapWindow + 63
        8   libtk8.6.dylib                      0x0000000138671613 Tk_MapWindow + 158
        9   libtk8.6.dylib                      0x0000000138679fdb MapFrame + 59
        10  libtcl8.6.dylib                     0x00000001385b85a2 TclServiceIdle + 75
        11  libtcl8.6.dylib                     0x000000013859cf03 Tcl_DoOneEvent + 337
        12  libtk8.6.dylib                      0x00000001386fe2e3 TkpInit + 762
        13  libtk8.6.dylib                      0x0000000138672855 Initialize + 2402
        14  _tkinter.cpython-39-darwin.so       0x00000001384cf715 Tcl_AppInit + 84
        15  _tkinter.cpython-39-darwin.so       0x00000001384caa04 _tkinter_create + 987
        16  Python                              0x0000000107cd71bb cfunction_vectorcall_FASTCALL + 203
        17  Python                              0x0000000107d4eff3 call_function + 403
        18  Python                              0x0000000107d4c184 _PyEval_EvalFrameDefault + 27452
        19  Python                              0x0000000107d4fb3b _PyEval_EvalCode + 1998
        20  Python                              0x0000000107ca75d8 _PyFunction_Vectorcall + 248
        21  Python                              0x0000000107ca6e67 _PyObject_FastCallDictTstate + 212
        22  Python                              0x0000000107ca7891 _PyObject_Call_Prepend + 139
        23  Python                              0x0000000107cefe96 slot_tp_init + 87
        24  Python                              0x0000000107ce96f7 type_call + 150
        25  Python                              0x0000000107ca6fa3 _PyObject_MakeTpCall + 266
        26  Python                              0x0000000107d4f027 call_function + 455
        27  Python                              0x0000000107d4c184 _PyEval_EvalFrameDefault + 27452
        28  Python                              0x0000000107ca7648 function_code_fastcall + 97
        29  Python                              0x0000000107ca6e67 _PyObject_FastCallDictTstate + 212
        30  Python                              0x0000000107ca7891 _PyObject_Call_Prepend + 139
        31  Python                              0x0000000107cefe96 slot_tp_init + 87
        32  Python                              0x0000000107ce96f7 type_call + 150
        33  Python                              0x0000000107ca6fa3 _PyObject_MakeTpCall + 266
        34  Python                              0x0000000107d4f027 call_function + 455
        35  Python                              0x0000000107d4c230 _PyEval_EvalFrameDefault + 27624
        36  Python                              0x0000000107d4fb3b _PyEval_EvalCode + 1998
        37  Python                              0x0000000107d4556d PyEval_EvalCode + 79
        38  Python                              0x0000000107d428a7 builtin_exec + 581
        39  Python                              0x0000000107cd71bb cfunction_vectorcall_FASTCALL + 203
        40  Python                              0x0000000107d4c5a9 _PyEval_EvalFrameDefault + 28513
        41  Python                              0x0000000107d4fb3b _PyEval_EvalCode + 1998
        42  Python                              0x0000000107ca75d8 _PyFunction_Vectorcall + 248
        43  Python                              0x0000000107d4eff3 call_function + 403
        44  Python                              0x0000000107d4c184 _PyEval_EvalFrameDefault + 27452
        45  Python                              0x0000000107ca7648 function_code_fastcall + 97
        46  Python                              0x0000000107d4eff3 call_function + 403
        47  Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        48  Python                              0x0000000107ca7648 function_code_fastcall + 97
        49  Python                              0x0000000107d4eff3 call_function + 403
        50  Python                              0x0000000107d4c230 _PyEval_EvalFrameDefault + 27624
        51  Python                              0x0000000107ca7648 function_code_fastcall + 97
        52  Python                              0x0000000107d4eff3 call_function + 403
        53  Python                              0x0000000107d4c230 _PyEval_EvalFrameDefault + 27624
        54  Python                              0x0000000107ca7648 function_code_fastcall + 97
        55  Python                              0x0000000107ca8697 object_vacall + 402
        56  Python                              0x0000000107ca87fe _PyObject_CallMethodIdObjArgs + 248
        57  Python                              0x0000000107d6ace5 PyImport_ImportModuleLevelObject + 1179
        58  Python                              0x0000000107d4ab88 _PyEval_EvalFrameDefault + 21824
        59  Python                              0x0000000107d4fb3b _PyEval_EvalCode + 1998
        60  Python                              0x0000000107d4556d PyEval_EvalCode + 79
        61  Python                              0x0000000107d428a7 builtin_exec + 581
        62  Python                              0x0000000107cd71bb cfunction_vectorcall_FASTCALL + 203
        63  Python                              0x0000000107d4c5a9 _PyEval_EvalFrameDefault + 28513
        64  Python                              0x0000000107d4fb3b _PyEval_EvalCode + 1998
        65  Python                              0x0000000107ca75d8 _PyFunction_Vectorcall + 248
        66  Python                              0x0000000107d4eff3 call_function + 403
        67  Python                              0x0000000107d4c184 _PyEval_EvalFrameDefault + 27452
        68  Python                              0x0000000107ca7648 function_code_fastcall + 97
        69  Python                              0x0000000107d4eff3 call_function + 403
        70  Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        71  Python                              0x0000000107ca7648 function_code_fastcall + 97
        72  Python                              0x0000000107d4eff3 call_function + 403
        73  Python                              0x0000000107d4c230 _PyEval_EvalFrameDefault + 27624
        74  Python                              0x0000000107ca7648 function_code_fastcall + 97
        75  Python                              0x0000000107d4eff3 call_function + 403
        76  Python                              0x0000000107d4c230 _PyEval_EvalFrameDefault + 27624
        77  Python                              0x0000000107ca7648 function_code_fastcall + 97
        78  Python                              0x0000000107ca8697 object_vacall + 402
        79  Python                              0x0000000107ca87fe _PyObject_CallMethodIdObjArgs + 248
        80  Python                              0x0000000107d6ace5 PyImport_ImportModuleLevelObject + 1179
        81  Python                              0x0000000107d4ab88 _PyEval_EvalFrameDefault + 21824
        82  Python                              0x0000000107ca7648 function_code_fastcall + 97
        83  Python                              0x0000000107caeec7 property_descr_get + 114
        84  Python                              0x0000000107cdab4d _PyObject_GenericGetAttrWithDict + 177
        85  Python                              0x0000000107d4a5e7 _PyEval_EvalFrameDefault + 20383
        86  Python                              0x0000000107ca7648 function_code_fastcall + 97
        87  Python                              0x0000000107d4eff3 call_function + 403
        88  Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        89  Python                              0x0000000107d4fb3b _PyEval_EvalCode + 1998
        90  Python                              0x0000000107ca75d8 _PyFunction_Vectorcall + 248
        91  Python                              0x0000000107ca731f PyVectorcall_Call + 146
        92  Python                              0x0000000107d4c4b4 _PyEval_EvalFrameDefault + 28268
        93  Python                              0x0000000107ca7648 function_code_fastcall + 97
        94  Python                              0x0000000107d4eff3 call_function + 403
        95  Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        96  Python                              0x0000000107ca7648 function_code_fastcall + 97
        97  Python                              0x0000000107d4eff3 call_function + 403
        98  Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        99  Python                              0x0000000107ca7648 function_code_fastcall + 97
        100 Python                              0x0000000107d4eff3 call_function + 403
        101 Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        102 Python                              0x0000000107ca7648 function_code_fastcall + 97
        103 Python                              0x0000000107ca6e67 _PyObject_FastCallDictTstate + 212
        104 Python                              0x0000000107ca7891 _PyObject_Call_Prepend + 139
        105 Python                              0x0000000107cef2fb slot_tp_call + 87
        106 Python                              0x0000000107ca6fa3 _PyObject_MakeTpCall + 266
        107 Python                              0x0000000107d4f027 call_function + 455
        108 Python                              0x0000000107d4c184 _PyEval_EvalFrameDefault + 27452
        109 Python                              0x0000000107d4fb3b _PyEval_EvalCode + 1998
        110 Python                              0x0000000107ca75d8 _PyFunction_Vectorcall + 248
        111 Python                              0x0000000107d4eff3 call_function + 403
        112 Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        113 Python                              0x0000000107ca7648 function_code_fastcall + 97
        114 Python                              0x0000000107d4eff3 call_function + 403
        115 Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        116 Python                              0x0000000107ca7648 function_code_fastcall + 97
        117 Python                              0x0000000107d4eff3 call_function + 403
        118 Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        119 Python                              0x0000000107ca7648 function_code_fastcall + 97
        120 Python                              0x0000000107ca93ae method_vectorcall + 423
        121 Python                              0x0000000107d4c4b4 _PyEval_EvalFrameDefault + 28268
        122 Python                              0x0000000107ca7648 function_code_fastcall + 97
        123 Python                              0x0000000107d4eff3 call_function + 403
        124 Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        125 Python                              0x0000000107ca7648 function_code_fastcall + 97
        126 Python                              0x0000000107d4eff3 call_function + 403
        127 Python                              0x0000000107d4c168 _PyEval_EvalFrameDefault + 27424
        128 Python                              0x0000000107ca7648 function_code_fastcall + 97
        129 Python                              0x0000000107ca9337 method_vectorcall + 304
        130 Python                              0x0000000107dc9acf t_bootstrap + 70
        131 Python                              0x0000000107d89424 pythread_wrapper + 25
        132 libsystem_pthread.dylib             0x00007fff20353950 _pthread_start + 224
        133 libsystem_pthread.dylib             0x00007fff2034f47b thread_start + 15
    )
    libc++abi.dylib: terminating with uncaught exception of type NSException
    [1]    72800 abort      python sf.py
    

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions