feder-cr/Jobs_Applier_AI_Agent_AIHawk · error · RuntimeError

An unexpected error occurred while parsing the YAML file.

Error message

An unexpected error occurred while parsing the YAML file.

What it means

If yaml.safe_load raises something that is not a YAMLError while loading the profile YAML (e.g. a ReaderError for undecodable bytes, or RecursionError on pathological input), the constructor wraps it in RuntimeError('An unexpected error occurred while parsing the YAML file.') with the cause chained.

Source

Thrown at src/resume_schemas/job_application_profile.py:76

@dataclass
class JobApplicationProfile:
    self_identification: SelfIdentification
    legal_authorization: LegalAuthorization
    work_preferences: WorkPreferences
    availability: Availability
    salary_expectations: SalaryExpectations

    def __init__(self, yaml_str: str):
        logger.debug("Initializing JobApplicationProfile with provided YAML string")
        try:
            data = yaml.safe_load(yaml_str)
            logger.debug(f"YAML data successfully parsed: {data}")
        except yaml.YAMLError as e:
            logger.error(f"Error parsing YAML file: {e}")
            raise ValueError("Error parsing YAML file.") from e
        except Exception as e:
            logger.error(f"Unexpected error occurred while parsing the YAML file: {e}")
            raise RuntimeError("An unexpected error occurred while parsing the YAML file.") from e

        if not isinstance(data, dict):
            logger.error(f"YAML data must be a dictionary, received: {type(data)}")
            raise TypeError("YAML data must be a dictionary.")

        # Process self_identification
        try:
            logger.debug("Processing self_identification")
            self.self_identification = SelfIdentification(**data['self_identification'])
            logger.debug(f"self_identification processed: {self.self_identification}")
        except KeyError as e:
            logger.error(f"Required field {e} is missing in self_identification data.")
            raise KeyError(f"Required field {e} is missing in self_identification data.") from e
        except TypeError as e:
            logger.error(f"Error in self_identification data: {e}")
            raise TypeError(f"Error in self_identification data: {e}") from e
        except AttributeError as e:
            logger.error(f"Attribute error in self_identification processing: {e}")

View on GitHub (pinned to 79155b52fa)

Solutions

  1. Inspect the chained original exception (raise ... from e) to see the true failure.
  2. Load and sanitize the input first: ensure the YAML is valid UTF-8 text before constructing the profile.
  3. Pin/upgrade PyYAML to a known-good version if a version change altered behavior.

Example fix

# before
profile = JobApplicationProfile(raw_bytes.decode('latin-1'))
# after
raw_bytes = open('resume.yaml', 'rb').read()
text = raw_bytes.decode('utf-8')  # explicit, correct encoding
profile = JobApplicationProfile(text)
Defensive patterns

Strategy: try-catch

Validate before calling

raw = open('resume.yaml', 'rb').read()
text = raw.decode('utf-8')  # catch UnicodeDecodeError here, with context

Try / catch

try:
    profile = JobApplicationProfile(text)
except RuntimeError as e:
    logger.error('Unexpected YAML failure: %s', e.__cause__)
    raise

Prevention

When it happens

Trigger: Passing a string with encoding problems or exotic content that makes safe_load raise a non-YAMLError exception, or a PyYAML version difference mapping errors to unexpected types.

Common situations: Reading the YAML file with the wrong encoding, binary junk in the file, or PyYAML upgrades changing exception behavior.

Related errors


AI-assisted analysis of feder-cr/Jobs_Applier_AI_Agent_AIHawk@79155b52fa (2026-08-28). Data as JSON: /api/errors/ce7787795b618d0e. Report an issue: GitHub.