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


[flake8]
ignore =
    E203, # Skip as black formatter adds a whitespace around ':'.
    E402, # Module top level import is disabled for optional import check, etc.
    # 1. Type hints with def are treated as redefinition (e.g., functions.log).
    # 2. Some are used for testing.
    F811,
    # There are too many instances to fix. Ignored for now.
    W503,
    W504,
per-file-ignores =
    # E501 is ignored as shared.py is auto-generated.
    python/pyspark/ml/param/shared.py: E501,
    # E501 is ignored as we should keep the json string format in error_classes.py.
    python/pyspark/errors/error_classes.py: E501,
    # Examples contain some unused variables.
    examples/src/main/python/sql/datasource.py: F841,
    # Exclude * imports in test files
    python/pyspark/errors/tests/*.py: F403,
    python/pyspark/ml/tests/*.py: F403,
    python/pyspark/mllib/tests/*.py: F403,
    python/pyspark/pandas/tests/*.py: F401 F403,
    python/pyspark/pandas/tests/connect/*.py: F401 F403,
    python/pyspark/resource/tests/*.py: F403,
    python/pyspark/sql/tests/*.py: F403,
    python/pyspark/streaming/tests/*.py: F403,
    python/pyspark/tests/*.py: F403,
    python/pyspark/testing/*: F401
exclude =
    */target/*,
    docs/.local_ruby_bundle/,
    *python/pyspark/cloudpickle/*.py,
    *python/pyspark/ml/deepspeed/tests/*.py
    *python/docs/build/*,
    *python/docs/source/conf.py,
    *python/.eggs/*,
    dist/*,
    .git/*,
    *python/pyspark/sql/pandas/functions.pyi,
    *python/pyspark/sql/column.pyi,
    *python/pyspark/worker.pyi,
    *python/pyspark/java_gateway.pyi,
    *python/pyspark/sql/connect/proto/*,
    */venv/*
max-line-length = 100
