repos:
  - repo: https://github.com/psf/black
    rev: 23.3.0
    hooks:
    - id: black
      language_version: python3.11

  - repo: https://github.com/asottile/reorder_python_imports
    rev: v3.9.0
    hooks:
    - id: reorder-python-imports
      args: ['--py311-plus', '--application-directories=backend/']
      # need to ignore alembic files, since reorder-python-imports gets confused
      # and thinks that alembic is a local package since there is a folder
      # in the backend directory called `alembic`
      exclude: ^backend/alembic/

  # These settings will remove unused imports with side effects
  # Note: The repo currently does not and should not have imports with side effects
  - repo: https://github.com/PyCQA/autoflake
    rev: v2.2.0
    hooks:
      - id: autoflake
        args: [ '--remove-all-unused-imports', '--remove-unused-variables', '--in-place' , '--recursive']

  - repo: https://github.com/astral-sh/ruff-pre-commit
    # Ruff version.
    rev: v0.0.286
    hooks:
      - id: ruff
  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: v3.1.0
    hooks:
    - id: prettier
      types_or: [html, css, javascript, ts, tsx]
      additional_dependencies:
      - prettier

  # We would like to have a mypy pre-commit hook, but due to the fact that
  # pre-commit runs in it's own isolated environment, we would need to install
  # and keep in sync all dependencies so mypy has access to the appropriate type
  # stubs. This does not seem worth it at the moment, so for now we will stick to
  # having mypy run via Github Actions / manually by contributors
  # - repo: https://github.com/pre-commit/mirrors-mypy
  #   rev: v1.1.1
  #   hooks:
  #     - id: mypy
  #       exclude: ^tests/
  #       # below are needed for type stubs since pre-commit runs in it's own
  #       # isolated environment. Unfortunately, this needs to be kept in sync
  #       # with requirements/dev.txt + requirements/default.txt
  #       additional_dependencies: [
  #         alembic==1.10.4,
  #         types-beautifulsoup4==4.12.0.3,
  #         types-html5lib==1.1.11.13,
  #         types-oauthlib==3.2.0.9,
  #         types-psycopg2==2.9.21.10,
  #         types-python-dateutil==2.8.19.13,
  #         types-regex==2023.3.23.1,
  #         types-requests==2.28.11.17,
  #         types-retry==0.9.9.3,
  #         types-urllib3==1.26.25.11
  #       ]
  #       # TODO: add back once errors are addressed
  #       # args: [--strict]