TYP: @final for some Index methods
cc @simonjayhawkins 

Tangential question: when I run flake8 it passes, but the pre-commit hook often gives me a bunch of messages like `pandas/core/indexes/base.py:956:51: F821 undefined name 'ignore'`.  Is this something I can fix by pinning a version or something?
> Tangential question: when I run flake8 it passes, but the pre-commit hook often gives me a bunch of messages like `pandas/core/indexes/base.py:956:51: F821 undefined name 'ignore'`. Is this something I can fix by pinning a version or something?

not sure. I don't have pre-comit setup. (One thing that maybe relevant is that pyflakes is currently installed in the dev environment separately to allow mypy error codes #35311 since we have flake8 pinned <3.8.0 #34150) before we have a dependence on pandas._vendored.typing_extensions, I think we need some sort of tests, see https://github.com/pandas-dev/pandas/pull/36000#issuecomment-684976573

When trying to use Literal and Final types, i'm getting errors like
```
error: Variable "pandas._vendored.typing_extensions.Final" is not valid as a type  [valid-type]
```
not sure what i'm doing wrong. Lgtm - I think this is nice to do Adding `@final` incorrectly to `get_loc` and running mypy, it isn't flagging it as incorrect.  It gets flagged correctly if I import `final` from `typing` directly` instead of `pandas._vendored.typing_extensions`.  Also if I import from a non-vendored typing_extensions it seems to work.

It also isn't flagging private methods with incorrect final tag, regardless of where i get `final` from since this doesnt appear to have the desired effects, closing to clear the queue @WillAyd @simonjayhawkins do the problems this had have any impact on the original decision to vendor vs depend?