From adcbfadc1a2f23ebec3838980ff9ef1f6769ed03 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Tue, 11 Nov 2014 15:44:34 -0500 Subject: [PATCH] refactor requirements loading move file line processing to a separate function and add more file patterns so we are more restrictive with the files that are loaded by default --- aeromancer/requirements/handler.py | 34 +++++++++++++++++++----------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/aeromancer/requirements/handler.py b/aeromancer/requirements/handler.py index 15495d5..00d5981 100644 --- a/aeromancer/requirements/handler.py +++ b/aeromancer/requirements/handler.py @@ -8,24 +8,34 @@ from . import models LOG = logging.getLogger(__name__) +def read_requirements_file(file_obj): + for line in file_obj.lines: + text = line.content.strip() + if not text or text.startswith('#'): + continue + try: + # FIXME(dhellmann): Use pbr's requirements parser. + dist_name = pkg_resources.Requirement.parse(text).project_name + except ValueError: + LOG.warn('could not parse dist name from %r', + line.content) + continue + yield dist_name, line + + class RequirementsHandler(base.FileHandler): - INTERESTING_PATTERNS = ['*requirements*.txt'] + INTERESTING_PATTERNS = [ + 'requirements.txt', + 'requirements-py*.txt', + 'test-requirements.txt', + 'test-requirements-py*.txt', + ] def process_file(self, session, file_obj): LOG.info('loading requirements from %s', file_obj.project_path) parent_project = file_obj.project - for line in file_obj.lines: - text = line.content.strip() - if not text or text.startswith('#'): - continue - try: - # FIXME(dhellmann): Use pbr's requirements parser. - dist_name = pkg_resources.Requirement.parse(text).project_name - except ValueError: - LOG.warn('could not parse dist name from %r', - line.content) - continue + for dist_name, line in read_requirements_file(file_obj): LOG.debug('requirement: %s', dist_name) new_r = models.Requirement( name=dist_name,