Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # $Id$
- #
- # Locate all standard modules present in the AWS Lambda environment
- #
- # To launch call the "main" function in Lambda
- #
- # Based on listmodules.py written by Fredrik Lundh, January 2005
- # http://svn.python.org/projects/python/tags/r252/Doc/tools/listmodules.py
- #
- from __future__ import print_function
- import imp, sys, os, re, time
- import StringIO
- from botocore.vendored import requests
- API_DEV_KEY = 'YOUR_PASTEBIN_DEV_KEY'
- identifier = "python-%s-%s" % (sys.version[:3], sys.platform)
- timestamp = time.strftime("%Y%m%dT%H%M%SZ", time.gmtime(time.time()))
- # known test packages
- TEST_PACKAGES = "test.", "bsddb.test.", "distutils.tests."
- try:
- import platform
- platform = platform.platform()
- except:
- platform = None # unknown
- suffixes = imp.get_suffixes()
- def get_suffix(file):
- for suffix in suffixes:
- if file[-len(suffix[0]):] == suffix[0]:
- return suffix
- return None
- def main(event, context):
- path = getpath()
- modules = {}
- for m in sys.builtin_module_names:
- modules[m] = None
- for p in path:
- modules.update(getmodules(p))
- keys = modules.keys()
- keys.sort()
- # filter out known test packages
- def cb(m):
- for d in TEST_PACKAGES:
- if m[:len(d)] == d:
- return 0
- return 1
- keys = filter(cb, keys)
- out = StringIO.StringIO()
- out.write("# module list (generated by listmodules.py)\n")
- out.write("#\n")
- out.write("# timestamp=%s\n" % repr(timestamp))
- out.write("# sys.version=%s\n" % repr(sys.version))
- out.write("# sys.platform=%s\n" % repr(sys.platform))
- if platform:
- out.write("# platform=%s\n" % repr(platform))
- out.write("#\n")
- for k in keys:
- out.write(k + "\n")
- data = {'api_option': 'paste',
- 'api_user_key': '',
- 'api_paste_private': '0',
- 'api_paste_name': 'AWS Lambda python modules',
- 'api_paste_expire_date': '1D',
- 'api_paste_format': 'text',
- 'api_dev_key': API_DEV_KEY,
- 'api_paste_code': out.getvalue()}
- r = requests.post("http://pastebin.com/api/api_post.php", data = data)
- print(r.text)
- def getmodules(p):
- # get modules in a given directory
- modules = {}
- for f in os.listdir(p):
- f = os.path.join(p, f)
- if os.path.isfile(f):
- m, e = os.path.splitext(f)
- suffix = get_suffix(f)
- if not suffix:
- continue
- m = os.path.basename(m)
- if re.compile("(?i)[a-z_]\w*$").match(m):
- if suffix[2] == imp.C_EXTENSION:
- # check that this extension can be imported
- try:
- __import__(m)
- except ImportError:
- continue
- modules[m] = f
- elif os.path.isdir(f):
- m = os.path.basename(f)
- if os.path.isfile(os.path.join(f, "__init__.py")):
- for mm, f in getmodules(f).items():
- modules[m + "." + mm] = f
- return modules
- def getpath():
- path = map(os.path.normcase, map(os.path.abspath, sys.path[:]))
- # get rid of site packages
- for p in path:
- if p[-13:] == "site-packages":
- def cb(p, site_package_path=os.path.abspath(p)):
- return p[:len(site_package_path)] != site_package_path
- path = filter(cb, path)
- break
- # get rid of non-existent directories and the current directory
- def cb(p, cwd=os.path.normcase(os.getcwd())):
- return os.path.isdir(p) and p != cwd
- path = filter(cb, path)
- return path
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement