School/IKEA_scraper/.venv/Lib/site-packages/snakeviz/main.py
Kristofers Solo 2b19d56787 venv update
2021-09-19 12:05:06 +03:00

74 lines
2.0 KiB
Python

#!/usr/bin/env python
import os.path
from pstats import Stats
import json
try:
from urllib.parse import quote
except ImportError:
from urllib import quote
import tornado.ioloop
import tornado.web
from .stats import table_rows, json_stats
settings = {
'static_path': os.path.join(os.path.dirname(__file__), 'static'),
'template_path': os.path.join(os.path.dirname(__file__), 'templates'),
'debug': True,
'gzip': True
}
class VizHandler(tornado.web.RequestHandler):
def get(self, profile_name):
abspath = os.path.abspath(profile_name)
if os.path.isdir(abspath):
self._list_dir(abspath)
else:
try:
s = Stats(profile_name)
except:
raise RuntimeError('Could not read %s.' % profile_name)
self.render(
'viz.html', profile_name=profile_name,
table_rows=table_rows(s), callees=json_stats(s))
def _list_dir(self, path):
"""
Show a directory listing.
"""
entries = os.listdir(path)
dir_entries = [[[
'..',
quote(os.path.normpath(os.path.join(path, '..')), safe='')
]]]
for name in entries:
if name.startswith('.'):
# skip invisible files/directories
continue
fullname = os.path.join(path, name)
displayname = linkname = name
# Append / for directories or @ for symbolic links
if os.path.isdir(fullname):
displayname += '/'
if os.path.islink(fullname):
displayname += '@'
dir_entries.append(
[[displayname, quote(os.path.join(path, linkname), safe='')]])
self.render(
'dir.html', dir_name=path, dir_entries=json.dumps(dir_entries))
handlers = [(r'/snakeviz/(.*)', VizHandler)]
app = tornado.web.Application(handlers, **settings)
if __name__ == '__main__':
app.listen(8080)
tornado.ioloop.IOLoop.instance().start()