mirror of
https://github.com/bndr/pipreqs.git
synced 2025-06-07 12:05:33 +00:00
Fix indentation, pep8. Optimize imports and adding missing import for sys module.
Improvements in some parts of get_all_imports method and removing unused path variable.
This commit is contained in:
parent
61a01d78c6
commit
655b32797a
@ -11,34 +11,39 @@ Options:
|
|||||||
--savepath path to requirements.txt (Optional)
|
--savepath path to requirements.txt (Optional)
|
||||||
"""
|
"""
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import os, re, logging
|
import os
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
from docopt import docopt
|
from docopt import docopt
|
||||||
import yarg
|
import yarg
|
||||||
from yarg.exceptions import HTTPError
|
from yarg.exceptions import HTTPError
|
||||||
|
|
||||||
|
|
||||||
REGEXP = [
|
REGEXP = [
|
||||||
re.compile(r'^import (.+)$'),
|
re.compile(r'^import (.+)$'),
|
||||||
re.compile(r'from (.*?) import (?:.*)')
|
re.compile(r'from (.*?) import (?:.*)')
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_all_imports(start_path):
|
def get_all_imports(start_path):
|
||||||
imports = []
|
imports = []
|
||||||
packages = []
|
packages = []
|
||||||
logging.debug('Traversing tree, start: %s', start_path)
|
logging.debug('Traversing tree, start: %s', start_path)
|
||||||
for root, dirs, files in os.walk(start_path):
|
for root, dirs, files in os.walk(start_path):
|
||||||
path = root.split('/')
|
|
||||||
packages.append(os.path.basename(root))
|
packages.append(os.path.basename(root))
|
||||||
for file in files:
|
for file_name in files:
|
||||||
if file[-3:] != ".py":
|
if file_name[-3:] != ".py":
|
||||||
continue
|
continue
|
||||||
for rex in REGEXP:
|
|
||||||
with open(os.path.join(root,file), "r") as f:
|
with open(os.path.join(root, file_name), "r") as file_object:
|
||||||
lines = f.readlines()
|
for line in file_object:
|
||||||
for line in lines:
|
|
||||||
if line[0] == "#":
|
if line[0] == "#":
|
||||||
continue
|
continue
|
||||||
if "(" in line:
|
if "(" in line:
|
||||||
break
|
break
|
||||||
|
for rex in REGEXP:
|
||||||
s = rex.match(line)
|
s = rex.match(line)
|
||||||
if not s:
|
if not s:
|
||||||
continue
|
continue
|
||||||
@ -55,6 +60,7 @@ def get_all_imports(start_path):
|
|||||||
data = [x.strip() for x in f.readlines()]
|
data = [x.strip() for x in f.readlines()]
|
||||||
return list(set(third_party_packages) - set(data))
|
return list(set(third_party_packages) - set(data))
|
||||||
|
|
||||||
|
|
||||||
def generate_requirements_file(path, imports):
|
def generate_requirements_file(path, imports):
|
||||||
with open(path, "w") as ff:
|
with open(path, "w") as ff:
|
||||||
logging.debug('Writing requirements to file %s', path)
|
logging.debug('Writing requirements to file %s', path)
|
||||||
@ -62,6 +68,7 @@ def generate_requirements_file(path, imports):
|
|||||||
ff.write(item['name'] + "==" + item['version'])
|
ff.write(item['name'] + "==" + item['version'])
|
||||||
ff.write("\n")
|
ff.write("\n")
|
||||||
|
|
||||||
|
|
||||||
def get_imports_info(imports):
|
def get_imports_info(imports):
|
||||||
result = []
|
result = []
|
||||||
for item in imports:
|
for item in imports:
|
||||||
@ -76,6 +83,7 @@ def get_imports_info(imports):
|
|||||||
result.append({'name': item, 'version': last_release})
|
result.append({'name': item, 'version': last_release})
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def init(args):
|
def init(args):
|
||||||
print("Looking for imports")
|
print("Looking for imports")
|
||||||
imports = get_all_imports(args['<path>'])
|
imports = get_all_imports(args['<path>'])
|
||||||
@ -86,6 +94,7 @@ def init(args):
|
|||||||
generate_requirements_file(path, imports_with_info)
|
generate_requirements_file(path, imports_with_info)
|
||||||
print("Successfuly saved requirements file in: " + path)
|
print("Successfuly saved requirements file in: " + path)
|
||||||
|
|
||||||
|
|
||||||
def main(): # pragma: no cover
|
def main(): # pragma: no cover
|
||||||
args = docopt(__doc__, version='xstat 0.1')
|
args = docopt(__doc__, version='xstat 0.1')
|
||||||
log_level = logging.WARNING
|
log_level = logging.WARNING
|
||||||
@ -98,5 +107,6 @@ def main(): # pragma: no cover
|
|||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main() # pragma: no cover
|
main() # pragma: no cover
|
@ -14,7 +14,6 @@ from pipreqs import pipreqs
|
|||||||
|
|
||||||
|
|
||||||
class TestPipreqs(unittest.TestCase):
|
class TestPipreqs(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.modules = ['flask', 'requests', 'sqlalchemy', 'docopt', 'nonexistendmodule']
|
self.modules = ['flask', 'requests', 'sqlalchemy', 'docopt', 'nonexistendmodule']
|
||||||
self.project = os.path.join(os.path.dirname(__file__), "_data")
|
self.project = os.path.join(os.path.dirname(__file__), "_data")
|
||||||
@ -52,5 +51,6 @@ class TestPipreqs(unittest.TestCase):
|
|||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user