This seems to meet all your requirements:
import itertools                                                                                                                                                                                                                                                                                                              
def f(ls):                                                                                                                                                                                                                                                                                                                    
  if not ls:                                                                                                                                                                                                                                                                                                                  
    yield []
  for i in range(1, len(ls) + 1):                                                                                                                                                                                                                                                                                             
    for combo in itertools.combinations(ls, i):                                                                                                                                                                                                                                                                               
      for rest in f(set(ls) - set(combo)):                                                                                                                                                                                                                                                                                    
        yield [list(combo), *rest]                                                                                                                                                                                                                                                                                            
Output:
[['A'], ['C'], ['B'], ['D']]                                                                                                                                                                                                                                                                                                  
[['A'], ['C'], ['D'], ['B']]                                                                                                                                                                                                                                                                                                  
[['A'], ['C'], ['B', 'D']]                                                                                                                                                                                                                                                                                                    
[['A'], ['B'], ['C'], ['D']]                                                                                                                                                                                                                                                                                                  
[['A'], ['B'], ['D'], ['C']]
[['A'], ['B'], ['C', 'D']]
[['A'], ['D'], ['C'], ['B']]
[['A'], ['D'], ['B'], ['C']]
[['A'], ['D'], ['C', 'B']]
[['A'], ['C', 'B'], ['D']]
[['A'], ['C', 'D'], ['B']]
[['A'], ['B', 'D'], ['C']]
[['A'], ['C', 'B', 'D']]
[['B'], ['C'], ['A'], ['D']]
[['B'], ['C'], ['D'], ['A']]
[['B'], ['C'], ['A', 'D']]
[['B'], ['A'], ['C'], ['D']]
[['B'], ['A'], ['D'], ['C']]
[['B'], ['A'], ['C', 'D']]
[['B'], ['D'], ['C'], ['A']]
[['B'], ['D'], ['A'], ['C']]
[['B'], ['D'], ['C', 'A']]
[['B'], ['C', 'A'], ['D']]
[['B'], ['C', 'D'], ['A']]
[['B'], ['A', 'D'], ['C']]
[['B'], ['C', 'A', 'D']]
[['C'], ['B'], ['A'], ['D']]
[['C'], ['B'], ['D'], ['A']]
[['C'], ['B'], ['A', 'D']]
[['C'], ['A'], ['B'], ['D']]
[['C'], ['A'], ['D'], ['B']]
[['C'], ['A'], ['B', 'D']]
[['C'], ['D'], ['B'], ['A']]
[['C'], ['D'], ['A'], ['B']]
[['C'], ['D'], ['B', 'A']]
[['C'], ['B', 'A'], ['D']]
[['C'], ['B', 'D'], ['A']]
[['C'], ['A', 'D'], ['B']]
[['C'], ['B', 'A', 'D']]
[['D'], ['C'], ['B'], ['A']]
[['D'], ['C'], ['A'], ['B']]
[['D'], ['C'], ['B', 'A']]
[['D'], ['B'], ['C'], ['A']]
[['D'], ['B'], ['A'], ['C']]
[['D'], ['B'], ['C', 'A']]
[['D'], ['A'], ['C'], ['B']]
[['D'], ['A'], ['B'], ['C']]
[['D'], ['A'], ['C', 'B']]
[['D'], ['C', 'B'], ['A']]
[['D'], ['C', 'A'], ['B']]
[['D'], ['B', 'A'], ['C']]
[['D'], ['C', 'B', 'A']]
[['A', 'B'], ['C'], ['D']]
[['A', 'B'], ['D'], ['C']]
[['A', 'B'], ['C', 'D']]
[['A', 'C'], ['B'], ['D']]
[['A', 'C'], ['D'], ['B']]
[['A', 'C'], ['B', 'D']]
[['A', 'D'], ['C'], ['B']]
[['A', 'D'], ['B'], ['C']]
[['A', 'D'], ['C', 'B']]
[['B', 'C'], ['A'], ['D']]
[['B', 'C'], ['D'], ['A']]
[['B', 'C'], ['A', 'D']]
[['B', 'D'], ['C'], ['A']]
[['B', 'D'], ['A'], ['C']]
[['B', 'D'], ['C', 'A']]
[['C', 'D'], ['B'], ['A']]
[['C', 'D'], ['A'], ['B']]
[['C', 'D'], ['B', 'A']]
[['A', 'B', 'C'], ['D']]
[['A', 'B', 'D'], ['C']]
[['A', 'C', 'D'], ['B']]
[['B', 'C', 'D'], ['A']]
[['A', 'B', 'C', 'D']]