From e5c583c8946e5b5840b707cfcffd1638cb7f39a0 Mon Sep 17 00:00:00 2001 From: Voltrex Date: Sun, 13 Sep 2026 16:53:40 -0400 Subject: [PATCH] Honor falsey custom data processors --- fitparse/base.py | 3 ++- tests/test.py | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/fitparse/base.py b/fitparse/base.py index b0ebf87..ee3adb5 100644 --- a/fitparse/base.py +++ b/fitparse/base.py @@ -582,7 +582,8 @@ class DataProcessorMixin: """Add data processing to the FitFileDecoder""" def __init__(self, *args, **kwargs): - self._processor = kwargs.pop("data_processor", None) or FitFileDataProcessor() + processor = kwargs.pop("data_processor", None) + self._processor = FitFileDataProcessor() if processor is None else processor super().__init__(*args, **kwargs) def _parse_data_message(self, header): diff --git a/tests/test.py b/tests/test.py index e4851d5..0475f28 100755 --- a/tests/test.py +++ b/tests/test.py @@ -7,7 +7,7 @@ import warnings from fitparse import FitFile -from fitparse.processors import UTC_REFERENCE, StandardUnitsDataProcessor +from fitparse.processors import FitFileDataProcessor, UTC_REFERENCE, StandardUnitsDataProcessor from fitparse.records import BASE_TYPES, Crc from fitparse.utils import FitEOFError, FitCRCError, FitHeaderError, FitParseError @@ -74,6 +74,22 @@ def testfile(filename): class FitFileTestCase(unittest.TestCase): + def test_uses_falsey_custom_data_processor(self): + class FalseyProcessor(FitFileDataProcessor): + def __init__(self): + self.called = False + + def __bool__(self): + return False + + def run_message_processor(self, data_message): + self.called = True + + processor = FalseyProcessor() + FitFile(testfile('activity-settings.fit'), data_processor=processor).parse() + + self.assertTrue(processor.called) + def test_basic_file_with_one_record(self, endian='<'): f = FitFile(generate_fitfile(endian=endian))