| # This file is dual licensed under the terms of the Apache License, Version | |
| # 2.0, and the BSD License. See the LICENSE file in the root of this repository | |
| # for complete details. | |
| """Backward-compatibility shim for unpickling Version objects serialized before | |
| packaging 26.1. | |
| Old pickles reference ``packaging._structures.InfinityType`` and | |
| ``packaging._structures.NegativeInfinityType``. This module provides minimal | |
| stand-in classes so that ``pickle.loads()`` can resolve those references. | |
| The deserialized objects are not used for comparisons — ``Version.__setstate__`` | |
| discards the stale ``_key`` cache and recomputes it from the core version fields. | |
| """ | |
| from __future__ import annotations | |
| class InfinityType: | |
| """Stand-in for the removed ``InfinityType`` used in old comparison keys.""" | |
| def __repr__(self) -> str: | |
| return "Infinity" | |
| class NegativeInfinityType: | |
| """Stand-in for the removed ``NegativeInfinityType`` used in old comparison keys.""" | |
| def __repr__(self) -> str: | |
| return "-Infinity" | |
| Infinity = InfinityType() | |
| NegativeInfinity = NegativeInfinityType() | |