Mercurial > cpython-lru_cache-weakref
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 |
| 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) |
