annotate Lib/test/double_const.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 9c930a32cebb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 24442
diff changeset
1 from test.support import TestFailed
17699
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
2
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
3 # A test for SF bug 422177: manifest float constants varied way too much in
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
4 # precision depending on whether Python was loading a module for the first
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
5 # time, or reloading it from a precompiled .pyc. The "expected" failure
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
6 # mode is that when test_import imports this after all .pyc files have been
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
7 # erased, it passes, but when test_import imports this from
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
8 # double_const.pyc, it fails. This indicates a woeful loss of precision in
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
9 # the marshal format for doubles. It's also possible that repr() doesn't
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
10 # produce enough digits to get reasonable precision for this box.
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
11
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
12 PI = 3.14159265358979324
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
13 TWOPI = 6.28318530717958648
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
14
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
15 PI_str = "3.14159265358979324"
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
16 TWOPI_str = "6.28318530717958648"
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
17
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
18 # Verify that the double x is within a few bits of eval(x_str).
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
19 def check_ok(x, x_str):
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
20 assert x > 0.0
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
21 x2 = eval(x_str)
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
22 assert x2 > 0.0
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
23 diff = abs(x - x2)
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
24 # If diff is no larger than 3 ULP (wrt x2), then diff/8 is no larger
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
25 # than 0.375 ULP, so adding diff/8 to x2 should have no effect.
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
26 if x2 + (diff / 8.) != x2:
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
27 raise TestFailed("Manifest const %s lost too much precision " % x_str)
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
28
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
29 check_ok(PI, PI_str)
54623626da4e This is a test showing SF bug 422177. It won't trigger until I check in
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
30 check_ok(TWOPI, TWOPI_str)