# 3.12.3 --\> 3.12.4 regression? \[deep rabbit hole warning\]

**URL:** <https://discuss.python.org/t/3-12-3-3-12-4-regression-deep-rabbit-hole-warning/59584>\
**Category:** Python Help\
**Tags:** documentation, typing, sphinx\
**Created:** [July 31, 2024, 5:53am UTC](https://discuss.python.org/t/3-12-3-3-12-4-regression-deep-rabbit-hole-warning/59584 "2024-07-31T05:53:17Z")\
**Posts on this page:** 1\
**Showing post:** 14

<div class="post-metadata">

**Author:** ![devdanzin](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/devdanzin/32/20558_2.png) [@devdanzin](https://discuss.python.org/u/devdanzin)\
**Post date:** [August 2, 2024, 7:26pm UTC](https://discuss.python.org/t/3-12-3-3-12-4-regression-deep-rabbit-hole-warning/59584/14 "2024-08-02T19:26:13Z")

</div>

> [@dimaqq](#):
>
> The regression is that, somehow, the type annotation is not decoded specifically in overloads.

The regression seems to be basically that Sphix 6.2.1 tried to run code equivalent to below for overloads, and that works in 3.12.3 and doesn’t in 3.12.4 due to a signature change:

```python
import typing
annotation = 'Union[str, PurePath]'
fr = typing.ForwardRef(annotation, True)
print(fr._evaluate(globals(), locals(), frozenset())) 

# There is a new argument in 3.12.4
# The new signature is: _evaluate(self, globalns, localns, type_params, *, recursive_guard)

```

This happens in `sphinx.util.inspect.evaluate_signature`, which is called by `sphinx.ext.autodoc.MethodDocumenter.format_signature` to handle overloads. That function has an exception guard that results in the signature remaining a string instead of a becoming a type.

I think that’s it. You can test this by editing `evaluate_forwardref` inside `sphinx.util.inspect.evaluate_signature` and adding an if branch for 3.12.4 to call `ref._evaluate` with the correct arguments.

---

_[View the full topic](https://discuss.python.org/t/3-12-3-3-12-4-regression-deep-rabbit-hole-warning/59584)._
