| 1 |  |  | # Copyright Pincer 2021-Present | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                        
            
                                    
            
            
                | 2 |  |  | # Full MIT License can be found in `LICENSE` at the project root. | 
            
                                                        
            
                                    
            
            
                | 3 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 4 |  |  | from __future__ import annotations | 
            
                                                        
            
                                    
            
            
                | 5 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 6 |  |  | from typing import TYPE_CHECKING | 
            
                                                        
            
                                    
            
            
                | 7 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 8 |  |  | if TYPE_CHECKING: | 
            
                                                        
            
                                    
            
            
                | 9 |  |  |     from typing import Dict, List, Set, Union, Tuple | 
            
                                                        
            
                                    
            
            
                | 10 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 11 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 12 |  |  | def remove_none(obj: Union[List, Dict, Set, Tuple]) -> Union[List, Dict, Set, Tuple]: | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                        
            
                                    
            
            
                | 13 |  |  |     """ | 
            
                                                        
            
                                    
            
            
                | 14 |  |  |     Removes all ``None`` values from a list, dict or set. | 
            
                                                        
            
                                    
            
            
                | 15 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 16 |  |  |     Parameters | 
            
                                                        
            
                                    
            
            
                | 17 |  |  |     ---------- | 
            
                                                        
            
                                    
            
            
                | 18 |  |  |     obj : Union[List, Dict, Set, Tuple] | 
            
                                                        
            
                                    
            
            
                | 19 |  |  |         The list, dict, set or tuple to remove ``None`` values from. | 
            
                                                        
            
                                    
            
            
                | 20 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 21 |  |  |     Returns | 
            
                                                        
            
                                    
            
            
                | 22 |  |  |     ------- | 
            
                                                        
            
                                    
            
            
                | 23 |  |  |     Union[List, Dict, Set, Tuple] | 
            
                                                        
            
                                    
            
            
                | 24 |  |  |         The list, dict, set or tuple, without ``None`` values. | 
            
                                                        
            
                                    
            
            
                | 25 |  |  |     """ | 
            
                                                        
            
                                    
            
            
                | 26 |  |  |     if isinstance(obj, list): | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                        
            
                                    
            
            
                | 27 |  |  |         return [i for i in obj if i is not None] | 
            
                                                        
            
                                    
            
            
                | 28 |  |  |     elif isinstance(obj, tuple): | 
            
                                                        
            
                                    
            
            
                | 29 |  |  |         return tuple(i for i in obj if i is not None) | 
            
                                                        
            
                                    
            
            
                | 30 |  |  |     elif isinstance(obj, set): | 
            
                                                        
            
                                    
            
            
                | 31 |  |  |         return obj - {None} | 
            
                                                        
            
                                    
            
            
                | 32 |  |  |     elif isinstance(obj, dict): | 
            
                                                        
            
                                    
            
            
                | 33 |  |  |         return {k: v for k, v in obj.items() if None not in (k, v)} | 
            
                                                        
            
                                    
            
            
                | 34 |  |  |  |