Skip to content

Commit 263bba2

Browse files
Root cause of intermittent failures may have been introduced in 9ad5d2a due to schema generator adding log handlers. Address by reverting previous workaround strategy (bf0000c, 12fab1a), updating client _get_logger method to store loggers by name, and using it instead of an ad hoc implementation in the schema generator.
1 parent 12fab1a commit 263bba2

File tree

3 files changed

+19
-51
lines changed

3 files changed

+19
-51
lines changed

src/geophires_x_client/common.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import logging
22
import sys
33

4-
_geophires_x_client_logger = None
4+
_geophires_x_client_loggers_by_name = {}
55

66

77
def _get_logger(logger_name=None):
8-
global _geophires_x_client_logger
9-
if _geophires_x_client_logger is None:
8+
if logger_name is None:
9+
logger_name = __name__
10+
11+
global _geophires_x_client_loggers_by_name
12+
if logger_name not in _geophires_x_client_loggers_by_name:
1013
sh = logging.StreamHandler(sys.stdout)
1114
sh.setLevel(logging.INFO)
1215
sh.setFormatter(logging.Formatter(fmt='[%(asctime)s][%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S'))
1316

14-
if logger_name is None:
15-
logger_name = __name__
16-
17-
_geophires_x_client_logger = logging.getLogger(logger_name)
18-
_geophires_x_client_logger.addHandler(sh)
17+
_geophires_x_client_loggers_by_name[logger_name] = logging.getLogger(logger_name)
18+
_geophires_x_client_loggers_by_name[logger_name].addHandler(sh)
1919

20-
return _geophires_x_client_logger
20+
return _geophires_x_client_loggers_by_name[logger_name]

src/geophires_x_schema_generator/__init__.py

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import json
2-
import logging
32
import os
43
import sys
54
from pathlib import Path
@@ -28,9 +27,13 @@
2827
from geophires_x.SUTRAWellBores import SUTRAWellBores
2928
from geophires_x.TDPReservoir import TDPReservoir
3029
from geophires_x.TOUGH2Reservoir import TOUGH2Reservoir
31-
from geophires_x_client import GeophiresXResult
30+
31+
# noinspection PyProtectedMember
32+
from geophires_x_client import GeophiresXResult, _get_logger
3233
from hip_ra_x.hip_ra_x import HIP_RA_X
3334

35+
_log = _get_logger()
36+
3437

3538
class GeophiresXSchemaGenerator:
3639
def __init__(self):
@@ -421,20 +424,3 @@ def get_input_schema_reference(self) -> str:
421424

422425
def get_output_schema_reference(self) -> str:
423426
return None
424-
425-
426-
def _get_logger(logger_name=None):
427-
sh = logging.StreamHandler(sys.stdout)
428-
sh.setLevel(logging.INFO)
429-
sh.setFormatter(logging.Formatter(fmt='[%(asctime)s][%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S'))
430-
431-
if logger_name is None:
432-
logger_name = __name__
433-
434-
_l = logging.getLogger(logger_name)
435-
_l.addHandler(sh)
436-
437-
return _l
438-
439-
440-
_log = _get_logger()

tests/test_base_test_case.py

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import os
2-
import platform
3-
import sys
41
import unittest
52

63
from tests.base_test_case import BaseTestCase
@@ -38,26 +35,11 @@ def test_assertAlmostEqualWithinPercentage_bad_arguments(self):
3835
with self.assertRaises(AssertionError):
3936
self.assertAlmostEqualWithinPercentage([1, 2, 3], [1.1, 2.2, 3.3], percent=10.5)
4037

41-
try:
42-
self.assertHasLogRecordWithMessage(
43-
logs,
44-
'Got 2 lists, you probably meant to call:\n\t'
45-
'self.assertListAlmostEqual([1, 2, 3], [1.1, 2.2, 3.3], msg=None, percent=10.5)',
46-
)
47-
except AssertionError as ae:
48-
if (
49-
'CI' in os.environ
50-
and (platform.system() in ['Darwin', 'Linux'])
51-
and (sys.version_info.major, sys.version_info.minor) == (3, 11)
52-
):
53-
# Intermittent failures observed in GitHub Actions py311 macos and ubuntu beginning on 2025-07-23.
54-
# Examples:
55-
# - https://github.com/softwareengineerprogrammer/GEOPHIRES/actions/runs/16476574734/job/46579711905
56-
# - https://github.com/softwareengineerprogrammer/GEOPHIRES/actions/runs/16477002832/job/46581220253
57-
# TODO to investigate and resolve
58-
self.skipTest(f'Skipping test due to platform-specific intermittent failure: {ae!s}')
59-
else:
60-
raise ae
38+
self.assertHasLogRecordWithMessage(
39+
logs,
40+
'Got 2 lists, you probably meant to call:\n\t'
41+
'self.assertListAlmostEqual([1, 2, 3], [1.1, 2.2, 3.3], msg=None, percent=10.5)',
42+
)
6143

6244

6345
if __name__ == '__main__':

0 commit comments

Comments
 (0)