Supported behaviors
Typing¶
Unimport can understand that imports are used these cases.
from typing import List, Dict
def test(arg: List[Dict]) -> None:
pass
String¶
Unimport supports the following cases
from typing import List, Dict
def test(arg: 'List[Dict]') -> None:
pass
from typing import List, Dict
def test(arg: "List['Dict']") -> None:
pass
Comments¶
This feature is only available for python 3.8.
Imports in the example below aren’t flag as unused by import.
from typing import Any
from typing import Tuple
from typing import Union
def function(a, b):
# type: (Any, str) -> Union[Tuple[None, None], Tuple[str, str]]
pass
For more information
PEP 526 - Syntax for Variable Annotations
All¶
Unimport looks at the items in the __all__
list, if it matches the imports, marks it as being used.
import os
__all__ = ["os"] # this import is used and umimport can understand
Other supported operations, append and extend
from os import *
__all__ = []
__all__.append("removedirs")
__all__.extend(["walk"])
after refactoring
from os import removedirs, walk
__all__ = []
__all__.append("removedirs")
__all__.extend(["walk"])
Scope¶
Unimport tries to better understand whether the import is unused by performing scope analysis.
Let me give a few examples.
input
import x
def func():
import x
def inner():
import x
x
output
def func():
def inner():
import x
x
input
import x
class Klass:
def f(self):
import x
def ff():
import x
x
output
class Klass:
def f(self):
def ff():
import x
x
Last update: December 4, 2022
Created: December 4, 2022
Created: December 4, 2022