def _fix_quantities(tree):
    '''
    Stupidly simple function to fix any Items/Quantity disparities inside a
    DistributionConfig block before use. Since AWS only accepts JSON-encodable
    data types, this implementation is "good enough" for our purposes.
    '''
    if isinstance(tree, dict):
        tree = {k: _fix_quantities(v) for k, v in tree.items()}
        if isinstance(tree.get('Items'), list):
            tree['Quantity'] = len(tree['Items'])
            if not tree['Items']:
                tree.pop('Items')  # Silly, but AWS requires it....
        return tree
    elif isinstance(tree, list):
        return [_fix_quantities(t) for t in tree]
    else:
        return tree
def _fix_quantities ( tree ) : if isinstance ( tree , dict ) : tree = { k : _fix_quantities ( v ) for k , v in tree . items ( ) } if isinstance ( tree . get ( 'Items' ) , list ) : tree [ 'Quantity' ] = len ( tree [ 'Items' ] ) if not tree [ 'Items' ] : tree . pop ( 'Items' ) return tree elif isinstance ( tree , list ) : return [ _fix_quantities ( t ) for t in tree ] else : return tree
Stupidly simple function to fix any Items/Quantity disparities inside a
    DistributionConfig block before use. Since AWS only accepts JSON-encodable
    data types, this implementation is "good enough" for our purposes.