Narzędzie ułatwiające eliminację importu symboli wieloznacznych
Refaktoryzuję i eliminuję import symboli wieloznacznych na jakimś dość monolitycznym kodzie.
Pylint wydaje się wykonywać świetną robotę, wymieniając wszystkie nieużywane importy, które przychodzą wraz z importem symboli wieloznacznych, ale chciałbym, aby dostarczył listę używanych importów , abym mógł szybko zastąpić import symboli wieloznacznych. Jakiś szybki sposób? Mam zamiar przeanalizować wyjście pyLint i zrobić set.difference()
Na tym i dir()
zaimportowanego modułu. Ale założę się, że jest jakieś narzędzie / procedura Nie jestem tego świadoma.
2 answers
Uwaga: pylint nie zaleca zestawu używanych importów. Zmieniając to, musisz być świadomy innych modułów importujących kod, który modyfikujesz, które mogą używać symboli należących do przestrzeni nazw modułu, który refaktoryzujesz, tylko dlatego, że masz nieużywany import.
Zalecam następującą procedurę do refaktor from foo import *
:
-
W powłoce interaktywnej wpisz:
import re import foo as module # XXX use the correct module name here! module_name = module.__name__ import_line = 'from %s import (%%s)' % module_name length = len(import_line) - 3 print import_line % (',\n' + length * ' ').join([a for a in dir(module) if not re.match('__.*[^_]{2}', a)])
-
Zastąp linię
from foo import *
wydrukowaną above - Uruchom pylint i usuń nieużywany import oznaczony przez pylint
- uruchom ponownie pylint na podstawie całego kodu, szukając importu nieistniejących symplów
- uruchom testy jednostkowe
Powtórz z from bar import *
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-31 08:19:55
Oto dewildcard, bardzo proste narzędzie oparte na początkowych pomysłach Alexa:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-26 16:16:31