Skip to main content

No project description provided

Project description

auto-typing-final

Auto-fixer for Python code that adds typing.Final annotation to variable assignments inside functions that are not reassigned, and removes the annotation from variables that are mutated.

 def foo() -> None:
-    a = 2
+    a: typing.Final = 2

-    b: typing.Final = 2
+    b = 2
     b = 3

Basically, this, but handles different operations (like usage of nonlocal, augmented assignments: +=, etc) as well.

  • Keeps mypy happy.
  • Ignores global variables to avoid confusion with the type aliases like Fruit = Apple | Banana.
  • Ignores class variables: it is common to use typing.ClassVar instead of typing.Final.
  • Adds global import if it's not imported yet.
  • Inspects one file at a time.

How To Use

Having uv installed:

uvx auto-typing-final .

or:

pipx run auto-typing-final .

Options

You can specify --check flag to check the files instead of actually fixing them:

auto-typing-final . --check

Also, you can choose import style from two options: typing-final (default) and final:

auto-typing-final . --import-style typing-final
  • typing-final enforces import typing and typing.Final,
  • final enforces from typing import Final and Final.

VS Code Extension

image

The extension uses LSP server bundled with the CLI. To get started, add auto-typing-final to your project:

uv add auto-typing-final --dev

or:

poetry add auto-typing-final --group=dev

After that, install the extension: https://marketplace.visualstudio.com/items?itemName=vrslev.auto-typing-final. In Python environments that have auto-typing-final installed, extension will be activated automatically.

Import style can be configured in settings: "auto-typing-final.import-style": "typing-final" or "auto-typing-final.import-style": "final".

Library code of currently activated environment will be ignored (for example, .venv/bin/python is active interpreter, all code inside .venv will be ignored).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

auto_typing_final-0.6.0.tar.gz (34.2 kB view hashes)

Uploaded Source

Built Distribution

auto_typing_final-0.6.0-py3-none-any.whl (11.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page