New GitHub issue #101478 from akeeman:<br>

<hr>

<pre>
<!--
 If you're new to Python and you're not sure whether what you're experiencing is a bug, the CPython issue tracker is not
  the right place to seek help. Consider the following options instead:

  - reading the Python tutorial: https://docs.python.org/3/tutorial/
  - posting in the "Users" category on discuss.python.org: https://discuss.python.org/c/users/7
  - emailing the Python-list mailing list: https://mail.python.org/mailman/listinfo/python-list
  - searching our issue tracker (https://github.com/python/cpython/issues) to see if
    your problem has already been reported
-->

# Bug report

Updating a set with an instance of keys_view using the `|=` operator results in a new object, instead of an updated one.

This is unlike updating a set with an other set or a frozenset using the same operator, or using the update method. Given the [docs](https://docs.python.org/3.8/library/stdtypes.html#frozenset.update) I expect all cases to behave the same, and expect the following snippet to not fail. Yet it fails.

```python
x = set()
y = x

y |= {13: 37}.keys()

assert x is y
```


# Your environment
- CPython versions tested on: 3.8.10, 3.8.16, 3.9.x, 3.10.x
- Operating system and architecture: windows, linux


</pre>

<hr>

<a href="https://github.com/python/cpython/issues/101478">View on GitHub</a>
<p>Labels: type-bug</p>
<p>Assignee: </p>