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

apache_beam/io/gcp/internal/clients/bigquery/bigquery_v2_client.py
apache_beam/io/gcp/internal/clients/bigquery/bigquery_v2_messages.py
apache_beam/runners/dataflow/internal/clients/dataflow/dataflow_v1b3_client.py
apache_beam/runners/dataflow/internal/clients/dataflow/dataflow_v1b3_messages.py
apache_beam/io/gcp/internal/clients/storage/storage_v1_client.py
apache_beam/io/gcp/internal/clients/storage/storage_v1_messages.py
apache_beam/coders/proto2_coder_test_messages_pb2.py
apache_beam/portability/api/*pb2*.py

# Avoid excessive wrapping.
apache_beam/examples/snippets/transforms/aggregation/groupby_test.py

