Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ccflow/callable.py
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ def get_options(cls, model: CallableModelType, model_options: FlowOptions | None
current_options = cls._apply_options(current_options, model_options)
# Then apply the model meta-provided options
if model.meta.options:
current_options = model.meta.options
current_options = cls._apply_options(current_options, model.meta.options)
# Then apply all model-specific overrides
for override in overrides:
if any(model is m for m in override.models) or isinstance(model, override.model_types):
Expand Down
17 changes: 17 additions & 0 deletions ccflow/tests/test_decorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,23 @@ def test_override_precedence(self):
self.assertEqual(get_options(model), new_options)
self.assertEqual(get_options(model), options)

def test_meta_keeps_unset_global_options(self):
# meta only overrides the fields it sets, so a globally configured evaluator still applies
evaluator = DummyEvaluator()
model = DefaultModel(meta={"options": {"cacheable": False}})
get_options = DefaultModel.__call__.get_options
with FlowOptionsOverride(options=FlowOptions(evaluator=evaluator, cacheable=True, log_level=logging.WARNING)):
options = get_options(model)
self.assertIs(options.evaluator, evaluator)
self.assertEqual(options.log_level, logging.WARNING)
self.assertFalse(options.cacheable)

def test_meta_keeps_unset_decorator_options(self):
model = MyModel(meta={"options": {"cacheable": True}})
options = MyModel.__call__.get_options(model)
self.assertEqual(options.log_level, logging.WARNING)
self.assertTrue(options.cacheable)


class TestFlowOptionsOverride(TestCase):
def setUp(self):
Expand Down
Loading