mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[lazy_extractor] Import actual class if an attribute is accessed
Now all core tests pass with lazy extraction enabled
This commit is contained in:
		| @@ -1,16 +1,24 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import re | ||||
|  | ||||
|  | ||||
| class LazyLoadExtractor(object): | ||||
| class LazyLoadMetaClass(type): | ||||
|     def __getattr__(cls, name): | ||||
|         return getattr(cls._get_real_class(), name) | ||||
|  | ||||
|  | ||||
| class LazyLoadExtractor(metaclass=LazyLoadMetaClass): | ||||
|     _module = None | ||||
|  | ||||
|     @classmethod | ||||
|     def _get_real_class(cls): | ||||
|         if '__real_class' not in cls.__dict__: | ||||
|             mod = __import__(cls._module, fromlist=(cls.__name__,)) | ||||
|             cls.__real_class = getattr(mod, cls.__name__) | ||||
|         return cls.__real_class | ||||
|  | ||||
|     def __new__(cls, *args, **kwargs): | ||||
|         mod = __import__(cls._module, fromlist=(cls.__name__,)) | ||||
|         real_cls = getattr(mod, cls.__name__) | ||||
|         real_cls = cls._get_real_class() | ||||
|         instance = real_cls.__new__(real_cls) | ||||
|         instance.__init__(*args, **kwargs) | ||||
|         return instance | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan