{"record":{"id":"cfb0441da0a5adc5","repo":"apache/beam","slug":"f-unknown-parameters-spec-keys","errorCode":null,"errorMessage":"f'Unknown parameters {spec.keys()}'","messagePattern":"f'Unknown parameters (.+?)'","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdks/python/apache_beam/yaml/yaml_provider.py","lineNumber":1168,"sourceCode":"      elif window_type == 'fixed':\n        window_fn = window.FixedWindows(\n            YamlProviders.WindowInto._parse_duration(spec.pop('size'), 'size'),\n            YamlProviders.WindowInto._parse_duration(\n                spec.pop('offset', 0), 'offset'))\n      elif window_type == 'sliding':\n        window_fn = window.SlidingWindows(\n            YamlProviders.WindowInto._parse_duration(spec.pop('size'), 'size'),\n            YamlProviders.WindowInto._parse_duration(\n                spec.pop('period'), 'period'),\n            YamlProviders.WindowInto._parse_duration(\n                spec.pop('offset', 0), 'offset'))\n      elif window_type == 'sessions':\n        window_fn = window.Sessions(\n            YamlProviders.WindowInto._parse_duration(spec.pop('gap'), 'gap'))\n      else:\n        raise ValueError(f'Unknown window type {window_type}')\n      if spec:\n        raise ValueError(f'Unknown parameters {spec.keys()}')\n      # TODO: Triggering, etc.\n      return beam.WindowInto(window_fn)\n\n  @staticmethod\n  @beam.ptransform_fn\n  @maybe_with_exception_handling_transform_fn\n  def log_for_testing(\n      pcoll, *, level: Optional[str] = 'INFO', prefix: Optional[str] = ''):\n    \"\"\"Logs each element of its input PCollection.\n\n    The output of this transform is a copy of its input for ease of use in\n    chain-style pipelines.\n\n    Args:\n      level: one of ERROR, INFO, or DEBUG, mapped to a corresponding\n        language-specific logging level\n      prefix: an optional identifier that will get prepended to the element\n        being logged","sourceCodeStart":1150,"sourceCodeEnd":1186,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/python/apache_beam/yaml/yaml_provider.py#L1150-L1186","documentation":"Raised by YamlProviders.WindowInto after selecting a window function: leftover keys in the spec dict indicate parameters that are not valid for the chosen window type. The transform validates that only recognized parameters were provided.","triggerScenarios":"Passing e.g. 'gap' to a fixed window, 'size' to a sessions window, unknown keys like 'trigger' or 'every', or misspelling a valid key ('offest' instead of 'offset') for the given window type.","commonSituations":"Config copied between window types (fixed vs sliding vs sessions have different parameters), or attempts to configure triggering/allowed lateness which is not yet supported by this YAML transform.","solutions":["Remove parameters not valid for the chosen type: fixed uses size (+offset/period as supported), sliding uses size/period/offset, sessions uses only gap.","Fix key typos to match the exact expected parameter names.","Remove triggering/lateness options — they are not yet implemented for this YAML transform."],"exampleFix":"# before\nconfig:\n  type: fixed\n  size: 10m\n  gap: 5m\n# after\nconfig:\n  type: fixed\n  size: 10m","handlingStrategy":"validation","validationCode":"ALLOWED = {'fixed': {'size','offset','period'}, 'sliding': {'size','period','offset'}, 'sessions': {'gap'}}\ndef validate_window_spec(spec):\n    t = spec.get('type')\n    extra = set(spec) - ALLOWED.get(t, set()) - {'type'}\n    if extra:\n        raise ValueError(f'Unknown parameters for {t}: {extra}')","typeGuard":null,"tryCatchPattern":"try:\n    transform = YamlProviders.WindowInto(spec)\nexcept ValueError as e:\n    if str(e).startswith('Unknown parameters'):\n        logging.error('Remove/fix these window params: %s', e)\n        raise\n    raise","preventionTips":["Check which parameters each window type accepts before reuse.","Never pass triggering/lateness options to this YAML transform (unsupported).","Validate spec keys against a whitelist in pipeline CI."],"tags":["python","apache-beam","yaml","config"],"backgroundTag":"invalid-config-value","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}