Started to create a small FLASK restful api for handling requests

This commit is contained in:
2017-01-31 21:44:42 +01:00
parent 261b3afa01
commit b7aa452911
871 changed files with 118083 additions and 6 deletions
Binary file not shown.
Binary file not shown.
Executable
+111
View File
@@ -0,0 +1,111 @@
#!/usr/bin/env python3
# Flask auth with HTTP '$ pip install flask_httpauth'
# For https '$ pip install Flask-SSLify'
from flask import Flask, jsonify, make_response, request, url_for, abort
from flask_httpauth import HTTPBasicAuth
from json import loads, dumps
from werkzeug.security import generate_password_hash, \
check_password_hash
import uptime
from diskusage import diskUsage
app = Flask(__name__, static_url_path = "")
auth = HTTPBasicAuth()
# Hardcoded users, the password is hashed with salt used by wekzeug
users = {
"kevin": "9f6c79bbb3b8bbc4e6aab32314afaf3c812df66b",
"apollo": "BerryTree",
"test": "test"
}
# Flask function for checking password sent with http request
@auth.verify_password
def verify_password(email, password):
return verifyHash(password)
# Costum function for hashing and verifying the sent password.
# TODO Read if ok to send in cleartext like this if use https
def verifyHash(pw):
pw_hash = generate_password_hash(pw)
return check_password_hash(pw_hash, pw)
# Flask function for getting password matching username sent by http request
@auth.get_password
def get_pw(username):
if username in users:
return users.get(username)
return None
# Flasks own error handler that makes and returns error 401 if creds
# to not match.
@auth.error_handler
def unauthorized():
return make_response(jsonify({'error': 'Unauthorized access'}), 401)
# This would be replaced with a database, but single process and thread
# can use local data like this for simplicity.
# Want all return data to be JSON so create custom error response
@app.errorhandler(404)
def not_found(error):
return make_response(jsonify({'error': 'Not found'}), 404)
@app.errorhandler(400)
def bad_request(error):
return make_response(jsonify({'error': 'Bad request'}), 400)
# --- Apollo Activity --- #
@app.route('/api/v1/disks', methods=['GET'])
@auth.login_required
def get_diskUsage():
if (diskUsage()):
return jsonify(diskUsage())
else:
abort(404)
@app.route('/api/v1/disks/<disk_name>', methods=['GET'])
@auth.login_required
def get_singleDiskUsage(disk_name, other):
if (diskUsage(disk_name)):
return jsonify({task_type: diskUsage(disk_name)})
else:
abort(404)
@app.route('/api/v1/uptimes', methods=['GET'])
@auth.login_required
def get_uptimes():
up = uptime.uptime()
print(up)
return jsonify({'duration': up.duration, 'users': up.users,
'load': up.load})
@app.route('/api/v1/uptimes/duration', methods=['GET'])
@auth.login_required
def get_uptimesDuration():
up = uptime.uptime()
return jsonify( {'Duration': up.duration} )
@app.route('/api/v1/uptimes/users', methods=['GET'])
@auth.login_required
def get_uptimesUsers():
up = uptime.uptime()
return jsonify( {'Users': up.users} )
@app.route('/api/v1/uptimes/load', methods=['GET'])
@auth.login_required
def get_uptimesLoad():
up = uptime.uptime()
return jsonify( {'Load': up.load} )
if __name__ == '__main__':
app.run(port=63580,debug=True)
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/Python
+78
View File
@@ -0,0 +1,78 @@
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate () {
unset -f pydoc >/dev/null 2>&1
# reset old environment variables
# ! [ -z ${VAR+_} ] returns true if VAR is declared at all
if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
export PYTHONHOME
unset _OLD_VIRTUAL_PYTHONHOME
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then
hash -r 2>/dev/null
fi
if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
PS1="$_OLD_VIRTUAL_PS1"
export PS1
unset _OLD_VIRTUAL_PS1
fi
unset VIRTUAL_ENV
if [ ! "${1-}" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
fi
}
# unset irrelevant variables
deactivate nondestructive
VIRTUAL_ENV="/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
# unset PYTHONHOME if set
if ! [ -z "${PYTHONHOME+_}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
unset PYTHONHOME
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
_OLD_VIRTUAL_PS1="$PS1"
if [ "x" != x ] ; then
PS1="$PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
fi
export PS1
fi
# Make sure to unalias pydoc if it's already there
alias pydoc 2>/dev/null >/dev/null && unalias pydoc
pydoc () {
python -m pydoc "$@"
}
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then
hash -r 2>/dev/null
fi
+36
View File
@@ -0,0 +1,36 @@
# This file must be used with "source bin/activate.csh" *from csh*.
# You cannot run it directly.
# Created by Davide Di Blasi <davidedb@gmail.com>.
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
# Unset irrelevant variables.
deactivate nondestructive
setenv VIRTUAL_ENV "/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask"
set _OLD_VIRTUAL_PATH="$PATH"
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
if ("" != "") then
set env_name = ""
else
set env_name = `basename "$VIRTUAL_ENV"`
endif
# Could be in a non-interactive environment,
# in which case, $prompt is undefined and we wouldn't
# care about the prompt anyway.
if ( $?prompt ) then
set _OLD_VIRTUAL_PROMPT="$prompt"
set prompt = "[$env_name] $prompt"
endif
unset env_name
alias pydoc python -m pydoc
rehash
+76
View File
@@ -0,0 +1,76 @@
# This file must be used using `. bin/activate.fish` *within a running fish ( http://fishshell.com ) session*.
# Do not run it directly.
function deactivate -d 'Exit virtualenv mode and return to the normal environment.'
# reset old environment variables
if test -n "$_OLD_VIRTUAL_PATH"
set -gx PATH $_OLD_VIRTUAL_PATH
set -e _OLD_VIRTUAL_PATH
end
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
set -e _OLD_VIRTUAL_PYTHONHOME
end
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
# Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`.
set -l fish_function_path
# Erase virtualenv's `fish_prompt` and restore the original.
functions -e fish_prompt
functions -c _old_fish_prompt fish_prompt
functions -e _old_fish_prompt
set -e _OLD_FISH_PROMPT_OVERRIDE
end
set -e VIRTUAL_ENV
if test "$argv[1]" != 'nondestructive'
# Self-destruct!
functions -e pydoc
functions -e deactivate
end
end
# Unset irrelevant variables.
deactivate nondestructive
set -gx VIRTUAL_ENV "/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask"
set -gx _OLD_VIRTUAL_PATH $PATH
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
# Unset `$PYTHONHOME` if set.
if set -q PYTHONHOME
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
set -e PYTHONHOME
end
function pydoc
python -m pydoc $argv
end
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
# Copy the current `fish_prompt` function as `_old_fish_prompt`.
functions -c fish_prompt _old_fish_prompt
function fish_prompt
# Save the current $status, for fish_prompts that display it.
set -l old_status $status
# Prompt override provided?
# If not, just prepend the environment name.
if test -n ""
printf '%s%s' "" (set_color normal)
else
printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV")
end
# Restore the original $status
echo "exit $old_status" | source
_old_fish_prompt
end
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
end
+34
View File
@@ -0,0 +1,34 @@
"""By using execfile(this_file, dict(__file__=this_file)) you will
activate this virtualenv environment.
This can be used when you must use an existing Python interpreter, not
the virtualenv bin/python
"""
try:
__file__
except NameError:
raise AssertionError(
"You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))")
import sys
import os
old_os_path = os.environ.get('PATH', '')
os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if sys.platform == 'win32':
site_packages = os.path.join(base, 'Lib', 'site-packages')
else:
site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages')
prev_sys_path = list(sys.path)
import site
site.addsitedir(site_packages)
sys.real_prefix = sys.prefix
sys.prefix = base
# Move the added items to the front of the path:
new_sys_path = []
for item in list(sys.path):
if item not in prev_sys_path:
new_sys_path.append(item)
sys.path.remove(item)
sys.path[:0] = new_sys_path
+11
View File
@@ -0,0 +1,11 @@
#!/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask/bin/python3.4
# -*- coding: utf-8 -*-
import re
import sys
from setuptools.command.easy_install import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+11
View File
@@ -0,0 +1,11 @@
#!/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask/bin/python3.4
# -*- coding: utf-8 -*-
import re
import sys
from setuptools.command.easy_install import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+11
View File
@@ -0,0 +1,11 @@
#!/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask/bin/python3.4
# -*- coding: utf-8 -*-
import re
import sys
from pip import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+11
View File
@@ -0,0 +1,11 @@
#!/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask/bin/python3.4
# -*- coding: utf-8 -*-
import re
import sys
from pip import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+11
View File
@@ -0,0 +1,11 @@
#!/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask/bin/python3.4
# -*- coding: utf-8 -*-
import re
import sys
from pip import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+1
View File
@@ -0,0 +1 @@
python3.4
+78
View File
@@ -0,0 +1,78 @@
#!/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask/bin/python
import sys
import getopt
import sysconfig
valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
'ldflags', 'help']
if sys.version_info >= (3, 2):
valid_opts.insert(-1, 'extension-suffix')
valid_opts.append('abiflags')
if sys.version_info >= (3, 3):
valid_opts.append('configdir')
def exit_with_usage(code=1):
sys.stderr.write("Usage: {0} [{1}]\n".format(
sys.argv[0], '|'.join('--'+opt for opt in valid_opts)))
sys.exit(code)
try:
opts, args = getopt.getopt(sys.argv[1:], '', valid_opts)
except getopt.error:
exit_with_usage()
if not opts:
exit_with_usage()
pyver = sysconfig.get_config_var('VERSION')
getvar = sysconfig.get_config_var
opt_flags = [flag for (flag, val) in opts]
if '--help' in opt_flags:
exit_with_usage(code=0)
for opt in opt_flags:
if opt == '--prefix':
print(sysconfig.get_config_var('prefix'))
elif opt == '--exec-prefix':
print(sysconfig.get_config_var('exec_prefix'))
elif opt in ('--includes', '--cflags'):
flags = ['-I' + sysconfig.get_path('include'),
'-I' + sysconfig.get_path('platinclude')]
if opt == '--cflags':
flags.extend(getvar('CFLAGS').split())
print(' '.join(flags))
elif opt in ('--libs', '--ldflags'):
abiflags = getattr(sys, 'abiflags', '')
libs = ['-lpython' + pyver + abiflags]
libs += getvar('LIBS').split()
libs += getvar('SYSLIBS').split()
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
# shared library in prefix/lib/.
if opt == '--ldflags':
if not getvar('Py_ENABLE_SHARED'):
libs.insert(0, '-L' + getvar('LIBPL'))
if not getvar('PYTHONFRAMEWORK'):
libs.extend(getvar('LINKFORSHARED').split())
print(' '.join(libs))
elif opt == '--extension-suffix':
ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
if ext_suffix is None:
ext_suffix = sysconfig.get_config_var('SO')
print(ext_suffix)
elif opt == '--abiflags':
if not getattr(sys, 'abiflags', None):
exit_with_usage()
print(sys.abiflags)
elif opt == '--configdir':
print(sysconfig.get_config_var('LIBPL'))
+1
View File
@@ -0,0 +1 @@
python3.4
BIN
View File
Binary file not shown.
+11
View File
@@ -0,0 +1,11 @@
#!/Users/KevinMidboe/Dropbox/python/statusHandler/v1/flask/bin/python3.4
# -*- coding: utf-8 -*-
import re
import sys
from wheel.tool import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/__future__.py
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_bootlocale.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_collections_abc.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_dummy_thread.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/_weakrefset.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/abc.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/base64.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/bisect.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/codecs.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/collections
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/config-3.4m
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/copy.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/copyreg.py
@@ -0,0 +1,101 @@
import os
import sys
import warnings
import imp
import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib
# Important! To work on pypy, this must be a module that resides in the
# lib-python/modified-x.y.z directory
dirname = os.path.dirname
distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils')
if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
warnings.warn(
"The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
else:
__path__.insert(0, distutils_path)
real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY))
# Copy the relevant attributes
try:
__revision__ = real_distutils.__revision__
except AttributeError:
pass
__version__ = real_distutils.__version__
from distutils import dist, sysconfig
try:
basestring
except NameError:
basestring = str
## patch build_ext (distutils doesn't know how to get the libs directory
## path on windows - it hardcodes the paths around the patched sys.prefix)
if sys.platform == 'win32':
from distutils.command.build_ext import build_ext as old_build_ext
class build_ext(old_build_ext):
def finalize_options (self):
if self.library_dirs is None:
self.library_dirs = []
elif isinstance(self.library_dirs, basestring):
self.library_dirs = self.library_dirs.split(os.pathsep)
self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs"))
old_build_ext.finalize_options(self)
from distutils.command import build_ext as build_ext_module
build_ext_module.build_ext = build_ext
## distutils.dist patches:
old_find_config_files = dist.Distribution.find_config_files
def find_config_files(self):
found = old_find_config_files(self)
system_distutils = os.path.join(distutils_path, 'distutils.cfg')
#if os.path.exists(system_distutils):
# found.insert(0, system_distutils)
# What to call the per-user config file
if os.name == 'posix':
user_filename = ".pydistutils.cfg"
else:
user_filename = "pydistutils.cfg"
user_filename = os.path.join(sys.prefix, user_filename)
if os.path.isfile(user_filename):
for item in list(found):
if item.endswith('pydistutils.cfg'):
found.remove(item)
found.append(user_filename)
return found
dist.Distribution.find_config_files = find_config_files
## distutils.sysconfig patches:
old_get_python_inc = sysconfig.get_python_inc
def sysconfig_get_python_inc(plat_specific=0, prefix=None):
if prefix is None:
prefix = sys.real_prefix
return old_get_python_inc(plat_specific, prefix)
sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__
sysconfig.get_python_inc = sysconfig_get_python_inc
old_get_python_lib = sysconfig.get_python_lib
def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
if standard_lib and prefix is None:
prefix = sys.real_prefix
return old_get_python_lib(plat_specific, standard_lib, prefix)
sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__
sysconfig.get_python_lib = sysconfig_get_python_lib
old_get_config_vars = sysconfig.get_config_vars
def sysconfig_get_config_vars(*args):
real_vars = old_get_config_vars(*args)
if sys.platform == 'win32':
lib_dir = os.path.join(sys.real_prefix, "libs")
if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars:
real_vars['LIBDIR'] = lib_dir # asked for all
elif isinstance(real_vars, list) and 'LIBDIR' in args:
real_vars = real_vars + [lib_dir] # asked for list
return real_vars
sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__
sysconfig.get_config_vars = sysconfig_get_config_vars
@@ -0,0 +1,6 @@
# This is a config file local to this virtualenv installation
# You may include options that will be used by all distutils commands,
# and by easy_install. For instance:
#
# [easy_install]
# find_links = http://mylocalsite
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/fnmatch.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/functools.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/genericpath.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/hashlib.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/heapq.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/hmac.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/imp.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/importlib
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/io.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/keyword.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/linecache.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/locale.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/ntpath.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/operator.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/os.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/posixpath.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/random.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/re.py
+1
View File
@@ -0,0 +1 @@
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/reprlib.py

Some files were not shown because too many files have changed in this diff Show More