#
# 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
#
#   http://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.
#

github:
  description: "Apache Pulsar Python client library"
  homepage: https://pulsar.apache.org/
  labels:
    - pulsar
    - pubsub
    - messaging
    - streaming
    - queuing
    - event-streaming
  features:
    wiki: false
    issues: true
    projects: true
  enabled_merge_buttons:
    squash:  true
    merge:   false
    rebase:  false
  protected_branches:
    main:
      required_status_checks:
        # Contexts are the names of checks that must pass.
        # See ./github/workflows/README.md for more documentation on this list.
        contexts:
           - Check Completion
      required_pull_request_reviews:
        required_approving_review_count: 1

notifications:
  commits:      commits@pulsar.apache.org
  issues:       commits@pulsar.apache.org
  pullrequests: commits@pulsar.apache.org
  discussions:  dev@pulsar.apache.org
  jira_options: link label
