#
# 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.10
ignore_missing_imports = true
follow_imports = normal
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
disable_error_code = var-annotated, import-untyped, valid-type, truthy-function, attr-defined, annotation-unchecked

[tool.mypy]
ignore_missing_imports = true

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

[mypy-apache_beam.dataframe.*]
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.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(https://github.com/apache/beam/issues/19737): 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.dask.*]
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
