From 764c830165aef8fda97665826298a8b7bbc8ec9c Mon Sep 17 00:00:00 2001 From: Romain Baville Date: Mon, 23 Feb 2026 13:26:45 +0100 Subject: [PATCH 1/4] fix handler --- .../geos/processing/pre_processing/MeshQualityEnhanced.py | 6 ++++++ geos-pv/src/geos/pv/plugins/qc/PVMeshQualityEnhanced.py | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py b/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py index 0e75daff..29244716 100644 --- a/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py +++ b/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py @@ -132,6 +132,7 @@ def __init__( self._allCellTypesExtended: tuple[ int, ...] = getAllCellTypesExtended() self._allCellTypes: tuple[ int, ...] = getAllCellTypes() self.speHandler: bool = speHandler + self.handler: logging.Handler # Logger self.logger: Logger @@ -141,6 +142,11 @@ def __init__( self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) self.logger.propagate = False + handlers: list[ logging.Handler ] = self.logger.handlers + for handler in handlers: + if not type( handler ) is type( CountWarningHandler() ): + self.handler = handler + break counter: CountWarningHandler = CountWarningHandler() self.counter: CountWarningHandler diff --git a/geos-pv/src/geos/pv/plugins/qc/PVMeshQualityEnhanced.py b/geos-pv/src/geos/pv/plugins/qc/PVMeshQualityEnhanced.py index d959b1e8..2c00aadc 100644 --- a/geos-pv/src/geos/pv/plugins/qc/PVMeshQualityEnhanced.py +++ b/geos-pv/src/geos/pv/plugins/qc/PVMeshQualityEnhanced.py @@ -58,6 +58,8 @@ Please refer to the `Verdict Manual `_ for metrics and range definitions. """ +HANDLER: logging.Handler = VTKHandler() + @SISOFilter( category=FilterCategory.QC, decoratedLabel="Mesh Quality Enhanced", decoratedType="vtkUnstructuredGrid" ) class PVMeshQualityEnhanced( VTKPythonAlgorithmBase ): @@ -68,8 +70,6 @@ def __init__( self: Self ) -> None: self._saveToFile: bool = True self._blockIndex: int = 0 - self.handler: logging.Handler = VTKHandler() - # Used to concatenate results if vtkMultiBlockDataSet self._metricsAll: list[ float ] = [] @@ -232,8 +232,8 @@ def ApplyFilter( self, inputMesh: vtkUnstructuredGrid, outputMesh: vtkUnstructur otherMetrics: set[ int ] = self._getQualityMetricsToUse( self._commonMeshQualityMetric ) meshQualityEnhancedFilter: MeshQualityEnhanced = MeshQualityEnhanced( inputMesh, True ) - if not isHandlerInLogger( self.handler, meshQualityEnhancedFilter.logger ): - meshQualityEnhancedFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, meshQualityEnhancedFilter.logger ): + meshQualityEnhancedFilter.setLoggerHandler( HANDLER ) meshQualityEnhancedFilter.SetCellQualityMetrics( triangleMetrics=triangleMetrics, quadMetrics=quadMetrics, From 78fd1e77a6f409c89d82b14419f93d4d0b9b30f8 Mon Sep 17 00:00:00 2001 From: Romain Baville Date: Mon, 23 Feb 2026 13:27:12 +0100 Subject: [PATCH 2/4] Update VTKHandler managment --- .../generic_processing/PVAttributeMapping.py | 7 ++++--- .../plugins/generic_processing/PVClipToMainFrame.py | 7 ++++--- .../PVCreateConstantAttributePerRegion.py | 7 ++++--- .../generic_processing/PVFillPartialArrays.py | 7 ++++--- .../generic_processing/PVMergeBlocksEnhanced.py | 7 ++++--- .../pv/plugins/generic_processing/PVSplitMesh.py | 7 ++++--- .../post_processing/PVGeomechanicsCalculator.py | 13 +++++++------ .../post_processing/PVGeomechanicsWorkflow.py | 4 ++-- .../post_processing/PVGeosBlockExtractAndMerge.py | 4 ++-- .../pv/plugins/post_processing/PVGeosLogReader.py | 4 ++-- .../pv/plugins/post_processing/PVMohrCirclePlot.py | 4 ++-- .../post_processing/PVSurfaceGeomechanics.py | 8 ++++---- .../geos/pv/plugins/qc/PVCellTypeCounterEnhanced.py | 8 ++++---- geos-pv/src/geos/pv/utils/workflowFunctions.py | 13 ++++++------- 14 files changed, 53 insertions(+), 47 deletions(-) diff --git a/geos-pv/src/geos/pv/plugins/generic_processing/PVAttributeMapping.py b/geos-pv/src/geos/pv/plugins/generic_processing/PVAttributeMapping.py index d6b07cab..20c29a0b 100644 --- a/geos-pv/src/geos/pv/plugins/generic_processing/PVAttributeMapping.py +++ b/geos-pv/src/geos/pv/plugins/generic_processing/PVAttributeMapping.py @@ -54,6 +54,8 @@ """ +HANDLER: logging.Handler = VTKHandler() + @smproxy.filter( name="PVAttributeMapping", label="Attribute Mapping" ) @smhint.xml( f'' ) @@ -76,7 +78,6 @@ def __init__( self: Self ) -> None: self.piece: Piece = Piece.CELLS self.clearAttributeNames = True self.attributeNames: list[ str ] = [] - self.handler: logging.Handler = VTKHandler() @smproperty.intvector( name="AttributePiece", @@ -190,8 +191,8 @@ def RequestData( attributeMappingFilter: AttributeMapping = AttributeMapping( meshFrom, outData, set( self.attributeNames ), self.piece, True ) - if not isHandlerInLogger( self.handler, attributeMappingFilter.logger ): - attributeMappingFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, attributeMappingFilter.logger ): + attributeMappingFilter.setLoggerHandler( HANDLER ) try: attributeMappingFilter.applyFilter() diff --git a/geos-pv/src/geos/pv/plugins/generic_processing/PVClipToMainFrame.py b/geos-pv/src/geos/pv/plugins/generic_processing/PVClipToMainFrame.py index 4c04589a..3461b134 100644 --- a/geos-pv/src/geos/pv/plugins/generic_processing/PVClipToMainFrame.py +++ b/geos-pv/src/geos/pv/plugins/generic_processing/PVClipToMainFrame.py @@ -36,6 +36,8 @@ """ +HANDLER: logging.Handler = VTKHandler() + @SISOFilter( category=FilterCategory.GENERIC_PROCESSING, decoratedLabel="Clip to the main frame", @@ -45,10 +47,9 @@ class PVClipToMainFrame( VTKPythonAlgorithmBase ): def __init__( self ) -> None: """Init motherclass, filter and logger.""" self._realFilter = ClipToMainFrame( speHandler=True ) - self.handler: logging.Handler = VTKHandler() - if not isHandlerInLogger( self.handler, self._realFilter.logger ): - self._realFilter.SetLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, self._realFilter.logger ): + self._realFilter.SetLoggerHandler( HANDLER ) def ApplyFilter( self, inputMesh: vtkMultiBlockDataSet, outputMesh: vtkMultiBlockDataSet ) -> None: """Is applying clipToMainFrame filter. diff --git a/geos-pv/src/geos/pv/plugins/generic_processing/PVCreateConstantAttributePerRegion.py b/geos-pv/src/geos/pv/plugins/generic_processing/PVCreateConstantAttributePerRegion.py index 372ea2c3..bb8973aa 100644 --- a/geos-pv/src/geos/pv/plugins/generic_processing/PVCreateConstantAttributePerRegion.py +++ b/geos-pv/src/geos/pv/plugins/generic_processing/PVCreateConstantAttributePerRegion.py @@ -50,6 +50,8 @@ """ +HANDLER: logging.Handler = VTKHandler() + @SISOFilter( category=FilterCategory.GENERIC_PROCESSING, decoratedLabel="Create Constant Attribute Per Region", @@ -72,7 +74,6 @@ def __init__( self: Self ) -> None: # Use the handler of paraview for the log. self.speHandler: bool = True - self.handler: logging.Handler = VTKHandler() # Settings of the attribute with the region indexes: @smproperty.stringvector( @@ -292,8 +293,8 @@ def ApplyFilter( self, inputMesh: vtkDataSet, outputMesh: vtkDataSet ) -> None: self.speHandler, ) - if not isHandlerInLogger( self.handler, createConstantAttributePerRegionFilter.logger ): - createConstantAttributePerRegionFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, createConstantAttributePerRegionFilter.logger ): + createConstantAttributePerRegionFilter.setLoggerHandler( HANDLER ) try: createConstantAttributePerRegionFilter.applyFilter() diff --git a/geos-pv/src/geos/pv/plugins/generic_processing/PVFillPartialArrays.py b/geos-pv/src/geos/pv/plugins/generic_processing/PVFillPartialArrays.py index 547945aa..4a6e27d2 100644 --- a/geos-pv/src/geos/pv/plugins/generic_processing/PVFillPartialArrays.py +++ b/geos-pv/src/geos/pv/plugins/generic_processing/PVFillPartialArrays.py @@ -41,6 +41,8 @@ """ +HANDLER: logging.Handler = VTKHandler() + @SISOFilter( category=FilterCategory.GENERIC_PROCESSING, decoratedLabel="Fill Partial Arrays", @@ -51,7 +53,6 @@ def __init__( self: Self, ) -> None: """Fill a partial attribute with constant value per component.""" self.clearDictAttributesValues: bool = True self.dictAttributesValues: dict[ str, Union[ list[ Any ], None ] ] = {} - self.handler: logging.Handler = VTKHandler() @smproperty.xml( """ ' ) @@ -68,7 +70,6 @@ def __init__( self: Self ) -> None: inputType="vtkMultiBlockDataSet", outputType="vtkUnstructuredGrid", ) - self.handler: logging.Handler = VTKHandler() def RequestDataObject( self: Self, @@ -118,8 +119,8 @@ def RequestData( mergeBlockEnhancedFilter: MergeBlockEnhanced = MergeBlockEnhanced( inputMesh, True ) - if not isHandlerInLogger( self.handler, mergeBlockEnhancedFilter.logger ): - mergeBlockEnhancedFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, mergeBlockEnhancedFilter.logger ): + mergeBlockEnhancedFilter.setLoggerHandler( HANDLER ) try: mergeBlockEnhancedFilter.applyFilter() diff --git a/geos-pv/src/geos/pv/plugins/generic_processing/PVSplitMesh.py b/geos-pv/src/geos/pv/plugins/generic_processing/PVSplitMesh.py index 81da5b81..7a3b15d5 100644 --- a/geos-pv/src/geos/pv/plugins/generic_processing/PVSplitMesh.py +++ b/geos-pv/src/geos/pv/plugins/generic_processing/PVSplitMesh.py @@ -39,13 +39,14 @@ """ +HANDLER: logging.Handler = VTKHandler() + @SISOFilter( category=FilterCategory.GENERIC_PROCESSING, decoratedLabel="Split Mesh", decoratedType="vtkPointSet" ) class PVSplitMesh( VTKPythonAlgorithmBase ): def __init__( self: Self ) -> None: """Split mesh cells.""" - self.handler: logging.Handler = VTKHandler() def ApplyFilter( self: Self, inputMesh: vtkPointSet, outputMesh: vtkPointSet ) -> None: """Apply vtk filter. @@ -55,8 +56,8 @@ def ApplyFilter( self: Self, inputMesh: vtkPointSet, outputMesh: vtkPointSet ) - outputMesh: Output mesh. """ splitMeshFilter: SplitMesh = SplitMesh( inputMesh, True ) - if not isHandlerInLogger( self.handler, splitMeshFilter.logger ): - splitMeshFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, splitMeshFilter.logger ): + splitMeshFilter.setLoggerHandler( HANDLER ) try: splitMeshFilter.applyFilter() diff --git a/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsCalculator.py b/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsCalculator.py index 693a5f5f..0f707256 100644 --- a/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsCalculator.py +++ b/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsCalculator.py @@ -73,6 +73,8 @@ """ +HANDLER: logging.Handler = VTKHandler() + loggerTitle: str = "Geomechanics Calculator" @@ -93,10 +95,9 @@ def __init__( self: Self ) -> None: self.rockCohesion: float = DEFAULT_ROCK_COHESION self.frictionAngle: float = DEFAULT_FRICTION_ANGLE_DEG - self.handler: logging.Handler = VTKHandler() self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) - self.logger.addHandler( self.handler ) + self.logger.addHandler( HANDLER ) self.logger.propagate = False counter: CountWarningHandler = CountWarningHandler() @@ -265,8 +266,8 @@ def ApplyFilter( speHandler=True, ) - if not isHandlerInLogger( self.handler, geomechanicsCalculatorFilter.logger ): - geomechanicsCalculatorFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, geomechanicsCalculatorFilter.logger ): + geomechanicsCalculatorFilter.setLoggerHandler( HANDLER ) geomechanicsCalculatorFilter.physicalConstants.grainBulkModulus = self.grainBulkModulus geomechanicsCalculatorFilter.physicalConstants.specificDensity = self.specificDensity @@ -303,8 +304,8 @@ def ApplyFilter( True, ) - if not isHandlerInLogger( self.handler, geomechanicsCalculatorFilter.logger ): - geomechanicsCalculatorFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, geomechanicsCalculatorFilter.logger ): + geomechanicsCalculatorFilter.setLoggerHandler( HANDLER ) geomechanicsCalculatorFilter.physicalConstants.grainBulkModulus = self.grainBulkModulus geomechanicsCalculatorFilter.physicalConstants.specificDensity = self.specificDensity diff --git a/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsWorkflow.py b/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsWorkflow.py index 0b446062..efb1c089 100644 --- a/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsWorkflow.py +++ b/geos-pv/src/geos/pv/plugins/post_processing/PVGeomechanicsWorkflow.py @@ -85,6 +85,7 @@ """ +HANDLER: logging.Handler = VTKHandler() loggerTitle: str = "GEOS Geomechanics Workflow" @@ -139,10 +140,9 @@ def __init__( self: Self ) -> None: self.rockCohesion: float = DEFAULT_ROCK_COHESION self.frictionAngle: float = DEFAULT_FRICTION_ANGLE_DEG - self.handler: logging.Handler = VTKHandler() self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) - self.logger.addHandler( self.handler ) + self.logger.addHandler( HANDLER ) self.logger.propagate = False counter: CountWarningHandler = CountWarningHandler() diff --git a/geos-pv/src/geos/pv/plugins/post_processing/PVGeosBlockExtractAndMerge.py b/geos-pv/src/geos/pv/plugins/post_processing/PVGeosBlockExtractAndMerge.py index dff27de7..62e415a8 100644 --- a/geos-pv/src/geos/pv/plugins/post_processing/PVGeosBlockExtractAndMerge.py +++ b/geos-pv/src/geos/pv/plugins/post_processing/PVGeosBlockExtractAndMerge.py @@ -82,6 +82,7 @@ """ +HANDLER: logging.Handler = VTKHandler() loggerTitle: str = "Extract & Merge GEOS Block" @@ -129,10 +130,9 @@ def __init__( self: Self ) -> None: self.outputCellsT0: vtkMultiBlockDataSet = vtkMultiBlockDataSet() - self.handler: logging.Handler = VTKHandler() self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) - self.logger.addHandler( self.handler ) + self.logger.addHandler( HANDLER ) self.logger.propagate = False counter: CountWarningHandler = CountWarningHandler() diff --git a/geos-pv/src/geos/pv/plugins/post_processing/PVGeosLogReader.py b/geos-pv/src/geos/pv/plugins/post_processing/PVGeosLogReader.py index 4b8aea9f..b46fd463 100644 --- a/geos-pv/src/geos/pv/plugins/post_processing/PVGeosLogReader.py +++ b/geos-pv/src/geos/pv/plugins/post_processing/PVGeosLogReader.py @@ -60,6 +60,7 @@ """ +HANDLER: logging.Handler = VTKHandler() loggerTitle: str = "Geos Log Reader" @@ -150,10 +151,9 @@ def __init__( self: Self ) -> None: for prop in propsSolvers: self.m_convergence.AddArray( prop ) - self.handler: logging.Handler = VTKHandler() self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) - self.logger.addHandler( self.handler ) + self.logger.addHandler( HANDLER ) self.logger.propagate = False counter: CountWarningHandler = CountWarningHandler() diff --git a/geos-pv/src/geos/pv/plugins/post_processing/PVMohrCirclePlot.py b/geos-pv/src/geos/pv/plugins/post_processing/PVMohrCirclePlot.py index e3ff2585..625ac5c3 100644 --- a/geos-pv/src/geos/pv/plugins/post_processing/PVMohrCirclePlot.py +++ b/geos-pv/src/geos/pv/plugins/post_processing/PVMohrCirclePlot.py @@ -91,6 +91,7 @@ * The attribute 'CellId' has to be used for the 'Selection Labels'. """ +HANDLER: logging.Handler = VTKHandler() loggerTitle: str = "Mohr Circle" @@ -181,10 +182,9 @@ def __init__( self: Self ) -> None: # Request data processing step - incremented each time RequestUpdateExtent is called self.requestDataStep: int = -1 - self.handler: logging.Handler = VTKHandler() self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) - self.logger.addHandler( self.handler ) + self.logger.addHandler( HANDLER ) self.logger.propagate = False counter: CountWarningHandler = CountWarningHandler() diff --git a/geos-pv/src/geos/pv/plugins/post_processing/PVSurfaceGeomechanics.py b/geos-pv/src/geos/pv/plugins/post_processing/PVSurfaceGeomechanics.py index 2cbc5ba2..f63c2b82 100644 --- a/geos-pv/src/geos/pv/plugins/post_processing/PVSurfaceGeomechanics.py +++ b/geos-pv/src/geos/pv/plugins/post_processing/PVSurfaceGeomechanics.py @@ -52,6 +52,7 @@ """ +HANDLER: logging.Handler = VTKHandler() loggerTitle: str = "Surface Geomechanics" @@ -70,10 +71,9 @@ def __init__( self: Self ) -> None: # friction angle (°) self.frictionAngle: float = DEFAULT_FRICTION_ANGLE_DEG - self.handler: logging.Handler = VTKHandler() self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) - self.logger.addHandler( self.handler ) + self.logger.addHandler( HANDLER ) self.logger.propagate = False counter: CountWarningHandler = CountWarningHandler() @@ -148,8 +148,8 @@ def ApplyFilter( self: Self, inputMesh: vtkMultiBlockDataSet, outputMesh: vtkMul loggerName: str = f"Surface geomechanics for the blockIndex { blockIndex }" sgFilter: SurfaceGeomechanics = SurfaceGeomechanics( surfaceBlock, loggerName, True ) - if not isHandlerInLogger( self.handler, sgFilter.logger ): - sgFilter.SetLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, sgFilter.logger ): + sgFilter.SetLoggerHandler( HANDLER ) sgFilter.SetRockCohesion( self._getRockCohesion() ) sgFilter.SetFrictionAngle( self._getFrictionAngle() ) diff --git a/geos-pv/src/geos/pv/plugins/qc/PVCellTypeCounterEnhanced.py b/geos-pv/src/geos/pv/plugins/qc/PVCellTypeCounterEnhanced.py index 44e99ced..c46c429a 100644 --- a/geos-pv/src/geos/pv/plugins/qc/PVCellTypeCounterEnhanced.py +++ b/geos-pv/src/geos/pv/plugins/qc/PVCellTypeCounterEnhanced.py @@ -41,6 +41,8 @@ """ +HANDLER: logging.Handler = VTKHandler() + @smproxy.filter( name="PVCellTypeCounterEnhanced", label="Cell Type Counter Enhanced" ) @smhint.xml( f'' ) @@ -60,8 +62,6 @@ def __init__( self: Self ) -> None: # used to concatenate results if vtkMultiBlockDataSet self._countsAll: CellTypeCounts = CellTypeCounts() - self.handler: logging.Handler = VTKHandler() - @smproperty.intvector( name="SetSaveToFile", label="Save to file", @@ -141,8 +141,8 @@ def RequestData( assert outputTable is not None, "Output pipeline is null." cellTypeCounterEnhancedFilter: CellTypeCounterEnhanced = CellTypeCounterEnhanced( inputMesh, True ) - if not isHandlerInLogger( self.handler, cellTypeCounterEnhancedFilter.logger ): - cellTypeCounterEnhancedFilter.setLoggerHandler( self.handler ) + if not isHandlerInLogger( HANDLER, cellTypeCounterEnhancedFilter.logger ): + cellTypeCounterEnhancedFilter.setLoggerHandler( HANDLER ) try: cellTypeCounterEnhancedFilter.applyFilter() diff --git a/geos-pv/src/geos/pv/utils/workflowFunctions.py b/geos-pv/src/geos/pv/utils/workflowFunctions.py index 1a66f1a7..88b6f6f8 100644 --- a/geos-pv/src/geos/pv/utils/workflowFunctions.py +++ b/geos-pv/src/geos/pv/utils/workflowFunctions.py @@ -9,8 +9,9 @@ from vtkmodules.vtkCommonDataModel import vtkMultiBlockDataSet -from paraview.detail.loghandler import ( VTKHandler ) # type: ignore[import-not-found] +from paraview.detail.loghandler import VTKHandler # type: ignore[import-not-found] +HANDLER: logging.Handler = VTKHandler() def doExtractAndMerge( mesh: vtkMultiBlockDataSet, @@ -37,9 +38,8 @@ def doExtractAndMerge( extractFault=extractFault, extractWell=extractWell, speHandler=True ) - handler: logging.Handler = VTKHandler() - if not isHandlerInLogger( handler, blockExtractor.logger ): - blockExtractor.setLoggerHandler( handler ) + if not isHandlerInLogger( HANDLER, blockExtractor.logger ): + blockExtractor.setLoggerHandler( HANDLER ) blockExtractor.applyFilter() # Add to the warning counter the number of warning logged with the call of GeosBlockExtractor filter @@ -84,9 +84,8 @@ def mergeBlocksFilter( """ loggerName = f"GEOS Block Merge for the domain { domainToMerge }" mergeBlockFilter: GeosBlockMerge = GeosBlockMerge( mesh, convertSurfaces, True, loggerName ) - handler: logging.Handler = VTKHandler() - if not isHandlerInLogger( handler, mergeBlockFilter.logger ): - mergeBlockFilter.setLoggerHandler( handler ) + if not isHandlerInLogger( HANDLER, mergeBlockFilter.logger ): + mergeBlockFilter.setLoggerHandler( HANDLER ) mergeBlockFilter.applyFilter() # Add to the warning counter the number of warning logged with the call of GeosBlockMerge filter From 13e79548614455af12f1f9616d963eb204864e54 Mon Sep 17 00:00:00 2001 From: Romain Baville Date: Mon, 23 Feb 2026 13:42:10 +0100 Subject: [PATCH 3/4] clean for ci --- .../src/geos/processing/pre_processing/MeshQualityEnhanced.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py b/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py index 29244716..076079ce 100644 --- a/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py +++ b/geos-processing/src/geos/processing/pre_processing/MeshQualityEnhanced.py @@ -143,8 +143,10 @@ def __init__( self.logger.setLevel( logging.INFO ) self.logger.propagate = False handlers: list[ logging.Handler ] = self.logger.handlers + # Get the handler to specify if the logger already exist and have it for handler in handlers: - if not type( handler ) is type( CountWarningHandler() ): + # The CountWarningHandler can't be the handler to specify + if type( handler ) is not type( CountWarningHandler() ): self.handler = handler break From 9562855eaa0811d9ab27d73da91aa9fb111c967a Mon Sep 17 00:00:00 2001 From: Romain Baville Date: Mon, 23 Feb 2026 15:42:50 +0100 Subject: [PATCH 4/4] Fix Hanlder managment --- .../geos/processing/generic_processing_tools/SplitMesh.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/geos-processing/src/geos/processing/generic_processing_tools/SplitMesh.py b/geos-processing/src/geos/processing/generic_processing_tools/SplitMesh.py index 2695c8f8..9d99aa86 100644 --- a/geos-processing/src/geos/processing/generic_processing_tools/SplitMesh.py +++ b/geos-processing/src/geos/processing/generic_processing_tools/SplitMesh.py @@ -83,6 +83,13 @@ def __init__( self, inputMesh: vtkUnstructuredGrid, speHandler: bool = False ) - self.logger = logging.getLogger( loggerTitle ) self.logger.setLevel( logging.INFO ) self.logger.propagate = False + handlers: list[ logging.Handler ] = self.logger.handlers + # Get the handler to specify if the logger already exist and have it + for handler in handlers: + # The CountWarningHandler can't be the handler to specify + if type( handler ) is not type( CountWarningHandler() ): + self.handler = handler + break counter: CountWarningHandler = CountWarningHandler() self.counter: CountWarningHandler