fonttools 4.58.2__cp310-cp310-macosx_10_9_universal2.whl → 4.58.4__cp310-cp310-macosx_10_9_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fonttools might be problematic. Click here for more details.

fontTools/varLib/iup.c CHANGED
@@ -1,4 +1,4 @@
1
- /* Generated by Cython 3.1.1 */
1
+ /* Generated by Cython 3.1.2 */
2
2
 
3
3
  /* BEGIN: Cython Metadata
4
4
  {
@@ -26,8 +26,8 @@ END: Cython Metadata */
26
26
  #elif PY_VERSION_HEX < 0x03080000
27
27
  #error Cython requires Python 3.8+.
28
28
  #else
29
- #define __PYX_ABI_VERSION "3_1_1"
30
- #define CYTHON_HEX_VERSION 0x030101F0
29
+ #define __PYX_ABI_VERSION "3_1_2"
30
+ #define CYTHON_HEX_VERSION 0x030102F0
31
31
  #define CYTHON_FUTURE_DIVISION 1
32
32
  /* CModulePreamble */
33
33
  #include <stddef.h>
@@ -442,7 +442,7 @@ END: Cython Metadata */
442
442
  #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
443
443
  #endif
444
444
  #ifndef CYTHON_NCP_UNUSED
445
- # if CYTHON_COMPILING_IN_CPYTHON
445
+ # if CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
446
446
  # define CYTHON_NCP_UNUSED
447
447
  # else
448
448
  # define CYTHON_NCP_UNUSED CYTHON_UNUSED
@@ -887,11 +887,19 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict,
887
887
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
888
888
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
889
889
  #endif
890
- #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
890
+ #if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
891
891
  #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
892
892
  #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
893
+ #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
894
+ #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
893
895
  #else
894
- #define __Pyx_PyList_GetItemRef(o, i) PySequence_GetItem(o, i)
896
+ #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i)
897
+ #endif
898
+ #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
899
+ #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
900
+ #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
901
+ #else
902
+ #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i))
895
903
  #endif
896
904
  #else
897
905
  #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i))
@@ -1299,7 +1307,9 @@ static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
1299
1307
  #endif /* __GNUC__ */
1300
1308
  /* PretendToInitialize */
1301
1309
  #ifdef __cplusplus
1310
+ #if __cplusplus > 201103L
1302
1311
  #include <type_traits>
1312
+ #endif
1303
1313
  template <typename T>
1304
1314
  static void __Pyx_pretend_to_initialize(T* ptr) {
1305
1315
  #if __cplusplus > 201103L
@@ -1728,7 +1738,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, P
1728
1738
  static PyObject *__Pyx_GetBuiltinName(PyObject *name);
1729
1739
 
1730
1740
  /* SetItemInt.proto */
1731
- #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1741
+ #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
1732
1742
  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1733
1743
  __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
1734
1744
  (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
@@ -1738,18 +1748,18 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
1738
1748
  int is_list, int wraparound, int boundscheck);
1739
1749
 
1740
1750
  /* GetItemInt.proto */
1741
- #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1751
+ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
1742
1752
  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1743
1753
  __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
1744
1754
  (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
1745
1755
  __Pyx_GetItemInt_Generic(o, to_py_func(i))))
1746
- #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1756
+ #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
1747
1757
  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1748
1758
  __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
1749
1759
  (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
1750
1760
  static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
1751
1761
  int wraparound, int boundscheck);
1752
- #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1762
+ #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
1753
1763
  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1754
1764
  __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
1755
1765
  (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
@@ -2213,6 +2223,15 @@ static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key);
2213
2223
  static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg);
2214
2224
  #endif
2215
2225
 
2226
+ /* LimitedApiGetTypeDict.proto */
2227
+ #if CYTHON_COMPILING_IN_LIMITED_API
2228
+ static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp);
2229
+ #endif
2230
+
2231
+ /* SetItemOnTypeDict.proto */
2232
+ static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v);
2233
+ #define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v)
2234
+
2216
2235
  /* FixUpExtensionType.proto */
2217
2236
  static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
2218
2237
 
@@ -2246,7 +2265,11 @@ static PyObject *__Pyx_FetchSharedCythonABIModule(void);
2246
2265
  static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, int is_safe_type);
2247
2266
 
2248
2267
  /* FetchCommonType.proto */
2249
- static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
2268
+ static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases);
2269
+
2270
+ /* CommonTypesMetaclass.proto */
2271
+ static int __pyx_CommonTypesMetaclass_init(PyObject *module);
2272
+ #define __Pyx_CommonTypesMetaclass_USED
2250
2273
 
2251
2274
  /* PyMethodNew.proto */
2252
2275
  static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ);
@@ -2568,6 +2591,7 @@ static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *clos
2568
2591
  #if __PYX_HAS_PY_AM_SEND == 2
2569
2592
  static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send);
2570
2593
  #endif
2594
+ static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg);
2571
2595
 
2572
2596
  /* Generator.proto */
2573
2597
  #define __Pyx_Generator_USED
@@ -2743,6 +2767,7 @@ static const char __pyx_k_best_sol[] = "best_sol";
2743
2767
  static const char __pyx_k_lookback[] = "lookback";
2744
2768
  static const char __pyx_k_qualname[] = "__qualname__";
2745
2769
  static const char __pyx_k_rot_list[] = "_rot_list";
2770
+ static const char __pyx_k_set_name[] = "__set_name__";
2746
2771
  static const char __pyx_k_solution[] = "solution";
2747
2772
  static const char __pyx_k_Endpoints[] = "_Endpoints";
2748
2773
  static const char __pyx_k_best_cost[] = "best_cost";
@@ -2852,7 +2877,7 @@ typedef struct {
2852
2877
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop;
2853
2878
  PyObject *__pyx_tuple[4];
2854
2879
  PyObject *__pyx_codeobj_tab[11];
2855
- PyObject *__pyx_string_tab[116];
2880
+ PyObject *__pyx_string_tab[117];
2856
2881
  PyObject *__pyx_float_0_0;
2857
2882
  PyObject *__pyx_int_0;
2858
2883
  PyObject *__pyx_int_1;
@@ -2892,6 +2917,9 @@ int __pyx_freecount_9fontTools_6varLib_3iup___pyx_scope_struct_3_genexpr;
2892
2917
  struct __pyx_obj_9fontTools_6varLib_3iup___pyx_scope_struct_4_genexpr *__pyx_freelist_9fontTools_6varLib_3iup___pyx_scope_struct_4_genexpr[8];
2893
2918
  int __pyx_freecount_9fontTools_6varLib_3iup___pyx_scope_struct_4_genexpr;
2894
2919
  #endif
2920
+ /* CommonTypesMetaclass.module_state_decls */
2921
+ PyTypeObject *__pyx_CommonTypesMetaclassType;
2922
+
2895
2923
  /* CachedMethodType.module_state_decls */
2896
2924
  #if CYTHON_COMPILING_IN_LIMITED_API
2897
2925
  PyObject *__Pyx_CachedMethodType;
@@ -3030,17 +3058,18 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati
3030
3058
  #define __pyx_n_u_s __pyx_string_tab[102]
3031
3059
  #define __pyx_n_u_send __pyx_string_tab[103]
3032
3060
  #define __pyx_n_u_set __pyx_string_tab[104]
3033
- #define __pyx_n_u_solution __pyx_string_tab[105]
3034
- #define __pyx_n_u_start __pyx_string_tab[106]
3035
- #define __pyx_n_u_test __pyx_string_tab[107]
3036
- #define __pyx_n_u_throw __pyx_string_tab[108]
3037
- #define __pyx_n_u_tolerance __pyx_string_tab[109]
3038
- #define __pyx_n_u_typing __pyx_string_tab[110]
3039
- #define __pyx_n_u_v __pyx_string_tab[111]
3040
- #define __pyx_n_u_value __pyx_string_tab[112]
3041
- #define __pyx_n_u_x __pyx_string_tab[113]
3042
- #define __pyx_n_u_y __pyx_string_tab[114]
3043
- #define __pyx_n_u_zip __pyx_string_tab[115]
3061
+ #define __pyx_n_u_set_name __pyx_string_tab[105]
3062
+ #define __pyx_n_u_solution __pyx_string_tab[106]
3063
+ #define __pyx_n_u_start __pyx_string_tab[107]
3064
+ #define __pyx_n_u_test __pyx_string_tab[108]
3065
+ #define __pyx_n_u_throw __pyx_string_tab[109]
3066
+ #define __pyx_n_u_tolerance __pyx_string_tab[110]
3067
+ #define __pyx_n_u_typing __pyx_string_tab[111]
3068
+ #define __pyx_n_u_v __pyx_string_tab[112]
3069
+ #define __pyx_n_u_value __pyx_string_tab[113]
3070
+ #define __pyx_n_u_x __pyx_string_tab[114]
3071
+ #define __pyx_n_u_y __pyx_string_tab[115]
3072
+ #define __pyx_n_u_zip __pyx_string_tab[116]
3044
3073
  /* #### Code section: module_state_clear ### */
3045
3074
  #if CYTHON_USE_MODULE_STATE
3046
3075
  static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
@@ -3075,7 +3104,7 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
3075
3104
  Py_CLEAR(clear_module_state->__pyx_type_9fontTools_6varLib_3iup___pyx_scope_struct_4_genexpr);
3076
3105
  for (int i=0; i<4; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); }
3077
3106
  for (int i=0; i<11; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); }
3078
- for (int i=0; i<116; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
3107
+ for (int i=0; i<117; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
3079
3108
  Py_CLEAR(clear_module_state->__pyx_float_0_0);
3080
3109
  Py_CLEAR(clear_module_state->__pyx_int_0);
3081
3110
  Py_CLEAR(clear_module_state->__pyx_int_1);
@@ -3118,7 +3147,7 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void
3118
3147
  Py_VISIT(traverse_module_state->__pyx_type_9fontTools_6varLib_3iup___pyx_scope_struct_4_genexpr);
3119
3148
  for (int i=0; i<4; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); }
3120
3149
  for (int i=0; i<11; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); }
3121
- for (int i=0; i<116; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
3150
+ for (int i=0; i<117; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
3122
3151
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_float_0_0);
3123
3152
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0);
3124
3153
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_1);
@@ -3224,7 +3253,7 @@ static PyObject *__pyx_f_9fontTools_6varLib_3iup_iup_segment(PyObject *__pyx_v_c
3224
3253
  */
3225
3254
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error)
3226
3255
  __Pyx_GOTREF(__pyx_t_3);
3227
- if (unlikely((__Pyx_SetItemInt(__pyx_v_out_arrays, __pyx_v_j, __pyx_t_3, int, 1, __Pyx_PyLong_From_int, 1, 1, 1) < 0))) __PYX_ERR(0, 51, __pyx_L1_error)
3256
+ if (unlikely((__Pyx_SetItemInt(__pyx_v_out_arrays, __pyx_v_j, __pyx_t_3, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1) < 0))) __PYX_ERR(0, 51, __pyx_L1_error)
3228
3257
  __Pyx_INCREF(__pyx_t_3);
3229
3258
  __Pyx_XDECREF_SET(__pyx_v_out, __pyx_t_3);
3230
3259
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3236,19 +3265,19 @@ static PyObject *__pyx_f_9fontTools_6varLib_3iup_iup_segment(PyObject *__pyx_v_c
3236
3265
  *
3237
3266
  * if x1 == x2:
3238
3267
  */
3239
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rc1, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3268
+ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rc1, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3240
3269
  __Pyx_GOTREF(__pyx_t_3);
3241
3270
  __pyx_t_5 = __Pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L1_error)
3242
3271
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3243
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rc2, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3272
+ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rc2, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3244
3273
  __Pyx_GOTREF(__pyx_t_3);
3245
3274
  __pyx_t_6 = __Pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L1_error)
3246
3275
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3247
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rd1, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3276
+ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rd1, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3248
3277
  __Pyx_GOTREF(__pyx_t_3);
3249
3278
  __pyx_t_7 = __Pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L1_error)
3250
3279
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3251
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rd2, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3280
+ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_rd2, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
3252
3281
  __Pyx_GOTREF(__pyx_t_3);
3253
3282
  __pyx_t_8 = __Pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L1_error)
3254
3283
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3483,7 +3512,7 @@ static PyObject *__pyx_f_9fontTools_6varLib_3iup_iup_segment(PyObject *__pyx_v_c
3483
3512
  *
3484
3513
  * if x <= x1:
3485
3514
  */
3486
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pair, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error)
3515
+ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pair, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error)
3487
3516
  __Pyx_GOTREF(__pyx_t_3);
3488
3517
  __pyx_t_7 = __Pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 69, __pyx_L1_error)
3489
3518
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3658,7 +3687,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
3658
3687
  PyObject *__pyx_args, PyObject *__pyx_kwds
3659
3688
  #endif
3660
3689
  ); /*proto*/
3661
- PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_iup_contour, "iup_contour(deltas: _DeltaOrNoneSegment, coords: _PointSegment) -> _DeltaSegment\nFor the contour given in `coords`, interpolate any missing\ndelta values in delta vector `deltas`.\n\nReturns fully filled-out delta vector.");
3690
+ PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_iup_contour, "iup_contour(deltas: _DeltaOrNoneSegment, coords: _PointSegment) -> _DeltaSegment\n\nFor the contour given in `coords`, interpolate any missing\ndelta values in delta vector `deltas`.\n\nReturns fully filled-out delta vector.");
3662
3691
  static PyMethodDef __pyx_mdef_9fontTools_6varLib_3iup_1iup_contour = {"iup_contour", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9fontTools_6varLib_3iup_1iup_contour, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9fontTools_6varLib_3iup_iup_contour};
3663
3692
  static PyObject *__pyx_pw_9fontTools_6varLib_3iup_1iup_contour(PyObject *__pyx_self,
3664
3693
  #if CYTHON_METH_FASTCALL
@@ -4033,7 +4062,7 @@ static PyObject *__pyx_pf_9fontTools_6varLib_3iup_iup_contour(CYTHON_UNUSED PyOb
4033
4062
  __Pyx_INCREF(__pyx_t_5);
4034
4063
  __pyx_t_6 = __pyx_v_start;
4035
4064
  __Pyx_INCREF(__pyx_t_6);
4036
- __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_indices, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 113, __pyx_L1_error)
4065
+ __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_indices, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 113, __pyx_L1_error)
4037
4066
  __Pyx_GOTREF(__pyx_t_8);
4038
4067
  __pyx_v_i1 = __pyx_t_4;
4039
4068
  __pyx_t_4 = 0;
@@ -4318,7 +4347,7 @@ static PyObject *__pyx_pf_9fontTools_6varLib_3iup_iup_contour(CYTHON_UNUSED PyOb
4318
4347
  __Pyx_INCREF(__pyx_t_11);
4319
4348
  __pyx_t_8 = __pyx_v_start;
4320
4349
  __Pyx_INCREF(__pyx_t_8);
4321
- __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_indices, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error)
4350
+ __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_indices, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error)
4322
4351
  __Pyx_GOTREF(__pyx_t_4);
4323
4352
  __Pyx_XDECREF_SET(__pyx_v_i1, __pyx_t_13);
4324
4353
  __pyx_t_13 = 0;
@@ -4485,7 +4514,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
4485
4514
  PyObject *__pyx_args, PyObject *__pyx_kwds
4486
4515
  #endif
4487
4516
  ); /*proto*/
4488
- PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_2iup_delta, "iup_delta(deltas: _DeltaOrNoneSegment, coords: _PointSegment, ends: _Endpoints) -> _DeltaSegment\nFor the outline given in `coords`, with contour endpoints given\nin sorted increasing order in `ends`, interpolate any missing\ndelta values in delta vector `deltas`.\n\nReturns fully filled-out delta vector.");
4517
+ PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_2iup_delta, "iup_delta(deltas: _DeltaOrNoneSegment, coords: _PointSegment, ends: _Endpoints) -> _DeltaSegment\n\nFor the outline given in `coords`, with contour endpoints given\nin sorted increasing order in `ends`, interpolate any missing\ndelta values in delta vector `deltas`.\n\nReturns fully filled-out delta vector.");
4489
4518
  static PyMethodDef __pyx_mdef_9fontTools_6varLib_3iup_3iup_delta = {"iup_delta", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9fontTools_6varLib_3iup_3iup_delta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9fontTools_6varLib_3iup_2iup_delta};
4490
4519
  static PyObject *__pyx_pw_9fontTools_6varLib_3iup_3iup_delta(PyObject *__pyx_self,
4491
4520
  #if CYTHON_METH_FASTCALL
@@ -4631,7 +4660,7 @@ static PyObject *__pyx_pf_9fontTools_6varLib_3iup_2iup_delta(CYTHON_UNUSED PyObj
4631
4660
  __Pyx_GOTREF(__pyx_t_3);
4632
4661
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ends); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 152, __pyx_L1_error)
4633
4662
  if (__pyx_t_4) {
4634
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ends, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error)
4663
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ends, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error)
4635
4664
  __Pyx_GOTREF(__pyx_t_6);
4636
4665
  __pyx_t_7 = __Pyx_PyLong_AddObjC(__pyx_t_6, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 152, __pyx_L1_error)
4637
4666
  __Pyx_GOTREF(__pyx_t_7);
@@ -5397,13 +5426,13 @@ static CYTHON_INLINE int __pyx_f_9fontTools_6varLib_3iup_can_iup_in_between(PyOb
5397
5426
  */
5398
5427
  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_coords, (__pyx_v_i + 1), __pyx_v_j, NULL, NULL, NULL, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 193, __pyx_L1_error)
5399
5428
  __Pyx_GOTREF(__pyx_t_2);
5400
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_coords, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error)
5429
+ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_coords, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error)
5401
5430
  __Pyx_GOTREF(__pyx_t_3);
5402
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_deltas, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error)
5431
+ __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_deltas, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error)
5403
5432
  __Pyx_GOTREF(__pyx_t_4);
5404
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_coords, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error)
5433
+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_coords, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error)
5405
5434
  __Pyx_GOTREF(__pyx_t_5);
5406
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_deltas, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
5435
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_deltas, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
5407
5436
  __Pyx_GOTREF(__pyx_t_6);
5408
5437
  __pyx_t_7 = __pyx_f_9fontTools_6varLib_3iup_iup_segment(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 193, __pyx_L1_error)
5409
5438
  __Pyx_GOTREF(__pyx_t_7);
@@ -5508,7 +5537,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
5508
5537
  PyObject *__pyx_args, PyObject *__pyx_kwds
5509
5538
  #endif
5510
5539
  ); /*proto*/
5511
- PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_4_iup_contour_bound_forced_set, "_iup_contour_bound_forced_set(deltas: _DeltaSegment, coords: _PointSegment, tolerance: Real = 0) -> set\nThe forced set is a conservative set of points on the contour that must be encoded\nexplicitly (ie. cannot be interpolated). Calculating this set allows for significantly\nspeeding up the dynamic-programming, as well as resolve circularity in DP.\n\nThe set is precise; that is, if an index is in the returned set, then there is no way\nthat IUP can generate delta for that point, given `coords` and `deltas`.");
5540
+ PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_4_iup_contour_bound_forced_set, "_iup_contour_bound_forced_set(deltas: _DeltaSegment, coords: _PointSegment, tolerance: Real = 0) -> set\n\nThe forced set is a conservative set of points on the contour that must be encoded\nexplicitly (ie. cannot be interpolated). Calculating this set allows for significantly\nspeeding up the dynamic-programming, as well as resolve circularity in DP.\n\nThe set is precise; that is, if an index is in the returned set, then there is no way\nthat IUP can generate delta for that point, given `coords` and `deltas`.");
5512
5541
  static PyMethodDef __pyx_mdef_9fontTools_6varLib_3iup_5_iup_contour_bound_forced_set = {"_iup_contour_bound_forced_set", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9fontTools_6varLib_3iup_5_iup_contour_bound_forced_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9fontTools_6varLib_3iup_4_iup_contour_bound_forced_set};
5513
5542
  static PyObject *__pyx_pw_9fontTools_6varLib_3iup_5_iup_contour_bound_forced_set(PyObject *__pyx_self,
5514
5543
  #if CYTHON_METH_FASTCALL
@@ -6609,7 +6638,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
6609
6638
  PyObject *__pyx_args, PyObject *__pyx_kwds
6610
6639
  #endif
6611
6640
  ); /*proto*/
6612
- PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_6_iup_contour_optimize_dp, "_iup_contour_optimize_dp(deltas: _DeltaSegment, coords: _PointSegment, set forced=set(), double tolerance: Real = 0, lookback: Integral = None)\nStraightforward Dynamic-Programming. For each index i, find least-costly encoding of\npoints 0 to i where i is explicitly encoded. We find this by considering all previous\nexplicit points j and check whether interpolation can fill points between j and i.\n\nNote that solution always encodes last point explicitly. Higher-level is responsible\nfor removing that restriction.\n\nAs major speedup, we stop looking further whenever we see a \"forced\" point.");
6641
+ PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_6_iup_contour_optimize_dp, "_iup_contour_optimize_dp(deltas: _DeltaSegment, coords: _PointSegment, set forced=set(), double tolerance: Real = 0, lookback: Integral = None)\n\nStraightforward Dynamic-Programming. For each index i, find least-costly encoding of\npoints 0 to i where i is explicitly encoded. We find this by considering all previous\nexplicit points j and check whether interpolation can fill points between j and i.\n\nNote that solution always encodes last point explicitly. Higher-level is responsible\nfor removing that restriction.\n\nAs major speedup, we stop looking further whenever we see a \"forced\" point.");
6613
6642
  static PyMethodDef __pyx_mdef_9fontTools_6varLib_3iup_7_iup_contour_optimize_dp = {"_iup_contour_optimize_dp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9fontTools_6varLib_3iup_7_iup_contour_optimize_dp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9fontTools_6varLib_3iup_6_iup_contour_optimize_dp};
6614
6643
  static PyObject *__pyx_pw_9fontTools_6varLib_3iup_7_iup_contour_optimize_dp(PyObject *__pyx_self,
6615
6644
  #if CYTHON_METH_FASTCALL
@@ -7202,7 +7231,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7202
7231
  PyObject *__pyx_args, PyObject *__pyx_kwds
7203
7232
  #endif
7204
7233
  ); /*proto*/
7205
- PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_8_rot_list, "_rot_list(list l: list, int k: int)\nRotate list by k items forward. Ie. item at position 0 will be\nat position k in returned list. Negative k is allowed.");
7234
+ PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_8_rot_list, "_rot_list(list l: list, int k: int)\n\nRotate list by k items forward. Ie. item at position 0 will be\nat position k in returned list. Negative k is allowed.");
7206
7235
  static PyMethodDef __pyx_mdef_9fontTools_6varLib_3iup_9_rot_list = {"_rot_list", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9fontTools_6varLib_3iup_9_rot_list, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9fontTools_6varLib_3iup_8_rot_list};
7207
7236
  static PyObject *__pyx_pw_9fontTools_6varLib_3iup_9_rot_list(PyObject *__pyx_self,
7208
7237
  #if CYTHON_METH_FASTCALL
@@ -7707,7 +7736,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
7707
7736
  PyObject *__pyx_args, PyObject *__pyx_kwds
7708
7737
  #endif
7709
7738
  ); /*proto*/
7710
- PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_12iup_contour_optimize, "iup_contour_optimize(deltas: _DeltaSegment, coords: _PointSegment, tolerance: Real = 0.0) -> _DeltaOrNoneSegment\nFor contour with coordinates `coords`, optimize a set of delta\nvalues `deltas` within error `tolerance`.\n\nReturns delta vector that has most number of None items instead of\nthe input delta.");
7739
+ PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_12iup_contour_optimize, "iup_contour_optimize(deltas: _DeltaSegment, coords: _PointSegment, tolerance: Real = 0.0) -> _DeltaOrNoneSegment\n\nFor contour with coordinates `coords`, optimize a set of delta\nvalues `deltas` within error `tolerance`.\n\nReturns delta vector that has most number of None items instead of\nthe input delta.");
7711
7740
  static PyMethodDef __pyx_mdef_9fontTools_6varLib_3iup_13iup_contour_optimize = {"iup_contour_optimize", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9fontTools_6varLib_3iup_13iup_contour_optimize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9fontTools_6varLib_3iup_12iup_contour_optimize};
7712
7741
  static PyObject *__pyx_pw_9fontTools_6varLib_3iup_13iup_contour_optimize(PyObject *__pyx_self,
7713
7742
  #if CYTHON_METH_FASTCALL
@@ -8307,7 +8336,7 @@ static PyObject *__pyx_pf_9fontTools_6varLib_3iup_12iup_contour_optimize(CYTHON_
8307
8336
  * if all(d0 == d for d in deltas):
8308
8337
  * return [d0] + [None] * (n - 1)
8309
8338
  */
8310
- __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_deltas, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 386, __pyx_L1_error)
8339
+ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_deltas, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 386, __pyx_L1_error)
8311
8340
  __Pyx_GOTREF(__pyx_t_3);
8312
8341
  __Pyx_GIVEREF(__pyx_t_3);
8313
8342
  __pyx_cur_scope->__pyx_v_d0 = __pyx_t_3;
@@ -9455,7 +9484,7 @@ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
9455
9484
  PyObject *__pyx_args, PyObject *__pyx_kwds
9456
9485
  #endif
9457
9486
  ); /*proto*/
9458
- PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_14iup_delta_optimize, "iup_delta_optimize(deltas: _DeltaSegment, coords: _PointSegment, ends: _Endpoints, tolerance: Real = 0.0) -> _DeltaOrNoneSegment\nFor the outline given in `coords`, with contour endpoints given\nin sorted increasing order in `ends`, optimize a set of delta\nvalues `deltas` within error `tolerance`.\n\nReturns delta vector that has most number of None items instead of\nthe input delta.");
9487
+ PyDoc_STRVAR(__pyx_doc_9fontTools_6varLib_3iup_14iup_delta_optimize, "iup_delta_optimize(deltas: _DeltaSegment, coords: _PointSegment, ends: _Endpoints, tolerance: Real = 0.0) -> _DeltaOrNoneSegment\n\nFor the outline given in `coords`, with contour endpoints given\nin sorted increasing order in `ends`, optimize a set of delta\nvalues `deltas` within error `tolerance`.\n\nReturns delta vector that has most number of None items instead of\nthe input delta.");
9459
9488
  static PyMethodDef __pyx_mdef_9fontTools_6varLib_3iup_15iup_delta_optimize = {"iup_delta_optimize", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9fontTools_6varLib_3iup_15iup_delta_optimize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9fontTools_6varLib_3iup_14iup_delta_optimize};
9460
9489
  static PyObject *__pyx_pw_9fontTools_6varLib_3iup_15iup_delta_optimize(PyObject *__pyx_self,
9461
9490
  #if CYTHON_METH_FASTCALL
@@ -9618,7 +9647,7 @@ static PyObject *__pyx_pf_9fontTools_6varLib_3iup_14iup_delta_optimize(CYTHON_UN
9618
9647
  __Pyx_GOTREF(__pyx_t_3);
9619
9648
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ends); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 477, __pyx_L1_error)
9620
9649
  if (__pyx_t_4) {
9621
- __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ends, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error)
9650
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ends, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 477, __pyx_L1_error)
9622
9651
  __Pyx_GOTREF(__pyx_t_6);
9623
9652
  __pyx_t_7 = __Pyx_PyLong_AddObjC(__pyx_t_6, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 477, __pyx_L1_error)
9624
9653
  __Pyx_GOTREF(__pyx_t_7);
@@ -11333,6 +11362,13 @@ __Pyx_RefNannySetupContext("PyInit_iup", 0);
11333
11362
  __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
11334
11363
  __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
11335
11364
  __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
11365
+ /*--- Initialize various global constants etc. ---*/
11366
+ if (__Pyx_InitConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11367
+ stringtab_initialized = 1;
11368
+ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11369
+ #if 0 || defined(__Pyx_CyFunction_USED) || defined(__Pyx_FusedFunction_USED) || defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED) || defined(__Pyx_AsyncGen_USED)
11370
+ if (__pyx_CommonTypesMetaclass_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11371
+ #endif
11336
11372
  #ifdef __Pyx_CyFunction_USED
11337
11373
  if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11338
11374
  #endif
@@ -11349,10 +11385,6 @@ __Pyx_RefNannySetupContext("PyInit_iup", 0);
11349
11385
  if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11350
11386
  #endif
11351
11387
  /*--- Library function declarations ---*/
11352
- /*--- Initialize various global constants etc. ---*/
11353
- if (__Pyx_InitConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11354
- stringtab_initialized = 1;
11355
- if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11356
11388
  if (__pyx_module_is_main_fontTools__varLib__iup) {
11357
11389
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name, __pyx_mstate_global->__pyx_n_u_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
11358
11390
  }
@@ -11953,6 +11985,7 @@ static const __Pyx_StringTabEntry __pyx_string_tab[] = {
11953
11985
  {__pyx_k_s, sizeof(__pyx_k_s), 0, 1, 1}, /* PyObject cname: __pyx_n_u_s */
11954
11986
  {__pyx_k_send, sizeof(__pyx_k_send), 0, 1, 1}, /* PyObject cname: __pyx_n_u_send */
11955
11987
  {__pyx_k_set, sizeof(__pyx_k_set), 0, 1, 1}, /* PyObject cname: __pyx_n_u_set */
11988
+ {__pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_set_name */
11956
11989
  {__pyx_k_solution, sizeof(__pyx_k_solution), 0, 1, 1}, /* PyObject cname: __pyx_n_u_solution */
11957
11990
  {__pyx_k_start, sizeof(__pyx_k_start), 0, 1, 1}, /* PyObject cname: __pyx_n_u_start */
11958
11991
  {__pyx_k_test, sizeof(__pyx_k_test), 0, 1, 1}, /* PyObject cname: __pyx_n_u_test */
@@ -14808,24 +14841,83 @@ static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visi
14808
14841
  }
14809
14842
  #endif
14810
14843
 
14844
+ /* LimitedApiGetTypeDict */
14845
+ #if CYTHON_COMPILING_IN_LIMITED_API
14846
+ static Py_ssize_t __Pyx_GetTypeDictOffset(void) {
14847
+ PyObject *tp_dictoffset_o;
14848
+ Py_ssize_t tp_dictoffset;
14849
+ tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__");
14850
+ if (unlikely(!tp_dictoffset_o)) return -1;
14851
+ tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o);
14852
+ Py_DECREF(tp_dictoffset_o);
14853
+ if (unlikely(tp_dictoffset == 0)) {
14854
+ PyErr_SetString(
14855
+ PyExc_TypeError,
14856
+ "'type' doesn't have a dictoffset");
14857
+ return -1;
14858
+ } else if (unlikely(tp_dictoffset < 0)) {
14859
+ PyErr_SetString(
14860
+ PyExc_TypeError,
14861
+ "'type' has an unexpected negative dictoffset. "
14862
+ "Please report this as Cython bug");
14863
+ return -1;
14864
+ }
14865
+ return tp_dictoffset;
14866
+ }
14867
+ static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) {
14868
+ static Py_ssize_t tp_dictoffset = 0;
14869
+ if (unlikely(tp_dictoffset == 0)) {
14870
+ tp_dictoffset = __Pyx_GetTypeDictOffset();
14871
+ if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) {
14872
+ tp_dictoffset = 0; // try again next time?
14873
+ return NULL;
14874
+ }
14875
+ }
14876
+ return *(PyObject**)((char*)tp + tp_dictoffset);
14877
+ }
14878
+ #endif
14879
+
14880
+ /* SetItemOnTypeDict */
14881
+ static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) {
14882
+ int result;
14883
+ PyObject *tp_dict;
14884
+ #if CYTHON_COMPILING_IN_LIMITED_API
14885
+ tp_dict = __Pyx_GetTypeDict(tp);
14886
+ if (unlikely(!tp_dict)) return -1;
14887
+ #else
14888
+ tp_dict = tp->tp_dict;
14889
+ #endif
14890
+ result = PyDict_SetItem(tp_dict, k, v);
14891
+ if (likely(!result)) {
14892
+ PyType_Modified(tp);
14893
+ if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) {
14894
+ PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL);
14895
+ if (!setNameResult) return -1;
14896
+ Py_DECREF(setNameResult);
14897
+ }
14898
+ }
14899
+ return result;
14900
+ }
14901
+
14811
14902
  /* FixUpExtensionType */
14812
14903
  static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
14813
- #if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
14904
+ #if __PYX_LIMITED_VERSION_HEX > 0x030900B1
14814
14905
  CYTHON_UNUSED_VAR(spec);
14815
14906
  CYTHON_UNUSED_VAR(type);
14907
+ CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
14816
14908
  #else
14817
14909
  const PyType_Slot *slot = spec->slots;
14910
+ int changed = 0;
14911
+ #if !CYTHON_COMPILING_IN_LIMITED_API
14818
14912
  while (slot && slot->slot && slot->slot != Py_tp_members)
14819
14913
  slot++;
14820
14914
  if (slot && slot->slot == Py_tp_members) {
14821
- int changed = 0;
14822
- #if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
14915
+ #if !CYTHON_COMPILING_IN_CPYTHON
14823
14916
  const
14824
- #endif
14917
+ #endif // !CYTHON_COMPILING_IN_CPYTHON)
14825
14918
  PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
14826
14919
  while (memb && memb->name) {
14827
14920
  if (memb->name[0] == '_' && memb->name[1] == '_') {
14828
- #if PY_VERSION_HEX < 0x030900b1
14829
14921
  if (strcmp(memb->name, "__weaklistoffset__") == 0) {
14830
14922
  assert(memb->type == T_PYSSIZET);
14831
14923
  assert(memb->flags == READONLY);
@@ -14849,11 +14941,7 @@ static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject
14849
14941
  #endif
14850
14942
  changed = 1;
14851
14943
  }
14852
- #endif
14853
- #else
14854
- if ((0));
14855
- #endif
14856
- #if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
14944
+ #endif // CYTHON_METH_FASTCALL
14857
14945
  else if (strcmp(memb->name, "__module__") == 0) {
14858
14946
  PyObject *descr;
14859
14947
  assert(memb->type == T_OBJECT);
@@ -14861,21 +14949,52 @@ static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject
14861
14949
  descr = PyDescr_NewMember(type, memb);
14862
14950
  if (unlikely(!descr))
14863
14951
  return -1;
14864
- if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
14865
- Py_DECREF(descr);
14952
+ int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
14953
+ Py_DECREF(descr);
14954
+ if (unlikely(set_item_result < 0)) {
14866
14955
  return -1;
14867
14956
  }
14868
- Py_DECREF(descr);
14869
14957
  changed = 1;
14870
14958
  }
14871
- #endif
14872
14959
  }
14873
14960
  memb++;
14874
14961
  }
14875
- if (changed)
14876
- PyType_Modified(type);
14877
14962
  }
14878
- #endif
14963
+ #endif // !CYTHON_COMPILING_IN_LIMITED_API
14964
+ slot = spec->slots;
14965
+ while (slot && slot->slot && slot->slot != Py_tp_getset)
14966
+ slot++;
14967
+ if (slot && slot->slot == Py_tp_getset) {
14968
+ PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc;
14969
+ while (getset && getset->name) {
14970
+ if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) {
14971
+ PyObject *descr = PyDescr_NewGetSet(type, getset);
14972
+ if (unlikely(!descr))
14973
+ return -1;
14974
+ #if CYTHON_COMPILING_IN_LIMITED_API
14975
+ PyObject *pyname = PyUnicode_FromString(getset->name);
14976
+ if (unlikely(!pyname)) {
14977
+ Py_DECREF(descr);
14978
+ return -1;
14979
+ }
14980
+ int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr);
14981
+ Py_DECREF(pyname);
14982
+ #else
14983
+ CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
14984
+ int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
14985
+ #endif
14986
+ Py_DECREF(descr);
14987
+ if (unlikely(set_item_result < 0)) {
14988
+ return -1;
14989
+ }
14990
+ changed = 1;
14991
+ }
14992
+ ++getset;
14993
+ }
14994
+ }
14995
+ if (changed)
14996
+ PyType_Modified(type);
14997
+ #endif // PY_VERSION_HEX > 0x030900B1
14879
14998
  return 0;
14880
14999
  }
14881
15000
 
@@ -15267,6 +15386,24 @@ static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *ke
15267
15386
  }
15268
15387
 
15269
15388
  /* FetchCommonType */
15389
+ #if __PYX_LIMITED_VERSION_HEX < 0x030C0000
15390
+ static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
15391
+ PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases);
15392
+ if (result && metaclass) {
15393
+ PyObject *old_tp = (PyObject*)Py_TYPE(result);
15394
+ Py_INCREF((PyObject*)metaclass);
15395
+ #if __PYX_LIMITED_VERSION_HEX >= 0x03090000
15396
+ Py_SET_TYPE(result, metaclass);
15397
+ #else
15398
+ result->ob_type = metaclass;
15399
+ #endif
15400
+ Py_DECREF(old_tp);
15401
+ }
15402
+ return result;
15403
+ }
15404
+ #else
15405
+ #define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b)
15406
+ #endif
15270
15407
  static int __Pyx_VerifyCachedType(PyObject *cached_type,
15271
15408
  const char *name,
15272
15409
  Py_ssize_t expected_basicsize) {
@@ -15276,6 +15413,9 @@ static int __Pyx_VerifyCachedType(PyObject *cached_type,
15276
15413
  "Shared Cython type %.200s is not a type object", name);
15277
15414
  return -1;
15278
15415
  }
15416
+ if (expected_basicsize == 0) {
15417
+ return 0; // size is inherited, nothing useful to check
15418
+ }
15279
15419
  #if CYTHON_COMPILING_IN_LIMITED_API
15280
15420
  PyObject *py_basicsize;
15281
15421
  py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
@@ -15295,7 +15435,7 @@ static int __Pyx_VerifyCachedType(PyObject *cached_type,
15295
15435
  }
15296
15436
  return 0;
15297
15437
  }
15298
- static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
15438
+ static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
15299
15439
  PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name;
15300
15440
  int get_item_ref_result;
15301
15441
  const char* object_name = strrchr(spec->name, '.');
@@ -15319,7 +15459,7 @@ static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec
15319
15459
  goto bad;
15320
15460
  }
15321
15461
  CYTHON_UNUSED_VAR(module);
15322
- cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
15462
+ cached_type = __Pyx_PyType_FromMetaclass(metaclass, abi_module, spec, bases);
15323
15463
  if (unlikely(!cached_type)) goto bad;
15324
15464
  if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
15325
15465
  new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type, 1);
@@ -15348,6 +15488,42 @@ bad:
15348
15488
  goto done;
15349
15489
  }
15350
15490
 
15491
+ /* CommonTypesMetaclass */
15492
+ PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) {
15493
+ return PyUnicode_FromString(__PYX_ABI_MODULE_NAME);
15494
+ }
15495
+ static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = {
15496
+ {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL},
15497
+ {0, 0, 0, 0, 0}
15498
+ };
15499
+ static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = {
15500
+ {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset},
15501
+ {0, 0}
15502
+ };
15503
+ static PyType_Spec __pyx_CommonTypesMetaclass_spec = {
15504
+ __PYX_TYPE_MODULE_PREFIX "_common_types_metatype",
15505
+ 0,
15506
+ 0,
15507
+ #if PY_VERSION_HEX >= 0x030A0000
15508
+ Py_TPFLAGS_IMMUTABLETYPE |
15509
+ Py_TPFLAGS_DISALLOW_INSTANTIATION |
15510
+ #endif
15511
+ Py_TPFLAGS_DEFAULT,
15512
+ __pyx_CommonTypesMetaclass_slots
15513
+ };
15514
+ static int __pyx_CommonTypesMetaclass_init(PyObject *module) {
15515
+ __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
15516
+ PyObject *bases = PyTuple_Pack(1, &PyType_Type);
15517
+ if (unlikely(!bases)) {
15518
+ return -1;
15519
+ }
15520
+ mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases);
15521
+ if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) {
15522
+ return -1;
15523
+ }
15524
+ return 0;
15525
+ }
15526
+
15351
15527
  /* PyMethodNew */
15352
15528
  #if CYTHON_COMPILING_IN_LIMITED_API
15353
15529
  static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
@@ -16445,7 +16621,8 @@ static PyType_Spec __pyx_CyFunctionType_spec = {
16445
16621
  };
16446
16622
  static int __pyx_CyFunction_init(PyObject *module) {
16447
16623
  __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
16448
- mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
16624
+ mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(
16625
+ mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL);
16449
16626
  if (unlikely(mstate->__pyx_CyFunctionType == NULL)) {
16450
16627
  return -1;
16451
16628
  }
@@ -18790,6 +18967,14 @@ static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethods
18790
18967
  type->tp_as_async = __Pyx_SlotTpAsAsync(static_amsend_methods);
18791
18968
  }
18792
18969
  #endif
18970
+ static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg) {
18971
+ CYTHON_UNUSED_VAR(arg);
18972
+ __Pyx_TypeName self_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE((PyObject*)self));
18973
+ PyErr_Format(PyExc_TypeError, "cannot pickle '" __Pyx_FMT_TYPENAME "' object",
18974
+ self_type_name);
18975
+ __Pyx_DECREF_TypeName(self_type_name);
18976
+ return NULL;
18977
+ }
18793
18978
 
18794
18979
  /* Generator */
18795
18980
  static PyMethodDef __pyx_Generator_methods[] = {
@@ -18799,6 +18984,8 @@ static PyMethodDef __pyx_Generator_methods[] = {
18799
18984
  PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
18800
18985
  {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
18801
18986
  PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
18987
+ {"__reduce_ex__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_O, 0},
18988
+ {"__reduce__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_NOARGS, 0},
18802
18989
  {0, 0, 0, 0}
18803
18990
  };
18804
18991
  static PyMemberDef __pyx_Generator_memberlist[] = {
@@ -18851,7 +19038,8 @@ static __Pyx_PyAsyncMethodsStruct __pyx_Generator_as_async;
18851
19038
  #endif
18852
19039
  static int __pyx_Generator_init(PyObject *module) {
18853
19040
  __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
18854
- mstate->__pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_GeneratorType_spec, NULL);
19041
+ mstate->__pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(
19042
+ mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_GeneratorType_spec, NULL);
18855
19043
  if (unlikely(!mstate->__pyx_GeneratorType)) {
18856
19044
  return -1;
18857
19045
  }