MCPcopy Index your code
hub / github.com/python/cpython / test_whence

Method test_whence

Lib/test/test_interpreters/test_api.py:2277–2318  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2275
2276 @requires_test_modules
2277 def test_whence(self):
2278 with self.subTest('main'):
2279 interpid, *_ = _interpreters.get_main()
2280 whence = _interpreters.whence(interpid)
2281 self.assertEqual(whence, _interpreters.WHENCE_RUNTIME)
2282
2283 with self.subTest('stdlib'):
2284 interpid = _interpreters.create()
2285 whence = _interpreters.whence(interpid)
2286 self.assertEqual(whence, _interpreters.WHENCE_STDLIB)
2287
2288 for orig, name in {
2289 _interpreters.WHENCE_UNKNOWN: 'not ready',
2290 _interpreters.WHENCE_LEGACY_CAPI: 'legacy C-API',
2291 _interpreters.WHENCE_CAPI: 'C-API',
2292 _interpreters.WHENCE_XI: 'cross-interpreter C-API',
2293 }.items():
2294 with self.subTest(f'from C-API ({orig}: {name})'):
2295 with self.interpreter_from_capi(whence=orig) as interpid:
2296 whence = _interpreters.whence(interpid)
2297 self.assertEqual(whence, orig)
2298
2299 with self.subTest('from C-API, running'):
2300 text = self.run_temp_from_capi(dedent(f"""
2301 import _interpreters
2302 interpid, *_ = _interpreters.get_current()
2303 print(_interpreters.whence(interpid))
2304 """),
2305 config=True)
2306 whence = eval(text)
2307 self.assertEqual(whence, _interpreters.WHENCE_CAPI)
2308
2309 with self.subTest('from legacy C-API, running'):
2310 ...
2311 text = self.run_temp_from_capi(dedent(f"""
2312 import _interpreters
2313 interpid, *_ = _interpreters.get_current()
2314 print(_interpreters.whence(interpid))
2315 """),
2316 config=False)
2317 whence = eval(text)
2318 self.assertEqual(whence, _interpreters.WHENCE_LEGACY_CAPI)
2319
2320 def test_contextvars_missing(self):
2321 script = f"""

Callers

nothing calls this directly

Calls 8

dedentFunction · 0.90
whenceMethod · 0.80
interpreter_from_capiMethod · 0.80
run_temp_from_capiMethod · 0.80
subTestMethod · 0.45
assertEqualMethod · 0.45
createMethod · 0.45
itemsMethod · 0.45

Tested by

no test coverage detected