diff --git a/lib/yaml/constructor.py b/lib/yaml/constructor.py index 1cbd7e2b..9f18a6b1 100644 --- a/lib/yaml/constructor.py +++ b/lib/yaml/constructor.py @@ -39,35 +39,6 @@ def __init__(self): self.state_generators = [] self.deep_construct = False - def load(self, stream): - self._init_loader(stream) - - try: - return self.get_single_data() - finally: - self.dispose() - self.stream = None - - def load_all(self, stream): - assert False, 'XXX Not working yet' - - self._init_loader(stream) - - try: - while self.check_data(): - yield self.get_data() - finally: - self.dispose() - - def _init_loader(self, stream): - if hasattr(self, 'stream') and self.stream is None: - if stream is None: - raise TypeError("load() requires stream=...") - Reader.__init__(self, stream) - Scanner.__init__(self) - Parser.__init__(self) - Composer.__init__(self) - def check_data(self): # If there are more documents available? return self.check_node() diff --git a/lib/yaml/loader.py b/lib/yaml/loader.py index 2bdeca40..494e4d87 100644 --- a/lib/yaml/loader.py +++ b/lib/yaml/loader.py @@ -18,7 +18,36 @@ def __init__(self, stream=None): BaseConstructor.__init__(self) BaseResolver.__init__(self) -class FullLoader(Reader, Scanner, Parser, Composer, FullConstructor, Resolver): + def load(self, stream): + self._init_loader(stream) + + try: + return self.get_single_data() + finally: + self.dispose() + self.stream = None + + def load_all(self, stream): + assert False, 'XXX Not working yet' + + self._init_loader(stream) + + try: + while self.check_data(): + yield self.get_data() + finally: + self.dispose() + + def _init_loader(self, stream): + if hasattr(self, 'stream') and self.stream is None: + if stream is None: + raise TypeError("load() requires stream=...") + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + +class FullLoader(BaseLoader, Reader, Scanner, Parser, Composer, FullConstructor, Resolver): def __init__(self, stream=None): Reader.__init__(self, stream) @@ -28,7 +57,7 @@ def __init__(self, stream=None): FullConstructor.__init__(self) Resolver.__init__(self) -class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver): +class SafeLoader(BaseLoader, Reader, Scanner, Parser, Composer, SafeConstructor, Resolver): def __init__(self, stream=None): Reader.__init__(self, stream) @@ -38,7 +67,7 @@ def __init__(self, stream=None): SafeConstructor.__init__(self) Resolver.__init__(self) -class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver): +class Loader(BaseLoader, Reader, Scanner, Parser, Composer, Constructor, Resolver): def __init__(self, stream=None): Reader.__init__(self, stream) @@ -52,7 +81,7 @@ def __init__(self, stream=None): # untrusted input). Use of either Loader or UnsafeLoader should be rare, since # FullLoad should be able to load almost all YAML safely. Loader is left intact # to ensure backwards compatibility. -class UnsafeLoader(Reader, Scanner, Parser, Composer, Constructor, Resolver): +class UnsafeLoader(BaseLoader, Reader, Scanner, Parser, Composer, Constructor, Resolver): def __init__(self, stream=None): Reader.__init__(self, stream)