2121from subprocess import Popen , PIPE
2222from lambda_uploader import utils
2323
24+ # Python 2/3 compatability
25+ try :
26+ basestring
27+ except NameError :
28+ basestring = str
29+
30+
2431LOG = logging .getLogger (__name__ )
2532TEMP_WORKSPACE_NAME = ".lambda_uploader_temp"
2633ZIPFILE_NAME = 'lambda_function.zip'
2734
2835
29- def build_package (path , requirements , virtualenv = None , ignore = [],
36+ def build_package (path , requires , virtualenv = None , ignore = [],
3037 extra_files = [], zipfile_name = ZIPFILE_NAME ):
3138 pkg = Package (path , zipfile_name )
3239
@@ -35,7 +42,7 @@ def build_package(path, requirements, virtualenv=None, ignore=[],
3542 pkg .extra_file (fil )
3643 if virtualenv is not None :
3744 pkg .virtualenv (virtualenv )
38- pkg .requirements (requirements )
45+ pkg .requirements (requires )
3946 pkg .build (ignore )
4047
4148 return pkg
@@ -70,25 +77,25 @@ def clean_zipfile(self):
7077 if os .path .isfile (self .zip_file ):
7178 os .remove (self .zip_file )
7279
73- def requirements (self , requirements ):
80+ def requirements (self , requires ):
7481 '''
7582 Sets the requirements for the package.
7683
7784 It will take either a valid path to a requirements file or
7885 a list of requirements.
7986 '''
80- if requirements :
81- if isinstance (requirements , str ) and \
82- os .path .isfile (os .path .abspath (requirements )):
83- self ._requirements_file = os .path .abspath (requirements )
87+ if requires :
88+ if isinstance (requires , basestring ) and \
89+ os .path .isfile (os .path .abspath (requires )):
90+ self ._requirements_file = os .path .abspath (requires )
8491 self ._requirements = None
8592 else :
86- if isinstance (self ._requirements , str ):
87- requirements = requirements .split ()
93+ if isinstance (self ._requirements , basestring ):
94+ requires = requires .split ()
8895 self ._requirements_file = None
89- self ._requirements = requirements
96+ self ._requirements = requires
9097 else :
91- self ._requirements , self ._requirements_file = None
98+ self ._requirements , self ._requirements_file = None , None
9299
93100 def virtualenv (self , virtualenv ):
94101 '''
@@ -124,13 +131,12 @@ def install_dependencies(self):
124131 LOG .info ('Skip Virtualenv set ... nothing to do' )
125132 return
126133
127- requirements_exist = \
128- self ._requirements or os .path .isfile (self ._requirements_file )
129- if self ._virtualenv is None and requirements_exist :
134+ has_reqs = _isfile (self ._requirements_file ) or self ._requirements
135+ if self ._virtualenv is None and has_reqs :
130136 LOG .info ('Building new virtualenv and installing requirements' )
131137 self ._build_new_virtualenv ()
132138 self ._install_requirements ()
133- elif self ._virtualenv is None and not requirements_exist :
139+ elif self ._virtualenv is None and not has_reqs :
134140 LOG .info ('No requirements found, so no virtualenv will be made' )
135141 self ._pkg_venv = False
136142 else :
@@ -182,7 +188,7 @@ def _install_requirements(self):
182188 cmd = [os .path .join (self ._pkg_venv , self ._venv_pip ),
183189 'install' ] + self ._requirements
184190
185- elif os . path . isfile (self ._requirements_file ):
191+ elif _isfile (self ._requirements_file ):
186192 # Pip install
187193 LOG .debug ("Installing requirements from requirements.txt file" )
188194 cmd = [os .path .join (self ._pkg_venv , self ._venv_pip ),
@@ -252,3 +258,10 @@ def _create_zip(self, src):
252258
253259 zf .write (absname , arcname )
254260 zf .close ()
261+
262+
263+ def _isfile (path ):
264+ """Variant of os.path.isfile that is somewhat type-resilient."""
265+ if not path :
266+ return False
267+ return os .path .isfile (path )
0 commit comments