fixed bug introduced by aggr strat refac: singleton lists are now unpacked before upload via default merge function

This commit is contained in:
Matthias Bisping 2022-06-20 16:36:40 +02:00
parent d52ac8fd74
commit 2362619bef
2 changed files with 9 additions and 3 deletions

View File

@ -1,7 +1,7 @@
from collections import deque
from typing import Callable
from funcy import omit, filter
from funcy import omit, filter, first
from more_itertools import peekable
from pyinfra.server.dispatcher.dispatcher import Nothing, is_not_nothing
@ -10,10 +10,16 @@ from pyinfra.visitor.strategies.response.response import ResponseStrategy
from pyinfra.visitor.utils import build_storage_upload_info
def default_merge(items):
merged = list(items)
merged = first(merged) if len(merged) == 1 else merged
return merged
class AggregationStorageStrategy(ResponseStrategy):
def __init__(self, storage, merger: Callable = None):
self.storage = storage
self.merger = merger or list
self.merger = merger or default_merge
self.buffer = deque()
self.response_files = deque()

View File

@ -4,7 +4,7 @@ from itertools import starmap, repeat, chain
from operator import itemgetter
import pytest
from funcy import compose, lpluck, first, second, pluck, lflatten
from funcy import compose, first, second, pluck, lflatten
from pyinfra.default_objects import (
get_callback,