repos: - repo: https://github.com/python/black rev: 20.8b1 hooks: - id: black - repo: https://gitlab.com/pycqa/flake8 rev: 3.8.4 hooks: - id: flake8 additional_dependencies: [flake8-comprehensions>=3.1.0] - id: flake8 name: flake8 (cython) types: [cython] args: [--append-config=flake8/cython.cfg] - id: flake8 name: flake8 (cython template) files: \.pxi\.in$ types: [text] args: [--append-config=flake8/cython-template.cfg] - repo: https://github.com/PyCQA/isort rev: 5.6.4 hooks: - id: isort name: isort (python) - id: isort name: isort (cython) types: [cython] - repo: https://github.com/asottile/pyupgrade rev: v2.7.4 hooks: - id: pyupgrade args: [--py37-plus] - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.7.0 hooks: - id: rst-backticks - id: rst-directive-colons types: [text] - id: rst-inline-touching-normal types: [text] - repo: local hooks: - id: pip_to_conda name: Generate pip dependency from conda description: This hook checks if the conda environment.yml and requirements-dev.txt are equal language: python entry: python scripts/generate_pip_deps_from_conda.py files: ^(environment.yml|requirements-dev.txt)$ pass_filenames: false additional_dependencies: [pyyaml] - id: flake8-rst name: flake8-rst description: Run flake8 on code snippets in docstrings or RST files language: python entry: flake8-rst types: [rst] args: [--filename=*.rst] additional_dependencies: [flake8-rst==0.7.0, flake8==3.7.9] - id: non-standard-imports name: Check for non-standard imports language: pygrep entry: | (?x) # Check for imports from pandas.core.common instead of `import pandas.core.common as com` from\ pandas\.core\.common\ import| from\ pandas\.core\ import\ common| # Check for imports from collections.abc instead of `from collections import abc` from\ collections\.abc\ import - id: non-standard-numpy.random-related-imports name: Check for non-standard numpy.random-related imports excluding pandas/_testing.py language: pygrep exclude: pandas/_testing.py entry: | (?x) # Check for imports from np.random.<method> instead of `from numpy import random` or `from numpy.random import <method>` from\ numpy\ import\ random| from\ numpy.random\ import types: [python] - id: non-standard-imports-in-tests name: Check for non-standard imports in test suite language: pygrep entry: | (?x) # Check for imports from pandas._testing instead of `import pandas._testing as tm` from\ pandas\._testing\ import| from\ pandas\ import\ _testing\ as\ tm| # No direct imports from conftest conftest\ import| import\ conftest types: [python] files: ^pandas/tests/ - id: incorrect-code-directives name: Check for incorrect code block or IPython directives language: pygrep entry: (\.\. code-block ::|\.\. ipython ::) files: \.(py|pyx|rst)$ - id: unwanted-patterns-strings-to-concatenate name: Check for use of not concatenated strings language: python entry: python scripts/validate_unwanted_patterns.py --validation-type="strings_to_concatenate" files: \.(py|pyx|pxd|pxi)$ - id: unwanted-patterns-strings-with-wrong-placed-whitespace name: Check for strings with wrong placed spaces language: python entry: python scripts/validate_unwanted_patterns.py --validation-type="strings_with_wrong_placed_whitespace" files: \.(py|pyx|pxd|pxi)$ - id: unwanted-patterns-private-import-across-module name: Check for import of private attributes across modules language: python entry: python scripts/validate_unwanted_patterns.py --validation-type="private_import_across_module" types: [python] exclude: ^(asv_bench|pandas/tests|doc)/ - id: unwanted-patterns-private-function-across-module name: Check for use of private functions across modules language: python entry: python scripts/validate_unwanted_patterns.py --validation-type="private_function_across_module" types: [python] exclude: ^(asv_bench|pandas/tests|doc)/ - id: inconsistent-namespace-usage name: 'Check for inconsistent use of pandas namespace in tests' entry: python scripts/check_for_inconsistent_pandas_namespace.py language: python types: [python] files: ^pandas/tests/ - id: FrameOrSeriesUnion name: Check for use of Union[Series, DataFrame] instead of FrameOrSeriesUnion alias entry: Union\[.*(Series.*DataFrame|DataFrame.*Series).*\] language: pygrep types: [python] exclude: ^pandas/_typing\.py$ - id: type-not-class name: Check for use of foo.__class__ instead of type(foo) entry: \.__class__ language: pygrep files: \.(py|pyx)$ - id: unwanted-typing name: Check for use of comment-based annotation syntax and missing error codes entry: | (?x) \#\ type:\ (?!ignore)| \#\ type:\s?ignore(?!\[) language: pygrep types: [python] - id: no-os-remove name: Check code for instances of os.remove entry: os\.remove language: pygrep types: [python] files: ^pandas/tests/ exclude: | (?x)^ pandas/tests/io/excel/test_writers\.py| pandas/tests/io/pytables/common\.py| pandas/tests/io/pytables/test_store\.py$ - repo: https://github.com/asottile/yesqa rev: v1.2.2 hooks: - id: yesqa - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.3.0 hooks: - id: end-of-file-fixer exclude: ^LICENSES/|\.(html|csv|txt|svg|py)$ - id: trailing-whitespace exclude: \.(html|svg)$