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

[mypy]
python_version = 3.6
ignore_missing_imports = true
follow_imports = true
warn_no_return = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
show_error_codes = true
files = apache_beam
color_output = true
# uncomment this to see how close we are to being complete
# check_untyped_defs = true

[mypy-apache_beam.coders.proto2_coder_test_messages_pb2]
ignore_errors = true

[mypy-apache_beam.examples.*]
ignore_errors = true

[mypy-apache_beam.io.gcp.gcsfilesystem_test]
# error: Cannot infer type of lambda  [misc]
ignore_errors = true

[mypy-apache_beam.io.gcp.internal.clients.storage.storage_v1_client]
ignore_errors = true

[mypy-apache_beam.io.gcp.internal.clients.bigquery.bigquery_v2_client]
ignore_errors = true

[mypy-apache_beam.portability.api.*]
ignore_errors = true

[mypy-apache_beam.runners.dataflow.internal.clients.dataflow.dataflow_v1b3_client]
ignore_errors = true

[mypy-apache_beam.typehints.typed_pipeline_test_py3]
# error: Signature of "process" incompatible with supertype "DoFn"  [override]
ignore_errors = true

[mypy-apache_beam.typehints.typehints_test_py3]
# error: Signature of "process" incompatible with supertype "DoFn"  [override]
ignore_errors = true


# TODO(BEAM-7746): Remove the lines below.

[mypy-apache_beam.io.*]
ignore_errors = true

[mypy-apache_beam.io.filesystem]
ignore_errors = false

[mypy-apache_beam.io.iobase]
ignore_errors = false

[mypy-apache_beam.ml.gcp.*]
ignore_errors = true

[mypy-apache_beam.pipeline]
ignore_errors = true

[mypy-apache_beam.pvalue]
ignore_errors = true

[mypy-apache_beam.runners.common]
ignore_errors = true

[mypy-apache_beam.runners.dataflow.dataflow_runner]
ignore_errors = true

[mypy-apache_beam.runners.direct.*]
ignore_errors = true

[mypy-apache_beam.runners.interactive.*]
ignore_errors = true

[mypy-apache_beam.testing.synthetic_pipeline]
ignore_errors = true

[mypy-apache_beam.testing.test_stream]
ignore_errors = true


[mypy-apache_beam.typehints.*]
ignore_errors = true
