#
# 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.
#

# Please keep the entries sorted lexicographically in each category.

# General
build: ["assembly.xml", "buildSrc/**/*", ".gitattributes", ".github/workflows/*", ".gitignore", "gradle/**/*", ".mailmap", "release/**/*", "sdks/java/build-tools/**/*"]
docker: ["runners/flink/job-server-container/**/*", "runners/spark/job-server/container/**/*", "sdks/go/container/**/*", "sdks/java/container/**/*", "sdks/python/container/**/*"]
examples: ["examples/**/*", "sdks/go/examples/**/*", "sdks/python/apache_beam/examples/**/*"]
go: ["sdks/go/**/*", "sdks/go.mod", "sdks/go.sum", "learning/katas/go/**/*"]
infra: [".test-infra/**/*"]
java: ["examples/java/**/*", "sdks/java/**/*", "runners/extensions-java/**/*", "learning/katas/java/**/*", "learning/katas/kotlin/**/*"]
kotlin: ["examples/kotlin/**/*"]
learning: ["learning/**/*"]
model: ["model/**/*"]
python: ["sdks/python/**/*", "learning/katas/python/**/*"]
typescript: ["sdks/typescript/**/*"]
vendor: ["vendor/**/*"]
website: ["website/**/*"]
yaml: ["sdks/python/apache_beam/yaml/**"]

# Extensions
extensions: ["sdks/java/extensions/**/*", "runners/extensions-java/**/*"]
"euphoria": ["sdks/java/extensions/euphoria/**/*"]
"jackson": ["sdks/java/extensions/jackson/**/*"]
"join-library": ["sdks/java/extensions/join-library/**/*"]
"kryo": ["sdks/java/extensions/kryo/**/*"]
"protobuf": ["sdks/java/extensions/protobuf/**/*"]
"sketching": ["sdks/java/extensions/sketching/**/*"]
"sorter": ["sdks/java/extensions/sorter/**/*"]
"sql": ["sdks/java/extensions/sql/**/*"]
"timeseries": ["sdks/java/extensions/timeseries/*"]
"zetasketch": ["sdks/java/extensions/zetasketch/**/*"]

# IO
io:  ["sdks/go/pkg/beam/io/**/*", "sdks/java/io/**/*", "sdks/python/apache_beam/io/**/*", "sdks/typescript/src/apache_beam/io/**/*"]
"amqp":  ["sdks/java/io/amqp/**/*"]
"aws":  ["sdks/java/io/amazon-web-services/**/*", "sdks/java/io/amazon-web-services2/**/*", "sdks/python/apache_beam/io/aws/**/*"]
"cassandra":  ["sdks/java/io/cassandra/**/*"]
"clickhouse":  ["sdks/java/io/clickhouse/**/*"]
"delta":  ["sdks/java/io/delta/**/*"]
"elasticsearch":  ["sdks/java/io/elasticsearch/**/*", "sdks/java/io/elasticsearch-tests/**/*"]
"gcp":  ["sdks/go/pkg/beam/io/bigqueryio/**/*", "sdks/go/pkg/beam/io/datastoreio/**/*", "sdks/go/pkg/beam/io/pubsubio/**/*", "sdks/java/io/bigquery-io-perf-tests/**/*", "sdks/java/io/google-cloud-platform/**/*", "sdks/python/apache_beam/io/gcp/**/*", "sdks/java/extensions/google-cloud-platform-core/**/*"]
"hadoop":  ["sdks/java/io/hadoop-common/**/*", "sdks/java/io/hadoop-file-system/**/*", "sdks/java/io/hadoop-format/**/*"]
"hbase":  ["sdks/java/io/hbase/**/*"]
"hcatalog":  ["sdks/java/io/hcatalog/**/*"]
"healthcare":  ["sdks/python/apache_beam/io/gcp/healthcare/**/*", "sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/**/*"]
"jdbc":  ["sdks/java/io/jdbc/**/*"]
"jms":  ["sdks/java/io/jms/**/*"]
"kafka":  ["sdks/java/io/kafka/**/*"]
"kinesis":  ["sdks/java/io/kinesis/**/*"]
"kudu":  ["sdks/java/io/kudu/**/*"]
"mongodb":  ["sdks/java/io/mongodb/**/*"]
"mqtt":  ["sdks/java/io/mqtt/**/*"]
"parquet":  ["sdks/java/io/parquet/**/*"]
"rabbitmq":  ["sdks/java/io/rabbitmq/**/*"]
"redis":  ["sdks/java/io/redis/**/*"] 
"solr":  ["sdks/java/io/solr/**/*"]
"spanner": ["sdks/go/pkg/beam/io/spannerio/**/*", "sdks/python/apache_beam/io/gcp/spanner.py", "sdks/python/apache_beam/io/gcp/experimental/spannerio.py", "sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/**/*"]
"bigtable": ["sdks/go/pkg/beam/io/bigtableio/**/*", "sdks/go/pkg/beam/io/xlang/bigtableio/**/*", "sdks/python/apache_beam/io/gcp/bigtableio.py", "sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/**/*"]
"synthetic":  ["sdks/java/io/synthetic/**/*"]
"tests":  ["sdks/java/io/file-based-io-tests/**/*"]
"thrift": ["sdks/java/io/thrift/**/*"]
"tika":  ["sdks/java/io/tika/**/*"]
"xml":  ["sdks/java/io/xml/**/*"]
 
# Runners
"runners": ["runners/**/*", "sdks/go/pkg/beam/runners/**/*", "sdks/python/apache_beam/runners/**/*", "sdks/typescript/src/apache_beam/runners/**/*"]
"core": ["runners/core-java/**/*"]
"dataflow": ["runners/google-cloud-dataflow-java/**/*", "sdks/go/pkg/beam/runners/dataflow/**/*", "sdks/python/runners/dataflow/**/*"]
"direct": ["runners/direct-java/**/*", "sdks/go/pkg/beam/runners/direct/**/*", "sdks/python/runners/direct/**/*"]
"flink": ["runners/flink/**/*", "sdks/go/pkg/beam/runners/flink/**/*"]
"fn-execution": ["runners/java-fn-execution/**/*"]
"interactive": ["sdks/python/runners/interactive/**/*"]
"jet": ["runners/jet/**/*"]
"local": ["runners/local-java/**/*"]
"portability": ["runners/portability/**/*"]
"prism": ["runners/prism/**/*", "sdks/go/pkg/beam/runners/prism/**/*", "sdks/go/cmd/prism/**/*", "sdks/python/apache_beam/runners/portability/prism_runner.py","sdks/python/apache_beam/runners/portability/prism_runner_test.py"]
"spark": ["runners/spark/**/*", "sdks/go/pkg/beam/runners/spark/**/*"]
"twister2": ["runners/twister2/**/*"]
