automatically add annotations to untyped python code!
Project description
auto-type-annotate
automatically add annotations to untyped python code!
installation
pip install auto-type-annotate
usage
this tool is intented to help you automatically add annotations while gradually typing a code base!
there's a few pre-requisites you'll need to do in order to use the tool successfully
first you'll need to make your codebase pass mypy with the following settings
enabled:
check_untyped_defs = true: this is needed to analyze types in functions we'd like to automatically typelocal_partial_types = true: this is a setting forced bydmypy-- which we'll be using to generate typing suggestions
you can check whether you're "ready" to use this by running the following:
dmypy stop
dmypy run
it should look something like:
$ dmypy stop
Daemon stopped
$ dmypy run
Daemon started
Success: no issues found in 6839 source files
once that passes -- and dmypy is still running: use the tool on whatever
files you'd like to improve!
for instance after:
auto-type-annotate \
--application-directories .:src \
src/sentry/api/authentication.py
$ git diff
diff --git a/src/sentry/api/authentication.py b/src/sentry/api/authentication.py
index ec0526b9f62..ac797d136f5 100644
--- a/src/sentry/api/authentication.py
+++ b/src/sentry/api/authentication.py
@@ -86,7 +86,7 @@ class AuthenticationSiloLimit(SiloLimit):
)
-def is_internal_relay(request, public_key):
+def is_internal_relay(request: Request, public_key: str) -> bool:
"""
Checks if the relay is trusted (authorized for all project configs)
"""
@@ -99,7 +99,7 @@ def is_internal_relay(request, public_key):
return is_internal_ip(request)
-def is_static_relay(request):
+def is_static_relay(request: Request) -> bool:
"""
Checks if the request comes from a statically configured relay
@@ -141,7 +141,7 @@ def relay_from_id(request: Request, relay_id: str) -> tuple[Relay | None, bool]:
return None, False # no Relay found
why not pyannotate?
:'(
$ pyannotate --help
Traceback (most recent call last):
File ".venv/bin/pyannotate", line 5, in <module>
from pyannotate_tools.annotations.__main__ import main
File ".venv/lib/python3.13/site-packages/pyannotate_tools/annotations/__main__.py", line 9, in <module>
from lib2to3.main import StdoutRefactoringTool
ModuleNotFoundError: No module named 'lib2to3'
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file auto_type_annotate-1.1.1.tar.gz.
File metadata
- Download URL: auto_type_annotate-1.1.1.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce9a1f7e583386716f3940591b6b7596ae97a5464a6b0ec57cdcd03494f68360
|
|
| MD5 |
8e61409569bd8074e87196e5ac91596b
|
|
| BLAKE2b-256 |
8b5e15c318c1b5d8f1ed8404bb7498d09175614e0016c501cfc803a8efc4fe63
|
File details
Details for the file auto_type_annotate-1.1.1-py2.py3-none-any.whl.
File metadata
- Download URL: auto_type_annotate-1.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
530e382645d975f10bf6afafd528d93b9bfa819bc82c712500cba45bbe993ec2
|
|
| MD5 |
9d791b92f178c9699c3b9ab4e6d3b7c7
|
|
| BLAKE2b-256 |
1348249df1fa066d62bf6ec945517ae3ce593321e0563445487da3f318bcfccf
|