
# See the docstring in versioneer.py for instructions. Note that you must
# re-run 'versioneer.py setup' after changing this section, and commit the
# resulting files.

[versioneer]
VCS = git
style = pep440
versionfile_source = pandas/_version.py
versionfile_build = pandas/_version.py
tag_prefix = v
parentdir_prefix = pandas-

[flake8]
max-line-length = 88
ignore =
    E203,  # space before : (needed for how black formats slicing)
    W503,  # line break before binary operator
    W504,  # line break after binary operator
    E402,  # module level import not at top of file
    E731,  # do not assign a lambda expression, use a def
    E741,  # ambiguous variable name 'l' (GH#34150)
    C406,  # Unnecessary list literal - rewrite as a dict literal.
    C408,  # Unnecessary dict call - rewrite as a literal.
    C409,  # Unnecessary list passed to tuple() - rewrite as a tuple literal.
    S001   # found modulo formatter (incorrect picks up mod operations)
exclude =
    doc/sphinxext/*.py,
    doc/build/*.py,
    doc/temp/*.py,
    .eggs/*.py,
    versioneer.py,
    env  # exclude asv benchmark environments from linting

[flake8-rst]
bootstrap =
    import numpy as np
    import pandas as pd
    np  # avoiding error when importing again numpy or pandas
    pd  # (in some cases we want to do it to show users)
ignore = E402,  # module level import not at top of file
         W503,  # line break before binary operator
         # Classes/functions in different blocks can generate those errors
         E302,  # expected 2 blank lines, found 0
         E305,  # expected 2 blank lines after class or function definition, found 0
         # We use semicolon at the end to avoid displaying plot objects
         E703,  # statement ends with a semicolon
         E711,  # comparison to none should be 'if cond is none:'

exclude =
    doc/source/development/contributing_docstring.rst

[tool:pytest]
# sync minversion with setup.cfg & install.rst
minversion = 4.0.2
testpaths = pandas
doctest_optionflags = NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL ELLIPSIS
addopts = --strict-data-files
xfail_strict = True
filterwarnings =
    error:Sparse:FutureWarning
    error:The SparseArray:FutureWarning
junit_family=xunit2

[coverage:run]
branch = False
omit =
     */tests/*
     pandas/_typing.py
     pandas/_version.py
plugins = Cython.Coverage

[coverage:report]
ignore_errors = False
show_missing = True
omit =
    pandas/_version.py
# Regexes for lines to exclude from consideration
exclude_lines =
    # Have to re-enable the standard pragma
    pragma: no cover

    # Don't complain about missing debug-only code:
    def __repr__
    if self\.debug

    # Don't complain if tests don't hit defensive assertion code:
    raise AssertionError
    raise NotImplementedError
    AbstractMethodError

    # Don't complain if non-runnable code isn't run:
    if 0:
    if __name__ == .__main__.:
    if TYPE_CHECKING:

[coverage:html]
directory = coverage_html_report

# To be kept consistent with "Import Formatting" section in contributing.rst
[isort]
known_pre_libs = pandas._config
known_pre_core = pandas._libs,pandas._typing,pandas.util._*,pandas.compat,pandas.errors
known_dtypes = pandas.core.dtypes
known_post_core = pandas.tseries,pandas.io,pandas.plotting
sections = FUTURE,STDLIB,THIRDPARTY,PRE_LIBS,PRE_CORE,DTYPES,FIRSTPARTY,POST_CORE,LOCALFOLDER
known_first_party = pandas
known_third_party = announce,dateutil,docutils,flake8,git,hypothesis,jinja2,lxml,matplotlib,numpy,numpydoc,pkg_resources,pyarrow,pytest,pytz,requests,scipy,setuptools,sphinx,sqlalchemy,validate_docstrings,validate_unwanted_patterns,yaml,odf
multi_line_output = 3
include_trailing_comma = True
force_grid_wrap = 0
combine_as_imports = True
line_length = 88
force_sort_within_sections = True
skip_glob = env,
skip = pandas/__init__.py

[mypy]
ignore_missing_imports=True
no_implicit_optional=True
check_untyped_defs=True
strict_equality=True
warn_redundant_casts = True
warn_unused_ignores = True

[mypy-pandas.tests.*]
check_untyped_defs=False

[mypy-pandas.conftest]
ignore_errors=True

[mypy-pandas.tests.tools.test_to_datetime]
ignore_errors=True

[mypy-pandas._testing]
check_untyped_defs=False

[mypy-pandas._version]
check_untyped_defs=False

[mypy-pandas.core.arrays.interval]
check_untyped_defs=False

[mypy-pandas.core.base]
check_untyped_defs=False

[mypy-pandas.core.computation.expr]
check_untyped_defs=False

[mypy-pandas.core.computation.expressions]
check_untyped_defs=False

[mypy-pandas.core.computation.pytables]
check_untyped_defs=False

[mypy-pandas.core.computation.scope]
check_untyped_defs=False

[mypy-pandas.core.dtypes.cast]
check_untyped_defs=False

[mypy-pandas.core.frame]
check_untyped_defs=False

[mypy-pandas.core.generic]
check_untyped_defs=False

[mypy-pandas.core.groupby.generic]
check_untyped_defs=False

[mypy-pandas.core.groupby.grouper]
check_untyped_defs=False

[mypy-pandas.core.groupby.ops]
check_untyped_defs=False

[mypy-pandas.core.indexes.base]
check_untyped_defs=False

[mypy-pandas.core.indexes.datetimes]
check_untyped_defs=False

[mypy-pandas.core.indexes.interval]
check_untyped_defs=False

[mypy-pandas.core.indexes.multi]
check_untyped_defs=False

[mypy-pandas.core.internals.blocks]
check_untyped_defs=False

[mypy-pandas.core.internals.concat]
check_untyped_defs=False

[mypy-pandas.core.internals.construction]
check_untyped_defs=False

[mypy-pandas.core.internals.managers]
check_untyped_defs=False

[mypy-pandas.core.missing]
check_untyped_defs=False

[mypy-pandas.core.ops.docstrings]
check_untyped_defs=False

[mypy-pandas.core.reshape.merge]
check_untyped_defs=False

[mypy-pandas.core.strings]
check_untyped_defs=False

[mypy-pandas.core.window.common]
check_untyped_defs=False

[mypy-pandas.core.window.ewm]
check_untyped_defs=False

[mypy-pandas.core.window.expanding]
check_untyped_defs=False

[mypy-pandas.core.window.rolling]
check_untyped_defs=False

[mypy-pandas.io.clipboard]
check_untyped_defs=False

[mypy-pandas.io.excel._base]
check_untyped_defs=False

[mypy-pandas.io.excel._openpyxl]
check_untyped_defs=False

[mypy-pandas.io.excel._util]
check_untyped_defs=False

[mypy-pandas.io.excel._xlwt]
check_untyped_defs=False

[mypy-pandas.io.formats.console]
check_untyped_defs=False

[mypy-pandas.io.formats.css]
check_untyped_defs=False

[mypy-pandas.io.formats.excel]
check_untyped_defs=False

[mypy-pandas.io.formats.format]
check_untyped_defs=False

[mypy-pandas.io.formats.style]
check_untyped_defs=False

[mypy-pandas.io.html]
check_untyped_defs=False

[mypy-pandas.io.json._json]
check_untyped_defs=False

[mypy-pandas.io.parsers]
check_untyped_defs=False

[mypy-pandas.io.pytables]
check_untyped_defs=False

[mypy-pandas.io.sas.sas_xport]
check_untyped_defs=False

[mypy-pandas.io.sas.sas7bdat]
check_untyped_defs=False

[mypy-pandas.io.stata]
check_untyped_defs=False

[mypy-pandas.plotting._matplotlib.converter]
check_untyped_defs=False

[mypy-pandas.plotting._matplotlib.core]
check_untyped_defs=False

[mypy-pandas.plotting._matplotlib.misc]
check_untyped_defs=False

[mypy-pandas.tseries.holiday]
check_untyped_defs=False
