#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Bug Report
description: File a bug report
title: "[Bug]: "
labels: ["bug", "awaiting triage"]
assignees:
  - octocat
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report! Once you've created an issue, you can self-assign by commenting `.take-issue`, self-unassign by commenting `.free-issue`, and close by commenting `.close-issue`.
        Anyone can reopen a closed issue by commenting `.reopen-issue`.
        You can also add/remove labels by commenting `.add-labels label1,label2,'label 3 with spaces'` or `.remove-labels label1,label2,'label 3 with spaces'`,
        or with `.set-labels label1,label2,'label 3 with spaces'` (which removes any labels not in that set).
  - type: textarea
    id: what-happened
    attributes:
      label: What happened?
      description: Please describe your issue, including the version of Beam and any other languages or tools being used.
      placeholder: |
          Please include steps to reproduce your issue.

          If this isn't a bug and you have a question or support request, please email user@apache.beam.com with a description of the problem instead of opening this issue.
    validations:
      required: true
  - type: dropdown
    id: priority
    attributes:
      label: Issue Priority
      description: What priority is this bug? See https://beam.apache.org/contribute/issue-priorities for the meaning and expectations around issue priorities.
      options:
        - "Priority: 3 (minor)"
        - "Priority: 2 (default / most bugs should be filed as P2)"
        - "Priority: 1 (data loss / total loss of function)"
        - "Priority: 0 (outage / urgent vulnerability)"
      default: 1
    validations:
      required: true
  - type: checkboxes
    id: component
    attributes:
      label: Issue Components
      description: Which languages, SDKs, or features are related to your report? (check all that apply)
      options:
       - label: "Component: Python SDK"
       - label: "Component: Java SDK"
       - label: "Component: Go SDK"
       - label: "Component: Typescript SDK"
       - label: "Component: IO connector"
       - label: "Component: Beam YAML"
       - label: "Component: Beam examples"
       - label: "Component: Beam playground"
       - label: "Component: Beam katas"
       - label: "Component: Website"
       - label: "Component: Infrastructure"
       - label: "Component: Spark Runner"
       - label: "Component: Flink Runner"
       - label: "Component: Samza Runner"
       - label: "Component: Twister2 Runner"
       - label: "Component: Hazelcast Jet Runner"
       - label: "Component: Google Cloud Dataflow Runner"
