;
; 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]
strict_optional = True
no_implicit_optional = True
disallow_untyped_defs = True
show_error_codes = True
warn_unused_ignores = True
warn_redundant_casts = True
namespace_packages = True

[mypy-pyspark.sql.connect.proto.*]
ignore_errors = True

; MyPy example tests fail without this

[mypy-pyspark.sql.pandas.types]
disable_error_code = misc

; Allow untyped def in internal modules

[mypy-pyspark.daemon]
disallow_untyped_defs = False

[mypy-pyspark.find_spark_home]
disallow_untyped_defs = False

[mypy-pyspark._globals]
disallow_untyped_defs = False

[mypy-pyspark.install]
disallow_untyped_defs = False

[mypy-pyspark.java_gateway]
disallow_untyped_defs = False

[mypy-pyspark.join]
disallow_untyped_defs = False

[mypy-pyspark.rddsampler]
disallow_untyped_defs = False

[mypy-pyspark.serializers]
disallow_untyped_defs = False

[mypy-pyspark.shuffle]
disallow_untyped_defs = False

[mypy-pyspark.streaming.util]
disallow_untyped_defs = False

[mypy-pyspark.sql.pandas.serializers]
disallow_untyped_defs = False

[mypy-pyspark.sql.pandas._typing.protocols.*]
disallow_untyped_defs = False

[mypy-pyspark.pandas.missing.*]
disallow_untyped_defs = False

[mypy-pyspark.pandas.plot.*]
disallow_untyped_defs = False

[mypy-pyspark.pandas.usage_logging.*]
disallow_untyped_defs = False

[mypy-pyspark.traceback_utils]
disallow_untyped_defs = False

[mypy-pyspark.worker]
disallow_untyped_defs = False

; Allow untyped def and disable certain error codes in examples

[mypy-python.sql.udtf]
disallow_untyped_defs = False
disable_error_code = attr-defined,arg-type,call-arg,union-attr

; Ignore errors in tests

[mypy-pyspark.ml.tests.*]
ignore_errors = True

[mypy-pyspark.ml.torch.tests.*]
ignore_errors = True

[mypy-pyspark.ml.deepspeed.tests.*]
ignore_errors = True

[mypy-pyspark.mllib.tests.*]
ignore_errors = True

[mypy-pyspark.resource.tests.*]
ignore_errors = True

[mypy-pyspark.streaming.tests.*]
ignore_errors = True

[mypy-pyspark.sql.tests.*]
ignore_errors = True

[mypy-pyspark.pandas.tests.*]
ignore_errors = True

[mypy-pyspark.tests.*]
ignore_errors = True

[mypy-pyspark.testing.*]
ignore_errors = True

[mypy-pyspark.errors.tests.*]
ignore_errors = True

; Allow non-strict optional for pyspark.pandas

[mypy-pyspark.pandas.*]
strict_optional = False

; Ignore errors in embedded third party code

[mypy-pyspark.cloudpickle.*]
ignore_errors = True

; Ignore missing imports for external untyped packages

[mypy-py4j.*]
ignore_missing_imports = True

[mypy-scipy.*]
ignore_missing_imports = True

[mypy-pyarrow.*]
ignore_missing_imports = True

[mypy-psutil.*]
ignore_missing_imports = True

[mypy-matplotlib.*]
ignore_missing_imports = True

[mypy-plotly.*]
ignore_missing_imports = True

[mypy-mlflow.*]
ignore_missing_imports = True

[mypy-sklearn.*]
ignore_missing_imports = True

[mypy-tabulate.*]
ignore_missing_imports = True

[mypy-google.protobuf.*]
ignore_missing_imports = True

[mypy-grpc.*]
ignore_missing_imports = True

[mypy-memory_profiler.*]
ignore_missing_imports = True

; Ignore errors for proto generated code
[mypy-pyspark.sql.connect.proto.*, pyspark.sql.connect.proto]
ignore_errors = True
