|
22 | 22 | #define WRAPT_HEAPTYPE_STRONG_TYPEREF 1 |
23 | 23 | #endif |
24 | 24 |
|
| 25 | +/* Python 3.10 needs extra __annotations__ entries in PyGetSetDef of |
| 26 | + * subclasses. */ |
| 27 | +#if PY_VERSION_HEX >= 0x030a0000 |
| 28 | +#define WRAPT_ANNOTATIONS_GETSET_WORKAROUND 1 |
| 29 | +#endif |
| 30 | + |
25 | 31 | /* ------------------------------------------------------------------------- */ |
26 | 32 |
|
27 | 33 | typedef struct { |
@@ -1701,6 +1707,10 @@ static PyGetSetDef WraptCallableObjectProxy_getset[] = { |
1701 | 1707 | (setter)WraptObjectProxy_set_module, 0 }, |
1702 | 1708 | { "__doc__", (getter)WraptObjectProxy_get_doc, |
1703 | 1709 | (setter)WraptObjectProxy_set_doc, 0 }, |
| 1710 | +#ifdef WRAPT_ANNOTATIONS_GETSET_WORKAROUND |
| 1711 | + { "__annotations__", (getter)WraptObjectProxy_get_annotations, |
| 1712 | + (setter)WraptObjectProxy_set_annotations, 0 }, |
| 1713 | +#endif |
1704 | 1714 | { NULL }, |
1705 | 1715 | }; |
1706 | 1716 |
|
@@ -1912,6 +1922,10 @@ static PyGetSetDef WraptPartialCallableObjectProxy_getset[] = { |
1912 | 1922 | (setter)WraptObjectProxy_set_module, 0 }, |
1913 | 1923 | { "__doc__", (getter)WraptObjectProxy_get_doc, |
1914 | 1924 | (setter)WraptObjectProxy_set_doc, 0 }, |
| 1925 | +#ifdef WRAPT_ANNOTATIONS_GETSET_WORKAROUND |
| 1926 | + { "__annotations__", (getter)WraptObjectProxy_get_annotations, |
| 1927 | + (setter)WraptObjectProxy_set_annotations, 0 }, |
| 1928 | +#endif |
1915 | 1929 | { NULL }, |
1916 | 1930 | }; |
1917 | 1931 |
|
@@ -2448,6 +2462,10 @@ static PyGetSetDef WraptFunctionWrapperBase_getset[] = { |
2448 | 2462 | (setter)WraptObjectProxy_set_module, 0 }, |
2449 | 2463 | { "__doc__", (getter)WraptObjectProxy_get_doc, |
2450 | 2464 | (setter)WraptObjectProxy_set_doc, 0 }, |
| 2465 | +#ifdef WRAPT_ANNOTATIONS_GETSET_WORKAROUND |
| 2466 | + { "__annotations__", (getter)WraptObjectProxy_get_annotations, |
| 2467 | + (setter)WraptObjectProxy_set_annotations, 0 }, |
| 2468 | +#endif |
2451 | 2469 | { "_self_instance", (getter)WraptFunctionWrapperBase_get_self_instance, |
2452 | 2470 | NULL, 0 }, |
2453 | 2471 | { "_self_wrapper", (getter)WraptFunctionWrapperBase_get_self_wrapper, |
@@ -2637,6 +2655,10 @@ static PyGetSetDef WraptBoundFunctionWrapper_getset[] = { |
2637 | 2655 | (setter)WraptObjectProxy_set_module, 0 }, |
2638 | 2656 | { "__doc__", (getter)WraptObjectProxy_get_doc, |
2639 | 2657 | (setter)WraptObjectProxy_set_doc, 0 }, |
| 2658 | +#ifdef WRAPT_ANNOTATIONS_GETSET_WORKAROUND |
| 2659 | + { "__annotations__", (getter)WraptObjectProxy_get_annotations, |
| 2660 | + (setter)WraptObjectProxy_set_annotations, 0 }, |
| 2661 | +#endif |
2640 | 2662 | { NULL }, |
2641 | 2663 | }; |
2642 | 2664 |
|
@@ -2747,6 +2769,10 @@ static PyGetSetDef WraptFunctionWrapper_getset[] = { |
2747 | 2769 | (setter)WraptObjectProxy_set_module, 0 }, |
2748 | 2770 | { "__doc__", (getter)WraptObjectProxy_get_doc, |
2749 | 2771 | (setter)WraptObjectProxy_set_doc, 0 }, |
| 2772 | +#ifdef WRAPT_ANNOTATIONS_GETSET_WORKAROUND |
| 2773 | + { "__annotations__", (getter)WraptObjectProxy_get_annotations, |
| 2774 | + (setter)WraptObjectProxy_set_annotations, 0 }, |
| 2775 | +#endif |
2750 | 2776 | { NULL }, |
2751 | 2777 | }; |
2752 | 2778 |
|
|
0 commit comments