#
# 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: Task
description: File a task
title: "[Task]: "
labels: ["task", "awaiting triage"]
assignees:
  - octocat
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this task! 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 needs to happen?
      description: Please describe your issue
    validations:
      required: true
  - type: dropdown
    id: priority
    attributes:
      label: Issue Priority
      description: What priority is this task? See https://beam.apache.org/contribute/issue-priorities for the meaning and expectations around issue priorities.
      options:
        - "Priority: 3 (nice-to-have improvement)"
        - "Priority: 2 (default / most normal work should be filed as P2)"
        - "Priority: 1 (urgent / mostly reserved for critical bugs)"
      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"
