From 7e71fa5cfa250968eafdb77356621e3a9bbb0648 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 18 Dec 2004 19:07:19 +0000 Subject: Bug #1083645 * The decimal module wouldn't load on builds without threads. --- Lib/decimal.py | 15 +++++++++++++-- Lib/test/test_decimal.py | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Lib/decimal.py b/Lib/decimal.py index f9c065f..05bdc99 100644 --- a/Lib/decimal.py +++ b/Lib/decimal.py @@ -134,7 +134,6 @@ __all__ = [ 'setcontext', 'getcontext' ] -import threading import copy #Rounding @@ -385,7 +384,19 @@ _condition_map = {ConversionSyntax:InvalidOperation, # The getcontext() and setcontext() function manage access to a thread-local # current context. Py2.4 offers direct support for thread locals. If that # is not available, use threading.currentThread() which is slower but will -# work for older Pythons. +# work for older Pythons. If threads are not part of the build, create a +# mock threading object with threading.local() returning the module namespace. + +try: + import threading +except ImportError: + # Python was compiled without threads; create a mock object instead + import sys + class MockThreading: + def local(self, sys=sys): + return sys.modules[__name__] + threading = MockThreading() + del sys, MockThreading try: threading.local diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 06e8b9d..f523a72 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -32,8 +32,11 @@ import os, sys import pickle, copy from decimal import * from test.test_support import TestSkipped, run_unittest, run_doctest, is_resource_enabled -import threading import random +try: + import threading +except ImportError: + threading = None # Useful Test Constant Signals = getcontext().flags.keys() @@ -724,7 +727,11 @@ def thfunc2(cls): class DecimalUseOfContextTest(unittest.TestCase): '''Unit tests for Use of Context cases in Decimal.''' - import threading + try: + import threading + except ImportError: + threading = None + # Take care executing this test from IDLE, there's an issue in threading # that hangs IDLE and I couldn't find it @@ -745,6 +752,9 @@ class DecimalUseOfContextTest(unittest.TestCase): self.finish1.wait() return + if threading is None: + del test_threading + class DecimalUsabilityTest(unittest.TestCase): '''Unit tests for Usability cases of Decimal.''' -- cgit v0.12