Skip to content

Commit 82f4d7c

Browse files
jaracoclaude
andcommitted
Restore 'origin' to IDistribution.
Consumers should be able to rely on it, and the exemption now keeps a provider on Python 3.11 or 3.12, whose stdlib has no origin to inherit, from being warned about its absence. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent c8c15a9 commit 82f4d7c

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

‎importlib_metadata/_meta.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ def files(self) -> list[IPackagePath] | None: ... # pragma: no cover
136136
@property
137137
def requires(self) -> list[str] | None: ... # pragma: no cover
138138

139+
@property
140+
def origin(self) -> Any: ... # pragma: no cover
141+
139142
@classmethod
140143
def discover(
141144
cls, *, context: Any | None = None, **kwargs: Any

‎tests/compat/test_protocols.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55

66
import importlib.metadata as stdlib
77
import pathlib
8+
import sys
89
import tempfile
910
import unittest
1011

1112
from importlib_metadata import IDistribution, IPackagePath, PackageMetadata
13+
from importlib_metadata.compat import py312
1214

1315

1416
class StdlibProtocolTests(unittest.TestCase):
@@ -23,6 +25,12 @@ def setUp(self):
2325
)
2426
self.dist = stdlib.PathDistribution(dist_info)
2527

28+
def test_stdlib_distribution_conforms(self):
29+
assert py312.conforms(self.dist, IDistribution)
30+
31+
@unittest.skipIf(
32+
sys.version_info < (3, 13), "stdlib Distribution.origin added in Python 3.13"
33+
)
2634
def test_stdlib_distribution_matches_protocol(self):
2735
assert isinstance(self.dist, IDistribution)
2836

0 commit comments

Comments
 (0)