Verified Commit 60d76dfd authored by Adrian DC's avatar Adrian DC
Browse files

fix(yaml): refactor YAML load to handle empty data properly

Issue: #294
---

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent ecfc482e
Loading
Loading
Loading
Loading
Loading
+1 −0
Changes for src/features/menus.py: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -171,6 +171,7 @@ class MenusFeature:
                            mode='r',
                    ) as configuration_data:
                        configuration_dict = YAML.load(configuration_data)
                        assert configuration_dict is not None
                        variable_finds = Dicts.find(
                            configuration_dict,
                            configuration_key,
+3 −3
Changes for src/parsers/gitlab.py: 3 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ from os import environ
from pathlib import Path
from re import match
from time import sleep
from typing import Any, Dict, List, NamedTuple, Union
from typing import Any, Dict, List, NamedTuple, Optional, Union

# Modules libraries
from packaging.version import parse as parse_version
@@ -388,7 +388,7 @@ class GitLab:

                # Load included file
                with open(file_path, encoding='utf8', mode='r') as include_data:
                    data_additions: YAML.Data = YAML.load(include_data)
                    data_additions: Optional[YAML.Data] = YAML.load(include_data)
                    if data_additions:

                        # Nested includes (follow working directory)
@@ -469,7 +469,7 @@ class GitLab:

                    # Load included file
                    with open(file_path, encoding='utf8', mode='r') as include_data:
                        data_additions: YAML.Data = YAML.load(include_data)
                        data_additions: Optional[YAML.Data] = YAML.load(include_data)
                        if data_additions:

                            # Nested includes (follow working directory)
+5 −1
Changes for src/parsers/parsers.py: 5 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -37,7 +37,11 @@ class Parsers:
                    encoding='utf8',
                    mode='r',
            ) as configuration_data:
                data: YAML.Data = YAML.load(configuration_data)
                data: Optional[YAML.Data] = YAML.load(configuration_data)
                if not data:
                    raise YAML.Error(
                        f'Empty YAML content found in \'{self.__options.configuration}\'...'
                    )
                return GitLab(self.__options).parse(data)
        except YAML.Error as exc:
            print(' ')
+6 −3
Changes for src/types/yaml.py: 6 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
from copy import deepcopy
from io import TextIOWrapper
from sys import maxsize
from typing import Any, Dict, List
from typing import Any, Dict, List, Optional

# Modules libraries
from yaml import dump as yaml_dump, load as yaml_load
@@ -100,14 +100,17 @@ class YAML:

    # Load
    @staticmethod
    def load(stream: TextIOWrapper) -> Data:
    def load(stream: TextIOWrapper) -> Optional[Data]:

        # Variables
        data: Optional[YAML.Data]

        # Prepare loader class
        loader = yaml_SafeLoader
        loader.add_constructor(YAML.Reference.TAG, YAML.Reference.add_constructor)

        # Load YAML data
        data: YAML.Data = yaml_load(stream, Loader=loader)
        data = yaml_load(stream, Loader=loader)

        # Result
        return data