diff --git a/application/templates/tag_list.html b/application/templates/tag_list.html index 2304ec0..4cd467b 100644 --- a/application/templates/tag_list.html +++ b/application/templates/tag_list.html @@ -4,15 +4,14 @@
Your tags:
- {{ tags }} {{ u }} + {{ u }} {{ arr }}
from List: {% for tag in tags %} diff --git a/application/urls.py b/application/urls.py index 7dee351..c36b183 100644 --- a/application/urls.py +++ b/application/urls.py @@ -1,7 +1,11 @@ +from django.conf import settings from django.conf.urls import url from django.conf.urls import include +from django.urls import path from taggit_templatetags2 import urls as taggit_templatetags2_urls from . import views +import debug_toolbar + urlpatterns = [ url(r'^$', views.post_list, name='post_list'), @@ -19,3 +23,8 @@ urlpatterns = [ url(r'^tags/', include('taggit_templatetags2.urls')), ] +if settings.DEBUG: + import debug_toolbar + urlpatterns += [ + url(r'^__debug__/', include(debug_toolbar.urls)), + ] \ No newline at end of file diff --git a/application/views.py b/application/views.py index 21c12e2..8c36912 100644 --- a/application/views.py +++ b/application/views.py @@ -144,17 +144,18 @@ def student_page(request): def tag_list(request): log = logging.getLogger('mysite') u = CustomUser.objects.get(user=request.user) - tags= Tag.objects.filter(customuser=u) - arr=[] - arr.append(tags) - log.info("test".format(arr)) - """ + tags= Tag.objects.filter(name=u) + log.info(tags) + arr = [] for tag in tags: arr.append(str(tag)) + """ + arr.append(tags) + for tag in tags: + arr.append(str(tag)) + listing = list(arr) """ - listing = list(arr) - return render(request, 'tag_list.html', locals()) - + return render(request, 'tag_list.html', {'arr':arr}) class TagSearch(TagCanvasListView): template_name = 'blog_search_list_view.html' diff --git a/log.txt b/log.txt index e850e67..7a85c95 100644 --- a/log.txt +++ b/log.txt @@ -1,3 +1,40 @@ [16/Oct/2018 19:58:49] INFO [mysite:150] test [16/Oct/2018 20:00:13] INFO [mysite:150] test [16/Oct/2018 20:00:44] INFO [mysite:150] test +[18/Oct/2018 16:49:10] INFO [mysite:150] test +[18/Oct/2018 16:50:20] INFO [mysite:149] test +[18/Oct/2018 16:53:59] INFO [mysite:149] test +[18/Oct/2018 17:02:15] INFO [mysite:149] Here ist the log +[18/Oct/2018 17:03:03] INFO [mysite:149] Here ist the log +[18/Oct/2018 17:04:21] INFO [mysite:150] Here ist the log +[18/Oct/2018 17:08:44] INFO [mysite:150] Here ist the log +[18/Oct/2018 17:22:00] INFO [mysite:150] Here ist the log +[18/Oct/2018 17:29:57] INFO [mysite:150] Here ist the log +[18/Oct/2018 17:33:51] INFO [mysite:150] Here ist the log +[18/Oct/2018 17:37:15] INFO [mysite:147] hei +[18/Oct/2018 17:38:10] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:40:53] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:41:34] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:41:45] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:42:04] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:47:59] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:49:27] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:49:43] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 17:50:18] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:04:38] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:07:12] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:08:17] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:09:29] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:10:27] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:10:59] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:13:11] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:14:22] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:14:45] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:17:07] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:23:37] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:42:53] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:43:28] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 18:46:58] INFO [mysite:147] CustomUser object (25) +[18/Oct/2018 19:12:55] INFO [mysite:147] CustomUser object (25) +[19/Oct/2018 09:18:42] INFO [mysite:147] CustomUser object (25) +[19/Oct/2018 09:19:10] INFO [mysite:148] diff --git a/mysite/settings.py b/mysite/settings.py index dd5b84a..69fe217 100644 --- a/mysite/settings.py +++ b/mysite/settings.py @@ -216,6 +216,37 @@ LOGGING = { 'mysite': { 'handlers': ['console', 'logfile'], 'level': 'DEBUG', + 'formatter': 'standard' }, } } + + +if DEBUG: + INTERNAL_IPS = ('127.0.0.1', 'localhost',) + MIDDLEWARE += ( + 'debug_toolbar.middleware.DebugToolbarMiddleware', + ) + + INSTALLED_APPS += ( + 'debug_toolbar', + ) + + DEBUG_TOOLBAR_PANELS = [ + 'debug_toolbar.panels.versions.VersionsPanel', + 'debug_toolbar.panels.timer.TimerPanel', + 'debug_toolbar.panels.settings.SettingsPanel', + 'debug_toolbar.panels.headers.HeadersPanel', + 'debug_toolbar.panels.request.RequestPanel', + 'debug_toolbar.panels.sql.SQLPanel', + 'debug_toolbar.panels.staticfiles.StaticFilesPanel', + 'debug_toolbar.panels.templates.TemplatesPanel', + 'debug_toolbar.panels.cache.CachePanel', + 'debug_toolbar.panels.signals.SignalsPanel', + 'debug_toolbar.panels.logging.LoggingPanel', + 'debug_toolbar.panels.redirects.RedirectsPanel', + ] + + DEBUG_TOOLBAR_CONFIG = { + 'INTERCEPT_REDIRECTS': False, + } \ No newline at end of file diff --git a/thesisenv/bin/sqlformat b/thesisenv/bin/sqlformat new file mode 100755 index 0000000..b475614 --- /dev/null +++ b/thesisenv/bin/sqlformat @@ -0,0 +1,11 @@ +#!/Users/Esthi/thesis_ek/thesisenv/bin/python3 + +# -*- coding: utf-8 -*- +import re +import sys + +from sqlparse.__main__ import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/__init__.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/__init__.py new file mode 100644 index 0000000..a360cd2 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/__init__.py @@ -0,0 +1,17 @@ +from __future__ import absolute_import, unicode_literals + +__all__ = ['VERSION'] + + +try: + import pkg_resources + VERSION = pkg_resources.get_distribution('django-debug-toolbar').version +except Exception: + VERSION = 'unknown' + + +# Code that discovers files or modules in INSTALLED_APPS imports this module. + +urls = 'debug_toolbar.toolbar', 'djdt' + +default_app_config = 'debug_toolbar.apps.DebugToolbarConfig' diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/apps.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/apps.py new file mode 100644 index 0000000..5bafec4 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/apps.py @@ -0,0 +1,81 @@ +from __future__ import absolute_import, unicode_literals + +import inspect + +from django.apps import AppConfig +from django.conf import settings +from django.core.checks import Error, register +from django.middleware.gzip import GZipMiddleware +from django.utils.module_loading import import_string +from django.utils.translation import ugettext_lazy as _ + + +class DebugToolbarConfig(AppConfig): + name = 'debug_toolbar' + verbose_name = _("Debug Toolbar") + + +@register +def check_middleware(app_configs, **kwargs): + from debug_toolbar.middleware import DebugToolbarMiddleware + + errors = [] + gzip_index = None + debug_toolbar_indexes = [] + + setting = getattr(settings, 'MIDDLEWARE', None) + setting_name = 'MIDDLEWARE' + if setting is None: + setting = settings.MIDDLEWARE_CLASSES + setting_name = 'MIDDLEWARE_CLASSES' + + # Determine the indexes which gzip and/or the toolbar are installed at + for i, middleware in enumerate(setting): + if is_middleware_class(GZipMiddleware, middleware): + gzip_index = i + elif is_middleware_class(DebugToolbarMiddleware, middleware): + debug_toolbar_indexes.append(i) + + if not debug_toolbar_indexes: + # If the toolbar does not appear, report an error. + errors.append( + Error( + "debug_toolbar.middleware.DebugToolbarMiddleware is missing " + "from %s." % setting_name, + hint="Add debug_toolbar.middleware.DebugToolbarMiddleware to " + "%s." % setting_name, + ) + ) + elif len(debug_toolbar_indexes) != 1: + # If the toolbar appears multiple times, report an error. + errors.append( + Error( + "debug_toolbar.middleware.DebugToolbarMiddleware occurs " + "multiple times in %s." % setting_name, + hint="Load debug_toolbar.middleware.DebugToolbarMiddleware only " + "once in %s." % setting_name, + ) + ) + elif gzip_index is not None and debug_toolbar_indexes[0] < gzip_index: + # If the toolbar appears before the gzip index, report an error. + errors.append( + Error( + "debug_toolbar.middleware.DebugToolbarMiddleware occurs before " + "django.middleware.gzip.GZipMiddleware in %s." % setting_name, + hint="Move debug_toolbar.middleware.DebugToolbarMiddleware to " + "after django.middleware.gzip.GZipMiddleware in %s." % setting_name, + ) + ) + + return errors + + +def is_middleware_class(middleware_class, middleware_path): + try: + middleware_cls = import_string(middleware_path) + except ImportError: + return + return ( + inspect.isclass(middleware_cls) and + issubclass(middleware_cls, middleware_class) + ) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/compat.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/compat.py new file mode 100644 index 0000000..f220b05 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/compat.py @@ -0,0 +1,11 @@ +""" +This file exists to contain all Django and Python compatibility issues. + +In order to avoid circular references, nothing should be imported from +debug_toolbar. +""" + +try: + from django.template.base import linebreak_iter # NOQA +except ImportError: # Django < 1.9 + from django.views.debug import linebreak_iter # NOQA diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/decorators.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/decorators.py new file mode 100644 index 0000000..a1f7f3a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/decorators.py @@ -0,0 +1,16 @@ +import functools + +from django.http import Http404 + + +def require_show_toolbar(view): + @functools.wraps(view) + def inner(request, *args, **kwargs): + from debug_toolbar.middleware import get_show_toolbar + + show_toolbar = get_show_toolbar() + if not show_toolbar(request): + raise Http404 + + return view(request, *args, **kwargs) + return inner diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ca/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 0000000..260ace9 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ca/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ca/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 0000000..5de03a1 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,656 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Libre El Chaval , 2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/django-debug-toolbar/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Caxè" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" +msgstr[1] "" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "Encapçalaments" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Entrant" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "" +msgstr[1] "" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Registre de missatges" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "Demanar" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Configuració" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Senyals" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Total: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Hora" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Temps emprat" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versions" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Seriable" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Actiu" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "En transacció" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Desconegut" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Plantilles" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Amagar barra d'eina" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Amagar" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Mostrar barra d'eines" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Tancar" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Ubicació:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Resum" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Total crides" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Total temps" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Comandes" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Crides" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Temps (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Tipus" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Administració" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Clau" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Valor" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Nivell" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Canal" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Missatge" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Ubicació" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Cridar" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Per" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TempsTotal" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Recomptar" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Veure informació" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variable" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Sense dades GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Sense dades POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Configuració" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Senyal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Destinataris" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Petició" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Línia temporal" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Acció" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Connexió:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(desconegut)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Tornar" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL Executat" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Base de dades" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Error" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Cap" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "" +msgstr[1] "Plantilles" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Font" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nom" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versió" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/cs/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 0000000..3a2db0f Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/cs/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/cs/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 0000000..26b6cdb --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,670 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Vlada Macek , 2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Czech (http://www.transifex.com/projects/p/django-debug-toolbar/language/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "Data pro tento panel již nejsou k dispozici. Obnovte stránku a zkuste to znova." + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Mezipaměť" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d volání během %(time).2fms" +msgstr[1] "%(cache_calls)d volání během %(time).2fms" +msgstr[2] "%(cache_calls)d volání během %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Volání mezipaměti z %(count)d backendu" +msgstr[1] "Volání mezipaměti z %(count)d backendů" +msgstr[2] "Volání mezipaměti z %(count)d backendů" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "Záhlaví" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Protokol" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s zpráva" +msgstr[1] "%(count)s zprávy" +msgstr[2] "%(count)s zpráv" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Zprávy protokolu" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profilování" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Zachycení přesměrování" + +#: panels/request.py:18 +msgid "Request" +msgstr "Požadavek" + +#: panels/request.py:35 +msgid "" +msgstr "<žádný pohled>" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Settings" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Nastavení z modulu %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d příjemce 1 signálu" +msgstr[1] "%(num_receivers)d příjemci 1 signálu" +msgstr[2] "%(num_receivers)d příjemců 1 signálu" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d příjemce %(num_signals)d signálů" +msgstr[1] "%(num_receivers)d příjemci %(num_signals)d signálů" +msgstr[2] "%(num_receivers)d příjemců %(num_signals)d signálů" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Signály" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Statické soubory (nalezeno: %(num_found)s, použito: %(num_used)s)" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Statické soubory" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s soubor použit" +msgstr[1] "%(num_used)s soubory použity" +msgstr[2] "%(num_used)s souborů použito" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Celkem: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Čas" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Uživatelský čas CPU" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f msec" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Systémový čas CPU" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f msec" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "Celkový čas CPU" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f msec" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Uplynulý čas" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f msec" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Přepnutí kontextu" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d dobrovolně, %(ivcsw)d nedobrovolně" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Verze" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "Read uncommitted" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "Read committed" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "Repeatable read" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Serializable" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "V klidu (idle)" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Aktivní" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "Uvnitř transakce" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "V chybovém stavu" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Neznámé" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Šablony" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Šablony (renderovaných: %(num_templates)s)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Skrýt lištu" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Skrýt" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Vypnout pro následné požadavky" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Zapnout pro následné požadavky" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Zobrazit lištu" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Zavřít" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Adresa:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "Aplikace Django Debug Toolbar zachytila přesměrování na výše uvedenou adresu URL za účelem ladicího zobrazení. Chcete-li přesměrování dokončit, klepněte na odkaz výše." + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Souhrn" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Celkem volání" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Celkový čas" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Nalezení v mezipaměti" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Nebylo v mezipaměti" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Příkazy" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Volání" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Čas (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Typ" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Argumenty" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Klíčované argumenty" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Backend" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Záhlaví požadavku" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Klíč" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Hodnota" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Záhlaví odezvy" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "Prostředí WSGI" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Níže je zobrazena pouze podstatná část proměnných prostředí, protože WSGI je dědí od serveru." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Úroveň" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Kanál" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Zpráva" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Adresa" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Nebyly protokolovány žádné zprávy." + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Volání" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "KumulČas" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Celk. za volání" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "CelkČas" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Počet" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Informace o pohledových funkcích" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "Pohledová funkce" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "Název URL" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Soubory cookie" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Proměnná" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Žádné soubory cookie" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Data sezení" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Žádná data sezení" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "Data typu GET" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Žádná data typu GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "Data typu POST" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Žádná data typu POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Nastavení" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Signál" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Poskytuje" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Příjemci" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s dotaz" +msgstr[1] "%(num)s dotazy" +msgstr[2] "%(num)s dotazů" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Dotaz" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Časová osa" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Akce" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Spojení:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Úroveň izolace:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Stav transakce:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(neznámé)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Pro tento požadavek nebyl zaznamenán žádný dotaz SQL." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Zpět" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "Vysvětlené SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Spuštěné SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Databáze" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "Profilované SQL" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Chyba" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "Vybrané SQL" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Prázdná sada" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Cesta ke statickým souborům" +msgstr[1] "Cesty ke statickým souborům" +msgstr[2] "Cesty ke statickým souborům" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(prefix %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Žádné" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "Aplikace se statickými soubory" +msgstr[1] "Aplikace se statickými soubory" +msgstr[2] "Aplikace se statickými soubory" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Statický soubor" +msgstr[1] "Statické soubory" +msgstr[2] "Statické soubory" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s soubor" +msgstr[1] "%(payload_count)s soubory" +msgstr[2] "%(payload_count)s souborů" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Cesta" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Zdroj šablony:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Cesta k šabloně" +msgstr[1] "Cesty k šablonám" +msgstr[2] "Cesty k šablonám" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Šablona" +msgstr[1] "Šablony" +msgstr[2] "Šablony" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Zap./vyp. kontext" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Procesor kontextu" +msgstr[1] "Procesory kontextu" +msgstr[2] "Procesory kontextu" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Využití zdrojů" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Prostředek" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Časování prohlížeče" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Atribut" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Milisekund od začátku navigace (+délka)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Název" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Verze" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/de/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 0000000..b3d52c2 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/de/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/de/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/de/LC_MESSAGES/django.po new file mode 100644 index 0000000..6ba6974 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,656 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Jannis Leidel , 2012-2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: German (http://www.transifex.com/projects/p/django-debug-toolbar/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "Die Daten für dieses Panel sind nicht mehr verfügbar. Bitte laden Sie die Seite neu." + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d Abfrage in %(time).2fms" +msgstr[1] "%(cache_calls)d Abfragen in %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Cache-Aufrufe von %(count)d Backend" +msgstr[1] "Cache-Aufrufe von %(count)d Backends" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "Header" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Logging" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s Eintrag" +msgstr[1] "%(count)s Einträge" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Logeinträge" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profiling" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Umleitungen abfangen" + +#: panels/request.py:18 +msgid "Request" +msgstr "Anfrage" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Einstellungen" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Einstellungen von %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d Empfänger von einem Signal" +msgstr[1] "%(num_receivers)d Empfänger von einem Signal" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" +msgstr[1] "%(num_receivers)d Empfänger von %(num_signals)d Signalen" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Signale" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Statische Dateien (%(num_found)s gefunden, %(num_used)s benutzt)" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Statische Dateien" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s Datei benutzt" +msgstr[1] "%(num_used)s Dateien benutzt" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Gesamt: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Zeit" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "CPU-Zeit Benutzer" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f ms" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "CPU-Zeit System" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f ms" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "CPU-Zeit gesamt" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f ms" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Verstrichene Zeit" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f ms" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Kontextwechsel" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d freiwillig, %(ivcsw)d unfreiwillig" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versionen" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "Lesend, nicht ausgeführt" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "Lesend, ausgeführt" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "Wiederholtes Lesen" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Variable" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "Wartet" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Aktiv" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "In einer Transaktion" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Fehler" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Unbekannt" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Templates" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Templates (%(num_templates)s gerendert)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Toolbar ausblenden" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Ausblenden" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Für nächste und die darauffolgenden Anfragen deaktivieren" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Für nächste und die darauffolgenden Anfragen aktivieren" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Toolbar einblenden" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Schließen" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Ziel:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "Die Django Debug Toolbar hat eine Weiterleitung an die obenstehende URL zur weiteren Überprüfung abgefangen. Klicken Sie den Link, um wie gewohnt weitergeleitet zu werden." + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Zusammenfassung" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Aufrufe gesamt" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Zeit gesamt" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Cache erfolgreich" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Cache verfehlt" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Befehle" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Aufrufe" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Zeit (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Typ" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Argumente" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Schlüsselwort-Argumente" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Backend" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Anfrage-Header" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Name" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Wert" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Antwort-Header" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "WSGI-Umgebung" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Da sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Level" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Kanal" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Eintrag" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Ort" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Keine Logbucheinträge vorhanden" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Aufruf" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "Gesamt" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Per" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "Total" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Anzahl" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "View-Informationen" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "View-Funktion" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "URL-Name" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Cookies" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variable" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Keine Cookies" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Sitzungsdaten" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Keine Sitzungsdaten" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "GET-Daten" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Keine GET-Daten" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "POST-Daten" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Keine POST-Daten" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Einstellung" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Signal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Stellt bereit" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Empfänger" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s Abfrage" +msgstr[1] "%(num)s Abfragen" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Abfrage" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Verlauf" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Aktion" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Verbindung:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Isolationsebene:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Transaktionsstatus:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(unbekannt)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Es wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Zurück" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL erklärt" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Ausgeführtes SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Datenbank" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL durchleuchtet" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Fehler" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "SQL ausgewählt" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Leeres Set" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Pfad mit statischen Dateien" +msgstr[1] "Pfade mit statischen Dateien" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "-" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "App mit statischen Dateien" +msgstr[1] "Apps mit statischen Dateien" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Statische Datei" +msgstr[1] "Statische Dateien" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s Datei" +msgstr[1] "%(payload_count)s Dateien" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Pfad" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Template-Quelle:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Template-Pfad" +msgstr[1] "Template-Pfade" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Template" +msgstr[1] "Templates" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Context zeigen" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Context-Prozessor" +msgstr[1] "Context-Prozessoren" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Ressourcenverwendung" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Ressource" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Browserzeit" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Timing-Attribut" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Millisekunden seit Seitenaufruf (plus Dauer)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Name" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Version" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/en/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000..18bc8c9 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/en/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/en/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/en/LC_MESSAGES/django.po new file mode 100644 index 0000000..9e58f09 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,675 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-09-06 09:19+0200\n" +"PO-Revision-Date: 2012-03-31 20:10+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: apps.py:15 +msgid "Debug Toolbar" +msgstr "" + +#: panels/cache.py:188 +msgid "Cache" +msgstr "" + +#: panels/cache.py:193 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" +msgstr[1] "" + +#: panels/cache.py:201 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" + +#: panels/headers.py:34 +msgid "Headers" +msgstr "" + +#: panels/logging.py:66 +msgid "Logging" +msgstr "" + +#: panels/logging.py:72 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "" +msgstr[1] "" + +#: panels/logging.py:75 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:148 +msgid "Profiling" +msgstr "" + +#: panels/redirects.py:16 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:18 +msgid "Settings" +msgstr "" + +#: panels/settings.py:21 +#, python-format +msgid "Settings from %s" +msgstr "" + +#: panels/signals.py:44 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:47 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:52 +msgid "Signals" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:27 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:28 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:29 +msgid "Serializable" +msgstr "" + +#: panels/sql/panel.py:40 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:41 +msgid "Active" +msgstr "" + +#: panels/sql/panel.py:42 +msgid "In transaction" +msgstr "" + +#: panels/sql/panel.py:43 +msgid "In error" +msgstr "" + +#: panels/sql/panel.py:44 +msgid "Unknown" +msgstr "" + +#: panels/sql/panel.py:108 +msgid "SQL" +msgstr "" + +#: panels/staticfiles.py:88 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:106 +msgid "Static files" +msgstr "" + +#: panels/staticfiles.py:111 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" + +#: panels/templates/panel.py:161 +msgid "Templates" +msgstr "" + +#: panels/templates/panel.py:166 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "" + +#: panels/templates/panel.py:198 +msgid "No origin" +msgstr "" + +#: panels/timer.py:26 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "" + +#: panels/timer.py:31 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:37 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "" + +#: panels/timer.py:45 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:45 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:46 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:47 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:47 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:48 +msgid "Elapsed time" +msgstr "" + +#: panels/timer.py:48 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:49 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:49 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:20 +msgid "Versions" +msgstr "" + +#: templates/debug_toolbar/base.html:14 +msgid "Hide toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:14 +msgid "Hide" +msgstr "" + +#: templates/debug_toolbar/base.html:20 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:20 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:42 +msgid "Show toolbar" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:30 +msgid "Time (ms)" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Location" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/sql.html:9 +#, python-format +msgid "" +"including %(count)s similar" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:13 +#, python-format +msgid "" +"and %(dupes)s duplicates" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:28 +msgid "Query" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:29 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:31 +msgid "Action" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:48 +#, python-format +msgid "%(count)s similar queries." +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:54 +#, python-format +msgid "Duplicated %(dupes)s times." +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:86 +msgid "Connection:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:88 +msgid "Isolation level:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:91 +msgid "Transaction status:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:105 +msgid "(unknown)" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:114 +msgid "No SQL queries were recorded during this request." +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:3 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:7 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:11 +#: templates/debug_toolbar/panels/staticfiles.html:22 +#: templates/debug_toolbar/panels/staticfiles.html:34 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:30 +#: templates/debug_toolbar/panels/templates.html:47 +msgid "None" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:14 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:25 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:39 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:43 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/templates.html:22 +#: templates/debug_toolbar/panels/templates.html:40 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:33 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:10 +msgid "Package" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:11 +msgid "Name" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:12 +msgid "Version" +msgstr "" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: views.py:16 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/es/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000..0706dbe Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/es/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/es/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000..f7d763e --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,658 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# jcatalan , 2014 +# Leonardo J. Caballero G. , 2013-2014 +# marcelor , 2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/django-debug-toolbar/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "La información de este panel ya no se encuentra disponible. Por favor recargue la página y pruebe nuevamente." + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d llamada en %(time).2fms" +msgstr[1] "%(cache_calls)d llamadas en %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "%(count)d llamadas al Cache desde el backend" +msgstr[1] "%(count)d llamadas al Caché desde backends" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "Encabezados" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Registros" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s mensaje" +msgstr[1] "%(count)s mensajes" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Mensajes del registro" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Análisis de rendimiento" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Interceptar re-direcionamiento" + +#: panels/request.py:18 +msgid "Request" +msgstr "Petición" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Configuraciones" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Configuraciones en %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d receptor de 1 señal" +msgstr[1] "%(num_receivers)d receptores de 1 señal" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d receptor de %(num_signals)d señales" +msgstr[1] "%(num_receivers)d receptores de %(num_signals)d señales" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Señales" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Archivos estáticos (%(num_found)s encontrados, %(num_used)s en uso)" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Archivos estáticos" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s archivo usado" +msgstr[1] "%(num_used)s archivos usados" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Total: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Tiempo" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Tiempo en CPU de usuario" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f mseg" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Tiempo en CPU del sistema" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f mseg" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "Tiempo total de CPU" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f mseg" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Tiempo transcurrido" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f mseg" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Cambios de contexto" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d voluntario, %(ivcsw)d involuntario" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versiones" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "Leer cambios tentativos" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "Leer cambios permanentes" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "Lectura repetible" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Serializable" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "Inactivo" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Activo" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "En transacción" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "En error" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Desconocido" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Plantillas" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Plantillas (%(num_templates)s renderizadas)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Ocutar barra de herramientas" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Ocultar" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Deshabilitar para el próximo y sucesivos peticiones" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Habilitar para el próximo y sucesivos peticiones" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Mostrar barra de herramientas" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Cerrar" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Ubicación:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "El Django Debug Toolbar ha interceptado un re-direccionamiento a la dirección de Internet mostrada arriba, con el propósito de inspeccionarla. Usted puede hacer clic en el vínculo de arriba para continuar con el re-direccionamiento normalmente." + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Resúmen" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Llamadas totales" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Tiempo total" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Aciertos de caché" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Errores de caché" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Comandos" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Llamadas" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Tiempo (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Tipo" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Argumentos" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Argumentos por palabra clave" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Backend" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Encabezados de peticiones" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Clave" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Valor" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Encabezados de respuesta" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "Entorno WSGI" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Ya que el entorno WSGI hereda el entorno del servidor, solo un subconjunto significativo es mostrado más abajo." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Nivel" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Canal" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Mensaje" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Ubicación" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "No hay mensajes registrados" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Llamar" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "TiempoAcum" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Por" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TiempoTot" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Contar" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Información de Vista" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "Función vista" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "Nombre de dirección URL" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Cookies" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variable" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Sin cookies" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Datos de sesión" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Sin datos de sesión" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "Datos del GET" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Sin datos GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "Datos del POST" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Sin datos POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Configuración" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Señal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Proporcionando" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Receptores" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s consulta" +msgstr[1] "%(num)s consultas" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Query" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Línea de tiempo" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Acción" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Conexión:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Nivel de aislamiento:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Estado de la transacción:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(desconocido)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "No se registraron consultas SQL durante ésta petición." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Regresar" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL explicado" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL Ejecutado" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Base de datos" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL analizado" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Error" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "SQL seleccionado" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Establecer Vacío" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Ruta a archivos estático" +msgstr[1] "Rutas a archivos estáticos" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(prefijo %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Ninguno" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "Aplicación a archivos estáticos" +msgstr[1] "Aplicaciones de archivos estáticos" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Archivo estático" +msgstr[1] "Archivos estáticos" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s archivo" +msgstr[1] "%(payload_count)s archivos" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Ruta" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Fuente de plantilla:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Ruta de plantilla" +msgstr[1] "Rutas de plantillas" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Plantilla" +msgstr[1] "Plantillas" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Mostrar/Ocultar contexto" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Procesador de contexto" +msgstr[1] "Procesadores de contexto" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Uso de recursos" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Recurso" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Distribución de tiempos de navegador" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Milisegundos desde inicio de la navegación (+longitud)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nombre" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versión" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fi/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fi/LC_MESSAGES/django.mo new file mode 100644 index 0000000..4b9ff45 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fi/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fi/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fi/LC_MESSAGES/django.po new file mode 100644 index 0000000..7e27b07 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fi/LC_MESSAGES/django.po @@ -0,0 +1,656 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# nanook , 2012 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/django-debug-toolbar/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Välimuisti" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d kutsu %(time).2fms" +msgstr[1] "%(cache_calls)d kutsua %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Loki" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s viesti" +msgstr[1] "%(count)s viestiä" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profilointi" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Asetukset" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Asetukset tiedostosta %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d vastaanotin 1 signaalille" +msgstr[1] "%(num_receivers)d vastaanotinta 1 signaalille" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d vastaanotin %(num_signals)d signaalille" +msgstr[1] "%(num_receivers)d vastaanotinta %(num_signals)d signaalille" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Signaalit" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Staattiset tiedostot" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Aika" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Käyttäjän CPU-aika" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f msek" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Järjestelmän CPU-aika" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f msek" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "CPU-aika yhteensä" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f msek" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Kulunut aika" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f msek" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Kontekstin vivut" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versiot" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Muuttuja" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Tapahtuma" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "Tapahtuman tila:" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Virhe" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "(tuntematon)" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Asettelupohjat" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Asetttelupohjat (%(num_templates)s renderöity)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Piilota" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Sulje" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Aika (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Tyyppi" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Avain" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Arvo" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Taso" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Kanava" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Viesti" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Sijainti" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Ei viestejä lokissa" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Kutsu" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "CumTime" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "/" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TotTime" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Määrä" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Näkymän tiedot" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Muuttuja" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Ei GET-dataa" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Ei POST-dataa" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Asetus" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Signaali" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Vastaanottimet" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s kysely" +msgstr[1] "%(num)s kyselyä" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Kysely" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Aikajana" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Tapahtuma" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Yhteys:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Eristystaso:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Tapahtuman status:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(tuntematon)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Tämän pyynnön aikana ei tehty yhtään SQL-kyselyä." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Takaisin" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Suoritettu SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Tietokanta" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Virhe" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Tyhjä joukko" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "None" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "Staattiset tiedostot" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Polku" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Sivupohjan polku" +msgstr[1] "Sivupohjan polku" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Sivupohja" +msgstr[1] "Sivupohja" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Kontekstiprosessori" +msgstr[1] "Kontekstiprosessori" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Resurssi" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nimi" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versio" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fr/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000..74f7470 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fr/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fr/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000..5868111 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,659 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Pingax , 2013 +# claudep , 2013 +# David Paccoud, 2009 +# drivard , 2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: French (http://www.transifex.com/projects/p/django-debug-toolbar/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "Les données de ce panneau ne sont plus disponibles. Rechargez la page et essayez à nouveau." + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d appel en %(time).2fms" +msgstr[1] "%(cache_calls)d appels en %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Appels au cache depuis %(count)d moteur" +msgstr[1] "Appels au cache depuis %(count)d moteurs" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "En-têtes" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Journaux" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s message" +msgstr[1] "%(count)s messages" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Messages du journal" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profilage" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Interception des redirections" + +#: panels/request.py:18 +msgid "Request" +msgstr "Requête" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Paramètres" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Paramètres de %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d receveur d'un signal" +msgstr[1] "%(num_receivers)d receveurs d'un signal" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d receveur de %(num_signals)d signaux" +msgstr[1] "%(num_receivers)d receveurs de %(num_signals)d signaux" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Signaux" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Fichiers statiques (%(num_found)s trouvé(s), %(num_used)s utilisé(s))" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Fichiers statiques" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s fichier utilisé" +msgstr[1] "%(num_used)s fichiers utilisés" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Total : %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Temps" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Temps CPU de l'utilisateur" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f ms" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Temps CPU du système" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f ms" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "Temps total du CPU" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f ms" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Temps écoulé" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f ms" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Basculements de contexte" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d volontaire, %(ivcsw)d involontaire" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versions" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Auto validation" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "Lecture non validée" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "Lecture validée" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "Lecture répétable" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Sérialisable" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "Inactif" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Actif" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "Transaction en cours" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Erreur" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Indéterminé" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Gabarits" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Gabarits (%(num_templates)s affichés)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Masquer la barre d'outils" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Masquer" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Désactiver pour les requêtes suivantes" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Activer pour les requêtes suivantes" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Afficher la barre d'outils" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Fermer" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Emplacement :" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "La barre de débogage Django a intercepté une redirection vers l'URL ci-dessus afin de permettre la consultation des messages de débogage. Vous pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la redirection." + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Résumé" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Nombre total d'appels" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Temps total" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Succès de cache" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Défauts de cache" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Commandes" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Appels" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Temps (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Type" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Paramètres" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Paramètres nommés" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Moteur" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "En-têtes de requête" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Clé" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Valeur" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "En-têtes de réponse" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "Environnement WSGI" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Comme l'environnement WSGI hérite de celui du serveur, seul un sous-ensemble pertinent est affiché ci-dessous." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Niveau" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Canal" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Message" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Emplacement" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Aucun message dans le journal" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Appel" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "Temps cumulé" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Par" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "Temps total" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Compte" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Afficher l'information" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "Fonction de vue" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "Nom d'URL" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Cookies" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variable" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Pas de cookies" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Données de session" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Pas de données de session" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "Données GET" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Aucune donnée GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "Données POST" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Aucune donnée POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Paramètre" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Signal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Fournissant" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Receveurs" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s requête" +msgstr[1] "%(num)s requêtes" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Requête" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Chronologie" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Action" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Connexion :" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Niveau d'isolation :" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "État de la transaction :" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(indéterminé)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Aucune requête SQL n'a été enregistrée durant cette requête." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Retour" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL expliqué" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL Exécuté" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Base de données" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL profilé" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Erreur" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "SQL sélectionné" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Ensemble vide" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Chemin de fichier statique" +msgstr[1] "Chemins de fichiers statiques" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Aucun" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "Application de fichiers statiques" +msgstr[1] "Applications de fichiers statiques" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "Fichiers statiques" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s fichier" +msgstr[1] "%(payload_count)s fichiers" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Chemin" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Source du gabarit :" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "" +msgstr[1] "Chemin du gabarit" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "" +msgstr[1] "Gabarit" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Afficher/masquer le contexte" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Processeur de contexte" +msgstr[1] "Processeurs de contexte" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Utilisation des ressources" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Ressource" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Chronologie du navigateur" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Attribut mesuré" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Millisecondes depuis le début de la navigation (+longueur)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nom" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Version" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/he/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/he/LC_MESSAGES/django.mo new file mode 100644 index 0000000..08c8cd4 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/he/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/he/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/he/LC_MESSAGES/django.po new file mode 100644 index 0000000..66f1374 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/he/LC_MESSAGES/django.po @@ -0,0 +1,656 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# shaib , 2012 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Hebrew (http://www.transifex.com/projects/p/django-debug-toolbar/language/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" +msgstr[1] "" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "רישום יומן" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "" +msgstr[1] "" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "סיגנלים" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "זמן" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "גירסאות" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "משתנה" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "פעילות" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "שגיאה" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "תבניות" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "הסתר" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "סגור" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "סוג" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "מפתח" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "ערך" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "רמה" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "הודעה" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "מקום" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "אין הודעות" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "משתנה" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "אין נתוני GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "אין נתוני POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "סיגנל" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "פעילות" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "חזרה" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL שבוצע" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "שגיאה" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "קבוצה ריקה" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "" +msgstr[1] "תבנית" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/id/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/id/LC_MESSAGES/django.mo new file mode 100644 index 0000000..c22845a Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/id/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/id/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/id/LC_MESSAGES/django.po new file mode 100644 index 0000000..8589fb5 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/id/LC_MESSAGES/django.po @@ -0,0 +1,642 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Muhammad Panji , 2012 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Indonesian (http://www.transifex.com/projects/p/django-debug-toolbar/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s pesan" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Pengaturan" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Pengaturan dari %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Sinyal" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Berkas statik" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Waktu" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "CPU time pengguna" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "CPU time sistem" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "CPU time total" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Waktu terlampaui" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versi" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Variabel" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Aksi" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "Status transaksi:" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "(tidak diketahui)" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Template" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Menyembunyikan" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Menutup" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Waktu (milidetik)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Jenis" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Kunci" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Nilai" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Tingkat" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Kanal" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Pesan" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Lokasi" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Tidak ada pesan yang dicatat" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Panggil" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "CumTime" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Per" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TotTime" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Hitung" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Lihat informasi" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variabel" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Tidak ada data GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Tidak ada data POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Pengaturan" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Sinyal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Penerima" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Aksi" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Koneksi:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Tingkat isolasi:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Status transaksi:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(tidak diketahui)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Kembali" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL Tereksekusi" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Basis data" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Himpunan kosong" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Tidak ada" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Berkas statik" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Template path" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Sumber daya" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versi" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/it/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000..25867d6 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/it/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/it/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000..4f98f91 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,658 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Dario Agliottone , 2012 +# Flavio Curella , 2013 +# yakky , 2013-2014 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Italian (http://www.transifex.com/projects/p/django-debug-toolbar/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "Non sono più disponibili dati per questo pannello. Ricarica la pagina e riprova." + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d chiamata in %(time).2fms" +msgstr[1] "%(cache_calls)d chiamate in %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Chiamate alla cache da %(count)d backend" +msgstr[1] "Chiamate alla cache da %(count)d backend" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "Intestazioni" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Logging" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s messaggio" +msgstr[1] "%(count)s messaggi" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Messaggi di log" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profilazione" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Intercetta ridirezioni" + +#: panels/request.py:18 +msgid "Request" +msgstr "Request" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Impostazioni" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Impostazioni da %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d ricevitore di 1 segnale" +msgstr[1] "%(num_receivers)d ricevitori di 1 segnale" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d ricevitore di %(num_signals)d segnali" +msgstr[1] "%(num_receivers)d ricevitori di %(num_signals)d segnali" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Segnali" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "File statici (%(num_found)s trovati, %(num_used)s usati)" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Files statici" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s file usato" +msgstr[1] "%(num_used)s file usati" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Totale: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Tempo" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Tempo CPU utente" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f msec" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Tempo CPU sistema" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f msec" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "Tempo Totale CPU" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f msec" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Tempo Trascorso" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f msec" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Cambi di contesto" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d volontario, %(ivcsw)d involontario" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versioni" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "Read uncommitted" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "Read committed" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "Repeatable read" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Serializable" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "Idle" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Azione" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "Stato transazione:" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Errore" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "(sconosciuto)" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Template" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Templates (%(num_templates)s rendered)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Nascondi Toolbar" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Nascondi" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Disattiva per la prossima requests e le successive" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Abilita per la prossima requests e le successive" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Mostra Toolbar" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Chiudi" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Location:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "Django Debug Toolbar ha intercettato un redirect verso la URL indicata per visualizzare il debug, Puoi cliccare sul link sopra per continuare normalmente con la redirezione." + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Sommario" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Chiamate totali" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Tempo Totale" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Trovati in cache" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Non trovati in cache" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Comandi" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Chiamate" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Durata (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Tipo" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Argomenti" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Parole chiave" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Backend" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Header della request" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Nome" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Valore" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Header della response" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "Ambiente WSGI" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Visto che l'ambiente WSGI è ereditato dal server, sotto è mostrata solo la parte significativa." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Livello" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Canale" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Messaggio" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Location" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Nessun messaggio registrato" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Chiamata" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "CumTime" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Per" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TotTime" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Numero" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Vedi Informazioni" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "Funzione View" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "Nome URL" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Cookies" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variabile" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Nessun cookie" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Dati di sessione" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Nessun dato in sessione" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "Dati GET" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Nessun dato in GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "Dati POST" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Nessuno dato in POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Impostazione" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Segnale" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Forniti" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Ricevitori" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s query" +msgstr[1] "%(num)s query" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Query" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Timeline" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Azione" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Connessione:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Isolation level:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Stato transazione:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(sconosciuto)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Nessuna Query SQL è stata registrata durante questa richiesta" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Indietro" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL spigato" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL eseguita" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Database" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL profilato" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Errore" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "SQL selezionato" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Insieme vuoto" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Percorso file statici" +msgstr[1] "Percorsi file statici" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(prefisso %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Nessuno" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "App file statici" +msgstr[1] "App file statici" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "Files statici" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s file" +msgstr[1] "%(payload_count)s file" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Percorso" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Sorgente del template" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Percorso dei template" +msgstr[1] "Percorsi dei template" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "" +msgstr[1] "Template" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Cambia contesto" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Context processor" +msgstr[1] "Context processors" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Uso risorsa" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Risorsa" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Tempo browser" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Attributo" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Millisecondi dall'inizio della navigazione (+lunghezza)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nome" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versione" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/nl/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/nl/LC_MESSAGES/django.mo new file mode 100644 index 0000000..043aede Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/nl/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/nl/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/nl/LC_MESSAGES/django.po new file mode 100644 index 0000000..07b9554 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/nl/LC_MESSAGES/django.po @@ -0,0 +1,656 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Ingo Berben , 2012-2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Dutch (http://www.transifex.com/projects/p/django-debug-toolbar/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" +msgstr[1] "" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s bericht" +msgstr[1] "%(count)s berichten" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profilering" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Instellingen" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Instellingen van %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d ontvanger van 1 signaal" +msgstr[1] "%(num_receivers)d ontvangers van 1 signaal" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d ontvanger van %(num_signals)d signalen" +msgstr[1] "%(num_receivers)d ontvangers van %(num_signals)d signalen" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Signalen" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Totaal: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Tijd" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Gebruikers CPU tijd" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f msec" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Systeem CPU tijd" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f msec" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "Totaal CPU tijd" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f msec" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Verlopen tijd" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f msec" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d vrijwillig, %(ivcsw)d niet vrijwillig" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versies" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Serializeerbaar" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Actief" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Foutief" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Niet gekend" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Templates" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Templates (%(num_templates)s gerenderd)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Verberg toolbar" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Verbergen" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Bekijk toolbar" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Sluiten" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Samenvatting" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Tijd (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Type" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Sleutel" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Waarde" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Niveau" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Kanaal" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Bericht" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Locatie" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Geen berichten gelogd" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Oproepen" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TotTijd" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Aantal" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Bekijk informatie" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Parameter" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "GET data" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Geen GET data" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "POST data" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Geen POST data" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Instelling" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Signaal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Ontvangers" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Query" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Tijdslijn" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Actie" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Verbinding:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Transactiestatus:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(niet gekend)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Terug" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL uitgelegd" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Uitgevoerde SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Database" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Fout" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Lege set" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "None" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Templatepad" +msgstr[1] "Templatepaden" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Template" +msgstr[1] "Templates" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Bron" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Naam" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versie" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pl/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pl/LC_MESSAGES/django.mo new file mode 100644 index 0000000..6c1c791 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pl/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pl/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pl/LC_MESSAGES/django.po new file mode 100644 index 0000000..0d674f1 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pl/LC_MESSAGES/django.po @@ -0,0 +1,670 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Konrad Mosoń , 2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Polish (http://www.transifex.com/projects/p/django-debug-toolbar/language/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d wywołanie w %(time).2fms" +msgstr[1] "%(cache_calls)d wywołania w %(time).2fms" +msgstr[2] "%(cache_calls)d wywołań w %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Wywołań z cache z %(count)d backendu" +msgstr[1] "Wywołań z cache z %(count)d backendów" +msgstr[2] "Wywołań z cache z %(count)d backendów" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Logi" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s wiadomość" +msgstr[1] "%(count)s wiadomości" +msgstr[2] "%(count)s wiadomości" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profilowanie" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Ustawienia" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Ustawienia z %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d orbiorca 1 sygnału" +msgstr[1] "%(num_receivers)d odbiorców 1 sygnału" +msgstr[2] "%(num_receivers)d odbiorców 1 sygnału" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d odbiora %(num_signals)d sygnału" +msgstr[1] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" +msgstr[2] "%(num_receivers)d odbiorców %(num_signals)d sygnałów" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Sygnały" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Czas" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f msec" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f msec" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f msec" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f msec" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Wersje" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Aktywne" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "W transakcji" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "W błędzie" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Nieznane" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Templatki" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Templatki (%(num_templates)s wyrenderowano)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Ukryj" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Zamknij" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Podsumowanie" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Polecenia" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Wywołania" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Czas (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Typ" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Backend" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Klucz" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Wartość" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Poziom" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Kanał" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Wiadomość" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Lokalizacja" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Nie zalogowano żadnych wiadomości" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Wywołanie" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Ilość" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Pokaż informacje" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Zmienna" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Brak danych GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Brak danych POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Ustawienie" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Sygnał" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Odbiorcy" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s zapytanie" +msgstr[1] "%(num)s zapytania" +msgstr[2] "%(num)s zapytań" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Zapytanie" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Oś czasu" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Akcja" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Połączenie:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Poziom izolacji:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Status transakcji:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(nieznany)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Żadne zapytania SQL nie zostały odnotowane podczas tego zapytania." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Wstecz" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Wykonane zapytanie SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Baza danych" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Błąd" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Pusty zbiór" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Brak" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Ścieżka templatki" +msgstr[1] "Ścieżki templatek" +msgstr[2] "Ścieżki templatek" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Templatki" +msgstr[1] "Templatki" +msgstr[2] "Templatki" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Zasób" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nazwa" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Wersja" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt/LC_MESSAGES/django.mo new file mode 100644 index 0000000..aa6f995 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt/LC_MESSAGES/django.po new file mode 100644 index 0000000..038fdec --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt/LC_MESSAGES/django.po @@ -0,0 +1,656 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# joseduraes , 2014 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" +msgstr[1] "" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Registo" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "" +msgstr[1] "" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Intercetar redirecionamentos" + +#: panels/request.py:18 +msgid "Request" +msgstr "Pedido" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Configurações" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Sinais" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Ficheiros estáticos" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Total: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Tempo" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versões" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Variável" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Acção" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Erro" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Desconhecido" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Templates" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Templates (%(num_templates)s renderizados)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Ocultar barra" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Ocultar" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Desactivar para o seguinte e sucessivos pedidos" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Activar para o próximo e sucessivos pedidos" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Mostrar barra" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Fechar" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Localização" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Resumo" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Comandos" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Tipo" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Chave" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Valor" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Nível" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Mensagem" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Localização" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Nenhuma mensagem registada" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variável" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Sem dados GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "dados POST" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Sem variáveis POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Configurações" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Sinal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Receptores" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Acção" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Estado da transacção:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(desconhecido)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Nenhuma query SQL foi registada durante este pedido." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Voltar" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL Executado" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Erro" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Set vazio" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(prefixo %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Nenhum" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Ficheiro estático" +msgstr[1] "Ficheiros estáticos" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "" +msgstr[1] "Caminho da Template" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "Processador de Contexto" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Recurso" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nome" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versão" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000..808c489 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 0000000..ed25331 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,657 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Fábio , 2013-2014 +# Percy Pérez-Pinedo, 2009 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/django-debug-toolbar/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "Os dados para este painel não está mais disponível. Por favor, recarregue a página e tente novamente." + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d chamada em %(time).2fms" +msgstr[1] "%(cache_calls)d chamadas em %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Chamadas ao cache de %(count)d backend" +msgstr[1] "Chamadas ao cache de %(count)d backends" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "Cabeçalhos" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Logs" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s mensagem" +msgstr[1] "%(count)s mensagens" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Mensagens de log" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profiling" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Interceptar redirecionamentos" + +#: panels/request.py:18 +msgid "Request" +msgstr "Requisição" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Configurações" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Configurações em: %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d receptor de 1 sinal" +msgstr[1] "%(num_receivers)d receptores de 1 sinal" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d receptor de %(num_signals)d sinais" +msgstr[1] "%(num_receivers)d receptores de %(num_signals)d sinais" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Sinais" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Arquivos estáticos (%(num_found)s encontrados, %(num_used)s sendo utilizados)" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Arquivos estáticos" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s arquivo utilizado" +msgstr[1] "%(num_used)s arquivos utilizados" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Total: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Tempo" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Tempo de CPU do usuário" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f ms" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Tempo de CPU do sistema" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f ms" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "Tempo total de CPU" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f ms" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Tempo decorrido" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f ms" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Mudanças de contexto" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d voluntário, %(ivcsw)d involuntário" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versões" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "Read uncommitted" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "Read committed" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "Leitura repetida" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Variável" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "Ocioso" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Ação" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "Na transação" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Erro" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "Desconhecido" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Templates" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Templates (%(num_templates)s renderizados)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Ocultar barra de ferramentas" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Esconder" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Desativar para próximas requisições" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Habilitar para próximas requisições" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Mostrar barra de ferramentas" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Fechar" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Localização:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "O Django Debug Toolbar interceptou um redirecionamento para a URL acima para fins de visualização de depuração. Você pode clicar no link acima para continuar com o redirecionamento normalmente." + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Resumo" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Total de chamadas" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Tempo total" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Acessos ao cache" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Falhas de cache" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Comandos" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Chamadas" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Tempo (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Tipo" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Argumentos" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Argumentos" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Backend" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Cabeçalhos de Requisição" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Chave" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Valor" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Cabeçalhos de Resposta" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "Ambiente WSGI" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Uma vez que o ambiente WSGI herda o ambiente do servidor, apenas um subconjunto significativo é mostrado abaixo." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Nível" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Canal" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Mensagem" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Localização" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Nenhuma mensagem logada" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Chamar" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "CumTime" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Per" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TotTime" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Contagem" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Ver informação" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "Função View" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "Nome da URL" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Cookies" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variável" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Sem Cookies" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Dados de Sessão" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Sem dados de Sessão" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "Dados de GET" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Não há dados de GET" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "Dados de POST" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Não há dados de POST" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Configuração" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Sinais" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Fornecendo" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Recebedores" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s consulta" +msgstr[1] "%(num)s consultas" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Query" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Linha do tempo" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Ação" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Conexão:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Nível de isolamento:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Status da transação:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(unknown)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "Nenhuma consulta SQL foi registrada durante esta requisição." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Voltar" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL explicada" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "SQL Executada" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Banco de dados" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL perfilado" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Erro" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "SQL selecionada" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Conjunto vazio" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Caminho do arquivo estático" +msgstr[1] "Caminho dos arquivos estáticos" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(prefixo %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Nenhum" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "Arquivo estático de app" +msgstr[1] "Arquivos estáticos de apps" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Arquivo estático" +msgstr[1] "Arquivos estáticos" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s arquivo" +msgstr[1] "%(payload_count)s arquivos" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Caminho" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Origem do Template:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Caminho do Template" +msgstr[1] "Caminho do Templates" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Template" +msgstr[1] "Templates" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Alternar contexto" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "Processador do Contexto" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Uso de recursos" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Recurso" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Cronometragem do Navegador" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Atributo de Cronometragem" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Milissegundos desde início de navegação (+length)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Nome" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Versão" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ru/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000..f67bfb0 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ru/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ru/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..7e8aa78 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,695 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Ilya Baryshev , 2013 +# Mikhail Korobov, 2009 +# Алексей Борискин , 2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-21 16:45+0600\n" +"PO-Revision-Date: 2016-07-21 17:22+0600\n" +"Last-Translator: Igor 'idle sign' Starikov \n" +"Language-Team: Russian (http://www.transifex.com/projects/p/django-debug-" +"toolbar/language/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "Отладочная панель" + +#: panels/cache.py:204 +msgid "Cache" +msgstr "Кеш" + +#: panels/cache.py:209 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d обращение за %(time).2f мс" +msgstr[1] "%(cache_calls)d обращения за %(time).2f мс" +msgstr[2] "%(cache_calls)d обращений за %(time).2f мс" + +#: panels/cache.py:217 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Обращения к кешу от %(count)d бэкенда" +msgstr[1] "Обращения к кешу от %(count)d бэкендов" +msgstr[2] "Обращения к кешу от %(count)d бэкендов" + +#: panels/headers.py:34 +msgid "Headers" +msgstr "Заголовки" + +#: panels/logging.py:66 +msgid "Logging" +msgstr "Логи" + +#: panels/logging.py:72 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s сообщение" +msgstr[1] "%(count)s сообщений" +msgstr[2] "%(count)s сообщений" + +#: panels/logging.py:75 +msgid "Log messages" +msgstr "Сообщения в логе" + +#: panels/profiling.py:144 +msgid "Profiling" +msgstr "Профилирование" + +#: panels/redirects.py:16 +msgid "Intercept redirects" +msgstr "Перехватывать перенаправления" + +#: panels/request.py:18 +msgid "Request" +msgstr "Запрос" + +#: panels/request.py:35 +msgid "" +msgstr "<нет представления>" + +#: panels/request.py:47 +msgid "" +msgstr "<недоступно>" + +#: panels/settings.py:18 +msgid "Settings" +msgstr "Настройки" + +#: panels/settings.py:21 +#, python-format +msgid "Settings from %s" +msgstr "Настройки из %s" + +#: panels/signals.py:44 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d получатель 1 сигнала" +msgstr[1] "%(num_receivers)d получателя 1 сигнала" +msgstr[2] "%(num_receivers)d получателей 1 сигнала" + +#: panels/signals.py:47 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d получатель %(num_signals)d сигнала(ов)" +msgstr[1] "%(num_receivers)d получателя %(num_signals)d сигнала(ов)" +msgstr[2] "%(num_receivers)d получателей %(num_signals)d сигнала(ов)" + +#: panels/signals.py:52 +msgid "Signals" +msgstr "Сигналы" + +#: panels/sql/panel.py:25 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:26 +msgid "Read uncommitted" +msgstr "Read uncommitted" + +#: panels/sql/panel.py:27 +msgid "Read committed" +msgstr "Read committed" + +#: panels/sql/panel.py:28 +msgid "Repeatable read" +msgstr "Repeatable read" + +#: panels/sql/panel.py:29 +msgid "Serializable" +msgstr "Сериализуемый" + +#: panels/sql/panel.py:40 +msgid "Idle" +msgstr "Ожидание" + +#: panels/sql/panel.py:41 +msgid "Active" +msgstr "Действие" + +#: panels/sql/panel.py:42 +msgid "In transaction" +msgstr "В транзакции" + +#: panels/sql/panel.py:43 +msgid "In error" +msgstr "Ошибка" + +#: panels/sql/panel.py:44 +msgid "Unknown" +msgstr "Неизвестно" + +#: panels/sql/panel.py:108 +msgid "SQL" +msgstr "SQL" + +#: panels/staticfiles.py:87 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Файлов статики (вего: %(num_found)s, использовано: %(num_used)s)" + +#: panels/staticfiles.py:105 +msgid "Static files" +msgstr "Статика" + +#: panels/staticfiles.py:110 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s файл используется" +msgstr[1] "%(num_used)s файла используются" +msgstr[2] "%(num_used)s файлов используются" + +#: panels/templates/panel.py:128 +msgid "Templates" +msgstr "Шаблоны" + +#: panels/templates/panel.py:133 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Шаблоны (обработано %(num_templates)s)" + +#: panels/templates/panel.py:164 +msgid "No origin" +msgstr "Нет источника" + +#: panels/timer.py:26 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2f мс (%(total)0.2f мс)" + +#: panels/timer.py:31 +#, python-format +msgid "Total: %0.2fms" +msgstr "Итого: %0.2f мс" + +#: panels/timer.py:37 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Время" + +#: panels/timer.py:45 +msgid "User CPU time" +msgstr "Пользовательское время ядра" + +#: panels/timer.py:45 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f мс" + +#: panels/timer.py:46 +msgid "System CPU time" +msgstr "Системное время ядра" + +#: panels/timer.py:46 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f мс" + +#: panels/timer.py:47 +msgid "Total CPU time" +msgstr "Общее время ядра" + +#: panels/timer.py:47 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f мс" + +#: panels/timer.py:48 +msgid "Elapsed time" +msgstr "Затраченное время" + +#: panels/timer.py:48 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f мс" + +#: panels/timer.py:49 +msgid "Context switches" +msgstr "Переключения контекста" + +#: panels/timer.py:49 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d намеренных, %(ivcsw)d вынужденных" + +#: panels/versions.py:20 +msgid "Versions" +msgstr "Версии" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Скрыть панель" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Скрыть" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Отключить для последующих запросов" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Включить для последующих запросов" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Показать панель" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Сводка" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Всего вызовов" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Общее время" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Попадания" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Промахи" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Команды" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Вызовы" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:23 +msgid "Time (ms)" +msgstr "Время (мс)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Тип" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Аргументы" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Именованные аргументы" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Бэкенд" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Заголовки запроса" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Заголовок" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Значение" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Заголовки ответа" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "WSGI-окружение" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" +"Так как WSGI-окружение наследует окружение сервера, ниже отображены лишь те " +"из переменных, которые важны для нужд отладки." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Уровень" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Канал" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Сообщение" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Location" +msgstr "Место" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Сообщений нет" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Вызов" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "КумулВрем" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "ЗаВызов" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "ИтогВремя" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Кол-во" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Информация о представлении" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "Функция представления" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "Имя URL" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Куки" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Переменная" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Нет куков" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Сессия" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Нет данных в сессии" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "GET" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Нет GET данных" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "POST" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Нет POST данных" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Параметр" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Сигнал" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Аргументы" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Получатели сигнала" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s запрос" +msgstr[1] "%(num)s запроса" +msgstr[2] "%(num)s запросов" + +#: templates/debug_toolbar/panels/sql.html:9 +#, python-format +msgid "including %(dupes)s duplicates" +msgstr "включая дублей: %(dupes)s" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Query" +msgstr "Запрос" + +#: templates/debug_toolbar/panels/sql.html:22 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Временная диаграмма" + +#: templates/debug_toolbar/panels/sql.html:24 +msgid "Action" +msgstr "Действие" + +#: templates/debug_toolbar/panels/sql.html:41 +#, python-format +msgid "Duplicated %(dupes)s times." +msgstr "Дублей: %(dupes)s." + +#: templates/debug_toolbar/panels/sql.html:73 +msgid "Connection:" +msgstr "Соединение:" + +#: templates/debug_toolbar/panels/sql.html:75 +msgid "Isolation level:" +msgstr "Уровень изоляции:" + +#: templates/debug_toolbar/panels/sql.html:78 +msgid "Transaction status:" +msgstr "Статус транзакции:" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "(unknown)" +msgstr "(неизвестно)" + +#: templates/debug_toolbar/panels/sql.html:101 +msgid "No SQL queries were recorded during this request." +msgstr "" +"Во время обработки этого HTTP-запроса не было записано ни одного SQL-запроса." + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL Explain" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Запрос" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "База данных" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "Профилирование SQL" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Ошибка" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "Выбранные SQL-запросы" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Ничего, ноль строк" + +#: templates/debug_toolbar/panels/staticfiles.html:3 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Путь к статике" +msgstr[1] "Пути к статике" +msgstr[2] "Пути к статике" + +#: templates/debug_toolbar/panels/staticfiles.html:7 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(префикс %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:11 +#: templates/debug_toolbar/panels/staticfiles.html:22 +#: templates/debug_toolbar/panels/staticfiles.html:34 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Нет" + +#: templates/debug_toolbar/panels/staticfiles.html:14 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "Приложение со статикой" +msgstr[1] "Приложения со статикой" +msgstr[2] "Приложения со статикой" + +#: templates/debug_toolbar/panels/staticfiles.html:25 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "Файл статики" +msgstr[1] "Файлы статики" +msgstr[2] "Файлы статики" + +#: templates/debug_toolbar/panels/staticfiles.html:39 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s файл" +msgstr[1] "%(payload_count)s файла" +msgstr[2] "%(payload_count)s файлов" + +#: templates/debug_toolbar/panels/staticfiles.html:43 +msgid "Path" +msgstr "Путь" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Источник шаблона:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Путь к шаблонам" +msgstr[1] "Пути к шаблонам" +msgstr[2] "Пути к шаблонам" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Шаблон" +msgstr[1] "Шаблоны" +msgstr[2] "Шаблоны" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Контекст" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Контекст процессор" +msgstr[1] "Контекст процессоры" +msgstr[2] "Контекст процессоры" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Потребление ресурсов" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Ресурс" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Браузерное время" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Событие" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "С начала навигации в мс (+продолжительность)" + +#: templates/debug_toolbar/panels/versions.html:7 +msgid "Package" +msgstr "Пакет" + +#: templates/debug_toolbar/panels/versions.html:8 +msgid "Name" +msgstr "Название" + +#: templates/debug_toolbar/panels/versions.html:9 +msgid "Version" +msgstr "Версия" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Место:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" +"Django Debug Toolbar перехватил перенаправление на адрес, указанный выше. Вы " +"можете нажать на ссылку, чтобы выполнить переход самостоятельно." + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" +"Данные этой панели больше недоступны. Пожалуйста, перезагрузите страницу и " +"попробуйте ещё раз." + +#~ msgid "Close" +#~ msgstr "Закрыть" + +#~ msgid "Back" +#~ msgstr "Назад" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sk/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sk/LC_MESSAGES/django.mo new file mode 100644 index 0000000..a26e3cc Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sk/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sk/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 0000000..2c8a9c7 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,672 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Juraj Bubniak , 2012 +# Juraj Bubniak , 2013 +# Rastislav Kober , 2012 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/django-debug-toolbar/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "Dáta pre tento panel už nie sú k dispozícii. Načítajte si prosím stránku a skúste to znova." + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(cache_calls)d volanie za %(time).2fms" +msgstr[1] "%(cache_calls)d volaní za %(time).2fms" +msgstr[2] "%(cache_calls)d volaní za %(time).2fms" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "Cache volania z %(count)d backendu" +msgstr[1] "Cache volania z %(count)d backendov" +msgstr[2] "Cache volania z %(count)d backendov" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "Hlavičky" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Zápis" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s správa" +msgstr[1] "%(count)s správ" +msgstr[2] "%(count)s správ" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "Správy zápisu" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Analýza" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "Zachytiť presmerovania" + +#: panels/request.py:18 +msgid "Request" +msgstr "Požiadavka" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Nastavenia" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "Nastavenia z %s" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "%(num_receivers)d príjemca 1 signálu" +msgstr[1] "%(num_receivers)d príjemcov 1 signálu" +msgstr[2] "%(num_receivers)d príjemcov 1 signálu" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_receivers)d príjemca %(num_signals)d signálov" +msgstr[1] "%(num_receivers)d príjemcov %(num_signals)d signálov" +msgstr[2] "%(num_receivers)d príjemcov %(num_signals)d signálov" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Signály" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "Statické súbory (%(num_found)s nájdených, %(num_used)s použitých)" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Statické súbory" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s použitý súbor" +msgstr[1] "%(num_used)s použitých súborov" +msgstr[2] "%(num_used)s použitých súborov" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2fms (%(total)0.2fms)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "Celkovo: %0.2fms" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Čas" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "Užívateľský čas CPU" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f msek" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "Systémový čas CPU" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f msek" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "Celkový čas CPU" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f msek" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "Uplynutý čas" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f msek" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "Prepnutí kontextu" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d dobrovoľných, %(ivcsw)d nedobrovoľných" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Verzie" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "Autocommit" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "Read uncommitted" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "Read committed" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "Opakovateľné čítanie" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Premenná" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "Nečinný" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Akcia" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "Stav transakcie:" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Chyba" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "(neznámy)" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Šablóny" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Šablóny (%(num_templates)s spracovaných)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "Skryť panel nástrojov" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Skryť" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "Zakázať pre ďalšie a nasledujúce požiadavky" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "Povoliť pre ďalšie a nasledujúce požiadavky" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "Zobraziť panel nástrojov" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Zatvoriť" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "Poloha:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "Django Debug Toolbar zachytil presmerovanie na vyššie uvedenú URL pre účely ladenia. Pre normálne presmerovanie môžete kliknúť na vyššie uvedený odkaz." + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Zhrnutie" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "Celkovo volaní" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "Celkový čas" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "Volaní cache" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "Vynechania cache" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "Príkazy" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "Volania" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Čas (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Typ" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "Argumenty" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "Kľúčové argumenty" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "Backend" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "Hlavičky požiadavky" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Kľúč" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Hodnota" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "Hlavičky odpovede" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "WSGI prostredie" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "Keďže WSGI prostredie dedí z prostredia servera, je nižšie zobrazená iba významná podmnožina." + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Úroveň" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "Kanál" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Správa" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Poloha" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Žiadne správy neboli zaznamenané" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "Volanie" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "CumTime" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "Za" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "TotTime" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Počet" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Zobraziť informácie" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "View funkcia" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "URL meno" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Cookies" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Premenná" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "Žiadne cookies" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Dáta relácie" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "Žiadne dáta relácie" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "GET dáta" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Žiadne GET dáta" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "POST dáta" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Žiadne POST dáta" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Nastavenie" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Signál" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "Poskytuje" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Príjemcovia" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s dopyt" +msgstr[1] "%(num)s dopytov" +msgstr[2] "%(num)s dopytov" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Dopyt" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "Časová os" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Akcia" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Pripojenie:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "Úroveň izolácie:" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "Stav transakcie:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(neznámy)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "V priebehu tejto požiadavky neboli zaznamenané žiadne SQL dopyty." + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Späť" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL vysvetlené" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Vykonané SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Databáza" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL profilované" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Chyba" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "SQL označené" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Prázdny rad" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "Cesta k statickému súboru" +msgstr[1] "Cesty k statickým súborom" +msgstr[2] "Cesty k statickým súborom" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(prefix %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Žiadny" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "Aplikácia pre statické súbory" +msgstr[1] "Aplikácie pre statické súbory" +msgstr[2] "Aplikácie pre statické súbory" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "Statické súbory" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s súbor" +msgstr[1] "%(payload_count)s súborov" +msgstr[2] "%(payload_count)s súborov" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Cesta" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "Zdrojový kód šablóny:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "Cesta k šablóne" +msgstr[1] "Cesta k šablóne" +msgstr[2] "Cesta k šablóne" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Šablóna" +msgstr[1] "Šablóna" +msgstr[2] "Šablóna" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "Prepnúť kontext" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Spracovateľ kontextu" +msgstr[1] "Spracovateľ kontextu" +msgstr[2] "Spracovateľ kontextu" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "Využitie prostriedkov" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Prostriedok" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "Čas prehliadača" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "Časový atribút" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "Milisekúnd od spustenia navigácie (+dĺžka)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Meno" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Verzia" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo new file mode 100644 index 0000000..ae73344 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po new file mode 100644 index 0000000..0c8b2e8 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po @@ -0,0 +1,657 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Alex Nordlund , 2012-2013 +# Alex Nordlund , 2012 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/django-debug-toolbar/language/sv_SE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv_SE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Cache" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" +msgstr[1] "" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s meddelande" +msgstr[1] "%(count)s meddelanden" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "Profilering" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Inställningar" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "" +msgstr[1] "" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Signaler" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "Statiska filer" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Tid" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Versioner" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "Variabel" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "Åtgärd" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "Felmeddelande" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "(okänd)" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Mallar" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Dölj" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Stäng" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "Sammanfattning" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Tid (ms)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Nyckel" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Värde" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Nivå" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Meddelande" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Plats" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "Räkna" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "Visa informationen" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Variabel" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Ingen GET data" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Ingen POST data" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "Inställning" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Signal" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Mottagare" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Fråga" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Åtgärd" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "Anslutning:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(okänd)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Bakåt" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "Utförd SQL" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "Databas" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Felmeddelande" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "Tomt set" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "Inget" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "Statiska filer" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "Sökväg" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Mall" +msgstr[1] "Mallar" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "Resurs" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "Namn" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Version" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/uk/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/uk/LC_MESSAGES/django.mo new file mode 100644 index 0000000..6ea928e Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/uk/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/uk/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/uk/LC_MESSAGES/django.po new file mode 100644 index 0000000..9a642f6 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/uk/LC_MESSAGES/django.po @@ -0,0 +1,670 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# Sergey Lysach , 2013 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django-debug-toolbar/language/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "Кеш" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "Логи" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "" + +#: panels/request.py:18 +msgid "Request" +msgstr "" + +#: panels/request.py:35 +msgid "" +msgstr "" + +#: panels/request.py:47 +msgid "" +msgstr "" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "Налаштування" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "Сигнали" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "Час" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "Версії" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "Шаблони" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "Шаблони (оброблено %(num_templates)s)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "Сховати" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "Закрити" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "Час (мс)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "Тип" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "Ключ" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "Значення" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "Рівень" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "Повідомлення" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "Місце" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "Повідомлень немає" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "Змінна" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "Немає GET даних" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "Немає POST даних" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "Сигнал" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "Отримувачі сигнала" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "Запит" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "Подія" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "Назад" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "База даних" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "Помилка" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "Шаблон" +msgstr[1] "Шаблони" +msgstr[2] "Шаблонів" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "Версія" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000..0dad769 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 0000000..521d577 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,642 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# +# Translators: +# mozillazg , 2013-2014 +msgid "" +msgstr "" +"Project-Id-Version: Django Debug Toolbar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-04-25 21:52+0200\n" +"PO-Revision-Date: 2014-04-25 19:53+0000\n" +"Last-Translator: Aymeric Augustin \n" +"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-debug-toolbar/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: apps.py:11 +msgid "Debug Toolbar" +msgstr "" + +#: views.py:14 +msgid "" +"Data for this panel isn't available anymore. Please reload the page and " +"retry." +msgstr "当前面板的数据暂不可用。请刷新页面并重试。" + +#: panels/cache.py:191 +msgid "Cache" +msgstr "缓存" + +#: panels/cache.py:196 +#, python-format +msgid "%(cache_calls)d call in %(time).2fms" +msgid_plural "%(cache_calls)d calls in %(time).2fms" +msgstr[0] "%(time).2f 毫秒内 %(cache_calls)d 次调用" + +#: panels/cache.py:204 +#, python-format +msgid "Cache calls from %(count)d backend" +msgid_plural "Cache calls from %(count)d backends" +msgstr[0] "来自 %(count)d 个后端的缓存调用" + +#: panels/headers.py:35 +msgid "Headers" +msgstr "HTTP 头" + +#: panels/logging.py:64 +msgid "Logging" +msgstr "日志" + +#: panels/logging.py:70 +#, python-format +msgid "%(count)s message" +msgid_plural "%(count)s messages" +msgstr[0] "%(count)s 条消息" + +#: panels/logging.py:73 +msgid "Log messages" +msgstr "日志信息" + +#: panels/profiling.py:127 +msgid "Profiling" +msgstr "性能分析" + +#: panels/redirects.py:17 +msgid "Intercept redirects" +msgstr "拦截重定向" + +#: panels/request.py:18 +msgid "Request" +msgstr "请求" + +#: panels/request.py:35 +msgid "" +msgstr "<没有 view>" + +#: panels/request.py:47 +msgid "" +msgstr "<不可用>" + +#: panels/settings.py:20 +msgid "Settings" +msgstr "设置" + +#: panels/settings.py:23 +#, python-format +msgid "Settings from %s" +msgstr "来自 %s 的设置" + +#: panels/signals.py:45 +#, python-format +msgid "%(num_receivers)d receiver of 1 signal" +msgid_plural "%(num_receivers)d receivers of 1 signal" +msgstr[0] "1个信号 %(num_receivers)d 个接收者" + +#: panels/signals.py:48 +#, python-format +msgid "%(num_receivers)d receiver of %(num_signals)d signals" +msgid_plural "%(num_receivers)d receivers of %(num_signals)d signals" +msgstr[0] "%(num_signals)d 个信号 %(num_receivers)d 个接收者" + +#: panels/signals.py:53 +msgid "Signals" +msgstr "信号" + +#: panels/staticfiles.py:89 +#, python-format +msgid "Static files (%(num_found)s found, %(num_used)s used)" +msgstr "静态文件 (%(num_found)s 个找到,%(num_used)s 个被使用)" + +#: panels/staticfiles.py:107 +msgid "Static files" +msgstr "静态文件" + +#: panels/staticfiles.py:112 +#, python-format +msgid "%(num_used)s file used" +msgid_plural "%(num_used)s files used" +msgstr[0] "%(num_used)s 个文件被使用" + +#: panels/timer.py:23 +#, python-format +msgid "CPU: %(cum)0.2fms (%(total)0.2fms)" +msgstr "CPU: %(cum)0.2f 毫秒 (总耗时: %(total)0.2f 毫秒)" + +#: panels/timer.py:28 +#, python-format +msgid "Total: %0.2fms" +msgstr "总共:%0.2f 毫秒" + +#: panels/timer.py:34 templates/debug_toolbar/panels/logging.html:7 +#: templates/debug_toolbar/panels/sql_explain.html:11 +#: templates/debug_toolbar/panels/sql_profile.html:12 +#: templates/debug_toolbar/panels/sql_select.html:11 +msgid "Time" +msgstr "时间" + +#: panels/timer.py:42 +msgid "User CPU time" +msgstr "用户 CPU 时间" + +#: panels/timer.py:42 +#, python-format +msgid "%(utime)0.3f msec" +msgstr "%(utime)0.3f 毫秒" + +#: panels/timer.py:43 +msgid "System CPU time" +msgstr "系统 CPU 时间" + +#: panels/timer.py:43 +#, python-format +msgid "%(stime)0.3f msec" +msgstr "%(stime)0.3f 毫秒" + +#: panels/timer.py:44 +msgid "Total CPU time" +msgstr "总的 CPU 时间" + +#: panels/timer.py:44 +#, python-format +msgid "%(total)0.3f msec" +msgstr "%(total)0.3f 毫秒" + +#: panels/timer.py:45 +msgid "Elapsed time" +msgstr "耗时" + +#: panels/timer.py:45 +#, python-format +msgid "%(total_time)0.3f msec" +msgstr "%(total_time)0.3f 毫秒" + +#: panels/timer.py:46 +msgid "Context switches" +msgstr "上下文切换" + +#: panels/timer.py:46 +#, python-format +msgid "%(vcsw)d voluntary, %(ivcsw)d involuntary" +msgstr "%(vcsw)d 主动, %(ivcsw)d 被动" + +#: panels/versions.py:25 +msgid "Versions" +msgstr "版本" + +#: panels/sql/panel.py:22 +msgid "Autocommit" +msgstr "自动提交" + +#: panels/sql/panel.py:23 +msgid "Read uncommitted" +msgstr "读取未提交的" + +#: panels/sql/panel.py:24 +msgid "Read committed" +msgstr "读取已提交的" + +#: panels/sql/panel.py:25 +msgid "Repeatable read" +msgstr "可重复读取" + +#: panels/sql/panel.py:26 +msgid "Serializable" +msgstr "可序列化" + +#: panels/sql/panel.py:37 +msgid "Idle" +msgstr "空闲" + +#: panels/sql/panel.py:38 +msgid "Active" +msgstr "活跃" + +#: panels/sql/panel.py:39 +msgid "In transaction" +msgstr "事务" + +#: panels/sql/panel.py:40 +msgid "In error" +msgstr "错误" + +#: panels/sql/panel.py:41 +msgid "Unknown" +msgstr "未知" + +#: panels/sql/panel.py:105 +msgid "SQL" +msgstr "SQL" + +#: panels/templates/panel.py:141 +msgid "Templates" +msgstr "模板" + +#: panels/templates/panel.py:146 +#, python-format +msgid "Templates (%(num_templates)s rendered)" +msgstr "模板 (%(num_templates)s 个被渲染)" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide toolbar" +msgstr "隐藏工具栏" + +#: templates/debug_toolbar/base.html:19 +msgid "Hide" +msgstr "隐藏" + +#: templates/debug_toolbar/base.html:25 +msgid "Disable for next and successive requests" +msgstr "针对下一个连续的请求禁用该功能" + +#: templates/debug_toolbar/base.html:25 +msgid "Enable for next and successive requests" +msgstr "针对下一个连续的请求启用该功能" + +#: templates/debug_toolbar/base.html:47 +msgid "Show toolbar" +msgstr "显示工具栏" + +#: templates/debug_toolbar/base.html:53 +msgid "Close" +msgstr "关闭" + +#: templates/debug_toolbar/redirect.html:8 +msgid "Location:" +msgstr "位置:" + +#: templates/debug_toolbar/redirect.html:10 +msgid "" +"The Django Debug Toolbar has intercepted a redirect to the above URL for " +"debug viewing purposes. You can click the above link to continue with the " +"redirect as normal." +msgstr "Django Debug Toolbar 为了调试目的拦截了一个重定向到上面 URL 的请求。 您可以点击上面的链接继续执行重定向操作。" + +#: templates/debug_toolbar/panels/cache.html:2 +msgid "Summary" +msgstr "摘要" + +#: templates/debug_toolbar/panels/cache.html:6 +msgid "Total calls" +msgstr "总调用次数" + +#: templates/debug_toolbar/panels/cache.html:7 +msgid "Total time" +msgstr "总耗时" + +#: templates/debug_toolbar/panels/cache.html:8 +msgid "Cache hits" +msgstr "缓存命中" + +#: templates/debug_toolbar/panels/cache.html:9 +msgid "Cache misses" +msgstr "缓存未命中" + +#: templates/debug_toolbar/panels/cache.html:21 +msgid "Commands" +msgstr "命令" + +#: templates/debug_toolbar/panels/cache.html:39 +msgid "Calls" +msgstr "调用" + +#: templates/debug_toolbar/panels/cache.html:43 +#: templates/debug_toolbar/panels/sql.html:20 +msgid "Time (ms)" +msgstr "时间(毫秒)" + +#: templates/debug_toolbar/panels/cache.html:44 +msgid "Type" +msgstr "类型" + +#: templates/debug_toolbar/panels/cache.html:45 +#: templates/debug_toolbar/panels/request.html:8 +msgid "Arguments" +msgstr "参数" + +#: templates/debug_toolbar/panels/cache.html:46 +#: templates/debug_toolbar/panels/request.html:9 +msgid "Keyword arguments" +msgstr "关键字参数" + +#: templates/debug_toolbar/panels/cache.html:47 +msgid "Backend" +msgstr "后端" + +#: templates/debug_toolbar/panels/headers.html:3 +msgid "Request headers" +msgstr "请求头" + +#: templates/debug_toolbar/panels/headers.html:8 +#: templates/debug_toolbar/panels/headers.html:27 +#: templates/debug_toolbar/panels/headers.html:48 +msgid "Key" +msgstr "键" + +#: templates/debug_toolbar/panels/headers.html:9 +#: templates/debug_toolbar/panels/headers.html:28 +#: templates/debug_toolbar/panels/headers.html:49 +#: templates/debug_toolbar/panels/request.html:33 +#: templates/debug_toolbar/panels/request.html:59 +#: templates/debug_toolbar/panels/request.html:85 +#: templates/debug_toolbar/panels/request.html:110 +#: templates/debug_toolbar/panels/settings.html:6 +#: templates/debug_toolbar/panels/timer.html:11 +msgid "Value" +msgstr "值" + +#: templates/debug_toolbar/panels/headers.html:22 +msgid "Response headers" +msgstr "响应头" + +#: templates/debug_toolbar/panels/headers.html:41 +msgid "WSGI environ" +msgstr "WSGI 环境变量" + +#: templates/debug_toolbar/panels/headers.html:43 +msgid "" +"Since the WSGI environ inherits the environment of the server, only a " +"significant subset is shown below." +msgstr "由于 WSGI 的环境变量继承自 server,所以下面只显示了一些重要的子集。" + +#: templates/debug_toolbar/panels/logging.html:6 +msgid "Level" +msgstr "级别" + +#: templates/debug_toolbar/panels/logging.html:8 +msgid "Channel" +msgstr "频道" + +#: templates/debug_toolbar/panels/logging.html:9 +msgid "Message" +msgstr "消息" + +#: templates/debug_toolbar/panels/logging.html:10 +#: templates/debug_toolbar/panels/staticfiles.html:45 +msgid "Location" +msgstr "位置" + +#: templates/debug_toolbar/panels/logging.html:26 +msgid "No messages logged" +msgstr "没有消息被记录" + +#: templates/debug_toolbar/panels/profiling.html:5 +msgid "Call" +msgstr "调用" + +#: templates/debug_toolbar/panels/profiling.html:6 +msgid "CumTime" +msgstr "调用该函数及其内部调用其他函数花费的总时间" + +#: templates/debug_toolbar/panels/profiling.html:7 +#: templates/debug_toolbar/panels/profiling.html:9 +msgid "Per" +msgstr "平均每次调用花费的时间" + +#: templates/debug_toolbar/panels/profiling.html:8 +msgid "TotTime" +msgstr "调用该函数花费的总时间" + +#: templates/debug_toolbar/panels/profiling.html:10 +msgid "Count" +msgstr "总的调用次数" + +#: templates/debug_toolbar/panels/request.html:3 +msgid "View information" +msgstr "View 信息" + +#: templates/debug_toolbar/panels/request.html:7 +msgid "View function" +msgstr "View 函数" + +#: templates/debug_toolbar/panels/request.html:10 +msgid "URL name" +msgstr "URL 名称" + +#: templates/debug_toolbar/panels/request.html:24 +msgid "Cookies" +msgstr "Cookies" + +#: templates/debug_toolbar/panels/request.html:32 +#: templates/debug_toolbar/panels/request.html:58 +#: templates/debug_toolbar/panels/request.html:84 +#: templates/debug_toolbar/panels/request.html:109 +msgid "Variable" +msgstr "变量" + +#: templates/debug_toolbar/panels/request.html:46 +msgid "No cookies" +msgstr "没有 cookies" + +#: templates/debug_toolbar/panels/request.html:50 +msgid "Session data" +msgstr "Session 数据" + +#: templates/debug_toolbar/panels/request.html:72 +msgid "No session data" +msgstr "没有 session 数据" + +#: templates/debug_toolbar/panels/request.html:76 +msgid "GET data" +msgstr "GET 请求数据" + +#: templates/debug_toolbar/panels/request.html:98 +msgid "No GET data" +msgstr "没有 GET 请求数据" + +#: templates/debug_toolbar/panels/request.html:102 +msgid "POST data" +msgstr "POST 请求数据" + +#: templates/debug_toolbar/panels/request.html:123 +msgid "No POST data" +msgstr "没有 POST 请求数据" + +#: templates/debug_toolbar/panels/settings.html:5 +msgid "Setting" +msgstr "设置项" + +#: templates/debug_toolbar/panels/signals.html:5 +msgid "Signal" +msgstr "信号" + +#: templates/debug_toolbar/panels/signals.html:6 +msgid "Providing" +msgstr "提供" + +#: templates/debug_toolbar/panels/signals.html:7 +msgid "Receivers" +msgstr "接收者" + +#: templates/debug_toolbar/panels/sql.html:7 +#, python-format +msgid "%(num)s query" +msgid_plural "%(num)s queries" +msgstr[0] "%(num)s 个查询" + +#: templates/debug_toolbar/panels/sql.html:18 +msgid "Query" +msgstr "查询" + +#: templates/debug_toolbar/panels/sql.html:19 +#: templates/debug_toolbar/panels/timer.html:36 +msgid "Timeline" +msgstr "时间线" + +#: templates/debug_toolbar/panels/sql.html:21 +msgid "Action" +msgstr "功能" + +#: templates/debug_toolbar/panels/sql.html:64 +msgid "Connection:" +msgstr "连接:" + +#: templates/debug_toolbar/panels/sql.html:66 +msgid "Isolation level:" +msgstr "隔离级别" + +#: templates/debug_toolbar/panels/sql.html:69 +msgid "Transaction status:" +msgstr "事务状态:" + +#: templates/debug_toolbar/panels/sql.html:83 +msgid "(unknown)" +msgstr "(未知)" + +#: templates/debug_toolbar/panels/sql.html:92 +msgid "No SQL queries were recorded during this request." +msgstr "在处理这个请求期间没有记录到 SQL 查询。" + +#: templates/debug_toolbar/panels/sql_explain.html:3 +#: templates/debug_toolbar/panels/sql_profile.html:3 +#: templates/debug_toolbar/panels/sql_select.html:3 +#: templates/debug_toolbar/panels/template_source.html:3 +msgid "Back" +msgstr "返回" + +#: templates/debug_toolbar/panels/sql_explain.html:4 +msgid "SQL explained" +msgstr "SQL explain 分析" + +#: templates/debug_toolbar/panels/sql_explain.html:9 +#: templates/debug_toolbar/panels/sql_profile.html:10 +#: templates/debug_toolbar/panels/sql_select.html:9 +msgid "Executed SQL" +msgstr "执行的 SQL 语句" + +#: templates/debug_toolbar/panels/sql_explain.html:13 +#: templates/debug_toolbar/panels/sql_profile.html:14 +#: templates/debug_toolbar/panels/sql_select.html:13 +msgid "Database" +msgstr "数据库" + +#: templates/debug_toolbar/panels/sql_profile.html:4 +msgid "SQL profiled" +msgstr "SQL 性能分析" + +#: templates/debug_toolbar/panels/sql_profile.html:37 +msgid "Error" +msgstr "错误" + +#: templates/debug_toolbar/panels/sql_select.html:4 +msgid "SQL selected" +msgstr "选中的 SQL 语句" + +#: templates/debug_toolbar/panels/sql_select.html:36 +msgid "Empty set" +msgstr "空集合" + +#: templates/debug_toolbar/panels/staticfiles.html:4 +msgid "Static file path" +msgid_plural "Static file paths" +msgstr[0] "静态文件路径" + +#: templates/debug_toolbar/panels/staticfiles.html:8 +#, python-format +msgid "(prefix %(prefix)s)" +msgstr "(前缀 %(prefix)s)" + +#: templates/debug_toolbar/panels/staticfiles.html:12 +#: templates/debug_toolbar/panels/staticfiles.html:23 +#: templates/debug_toolbar/panels/staticfiles.html:35 +#: templates/debug_toolbar/panels/templates.html:10 +#: templates/debug_toolbar/panels/templates.html:28 +#: templates/debug_toolbar/panels/templates.html:43 +msgid "None" +msgstr "空" + +#: templates/debug_toolbar/panels/staticfiles.html:15 +msgid "Static file app" +msgid_plural "Static file apps" +msgstr[0] "包含静态文件的应用" + +#: templates/debug_toolbar/panels/staticfiles.html:26 +msgid "Static file" +msgid_plural "Static files" +msgstr[0] "静态文件" + +#: templates/debug_toolbar/panels/staticfiles.html:40 +#, python-format +msgid "%(payload_count)s file" +msgid_plural "%(payload_count)s files" +msgstr[0] "%(payload_count)s 个文件" + +#: templates/debug_toolbar/panels/staticfiles.html:44 +msgid "Path" +msgstr "路径" + +#: templates/debug_toolbar/panels/template_source.html:4 +msgid "Template source:" +msgstr "模板源:" + +#: templates/debug_toolbar/panels/templates.html:2 +msgid "Template path" +msgid_plural "Template paths" +msgstr[0] "模板路径" + +#: templates/debug_toolbar/panels/templates.html:13 +msgid "Template" +msgid_plural "Templates" +msgstr[0] "模板" + +#: templates/debug_toolbar/panels/templates.html:21 +#: templates/debug_toolbar/panels/templates.html:37 +msgid "Toggle context" +msgstr "切换上下文" + +#: templates/debug_toolbar/panels/templates.html:31 +msgid "Context processor" +msgid_plural "Context processors" +msgstr[0] "Context processors" + +#: templates/debug_toolbar/panels/timer.html:2 +msgid "Resource usage" +msgstr "资源使用" + +#: templates/debug_toolbar/panels/timer.html:10 +msgid "Resource" +msgstr "资源" + +#: templates/debug_toolbar/panels/timer.html:26 +msgid "Browser timing" +msgstr "浏览器计时" + +#: templates/debug_toolbar/panels/timer.html:35 +msgid "Timing attribute" +msgstr "计时属性" + +#: templates/debug_toolbar/panels/timer.html:37 +msgid "Milliseconds since navigation start (+length)" +msgstr "导航开始后的毫秒 (+长度)" + +#: templates/debug_toolbar/panels/versions.html:5 +msgid "Name" +msgstr "名称" + +#: templates/debug_toolbar/panels/versions.html:6 +msgid "Version" +msgstr "版本" diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/management/__init__.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/management/commands/__init__.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/management/commands/debugsqlshell.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/management/commands/debugsqlshell.py new file mode 100644 index 0000000..2bb2b8d --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/management/commands/debugsqlshell.py @@ -0,0 +1,24 @@ +from __future__ import absolute_import, print_function, unicode_literals + +from time import time + +import sqlparse +# 'debugsqlshell' is the same as the 'shell'. +from django.core.management.commands.shell import Command # noqa +from django.db.backends import utils as db_backends_utils + + +class PrintQueryWrapper(db_backends_utils.CursorDebugWrapper): + def execute(self, sql, params=()): + start_time = time() + try: + return self.cursor.execute(sql, params) + finally: + raw_sql = self.db.ops.last_executed_query(self.cursor, sql, params) + end_time = time() + duration = (end_time - start_time) * 1000 + formatted_sql = sqlparse.format(raw_sql, reindent=True) + print('%s [%.2fms]' % (formatted_sql, duration)) + + +db_backends_utils.CursorDebugWrapper = PrintQueryWrapper diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/middleware.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/middleware.py new file mode 100644 index 0000000..3dbcd14 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/middleware.py @@ -0,0 +1,155 @@ +""" +Debug Toolbar middleware +""" + +from __future__ import absolute_import, unicode_literals + +import re +import threading + +from django.conf import settings +from django.utils import six +from django.utils.deprecation import MiddlewareMixin +from django.utils.encoding import force_text +from django.utils.lru_cache import lru_cache +from django.utils.module_loading import import_string + +from debug_toolbar import settings as dt_settings +from debug_toolbar.toolbar import DebugToolbar + +_HTML_TYPES = ('text/html', 'application/xhtml+xml') + + +def show_toolbar(request): + """ + Default function to determine whether to show the toolbar on a given page. + """ + if request.META.get('REMOTE_ADDR', None) not in settings.INTERNAL_IPS: + return False + + return bool(settings.DEBUG) + + +@lru_cache() +def get_show_toolbar(): + # If SHOW_TOOLBAR_CALLBACK is a string, which is the recommended + # setup, resolve it to the corresponding callable. + func_or_path = dt_settings.get_config()['SHOW_TOOLBAR_CALLBACK'] + if isinstance(func_or_path, six.string_types): + return import_string(func_or_path) + else: + return func_or_path + + +class DebugToolbarMiddleware(MiddlewareMixin): + """ + Middleware to set up Debug Toolbar on incoming request and render toolbar + on outgoing response. + """ + debug_toolbars = {} + + def process_request(self, request): + # Decide whether the toolbar is active for this request. + show_toolbar = get_show_toolbar() + if not show_toolbar(request): + return + + # Don't render the toolbar during AJAX requests. + if request.is_ajax(): + return + + toolbar = DebugToolbar(request) + self.__class__.debug_toolbars[threading.current_thread().ident] = toolbar + + # Activate instrumentation ie. monkey-patch. + for panel in toolbar.enabled_panels: + panel.enable_instrumentation() + + # Run process_request methods of panels like Django middleware. + response = None + for panel in toolbar.enabled_panels: + response = panel.process_request(request) + if response: + break + return response + + def process_view(self, request, view_func, view_args, view_kwargs): + toolbar = self.__class__.debug_toolbars.get(threading.current_thread().ident) + if not toolbar: + return + + # Run process_view methods of panels like Django middleware. + response = None + for panel in toolbar.enabled_panels: + response = panel.process_view(request, view_func, view_args, view_kwargs) + if response: + break + return response + + def process_response(self, request, response): + toolbar = self.__class__.debug_toolbars.pop(threading.current_thread().ident, None) + if not toolbar: + return response + + # Run process_response methods of panels like Django middleware. + for panel in reversed(toolbar.enabled_panels): + new_response = panel.process_response(request, response) + if new_response: + response = new_response + + # Deactivate instrumentation ie. monkey-unpatch. This must run + # regardless of the response. Keep 'return' clauses below. + # (NB: Django's model for middleware doesn't guarantee anything.) + for panel in reversed(toolbar.enabled_panels): + panel.disable_instrumentation() + + # Check for responses where the toolbar can't be inserted. + content_encoding = response.get('Content-Encoding', '') + content_type = response.get('Content-Type', '').split(';')[0] + if any((getattr(response, 'streaming', False), + 'gzip' in content_encoding, + content_type not in _HTML_TYPES)): + return response + + # Collapse the toolbar by default if SHOW_COLLAPSED is set. + if toolbar.config['SHOW_COLLAPSED'] and 'djdt' not in request.COOKIES: + response.set_cookie('djdt', 'hide', 864000) + + # Insert the toolbar in the response. + content = force_text(response.content, encoding=response.charset) + insert_before = dt_settings.get_config()['INSERT_BEFORE'] + pattern = re.escape(insert_before) + bits = re.split(pattern, content, flags=re.IGNORECASE) + if len(bits) > 1: + # When the toolbar will be inserted for sure, generate the stats. + for panel in reversed(toolbar.enabled_panels): + panel.generate_stats(request, response) + panel.generate_server_timing(request, response) + + response = self.generate_server_timing_header(response, toolbar.enabled_panels) + + bits[-2] += toolbar.render_toolbar() + response.content = insert_before.join(bits) + if response.get('Content-Length', None): + response['Content-Length'] = len(response.content) + return response + + @staticmethod + def generate_server_timing_header(response, panels): + data = [] + + for panel in panels: + stats = panel.get_server_timing_stats() + if not stats: + continue + + for key, record in stats.items(): + # example: `SQLPanel_sql_time=0; "SQL 0 queries"` + data.append('{}_{}={}; "{}"'.format(panel.panel_id, + key, + record.get('value'), + record.get('title'))) + + if data: + response['Server-Timing'] = ', '.join(data) + return response diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/__init__.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/__init__.py new file mode 100644 index 0000000..7a074b5 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/__init__.py @@ -0,0 +1,226 @@ +from __future__ import absolute_import, unicode_literals + +import warnings + +from django.template.loader import render_to_string + +from debug_toolbar import settings as dt_settings +from debug_toolbar.utils import get_name_from_obj + + +class Panel(object): + """ + Base class for panels. + """ + def __init__(self, toolbar): + self.toolbar = toolbar + + # Private panel properties + + @property + def panel_id(self): + return self.__class__.__name__ + + @property + def enabled(self): + # Check to see if settings has a default value for it + disabled_panels = dt_settings.get_config()['DISABLE_PANELS'] + panel_path = get_name_from_obj(self) + # Some panels such as the SQLPanel and TemplatesPanel exist in a + # panel module, but can be disabled without panel in the path. + # For that reason, replace .panel. in the path and check for that + # value in the disabled panels as well. + disable_panel = ( + panel_path in disabled_panels or + panel_path.replace('.panel.', '.') in disabled_panels) + if disable_panel: + default = 'off' + else: + default = 'on' + # The user's cookies should override the default value + return self.toolbar.request.COOKIES.get('djdt' + self.panel_id, default) == 'on' + + # Titles and content + + @property + def nav_title(self): + """ + Title shown in the side bar. Defaults to :attr:`title`. + """ + return self.title + + @property + def nav_subtitle(self): + """ + Subtitle shown in the side bar. Defaults to the empty string. + """ + return '' + + @property + def has_content(self): + """ + ``True`` if the panel can be displayed in full screen, ``False`` if + it's only shown in the side bar. Defaults to ``True``. + """ + return True + + @property + def title(self): + """ + Title shown in the panel when it's displayed in full screen. + + Mandatory, unless the panel sets :attr:`has_content` to ``False``. + """ + raise NotImplementedError + + @property + def template(self): + """ + Template used to render :attr:`content`. + + Mandatory, unless the panel sets :attr:`has_content` to ``False`` or + overrides `attr`:content`. + """ + raise NotImplementedError + + @property + def content(self): + """ + Content of the panel when it's displayed in full screen. + + By default this renders the template defined by :attr:`template`. + Statistics stored with :meth:`record_stats` are available in the + template's context. + """ + if self.has_content: + return render_to_string(self.template, self.get_stats()) + + # URLs for panel-specific views + + @classmethod + def get_urls(cls): + """ + Return URLpatterns, if the panel has its own views. + """ + return [] + + # Enable and disable (expensive) instrumentation, must be idempotent + + def enable_instrumentation(self): + """ + Enable instrumentation to gather data for this panel. + + This usually means monkey-patching (!) or registering signal + receivers. Any instrumentation with a non-negligible effect on + performance should be installed by this method rather than at import + time. + + Unless the toolbar or this panel is disabled, this method will be + called early in :class:`DebugToolbarMiddleware.process_request`. It + should be idempotent. + """ + + def disable_instrumentation(self): + """ + Disable instrumentation to gather data for this panel. + + This is the opposite of :meth:`enable_instrumentation`. + + Unless the toolbar or this panel is disabled, this method will be + called late in :class:`DebugToolbarMiddleware.process_response`. It + should be idempotent. + """ + + # Store and retrieve stats (shared between panels for no good reason) + + def record_stats(self, stats): + """ + Store data gathered by the panel. ``stats`` is a :class:`dict`. + + Each call to ``record_stats`` updates the statistics dictionary. + """ + self.toolbar.stats.setdefault(self.panel_id, {}).update(stats) + + def get_stats(self): + """ + Access data stored by the panel. Returns a :class:`dict`. + """ + return self.toolbar.stats.get(self.panel_id, {}) + + def record_server_timing(self, key, title, value): + """ + Store data gathered by the panel. ``stats`` is a :class:`dict`. + + Each call to ``record_stats`` updates the statistics dictionary. + """ + data = {key: dict(title=title, value=value)} + self.toolbar.server_timing_stats.setdefault(self.panel_id, {}).update(data) + + def get_server_timing_stats(self): + """ + Access data stored by the panel. Returns a :class:`dict`. + """ + return self.toolbar.server_timing_stats.get(self.panel_id, {}) + + # Standard middleware methods + + def process_request(self, request): + """ + Like process_request in Django's middleware. + + Write panel logic related to the request there. Save data with + :meth:`record_stats`. + """ + + def process_view(self, request, view_func, view_args, view_kwargs): + """ + Like process_view in Django's middleware. + + Write panel logic related to the view there. Save data with + :meth:`record_stats`. + """ + + def process_response(self, request, response): + """ + Like process_response in Django's middleware. This is similar to + :meth:`generate_stats `, + but will be executed on every request. It should be used when either + the logic needs to be executed on every request or it needs to change + the response entirely, such as :class:`RedirectsPanel`. + + Write panel logic related to the response there. Post-process data + gathered while the view executed. Save data with :meth:`record_stats`. + + Return a response to overwrite the existing response. + """ + + def generate_stats(self, request, response): + """ + Similar to :meth:`process_response + `, + but may not be executed on every request. This will only be called if + the toolbar will be inserted into the request. + + Write panel logic related to the response there. Post-process data + gathered while the view executed. Save data with :meth:`record_stats`. + + Does not return a value. + """ + + def generate_server_timing(self, request, response): + """ + Similar to :meth:`generate_stats + `, + + Generate stats for Server Timing https://w3c.github.io/server-timing/ + + Does not return a value. + """ + + +# Backward-compatibility for 1.0, remove in 2.0. +class DebugPanel(Panel): + + def __init__(self, *args, **kwargs): + warnings.warn("DebugPanel was renamed to Panel.", DeprecationWarning) + super(DebugPanel, self).__init__(*args, **kwargs) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/cache.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/cache.py new file mode 100644 index 0000000..366af3f --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/cache.py @@ -0,0 +1,232 @@ +from __future__ import absolute_import, unicode_literals + +import inspect +import sys +import time +from collections import OrderedDict + +from django.conf import settings +from django.core import cache +from django.core.cache import CacheHandler, caches as original_caches +from django.core.cache.backends.base import BaseCache +from django.dispatch import Signal +from django.middleware import cache as middleware_cache +from django.utils.translation import ugettext_lazy as _, ungettext + +from debug_toolbar import settings as dt_settings +from debug_toolbar.panels import Panel +from debug_toolbar.utils import ( + get_stack, get_template_info, render_stacktrace, tidy_stacktrace, +) + +cache_called = Signal(providing_args=[ + "time_taken", "name", "return_value", "args", "kwargs", "trace"]) + + +def send_signal(method): + def wrapped(self, *args, **kwargs): + t = time.time() + value = method(self, *args, **kwargs) + t = time.time() - t + + if dt_settings.get_config()['ENABLE_STACKTRACES']: + stacktrace = tidy_stacktrace(reversed(get_stack())) + else: + stacktrace = [] + + template_info = get_template_info() + cache_called.send(sender=self.__class__, time_taken=t, + name=method.__name__, return_value=value, + args=args, kwargs=kwargs, trace=stacktrace, + template_info=template_info, backend=self.cache) + return value + return wrapped + + +class CacheStatTracker(BaseCache): + """A small class used to track cache calls.""" + def __init__(self, cache): + self.cache = cache + + def __repr__(self): + return str("") % repr(self.cache) + + def _get_func_info(self): + frame = sys._getframe(3) + info = inspect.getframeinfo(frame) + return (info[0], info[1], info[2], info[3]) + + def __contains__(self, key): + return self.cache.__contains__(key) + + def __getattr__(self, name): + return getattr(self.cache, name) + + @send_signal + def add(self, *args, **kwargs): + return self.cache.add(*args, **kwargs) + + @send_signal + def get(self, *args, **kwargs): + return self.cache.get(*args, **kwargs) + + @send_signal + def set(self, *args, **kwargs): + return self.cache.set(*args, **kwargs) + + @send_signal + def delete(self, *args, **kwargs): + return self.cache.delete(*args, **kwargs) + + @send_signal + def clear(self, *args, **kwargs): + return self.cache.clear(*args, **kwargs) + + @send_signal + def has_key(self, *args, **kwargs): + # Ignore flake8 rules for has_key since we need to support caches + # that may be using has_key. + return self.cache.has_key(*args, **kwargs) # noqa + + @send_signal + def incr(self, *args, **kwargs): + return self.cache.incr(*args, **kwargs) + + @send_signal + def decr(self, *args, **kwargs): + return self.cache.decr(*args, **kwargs) + + @send_signal + def get_many(self, *args, **kwargs): + return self.cache.get_many(*args, **kwargs) + + @send_signal + def set_many(self, *args, **kwargs): + self.cache.set_many(*args, **kwargs) + + @send_signal + def delete_many(self, *args, **kwargs): + self.cache.delete_many(*args, **kwargs) + + @send_signal + def incr_version(self, *args, **kwargs): + return self.cache.incr_version(*args, **kwargs) + + @send_signal + def decr_version(self, *args, **kwargs): + return self.cache.decr_version(*args, **kwargs) + + +class CacheHandlerPatch(CacheHandler): + def __getitem__(self, alias): + actual_cache = super(CacheHandlerPatch, self).__getitem__(alias) + return CacheStatTracker(actual_cache) + + +middleware_cache.caches = CacheHandlerPatch() + + +class CachePanel(Panel): + """ + Panel that displays the cache statistics. + """ + template = 'debug_toolbar/panels/cache.html' + + def __init__(self, *args, **kwargs): + super(CachePanel, self).__init__(*args, **kwargs) + self.total_time = 0 + self.hits = 0 + self.misses = 0 + self.calls = [] + self.counts = OrderedDict(( + ('add', 0), + ('get', 0), + ('set', 0), + ('delete', 0), + ('clear', 0), + ('get_many', 0), + ('set_many', 0), + ('delete_many', 0), + ('has_key', 0), + ('incr', 0), + ('decr', 0), + ('incr_version', 0), + ('decr_version', 0), + )) + cache_called.connect(self._store_call_info) + + def _store_call_info(self, sender, name=None, time_taken=0, + return_value=None, args=None, kwargs=None, + trace=None, template_info=None, backend=None, **kw): + if name == 'get': + if return_value is None: + self.misses += 1 + else: + self.hits += 1 + elif name == 'get_many': + for key, value in return_value.items(): + if value is None: + self.misses += 1 + else: + self.hits += 1 + time_taken *= 1000 + + self.total_time += time_taken + self.counts[name] += 1 + self.calls.append({ + 'time': time_taken, + 'name': name, + 'args': args, + 'kwargs': kwargs, + 'trace': render_stacktrace(trace), + 'template_info': template_info, + 'backend': backend + }) + + # Implement the Panel API + + nav_title = _("Cache") + + @property + def nav_subtitle(self): + cache_calls = len(self.calls) + return ungettext("%(cache_calls)d call in %(time).2fms", + "%(cache_calls)d calls in %(time).2fms", + cache_calls) % {'cache_calls': cache_calls, + 'time': self.total_time} + + @property + def title(self): + count = len(getattr(settings, 'CACHES', ['default'])) + return ungettext("Cache calls from %(count)d backend", + "Cache calls from %(count)d backends", + count) % dict(count=count) + + def enable_instrumentation(self): + if isinstance(middleware_cache.caches, CacheHandlerPatch): + cache.caches = middleware_cache.caches + else: + cache.caches = CacheHandlerPatch() + + def disable_instrumentation(self): + cache.caches = original_caches + # While it can be restored to the original, any views that were + # wrapped with the cache_page decorator will continue to use a + # monkey patched cache. + middleware_cache.caches = original_caches + + def generate_stats(self, request, response): + self.record_stats({ + 'total_calls': len(self.calls), + 'calls': self.calls, + 'total_time': self.total_time, + 'hits': self.hits, + 'misses': self.misses, + 'counts': self.counts, + }) + + def generate_server_timing(self, request, response): + stats = self.get_stats() + value = stats.get('total_time', 0) + title = 'Cache {} Calls'.format(stats.get('total_calls', 0)) + self.record_server_timing('total_time', title, value) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/headers.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/headers.py new file mode 100644 index 0000000..cec5b09 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/headers.py @@ -0,0 +1,65 @@ +from __future__ import absolute_import, unicode_literals + +from collections import OrderedDict + +from django.utils.translation import ugettext_lazy as _ + +from debug_toolbar.panels import Panel + + +class HeadersPanel(Panel): + """ + A panel to display HTTP headers. + """ + # List of environment variables we want to display + ENVIRON_FILTER = set(( + 'CONTENT_LENGTH', + 'CONTENT_TYPE', + 'DJANGO_SETTINGS_MODULE', + 'GATEWAY_INTERFACE', + 'QUERY_STRING', + 'PATH_INFO', + 'PYTHONPATH', + 'REMOTE_ADDR', + 'REMOTE_HOST', + 'REQUEST_METHOD', + 'SCRIPT_NAME', + 'SERVER_NAME', + 'SERVER_PORT', + 'SERVER_PROTOCOL', + 'SERVER_SOFTWARE', + 'TZ', + )) + + title = _("Headers") + + template = 'debug_toolbar/panels/headers.html' + + def process_request(self, request): + wsgi_env = list(sorted(request.META.items())) + self.request_headers = OrderedDict( + (unmangle(k), v) for (k, v) in wsgi_env if is_http_header(k)) + if 'Cookie' in self.request_headers: + self.request_headers['Cookie'] = '=> see Request panel' + self.environ = OrderedDict( + (k, v) for (k, v) in wsgi_env if k in self.ENVIRON_FILTER) + self.record_stats({ + 'request_headers': self.request_headers, + 'environ': self.environ, + }) + + def generate_stats(self, request, response): + self.response_headers = OrderedDict(sorted(response.items())) + self.record_stats({ + 'response_headers': self.response_headers, + }) + + +def is_http_header(wsgi_key): + # The WSGI spec says that keys should be str objects in the environ dict, + # but this isn't true in practice. See issues #449 and #482. + return isinstance(wsgi_key, str) and wsgi_key.startswith('HTTP_') + + +def unmangle(wsgi_key): + return wsgi_key[5:].replace('_', '-').title() diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/logging.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/logging.py new file mode 100644 index 0000000..db01179 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/logging.py @@ -0,0 +1,84 @@ +from __future__ import absolute_import, unicode_literals + +import datetime +import logging + +from django.utils.translation import ugettext_lazy as _, ungettext + +from debug_toolbar.panels import Panel +from debug_toolbar.utils import ThreadCollector + +try: + import threading +except ImportError: + threading = None + +MESSAGE_IF_STRING_REPRESENTATION_INVALID = '[Could not get log message]' + + +class LogCollector(ThreadCollector): + + def collect(self, item, thread=None): + # Avoid logging SQL queries since they are already in the SQL panel + # TODO: Make this check whether SQL panel is enabled + if item.get('channel', '') == 'django.db.backends': + return + super(LogCollector, self).collect(item, thread) + + +class ThreadTrackingHandler(logging.Handler): + def __init__(self, collector): + logging.Handler.__init__(self) + self.collector = collector + + def emit(self, record): + try: + message = record.getMessage() + except Exception: + message = MESSAGE_IF_STRING_REPRESENTATION_INVALID + + record = { + 'message': message, + 'time': datetime.datetime.fromtimestamp(record.created), + 'level': record.levelname, + 'file': record.pathname, + 'line': record.lineno, + 'channel': record.name, + } + self.collector.collect(record) + + +# We don't use enable/disable_instrumentation because logging is global. +# We can't add thread-local logging handlers. Hopefully logging is cheap. + +collector = LogCollector() +logging_handler = ThreadTrackingHandler(collector) +logging.root.addHandler(logging_handler) + + +class LoggingPanel(Panel): + template = 'debug_toolbar/panels/logging.html' + + def __init__(self, *args, **kwargs): + super(LoggingPanel, self).__init__(*args, **kwargs) + self._records = {} + + nav_title = _("Logging") + + @property + def nav_subtitle(self): + records = self._records[threading.currentThread()] + record_count = len(records) + return ungettext("%(count)s message", "%(count)s messages", + record_count) % {'count': record_count} + + title = _("Log messages") + + def process_request(self, request): + collector.clear_collection() + + def generate_stats(self, request, response): + records = collector.get_collection() + self._records[threading.currentThread()] = records + collector.clear_collection() + self.record_stats({'records': records}) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/profiling.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/profiling.py new file mode 100644 index 0000000..4d36199 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/profiling.py @@ -0,0 +1,183 @@ +from __future__ import absolute_import, division, unicode_literals + +import cProfile +import os +from colorsys import hsv_to_rgb +from pstats import Stats + +from django.utils import six +from django.utils.html import format_html +from django.utils.translation import ugettext_lazy as _ + +from debug_toolbar import settings as dt_settings +from debug_toolbar.panels import Panel + +# Occasionally the disable method on the profiler is listed before +# the actual view functions. This function call should be ignored as +# it leads to an error within the tests. +INVALID_PROFILER_FUNC = '_lsprof.Profiler' + + +def contains_profiler(func_tuple): + """Helper function that checks to see if the tuple contains + the INVALID_PROFILE_FUNC in any string value of the tuple.""" + has_profiler = False + for value in func_tuple: + if isinstance(value, six.string_types): + has_profiler |= INVALID_PROFILER_FUNC in value + return has_profiler + + +class DjangoDebugToolbarStats(Stats): + __root = None + + def get_root_func(self): + if self.__root is None: + for func, (cc, nc, tt, ct, callers) in self.stats.items(): + if len(callers) == 0 and not contains_profiler(func): + self.__root = func + break + return self.__root + + +class FunctionCall(object): + def __init__(self, statobj, func, depth=0, stats=None, + id=0, parent_ids=[], hsv=(0, 0.5, 1)): + self.statobj = statobj + self.func = func + if stats: + self.stats = stats + else: + self.stats = statobj.stats[func][:4] + self.depth = depth + self.id = id + self.parent_ids = parent_ids + self.hsv = hsv + + def parent_classes(self): + return self.parent_classes + + def background(self): + r, g, b = hsv_to_rgb(*self.hsv) + return 'rgb(%f%%,%f%%,%f%%)' % (r * 100, g * 100, b * 100) + + def func_std_string(self): # match what old profile produced + func_name = self.func + if func_name[:2] == ('~', 0): + # special case for built-in functions + name = func_name[2] + if name.startswith('<') and name.endswith('>'): + return '{%s}' % name[1:-1] + else: + return name + else: + file_name, line_num, method = self.func + idx = file_name.find('/site-packages/') + if idx > -1: + file_name = file_name[(idx + 14):] + + split_path = file_name.rsplit(os.sep, 1) + if len(split_path) > 1: + file_path, file_name = file_name.rsplit(os.sep, 1) + else: + file_path = '' + + return format_html( + '{0}/' + '{1}' + ' in {3}' + '({2})', + file_path, + file_name, + line_num, + method) + + def subfuncs(self): + i = 0 + h, s, v = self.hsv + count = len(self.statobj.all_callees[self.func]) + for func, stats in self.statobj.all_callees[self.func].items(): + i += 1 + h1 = h + (i / count) / (self.depth + 1) + if stats[3] == 0: + s1 = 0 + else: + s1 = s * (stats[3] / self.stats[3]) + yield FunctionCall(self.statobj, + func, + self.depth + 1, + stats=stats, + id=str(self.id) + '_' + str(i), + parent_ids=self.parent_ids + [self.id], + hsv=(h1, s1, 1)) + + def count(self): + return self.stats[1] + + def tottime(self): + return self.stats[2] + + def cumtime(self): + cc, nc, tt, ct = self.stats + return self.stats[3] + + def tottime_per_call(self): + cc, nc, tt, ct = self.stats + + if nc == 0: + return 0 + + return tt / nc + + def cumtime_per_call(self): + cc, nc, tt, ct = self.stats + + if cc == 0: + return 0 + + return ct / cc + + def indent(self): + return 16 * self.depth + + +class ProfilingPanel(Panel): + """ + Panel that displays profiling information. + """ + title = _("Profiling") + + template = 'debug_toolbar/panels/profiling.html' + + def process_view(self, request, view_func, view_args, view_kwargs): + self.profiler = cProfile.Profile() + args = (request,) + view_args + return self.profiler.runcall(view_func, *args, **view_kwargs) + + def add_node(self, func_list, func, max_depth, cum_time=0.1): + func_list.append(func) + func.has_subfuncs = False + if func.depth < max_depth: + for subfunc in func.subfuncs(): + if subfunc.stats[3] >= cum_time: + func.has_subfuncs = True + self.add_node(func_list, subfunc, max_depth, cum_time=cum_time) + + def generate_stats(self, request, response): + if not hasattr(self, 'profiler'): + return None + # Could be delayed until the panel content is requested (perf. optim.) + self.profiler.create_stats() + self.stats = DjangoDebugToolbarStats(self.profiler) + self.stats.calc_callees() + + root_func = self.stats.get_root_func() + # Ensure root function exists before continuing with function call analysis + if root_func: + root = FunctionCall(self.stats, root_func, depth=0) + func_list = [] + self.add_node(func_list, + root, + dt_settings.get_config()['PROFILER_MAX_DEPTH'], + root.stats[3] / 8) + self.record_stats({'func_list': func_list}) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/redirects.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/redirects.py new file mode 100644 index 0000000..01a6016 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/redirects.py @@ -0,0 +1,29 @@ +from __future__ import absolute_import, unicode_literals + +from django.template.response import SimpleTemplateResponse +from django.utils.translation import ugettext_lazy as _ + +from debug_toolbar.panels import Panel + + +class RedirectsPanel(Panel): + """ + Panel that intercepts redirects and displays a page with debug info. + """ + + has_content = False + + nav_title = _("Intercept redirects") + + def process_response(self, request, response): + if 300 <= int(response.status_code) < 400: + redirect_to = response.get('Location', None) + if redirect_to: + status_line = '%s %s' % (response.status_code, response.reason_phrase) + cookies = response.cookies + context = {'redirect_to': redirect_to, 'status_line': status_line} + # Using SimpleTemplateResponse avoids running global context processors. + response = SimpleTemplateResponse('debug_toolbar/redirect.html', context) + response.cookies = cookies + response.render() + return response diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/request.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/request.py new file mode 100644 index 0000000..6420e3c --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/request.py @@ -0,0 +1,56 @@ +from __future__ import absolute_import, unicode_literals + +from django.http import Http404 +from django.urls import resolve +from django.utils.encoding import force_text +from django.utils.translation import ugettext_lazy as _ + +from debug_toolbar.panels import Panel +from debug_toolbar.utils import get_name_from_obj + + +class RequestPanel(Panel): + """ + A panel to display request variables (POST/GET, session, cookies). + """ + template = 'debug_toolbar/panels/request.html' + + title = _("Request") + + @property + def nav_subtitle(self): + """ + Show abbreviated name of view function as subtitle + """ + view_func = self.get_stats().get('view_func', '') + return view_func.rsplit('.', 1)[-1] + + def generate_stats(self, request, response): + self.record_stats({ + 'get': [(k, request.GET.getlist(k)) for k in sorted(request.GET)], + 'post': [(k, request.POST.getlist(k)) for k in sorted(request.POST)], + 'cookies': [(k, request.COOKIES.get(k)) for k in sorted(request.COOKIES)], + }) + view_info = { + 'view_func': _(""), + 'view_args': 'None', + 'view_kwargs': 'None', + 'view_urlname': 'None', + } + try: + match = resolve(request.path) + func, args, kwargs = match + view_info['view_func'] = get_name_from_obj(func) + view_info['view_args'] = args + view_info['view_kwargs'] = kwargs + view_info['view_urlname'] = getattr(match, 'url_name', + _("")) + except Http404: + pass + self.record_stats(view_info) + + if hasattr(request, 'session'): + self.record_stats({ + 'session': [(k, request.session.get(k)) + for k in sorted(request.session.keys(), key=force_text)] + }) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/settings.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/settings.py new file mode 100644 index 0000000..f930951 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/settings.py @@ -0,0 +1,27 @@ +from __future__ import absolute_import, unicode_literals + +from collections import OrderedDict + +from django.conf import settings +from django.utils.translation import ugettext_lazy as _ +from django.views.debug import get_safe_settings + +from debug_toolbar.panels import Panel + + +class SettingsPanel(Panel): + """ + A panel to display all variables in django.conf.settings + """ + template = 'debug_toolbar/panels/settings.html' + + nav_title = _("Settings") + + def title(self): + return _("Settings from %s") % settings.SETTINGS_MODULE + + def generate_stats(self, request, response): + self.record_stats({ + 'settings': OrderedDict(sorted(get_safe_settings().items(), + key=lambda s: s[0])), + }) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/signals.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/signals.py new file mode 100644 index 0000000..cd647db --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/signals.py @@ -0,0 +1,86 @@ +from __future__ import absolute_import, unicode_literals + +import weakref + +from django.core.signals import ( + got_request_exception, request_finished, request_started, +) +from django.db.backends.signals import connection_created +from django.db.models.signals import ( + class_prepared, post_delete, post_init, post_migrate, post_save, + pre_delete, pre_init, pre_save, +) +from django.utils.module_loading import import_string +from django.utils.translation import ugettext_lazy as _, ungettext + +from debug_toolbar.panels import Panel + + +class SignalsPanel(Panel): + template = 'debug_toolbar/panels/signals.html' + + SIGNALS = { + 'request_started': request_started, + 'request_finished': request_finished, + 'got_request_exception': got_request_exception, + 'connection_created': connection_created, + 'class_prepared': class_prepared, + 'pre_init': pre_init, + 'post_init': post_init, + 'pre_save': pre_save, + 'post_save': post_save, + 'pre_delete': pre_delete, + 'post_delete': post_delete, + 'post_migrate': post_migrate, + } + + def nav_subtitle(self): + signals = self.get_stats()['signals'] + num_receivers = sum(len(s[2]) for s in signals) + num_signals = len(signals) + # here we have to handle a double count translation, hence the + # hard coding of one signal + if num_signals == 1: + return ungettext("%(num_receivers)d receiver of 1 signal", + "%(num_receivers)d receivers of 1 signal", + num_receivers) % {'num_receivers': num_receivers} + return ungettext("%(num_receivers)d receiver of %(num_signals)d signals", + "%(num_receivers)d receivers of %(num_signals)d signals", + num_receivers) % {'num_receivers': num_receivers, + 'num_signals': num_signals} + + title = _("Signals") + + @property + def signals(self): + signals = self.SIGNALS.copy() + for signal in self.toolbar.config['EXTRA_SIGNALS']: + signal_name = signal.rsplit('.', 1)[-1] + signals[signal_name] = import_string(signal) + return signals + + def generate_stats(self, request, response): + signals = [] + for name, signal in sorted(self.signals.items(), key=lambda x: x[0]): + receivers = [] + for receiver in signal.receivers: + receiver = receiver[1] + if isinstance(receiver, weakref.ReferenceType): + receiver = receiver() + if receiver is None: + continue + + receiver = getattr(receiver, '__wraps__', receiver) + receiver_name = getattr(receiver, '__name__', str(receiver)) + if getattr(receiver, '__self__', None) is not None: + receiver_class_name = getattr(receiver.__self__, '__class__', type).__name__ + text = "%s.%s" % (receiver_class_name, receiver_name) + elif getattr(receiver, 'im_class', None) is not None: # Python 2 only + receiver_class_name = receiver.im_class.__name__ + text = "%s.%s" % (receiver_class_name, receiver_name) + else: + text = "%s" % receiver_name + receivers.append(text) + signals.append((name, signal, receivers)) + + self.record_stats({'signals': signals}) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/__init__.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/__init__.py new file mode 100644 index 0000000..a4f9cd4 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/__init__.py @@ -0,0 +1 @@ +from debug_toolbar.panels.sql.panel import SQLPanel # noqa diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/forms.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/forms.py new file mode 100644 index 0000000..a4e622f --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/forms.py @@ -0,0 +1,93 @@ +from __future__ import absolute_import, unicode_literals + +import hashlib +import hmac +import json + +from django import forms +from django.conf import settings +from django.core.exceptions import ValidationError +from django.db import connections +from django.utils.crypto import constant_time_compare +from django.utils.encoding import force_bytes +from django.utils.functional import cached_property + +from debug_toolbar.panels.sql.utils import reformat_sql + + +class SQLSelectForm(forms.Form): + """ + Validate params + + sql: The sql statement with interpolated params + raw_sql: The sql statement with placeholders + params: JSON encoded parameter values + duration: time for SQL to execute passed in from toolbar just for redisplay + hash: the hash of (secret + sql + params) for tamper checking + """ + sql = forms.CharField() + raw_sql = forms.CharField() + params = forms.CharField() + alias = forms.CharField(required=False, initial='default') + duration = forms.FloatField() + hash = forms.CharField() + + def __init__(self, *args, **kwargs): + initial = kwargs.get('initial', None) + + if initial is not None: + initial['hash'] = self.make_hash(initial) + + super(SQLSelectForm, self).__init__(*args, **kwargs) + + for name in self.fields: + self.fields[name].widget = forms.HiddenInput() + + def clean_raw_sql(self): + value = self.cleaned_data['raw_sql'] + + if not value.lower().strip().startswith('select'): + raise ValidationError("Only 'select' queries are allowed.") + + return value + + def clean_params(self): + value = self.cleaned_data['params'] + + try: + return json.loads(value) + except ValueError: + raise ValidationError('Is not valid JSON') + + def clean_alias(self): + value = self.cleaned_data['alias'] + + if value not in connections: + raise ValidationError("Database alias '%s' not found" % value) + + return value + + def clean_hash(self): + hash = self.cleaned_data['hash'] + + if not constant_time_compare(hash, self.make_hash(self.data)): + raise ValidationError('Tamper alert') + + return hash + + def reformat_sql(self): + return reformat_sql(self.cleaned_data['sql']) + + def make_hash(self, data): + m = hmac.new(key=force_bytes(settings.SECRET_KEY), digestmod=hashlib.sha1) + for item in [data['sql'], data['params']]: + m.update(force_bytes(item)) + return m.hexdigest() + + @property + def connection(self): + return connections[self.cleaned_data['alias']] + + @cached_property + def cursor(self): + return self.connection.cursor() diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/panel.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/panel.py new file mode 100644 index 0000000..89a93bb --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/panel.py @@ -0,0 +1,279 @@ +from __future__ import absolute_import, unicode_literals + +import uuid +from collections import defaultdict +from copy import copy +from pprint import saferepr + +from django.conf.urls import url +from django.db import connections +from django.utils.translation import ugettext_lazy as _, ungettext_lazy as __ + +from debug_toolbar.panels import Panel +from debug_toolbar.panels.sql import views +from debug_toolbar.panels.sql.forms import SQLSelectForm +from debug_toolbar.panels.sql.tracking import unwrap_cursor, wrap_cursor +from debug_toolbar.panels.sql.utils import ( + contrasting_color_generator, reformat_sql, +) +from debug_toolbar.utils import render_stacktrace + + +def get_isolation_level_display(vendor, level): + if vendor == 'postgresql': + import psycopg2.extensions + choices = { + psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT: _("Autocommit"), + psycopg2.extensions.ISOLATION_LEVEL_READ_UNCOMMITTED: _("Read uncommitted"), + psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED: _("Read committed"), + psycopg2.extensions.ISOLATION_LEVEL_REPEATABLE_READ: _("Repeatable read"), + psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE: _("Serializable"), + } + else: + raise ValueError(vendor) + return choices.get(level) + + +def get_transaction_status_display(vendor, level): + if vendor == 'postgresql': + import psycopg2.extensions + choices = { + psycopg2.extensions.TRANSACTION_STATUS_IDLE: _("Idle"), + psycopg2.extensions.TRANSACTION_STATUS_ACTIVE: _("Active"), + psycopg2.extensions.TRANSACTION_STATUS_INTRANS: _("In transaction"), + psycopg2.extensions.TRANSACTION_STATUS_INERROR: _("In error"), + psycopg2.extensions.TRANSACTION_STATUS_UNKNOWN: _("Unknown"), + } + else: + raise ValueError(vendor) + return choices.get(level) + + +class SQLPanel(Panel): + """ + Panel that displays information about the SQL queries run while processing + the request. + """ + def __init__(self, *args, **kwargs): + super(SQLPanel, self).__init__(*args, **kwargs) + self._offset = {k: len(connections[k].queries) for k in connections} + self._sql_time = 0 + self._num_queries = 0 + self._queries = [] + self._databases = {} + self._transaction_status = {} + self._transaction_ids = {} + + def get_transaction_id(self, alias): + if alias not in connections: + return + conn = connections[alias].connection + if not conn: + return + + if conn.vendor == 'postgresql': + cur_status = conn.get_transaction_status() + else: + raise ValueError(conn.vendor) + + last_status = self._transaction_status.get(alias) + self._transaction_status[alias] = cur_status + + if not cur_status: + # No available state + return None + + if cur_status != last_status: + if cur_status: + self._transaction_ids[alias] = uuid.uuid4().hex + else: + self._transaction_ids[alias] = None + + return self._transaction_ids[alias] + + def record(self, alias, **kwargs): + self._queries.append((alias, kwargs)) + if alias not in self._databases: + self._databases[alias] = { + 'time_spent': kwargs['duration'], + 'num_queries': 1, + } + else: + self._databases[alias]['time_spent'] += kwargs['duration'] + self._databases[alias]['num_queries'] += 1 + self._sql_time += kwargs['duration'] + self._num_queries += 1 + + # Implement the Panel API + + nav_title = _("SQL") + + @property + def nav_subtitle(self): + return __("%d query in %.2fms", "%d queries in %.2fms", + self._num_queries) % (self._num_queries, self._sql_time) + + @property + def title(self): + count = len(self._databases) + return __('SQL queries from %(count)d connection', + 'SQL queries from %(count)d connections', + count) % {'count': count} + + template = 'debug_toolbar/panels/sql.html' + + @classmethod + def get_urls(cls): + return [ + url(r'^sql_select/$', views.sql_select, name='sql_select'), + url(r'^sql_explain/$', views.sql_explain, name='sql_explain'), + url(r'^sql_profile/$', views.sql_profile, name='sql_profile'), + ] + + def enable_instrumentation(self): + # This is thread-safe because database connections are thread-local. + for connection in connections.all(): + wrap_cursor(connection, self) + + def disable_instrumentation(self): + for connection in connections.all(): + unwrap_cursor(connection) + + def generate_stats(self, request, response): + colors = contrasting_color_generator() + trace_colors = defaultdict(lambda: next(colors)) + query_similar = defaultdict(lambda: defaultdict(int)) + query_duplicates = defaultdict(lambda: defaultdict(int)) + + # The keys used to determine similar and duplicate queries. + def similar_key(query): + return query['raw_sql'] + + def duplicate_key(query): + raw_params = () if query['raw_params'] is None else tuple(query['raw_params']) + # saferepr() avoids problems because of unhashable types + # (e.g. lists) when used as dictionary keys. + # https://github.com/jazzband/django-debug-toolbar/issues/1091 + return (query['raw_sql'], saferepr(raw_params)) + + if self._queries: + width_ratio_tally = 0 + factor = int(256.0 / (len(self._databases) * 2.5)) + for n, db in enumerate(self._databases.values()): + rgb = [0, 0, 0] + color = n % 3 + rgb[color] = 256 - n // 3 * factor + nn = color + # XXX: pretty sure this is horrible after so many aliases + while rgb[color] < factor: + nc = min(256 - rgb[color], 256) + rgb[color] += nc + nn += 1 + if nn > 2: + nn = 0 + rgb[nn] = nc + db['rgb_color'] = rgb + + trans_ids = {} + trans_id = None + i = 0 + for alias, query in self._queries: + query_similar[alias][similar_key(query)] += 1 + query_duplicates[alias][duplicate_key(query)] += 1 + + trans_id = query.get('trans_id') + last_trans_id = trans_ids.get(alias) + + if trans_id != last_trans_id: + if last_trans_id: + self._queries[(i - 1)][1]['ends_trans'] = True + trans_ids[alias] = trans_id + if trans_id: + query['starts_trans'] = True + if trans_id: + query['in_trans'] = True + + query['alias'] = alias + if 'iso_level' in query: + query['iso_level'] = get_isolation_level_display(query['vendor'], + query['iso_level']) + if 'trans_status' in query: + query['trans_status'] = get_transaction_status_display(query['vendor'], + query['trans_status']) + + query['form'] = SQLSelectForm(auto_id=None, initial=copy(query)) + + if query['sql']: + query['sql'] = reformat_sql(query['sql']) + query['rgb_color'] = self._databases[alias]['rgb_color'] + try: + query['width_ratio'] = (query['duration'] / self._sql_time) * 100 + query['width_ratio_relative'] = ( + 100.0 * query['width_ratio'] / (100.0 - width_ratio_tally)) + except ZeroDivisionError: + query['width_ratio'] = 0 + query['width_ratio_relative'] = 0 + query['start_offset'] = width_ratio_tally + query['end_offset'] = query['width_ratio'] + query['start_offset'] + width_ratio_tally += query['width_ratio'] + query['stacktrace'] = render_stacktrace(query['stacktrace']) + i += 1 + + query['trace_color'] = trace_colors[query['stacktrace']] + + if trans_id: + self._queries[(i - 1)][1]['ends_trans'] = True + + # Queries are similar / duplicates only if there's as least 2 of them. + # Also, to hide queries, we need to give all the duplicate groups an id + query_colors = contrasting_color_generator() + query_similar_colors = { + alias: { + query: (similar_count, next(query_colors)) + for query, similar_count in queries.items() + if similar_count >= 2 + } + for alias, queries in query_similar.items() + } + query_duplicates_colors = { + alias: { + query: (duplicate_count, next(query_colors)) + for query, duplicate_count in queries.items() + if duplicate_count >= 2 + } + for alias, queries in query_duplicates.items() + } + + for alias, query in self._queries: + try: + (query["similar_count"], query["similar_color"]) = ( + query_similar_colors[alias][similar_key(query)] + ) + (query["duplicate_count"], query["duplicate_color"]) = ( + query_duplicates_colors[alias][duplicate_key(query)] + ) + except KeyError: + pass + + for alias, alias_info in self._databases.items(): + try: + alias_info["similar_count"] = sum( + e[0] for e in query_similar_colors[alias].values() + ) + alias_info["duplicate_count"] = sum( + e[0] for e in query_duplicates_colors[alias].values() + ) + except KeyError: + pass + + self.record_stats({ + 'databases': sorted(self._databases.items(), key=lambda x: -x[1]['time_spent']), + 'queries': [q for a, q in self._queries], + 'sql_time': self._sql_time, + }) + + def generate_server_timing(self, request, response): + stats = self.get_stats() + title = 'SQL {} queries'.format(len(stats.get('queries', []))) + value = stats.get('sql_time', 0) + self.record_server_timing('sql_time', title, value) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/tracking.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/tracking.py new file mode 100644 index 0000000..73058f7 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/tracking.py @@ -0,0 +1,191 @@ +from __future__ import absolute_import, unicode_literals + +import datetime +import json +from threading import local +from time import time + +from django.utils import six +from django.utils.encoding import force_text + +from debug_toolbar import settings as dt_settings +from debug_toolbar.utils import get_stack, get_template_info, tidy_stacktrace + + +class SQLQueryTriggered(Exception): + """Thrown when template panel triggers a query""" + pass + + +class ThreadLocalState(local): + def __init__(self): + self.enabled = True + + @property + def Wrapper(self): + if self.enabled: + return NormalCursorWrapper + return ExceptionCursorWrapper + + def recording(self, v): + self.enabled = v + + +state = ThreadLocalState() +recording = state.recording # export function + + +def wrap_cursor(connection, panel): + if not hasattr(connection, '_djdt_cursor'): + connection._djdt_cursor = connection.cursor + + def cursor(*args, **kwargs): + # Per the DB API cursor() does not accept any arguments. There's + # some code in the wild which does not follow that convention, + # so we pass on the arguments even though it's not clean. + # See: + # https://github.com/jazzband/django-debug-toolbar/pull/615 + # https://github.com/jazzband/django-debug-toolbar/pull/896 + return state.Wrapper(connection._djdt_cursor(*args, **kwargs), connection, panel) + + connection.cursor = cursor + return cursor + + +def unwrap_cursor(connection): + if hasattr(connection, '_djdt_cursor'): + del connection._djdt_cursor + del connection.cursor + + +class ExceptionCursorWrapper(object): + """ + Wraps a cursor and raises an exception on any operation. + Used in Templates panel. + """ + def __init__(self, cursor, db, logger): + pass + + def __getattr__(self, attr): + raise SQLQueryTriggered() + + +class NormalCursorWrapper(object): + """ + Wraps a cursor and logs queries. + """ + + def __init__(self, cursor, db, logger): + self.cursor = cursor + # Instance of a BaseDatabaseWrapper subclass + self.db = db + # logger must implement a ``record`` method + self.logger = logger + + def _quote_expr(self, element): + if isinstance(element, six.string_types): + return "'%s'" % force_text(element).replace("'", "''") + else: + return repr(element) + + def _quote_params(self, params): + if not params: + return params + if isinstance(params, dict): + return {key: self._quote_expr(value) for key, value in params.items()} + return [self._quote_expr(p) for p in params] + + def _decode(self, param): + # If a sequence type, decode each element separately + if isinstance(param, list) or isinstance(param, tuple): + return [self._decode(element) for element in param] + + # If a dictionary type, decode each value separately + if isinstance(param, dict): + return {key: self._decode(value) for key, value in param.items()} + + # make sure datetime, date and time are converted to string by force_text + CONVERT_TYPES = (datetime.datetime, datetime.date, datetime.time) + try: + return force_text(param, strings_only=not isinstance(param, CONVERT_TYPES)) + except UnicodeDecodeError: + return '(encoded string)' + + def _record(self, method, sql, params): + start_time = time() + try: + return method(sql, params) + finally: + stop_time = time() + duration = (stop_time - start_time) * 1000 + if dt_settings.get_config()['ENABLE_STACKTRACES']: + stacktrace = tidy_stacktrace(reversed(get_stack())) + else: + stacktrace = [] + _params = '' + try: + _params = json.dumps([self._decode(p) for p in params]) + except TypeError: + pass # object not JSON serializable + + template_info = get_template_info() + + alias = getattr(self.db, 'alias', 'default') + conn = self.db.connection + vendor = getattr(conn, 'vendor', 'unknown') + + params = { + 'vendor': vendor, + 'alias': alias, + 'sql': self.db.ops.last_executed_query( + self.cursor, sql, self._quote_params(params)), + 'duration': duration, + 'raw_sql': sql, + 'params': _params, + 'raw_params': params, + 'stacktrace': stacktrace, + 'start_time': start_time, + 'stop_time': stop_time, + 'is_slow': duration > dt_settings.get_config()['SQL_WARNING_THRESHOLD'], + 'is_select': sql.lower().strip().startswith('select'), + 'template_info': template_info, + } + + if vendor == 'postgresql': + # If an erroneous query was ran on the connection, it might + # be in a state where checking isolation_level raises an + # exception. + try: + iso_level = conn.isolation_level + except conn.InternalError: + iso_level = 'unknown' + params.update({ + 'trans_id': self.logger.get_transaction_id(alias), + 'trans_status': conn.get_transaction_status(), + 'iso_level': iso_level, + 'encoding': conn.encoding, + }) + + # We keep `sql` to maintain backwards compatibility + self.logger.record(**params) + + def callproc(self, procname, params=None): + return self._record(self.cursor.callproc, procname, params) + + def execute(self, sql, params=None): + return self._record(self.cursor.execute, sql, params) + + def executemany(self, sql, param_list): + return self._record(self.cursor.executemany, sql, param_list) + + def __getattr__(self, attr): + return getattr(self.cursor, attr) + + def __iter__(self): + return iter(self.cursor) + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.close() diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/utils.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/utils.py new file mode 100644 index 0000000..197e484 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/utils.py @@ -0,0 +1,60 @@ +from __future__ import absolute_import, unicode_literals + +import re + +import sqlparse +from django.utils.html import escape +from sqlparse import tokens as T + + +class BoldKeywordFilter: + """sqlparse filter to bold SQL keywords""" + def process(self, stream): + """Process the token stream""" + for token_type, value in stream: + is_keyword = token_type in T.Keyword + if is_keyword: + yield T.Text, '' + yield token_type, escape(value) + if is_keyword: + yield T.Text, '' + + +def reformat_sql(sql): + stack = sqlparse.engine.FilterStack() + stack.preprocess.append(BoldKeywordFilter()) # add our custom filter + stack.postprocess.append(sqlparse.filters.SerializerUnicode()) # tokens -> strings + return swap_fields(''.join(stack.run(sql))) + + +def swap_fields(sql): + expr = r'SELECT (...........*?) FROM' + subs = (r'SELECT ' + r'••• ' + r'\1 ' + r'FROM') + return re.sub(expr, subs, sql) + + +def contrasting_color_generator(): + """ + Generate constrasting colors by varying most significant bit of RGB first, + and then vary subsequent bits systematically. + """ + def rgb_to_hex(rgb): + return '#%02x%02x%02x' % tuple(rgb) + + triples = [(1, 0, 0), (0, 1, 0), (0, 0, 1), + (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] + n = 1 << 7 + so_far = [[0, 0, 0]] + while True: + if n == 0: # This happens after 2**24 colours; presumably, never + yield "#000000" # black + copy_so_far = list(so_far) + for triple in triples: + for previous in copy_so_far: + rgb = [n * triple[i] + previous[i] for i in range(3)] + so_far.append(rgb) + yield rgb_to_hex(rgb) + n >>= 1 diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/views.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/views.py new file mode 100644 index 0000000..47fca42 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/sql/views.py @@ -0,0 +1,118 @@ +from __future__ import absolute_import, unicode_literals + +from django.http import HttpResponseBadRequest +from django.template.response import SimpleTemplateResponse +from django.views.decorators.csrf import csrf_exempt + +from debug_toolbar.decorators import require_show_toolbar +from debug_toolbar.panels.sql.forms import SQLSelectForm + + +@csrf_exempt +@require_show_toolbar +def sql_select(request): + """Returns the output of the SQL SELECT statement""" + form = SQLSelectForm(request.POST or None) + + if form.is_valid(): + sql = form.cleaned_data['raw_sql'] + params = form.cleaned_data['params'] + cursor = form.cursor + cursor.execute(sql, params) + headers = [d[0] for d in cursor.description] + result = cursor.fetchall() + cursor.close() + context = { + 'result': result, + 'sql': form.reformat_sql(), + 'duration': form.cleaned_data['duration'], + 'headers': headers, + 'alias': form.cleaned_data['alias'], + } + # Using SimpleTemplateResponse avoids running global context processors. + return SimpleTemplateResponse('debug_toolbar/panels/sql_select.html', context) + return HttpResponseBadRequest('Form errors') + + +@csrf_exempt +@require_show_toolbar +def sql_explain(request): + """Returns the output of the SQL EXPLAIN on the given query""" + form = SQLSelectForm(request.POST or None) + + if form.is_valid(): + sql = form.cleaned_data['raw_sql'] + params = form.cleaned_data['params'] + vendor = form.connection.vendor + cursor = form.cursor + + if vendor == 'sqlite': + # SQLite's EXPLAIN dumps the low-level opcodes generated for a query; + # EXPLAIN QUERY PLAN dumps a more human-readable summary + # See https://www.sqlite.org/lang_explain.html for details + cursor.execute("EXPLAIN QUERY PLAN %s" % (sql,), params) + elif vendor == 'postgresql': + cursor.execute("EXPLAIN ANALYZE %s" % (sql,), params) + else: + cursor.execute("EXPLAIN %s" % (sql,), params) + + headers = [d[0] for d in cursor.description] + result = cursor.fetchall() + cursor.close() + context = { + 'result': result, + 'sql': form.reformat_sql(), + 'duration': form.cleaned_data['duration'], + 'headers': headers, + 'alias': form.cleaned_data['alias'], + } + # Using SimpleTemplateResponse avoids running global context processors. + return SimpleTemplateResponse('debug_toolbar/panels/sql_explain.html', context) + return HttpResponseBadRequest('Form errors') + + +@csrf_exempt +@require_show_toolbar +def sql_profile(request): + """Returns the output of running the SQL and getting the profiling statistics""" + form = SQLSelectForm(request.POST or None) + + if form.is_valid(): + sql = form.cleaned_data['raw_sql'] + params = form.cleaned_data['params'] + cursor = form.cursor + result = None + headers = None + result_error = None + try: + cursor.execute("SET PROFILING=1") # Enable profiling + cursor.execute(sql, params) # Execute SELECT + cursor.execute("SET PROFILING=0") # Disable profiling + # The Query ID should always be 1 here but I'll subselect to get + # the last one just in case... + cursor.execute(""" + SELECT * + FROM information_schema.profiling + WHERE query_id = ( + SELECT query_id + FROM information_schema.profiling + ORDER BY query_id DESC + LIMIT 1 + ) +""") + headers = [d[0] for d in cursor.description] + result = cursor.fetchall() + except Exception: + result_error = "Profiling is either not available or not supported by your database." + cursor.close() + context = { + 'result': result, + 'result_error': result_error, + 'sql': form.reformat_sql(), + 'duration': form.cleaned_data['duration'], + 'headers': headers, + 'alias': form.cleaned_data['alias'], + } + # Using SimpleTemplateResponse avoids running global context processors. + return SimpleTemplateResponse('debug_toolbar/panels/sql_profile.html', context) + return HttpResponseBadRequest('Form errors') diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/staticfiles.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/staticfiles.py new file mode 100644 index 0000000..cd400d7 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/staticfiles.py @@ -0,0 +1,173 @@ +from __future__ import absolute_import, unicode_literals + +from collections import OrderedDict +from os.path import join, normpath + +from django.conf import settings +from django.contrib.staticfiles import finders, storage +from django.contrib.staticfiles.templatetags import staticfiles +from django.core.files.storage import get_storage_class +from django.utils.encoding import python_2_unicode_compatible +from django.utils.functional import LazyObject +from django.utils.translation import ugettext_lazy as _, ungettext + +from debug_toolbar import panels +from debug_toolbar.utils import ThreadCollector + +try: + import threading +except ImportError: + threading = None + + +@python_2_unicode_compatible +class StaticFile(object): + """ + Representing the different properties of a static file. + """ + def __init__(self, path): + self.path = path + + def __str__(self): + return self.path + + def real_path(self): + return finders.find(self.path) + + def url(self): + return storage.staticfiles_storage.url(self.path) + + +class FileCollector(ThreadCollector): + + def collect(self, path, thread=None): + # handle the case of {% static "admin/" %} + if path.endswith('/'): + return + super(FileCollector, self).collect(StaticFile(path), thread) + + +collector = FileCollector() + + +class DebugConfiguredStorage(LazyObject): + """ + A staticfiles storage class to be used for collecting which paths + are resolved by using the {% static %} template tag (which uses the + `url` method). + """ + def _setup(self): + + configured_storage_cls = get_storage_class(settings.STATICFILES_STORAGE) + + class DebugStaticFilesStorage(configured_storage_cls): + + def __init__(self, collector, *args, **kwargs): + super(DebugStaticFilesStorage, self).__init__(*args, **kwargs) + self.collector = collector + + def url(self, path): + self.collector.collect(path) + return super(DebugStaticFilesStorage, self).url(path) + + self._wrapped = DebugStaticFilesStorage(collector) + + +_original_storage = storage.staticfiles_storage + + +class StaticFilesPanel(panels.Panel): + """ + A panel to display the found staticfiles. + """ + name = 'Static files' + template = 'debug_toolbar/panels/staticfiles.html' + + @property + def title(self): + return (_("Static files (%(num_found)s found, %(num_used)s used)") % + {'num_found': self.num_found, 'num_used': self.num_used}) + + def __init__(self, *args, **kwargs): + super(StaticFilesPanel, self).__init__(*args, **kwargs) + self.num_found = 0 + self._paths = {} + + def enable_instrumentation(self): + storage.staticfiles_storage = staticfiles.staticfiles_storage = DebugConfiguredStorage() + + def disable_instrumentation(self): + storage.staticfiles_storage = staticfiles.staticfiles_storage = _original_storage + + @property + def num_used(self): + return len(self._paths[threading.currentThread()]) + + nav_title = _('Static files') + + @property + def nav_subtitle(self): + num_used = self.num_used + return ungettext("%(num_used)s file used", + "%(num_used)s files used", + num_used) % {'num_used': num_used} + + def process_request(self, request): + collector.clear_collection() + + def generate_stats(self, request, response): + used_paths = collector.get_collection() + self._paths[threading.currentThread()] = used_paths + + self.record_stats({ + 'num_found': self.num_found, + 'num_used': self.num_used, + 'staticfiles': used_paths, + 'staticfiles_apps': self.get_staticfiles_apps(), + 'staticfiles_dirs': self.get_staticfiles_dirs(), + 'staticfiles_finders': self.get_staticfiles_finders(), + }) + + def get_staticfiles_finders(self): + """ + Returns a sorted mapping between the finder path and the list + of relative and file system paths which that finder was able + to find. + """ + finders_mapping = OrderedDict() + for finder in finders.get_finders(): + for path, finder_storage in finder.list([]): + if getattr(finder_storage, 'prefix', None): + prefixed_path = join(finder_storage.prefix, path) + else: + prefixed_path = path + finder_cls = finder.__class__ + finder_path = '.'.join([finder_cls.__module__, + finder_cls.__name__]) + real_path = finder_storage.path(path) + payload = (prefixed_path, real_path) + finders_mapping.setdefault(finder_path, []).append(payload) + self.num_found += 1 + return finders_mapping + + def get_staticfiles_dirs(self): + """ + Returns a list of paths to inspect for additional static files + """ + dirs = [] + for finder in finders.get_finders(): + if isinstance(finder, finders.FileSystemFinder): + dirs.extend(finder.locations) + return [(prefix, normpath(dir)) for prefix, dir in dirs] + + def get_staticfiles_apps(self): + """ + Returns a list of app paths that have a static directory + """ + apps = [] + for finder in finders.get_finders(): + if isinstance(finder, finders.AppDirectoriesFinder): + for app in finder.apps: + if app not in apps: + apps.append(app) + return apps diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/__init__.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/__init__.py new file mode 100644 index 0000000..1f768f5 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/__init__.py @@ -0,0 +1 @@ +from debug_toolbar.panels.templates.panel import TemplatesPanel # noqa diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/panel.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/panel.py new file mode 100644 index 0000000..56bd04a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/panel.py @@ -0,0 +1,222 @@ +from __future__ import absolute_import, unicode_literals + +from collections import OrderedDict +from contextlib import contextmanager +from os.path import normpath +from pprint import pformat, saferepr + +from django import http +from django.conf.urls import url +from django.core import signing +from django.db.models.query import QuerySet, RawQuerySet +from django.template import RequestContext, Template +from django.test.signals import template_rendered +from django.test.utils import instrumented_test_render +from django.utils import six +from django.utils.encoding import force_text +from django.utils.translation import ugettext_lazy as _ + +from debug_toolbar.panels import Panel +from debug_toolbar.panels.sql.tracking import SQLQueryTriggered, recording +from debug_toolbar.panels.templates import views + +# Monkey-patch to enable the template_rendered signal. The receiver returns +# immediately when the panel is disabled to keep the overhead small. + +# Code taken and adapted from Simon Willison and Django Snippets: +# https://www.djangosnippets.org/snippets/766/ + +if Template._render != instrumented_test_render: + Template.original_render = Template._render + Template._render = instrumented_test_render + + +# Monkey-patch to store items added by template context processors. The +# overhead is sufficiently small to justify enabling it unconditionally. + +@contextmanager +def _request_context_bind_template(self, template): + if self.template is not None: + raise RuntimeError("Context is already bound to a template") + + self.template = template + # Set context processors according to the template engine's settings. + processors = (template.engine.template_context_processors + + self._processors) + self.context_processors = OrderedDict() + updates = {} + for processor in processors: + name = '%s.%s' % (processor.__module__, processor.__name__) + context = processor(self.request) + self.context_processors[name] = context + updates.update(context) + self.dicts[self._processors_index] = updates + + try: + yield + finally: + self.template = None + # Unset context processors. + self.dicts[self._processors_index] = {} + + +RequestContext.bind_template = _request_context_bind_template + + +class TemplatesPanel(Panel): + """ + A panel that lists all templates used during processing of a response. + """ + def __init__(self, *args, **kwargs): + super(TemplatesPanel, self).__init__(*args, **kwargs) + self.templates = [] + # Refs GitHub issue #910 + # Hold a series of seen dictionaries within Contexts. A dictionary is + # considered seen if it is `in` this list, requiring that the __eq__ + # for the dictionary matches. If *anything* in the dictionary is + # different it is counted as a new layer. + self.seen_layers = [] + # Holds all dictionaries which have been prettified for output. + # This should align with the seen_layers such that an index here is + # the same as the index there. + self.pformat_layers = [] + + def _store_template_info(self, sender, **kwargs): + template, context = kwargs['template'], kwargs['context'] + + # Skip templates that we are generating through the debug toolbar. + if (isinstance(template.name, six.string_types) and ( + template.name.startswith('debug_toolbar/') or + template.name.startswith( + tuple(self.toolbar.config['SKIP_TEMPLATE_PREFIXES'])))): + return + + context_list = [] + for context_layer in context.dicts: + if hasattr(context_layer, 'items') and context_layer: + # Refs GitHub issue #910 + # If we can find this layer in our pseudo-cache then find the + # matching prettified version in the associated list. + key_values = sorted(context_layer.items()) + if key_values in self.seen_layers: + index = self.seen_layers.index(key_values) + pformatted = self.pformat_layers[index] + context_list.append(pformatted) + else: + temp_layer = {} + for key, value in context_layer.items(): + # Replace any request elements - they have a large + # unicode representation and the request data is + # already made available from the Request panel. + if isinstance(value, http.HttpRequest): + temp_layer[key] = '<>' + # Replace the debugging sql_queries element. The SQL + # data is already made available from the SQL panel. + elif key == 'sql_queries' and isinstance(value, list): + temp_layer[key] = '<>' + # Replace LANGUAGES, which is available in i18n context processor + elif key == 'LANGUAGES' and isinstance(value, tuple): + temp_layer[key] = '<>' + # QuerySet would trigger the database: user can run the query from SQL Panel + elif isinstance(value, (QuerySet, RawQuerySet)): + model_name = "%s.%s" % ( + value.model._meta.app_label, value.model.__name__) + temp_layer[key] = '<<%s of %s>>' % ( + value.__class__.__name__.lower(), model_name) + else: + try: + recording(False) + saferepr(value) # this MAY trigger a db query + except SQLQueryTriggered: + temp_layer[key] = '<>' + except UnicodeEncodeError: + temp_layer[key] = '<>' + except Exception: + temp_layer[key] = '<>' + else: + temp_layer[key] = value + finally: + recording(True) + # Refs GitHub issue #910 + # If we've not seen the layer before then we will add it + # so that if we see it again we can skip formatting it. + self.seen_layers.append(key_values) + # Note: this *ought* to be len(...) - 1 but let's be safe. + index = self.seen_layers.index(key_values) + try: + pformatted = force_text(pformat(temp_layer)) + except UnicodeEncodeError: + pass + else: + # Note: this *ought* to be len(...) - 1 but let's be safe. + self.pformat_layers.insert(index, pformatted) + context_list.append(pformatted) + + kwargs['context'] = context_list + kwargs['context_processors'] = getattr(context, 'context_processors', None) + self.templates.append(kwargs) + + # Implement the Panel API + + nav_title = _("Templates") + + @property + def title(self): + num_templates = len(self.templates) + return _("Templates (%(num_templates)s rendered)") % {'num_templates': num_templates} + + @property + def nav_subtitle(self): + if self.templates: + return self.templates[0]['template'].name + return '' + + template = 'debug_toolbar/panels/templates.html' + + @classmethod + def get_urls(cls): + return [ + url(r'^template_source/$', views.template_source, name='template_source'), + ] + + def enable_instrumentation(self): + template_rendered.connect(self._store_template_info) + + def disable_instrumentation(self): + template_rendered.disconnect(self._store_template_info) + + def generate_stats(self, request, response): + template_context = [] + for template_data in self.templates: + info = {} + # Clean up some info about templates + template = template_data.get('template', None) + if hasattr(template, 'origin') and template.origin and template.origin.name: + template.origin_name = template.origin.name + template.origin_hash = signing.dumps(template.origin.name) + else: + template.origin_name = _('No origin') + template.origin_hash = '' + info['template'] = template + # Clean up context for better readability + if self.toolbar.config['SHOW_TEMPLATE_CONTEXT']: + context_list = template_data.get('context', []) + info['context'] = '\n'.join(context_list) + template_context.append(info) + + # Fetch context_processors/template_dirs from any template + if self.templates: + context_processors = self.templates[0]['context_processors'] + template = self.templates[0]['template'] + # django templates have the 'engine' attribute, while jinja templates use 'backend' + engine_backend = getattr(template, 'engine', None) or getattr(template, 'backend') + template_dirs = engine_backend.dirs + else: + context_processors = None + template_dirs = [] + + self.record_stats({ + 'templates': template_context, + 'template_dirs': [normpath(x) for x in template_dirs], + 'context_processors': context_processors, + }) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/views.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/views.py new file mode 100644 index 0000000..e6d8ab0 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/templates/views.py @@ -0,0 +1,66 @@ +from __future__ import absolute_import, unicode_literals + +from django.core import signing +from django.http import HttpResponseBadRequest +from django.template import Origin, TemplateDoesNotExist +from django.template.engine import Engine +from django.template.response import SimpleTemplateResponse +from django.utils.safestring import mark_safe + +from debug_toolbar.decorators import require_show_toolbar + + +@require_show_toolbar +def template_source(request): + """ + Return the source of a template, syntax-highlighted by Pygments if + it's available. + """ + template_origin_name = request.GET.get('template_origin', None) + if template_origin_name is None: + return HttpResponseBadRequest('"template_origin" key is required') + try: + template_origin_name = signing.loads(template_origin_name) + except Exception: + return HttpResponseBadRequest('"template_origin" is invalid') + template_name = request.GET.get('template', template_origin_name) + + final_loaders = [] + loaders = Engine.get_default().template_loaders + + for loader in loaders: + if loader is not None: + # When the loader has loaders associated with it, + # append those loaders to the list. This occurs with + # django.template.loaders.cached.Loader + if hasattr(loader, 'loaders'): + final_loaders += loader.loaders + else: + final_loaders.append(loader) + + for loader in final_loaders: + origin = Origin(template_origin_name) + try: + source = loader.get_contents(origin) + break + except TemplateDoesNotExist: + pass + else: + source = "Template Does Not Exist: %s" % (template_origin_name,) + + try: + from pygments import highlight + from pygments.lexers import HtmlDjangoLexer + from pygments.formatters import HtmlFormatter + + source = highlight(source, HtmlDjangoLexer(), HtmlFormatter()) + source = mark_safe(source) + source.pygmentized = True + except ImportError: + pass + + # Using SimpleTemplateResponse avoids running global context processors. + return SimpleTemplateResponse('debug_toolbar/panels/template_source.html', { + 'source': source, + 'template_name': template_name + }) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/timer.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/timer.py new file mode 100644 index 0000000..812ab8d --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/timer.py @@ -0,0 +1,94 @@ +from __future__ import absolute_import, unicode_literals + +import time + +from django.template.loader import render_to_string +from django.utils.translation import ugettext_lazy as _ + +from debug_toolbar.panels import Panel + +try: + import resource # Not available on Win32 systems +except ImportError: + resource = None + + +class TimerPanel(Panel): + """ + Panel that displays the time a response took in milliseconds. + """ + + def nav_subtitle(self): + stats = self.get_stats() + if hasattr(self, '_start_rusage'): + utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime + stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime + return _("CPU: %(cum)0.2fms (%(total)0.2fms)") % { + 'cum': (utime + stime) * 1000.0, + 'total': stats['total_time'] + } + elif 'total_time' in stats: + return _("Total: %0.2fms") % stats['total_time'] + else: + return '' + + has_content = resource is not None + + title = _("Time") + + template = 'debug_toolbar/panels/timer.html' + + @property + def content(self): + stats = self.get_stats() + rows = ( + (_("User CPU time"), _("%(utime)0.3f msec") % stats), + (_("System CPU time"), _("%(stime)0.3f msec") % stats), + (_("Total CPU time"), _("%(total)0.3f msec") % stats), + (_("Elapsed time"), _("%(total_time)0.3f msec") % stats), + (_("Context switches"), _("%(vcsw)d voluntary, %(ivcsw)d involuntary") % stats), + ) + return render_to_string(self.template, {'rows': rows}) + + def process_request(self, request): + self._start_time = time.time() + if self.has_content: + self._start_rusage = resource.getrusage(resource.RUSAGE_SELF) + + def generate_stats(self, request, response): + stats = {} + if hasattr(self, '_start_time'): + stats['total_time'] = (time.time() - self._start_time) * 1000 + if hasattr(self, '_start_rusage'): + self._end_rusage = resource.getrusage(resource.RUSAGE_SELF) + stats['utime'] = 1000 * self._elapsed_ru('ru_utime') + stats['stime'] = 1000 * self._elapsed_ru('ru_stime') + stats['total'] = stats['utime'] + stats['stime'] + stats['vcsw'] = self._elapsed_ru('ru_nvcsw') + stats['ivcsw'] = self._elapsed_ru('ru_nivcsw') + stats['minflt'] = self._elapsed_ru('ru_minflt') + stats['majflt'] = self._elapsed_ru('ru_majflt') + # these are documented as not meaningful under Linux. If you're running BSD + # feel free to enable them, and add any others that I hadn't gotten to before + # I noticed that I was getting nothing but zeroes and that the docs agreed. :-( + # + # stats['blkin'] = self._elapsed_ru('ru_inblock') + # stats['blkout'] = self._elapsed_ru('ru_oublock') + # stats['swap'] = self._elapsed_ru('ru_nswap') + # stats['rss'] = self._end_rusage.ru_maxrss + # stats['srss'] = self._end_rusage.ru_ixrss + # stats['urss'] = self._end_rusage.ru_idrss + # stats['usrss'] = self._end_rusage.ru_isrss + + self.record_stats(stats) + + def generate_server_timing(self, request, response): + stats = self.get_stats() + + self.record_server_timing('utime', 'User CPU time', stats.get('utime', 0)) + self.record_server_timing('stime', 'System CPU time', stats.get('stime', 0)) + self.record_server_timing('total', 'Total CPU time', stats.get('total', 0)) + self.record_server_timing('total_time', 'Elapsed time', stats.get('total_time', 0)) + + def _elapsed_ru(self, name): + return getattr(self._end_rusage, name) - getattr(self._start_rusage, name) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/versions.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/versions.py new file mode 100644 index 0000000..2e8d588 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/panels/versions.py @@ -0,0 +1,65 @@ +from __future__ import absolute_import, unicode_literals + +import sys + +import django +from django.apps import apps +from django.utils.translation import ugettext_lazy as _ + +from debug_toolbar.panels import Panel + + +class VersionsPanel(Panel): + """ + Shows versions of Python, Django, and installed apps if possible. + """ + @property + def nav_subtitle(self): + return 'Django %s' % django.get_version() + + title = _("Versions") + + template = 'debug_toolbar/panels/versions.html' + + def generate_stats(self, request, response): + versions = [ + ('Python', '', '%d.%d.%d' % sys.version_info[:3]), + ('Django', '', self.get_app_version(django)), + ] + versions += list(self.gen_app_versions()) + self.record_stats({ + 'versions': sorted(versions, key=lambda v: v[0]), + 'paths': sys.path, + }) + + def gen_app_versions(self): + for app_config in apps.get_app_configs(): + name = app_config.verbose_name + app = app_config.module + version = self.get_app_version(app) + if version: + yield app.__name__, name, version + + def get_app_version(self, app): + version = self.get_version_from_app(app) + if isinstance(version, (list, tuple)): + # We strip dots from the right because we do not want to show + # trailing dots if there are empty elements in the list/tuple + version = '.'.join(str(o) for o in version).rstrip('.') + return version + + def get_version_from_app(self, app): + if hasattr(app, 'get_version'): + get_version = app.get_version + if callable(get_version): + try: + return get_version() + except TypeError: + pass + else: + return get_version + if hasattr(app, 'VERSION'): + return app.VERSION + if hasattr(app, '__version__'): + return app.__version__ + return diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/settings.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/settings.py new file mode 100644 index 0000000..76b2c6b --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/settings.py @@ -0,0 +1,165 @@ +from __future__ import absolute_import, unicode_literals + +import warnings + +from django.conf import settings +from django.utils import six +from django.utils.lru_cache import lru_cache + +# Always import this module as follows: +# from debug_toolbar import settings [as dt_settings] + +# Don't import directly CONFIG or PANELs, or you will miss changes performed +# with override_settings in tests. + + +CONFIG_DEFAULTS = { + # Toolbar options + 'DISABLE_PANELS': {'debug_toolbar.panels.redirects.RedirectsPanel'}, + 'INSERT_BEFORE': '', + 'RENDER_PANELS': None, + 'RESULTS_CACHE_SIZE': 10, + 'ROOT_TAG_EXTRA_ATTRS': '', + 'SHOW_COLLAPSED': False, + 'SHOW_TOOLBAR_CALLBACK': 'debug_toolbar.middleware.show_toolbar', + # Panel options + 'EXTRA_SIGNALS': [], + 'ENABLE_STACKTRACES': True, + 'HIDE_IN_STACKTRACES': ( + 'socketserver' if six.PY3 else 'SocketServer', + 'threading', + 'wsgiref', + 'debug_toolbar', + 'django.db', + 'django.core.handlers', + 'django.core.servers', + 'django.utils.decorators', + 'django.utils.deprecation', + 'django.utils.functional', + ), + 'PROFILER_MAX_DEPTH': 10, + 'SHOW_TEMPLATE_CONTEXT': True, + 'SKIP_TEMPLATE_PREFIXES': ( + 'django/forms/widgets/', + 'admin/widgets/', + ), + 'SQL_WARNING_THRESHOLD': 500, # milliseconds +} + + +@lru_cache() +def get_config(): + USER_CONFIG = getattr(settings, 'DEBUG_TOOLBAR_CONFIG', {}) + + # Backward-compatibility for 1.0, remove in 2.0. + _RENAMED_CONFIG = { + 'RESULTS_STORE_SIZE': 'RESULTS_CACHE_SIZE', + 'ROOT_TAG_ATTRS': 'ROOT_TAG_EXTRA_ATTRS', + 'HIDDEN_STACKTRACE_MODULES': 'HIDE_IN_STACKTRACES' + } + for old_name, new_name in _RENAMED_CONFIG.items(): + if old_name in USER_CONFIG: + warnings.warn( + "%r was renamed to %r. Update your DEBUG_TOOLBAR_CONFIG " + "setting." % (old_name, new_name), DeprecationWarning) + USER_CONFIG[new_name] = USER_CONFIG.pop(old_name) + + if 'HIDE_DJANGO_SQL' in USER_CONFIG: + warnings.warn( + "HIDE_DJANGO_SQL was removed. Update your " + "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) + USER_CONFIG.pop('HIDE_DJANGO_SQL') + + if 'TAG' in USER_CONFIG: + warnings.warn( + "TAG was replaced by INSERT_BEFORE. Update your " + "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) + USER_CONFIG['INSERT_BEFORE'] = '' % USER_CONFIG.pop('TAG') + + CONFIG = CONFIG_DEFAULTS.copy() + CONFIG.update(USER_CONFIG) + + if 'INTERCEPT_REDIRECTS' in USER_CONFIG: + warnings.warn( + "INTERCEPT_REDIRECTS is deprecated. Please use the " + "DISABLE_PANELS config in the " + "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning) + if USER_CONFIG['INTERCEPT_REDIRECTS']: + if 'debug_toolbar.panels.redirects.RedirectsPanel' \ + in CONFIG['DISABLE_PANELS']: + # RedirectsPanel should be enabled + try: + CONFIG['DISABLE_PANELS'].remove( + 'debug_toolbar.panels.redirects.RedirectsPanel' + ) + except KeyError: + # We wanted to remove it, but it didn't exist. This is fine + pass + elif 'debug_toolbar.panels.redirects.RedirectsPanel' \ + not in CONFIG['DISABLE_PANELS']: + # RedirectsPanel should be disabled + CONFIG['DISABLE_PANELS'].add( + 'debug_toolbar.panels.redirects.RedirectsPanel' + ) + + return CONFIG + + +PANELS_DEFAULTS = [ + 'debug_toolbar.panels.versions.VersionsPanel', + 'debug_toolbar.panels.timer.TimerPanel', + 'debug_toolbar.panels.settings.SettingsPanel', + 'debug_toolbar.panels.headers.HeadersPanel', + 'debug_toolbar.panels.request.RequestPanel', + 'debug_toolbar.panels.sql.SQLPanel', + 'debug_toolbar.panels.staticfiles.StaticFilesPanel', + 'debug_toolbar.panels.templates.TemplatesPanel', + 'debug_toolbar.panels.cache.CachePanel', + 'debug_toolbar.panels.signals.SignalsPanel', + 'debug_toolbar.panels.logging.LoggingPanel', + 'debug_toolbar.panels.redirects.RedirectsPanel', +] + + +@lru_cache() +def get_panels(): + try: + PANELS = list(settings.DEBUG_TOOLBAR_PANELS) + except AttributeError: + PANELS = PANELS_DEFAULTS + else: + # Backward-compatibility for 1.0, remove in 2.0. + _RENAMED_PANELS = { + 'debug_toolbar.panels.version.VersionDebugPanel': + 'debug_toolbar.panels.versions.VersionsPanel', + 'debug_toolbar.panels.timer.TimerDebugPanel': + 'debug_toolbar.panels.timer.TimerPanel', + 'debug_toolbar.panels.settings_vars.SettingsDebugPanel': + 'debug_toolbar.panels.settings.SettingsPanel', + 'debug_toolbar.panels.headers.HeaderDebugPanel': + 'debug_toolbar.panels.headers.HeadersPanel', + 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel': + 'debug_toolbar.panels.request.RequestPanel', + 'debug_toolbar.panels.sql.SQLDebugPanel': + 'debug_toolbar.panels.sql.SQLPanel', + 'debug_toolbar.panels.template.TemplateDebugPanel': + 'debug_toolbar.panels.templates.TemplatesPanel', + 'debug_toolbar.panels.cache.CacheDebugPanel': + 'debug_toolbar.panels.cache.CachePanel', + 'debug_toolbar.panels.signals.SignalDebugPanel': + 'debug_toolbar.panels.signals.SignalsPanel', + 'debug_toolbar.panels.logger.LoggingDebugPanel': + 'debug_toolbar.panels.logging.LoggingPanel', + 'debug_toolbar.panels.redirects.InterceptRedirectsDebugPanel': + 'debug_toolbar.panels.redirects.RedirectsPanel', + 'debug_toolbar.panels.profiling.ProfilingDebugPanel': + 'debug_toolbar.panels.profiling.ProfilingPanel', + } + for index, old_panel in enumerate(PANELS): + new_panel = _RENAMED_PANELS.get(old_panel) + if new_panel is not None: + warnings.warn( + "%r was renamed to %r. Update your DEBUG_TOOLBAR_PANELS " + "setting." % (old_panel, new_panel), DeprecationWarning) + PANELS[index] = new_panel + return PANELS diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/css/print.css b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/css/print.css new file mode 100644 index 0000000..cde6499 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/css/print.css @@ -0,0 +1,3 @@ +#djDebug { + display: none !important; +} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/css/toolbar.css b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/css/toolbar.css new file mode 100644 index 0000000..ae57f4c --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/css/toolbar.css @@ -0,0 +1,641 @@ +/* http://www.positioniseverything.net/easyclearing.html */ +#djDebug .djdt-clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +#djDebug .djdt-clearfix {display: inline-block;} +/* Hides from IE-mac \*/ +#djDebug .djdt-clearfix {display: block;} +* html #djDebug .djdt-clearfix {height: 1%;} +/* end hide from IE-mac */ + +/* Debug Toolbar CSS Reset, adapted from Eric Meyer's CSS Reset */ +#djDebug {color:#000;background:#FFF;} +#djDebug, #djDebug div, #djDebug span, #djDebug applet, #djDebug object, #djDebug iframe, +#djDebug h1, #djDebug h2, #djDebug h3, #djDebug h4, #djDebug h5, #djDebug h6, #djDebug p, #djDebug blockquote, #djDebug pre, +#djDebug a, #djDebug abbr, #djDebug acronym, #djDebug address, #djDebug big, #djDebug cite, #djDebug code, +#djDebug del, #djDebug dfn, #djDebug em, #djDebug font, #djDebug img, #djDebug ins, #djDebug kbd, #djDebug q, #djDebug s, #djDebug samp, +#djDebug small, #djDebug strike, #djDebug strong, #djDebug sub, #djDebug sup, #djDebug tt, #djDebug var, +#djDebug b, #djDebug u, #djDebug i, #djDebug center, +#djDebug dl, #djDebug dt, #djDebug dd, #djDebug ol, #djDebug ul, #djDebug li, +#djDebug fieldset, #djDebug form, #djDebug label, #djDebug legend, +#djDebug table, #djDebug caption, #djDebug tbody, #djDebug tfoot, #djDebug thead, #djDebug tr, #djDebug th, #djDebug td, +#djDebug button { + margin:0; + padding:0; + min-width:0; + width:auto; + border:0; + outline:0; + font-size:12px; + line-height:1.5em; + color:#000; + vertical-align:baseline; + background-color:transparent; + font-family:sans-serif; + text-align:left; + text-shadow: none; + white-space: normal; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +#djDebug button, #djDebug a.button { + background-color: #eee; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eee), color-stop(100%, #cccccc)); + background-image: -webkit-linear-gradient(top, #eee, #cccccc); + background-image: -moz-linear-gradient(top, #eee, #cccccc); + background-image: -ms-linear-gradient(top, #eee, #cccccc); + background-image: -o-linear-gradient(top, #eee, #cccccc); + background-image: linear-gradient(top, #eee, #cccccc); + border: 1px solid #ccc; + border-bottom: 1px solid #bbb; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + color: #333; + line-height: 1; + padding: 0 8px; + text-align: center; + text-shadow: 0 1px 0 #eee; +} + +#djDebug button:hover, #djDebug a.button:hover { + background-color: #ddd; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ddd), color-stop(100%, #bbb)); + background-image: -webkit-linear-gradient(top, #ddd, #bbb); + background-image: -moz-linear-gradient(top, #ddd, #bbb); + background-image: -ms-linear-gradient(top, #ddd, #bbb); + background-image: -o-linear-gradient(top, #ddd, #bbb); + background-image: linear-gradient(top, #ddd, #bbb); + border-color: #bbb; + border-bottom-color: #999; + cursor: pointer; + text-shadow: 0 1px 0 #ddd; +} + +#djDebug button:active, #djDebug a.button:active { + border: 1px solid #aaa; + border-bottom: 1px solid #888; + -webkit-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; + -moz-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; + box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee; +} + +#djDebug #djDebugToolbar { + background-color:#111; + width:200px; + z-index:100000000; + position:fixed; + top:0; + bottom:0; + right:0; + opacity:0.9; + overflow-y: auto; +} + +#djDebug #djDebugToolbar small { + color:#999; +} + +#djDebug #djDebugToolbar ul { + margin:0; + padding:0; + list-style:none; +} + +#djDebug #djDebugToolbar li { + border-bottom:1px solid #222; + color:#fff; + display:block; + font-weight:bold; + float:none; + margin:0; + padding:0; + position:relative; + width:auto; +} + +#djDebug #djDebugToolbar input[type=checkbox] { + float: right; + margin: 10px; +} + +#djDebug #djDebugToolbar li>a, +#djDebug #djDebugToolbar li>div.djdt-contentless { + font-weight:normal; + font-style:normal; + text-decoration:none; + display:block; + font-size:16px; + padding:10px 10px 5px 25px; + color:#fff; +} +#djDebug #djDebugToolbar li>div.djdt-disabled { + font-style: italic; + color: #999; +} + +#djDebug #djDebugToolbar li a:hover { + color:#111; + background-color:#ffc; +} + +#djDebug #djDebugToolbar li.djdt-active { + background: #333 no-repeat left center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAQAAAAngNWGAAABe0lEQVR4AW2SO0tDQRCFz+bGJxEUrKzsBBsb/4DYiIWdECvB/6CCYGtp6QNRjJ1FihSCVpZGMIhYSBAfIGKRx70xyY3JbrKOk7DJLp7DXm7Il9nMmREYQgQeAI1W1/zZUhR9ZI9gjSZb0iHMRSPbE1QzhhF2jN4H6YdRCHaPvOTjdDb1jWECBhiJoC1tg6Kotbw9WkxBoIUGaqiiQs8fSCj+t9qAIL1nlg9fKgSGKKNEJ2RUMqh7QCDIr58k31AlrIiA0CqhDTQJtUFAqsTFxjV85FGAz1XrkDZodPewkih8IkdwCRWu2U6VerQ0O3OzuTSJ/k62JiIXJI2NL0wBjDiTseQHW8fnGY6myf3+Dz49x88+vjr9SoPaoG6lLteuCApMiu1otAWG/s7BXtYEzv3yZOyrc5nV3XTZjPAv7Jqp2AVf9+dOyx4EFCTqCAnimZB1z9X38fk05RblfVQE1LkR5a6vwCivruANV2ynjU5FHpIE+AsCnCuNfgGtjt1gZaIn2wAAAABJRU5ErkJggg=="), url(../img/indicator.png); + padding-left:10px; +} + +#djDebug #djDebugToolbar li.djdt-active a:hover { + color:#b36a60; + background-color:transparent; +} + +#djDebug #djDebugToolbar li small { + font-size:12px; + color:#999; + font-style:normal; + text-decoration:none; + font-variant:small-caps; +} + +#djDebug #djDebugToolbarHandle { + position:fixed; + background-color:#fff; + border:1px solid #111; + top:30px; + right:0; + z-index:100000000; + opacity:0.75; +} + +#djDebug #djShowToolBarButton { + display:block; + height:75px; + width:30px; + border-right:none; + border-bottom:4px solid #fff; + border-top:4px solid #fff; + border-left:4px solid #fff; + color:#fff; + font-size:10px; + font-weight:bold; + text-decoration:none; + text-align:center; + text-indent:-999999px; + background: #000 no-repeat left center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABLCAIAAACN/FLOAAADOUlEQVR4Ae2WUWhSXxzHp5v+y4mGGkkEETIfIhyEUThaD0XlGg7qZTJdpGOzQSiVC9uWlCxsMmvW0k2WBDVJMzJWBAaG6ORfGZMexAd9EXzxwWFI9qB24K7DZUNRdlSC++H35P1yPpff/Z1zbCMgICAg2AECgUClUmk0msHBQRqN1jyxxWIp/6Wrq6s5UkKsVCrP1wCfz0csrpGlpaXWiFdXV1sjdrvdiMW5XG6jBoxG47801YTYbDZj1mKxyOPx2loLmUzmcDhcLpdKpTbDJxQKbTZbLBYrlUqw/+l02uVySSSShijpdDrYneWqhEIh0AOUVtDPcDhcroFkMslgMJCJTSZTuWasVisaK4vFyufzZRw+n89gMMjlcqlUqtfrvV4v/pMXCgU2m41ArFAo8EemWCzenhGJRGDE8LcnArHD4YArqtXqSjGZTAZjdrsdgRjMKlyRyWRWilEoFHDCYLFAIIBADHYt3K/Vk6lUCktGo1EE4kQigS2XzWbHqpLJZLBkPB5HIAavX66TSCSCQBwMBusV+/1+BGKPx1Ov2Ol0IhDrdLr1OtFqtTv3EjBYnWwuY0ux9jHI7eTGiu2Bm9/Ki9tr7deTl9+nhq6fIZFITRXDmns73hoxqJP9ggaKw78XPm88wirw04IXz6yMNFB8Z3kY//v+Q5x3yRns0fP/dc0TA/SOy9ijVz/06MXg+43q+0emL3T38LY8mn9/DRPPelSN+0NP2sOhgx1MoXbAHw/w9koUPYrJvqOn+Ih9h4UHb9uGXsfufi3Z4Ch9TM8aXaO9km6UJgiN/t8D9xjQVKlnoQnQA5RW0E9H+BYUVCkw2J2MXcjEatOlWqxY6axDyG6FYP4xfumnPs1Vw0Cf/MQ56TEw4WbvOP6TrxUWmOxOBGIwqHDRQG5eJD6yPSMQ8cCIwdiAsgeBGB4LoKTq05VifbLjMDZllyMQg1mFK9KZuyvFOijtX4qbDQenGwIx2LVwv1ZPfkgZsaQzOo1A7E1sHv3+7MOLY71V6lNmDku+id9DIAavD1tdY72ITCIQLwcn6hUv+m8gEIOrpl7xfecIAvEVnXhlfbquGtaebSMgICAgaBR/AF2yboPNdvDUAAAAAElFTkSuQmCC"), url(../img/djdt_vertical.png); + opacity:0.5; +} + +#djDebug #djShowToolBarButton:hover { + background-color:#111; + border-top-color:#FFE761; + border-left-color:#FFE761; + border-bottom-color:#FFE761; + cursor:move; + opacity:1.0; +} + +#djDebug code { + display:block; + font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace; + font-size: 12px; + white-space:pre; + overflow:auto; +} + +#djDebug .djDebugOdd { + background-color:#f5f5f5; +} + +#djDebug .djdt-panelContent { + display:none; + position:fixed; + margin:0; + top:0; + right:200px; + bottom:0; + left:0px; + background-color:#eee; + color:#666; + z-index:100000000; +} + +#djDebug .djdt-panelContent > div { + border-bottom:1px solid #ddd; +} + +#djDebug .djDebugPanelTitle { + position:absolute; + background-color:#ffc; + color:#666; + padding-left:20px; + top:0; + right:0; + left:0; + height:50px; +} + +#djDebug .djDebugPanelTitle code { + display:inline; + font-size:inherit; +} + +#djDebug .djDebugPanelContent { + position:absolute; + top:50px; + right:0; + bottom:0; + left:0; + height:auto; + padding:5px 0 0 20px; +} + +#djDebug .djDebugPanelContent .djdt-loader { + display:block; + margin:80px auto; +} + +#djDebug .djDebugPanelContent .djdt-scroll { + height:100%; + overflow:auto; + display:block; + padding:0 10px 0 0; +} + +#djDebug h3 { + font-size:24px; + font-weight:normal; + line-height:50px; +} + +#djDebug h4 { + font-size:20px; + font-weight:bold; + margin-top:0.8em; +} + +#djDebug .djdt-panelContent table { + border:1px solid #ccc; + border-collapse:collapse; + width:100%; + background-color:#fff; + display:table; + margin-top:0.8em; + overflow: auto; +} +#djDebug .djdt-panelContent tbody td, +#djDebug .djdt-panelContent tbody th { + vertical-align:top; + padding:2px 3px; +} +#djDebug .djdt-panelContent tbody td.djdt-time { + text-align: center; +} + +#djDebug .djdt-panelContent thead th { + padding:1px 6px 1px 3px; + text-align:left; + font-weight:bold; + font-size:14px; + white-space: nowrap; +} +#djDebug .djdt-panelContent tbody th { + width:12em; + text-align:right; + color:#666; + padding-right:.5em; +} + +#djDebug .djTemplateContext { + background-color:#fff; +} + +/* +#djDebug .djdt-panelContent p a:hover, #djDebug .djdt-panelContent dd a:hover { + color:#111; + background-color:#ffc; +} + +#djDebug .djdt-panelContent p { + padding:0 5px; +} + +#djDebug .djdt-panelContent p, #djDebug .djdt-panelContent table, #djDebug .djdt-panelContent ol, #djDebug .djdt-panelContent ul, #djDebug .djdt-panelContent dl { + margin:5px 0 15px; + background-color:#fff; +} +#djDebug .djdt-panelContent table { + clear:both; + border:0; + padding:0; + margin:0; + border-collapse:collapse; + border-spacing:0; +} + +#djDebug .djdt-panelContent table a { + color:#000; + padding:2px 4px; +} +#djDebug .djdt-panelContent table a:hover { + background-color:#ffc; +} + +#djDebug .djdt-panelContent table th { + background-color:#333; + font-weight:bold; + color:#fff; + padding:3px 7px 3px; + text-align:left; + cursor:pointer; +} +#djDebug .djdt-panelContent table td { + padding:5px 10px; + font-size:14px; + background-color:#fff; + color:#000; + vertical-align:top; + border:0; +} +#djDebug .djdt-panelContent table tr.djDebugOdd td { + background-color:#eee; +} +*/ + +#djDebug .djdt-panelContent .djDebugClose { + display:block; + position:absolute; + top:4px; + right:15px; + height:40px; + width:40px; + background: no-repeat center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAQAAACQTsNJAAABuUlEQVR4Ab2WXeoaMRTFZxHz6pObcA0DeXUHhXktFl8LXYAPXYBLKhQGBOFqW3XS8YOW6vjHmnp6wWZyHU1maqHnQDAf/Ehu7twYhUQxdUixO/wr8ts3oeg9TQjCEx5R7SGvKCd4nPNsIyShD4QGf6QkBBkQWnrgg4zqS2fm01kbze3M3GFGjyBvCdLFqYRUySM1zLAOUXJ6dZAACcoPBOHkFpK5qY1BQBt5sExC0gAijEkriMuLfI9m8SqXNxbSd+QSbVSCnPtXyNjdCCoZ7PANF7C4/Y4tznASNzW+QqaP9lFcj4cLW4PY+vFepsSQ2Hbnp5vw2ShB231Cau72EkfUs53lC4R+YQkSXsBAiFdXc72IkupmDODDfKkhwKtdygUgHAuXw7gEIN7jCIQNsfc43sDuqlgsbC57A+u94q82nFVscv8Vy2Rbi72csGKQ+RPignvytGuZbPW0P6KNjvdpz97aIf3jLz/ArfuKXz9dCt7IojR9qihNAuUx33vL454grOqF+t2/F2rPk/H5pzaa2+Ynw3lIaOlh6BlVlDUCMlLND3pKhRdQUPof/1o4x9Qlxe6G/+T8BlqvQqkd4EyZAAAAAElFTkSuQmCC"), url(../img/close.png); +} + +#djDebug .djdt-panelContent .djDebugClose:hover { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACiUlEQVR4Ad2Yz2oTURSH+xCz7cqX6DMUZtudCxExigq2WhcKYtGFVLrwAboSKoVGxT+tJWpTa2lLTDsm6SSTjtZoIq0prf+2Hu8PcmHInJvJPYwuPPDBMDPn8DE5c+fcDEgjDENHMahwOwx2zg1IsE1wFXcVvoIM+J173L8hckrRUpAlLeSmITKsKNoKMHioJRUZU1DKjNmKTCUWDWpUL21RJbcAcIxz/chM9StyvVeh8rOHtH7nJi2dOc6Ba7gnSWY8ScQ1JVdfv6C1yQlegAH3+su5XjLDvUTKXNK77H0Ul4Bck0jZJJLhEry5GV1ULvNg1iSTiYlw64SfX0ShNEAtfp3pEhnhjJmekIJapqcyEhWZZt4OtuDqlXPUWHxKYXaGli+c1Ocpf/4E1Wfv0afcPK1dG+VyTW/TdFQk6Pdp7BfWSMdhtQIZSFDbe0s6DiqezVMJtIjTfXGnuv3b9Iib+RxF47C2Te3SJkUDsqZ81GZkHIgMdV+ora8YC62MnqbvH0Iyxa/WZ3pz+awxH7UZkSH9YaMolZfPdaJZZvd9XOJLU0sYQW1ucROJoCcOyh51x1G9ip4Ri1j9NLoxDaEbWPDTWDbrx/lHsZ740dilSKChBc1q+fp+3SyQjp/NBnoi1sB4KpLXl13QSo/n2GKFW1fpaKdG+8UNSEQbmPY2VulbWKfi5A0uFzUTFzR+ib/NFJSBWolLvKYd++i9WkhNxF9i35Y29/W9KB8DxDPJJU4EBP9wMPJFoyLmCetRUc8gPK5JRDOhIBOlJ9nE4Rn3yIdnwXYi2Crq7QSOU99OaGBNKTMu3XK63GQvADXcNDbhGcWeQAA5mf/ybwkOR3FM4XbAsSOt9wcLTn8FNtAKkQAAAABJRU5ErkJggg=="), url(../img/close_hover.png); +} + +#djDebug .djdt-panelContent .djDebugClose.djDebugBack { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACBUlEQVR4Ad2Y0WriQBSGfYjc7tW+hM8g5HbfYMHbxcXbhT6AF30AH6cXvRCEttK0JgZi0qhQaRNtNWV2fuiADicZcxirdOCn45mccz4mMyczbXDbeDx2pH5IuRD6n7YGR3UdkPBSaiQlSoQxPOMeA+S3VIxENRXD1wZIS2rAANA1RCwuSAdBLKtTF6RnCur7fjGZTLZJkhQQ+rAdANM7FORfVaA0Td/zPBdlDWN4xgDTNYG4Zc7T6TQjASqA4jjOKmBaVSA3lNN8Pi8Es8GXBkEuGqTNh2DDtCkQvU5gal+FpYZYZJ3RQH5RxPqaWG82qmuw02uGyoHcuyB9anfowZ6el+I2jITellkOu9gWH5UwJbupvwvimWZDgVzdeWLohyqpAlF2zE7dWfEUiKMPBkGwNxt6QmjwEKik+Ltnz9ZvpTCITcA4AGnqA1EUreFkgrm+fwSEsuO3spfCIDYB0gRIi9gtlVsWSVRSAOzaMSOw4zVSDbGp4nZGIPxXg6TWXo39xarsjMV6LtuXLmiz2cx6QUNMuqAZSvxqtbJW4hHLVOKVFvpDSZK8HPmjt6C+vn9OcAz4S4FA3hcejEasoyKmlnFUVK+DklsFAl2c9vDMuE6EYbhR1wn0bV8nlEAtLKvLvXK62smeK8RwbVzC21IpAyCF77f8twQlR+onEkLow8aN9x+oYk85YNJqYQAAAABJRU5ErkJggg=="), url(../img/back.png); +} + +#djDebug .djdt-panelContent .djDebugClose.djDebugBack:hover { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACLElEQVR4Ad2YT8sSURTG/RCzbdWX8DMIs23XMrBlTLiTSIKKIqgP4C6KQAuKsLCycqGLRHNsXqck2giStIiiRdDtPtABuz0zNw+XkAYe3vHce57zY/7cOfetaI/VahVZHbOKIZz/ilU02jcBBW9YZVaGC2OYg7nhQU5ZrVlhj9bIDQFSs5ooAFzN4KUFSWASWMm+INe8pvnSvJ1PzaLfg3COmB8G3n8Jcq7MKH14z4yvXjCD0yepMIY5HpiGDyQuSj56+cSMrrQ4ABHmZi/6ZTC1MpCUJb3u3oa5SsjlIKjFQeosYda5JaZ6mLt3OAxquiBsncieP4ZRCMGLrjMuyAlG7D4To2Yi5/44eWZYDdTeBWmzt8M1W95sm09Z+kd8dv0S4maY1EthCt6m9i5ITq8GAcHx+cN7KSogEqdXx3NVcgGJ3MF3R29+MCMpiOPbx40Uxd/f4q8uNgth4E1gIoBU3YHleOgYcJjvX78AQuL4LfFCGHgTkCpAau7A4umj0nuNIlIUALtxXBEcuI0kF950cTsoEO2tQdGAtyb8w4rfiof1cF5fvqDN73dCL2jwpAuaf4m/fD7UEg8v7xIv2rqTsme9cB+9AX1btuzre0bdBuh7krMMBMr/YWOUaVpF9BP7t4rSg3DFvua5xRJF8wddb/OMOfrmWbGdyKcT2U7gPPh2QgRqE1gN7ZYzZp29Qim8QmzC61YbBcAGuf/hvyW4IqvjKAjhHDGt309H4mp9BS17eAAAAABJRU5ErkJggg=="), url(../img/back_hover.png); +} + +#djDebug .djdt-panelContent dt, #djDebug .djdt-panelContent dd { + display:block; +} + +#djDebug .djdt-panelContent dt { + margin-top:0.75em; +} + +#djDebug .djdt-panelContent dd { + margin-left:10px; +} + +#djDebug a.toggleTemplate { + padding:4px; + background-color:#bbb; + -webkit-border-radius:3px; + -moz-border-radius:3px; + border-radius:3px; +} + +#djDebug a.toggleTemplate:hover { + padding:4px; + background-color:#444; + color:#ffe761; + -webkit-border-radius:3px; + -moz-border-radius:3px; + border-radius:3px; +} + + +#djDebug .djDebugSqlWrap { + position:relative; +} + +#djDebug .djDebugCollapsed { + display: none; + text-decoration: none; + color: #333; +} + +#djDebug .djDebugUncollapsed { + color: #333; + text-decoration: none; +} + +#djDebug .djUnselected { + display: none; +} +#djDebug tr.djHiddenByDefault { + display: none; +} +#djDebug tr.djSelected { + display: table-row; +} + +#djDebug .djDebugSql { + word-break:break-word; + z-index:100000002; +} + +#djDebug .djSQLDetailsDiv tbody th { + text-align: left; +} + +#djDebug .djSqlExplain td { + white-space: pre; +} + +#djDebug span.djDebugLineChart { + background-color:#777; + height:3px; + position:absolute; + bottom:0; + top:0; + left:0; + display:block; + z-index:1000000001; +} +#djDebug span.djDebugLineChartWarning { + background-color:#900; +} + +#djDebug .highlight { color:#000; } +#djDebug .highlight .err { color:#000; } /* Error */ +#djDebug .highlight .g { color:#000; } /* Generic */ +#djDebug .highlight .k { color:#000; font-weight:bold } /* Keyword */ +#djDebug .highlight .o { color:#000; } /* Operator */ +#djDebug .highlight .n { color:#000; } /* Name */ +#djDebug .highlight .mi { color:#000; font-weight:bold } /* Literal.Number.Integer */ +#djDebug .highlight .l { color:#000; } /* Literal */ +#djDebug .highlight .x { color:#000; } /* Other */ +#djDebug .highlight .p { color:#000; } /* Punctuation */ +#djDebug .highlight .m { color:#000; font-weight:bold } /* Literal.Number */ +#djDebug .highlight .s { color:#333 } /* Literal.String */ +#djDebug .highlight .w { color:#888888 } /* Text.Whitespace */ +#djDebug .highlight .il { color:#000; font-weight:bold } /* Literal.Number.Integer.Long */ +#djDebug .highlight .na { color:#333 } /* Name.Attribute */ +#djDebug .highlight .nt { color:#000; font-weight:bold } /* Name.Tag */ +#djDebug .highlight .nv { color:#333 } /* Name.Variable */ +#djDebug .highlight .s2 { color:#333 } /* Literal.String.Double */ +#djDebug .highlight .cp { color:#333 } /* Comment.Preproc */ + +#djDebug .djdt-timeline { + width: 30%; +} +#djDebug .djDebugTimeline { + position: relative; + height: 100%; + min-height: 100%; +} +#djDebug div.djDebugLineChart { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + vertical-align: middle; +} +#djDebug div.djDebugLineChart strong { + text-indent: -10000em; + display: block; + font-weight: normal; + vertical-align: middle; + background-color:#ccc; +} + +#djDebug div.djDebugLineChartWarning strong { + background-color:#900; +} + +#djDebug .djDebugInTransaction div.djDebugLineChart strong { + background-color: #d3ff82; +} +#djDebug .djDebugStartTransaction div.djDebugLineChart strong { + border-left: 1px solid #94b24d; +} +#djDebug .djDebugEndTransaction div.djDebugLineChart strong { + border-right: 1px solid #94b24d; +} + +#djDebug .djdt-panelContent ul.djdt-stats { + position: relative; + list-style-type: none; +} +#djDebug .djdt-panelContent ul.djdt-stats li { + width: 30%; + float: left; +} +#djDebug .djdt-panelContent ul.djdt-stats li strong.djdt-label { + display: block; +} +#djDebug .djdt-panelContent ul.djdt-stats li span.djdt-color { + height: 12px; + width: 3px; + display: inline-block; +} +#djDebug .djdt-panelContent ul.djdt-stats li span.djdt-info { + display: block; + padding-left: 5px; +} + +#djDebug .djdt-panelContent thead th { + white-space: nowrap; +} +#djDebug .djDebugRowWarning .djdt-time { + color: red; +} +#djdebug .djdt-panelContent table .djdt-toggle { + width: 14px; + padding-top: 3px; +} +#djDebug .djdt-panelContent table .djdt-actions { + min-width: 70px; + white-space: nowrap; +} +#djdebug .djdt-panelContent table .djdt-color { + width: 3px; +} +#djdebug .djdt-panelContent table .djdt-color span { + width: 3px; + height: 12px; + overflow: hidden; + padding: 0; +} +#djDebug .djToggleSwitch { + text-decoration: none; + border: 1px solid #999; + height: 12px; + width: 12px; + line-height: 12px; + text-align: center; + color: #777; + display: inline-block; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF', endColorstr='#DCDCDC'); /* for IE */ + background: -webkit-gradient(linear, left top, left bottom, from(#FFF), to(#DCDCDC)); /* for webkit browsers */ + background:-moz-linear-gradient(center top , #FFFFFF 0pt, #DCDCDC 100%) repeat scroll 0 0 transparent; +} +#djDebug .djNoToggleSwitch { + height: 14px; + width: 14px; + display: inline-block; +} + +#djDebug .djSQLDetailsDiv { + margin-top:0.8em; +} +#djDebug pre { + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS-3 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + color: #555; + border:1px solid #ccc; + border-collapse:collapse; + background-color:#fff; + display:block; + overflow: auto; + padding:2px 3px; + margin-bottom: 3px; + font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace; +} +#djDebug .djdt-stack span { + color: #000; + font-weight: bold; +} +#djDebug .djdt-stack span.djdt-path { + color: #777; + font-weight: normal; +} +#djDebug .djdt-stack span.djdt-code { + font-weight: normal; +} + +#djDebug .djdt-width-20 { + width: 20%; +} +#djDebug .djdt-width-60 { + width: 60%; +} +#djDebug .djdt-highlighted { + background-color: lightgrey; +} +.djdt-hidden { + display: none; +} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/ajax-loader.gif b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/ajax-loader.gif new file mode 100644 index 0000000..a7c3f2b Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/ajax-loader.gif differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/back.png b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/back.png new file mode 100644 index 0000000..aef96c1 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/back.png differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/back_hover.png b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/back_hover.png new file mode 100644 index 0000000..2ce3eda Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/back_hover.png differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/close.png b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/close.png new file mode 100644 index 0000000..ce4317f Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/close.png differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/close_hover.png b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/close_hover.png new file mode 100644 index 0000000..6b4d96e Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/close_hover.png differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/djdt_vertical.png b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/djdt_vertical.png new file mode 100644 index 0000000..a05d3af Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/djdt_vertical.png differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/indicator.png b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/indicator.png new file mode 100644 index 0000000..828a6c0 Binary files /dev/null and b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/img/indicator.png differ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_existing.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_existing.js new file mode 100644 index 0000000..085495a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_existing.js @@ -0,0 +1 @@ +var djdt = {jQuery: jQuery}; diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_post.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_post.js new file mode 100644 index 0000000..9e4c8bc --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_post.js @@ -0,0 +1,4 @@ +var djdt = {jQuery: jQuery.noConflict(true)}; +if (window.define) { + window.define.amd = _djdt_define_amd_backup; +} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_pre.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_pre.js new file mode 100644 index 0000000..cca2a0f --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/jquery_pre.js @@ -0,0 +1,5 @@ +var _djdt_define_amd_backup; +if (window.define) { + _djdt_define_amd_backup = window.define.amd; + window.define.amd = undefined; +} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.js new file mode 100644 index 0000000..f167b5b --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.js @@ -0,0 +1,330 @@ +(function () { + var $$ = { + on: function(root, eventName, selector, fn) { + root.addEventListener(eventName, function(event) { + var target = event.target.closest(selector); + if (root.contains(target)) { + fn.call(target, event); + } + }); + }, + show: function(element) { + element.style.display = 'block'; + }, + hide: function(element) { + element.style.display = 'none'; + }, + toggle: function(element, value) { + if (value) { + $$.show(element); + } else { + $$.hide(element); + } + }, + visible: function(element) { + style = getComputedStyle(element); + return style.display !== 'none'; + }, + executeScripts: function(root) { + root.querySelectorAll('script').forEach(function(e) { + var clone = document.createElement('script'); + clone.src = e.src; + root.appendChild(clone); + }); + }, + }; + + var onKeyDown = function(event) { + if (event.keyCode == 27) { + djdt.hide_one_level(); + } + }; + + var ajax = function(url, init) { + init = Object.assign({credentials: 'same-origin'}, init); + return fetch(url, init).then(function(response) { + if (response.ok) { + return response.text(); + } else { + var win = document.querySelector('#djDebugWindow'); + win.innerHTML = '

'+response.status+': '+response.statusText+'

'; + $$.show(win); + return Promise.reject(); + } + }); + }; + + var djdt = { + handleDragged: false, + events: { + ready: [] + }, + isReady: false, + init: function() { + var djDebug = document.querySelector('#djDebug'); + $$.show(djDebug); + $$.on(djDebug.querySelector('#djDebugPanelList'), 'click', 'li a', function(event) { + event.preventDefault(); + if (!this.className) { + return; + } + var current = djDebug.querySelector('#' + this.className); + if ($$.visible(current)) { + djdt.hide_panels(); + } else { + djdt.hide_panels(); + + $$.show(current); + this.parentElement.classList.add('djdt-active'); + + var inner = current.querySelector('.djDebugPanelContent .djdt-scroll'), + store_id = djDebug.getAttribute('data-store-id'); + if (store_id && inner.children.length === 0) { + var url = djDebug.getAttribute('data-render-panel-url'); + var url_params = new URLSearchParams(); + url_params.append('store_id', store_id); + url_params.append('panel_id', this.className); + url += '?' + url_params.toString(); + ajax(url).then(function(body) { + inner.previousElementSibling.remove(); // Remove AJAX loader + inner.innerHTML = body; + $$.executeScripts(inner); + }); + } + } + }); + $$.on(djDebug, 'click', 'a.djDebugClose', function(event) { + event.preventDefault(); + djdt.hide_one_level(); + }); + $$.on(djDebug, 'click', '.djDebugPanelButton input[type=checkbox]', function() { + djdt.cookie.set(this.getAttribute('data-cookie'), this.checked ? 'on' : 'off', { + path: '/', + expires: 10 + }); + }); + + // Used by the SQL and template panels + $$.on(djDebug, 'click', '.remoteCall', function(event) { + event.preventDefault(); + + var name = this.tagName.toLowerCase(); + var ajax_data = {}; + + if (name == 'button') { + var form = this.closest('form'); + ajax_data.url = this.getAttribute('formaction'); + + if (form) { + ajax_data.body = new FormData(form); + ajax_data.method = form.getAttribute('method') || 'POST'; + } + } + + if (name == 'a') { + ajax_data.url = this.getAttribute('href'); + } + + ajax(ajax_data.url, ajax_data).then(function(body) { + var win = djDebug.querySelector('#djDebugWindow'); + win.innerHTML = body; + $$.executeScripts(win); + $$.show(win); + }); + }); + + // Used by the cache, profiling and SQL panels + $$.on(djDebug, 'click', 'a.djToggleSwitch', function(event) { + event.preventDefault(); + var self = this; + var id = this.getAttribute('data-toggle-id'); + var open_me = this.textContent == this.getAttribute('data-toggle-open'); + if (id === '' || !id) { + return; + } + var name = this.getAttribute('data-toggle-name'); + var container = this.closest('.djDebugPanelContent').querySelector('#' + name + '_' + id); + container.querySelectorAll('.djDebugCollapsed').forEach(function(e) { + $$.toggle(e, open_me); + }); + container.querySelectorAll('.djDebugUncollapsed').forEach(function(e) { + $$.toggle(e, !open_me); + }); + this.closest('.djDebugPanelContent').querySelectorAll('.djToggleDetails_' + id).forEach(function(e) { + if (open_me) { + e.classList.add('djSelected'); + e.classList.remove('djUnselected'); + self.textContent = self.getAttribute('data-toggle-close'); + } else { + e.classList.remove('djSelected'); + e.classList.add('djUnselected'); + self.textContent = self.getAttribute('data-toggle-open'); + } + var switch_ = e.querySelector('.djToggleSwitch') + if (switch_) switch_.textContent = self.textContent; + }); + }); + + djDebug.querySelector('#djHideToolBarButton').addEventListener('click', function(event) { + event.preventDefault(); + djdt.hide_toolbar(true); + }); + djDebug.querySelector('#djShowToolBarButton').addEventListener('click', function(event) { + event.preventDefault(); + if (!djdt.handleDragged) { + djdt.show_toolbar(); + } + }); + var startPageY, baseY; + var handle = document.querySelector('#djDebugToolbarHandle'); + var onHandleMove = function(event) { + // Chrome can send spurious mousemove events, so don't do anything unless the + // cursor really moved. Otherwise, it will be impossible to expand the toolbar + // due to djdt.handleDragged being set to true. + if (djdt.handleDragged || event.pageY != startPageY) { + var top = baseY + event.pageY; + + if (top < 0) { + top = 0; + } else if (top + handle.offsetHeight > window.innerHeight) { + top = window.innerHeight - handle.offsetHeight; + } + + handle.style.top = top + 'px'; + djdt.handleDragged = true; + } + }; + djDebug.querySelector('#djShowToolBarButton').addEventListener('mousedown', function(event) { + event.preventDefault(); + startPageY = event.pageY; + baseY = handle.offsetTop - startPageY; + document.addEventListener('mousemove', onHandleMove); + }); + document.addEventListener('mouseup', function (event) { + document.removeEventListener('mousemove', onHandleMove); + if (djdt.handleDragged) { + event.preventDefault(); + djdt.cookie.set('djdttop', handle.offsetTop, { + path: '/', + expires: 10 + }); + setTimeout(function () { + djdt.handleDragged = false; + }, 10); + } + }); + if (djdt.cookie.get('djdt') == 'hide') { + djdt.hide_toolbar(false); + } else { + djdt.show_toolbar(); + } + djdt.isReady = true; + djdt.events.ready.forEach(function(callback) { + callback(djdt); + }); + }, + hide_panels: function() { + $$.hide(djDebug.querySelector('#djDebugWindow')); + djDebug.querySelectorAll('.djdt-panelContent').forEach(function(e) { + $$.hide(e); + }); + djDebug.querySelectorAll('#djDebugToolbar li').forEach(function(e) { + e.classList.remove('djdt-active'); + }); + }, + hide_toolbar: function(setCookie) { + djdt.hide_panels(); + $$.hide(djDebug.querySelector('#djDebugToolbar')); + + var handle = document.querySelector('#djDebugToolbarHandle'); + $$.show(handle); + // set handle position + var handleTop = djdt.cookie.get('djdttop'); + if (handleTop) { + handleTop = Math.min(handleTop, window.innerHeight - handle.offsetHeight); + handle.style.top = handleTop + 'px'; + } + + document.removeEventListener('keydown', onKeyDown); + + if (setCookie) { + djdt.cookie.set('djdt', 'hide', { + path: '/', + expires: 10 + }); + } + }, + hide_one_level: function(skipDebugWindow) { + if ($$.visible(djDebug.querySelector('#djDebugWindow'))) { + $$.hide(djDebug.querySelector('#djDebugWindow')); + } else if (djDebug.querySelector('#djDebugToolbar li.djdt-active')) { + djdt.hide_panels(); + } else { + djdt.hide_toolbar(true); + } + }, + show_toolbar: function() { + document.addEventListener('keydown', onKeyDown); + $$.hide(djDebug.querySelector('#djDebugToolbarHandle')); + $$.show(djDebug.querySelector('#djDebugToolbar')); + djdt.cookie.set('djdt', 'show', { + path: '/', + expires: 10 + }); + }, + ready: function(callback){ + if (djdt.isReady) { + callback(djdt); + } else { + djdt.events.ready.push(callback); + } + }, + cookie: { + get: function(key){ + if (document.cookie.indexOf(key) === -1) return null; + + var cookieArray = document.cookie.split('; '), + cookies = {}; + + cookieArray.forEach(function(e){ + var parts = e.split('='); + cookies[ parts[0] ] = parts[1]; + }); + + return cookies[ key ]; + }, + set: function(key, value, options){ + options = options || {}; + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setDate(t.getDate() + days); + } + + document.cookie = [ + encodeURIComponent(key) + '=' + String(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join(''); + + return value; + } + }, + applyStyle: function(name) { + var selector = '#djDebug [data-' + name + ']'; + document.querySelectorAll(selector).forEach(function(element) { + element.style[name] = element.getAttribute('data-' + name); + }); + } + }; + window.djdt = { + show_toolbar: djdt.show_toolbar, + hide_toolbar: djdt.hide_toolbar, + close: djdt.hide_one_level, + cookie: djdt.cookie, + applyStyle: djdt.applyStyle + }; + document.addEventListener('DOMContentLoaded', djdt.init); +})(); diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.profiling.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.profiling.js new file mode 100644 index 0000000..5823cfb --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.profiling.js @@ -0,0 +1,3 @@ +(function () { + djdt.applyStyle('padding-left'); +})(); diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.sql.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.sql.js new file mode 100644 index 0000000..65093c8 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.sql.js @@ -0,0 +1,5 @@ +(function () { + djdt.applyStyle('background-color'); + djdt.applyStyle('left'); + djdt.applyStyle('width'); +})(); diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.template.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.template.js new file mode 100644 index 0000000..01ac8a4 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.template.js @@ -0,0 +1,11 @@ +(function ($) { + var uarr = String.fromCharCode(0x25b6), + darr = String.fromCharCode(0x25bc); + + $('a.djTemplateShowContext').on('click', function() { + var arrow = $(this).children('.toggleArrow'); + arrow.html(arrow.html() == uarr ? darr : uarr); + $(this).parent().next().toggle(); + return false; + }); +})(djdt.jQuery); diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.timer.js b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.timer.js new file mode 100644 index 0000000..b695994 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.timer.js @@ -0,0 +1,52 @@ +(function () { + // Browser timing remains hidden unless we can successfully access the performance object + var perf = window.performance || window.msPerformance || + window.webkitPerformance || window.mozPerformance; + if (!perf) + return; + + var rowCount = 0, + timingOffset = perf.timing.navigationStart, + timingEnd = perf.timing.loadEventEnd, + totalTime = timingEnd - timingOffset; + function getLeft(stat) { + return ((perf.timing[stat] - timingOffset) / (totalTime)) * 100.0; + } + function getCSSWidth(stat, endStat) { + var width = ((perf.timing[endStat] - perf.timing[stat]) / (totalTime)) * 100.0; + // Calculate relative percent (same as sql panel logic) + width = 100.0 * width / (100.0 - getLeft(stat)); + return (width < 1) ? "2px" : width + "%"; + } + function addRow(stat, endStat) { + rowCount++; + var row = document.createElement('tr'); + row.className = (rowCount % 2) ? 'djDebugOdd' : 'djDebugEven'; + if (endStat) { + // Render a start through end bar + row.innerHTML = '' + stat.replace('Start', '') + '' + + '
 
' + + '' + (perf.timing[stat] - timingOffset) + ' (+' + (perf.timing[endStat] - perf.timing[stat]) + ')'; + row.querySelector('strong').style.width = getCSSWidth(stat, endStat); + } else { + // Render a point in time + row.innerHTML = '' + stat + '' + + '
 
' + + '' + (perf.timing[stat] - timingOffset) + ''; + row.querySelector('strong').style.width = '2px'; + } + row.querySelector('.djDebugLineChart').style.left = getLeft(stat) + '%'; + document.querySelector('#djDebugBrowserTimingTableBody').appendChild(row); + } + + // This is a reasonably complete and ordered set of timing periods (2 params) and events (1 param) + addRow('domainLookupStart', 'domainLookupEnd'); + addRow('connectStart', 'connectEnd'); + addRow('requestStart', 'responseEnd'); // There is no requestEnd + addRow('responseStart', 'responseEnd'); + addRow('domLoading', 'domComplete'); // Spans the events below + addRow('domInteractive'); + addRow('domContentLoadedEventStart', 'domContentLoadedEventEnd'); + addRow('loadEventStart', 'loadEventEnd'); + document.querySelector('#djDebugBrowserTiming').classList.remove('djdt-hidden'); +})(); diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/base.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/base.html new file mode 100644 index 0000000..3d4740c --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/base.html @@ -0,0 +1,63 @@ +{% load i18n %}{% load static %} + + + +
+
+ +
+
+ « +
+ {% for panel in toolbar.panels %} + {% if panel.has_content and panel.enabled %} +
+
+ +

{{ panel.title|safe }}

+
+
+ {% if toolbar.store_id %} + loading +
+ {% else %} +
{{ panel.content }}
+ {% endif %} +
+
+ {% endif %} + {% endfor %} +
+
diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/cache.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/cache.html new file mode 100644 index 0000000..39c9089 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/cache.html @@ -0,0 +1,69 @@ +{% load i18n %} +

{% trans "Summary" %}

+ + + + + + + + + + + + + + + + + +
{% trans "Total calls" %}{% trans "Total time" %}{% trans "Cache hits" %}{% trans "Cache misses" %}
{{ total_calls }}{{ total_time }} ms{{ hits }}{{ misses }}
+

{% trans "Commands" %}

+ + + + {% for name in counts.keys %} + + {% endfor %} + + + + + {% for value in counts.values %} + + {% endfor %} + + +
{{ name }}
{{ value }}
+{% if calls %} +

{% trans "Calls" %}

+ + + + + + + + + + + + {% for call in calls %} + + + + + + + + + + + + + {% endfor %} + +
{% trans "Time (ms)" %}{% trans "Type" %}{% trans "Arguments" %}{% trans "Keyword arguments" %}{% trans "Backend" %}
+ + + {{ call.time|floatformat:"4" }}{{ call.name|escape }}{{ call.args|escape }}{{ call.kwargs|escape }}{{ call.backend }}
{{ call.trace }}
+{% endif %} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/headers.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/headers.html new file mode 100644 index 0000000..6b43e94 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/headers.html @@ -0,0 +1,60 @@ +{% load i18n %} + +

{% trans "Request headers" %}

+ + + + + + + + + + {% for key, value in request_headers.items %} + + + + + {% endfor %} + +
{% trans "Key" %}{% trans "Value" %}
{{ key|escape }}{{ value|escape }}
+ +

{% trans "Response headers" %}

+ + + + + + + + + + {% for key, value in response_headers.items %} + + + + + {% endfor %} + +
{% trans "Key" %}{% trans "Value" %}
{{ key|escape }}{{ value|escape }}
+ +

{% trans "WSGI environ" %}

+ +

{% trans "Since the WSGI environ inherits the environment of the server, only a significant subset is shown below." %}

+ + + + + + + + + + {% for key, value in environ.items %} + + + + + {% endfor %} + +
{% trans "Key" %}{% trans "Value" %}
{{ key|escape }}{{ value|escape }}
diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/logging.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/logging.html new file mode 100644 index 0000000..3908f4f --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/logging.html @@ -0,0 +1,28 @@ +{% load i18n %} +{% if records %} + + + + + + + + + + + + {% for record in records %} + + + + + + + + {% endfor %} + +
{% trans "Level" %}{% trans "Time" %}{% trans "Channel" %}{% trans "Message" %}{% trans "Location" %}
{{ record.level }}{{ record.time|date:"h:i:s m/d/Y" }}{{ record.channel|default:"-" }}{{ record.message|linebreaksbr }}{{ record.file }}:{{ record.line }}
+{% else %} +

{% trans "No messages logged" %}.

+{% endif %} + diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/profiling.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/profiling.html new file mode 100644 index 0000000..93f7daa --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/profiling.html @@ -0,0 +1,36 @@ +{% load i18n %}{% load static %} + + + + + + + + + + + + + {% for call in func_list %} + + + + + + + + + {% endfor %} + +
{% trans "Call" %}{% trans "CumTime" %}{% trans "Per" %}{% trans "TotTime" %}{% trans "Per" %}{% trans "Count" %}
+
+ {% if call.has_subfuncs %} + - + {% else %} + + {% endif %} + {{ call.func_std_string }} +
+
{{ call.cumtime|floatformat:3 }}{{ call.cumtime_per_call|floatformat:3 }}{{ call.tottime|floatformat:3 }}{{ call.tottime_per_call|floatformat:3 }}{{ call.count }}
+ + diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/request.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/request.html new file mode 100644 index 0000000..9d18d08 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/request.html @@ -0,0 +1,124 @@ +{% load i18n %} + +

{% trans "View information" %}

+ + + + + + + + + + + + + + + + + +
{% trans "View function" %}{% trans "Arguments" %}{% trans "Keyword arguments" %}{% trans "URL name" %}
{{ view_func }}{{ view_args|pprint }}{{ view_kwargs|pprint }}{{ view_urlname }}
+ +{% if cookies %} +

{% trans "Cookies" %}

+ + + + + + + + + + + + + {% for key, value in cookies %} + + + + + {% endfor %} + +
{% trans "Variable" %}{% trans "Value" %}
{{ key|pprint }}{{ value|pprint }}
+{% else %} +

{% trans "No cookies" %}

+{% endif %} + +{% if session %} +

{% trans "Session data" %}

+ + + + + + + + + + + + + {% for key, value in session %} + + + + + {% endfor %} + +
{% trans "Variable" %}{% trans "Value" %}
{{ key|pprint }}{{ value|pprint }}
+{% else %} +

{% trans "No session data" %}

+{% endif %} + +{% if get %} +

{% trans "GET data" %}

+ + + + + + + + + + + + + {% for key, value in get %} + + + + + {% endfor %} + +
{% trans "Variable" %}{% trans "Value" %}
{{ key|pprint }}{{ value|pprint }}
+{% else %} +

{% trans "No GET data" %}

+{% endif %} + +{% if post %} +

{% trans "POST data" %}

+ + + + + + + + + + + + {% for key, value in post %} + + + + + {% endfor %} + +
{% trans "Variable" %}{% trans "Value" %}
{{ key|pprint }}{{ value|pprint }}
+{% else %} +

{% trans "No POST data" %}

+{% endif %} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/settings.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/settings.html new file mode 100644 index 0000000..f6b5afe --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/settings.html @@ -0,0 +1,17 @@ +{% load i18n %} + + + + + + + + + {% for name, value in settings.items %} + + + + + {% endfor %} + +
{% trans "Setting" %}{% trans "Value" %}
{{ name }}{{ value|pprint }}
diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/signals.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/signals.html new file mode 100644 index 0000000..ac32f37 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/signals.html @@ -0,0 +1,19 @@ +{% load i18n %} + + + + + + + + + + {% for name, signal, receivers in signals %} + + + + + + {% endfor %} + +
{% trans "Signal" %}{% trans "Providing" %}{% trans "Receivers" %}
{{ name|escape }}{{ signal.providing_args|join:", " }}{{ receivers|join:", " }}
diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql.html new file mode 100644 index 0000000..37074a4 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql.html @@ -0,0 +1,117 @@ +{% load i18n l10n %}{% load static %} +
+
    + {% for alias, info in databases %} +
  • +   {{ alias }} + {{ info.time_spent|floatformat:"2" }} ms ({% blocktrans count info.num_queries as num %}{{ num }} query{% plural %}{{ num }} queries{% endblocktrans %} + {% if info.similar_count %} + {% blocktrans with count=info.similar_count trimmed %} + including {{ count }} similar + {% endblocktrans %} + {% if info.duplicate_count %} + {% blocktrans with dupes=info.duplicate_count trimmed %} + and {{ dupes }} duplicates + {% endblocktrans %} + {% endif %} + {% endif %}) +
  • + {% endfor %} +
+
+ +{% if queries %} + + + + + + + + + + + + {% for query in queries %} + + + + + + + + + + + + + {% endfor %} + +
 {% trans "Query" %}{% trans "Timeline" %}{% trans "Time (ms)" %}{% trans "Action" %}
  + + + +
+
{{ query.sql|safe }}
+
+ {% if query.similar_count %} + +   + {% blocktrans with count=query.similar_count %}{{ count }} similar queries.{% endblocktrans %} + + {% endif %} + {% if query.duplicate_count %} + +   + {% blocktrans with dupes=query.duplicate_count %}Duplicated {{ dupes }} times.{% endblocktrans %} + + {% endif %} +
+
{{ query.width_ratio }}%
+
+ {{ query.duration|floatformat:"2" }} + + + {% if query.params %} + {% if query.is_select %} +
+ {{ query.form }} + + + + + {% if query.vendor == 'mysql' %} + + {% endif %} +
+ {% endif %} + {% endif %} +
+
+

{% trans "Connection:" %} {{ query.alias }}

+ {% if query.iso_level %} +

{% trans "Isolation level:" %} {{ query.iso_level }}

+ {% endif %} + {% if query.trans_status %} +

{% trans "Transaction status:" %} {{ query.trans_status }}

+ {% endif %} + {% if query.stacktrace %} +
{{ query.stacktrace }}
+ {% endif %} + {% if query.template_info %} + + {% for line in query.template_info.context %} + + + + + {% endfor %} +
{{ line.num }}{{ line.content }}
+

{{ query.template_info.name|default:_("(unknown)") }}

+ {% endif %} +
+
+{% else %} +

{% trans "No SQL queries were recorded during this request." %}

+{% endif %} + + diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html new file mode 100644 index 0000000..c7651e0 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html @@ -0,0 +1,37 @@ +{% load i18n %}{% load static %} +
+ +

{% trans "SQL explained" %}

+
+
+
+
+
{% trans "Executed SQL" %}
+
{{ sql|safe }}
+
{% trans "Time" %}
+
{{ duration }} ms
+
{% trans "Database" %}
+
{{ alias }}
+
+ + + + {% for h in headers %} + + {% endfor %} + + + + {% for row in result %} + + {% for column in row %} + + {% endfor %} + + {% endfor %} + +
{{ h|upper }}
{{ column|escape }}
+
+
+ + diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html new file mode 100644 index 0000000..5a07fee --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html @@ -0,0 +1,44 @@ +{% load i18n %}{% load static %} +
+ +

{% trans "SQL profiled" %}

+
+
+
+ {% if result %} +
+
{% trans "Executed SQL" %}
+
{{ sql|safe }}
+
{% trans "Time" %}
+
{{ duration }} ms
+
{% trans "Database" %}
+
{{ alias }}
+
+ + + + {% for h in headers %} + + {% endfor %} + + + + {% for row in result %} + + {% for column in row %} + + {% endfor %} + + {% endfor %} + +
{{ h|upper }}
{{ column|escape }}
+ {% else %} +
+
{% trans "Error" %}
+
{{ result_error }}
+
+ {% endif %} +
+
+ + diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_select.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_select.html new file mode 100644 index 0000000..75b1a84 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/sql_select.html @@ -0,0 +1,41 @@ +{% load i18n %}{% load static %} +
+ +

{% trans "SQL selected" %}

+
+
+
+
+
{% trans "Executed SQL" %}
+
{{ sql|safe }}
+
{% trans "Time" %}
+
{{ duration }} ms
+
{% trans "Database" %}
+
{{ alias }}
+
+ {% if result %} + + + + {% for h in headers %} + + {% endfor %} + + + + {% for row in result %} + + {% for column in row %} + + {% endfor %} + + {% endfor %} + +
{{ h|upper }}
{{ column|escape }}
+ {% else %} +

{% trans "Empty set" %}

+ {% endif %} +
+
+ + diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html new file mode 100644 index 0000000..d9d8150 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html @@ -0,0 +1,56 @@ +{% load i18n %} + +

{% blocktrans count staticfiles_dirs|length as dirs_count %}Static file path{% plural %}Static file paths{% endblocktrans %}

+{% if staticfiles_dirs %} +
    + {% for prefix, staticfiles_dir in staticfiles_dirs %} +
  1. {{ staticfiles_dir }}{% if prefix %} {% blocktrans %}(prefix {{ prefix }}){% endblocktrans %}{% endif %}
  2. + {% endfor %} +
+{% else %} +

{% trans "None" %}

+{% endif %} + +

{% blocktrans count staticfiles_apps|length as apps_count %}Static file app{% plural %}Static file apps{% endblocktrans %}

+{% if staticfiles_apps %} +
    + {% for static_app in staticfiles_apps %} +
  1. {{ static_app }}
  2. + {% endfor %} +
+{% else %} +

{% trans "None" %}

+{% endif %} + +

{% blocktrans count staticfiles|length as staticfiles_count %}Static file{% plural %}Static files{% endblocktrans %}

+{% if staticfiles %} +
+{% for staticfile in staticfiles %} +
{{ staticfile }}
+
{{ staticfile.real_path }}
+{% endfor %} +
+{% else %} +

{% trans "None" %}

+{% endif %} + + +{% for finder, payload in staticfiles_finders.items %} +

{{ finder }} ({% blocktrans count payload|length as payload_count %}{{ payload_count }} file{% plural %}{{ payload_count }} files{% endblocktrans %})

+ + + + + + + + + {% for path, real_path in payload %} + + + + + {% endfor %} + +
{% trans 'Path' %}{% trans 'Location' %}
{{ path }}{{ real_path }}
+{% endfor %} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/template_source.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/template_source.html new file mode 100644 index 0000000..7914f2e --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/template_source.html @@ -0,0 +1,14 @@ +{% load i18n %} +
+ +

{% trans "Template source:" %} {{ template_name }}

+
+
+
+ {% if not source.pygmentized %} + {{ source }} + {% else %} + {{ source }} + {% endif %} +
+
diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/templates.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/templates.html new file mode 100644 index 0000000..fcfa2d6 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/templates.html @@ -0,0 +1,48 @@ +{% load i18n %}{% load static %} +

{% blocktrans count template_dirs|length as template_count %}Template path{% plural %}Template paths{% endblocktrans %}

+{% if template_dirs %} +
    + {% for template in template_dirs %} +
  1. {{ template }}
  2. + {% endfor %} +
+{% else %} +

{% trans "None" %}

+{% endif %} + +

{% blocktrans count templates|length as template_count %}Template{% plural %}Templates{% endblocktrans %}

+{% if templates %} +
+{% for template in templates %} +
{{ template.template.name|addslashes }}
+
{{ template.template.origin_name|addslashes }}
+ {% if template.context %} +
+
+ {% trans "Toggle context" %} + {{ template.context }} +
+
+ {% endif %} +{% endfor %} +
+{% else %} +

{% trans "None" %}

+{% endif %} + +

{% blocktrans count context_processors|length as context_processors_count %}Context processor{% plural %}Context processors{% endblocktrans %}

+{% if context_processors %} +
+{% for key, value in context_processors.items %} +
{{ key|escape }}
+
+
+ {% trans "Toggle context" %} + {{ value|escape }} +
+
+{% endfor %} +
+{% else %} +

{% trans "None" %}

+{% endif %} diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/timer.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/timer.html new file mode 100644 index 0000000..2aa039a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/timer.html @@ -0,0 +1,44 @@ +{% load i18n %}{% load static %} +

{% trans "Resource usage" %}

+ + + + + + + + + + + + + {% for key, value in rows %} + + + + + {% endfor %} + +
{% trans "Resource" %}{% trans "Value" %}
{{ key|escape }}{{ value|escape }}
+ + +
+

{% trans "Browser timing" %}

+ + + + + + + + + + + + + + + +
{% trans "Timing attribute" %}{% trans "Timeline" %}{% trans "Milliseconds since navigation start (+length)" %}
+
+ diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/versions.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/versions.html new file mode 100644 index 0000000..dbc2061 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/panels/versions.html @@ -0,0 +1,24 @@ +{% load i18n %} + + + + + + + + + + + + + + + {% for package, name, version in versions %} + + + + + + {% endfor %} + +
{% trans "Package" %}{% trans "Name" %}{% trans "Version" %}
{{ package }}{{ name }}{{ version }}
diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/redirect.html b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/redirect.html new file mode 100644 index 0000000..365fb48 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/redirect.html @@ -0,0 +1,16 @@ +{% load i18n %} + + + + + +

{{ status_line }}

+

{% trans "Location:" %} {{ redirect_to }}

+

+ {% trans "The Django Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal." %} +

+ + + diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/templatetags/__init__.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/toolbar.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/toolbar.py new file mode 100644 index 0000000..21415b5 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/toolbar.py @@ -0,0 +1,136 @@ +""" +The main DebugToolbar class that loads and renders the Toolbar. +""" + +from __future__ import absolute_import, unicode_literals + +import uuid +from collections import OrderedDict + +from django.apps import apps +from django.conf.urls import url +from django.core.exceptions import ImproperlyConfigured +from django.template import TemplateSyntaxError +from django.template.loader import render_to_string +from django.utils.module_loading import import_string + +from debug_toolbar import settings as dt_settings + + +class DebugToolbar(object): + + def __init__(self, request): + self.request = request + self.config = dt_settings.get_config().copy() + self._panels = OrderedDict() + for panel_class in self.get_panel_classes(): + panel_instance = panel_class(self) + self._panels[panel_instance.panel_id] = panel_instance + self.stats = {} + self.server_timing_stats = {} + self.store_id = None + + # Manage panels + + @property + def panels(self): + """ + Get a list of all available panels. + """ + return list(self._panels.values()) + + @property + def enabled_panels(self): + """ + Get a list of panels enabled for the current request. + """ + return [panel for panel in self._panels.values() if panel.enabled] + + def get_panel_by_id(self, panel_id): + """ + Get the panel with the given id, which is the class name by default. + """ + return self._panels[panel_id] + + # Handle rendering the toolbar in HTML + + def render_toolbar(self): + """ + Renders the overall Toolbar with panels inside. + """ + if not self.should_render_panels(): + self.store() + try: + context = {'toolbar': self} + return render_to_string('debug_toolbar/base.html', context) + except TemplateSyntaxError: + if not apps.is_installed('django.contrib.staticfiles'): + raise ImproperlyConfigured( + "The debug toolbar requires the staticfiles contrib app. " + "Add 'django.contrib.staticfiles' to INSTALLED_APPS and " + "define STATIC_URL in your settings.") + else: + raise + + # Handle storing toolbars in memory and fetching them later on + + _store = OrderedDict() + + def should_render_panels(self): + render_panels = self.config['RENDER_PANELS'] + if render_panels is None: + render_panels = self.request.META['wsgi.multiprocess'] + return render_panels + + def store(self): + self.store_id = uuid.uuid4().hex + cls = type(self) + cls._store[self.store_id] = self + for _ in range(len(cls._store) - self.config['RESULTS_CACHE_SIZE']): + try: + # collections.OrderedDict + cls._store.popitem(last=False) + except TypeError: + # django.utils.datastructures.SortedDict + del cls._store[cls._store.keyOrder[0]] + + @classmethod + def fetch(cls, store_id): + return cls._store.get(store_id) + + # Manually implement class-level caching of panel classes and url patterns + # because it's more obvious than going through an abstraction. + + _panel_classes = None + + @classmethod + def get_panel_classes(cls): + if cls._panel_classes is None: + # Load panels in a temporary variable for thread safety. + panel_classes = [ + import_string(panel_path) + for panel_path in dt_settings.get_panels() + ] + cls._panel_classes = panel_classes + return cls._panel_classes + + _urlpatterns = None + + @classmethod + def get_urls(cls): + if cls._urlpatterns is None: + from . import views + # Load URLs in a temporary variable for thread safety. + # Global URLs + urlpatterns = [ + url(r'^render_panel/$', views.render_panel, name='render_panel'), + ] + # Per-panel URLs + for panel_class in cls.get_panel_classes(): + urlpatterns += panel_class.get_urls() + cls._urlpatterns = urlpatterns + return cls._urlpatterns + + +app_name = 'djdt' +urlpatterns = DebugToolbar.get_urls() diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/utils.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/utils.py new file mode 100644 index 0000000..d311e9a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/utils.py @@ -0,0 +1,260 @@ +from __future__ import absolute_import, unicode_literals + +import inspect +import os.path +import re +import sys +from importlib import import_module +from itertools import chain + +import django +from django.core.exceptions import ImproperlyConfigured +from django.template import Node +from django.utils import six +from django.utils.encoding import force_text +from django.utils.html import escape +from django.utils.safestring import mark_safe + +from debug_toolbar import settings as dt_settings + +try: + import threading +except ImportError: + threading = None + + +# Figure out some paths +django_path = os.path.realpath(os.path.dirname(django.__file__)) + + +def get_module_path(module_name): + try: + module = import_module(module_name) + except ImportError as e: + raise ImproperlyConfigured( + 'Error importing HIDE_IN_STACKTRACES: %s' % (e,)) + else: + source_path = inspect.getsourcefile(module) + if source_path.endswith('__init__.py'): + source_path = os.path.dirname(source_path) + return os.path.realpath(source_path) + + +hidden_paths = [ + get_module_path(module_name) + for module_name in dt_settings.get_config()['HIDE_IN_STACKTRACES'] +] + + +def omit_path(path): + return any(path.startswith(hidden_path) for hidden_path in hidden_paths) + + +def tidy_stacktrace(stack): + """ + Clean up stacktrace and remove all entries that: + 1. Are part of Django (except contrib apps) + 2. Are part of socketserver (used by Django's dev server) + 3. Are the last entry (which is part of our stacktracing code) + + ``stack`` should be a list of frame tuples from ``inspect.stack()`` + """ + trace = [] + for frame, path, line_no, func_name, text in (f[:5] for f in stack): + if omit_path(os.path.realpath(path)): + continue + text = (''.join(force_text(t) for t in text)).strip() if text else '' + trace.append((path, line_no, func_name, text)) + return trace + + +def render_stacktrace(trace): + stacktrace = [] + for frame in trace: + params = (escape(v) for v in chain(frame[0].rsplit(os.path.sep, 1), frame[1:])) + params_dict = {six.text_type(idx): v for idx, v in enumerate(params)} + try: + stacktrace.append('%(0)s/' + '%(1)s' + ' in %(3)s' + '(%(2)s)\n' + ' %(4)s' + % params_dict) + except KeyError: + # This frame doesn't have the expected format, so skip it and move on to the next one + continue + return mark_safe('\n'.join(stacktrace)) + + +def get_template_info(): + template_info = None + cur_frame = sys._getframe().f_back + try: + while cur_frame is not None: + in_utils_module = cur_frame.f_code.co_filename.endswith( + "/debug_toolbar/utils.py" + ) + is_get_template_context = ( + cur_frame.f_code.co_name == get_template_context.__name__ + ) + if in_utils_module and is_get_template_context: + # If the method in the stack trace is this one + # then break from the loop as it's being check recursively. + break + elif cur_frame.f_code.co_name == 'render': + node = cur_frame.f_locals['self'] + context = cur_frame.f_locals['context'] + if isinstance(node, Node): + template_info = get_template_context(node, context) + break + cur_frame = cur_frame.f_back + except Exception: + pass + del cur_frame + return template_info + + +def get_template_context(node, context, context_lines=3): + line, source_lines, name = get_template_source_from_exception_info( + node, context) + debug_context = [] + start = max(1, line - context_lines) + end = line + 1 + context_lines + + for line_num, content in source_lines: + if start <= line_num <= end: + debug_context.append({ + 'num': line_num, + 'content': content, + 'highlight': (line_num == line), + }) + + return { + 'name': name, + 'context': debug_context, + } + + +def get_template_source_from_exception_info(node, context): + exception_info = context.template.get_exception_info( + Exception('DDT'), node.token) + line = exception_info['line'] + source_lines = exception_info['source_lines'] + name = exception_info['name'] + return line, source_lines, name + + +def get_name_from_obj(obj): + if hasattr(obj, '__name__'): + name = obj.__name__ + elif hasattr(obj, '__class__') and hasattr(obj.__class__, '__name__'): + name = obj.__class__.__name__ + else: + name = '' + + if hasattr(obj, '__module__'): + module = obj.__module__ + name = '%s.%s' % (module, name) + + return name + + +def getframeinfo(frame, context=1): + """ + Get information about a frame or traceback object. + + A tuple of five things is returned: the filename, the line number of + the current line, the function name, a list of lines of context from + the source code, and the index of the current line within that list. + The optional second argument specifies the number of lines of context + to return, which are centered around the current line. + + This originally comes from ``inspect`` but is modified to handle issues + with ``findsource()``. + """ + if inspect.istraceback(frame): + lineno = frame.tb_lineno + frame = frame.tb_frame + else: + lineno = frame.f_lineno + if not inspect.isframe(frame): + raise TypeError('arg is not a frame or traceback object') + + filename = inspect.getsourcefile(frame) or inspect.getfile(frame) + if context > 0: + start = lineno - 1 - context // 2 + try: + lines, lnum = inspect.findsource(frame) + except Exception: # findsource raises platform-dependant exceptions + first_lines = lines = index = None + else: + start = max(start, 1) + start = max(0, min(start, len(lines) - context)) + first_lines = lines[:2] + lines = lines[start:(start + context)] + index = lineno - 1 - start + else: + first_lines = lines = index = None + + # Code taken from Django's ExceptionReporter._get_lines_from_file + if first_lines and isinstance(first_lines[0], bytes): + encoding = 'ascii' + for line in first_lines[:2]: + # File coding may be specified. Match pattern from PEP-263 + # (https://www.python.org/dev/peps/pep-0263/) + match = re.search(br'coding[:=]\s*([-\w.]+)', line) + if match: + encoding = match.group(1).decode('ascii') + break + lines = [line.decode(encoding, 'replace') for line in lines] + + if hasattr(inspect, 'Traceback'): + return inspect.Traceback(filename, lineno, frame.f_code.co_name, lines, index) + else: + return (filename, lineno, frame.f_code.co_name, lines, index) + + +def get_stack(context=1): + """ + Get a list of records for a frame and all higher (calling) frames. + + Each record contains a frame object, filename, line number, function + name, a list of lines of context, and index within the context. + + Modified version of ``inspect.stack()`` which calls our own ``getframeinfo()`` + """ + frame = sys._getframe(1) + framelist = [] + while frame: + framelist.append((frame,) + getframeinfo(frame, context)) + frame = frame.f_back + return framelist + + +class ThreadCollector(object): + def __init__(self): + if threading is None: + raise NotImplementedError( + "threading module is not available, " + "this panel cannot be used without it") + self.collections = {} # a dictionary that maps threads to collections + + def get_collection(self, thread=None): + """ + Returns a list of collected items for the provided thread, of if none + is provided, returns a list for the current thread. + """ + if thread is None: + thread = threading.currentThread() + if thread not in self.collections: + self.collections[thread] = [] + return self.collections[thread] + + def clear_collection(self, thread=None): + if thread is None: + thread = threading.currentThread() + if thread in self.collections: + del self.collections[thread] + + def collect(self, item, thread=None): + self.get_collection(thread).append(item) diff --git a/thesisenv/lib/python3.6/site-packages/debug_toolbar/views.py b/thesisenv/lib/python3.6/site-packages/debug_toolbar/views.py new file mode 100644 index 0000000..5ed99ba --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/debug_toolbar/views.py @@ -0,0 +1,22 @@ +from __future__ import absolute_import, unicode_literals + +from django.http import HttpResponse +from django.utils.html import escape +from django.utils.translation import ugettext as _ + +from debug_toolbar.decorators import require_show_toolbar +from debug_toolbar.toolbar import DebugToolbar + + +@require_show_toolbar +def render_panel(request): + """Render the contents of a panel""" + toolbar = DebugToolbar.fetch(request.GET['store_id']) + if toolbar is None: + content = _("Data for this panel isn't available anymore. " + "Please reload the page and retry.") + content = "

%s

" % escape(content) + else: + panel = toolbar.get_panel_by_id(request.GET['panel_id']) + content = panel.content + return HttpResponse(content) diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/DESCRIPTION.rst b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..6f46325 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/DESCRIPTION.rst @@ -0,0 +1,47 @@ +==================== +Django Debug Toolbar +==================== + +.. image:: https://jazzband.co/static/img/badge.svg + :target: https://jazzband.co/ + :alt: Jazzband + +.. image:: https://travis-ci.org/jazzband/django-debug-toolbar.svg?branch=master + :target: https://travis-ci.org/jazzband/django-debug-toolbar + :alt: Build Status + +.. image:: https://codecov.io/gh/jazzband/django-debug-toolbar/branch/master/graph/badge.svg + :target: https://codecov.io/gh/jazzband/django-debug-toolbar + :alt: Test coverage status + +.. image:: https://requires.io/github/jazzband/django-debug-toolbar/requirements.svg?branch=master + :target: https://requires.io/github/jazzband/django-debug-toolbar/requirements/?branch=master + :alt: Requirements Status + +The Django Debug Toolbar is a configurable set of panels that display various +debug information about the current request/response and when clicked, display +more details about the panel's content. + +Here's a screenshot of the toolbar in action: + +.. image:: https://raw.github.com/jazzband/django-debug-toolbar/master/example/django-debug-toolbar.png + :width: 908 + :height: 557 + +In addition to the built-in panels, a number of third-party panels are +contributed by the community. + +The current version of the Debug Toolbar is 1.10.1. It works on Django ≥ 1.11. + +Documentation, including installation and configuration instructions, is +available at https://django-debug-toolbar.readthedocs.io/. + +The Django Debug Toolbar is released under the BSD license, like Django +itself. If you like it, please consider contributing! + +The Django Debug Toolbar was originally created by Rob Hudson +in August 2008 and was further developed by many contributors_. + +.. _contributors: https://github.com/jazzband/django-debug-toolbar/graphs/contributors + + diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/INSTALLER b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/LICENSE.txt b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/LICENSE.txt new file mode 100644 index 0000000..15d8309 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/LICENSE.txt @@ -0,0 +1,27 @@ +Copyright (c) Rob Hudson and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of Django nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/METADATA b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/METADATA new file mode 100644 index 0000000..0a0e4bf --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/METADATA @@ -0,0 +1,79 @@ +Metadata-Version: 2.0 +Name: django-debug-toolbar +Version: 1.10.1 +Summary: A configurable set of panels that display various debug information about the current request/response. +Home-page: https://github.com/jazzband/django-debug-toolbar +Author: Rob Hudson +Author-email: rob@cogit8.org +License: BSD +Download-URL: https://pypi.org/project/django-debug-toolbar/ +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Framework :: Django +Classifier: Framework :: Django :: 1.11 +Classifier: Framework :: Django :: 2.0 +Classifier: Framework :: Django :: 2.1 +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* +Requires-Dist: Django (>=1.11) +Requires-Dist: sqlparse (>=0.2.0) + +==================== +Django Debug Toolbar +==================== + +.. image:: https://jazzband.co/static/img/badge.svg + :target: https://jazzband.co/ + :alt: Jazzband + +.. image:: https://travis-ci.org/jazzband/django-debug-toolbar.svg?branch=master + :target: https://travis-ci.org/jazzband/django-debug-toolbar + :alt: Build Status + +.. image:: https://codecov.io/gh/jazzband/django-debug-toolbar/branch/master/graph/badge.svg + :target: https://codecov.io/gh/jazzband/django-debug-toolbar + :alt: Test coverage status + +.. image:: https://requires.io/github/jazzband/django-debug-toolbar/requirements.svg?branch=master + :target: https://requires.io/github/jazzband/django-debug-toolbar/requirements/?branch=master + :alt: Requirements Status + +The Django Debug Toolbar is a configurable set of panels that display various +debug information about the current request/response and when clicked, display +more details about the panel's content. + +Here's a screenshot of the toolbar in action: + +.. image:: https://raw.github.com/jazzband/django-debug-toolbar/master/example/django-debug-toolbar.png + :width: 908 + :height: 557 + +In addition to the built-in panels, a number of third-party panels are +contributed by the community. + +The current version of the Debug Toolbar is 1.10.1. It works on Django ≥ 1.11. + +Documentation, including installation and configuration instructions, is +available at https://django-debug-toolbar.readthedocs.io/. + +The Django Debug Toolbar is released under the BSD license, like Django +itself. If you like it, please consider contributing! + +The Django Debug Toolbar was originally created by Rob Hudson +in August 2008 and was further developed by many contributors_. + +.. _contributors: https://github.com/jazzband/django-debug-toolbar/graphs/contributors + + diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/RECORD b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/RECORD new file mode 100644 index 0000000..1345c07 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/RECORD @@ -0,0 +1,149 @@ +debug_toolbar/__init__.py,sha256=vOnYLMe6e3yu4SGUh1ZVUzidbNQ4UK751-DIpUSp1Hc,413 +debug_toolbar/apps.py,sha256=8TgxUBWYoiM0P0eO577SWFHZkZ6m4lgYUmhpLcS09fw,2834 +debug_toolbar/compat.py,sha256=odqmpXDVdnw1ax81L51Eg0LR0EAgS8wBEOIbvlyb8xw,327 +debug_toolbar/decorators.py,sha256=mWaoIMQnz9baDPCyn2EQzgsWU9OQ4l-bFxU09IaPK2s,385 +debug_toolbar/middleware.py,sha256=cUikyJGJ3D6FcgYT0Llbg7djZQkyjs5EEY60693ycEU,5671 +debug_toolbar/settings.py,sha256=F3GqKX9ywfDErGb9tHUrBR-m9vqRHITNGTawZg1v69M,6352 +debug_toolbar/toolbar.py,sha256=DIoBE-Q3w-cN4jMNeomiZ0lN-HCFgsKnsKz8l8KBiDU,4296 +debug_toolbar/utils.py,sha256=9LvKnygCZ6zf-FMMy604ebs88dRPN7bYlX3wlHej1O8,8800 +debug_toolbar/views.py,sha256=iuG3wHpKppGNO4GpIF2rSTghWWAdBHawYHdPhV8GXj4,776 +debug_toolbar/locale/ca/LC_MESSAGES/django.mo,sha256=MbYqZllKjQJ6TuyHJA34_HnF9MPBMtXOK_KWxRsxk94,2916 +debug_toolbar/locale/ca/LC_MESSAGES/django.po,sha256=4ClqaoIoBrZyo4iASfQyUVhSfGULGRkk-dXQIaF8D60,14622 +debug_toolbar/locale/cs/LC_MESSAGES/django.mo,sha256=1z_v135xnAb3497lmvfo3YRk_J0NUF1isWsldlpoZnA,9567 +debug_toolbar/locale/cs/LC_MESSAGES/django.po,sha256=4mSEcrbTFxA6LFUuTmsRUIDfa3DKqEEefiPoUWN7qWc,17591 +debug_toolbar/locale/de/LC_MESSAGES/django.mo,sha256=tSvdkQEptM_vU4FJwt0Sp2GSTNg5_48ygm9TPcwA9Pw,8899 +debug_toolbar/locale/de/LC_MESSAGES/django.po,sha256=_-aftrOtsE_WHDGtw5kyWCXHszhiXB1cgGAJ9cwFp_c,16841 +debug_toolbar/locale/en/LC_MESSAGES/django.mo,sha256=8XRRw8vhQCeq_nU_n6B4vm5BK2HC0utZykBsJKQ3FE0,382 +debug_toolbar/locale/en/LC_MESSAGES/django.po,sha256=gytnFbk2alYnO7MXgZpjP7nBr_EhwMOJt_tIqmzWKNg,14390 +debug_toolbar/locale/es/LC_MESSAGES/django.mo,sha256=AOBL5y8dqnVapAkMViw0w9DoFqXr1Rwz3FTjR8DVWkg,9294 +debug_toolbar/locale/es/LC_MESSAGES/django.po,sha256=F-xuoFAzy6jgV3nDoWM5PeULk-0oXAP59Z84iLVhWWw,17333 +debug_toolbar/locale/fi/LC_MESSAGES/django.mo,sha256=nEcWY3L7WmSSMKanRJzK9mkAUPxmx04yQh-BiWV4uMc,4700 +debug_toolbar/locale/fi/LC_MESSAGES/django.po,sha256=3P44Ecn4rZOJwB80dkSJx7UncOJ4x-pEUc4W0Mro0Rk,15322 +debug_toolbar/locale/fr/LC_MESSAGES/django.mo,sha256=pIYPNsBf8QGwrn4slRTEy-xghYshPGeLfr7_XWBcyi8,8951 +debug_toolbar/locale/fr/LC_MESSAGES/django.po,sha256=OuXFlWSFqRwsKBJPnu6dmHpY6m-AYPNOCm87-dPGhF4,17164 +debug_toolbar/locale/he/LC_MESSAGES/django.mo,sha256=nRp4D3JE6y85l2Kh15iBQFxpOcCNtlgvCBBTRZPPjdA,1603 +debug_toolbar/locale/he/LC_MESSAGES/django.po,sha256=-eGHFV54TkNCiu7_2fgqCN7Sk8pWDsGuhdwSUAl1KMk,14360 +debug_toolbar/locale/id/LC_MESSAGES/django.mo,sha256=bB4Y-o7Prd2x7bddxkLRH0efWmfe9GDsaC6y8c-4xRk,2989 +debug_toolbar/locale/id/LC_MESSAGES/django.po,sha256=gydZQDWHRsfSHw5J5haUk9FVl_LfRffoIwHglABWeo8,14490 +debug_toolbar/locale/it/LC_MESSAGES/django.mo,sha256=xxlFU2m50969IiWW-lDlYQOYEshveRhDZqVkoMaMoXk,8772 +debug_toolbar/locale/it/LC_MESSAGES/django.po,sha256=TflPIxm0rKNaB_TVw-_oB0stONdt63jkhksbPrNAxbo,16878 +debug_toolbar/locale/nl/LC_MESSAGES/django.mo,sha256=4XJM1C5cTz6lr2l5vLZHxYQV0tdDVcv5G4t-Jk5RSyk,4315 +debug_toolbar/locale/nl/LC_MESSAGES/django.po,sha256=DJeRie6qGY6pNHwNId3ozghjJphecOfknNH6EZgzt6U,15145 +debug_toolbar/locale/pl/LC_MESSAGES/django.mo,sha256=zhWQhhfzsA-gmMLfUGJ71EQnY4DoRWoyhXLB_DlCi5I,4851 +debug_toolbar/locale/pl/LC_MESSAGES/django.po,sha256=LltUQLmapOO8Y0pOypiXpI-WzHzXcksXM0RliV9x9BA,15795 +debug_toolbar/locale/pt/LC_MESSAGES/django.mo,sha256=xX3BgNJX8Mm-Sp0Auw09da514GJYGllA68wTCb6C0fw,3071 +debug_toolbar/locale/pt/LC_MESSAGES/django.po,sha256=OSZFpE2yTWaSfbaBfwkpjhMyDCyLWZ43FoHk8S7G6CM,14823 +debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo,sha256=CQoXOMZr1kiwDo_rhvtzpPCxwMfqyLiXhXre654zfCQ,9059 +debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po,sha256=ULCeruQV5sQdjAvqUNkUhY1n3YXrQSCNGDFpB7JQMr0,17061 +debug_toolbar/locale/ru/LC_MESSAGES/django.mo,sha256=N-A7wVU3iwbXdHBb_Hjrn-JZ2v_tVjDUTLEa0_je8vE,11667 +debug_toolbar/locale/ru/LC_MESSAGES/django.po,sha256=KHSruIOA4UeLjsu2Swvomo27pnQcIxDD_PRTaaNdAIg,19821 +debug_toolbar/locale/sk/LC_MESSAGES/django.mo,sha256=8ndFb3gV91CAgZBCn2zExjoDtaxjhGfTGRs-YxfFF7I,9378 +debug_toolbar/locale/sk/LC_MESSAGES/django.po,sha256=GqVBBcuuwd8QvLoDtAY4Qir48R5_tFmolEwUyKG5WxQ,17597 +debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo,sha256=nlmocwI2oLIQQNHwqPlumGodWx-rNoAY94ol61BJm-c,2403 +debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po,sha256=uF7-IX940ykN-mnwnOCeFelSs9UiJWirmV83ggci1NI,14569 +debug_toolbar/locale/uk/LC_MESSAGES/django.mo,sha256=O8CfZhZpW0Nt2Nbt58rJ3rQGNYcB4B-qJMIKzPD2E7U,2042 +debug_toolbar/locale/uk/LC_MESSAGES/django.po,sha256=L85wWklh8Dxls6VWp6vc0ft_Wegyr7UpNofgX-SUMSQ,14833 +debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo,sha256=CnS2DhVLrGnwZHRaaEu4IJEXw6nOFeOqPZ2CzqZMv48,8579 +debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po,sha256=AiemiO2Fpap6bzfgoUmUnWmgKRvyUwXG_o0Fs3p9aoQ,16284 +debug_toolbar/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debug_toolbar/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +debug_toolbar/management/commands/debugsqlshell.py,sha256=BSMA69r7CrLdQSV1zim-DIYHDuv1S4vNhguZnwFaeJY,849 +debug_toolbar/panels/__init__.py,sha256=ztFfazDANHwaW2D3L5F6hRdKaBeKFh4ggWcxBZy6Abo,7248 +debug_toolbar/panels/cache.py,sha256=XB0DJOOg5YVgUywUKYhKEPnFmfAa7deF1qatMc_RyOQ,7295 +debug_toolbar/panels/headers.py,sha256=r8dcvujRGluYX807uCD-I3KzcL3tMn6Z8dKmWt0eA2w,1926 +debug_toolbar/panels/logging.py,sha256=C-1FEkwknvNZxqpjqeP7mVYHna8iGchO4HMTdeSudrs,2515 +debug_toolbar/panels/profiling.py,sha256=zTV_61BLUEOZakIgMbvKdhogEXyDM17k4TWdj8bxMH8,5913 +debug_toolbar/panels/redirects.py,sha256=TASckRVQCNnG8AzWwRu4OpZQHJOIco5eUZBJh6J1N5M,1082 +debug_toolbar/panels/request.py,sha256=qePFLOriiBLwbcGxQJgTO3YplBGHHjdDSCV7rqYphF4,1933 +debug_toolbar/panels/settings.py,sha256=nBTUsryTubumIm4TY63NP7kHKH9jeAObBIaCRdL2jEA,788 +debug_toolbar/panels/signals.py,sha256=gj4KYAxe5OfQzuJ7t27YHRSSVnKMOZaVl6KVAT14GQs,3500 +debug_toolbar/panels/staticfiles.py,sha256=2ejZZ3q8i9m6k9M7tHbaIKUho-Rat5bdfgJ6533LHgk,5647 +debug_toolbar/panels/timer.py,sha256=Q0QHtxg4VplkF3s4h4DLwQtIcqga2Wk_bbI-5ONrURs,3869 +debug_toolbar/panels/versions.py,sha256=-tKkqOHLGr4rOmwaYrGUZISTVHs8CBUp5RiN_CGuxsc,2030 +debug_toolbar/panels/sql/__init__.py,sha256=YB8iUa79xNqE5OjU2NyWJ6v1rz7vBnKzH--W00k3sJs,60 +debug_toolbar/panels/sql/forms.py,sha256=QLfijq-XJUlKsij4Y4dxWTwVDeaT8pDkr4gHMH_UBM4,2728 +debug_toolbar/panels/sql/panel.py,sha256=RiW2cVqY3dm79zPIucMPA6nyvqZ-QFdMOZ4RY_Z6uXA,10724 +debug_toolbar/panels/sql/tracking.py,sha256=gGO2gf9mTsXVok49ZhnIupm6XB4J5hPX1KmjEaobkhA,6287 +debug_toolbar/panels/sql/utils.py,sha256=hX6nHtGMmuq_O8MrORXvbEo9bs5j2G7u53HKJ0IyjjM,1971 +debug_toolbar/panels/sql/views.py,sha256=Ln3OkL68VcT87mOkRFRbQ7wOBDNR1h956Um1MgZ9gXY,4384 +debug_toolbar/panels/templates/__init__.py,sha256=QA2yOxdpt7ogE6LoE7ESBOh-tTKc2LrpEr2QsAIvhpA,72 +debug_toolbar/panels/templates/panel.py,sha256=oZXyYUKrZ7UcFrw5O7ZMGRxWymXTLww5uLdIkacK46Y,9759 +debug_toolbar/panels/templates/views.py,sha256=GjrPqqowKX3rhG3Qe5Lb7i3GLnyzFV4wO8Ma8lftkQ4,2309 +debug_toolbar/static/debug_toolbar/css/print.css,sha256=yZSlBDcX5q-8fpHLBpyieobBS44_xSvsTH9K3yelUgo,41 +debug_toolbar/static/debug_toolbar/css/toolbar.css,sha256=pY12eONObaY1TcofljaeDFOm3vqcRGLorEZ7bXZGCRc,19977 +debug_toolbar/static/debug_toolbar/img/ajax-loader.gif,sha256=_Ul7Plo9mlnhPfWA6TU99Afud-o-DbuELY9z7nqp4-I,404 +debug_toolbar/static/debug_toolbar/img/back.png,sha256=ImnZ7XTZuap_r1m1grte49sRHerH9yDYX_8OG4jhprs,574 +debug_toolbar/static/debug_toolbar/img/back_hover.png,sha256=4u-iZc6y83HLWPDs2uzeldPJnLDNkthUHwVoiec8OSA,613 +debug_toolbar/static/debug_toolbar/img/close.png,sha256=mvSZ3Vuf8_sygUM7sQCMelNe8OZM616PKUARq6Ni-pI,498 +debug_toolbar/static/debug_toolbar/img/close_hover.png,sha256=svSDYytDbF9FstMdE_tPqL5BFI_PexmUzKZ0DYMijFM,706 +debug_toolbar/static/debug_toolbar/img/djdt_vertical.png,sha256=PJI-cSFpnaUmuYk3JRUEPvG0JzfzO_IL0PiDjlAC294,882 +debug_toolbar/static/debug_toolbar/img/indicator.png,sha256=Q1foz86JZohEvPjLM-GceoXtbxW3R1ctZy0G4VfIjk4,436 +debug_toolbar/static/debug_toolbar/js/jquery_existing.js,sha256=__-qXhN-JBI6bdndtxGf1aYoEL9zoN8BvqPPhSGyQ_o,29 +debug_toolbar/static/debug_toolbar/js/jquery_post.js,sha256=OD_ZXskKkXpJlIPXxc1X1zSsgCxB9xEBhOElwy0G-zQ,118 +debug_toolbar/static/debug_toolbar/js/jquery_pre.js,sha256=8NDKhO20LLCPEnm4SVPkxtgU5TgTtOwL-05SoL4HKVY,136 +debug_toolbar/static/debug_toolbar/js/toolbar.js,sha256=pMGjjaKgXihC42z7riV3vWT3k2tbBxSLFaFIn3cRdzU,13188 +debug_toolbar/static/debug_toolbar/js/toolbar.profiling.js,sha256=BWH_iavVClpaXjb0K7cs9aNR9MC3U6Kd_SVQgehKcmc,58 +debug_toolbar/static/debug_toolbar/js/toolbar.sql.js,sha256=mi_BRdAZ96vEO7vieRq1zGo3V4wEs-1xUoZhava9AKA,121 +debug_toolbar/static/debug_toolbar/js/toolbar.template.js,sha256=VZGjfTVL2TaRsDWW4RIrQ2e-ZOANRyBPjnJNo4gRkOw,362 +debug_toolbar/static/debug_toolbar/js/toolbar.timer.js,sha256=-eyvZq73FBPwI9hlF4PPa7lpl6NrE4eAiaUDNgZb3bw,2754 +debug_toolbar/templates/debug_toolbar/base.html,sha256=f57MAm3Ol0TDe9JEHJm5pZbR_RQVxnTHe1PWVNOzgZE,2568 +debug_toolbar/templates/debug_toolbar/redirect.html,sha256=Wz3ptkRWC4HotYMspxg4e2VTHawynhdu8DWvWuM54QU,504 +debug_toolbar/templates/debug_toolbar/panels/cache.html,sha256=33i60wp8Oa7BquwvvlY_jGUgB7PKsr9ZTfeSnuPtMxE,1709 +debug_toolbar/templates/debug_toolbar/panels/headers.html,sha256=WY4tAf65RSmCgagbFy1R9yU2ULgHGML8IGZEA91Q8vM,1220 +debug_toolbar/templates/debug_toolbar/panels/logging.html,sha256=wj26RceqioC4eYfuUUo1AJyic03V6ZPSEsqm_OHgDrg,690 +debug_toolbar/templates/debug_toolbar/panels/profiling.html,sha256=zbqf-BDvnU_Y_16uykUbnMV-wGuPtZyMGPWJJgk0mCw,1253 +debug_toolbar/templates/debug_toolbar/panels/request.html,sha256=WcAJbrP_tYyigbt-pz8HOkVvq2-VitYzUPDXfLIuNRE,2594 +debug_toolbar/templates/debug_toolbar/panels/settings.html,sha256=WvntaxUnuZMkvBJP6iC96zqMje8fS86roeCo7gM0abQ,342 +debug_toolbar/templates/debug_toolbar/panels/signals.html,sha256=S9VrPJ8LQSoW_uQhWNGzHMV4UwCdb0rlZQofOJMlcqw,438 +debug_toolbar/templates/debug_toolbar/panels/sql.html,sha256=HZVriSsOtoplhGQtFqb6IRAt9EhkhaczgBL7s3VqKnM,5188 +debug_toolbar/templates/debug_toolbar/panels/sql_explain.html,sha256=G-OF1-aAGd9hOnAZ1qJYuV4APjNYAgYMt-fvHWwKUCE,889 +debug_toolbar/templates/debug_toolbar/panels/sql_profile.html,sha256=aRYEZztj-prMzE55x-9ybrhEIJiVI1EEJsHFE5hscmY,1041 +debug_toolbar/templates/debug_toolbar/panels/sql_select.html,sha256=7q8ZNChtKE1Esg6wrN6DutCaH-_A-zDGntUBxAtWEDc,966 +debug_toolbar/templates/debug_toolbar/panels/staticfiles.html,sha256=ENVJCYr5ro_hSm8uVMq6dsppY5fIQFE2l4WzUwp5hAQ,1784 +debug_toolbar/templates/debug_toolbar/panels/template_source.html,sha256=8Rf6MljU3rYK8zk1W0-B2vB0a7oZYF8gUHM795w-uQM,361 +debug_toolbar/templates/debug_toolbar/panels/templates.html,sha256=Xr44C4HT5ANhNvpVC_pVzKev2iiw-p4wRj8LQpyAL5c,1569 +debug_toolbar/templates/debug_toolbar/panels/timer.html,sha256=nz8x73bhCvY6Ar2DGBazDuxMEBcyEvqqSZ8UAKn9hHo,1121 +debug_toolbar/templates/debug_toolbar/panels/versions.html,sha256=SGLEaiGYhRLWEdjR1jZczHz_B7IDYOP8hcz0qlQJcvA,495 +debug_toolbar/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +django_debug_toolbar-1.10.1.dist-info/DESCRIPTION.rst,sha256=wOIwc5aghj_gpkwMGt6IBEqPlDr6Ksr6VFbwkw-TDsI,1812 +django_debug_toolbar-1.10.1.dist-info/LICENSE.txt,sha256=POJDLyHOgE_zUE4FHPlUtp9iPRvML6keKW5gBp5ojJc,1542 +django_debug_toolbar-1.10.1.dist-info/METADATA,sha256=QFPJfrVXt6qyr-Eo8Rj1RX1jjpZ0139s6u8w6Bc0kiU,3168 +django_debug_toolbar-1.10.1.dist-info/RECORD,, +django_debug_toolbar-1.10.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +django_debug_toolbar-1.10.1.dist-info/metadata.json,sha256=1mD-xV_aNQWQdp5_oS9Elq0pSdsbeMvYdly_f9iRlxo,1457 +django_debug_toolbar-1.10.1.dist-info/top_level.txt,sha256=zTIu80Y2-czJ-UPk-SajY0EWSrmjiBYqOa_gxdDW4dU,14 +django_debug_toolbar-1.10.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +debug_toolbar/templatetags/__pycache__/__init__.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/logging.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/signals.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/request.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/headers.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/redirects.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/staticfiles.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/timer.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/settings.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/cache.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/profiling.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/__init__.cpython-36.pyc,, +debug_toolbar/panels/__pycache__/versions.cpython-36.pyc,, +debug_toolbar/panels/templates/__pycache__/panel.cpython-36.pyc,, +debug_toolbar/panels/templates/__pycache__/views.cpython-36.pyc,, +debug_toolbar/panels/templates/__pycache__/__init__.cpython-36.pyc,, +debug_toolbar/panels/sql/__pycache__/forms.cpython-36.pyc,, +debug_toolbar/panels/sql/__pycache__/panel.cpython-36.pyc,, +debug_toolbar/panels/sql/__pycache__/views.cpython-36.pyc,, +debug_toolbar/panels/sql/__pycache__/tracking.cpython-36.pyc,, +debug_toolbar/panels/sql/__pycache__/utils.cpython-36.pyc,, +debug_toolbar/panels/sql/__pycache__/__init__.cpython-36.pyc,, +debug_toolbar/management/__pycache__/__init__.cpython-36.pyc,, +debug_toolbar/management/commands/__pycache__/__init__.cpython-36.pyc,, +debug_toolbar/management/commands/__pycache__/debugsqlshell.cpython-36.pyc,, +debug_toolbar/__pycache__/views.cpython-36.pyc,, +debug_toolbar/__pycache__/compat.cpython-36.pyc,, +debug_toolbar/__pycache__/middleware.cpython-36.pyc,, +debug_toolbar/__pycache__/settings.cpython-36.pyc,, +debug_toolbar/__pycache__/apps.cpython-36.pyc,, +debug_toolbar/__pycache__/utils.cpython-36.pyc,, +debug_toolbar/__pycache__/__init__.cpython-36.pyc,, +debug_toolbar/__pycache__/decorators.cpython-36.pyc,, +debug_toolbar/__pycache__/toolbar.cpython-36.pyc,, diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/WHEEL b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/WHEEL new file mode 100644 index 0000000..8b6dd1b --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/metadata.json b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/metadata.json new file mode 100644 index 0000000..fe006a3 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules"], "download_url": "https://pypi.org/project/django-debug-toolbar/", "extensions": {"python.details": {"contacts": [{"email": "rob@cogit8.org", "name": "Rob Hudson", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "https://github.com/jazzband/django-debug-toolbar"}}}, "extras": [], "generator": "bdist_wheel (0.29.0)", "license": "BSD", "metadata_version": "2.0", "name": "django-debug-toolbar", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "run_requires": [{"requires": ["Django (>=1.11)", "sqlparse (>=0.2.0)"]}], "summary": "A configurable set of panels that display various debug information about the current request/response.", "version": "1.10.1"} \ No newline at end of file diff --git a/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/top_level.txt b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/top_level.txt new file mode 100644 index 0000000..c988723 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/django_debug_toolbar-1.10.1.dist-info/top_level.txt @@ -0,0 +1 @@ +debug_toolbar diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/DESCRIPTION.rst b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..ea55b42 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/DESCRIPTION.rst @@ -0,0 +1,50 @@ +``sqlparse`` is a non-validating SQL parser module. +It provides support for parsing, splitting and formatting SQL statements. + +Visit the `project page `_ for +additional information and documentation. + +**Example Usage** + + +Splitting SQL statements:: + + >>> import sqlparse + >>> sqlparse.split('select * from foo; select * from bar;') + [u'select * from foo; ', u'select * from bar;'] + + +Formatting statemtents:: + + >>> sql = 'select * from foo where id in (select id from bar);' + >>> print sqlparse.format(sql, reindent=True, keyword_case='upper') + SELECT * + FROM foo + WHERE id IN + (SELECT id + FROM bar); + + +Parsing:: + + >>> sql = 'select * from someschema.mytable where id = 1' + >>> res = sqlparse.parse(sql) + >>> res + (,) + >>> stmt = res[0] + >>> str(stmt) # converting it back to unicode + 'select * from someschema.mytable where id = 1' + >>> # This is how the internal representation looks like: + >>> stmt.tokens + (, + , + , + , + , + , + , + , + ) + + + diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/INSTALLER b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/METADATA b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/METADATA new file mode 100644 index 0000000..f0cc5ed --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/METADATA @@ -0,0 +1,74 @@ +Metadata-Version: 2.0 +Name: sqlparse +Version: 0.2.4 +Summary: Non-validating SQL parser +Home-page: https://github.com/andialbrecht/sqlparse +Author: Andi Albrecht +Author-email: albrecht.andi@gmail.com +License: BSD +Platform: UNKNOWN +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Topic :: Database +Classifier: Topic :: Software Development + +``sqlparse`` is a non-validating SQL parser module. +It provides support for parsing, splitting and formatting SQL statements. + +Visit the `project page `_ for +additional information and documentation. + +**Example Usage** + + +Splitting SQL statements:: + + >>> import sqlparse + >>> sqlparse.split('select * from foo; select * from bar;') + [u'select * from foo; ', u'select * from bar;'] + + +Formatting statemtents:: + + >>> sql = 'select * from foo where id in (select id from bar);' + >>> print sqlparse.format(sql, reindent=True, keyword_case='upper') + SELECT * + FROM foo + WHERE id IN + (SELECT id + FROM bar); + + +Parsing:: + + >>> sql = 'select * from someschema.mytable where id = 1' + >>> res = sqlparse.parse(sql) + >>> res + (,) + >>> stmt = res[0] + >>> str(stmt) # converting it back to unicode + 'select * from someschema.mytable where id = 1' + >>> # This is how the internal representation looks like: + >>> stmt.tokens + (, + , + , + , + , + , + , + , + ) + + + diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/RECORD b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/RECORD new file mode 100644 index 0000000..9d7f606 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/RECORD @@ -0,0 +1,53 @@ +sqlparse/__init__.py,sha256=ajh6cAPxajZn_GSH0a0cUY0p1HIkRdWwcQJyJ48WfgU,2224 +sqlparse/__main__.py,sha256=25CKuFddBqNfRDXQOsJC5N6qQ1xkyBcPjDLMppoiNtc,609 +sqlparse/cli.py,sha256=J3gtHygxEve1njid58P2Ct4eV2IPyrdOtbfkaVStJ0c,5379 +sqlparse/compat.py,sha256=8fmZfN3hJDm_geql68_dAbboViSO-2YLD3gn6hXrPR8,1140 +sqlparse/exceptions.py,sha256=2H6Eq4GO7GqATEMGVKHJXA3mKDSHdI_keoSvy7XRK7U,341 +sqlparse/formatter.py,sha256=8uXJo-eROOSsjm2TQu0wVnseMRG6nAnhQHQYDZrFtII,6836 +sqlparse/keywords.py,sha256=8uDNSh-toWnQjql6TWOKhATXGwih8_La8O6irivgW8w,24861 +sqlparse/lexer.py,sha256=zqYb-aQhYvDsz0SfLL7An0XMRE9NsfA7srXSle4piV8,2506 +sqlparse/sql.py,sha256=ceQLDAx5bJt_C4B220AoqsZ0x1akhU9LCnJ9y1QM-hM,19492 +sqlparse/tokens.py,sha256=6dj7bgEXC17mHFly8umed1NreYc3qYqIc6WwqrkoznA,1657 +sqlparse/utils.py,sha256=x24_nvnVFAzUiobI-4zz4lbxop4dAQxfyj01f685nhM,3484 +sqlparse/engine/__init__.py,sha256=l4qPN6SZuGlQiKCKA02RgQiy8rGcyatS1cxuI5hPVKM,446 +sqlparse/engine/filter_stack.py,sha256=RFKtJum9yAz-3GYtneF_9SExfPmB0RTzfjlnptS6MVc,1200 +sqlparse/engine/grouping.py,sha256=h1Ci0fNl1GIN73VSkYeAIAcPmfnyzrHq3s9P3Jd_j_Q,11428 +sqlparse/engine/statement_splitter.py,sha256=9rVwIMyDi6pLV12beTgniYmPz0BoAytgKXB_oAGfawk,3648 +sqlparse/filters/__init__.py,sha256=210gDlKEXqkm0i5JKd0mnLxrgbI8tKcVlkw06MPE_cA,1241 +sqlparse/filters/aligned_indent.py,sha256=ieWiMSO0zev8QqsJDEKayDoQ5l3RArFCOaBVrWJ5gBQ,4932 +sqlparse/filters/others.py,sha256=p7C5g2qs9-YE2nfwDn0MwwAy32vWjmszLgL9mTsjOt8,4350 +sqlparse/filters/output.py,sha256=S9sakYxe1FNH0DiyMyLMSn3AFMm842m2n7sNUBp47LU,4051 +sqlparse/filters/reindent.py,sha256=2Mu7UeQnWy0zdcSGKQhK5tBpPfWTi3W_2K75sJuhOKQ,6985 +sqlparse/filters/right_margin.py,sha256=JvN9fEzlUC4gJmsqPNA86FV6aRZdd76zyyjXv8_RhJQ,1595 +sqlparse/filters/tokens.py,sha256=R0eqZ7MOVjEGA9dZEI6hFhkFzFAA66lcq3jpV6pUEj8,1612 +sqlparse-0.2.4.dist-info/DESCRIPTION.rst,sha256=hTPnv4Qw5GhiENkYNi295N1ZCCWqpcITVovuRplK27A,1353 +sqlparse-0.2.4.dist-info/METADATA,sha256=Fc5aieueSauuNTCdqCJ8DLdEHSBBm47KWM--R5Uo-zQ,2230 +sqlparse-0.2.4.dist-info/RECORD,, +sqlparse-0.2.4.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +sqlparse-0.2.4.dist-info/entry_points.txt,sha256=S2WxhPln7zXybKRE73ekBicXHh7_BX-KYGFZZaGGqp8,54 +sqlparse-0.2.4.dist-info/metadata.json,sha256=2J-H8kxvx2I3m4AHyiMWR2xFQ2t_IFQ3JTFxe572GZI,1112 +sqlparse-0.2.4.dist-info/top_level.txt,sha256=eRYisOR7d8EtLKXuWUUAAMOhODItOqrkpxkAGD8CISo,9 +../../../bin/sqlformat,sha256=aQnHcYophHuvuy0D2Lvp2E27qwIFTbSayuKstj7TJyE,248 +sqlparse-0.2.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +sqlparse/filters/__pycache__/output.cpython-36.pyc,, +sqlparse/filters/__pycache__/aligned_indent.cpython-36.pyc,, +sqlparse/filters/__pycache__/tokens.cpython-36.pyc,, +sqlparse/filters/__pycache__/right_margin.cpython-36.pyc,, +sqlparse/filters/__pycache__/__init__.cpython-36.pyc,, +sqlparse/filters/__pycache__/reindent.cpython-36.pyc,, +sqlparse/filters/__pycache__/others.cpython-36.pyc,, +sqlparse/__pycache__/lexer.cpython-36.pyc,, +sqlparse/__pycache__/formatter.cpython-36.pyc,, +sqlparse/__pycache__/exceptions.cpython-36.pyc,, +sqlparse/__pycache__/cli.cpython-36.pyc,, +sqlparse/__pycache__/keywords.cpython-36.pyc,, +sqlparse/__pycache__/sql.cpython-36.pyc,, +sqlparse/__pycache__/tokens.cpython-36.pyc,, +sqlparse/__pycache__/__main__.cpython-36.pyc,, +sqlparse/__pycache__/compat.cpython-36.pyc,, +sqlparse/__pycache__/utils.cpython-36.pyc,, +sqlparse/__pycache__/__init__.cpython-36.pyc,, +sqlparse/engine/__pycache__/statement_splitter.cpython-36.pyc,, +sqlparse/engine/__pycache__/grouping.cpython-36.pyc,, +sqlparse/engine/__pycache__/filter_stack.cpython-36.pyc,, +sqlparse/engine/__pycache__/__init__.cpython-36.pyc,, diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/WHEEL b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/WHEEL new file mode 100644 index 0000000..8b6dd1b --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/entry_points.txt b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/entry_points.txt new file mode 100644 index 0000000..09d1990 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +sqlformat = sqlparse.__main__:main + diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/metadata.json b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/metadata.json new file mode 100644 index 0000000..bac9797 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Database", "Topic :: Software Development"], "extensions": {"python.commands": {"wrap_console": {"sqlformat": "sqlparse.__main__:main"}}, "python.details": {"contacts": [{"email": "albrecht.andi@gmail.com", "name": "Andi Albrecht", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/andialbrecht/sqlparse"}}, "python.exports": {"console_scripts": {"sqlformat": "sqlparse.__main__:main"}}}, "generator": "bdist_wheel (0.29.0)", "license": "BSD", "metadata_version": "2.0", "name": "sqlparse", "summary": "Non-validating SQL parser", "version": "0.2.4"} \ No newline at end of file diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/top_level.txt b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/top_level.txt new file mode 100644 index 0000000..dbd4a47 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse-0.2.4.dist-info/top_level.txt @@ -0,0 +1 @@ +sqlparse diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/__init__.py b/thesisenv/lib/python3.6/site-packages/sqlparse/__init__.py new file mode 100644 index 0000000..237e303 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/__init__.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""Parse SQL statements.""" + +# Setup namespace +from sqlparse import sql +from sqlparse import cli +from sqlparse import engine +from sqlparse import tokens +from sqlparse import filters +from sqlparse import formatter + +from sqlparse.compat import text_type + +__version__ = '0.2.4' +__all__ = ['engine', 'filters', 'formatter', 'sql', 'tokens', 'cli'] + + +def parse(sql, encoding=None): + """Parse sql and return a list of statements. + + :param sql: A string containing one or more SQL statements. + :param encoding: The encoding of the statement (optional). + :returns: A tuple of :class:`~sqlparse.sql.Statement` instances. + """ + return tuple(parsestream(sql, encoding)) + + +def parsestream(stream, encoding=None): + """Parses sql statements from file-like object. + + :param stream: A file-like object. + :param encoding: The encoding of the stream contents (optional). + :returns: A generator of :class:`~sqlparse.sql.Statement` instances. + """ + stack = engine.FilterStack() + stack.enable_grouping() + return stack.run(stream, encoding) + + +def format(sql, encoding=None, **options): + """Format *sql* according to *options*. + + Available options are documented in :ref:`formatting`. + + In addition to the formatting options this function accepts the + keyword "encoding" which determines the encoding of the statement. + + :returns: The formatted SQL statement as string. + """ + stack = engine.FilterStack() + options = formatter.validate_options(options) + stack = formatter.build_filter_stack(stack, options) + stack.postprocess.append(filters.SerializerUnicode()) + return u''.join(stack.run(sql, encoding)) + + +def split(sql, encoding=None): + """Split *sql* into single statements. + + :param sql: A string containing one or more SQL statements. + :param encoding: The encoding of the statement (optional). + :returns: A list of strings. + """ + stack = engine.FilterStack() + return [text_type(stmt).strip() for stmt in stack.run(sql, encoding)] diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/__main__.py b/thesisenv/lib/python3.6/site-packages/sqlparse/__main__.py new file mode 100644 index 0000000..af612b3 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/__main__.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""Entrypoint module for `python -m sqlparse`. + +Why does this file exist, and why __main__? For more info, read: +- https://www.python.org/dev/peps/pep-0338/ +- https://docs.python.org/2/using/cmdline.html#cmdoption-m +- https://docs.python.org/3/using/cmdline.html#cmdoption-m +""" + +import sys + +from sqlparse.cli import main + +if __name__ == '__main__': + sys.exit(main()) diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/cli.py b/thesisenv/lib/python3.6/site-packages/sqlparse/cli.py new file mode 100644 index 0000000..ad6bc7a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/cli.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""Module that contains the command line app. + +Why does this file exist, and why not put this in __main__? + You might be tempted to import things from __main__ later, but that will + cause problems: the code will get executed twice: + - When you run `python -m sqlparse` python will execute + ``__main__.py`` as a script. That means there won't be any + ``sqlparse.__main__`` in ``sys.modules``. + - When you import __main__ it will get executed again (as a module) because + there's no ``sqlparse.__main__`` in ``sys.modules``. + Also see (1) from http://click.pocoo.org/5/setuptools/#setuptools-integration +""" + +import argparse +import sys +from io import TextIOWrapper +from codecs import open, getreader + +import sqlparse +from sqlparse.compat import PY2 +from sqlparse.exceptions import SQLParseError + + +# TODO: Add CLI Tests +# TODO: Simplify formatter by using argparse `type` arguments +def create_parser(): + _CASE_CHOICES = ['upper', 'lower', 'capitalize'] + + parser = argparse.ArgumentParser( + prog='sqlformat', + description='Format FILE according to OPTIONS. Use "-" as FILE ' + 'to read from stdin.', + usage='%(prog)s [OPTIONS] FILE, ...', + ) + + parser.add_argument('filename') + + parser.add_argument( + '-o', '--outfile', + dest='outfile', + metavar='FILE', + help='write output to FILE (defaults to stdout)') + + parser.add_argument( + '--version', + action='version', + version=sqlparse.__version__) + + group = parser.add_argument_group('Formatting Options') + + group.add_argument( + '-k', '--keywords', + metavar='CHOICE', + dest='keyword_case', + choices=_CASE_CHOICES, + help='change case of keywords, CHOICE is one of {0}'.format( + ', '.join('"{0}"'.format(x) for x in _CASE_CHOICES))) + + group.add_argument( + '-i', '--identifiers', + metavar='CHOICE', + dest='identifier_case', + choices=_CASE_CHOICES, + help='change case of identifiers, CHOICE is one of {0}'.format( + ', '.join('"{0}"'.format(x) for x in _CASE_CHOICES))) + + group.add_argument( + '-l', '--language', + metavar='LANG', + dest='output_format', + choices=['python', 'php'], + help='output a snippet in programming language LANG, ' + 'choices are "python", "php"') + + group.add_argument( + '--strip-comments', + dest='strip_comments', + action='store_true', + default=False, + help='remove comments') + + group.add_argument( + '-r', '--reindent', + dest='reindent', + action='store_true', + default=False, + help='reindent statements') + + group.add_argument( + '--indent_width', + dest='indent_width', + default=2, + type=int, + help='indentation width (defaults to 2 spaces)') + + group.add_argument( + '-a', '--reindent_aligned', + action='store_true', + default=False, + help='reindent statements to aligned format') + + group.add_argument( + '-s', '--use_space_around_operators', + action='store_true', + default=False, + help='place spaces around mathematical operators') + + group.add_argument( + '--wrap_after', + dest='wrap_after', + default=0, + type=int, + help='Column after which lists should be wrapped') + + group.add_argument( + '--comma_first', + dest='comma_first', + default=False, + type=bool, + help='Insert linebreak before comma (default False)') + + group.add_argument( + '--encoding', + dest='encoding', + default='utf-8', + help='Specify the input encoding (default utf-8)') + + return parser + + +def _error(msg): + """Print msg and optionally exit with return code exit_.""" + sys.stderr.write(u'[ERROR] {0}\n'.format(msg)) + return 1 + + +def main(args=None): + parser = create_parser() + args = parser.parse_args(args) + + if args.filename == '-': # read from stdin + if PY2: + data = getreader(args.encoding)(sys.stdin).read() + else: + data = TextIOWrapper( + sys.stdin.buffer, encoding=args.encoding).read() + else: + try: + with open(args.filename, 'r', args.encoding) as f: + data = ''.join(f.readlines()) + except IOError as e: + return _error( + u'Failed to read {0}: {1}'.format(args.filename, e)) + + close_stream = False + if args.outfile: + try: + stream = open(args.outfile, 'w', args.encoding) + close_stream = True + except IOError as e: + return _error(u'Failed to open {0}: {1}'.format(args.outfile, e)) + else: + stream = sys.stdout + + formatter_opts = vars(args) + try: + formatter_opts = sqlparse.formatter.validate_options(formatter_opts) + except SQLParseError as e: + return _error(u'Invalid options: {0}'.format(e)) + + s = sqlparse.format(data, **formatter_opts) + stream.write(s) + stream.flush() + if close_stream: + stream.close() + return 0 diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/compat.py b/thesisenv/lib/python3.6/site-packages/sqlparse/compat.py new file mode 100644 index 0000000..15bf0bf --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/compat.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""Python 2/3 compatibility. + +This module only exists to avoid a dependency on six +for very trivial stuff. We only need to take care of +string types, buffers and metaclasses. + +Parts of the code is copied directly from six: +https://bitbucket.org/gutworth/six +""" + +import sys +from io import TextIOBase + +PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 + + +if PY3: + def unicode_compatible(cls): + return cls + + bytes_type = bytes + text_type = str + string_types = (str,) + from io import StringIO + file_types = (StringIO, TextIOBase) + + +elif PY2: + def unicode_compatible(cls): + cls.__unicode__ = cls.__str__ + cls.__str__ = lambda x: x.__unicode__().encode('utf-8') + return cls + + bytes_type = str + text_type = unicode + string_types = (str, unicode,) + from StringIO import StringIO + file_types = (file, StringIO, TextIOBase) + from StringIO import StringIO diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/engine/__init__.py b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/__init__.py new file mode 100644 index 0000000..af27dee --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/__init__.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse.engine import grouping +from sqlparse.engine.filter_stack import FilterStack +from sqlparse.engine.statement_splitter import StatementSplitter + +__all__ = [ + 'grouping', + 'FilterStack', + 'StatementSplitter', +] diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/engine/filter_stack.py b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/filter_stack.py new file mode 100644 index 0000000..02cd901 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/filter_stack.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""filter""" + +from sqlparse import lexer +from sqlparse.engine import grouping +from sqlparse.engine.statement_splitter import StatementSplitter + + +class FilterStack(object): + def __init__(self): + self.preprocess = [] + self.stmtprocess = [] + self.postprocess = [] + self._grouping = False + + def enable_grouping(self): + self._grouping = True + + def run(self, sql, encoding=None): + stream = lexer.tokenize(sql, encoding) + # Process token stream + for filter_ in self.preprocess: + stream = filter_.process(stream) + + stream = StatementSplitter().process(stream) + + # Output: Stream processed Statements + for stmt in stream: + if self._grouping: + stmt = grouping.group(stmt) + + for filter_ in self.stmtprocess: + filter_.process(stmt) + + for filter_ in self.postprocess: + stmt = filter_.process(stmt) + + yield stmt diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/engine/grouping.py b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/grouping.py new file mode 100644 index 0000000..fa87c9f --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/grouping.py @@ -0,0 +1,391 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse import sql +from sqlparse import tokens as T +from sqlparse.utils import recurse, imt + +T_NUMERICAL = (T.Number, T.Number.Integer, T.Number.Float) +T_STRING = (T.String, T.String.Single, T.String.Symbol) +T_NAME = (T.Name, T.Name.Placeholder) + + +def _group_matching(tlist, cls): + """Groups Tokens that have beginning and end.""" + opens = [] + tidx_offset = 0 + for idx, token in enumerate(list(tlist)): + tidx = idx - tidx_offset + + if token.is_whitespace: + # ~50% of tokens will be whitespace. Will checking early + # for them avoid 3 comparisons, but then add 1 more comparison + # for the other ~50% of tokens... + continue + + if token.is_group and not isinstance(token, cls): + # Check inside previously grouped (ie. parenthesis) if group + # of differnt type is inside (ie, case). though ideally should + # should check for all open/close tokens at once to avoid recursion + _group_matching(token, cls) + continue + + if token.match(*cls.M_OPEN): + opens.append(tidx) + + elif token.match(*cls.M_CLOSE): + try: + open_idx = opens.pop() + except IndexError: + # this indicates invalid sql and unbalanced tokens. + # instead of break, continue in case other "valid" groups exist + continue + close_idx = tidx + tlist.group_tokens(cls, open_idx, close_idx) + tidx_offset += close_idx - open_idx + + +def group_brackets(tlist): + _group_matching(tlist, sql.SquareBrackets) + + +def group_parenthesis(tlist): + _group_matching(tlist, sql.Parenthesis) + + +def group_case(tlist): + _group_matching(tlist, sql.Case) + + +def group_if(tlist): + _group_matching(tlist, sql.If) + + +def group_for(tlist): + _group_matching(tlist, sql.For) + + +def group_begin(tlist): + _group_matching(tlist, sql.Begin) + + +def group_typecasts(tlist): + def match(token): + return token.match(T.Punctuation, '::') + + def valid(token): + return token is not None + + def post(tlist, pidx, tidx, nidx): + return pidx, nidx + + valid_prev = valid_next = valid + _group(tlist, sql.Identifier, match, valid_prev, valid_next, post) + + +def group_period(tlist): + def match(token): + return token.match(T.Punctuation, '.') + + def valid_prev(token): + sqlcls = sql.SquareBrackets, sql.Identifier + ttypes = T.Name, T.String.Symbol + return imt(token, i=sqlcls, t=ttypes) + + def valid_next(token): + # issue261, allow invalid next token + return True + + def post(tlist, pidx, tidx, nidx): + # next_ validation is being performed here. issue261 + sqlcls = sql.SquareBrackets, sql.Function + ttypes = T.Name, T.String.Symbol, T.Wildcard + next_ = tlist[nidx] if nidx is not None else None + valid_next = imt(next_, i=sqlcls, t=ttypes) + + return (pidx, nidx) if valid_next else (pidx, tidx) + + _group(tlist, sql.Identifier, match, valid_prev, valid_next, post) + + +def group_as(tlist): + def match(token): + return token.is_keyword and token.normalized == 'AS' + + def valid_prev(token): + return token.normalized == 'NULL' or not token.is_keyword + + def valid_next(token): + ttypes = T.DML, T.DDL + return not imt(token, t=ttypes) and token is not None + + def post(tlist, pidx, tidx, nidx): + return pidx, nidx + + _group(tlist, sql.Identifier, match, valid_prev, valid_next, post) + + +def group_assignment(tlist): + def match(token): + return token.match(T.Assignment, ':=') + + def valid(token): + return token is not None and token.ttype not in (T.Keyword) + + def post(tlist, pidx, tidx, nidx): + m_semicolon = T.Punctuation, ';' + snidx, _ = tlist.token_next_by(m=m_semicolon, idx=nidx) + nidx = snidx or nidx + return pidx, nidx + + valid_prev = valid_next = valid + _group(tlist, sql.Assignment, match, valid_prev, valid_next, post) + + +def group_comparison(tlist): + sqlcls = (sql.Parenthesis, sql.Function, sql.Identifier, + sql.Operation) + ttypes = T_NUMERICAL + T_STRING + T_NAME + + def match(token): + return token.ttype == T.Operator.Comparison + + def valid(token): + if imt(token, t=ttypes, i=sqlcls): + return True + elif token and token.is_keyword and token.normalized == 'NULL': + return True + else: + return False + + def post(tlist, pidx, tidx, nidx): + return pidx, nidx + + valid_prev = valid_next = valid + _group(tlist, sql.Comparison, match, + valid_prev, valid_next, post, extend=False) + + +@recurse(sql.Identifier) +def group_identifier(tlist): + ttypes = (T.String.Symbol, T.Name) + + tidx, token = tlist.token_next_by(t=ttypes) + while token: + tlist.group_tokens(sql.Identifier, tidx, tidx) + tidx, token = tlist.token_next_by(t=ttypes, idx=tidx) + + +def group_arrays(tlist): + sqlcls = sql.SquareBrackets, sql.Identifier, sql.Function + ttypes = T.Name, T.String.Symbol + + def match(token): + return isinstance(token, sql.SquareBrackets) + + def valid_prev(token): + return imt(token, i=sqlcls, t=ttypes) + + def valid_next(token): + return True + + def post(tlist, pidx, tidx, nidx): + return pidx, tidx + + _group(tlist, sql.Identifier, match, + valid_prev, valid_next, post, extend=True, recurse=False) + + +def group_operator(tlist): + ttypes = T_NUMERICAL + T_STRING + T_NAME + sqlcls = (sql.SquareBrackets, sql.Parenthesis, sql.Function, + sql.Identifier, sql.Operation) + + def match(token): + return imt(token, t=(T.Operator, T.Wildcard)) + + def valid(token): + return imt(token, i=sqlcls, t=ttypes) + + def post(tlist, pidx, tidx, nidx): + tlist[tidx].ttype = T.Operator + return pidx, nidx + + valid_prev = valid_next = valid + _group(tlist, sql.Operation, match, + valid_prev, valid_next, post, extend=False) + + +def group_identifier_list(tlist): + m_role = T.Keyword, ('null', 'role') + sqlcls = (sql.Function, sql.Case, sql.Identifier, sql.Comparison, + sql.IdentifierList, sql.Operation) + ttypes = (T_NUMERICAL + T_STRING + T_NAME + + (T.Keyword, T.Comment, T.Wildcard)) + + def match(token): + return token.match(T.Punctuation, ',') + + def valid(token): + return imt(token, i=sqlcls, m=m_role, t=ttypes) + + def post(tlist, pidx, tidx, nidx): + return pidx, nidx + + valid_prev = valid_next = valid + _group(tlist, sql.IdentifierList, match, + valid_prev, valid_next, post, extend=True) + + +@recurse(sql.Comment) +def group_comments(tlist): + tidx, token = tlist.token_next_by(t=T.Comment) + while token: + eidx, end = tlist.token_not_matching( + lambda tk: imt(tk, t=T.Comment) or tk.is_whitespace, idx=tidx) + if end is not None: + eidx, end = tlist.token_prev(eidx, skip_ws=False) + tlist.group_tokens(sql.Comment, tidx, eidx) + + tidx, token = tlist.token_next_by(t=T.Comment, idx=tidx) + + +@recurse(sql.Where) +def group_where(tlist): + tidx, token = tlist.token_next_by(m=sql.Where.M_OPEN) + while token: + eidx, end = tlist.token_next_by(m=sql.Where.M_CLOSE, idx=tidx) + + if end is None: + end = tlist._groupable_tokens[-1] + else: + end = tlist.tokens[eidx - 1] + # TODO: convert this to eidx instead of end token. + # i think above values are len(tlist) and eidx-1 + eidx = tlist.token_index(end) + tlist.group_tokens(sql.Where, tidx, eidx) + tidx, token = tlist.token_next_by(m=sql.Where.M_OPEN, idx=tidx) + + +@recurse() +def group_aliased(tlist): + I_ALIAS = (sql.Parenthesis, sql.Function, sql.Case, sql.Identifier, + sql.Operation, sql.Comparison) + + tidx, token = tlist.token_next_by(i=I_ALIAS, t=T.Number) + while token: + nidx, next_ = tlist.token_next(tidx) + if isinstance(next_, sql.Identifier): + tlist.group_tokens(sql.Identifier, tidx, nidx, extend=True) + tidx, token = tlist.token_next_by(i=I_ALIAS, t=T.Number, idx=tidx) + + +@recurse(sql.Function) +def group_functions(tlist): + has_create = False + has_table = False + for tmp_token in tlist.tokens: + if tmp_token.value == 'CREATE': + has_create = True + if tmp_token.value == 'TABLE': + has_table = True + if has_create and has_table: + return + + tidx, token = tlist.token_next_by(t=T.Name) + while token: + nidx, next_ = tlist.token_next(tidx) + if isinstance(next_, sql.Parenthesis): + tlist.group_tokens(sql.Function, tidx, nidx) + tidx, token = tlist.token_next_by(t=T.Name, idx=tidx) + + +def group_order(tlist): + """Group together Identifier and Asc/Desc token""" + tidx, token = tlist.token_next_by(t=T.Keyword.Order) + while token: + pidx, prev_ = tlist.token_prev(tidx) + if imt(prev_, i=sql.Identifier, t=T.Number): + tlist.group_tokens(sql.Identifier, pidx, tidx) + tidx = pidx + tidx, token = tlist.token_next_by(t=T.Keyword.Order, idx=tidx) + + +@recurse() +def align_comments(tlist): + tidx, token = tlist.token_next_by(i=sql.Comment) + while token: + pidx, prev_ = tlist.token_prev(tidx) + if isinstance(prev_, sql.TokenList): + tlist.group_tokens(sql.TokenList, pidx, tidx, extend=True) + tidx = pidx + tidx, token = tlist.token_next_by(i=sql.Comment, idx=tidx) + + +def group(stmt): + for func in [ + group_comments, + + # _group_matching + group_brackets, + group_parenthesis, + group_case, + group_if, + group_for, + group_begin, + + group_functions, + group_where, + group_period, + group_arrays, + group_identifier, + group_order, + group_typecasts, + group_operator, + group_comparison, + group_as, + group_aliased, + group_assignment, + + align_comments, + group_identifier_list, + ]: + func(stmt) + return stmt + + +def _group(tlist, cls, match, + valid_prev=lambda t: True, + valid_next=lambda t: True, + post=None, + extend=True, + recurse=True + ): + """Groups together tokens that are joined by a middle token. ie. x < y""" + + tidx_offset = 0 + pidx, prev_ = None, None + for idx, token in enumerate(list(tlist)): + tidx = idx - tidx_offset + + if token.is_whitespace: + continue + + if recurse and token.is_group and not isinstance(token, cls): + _group(token, cls, match, valid_prev, valid_next, post, extend) + + if match(token): + nidx, next_ = tlist.token_next(tidx) + if prev_ and valid_prev(prev_) and valid_next(next_): + from_idx, to_idx = post(tlist, pidx, tidx, nidx) + grp = tlist.group_tokens(cls, from_idx, to_idx, extend=extend) + + tidx_offset += to_idx - from_idx + pidx, prev_ = from_idx, grp + continue + + pidx, prev_ = tidx, token diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/engine/statement_splitter.py b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/statement_splitter.py new file mode 100644 index 0000000..6c5b599 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/engine/statement_splitter.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse import sql, tokens as T + + +class StatementSplitter(object): + """Filter that split stream at individual statements""" + + def __init__(self): + self._reset() + + def _reset(self): + """Set the filter attributes to its default values""" + self._in_declare = False + self._is_create = False + self._begin_depth = 0 + + self.consume_ws = False + self.tokens = [] + self.level = 0 + + def _change_splitlevel(self, ttype, value): + """Get the new split level (increase, decrease or remain equal)""" + # ANSI + # if normal token return + # wouldn't parenthesis increase/decrease a level? + # no, inside a paranthesis can't start new statement + if ttype not in T.Keyword: + return 0 + + # Everything after here is ttype = T.Keyword + # Also to note, once entered an If statement you are done and basically + # returning + unified = value.upper() + + # three keywords begin with CREATE, but only one of them is DDL + # DDL Create though can contain more words such as "or replace" + if ttype is T.Keyword.DDL and unified.startswith('CREATE'): + self._is_create = True + return 0 + + # can have nested declare inside of being... + if unified == 'DECLARE' and self._is_create and self._begin_depth == 0: + self._in_declare = True + return 1 + + if unified == 'BEGIN': + self._begin_depth += 1 + if self._is_create: + # FIXME(andi): This makes no sense. + return 1 + return 0 + + # Should this respect a preceeding BEGIN? + # In CASE ... WHEN ... END this results in a split level -1. + # Would having multiple CASE WHEN END and a Assigment Operator + # cause the statement to cut off prematurely? + if unified == 'END': + self._begin_depth = max(0, self._begin_depth - 1) + return -1 + + if (unified in ('IF', 'FOR', 'WHILE') and + self._is_create and self._begin_depth > 0): + return 1 + + if unified in ('END IF', 'END FOR', 'END WHILE'): + return -1 + + # Default + return 0 + + def process(self, stream): + """Process the stream""" + EOS_TTYPE = T.Whitespace, T.Comment.Single + + # Run over all stream tokens + for ttype, value in stream: + # Yield token if we finished a statement and there's no whitespaces + # It will count newline token as a non whitespace. In this context + # whitespace ignores newlines. + # why don't multi line comments also count? + if self.consume_ws and ttype not in EOS_TTYPE: + yield sql.Statement(self.tokens) + + # Reset filter and prepare to process next statement + self._reset() + + # Change current split level (increase, decrease or remain equal) + self.level += self._change_splitlevel(ttype, value) + + # Append the token to the current statement + self.tokens.append(sql.Token(ttype, value)) + + # Check if we get the end of a statement + if self.level <= 0 and ttype is T.Punctuation and value == ';': + self.consume_ws = True + + # Yield pending statement (if any) + if self.tokens: + yield sql.Statement(self.tokens) diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/exceptions.py b/thesisenv/lib/python3.6/site-packages/sqlparse/exceptions.py new file mode 100644 index 0000000..87b5c00 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/exceptions.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""Exceptions used in this package.""" + + +class SQLParseError(Exception): + """Base class for exceptions in this module.""" diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/filters/__init__.py b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/__init__.py new file mode 100644 index 0000000..9eb301a --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/__init__.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse.filters.others import SerializerUnicode +from sqlparse.filters.others import StripCommentsFilter +from sqlparse.filters.others import StripWhitespaceFilter +from sqlparse.filters.others import SpacesAroundOperatorsFilter + +from sqlparse.filters.output import OutputPHPFilter +from sqlparse.filters.output import OutputPythonFilter + +from sqlparse.filters.tokens import KeywordCaseFilter +from sqlparse.filters.tokens import IdentifierCaseFilter +from sqlparse.filters.tokens import TruncateStringFilter + +from sqlparse.filters.reindent import ReindentFilter +from sqlparse.filters.right_margin import RightMarginFilter +from sqlparse.filters.aligned_indent import AlignedIndentFilter + +__all__ = [ + 'SerializerUnicode', + 'StripCommentsFilter', + 'StripWhitespaceFilter', + 'SpacesAroundOperatorsFilter', + + 'OutputPHPFilter', + 'OutputPythonFilter', + + 'KeywordCaseFilter', + 'IdentifierCaseFilter', + 'TruncateStringFilter', + + 'ReindentFilter', + 'RightMarginFilter', + 'AlignedIndentFilter', +] diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/filters/aligned_indent.py b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/aligned_indent.py new file mode 100644 index 0000000..c04d06d --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/aligned_indent.py @@ -0,0 +1,129 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse import sql, tokens as T +from sqlparse.compat import text_type +from sqlparse.utils import offset, indent + + +class AlignedIndentFilter(object): + join_words = (r'((LEFT\s+|RIGHT\s+|FULL\s+)?' + r'(INNER\s+|OUTER\s+|STRAIGHT\s+)?|' + r'(CROSS\s+|NATURAL\s+)?)?JOIN\b') + split_words = ('FROM', + join_words, 'ON', + 'WHERE', 'AND', 'OR', + 'GROUP', 'HAVING', 'LIMIT', + 'ORDER', 'UNION', 'VALUES', + 'SET', 'BETWEEN', 'EXCEPT') + + def __init__(self, char=' ', n='\n'): + self.n = n + self.offset = 0 + self.indent = 0 + self.char = char + self._max_kwd_len = len('select') + + def nl(self, offset=1): + # offset = 1 represent a single space after SELECT + offset = -len(offset) if not isinstance(offset, int) else offset + # add two for the space and parens + indent = self.indent * (2 + self._max_kwd_len) + + return sql.Token(T.Whitespace, self.n + self.char * ( + self._max_kwd_len + offset + indent + self.offset)) + + def _process_statement(self, tlist): + if tlist.tokens[0].is_whitespace and self.indent == 0: + tlist.tokens.pop(0) + + # process the main query body + self._process(sql.TokenList(tlist.tokens)) + + def _process_parenthesis(self, tlist): + # if this isn't a subquery, don't re-indent + _, token = tlist.token_next_by(m=(T.DML, 'SELECT')) + if token is not None: + with indent(self): + tlist.insert_after(tlist[0], self.nl('SELECT')) + # process the inside of the parantheses + self._process_default(tlist) + + # de-indent last parenthesis + tlist.insert_before(tlist[-1], self.nl()) + + def _process_identifierlist(self, tlist): + # columns being selected + identifiers = list(tlist.get_identifiers()) + identifiers.pop(0) + [tlist.insert_before(token, self.nl()) for token in identifiers] + self._process_default(tlist) + + def _process_case(self, tlist): + offset_ = len('case ') + len('when ') + cases = tlist.get_cases(skip_ws=True) + # align the end as well + end_token = tlist.token_next_by(m=(T.Keyword, 'END'))[1] + cases.append((None, [end_token])) + + condition_width = [len(' '.join(map(text_type, cond))) if cond else 0 + for cond, _ in cases] + max_cond_width = max(condition_width) + + for i, (cond, value) in enumerate(cases): + # cond is None when 'else or end' + stmt = cond[0] if cond else value[0] + + if i > 0: + tlist.insert_before(stmt, self.nl( + offset_ - len(text_type(stmt)))) + if cond: + ws = sql.Token(T.Whitespace, self.char * ( + max_cond_width - condition_width[i])) + tlist.insert_after(cond[-1], ws) + + def _next_token(self, tlist, idx=-1): + split_words = T.Keyword, self.split_words, True + tidx, token = tlist.token_next_by(m=split_words, idx=idx) + # treat "BETWEEN x and y" as a single statement + if token and token.normalized == 'BETWEEN': + tidx, token = self._next_token(tlist, tidx) + if token and token.normalized == 'AND': + tidx, token = self._next_token(tlist, tidx) + return tidx, token + + def _split_kwds(self, tlist): + tidx, token = self._next_token(tlist) + while token: + # joins are special case. only consider the first word as aligner + if token.match(T.Keyword, self.join_words, regex=True): + token_indent = token.value.split()[0] + else: + token_indent = text_type(token) + tlist.insert_before(token, self.nl(token_indent)) + tidx += 1 + tidx, token = self._next_token(tlist, tidx) + + def _process_default(self, tlist): + self._split_kwds(tlist) + # process any sub-sub statements + for sgroup in tlist.get_sublists(): + idx = tlist.token_index(sgroup) + pidx, prev_ = tlist.token_prev(idx) + # HACK: make "group/order by" work. Longer than max_len. + offset_ = 3 if (prev_ and prev_.match(T.Keyword, 'BY')) else 0 + with offset(self, offset_): + self._process(sgroup) + + def _process(self, tlist): + func_name = '_process_{cls}'.format(cls=type(tlist).__name__) + func = getattr(self, func_name.lower(), self._process_default) + func(tlist) + + def process(self, stmt): + self._process(stmt) + return stmt diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/filters/others.py b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/others.py new file mode 100644 index 0000000..3f0e537 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/others.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse import sql, tokens as T +from sqlparse.utils import split_unquoted_newlines + + +class StripCommentsFilter(object): + @staticmethod + def _process(tlist): + def get_next_comment(): + # TODO(andi) Comment types should be unified, see related issue38 + return tlist.token_next_by(i=sql.Comment, t=T.Comment) + + tidx, token = get_next_comment() + while token: + pidx, prev_ = tlist.token_prev(tidx, skip_ws=False) + nidx, next_ = tlist.token_next(tidx, skip_ws=False) + # Replace by whitespace if prev and next exist and if they're not + # whitespaces. This doesn't apply if prev or next is a paranthesis. + if (prev_ is None or next_ is None or + prev_.is_whitespace or prev_.match(T.Punctuation, '(') or + next_.is_whitespace or next_.match(T.Punctuation, ')')): + tlist.tokens.remove(token) + else: + tlist.tokens[tidx] = sql.Token(T.Whitespace, ' ') + + tidx, token = get_next_comment() + + def process(self, stmt): + [self.process(sgroup) for sgroup in stmt.get_sublists()] + StripCommentsFilter._process(stmt) + return stmt + + +class StripWhitespaceFilter(object): + def _stripws(self, tlist): + func_name = '_stripws_{cls}'.format(cls=type(tlist).__name__) + func = getattr(self, func_name.lower(), self._stripws_default) + func(tlist) + + @staticmethod + def _stripws_default(tlist): + last_was_ws = False + is_first_char = True + for token in tlist.tokens: + if token.is_whitespace: + token.value = '' if last_was_ws or is_first_char else ' ' + last_was_ws = token.is_whitespace + is_first_char = False + + def _stripws_identifierlist(self, tlist): + # Removes newlines before commas, see issue140 + last_nl = None + for token in list(tlist.tokens): + if last_nl and token.ttype is T.Punctuation and token.value == ',': + tlist.tokens.remove(last_nl) + last_nl = token if token.is_whitespace else None + + # next_ = tlist.token_next(token, skip_ws=False) + # if (next_ and not next_.is_whitespace and + # token.ttype is T.Punctuation and token.value == ','): + # tlist.insert_after(token, sql.Token(T.Whitespace, ' ')) + return self._stripws_default(tlist) + + def _stripws_parenthesis(self, tlist): + if tlist.tokens[1].is_whitespace: + tlist.tokens.pop(1) + if tlist.tokens[-2].is_whitespace: + tlist.tokens.pop(-2) + self._stripws_default(tlist) + + def process(self, stmt, depth=0): + [self.process(sgroup, depth + 1) for sgroup in stmt.get_sublists()] + self._stripws(stmt) + if depth == 0 and stmt.tokens and stmt.tokens[-1].is_whitespace: + stmt.tokens.pop(-1) + return stmt + + +class SpacesAroundOperatorsFilter(object): + @staticmethod + def _process(tlist): + + ttypes = (T.Operator, T.Comparison) + tidx, token = tlist.token_next_by(t=ttypes) + while token: + nidx, next_ = tlist.token_next(tidx, skip_ws=False) + if next_ and next_.ttype != T.Whitespace: + tlist.insert_after(tidx, sql.Token(T.Whitespace, ' ')) + + pidx, prev_ = tlist.token_prev(tidx, skip_ws=False) + if prev_ and prev_.ttype != T.Whitespace: + tlist.insert_before(tidx, sql.Token(T.Whitespace, ' ')) + tidx += 1 # has to shift since token inserted before it + + # assert tlist.token_index(token) == tidx + tidx, token = tlist.token_next_by(t=ttypes, idx=tidx) + + def process(self, stmt): + [self.process(sgroup) for sgroup in stmt.get_sublists()] + SpacesAroundOperatorsFilter._process(stmt) + return stmt + + +# --------------------------- +# postprocess + +class SerializerUnicode(object): + @staticmethod + def process(stmt): + lines = split_unquoted_newlines(stmt) + return '\n'.join(line.rstrip() for line in lines) diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/filters/output.py b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/output.py new file mode 100644 index 0000000..c3425df --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/output.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse import sql, tokens as T +from sqlparse.compat import text_type + + +class OutputFilter(object): + varname_prefix = '' + + def __init__(self, varname='sql'): + self.varname = self.varname_prefix + varname + self.count = 0 + + def _process(self, stream, varname, has_nl): + raise NotImplementedError + + def process(self, stmt): + self.count += 1 + if self.count > 1: + varname = u'{f.varname}{f.count}'.format(f=self) + else: + varname = self.varname + + has_nl = len(text_type(stmt).strip().splitlines()) > 1 + stmt.tokens = self._process(stmt.tokens, varname, has_nl) + return stmt + + +class OutputPythonFilter(OutputFilter): + def _process(self, stream, varname, has_nl): + # SQL query asignation to varname + if self.count > 1: + yield sql.Token(T.Whitespace, '\n') + yield sql.Token(T.Name, varname) + yield sql.Token(T.Whitespace, ' ') + yield sql.Token(T.Operator, '=') + yield sql.Token(T.Whitespace, ' ') + if has_nl: + yield sql.Token(T.Operator, '(') + yield sql.Token(T.Text, "'") + + # Print the tokens on the quote + for token in stream: + # Token is a new line separator + if token.is_whitespace and '\n' in token.value: + # Close quote and add a new line + yield sql.Token(T.Text, " '") + yield sql.Token(T.Whitespace, '\n') + + # Quote header on secondary lines + yield sql.Token(T.Whitespace, ' ' * (len(varname) + 4)) + yield sql.Token(T.Text, "'") + + # Indentation + after_lb = token.value.split('\n', 1)[1] + if after_lb: + yield sql.Token(T.Whitespace, after_lb) + continue + + # Token has escape chars + elif "'" in token.value: + token.value = token.value.replace("'", "\\'") + + # Put the token + yield sql.Token(T.Text, token.value) + + # Close quote + yield sql.Token(T.Text, "'") + if has_nl: + yield sql.Token(T.Operator, ')') + + +class OutputPHPFilter(OutputFilter): + varname_prefix = '$' + + def _process(self, stream, varname, has_nl): + # SQL query asignation to varname (quote header) + if self.count > 1: + yield sql.Token(T.Whitespace, '\n') + yield sql.Token(T.Name, varname) + yield sql.Token(T.Whitespace, ' ') + if has_nl: + yield sql.Token(T.Whitespace, ' ') + yield sql.Token(T.Operator, '=') + yield sql.Token(T.Whitespace, ' ') + yield sql.Token(T.Text, '"') + + # Print the tokens on the quote + for token in stream: + # Token is a new line separator + if token.is_whitespace and '\n' in token.value: + # Close quote and add a new line + yield sql.Token(T.Text, ' ";') + yield sql.Token(T.Whitespace, '\n') + + # Quote header on secondary lines + yield sql.Token(T.Name, varname) + yield sql.Token(T.Whitespace, ' ') + yield sql.Token(T.Operator, '.=') + yield sql.Token(T.Whitespace, ' ') + yield sql.Token(T.Text, '"') + + # Indentation + after_lb = token.value.split('\n', 1)[1] + if after_lb: + yield sql.Token(T.Whitespace, after_lb) + continue + + # Token has escape chars + elif '"' in token.value: + token.value = token.value.replace('"', '\\"') + + # Put the token + yield sql.Token(T.Text, token.value) + + # Close quote + yield sql.Token(T.Text, '"') + yield sql.Token(T.Punctuation, ';') diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/filters/reindent.py b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/reindent.py new file mode 100644 index 0000000..f077849 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/reindent.py @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse import sql, tokens as T +from sqlparse.compat import text_type +from sqlparse.utils import offset, indent + + +class ReindentFilter(object): + def __init__(self, width=2, char=' ', wrap_after=0, n='\n', + comma_first=False): + self.n = n + self.width = width + self.char = char + self.indent = 0 + self.offset = 0 + self.wrap_after = wrap_after + self.comma_first = comma_first + self._curr_stmt = None + self._last_stmt = None + + def _flatten_up_to_token(self, token): + """Yields all tokens up to token but excluding current.""" + if token.is_group: + token = next(token.flatten()) + + for t in self._curr_stmt.flatten(): + if t == token: + break + yield t + + @property + def leading_ws(self): + return self.offset + self.indent * self.width + + def _get_offset(self, token): + raw = u''.join(map(text_type, self._flatten_up_to_token(token))) + line = (raw or '\n').splitlines()[-1] + # Now take current offset into account and return relative offset. + return len(line) - len(self.char * self.leading_ws) + + def nl(self, offset=0): + return sql.Token( + T.Whitespace, + self.n + self.char * max(0, self.leading_ws + offset)) + + def _next_token(self, tlist, idx=-1): + split_words = ('FROM', 'STRAIGHT_JOIN$', 'JOIN$', 'AND', 'OR', + 'GROUP', 'ORDER', 'UNION', 'VALUES', + 'SET', 'BETWEEN', 'EXCEPT', 'HAVING', 'LIMIT') + m_split = T.Keyword, split_words, True + tidx, token = tlist.token_next_by(m=m_split, idx=idx) + + if token and token.normalized == 'BETWEEN': + tidx, token = self._next_token(tlist, tidx) + + if token and token.normalized == 'AND': + tidx, token = self._next_token(tlist, tidx) + + return tidx, token + + def _split_kwds(self, tlist): + tidx, token = self._next_token(tlist) + while token: + pidx, prev_ = tlist.token_prev(tidx, skip_ws=False) + uprev = text_type(prev_) + + if prev_ and prev_.is_whitespace: + del tlist.tokens[pidx] + tidx -= 1 + + if not (uprev.endswith('\n') or uprev.endswith('\r')): + tlist.insert_before(tidx, self.nl()) + tidx += 1 + + tidx, token = self._next_token(tlist, tidx) + + def _split_statements(self, tlist): + ttypes = T.Keyword.DML, T.Keyword.DDL + tidx, token = tlist.token_next_by(t=ttypes) + while token: + pidx, prev_ = tlist.token_prev(tidx, skip_ws=False) + if prev_ and prev_.is_whitespace: + del tlist.tokens[pidx] + tidx -= 1 + # only break if it's not the first token + if prev_: + tlist.insert_before(tidx, self.nl()) + tidx += 1 + tidx, token = tlist.token_next_by(t=ttypes, idx=tidx) + + def _process(self, tlist): + func_name = '_process_{cls}'.format(cls=type(tlist).__name__) + func = getattr(self, func_name.lower(), self._process_default) + func(tlist) + + def _process_where(self, tlist): + tidx, token = tlist.token_next_by(m=(T.Keyword, 'WHERE')) + # issue121, errors in statement fixed?? + tlist.insert_before(tidx, self.nl()) + + with indent(self): + self._process_default(tlist) + + def _process_parenthesis(self, tlist): + ttypes = T.Keyword.DML, T.Keyword.DDL + _, is_dml_dll = tlist.token_next_by(t=ttypes) + fidx, first = tlist.token_next_by(m=sql.Parenthesis.M_OPEN) + + with indent(self, 1 if is_dml_dll else 0): + tlist.tokens.insert(0, self.nl()) if is_dml_dll else None + with offset(self, self._get_offset(first) + 1): + self._process_default(tlist, not is_dml_dll) + + def _process_identifierlist(self, tlist): + identifiers = list(tlist.get_identifiers()) + first = next(identifiers.pop(0).flatten()) + num_offset = 1 if self.char == '\t' else self._get_offset(first) + if not tlist.within(sql.Function): + with offset(self, num_offset): + position = 0 + for token in identifiers: + # Add 1 for the "," separator + position += len(token.value) + 1 + if position > (self.wrap_after - self.offset): + adjust = 0 + if self.comma_first: + adjust = -2 + _, comma = tlist.token_prev( + tlist.token_index(token)) + if comma is None: + continue + token = comma + tlist.insert_before(token, self.nl(offset=adjust)) + if self.comma_first: + _, ws = tlist.token_next( + tlist.token_index(token), skip_ws=False) + if (ws is not None + and ws.ttype is not T.Text.Whitespace): + tlist.insert_after( + token, sql.Token(T.Whitespace, ' ')) + position = 0 + self._process_default(tlist) + + def _process_case(self, tlist): + iterable = iter(tlist.get_cases()) + cond, _ = next(iterable) + first = next(cond[0].flatten()) + + with offset(self, self._get_offset(tlist[0])): + with offset(self, self._get_offset(first)): + for cond, value in iterable: + token = value[0] if cond is None else cond[0] + tlist.insert_before(token, self.nl()) + + # Line breaks on group level are done. let's add an offset of + # len "when ", "then ", "else " + with offset(self, len("WHEN ")): + self._process_default(tlist) + end_idx, end = tlist.token_next_by(m=sql.Case.M_CLOSE) + if end_idx is not None: + tlist.insert_before(end_idx, self.nl()) + + def _process_default(self, tlist, stmts=True): + self._split_statements(tlist) if stmts else None + self._split_kwds(tlist) + for sgroup in tlist.get_sublists(): + self._process(sgroup) + + def process(self, stmt): + self._curr_stmt = stmt + self._process(stmt) + + if self._last_stmt is not None: + nl = '\n' if text_type(self._last_stmt).endswith('\n') else '\n\n' + stmt.tokens.insert(0, sql.Token(T.Whitespace, nl)) + + self._last_stmt = stmt + return stmt diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/filters/right_margin.py b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/right_margin.py new file mode 100644 index 0000000..c6608c9 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/right_margin.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +import re + +from sqlparse import sql, tokens as T +from sqlparse.compat import text_type + + +# FIXME: Doesn't work +class RightMarginFilter(object): + keep_together = ( + # sql.TypeCast, sql.Identifier, sql.Alias, + ) + + def __init__(self, width=79): + self.width = width + self.line = '' + + def _process(self, group, stream): + for token in stream: + if token.is_whitespace and '\n' in token.value: + if token.value.endswith('\n'): + self.line = '' + else: + self.line = token.value.splitlines()[-1] + elif token.is_group and type(token) not in self.keep_together: + token.tokens = self._process(token, token.tokens) + else: + val = text_type(token) + if len(self.line) + len(val) > self.width: + match = re.search(r'^ +', self.line) + if match is not None: + indent = match.group() + else: + indent = '' + yield sql.Token(T.Whitespace, '\n{0}'.format(indent)) + self.line = indent + self.line += val + yield token + + def process(self, group): + # return + # group.tokens = self._process(group, group.tokens) + raise NotImplementedError diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/filters/tokens.py b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/tokens.py new file mode 100644 index 0000000..a1d4b05 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/filters/tokens.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +from sqlparse import tokens as T +from sqlparse.compat import text_type + + +class _CaseFilter(object): + ttype = None + + def __init__(self, case=None): + case = case or 'upper' + self.convert = getattr(text_type, case) + + def process(self, stream): + for ttype, value in stream: + if ttype in self.ttype: + value = self.convert(value) + yield ttype, value + + +class KeywordCaseFilter(_CaseFilter): + ttype = T.Keyword + + +class IdentifierCaseFilter(_CaseFilter): + ttype = T.Name, T.String.Symbol + + def process(self, stream): + for ttype, value in stream: + if ttype in self.ttype and value.strip()[0] != '"': + value = self.convert(value) + yield ttype, value + + +class TruncateStringFilter(object): + def __init__(self, width, char): + self.width = width + self.char = char + + def process(self, stream): + for ttype, value in stream: + if ttype != T.Literal.String.Single: + yield ttype, value + continue + + if value[:2] == "''": + inner = value[2:-2] + quote = "''" + else: + inner = value[1:-1] + quote = "'" + + if len(inner) > self.width: + value = ''.join((quote, inner[:self.width], self.char, quote)) + yield ttype, value diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/formatter.py b/thesisenv/lib/python3.6/site-packages/sqlparse/formatter.py new file mode 100644 index 0000000..a58d5af --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/formatter.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""SQL formatter""" + +from sqlparse import filters +from sqlparse.exceptions import SQLParseError + + +def validate_options(options): + """Validates options.""" + kwcase = options.get('keyword_case') + if kwcase not in [None, 'upper', 'lower', 'capitalize']: + raise SQLParseError('Invalid value for keyword_case: ' + '{0!r}'.format(kwcase)) + + idcase = options.get('identifier_case') + if idcase not in [None, 'upper', 'lower', 'capitalize']: + raise SQLParseError('Invalid value for identifier_case: ' + '{0!r}'.format(idcase)) + + ofrmt = options.get('output_format') + if ofrmt not in [None, 'sql', 'python', 'php']: + raise SQLParseError('Unknown output format: ' + '{0!r}'.format(ofrmt)) + + strip_comments = options.get('strip_comments', False) + if strip_comments not in [True, False]: + raise SQLParseError('Invalid value for strip_comments: ' + '{0!r}'.format(strip_comments)) + + space_around_operators = options.get('use_space_around_operators', False) + if space_around_operators not in [True, False]: + raise SQLParseError('Invalid value for use_space_around_operators: ' + '{0!r}'.format(space_around_operators)) + + strip_ws = options.get('strip_whitespace', False) + if strip_ws not in [True, False]: + raise SQLParseError('Invalid value for strip_whitespace: ' + '{0!r}'.format(strip_ws)) + + truncate_strings = options.get('truncate_strings') + if truncate_strings is not None: + try: + truncate_strings = int(truncate_strings) + except (ValueError, TypeError): + raise SQLParseError('Invalid value for truncate_strings: ' + '{0!r}'.format(truncate_strings)) + if truncate_strings <= 1: + raise SQLParseError('Invalid value for truncate_strings: ' + '{0!r}'.format(truncate_strings)) + options['truncate_strings'] = truncate_strings + options['truncate_char'] = options.get('truncate_char', '[...]') + + reindent = options.get('reindent', False) + if reindent not in [True, False]: + raise SQLParseError('Invalid value for reindent: ' + '{0!r}'.format(reindent)) + elif reindent: + options['strip_whitespace'] = True + + reindent_aligned = options.get('reindent_aligned', False) + if reindent_aligned not in [True, False]: + raise SQLParseError('Invalid value for reindent_aligned: ' + '{0!r}'.format(reindent)) + elif reindent_aligned: + options['strip_whitespace'] = True + + indent_tabs = options.get('indent_tabs', False) + if indent_tabs not in [True, False]: + raise SQLParseError('Invalid value for indent_tabs: ' + '{0!r}'.format(indent_tabs)) + elif indent_tabs: + options['indent_char'] = '\t' + else: + options['indent_char'] = ' ' + + indent_width = options.get('indent_width', 2) + try: + indent_width = int(indent_width) + except (TypeError, ValueError): + raise SQLParseError('indent_width requires an integer') + if indent_width < 1: + raise SQLParseError('indent_width requires a positive integer') + options['indent_width'] = indent_width + + wrap_after = options.get('wrap_after', 0) + try: + wrap_after = int(wrap_after) + except (TypeError, ValueError): + raise SQLParseError('wrap_after requires an integer') + if wrap_after < 0: + raise SQLParseError('wrap_after requires a positive integer') + options['wrap_after'] = wrap_after + + comma_first = options.get('comma_first', False) + if comma_first not in [True, False]: + raise SQLParseError('comma_first requires a boolean value') + options['comma_first'] = comma_first + + right_margin = options.get('right_margin') + if right_margin is not None: + try: + right_margin = int(right_margin) + except (TypeError, ValueError): + raise SQLParseError('right_margin requires an integer') + if right_margin < 10: + raise SQLParseError('right_margin requires an integer > 10') + options['right_margin'] = right_margin + + return options + + +def build_filter_stack(stack, options): + """Setup and return a filter stack. + + Args: + stack: :class:`~sqlparse.filters.FilterStack` instance + options: Dictionary with options validated by validate_options. + """ + # Token filter + if options.get('keyword_case'): + stack.preprocess.append( + filters.KeywordCaseFilter(options['keyword_case'])) + + if options.get('identifier_case'): + stack.preprocess.append( + filters.IdentifierCaseFilter(options['identifier_case'])) + + if options.get('truncate_strings'): + stack.preprocess.append(filters.TruncateStringFilter( + width=options['truncate_strings'], char=options['truncate_char'])) + + if options.get('use_space_around_operators', False): + stack.enable_grouping() + stack.stmtprocess.append(filters.SpacesAroundOperatorsFilter()) + + # After grouping + if options.get('strip_comments'): + stack.enable_grouping() + stack.stmtprocess.append(filters.StripCommentsFilter()) + + if options.get('strip_whitespace') or options.get('reindent'): + stack.enable_grouping() + stack.stmtprocess.append(filters.StripWhitespaceFilter()) + + if options.get('reindent'): + stack.enable_grouping() + stack.stmtprocess.append( + filters.ReindentFilter(char=options['indent_char'], + width=options['indent_width'], + wrap_after=options['wrap_after'], + comma_first=options['comma_first'])) + + if options.get('reindent_aligned', False): + stack.enable_grouping() + stack.stmtprocess.append( + filters.AlignedIndentFilter(char=options['indent_char'])) + + if options.get('right_margin'): + stack.enable_grouping() + stack.stmtprocess.append( + filters.RightMarginFilter(width=options['right_margin'])) + + # Serializer + if options.get('output_format'): + frmt = options['output_format'] + if frmt.lower() == 'php': + fltr = filters.OutputPHPFilter() + elif frmt.lower() == 'python': + fltr = filters.OutputPythonFilter() + else: + fltr = None + if fltr is not None: + stack.postprocess.append(fltr) + + return stack diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/keywords.py b/thesisenv/lib/python3.6/site-packages/sqlparse/keywords.py new file mode 100644 index 0000000..a1242ab --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/keywords.py @@ -0,0 +1,817 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +import re + +from sqlparse import tokens + + +def is_keyword(value): + val = value.upper() + return (KEYWORDS_COMMON.get(val) or + KEYWORDS_ORACLE.get(val) or + KEYWORDS_PLPGSQL.get(val) or + KEYWORDS.get(val, tokens.Name)), value + + +SQL_REGEX = { + 'root': [ + (r'(--|# )\+.*?(\r\n|\r|\n|$)', tokens.Comment.Single.Hint), + (r'/\*\+[\s\S]*?\*/', tokens.Comment.Multiline.Hint), + + (r'(--|# ).*?(\r\n|\r|\n|$)', tokens.Comment.Single), + (r'/\*[\s\S]*?\*/', tokens.Comment.Multiline), + + (r'(\r\n|\r|\n)', tokens.Newline), + (r'\s+', tokens.Whitespace), + + (r':=', tokens.Assignment), + (r'::', tokens.Punctuation), + + (r'\*', tokens.Wildcard), + + (r"`(``|[^`])*`", tokens.Name), + (r"´(´´|[^´])*´", tokens.Name), + (r'(\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1', tokens.Literal), + + (r'\?', tokens.Name.Placeholder), + (r'%(\(\w+\))?s', tokens.Name.Placeholder), + (r'(?=~!]+', tokens.Operator.Comparison), + (r'[+/@#%^&|`?^-]+', tokens.Operator), + ]} + +FLAGS = re.IGNORECASE | re.UNICODE +SQL_REGEX = [(re.compile(rx, FLAGS).match, tt) for rx, tt in SQL_REGEX['root']] + +KEYWORDS = { + 'ABORT': tokens.Keyword, + 'ABS': tokens.Keyword, + 'ABSOLUTE': tokens.Keyword, + 'ACCESS': tokens.Keyword, + 'ADA': tokens.Keyword, + 'ADD': tokens.Keyword, + 'ADMIN': tokens.Keyword, + 'AFTER': tokens.Keyword, + 'AGGREGATE': tokens.Keyword, + 'ALIAS': tokens.Keyword, + 'ALL': tokens.Keyword, + 'ALLOCATE': tokens.Keyword, + 'ANALYSE': tokens.Keyword, + 'ANALYZE': tokens.Keyword, + 'ANY': tokens.Keyword, + 'ARRAYLEN': tokens.Keyword, + 'ARE': tokens.Keyword, + 'ASC': tokens.Keyword.Order, + 'ASENSITIVE': tokens.Keyword, + 'ASSERTION': tokens.Keyword, + 'ASSIGNMENT': tokens.Keyword, + 'ASYMMETRIC': tokens.Keyword, + 'AT': tokens.Keyword, + 'ATOMIC': tokens.Keyword, + 'AUDIT': tokens.Keyword, + 'AUTHORIZATION': tokens.Keyword, + 'AUTO_INCREMENT': tokens.Keyword, + 'AVG': tokens.Keyword, + + 'BACKWARD': tokens.Keyword, + 'BEFORE': tokens.Keyword, + 'BEGIN': tokens.Keyword, + 'BETWEEN': tokens.Keyword, + 'BITVAR': tokens.Keyword, + 'BIT_LENGTH': tokens.Keyword, + 'BOTH': tokens.Keyword, + 'BREADTH': tokens.Keyword, + + # 'C': tokens.Keyword, # most likely this is an alias + 'CACHE': tokens.Keyword, + 'CALL': tokens.Keyword, + 'CALLED': tokens.Keyword, + 'CARDINALITY': tokens.Keyword, + 'CASCADE': tokens.Keyword, + 'CASCADED': tokens.Keyword, + 'CAST': tokens.Keyword, + 'CATALOG': tokens.Keyword, + 'CATALOG_NAME': tokens.Keyword, + 'CHAIN': tokens.Keyword, + 'CHARACTERISTICS': tokens.Keyword, + 'CHARACTER_LENGTH': tokens.Keyword, + 'CHARACTER_SET_CATALOG': tokens.Keyword, + 'CHARACTER_SET_NAME': tokens.Keyword, + 'CHARACTER_SET_SCHEMA': tokens.Keyword, + 'CHAR_LENGTH': tokens.Keyword, + 'CHARSET': tokens.Keyword, + 'CHECK': tokens.Keyword, + 'CHECKED': tokens.Keyword, + 'CHECKPOINT': tokens.Keyword, + 'CLASS': tokens.Keyword, + 'CLASS_ORIGIN': tokens.Keyword, + 'CLOB': tokens.Keyword, + 'CLOSE': tokens.Keyword, + 'CLUSTER': tokens.Keyword, + 'COALESCE': tokens.Keyword, + 'COBOL': tokens.Keyword, + 'COLLATE': tokens.Keyword, + 'COLLATION': tokens.Keyword, + 'COLLATION_CATALOG': tokens.Keyword, + 'COLLATION_NAME': tokens.Keyword, + 'COLLATION_SCHEMA': tokens.Keyword, + 'COLLECT': tokens.Keyword, + 'COLUMN': tokens.Keyword, + 'COLUMN_NAME': tokens.Keyword, + 'COMPRESS': tokens.Keyword, + 'COMMAND_FUNCTION': tokens.Keyword, + 'COMMAND_FUNCTION_CODE': tokens.Keyword, + 'COMMENT': tokens.Keyword, + 'COMMIT': tokens.Keyword.DML, + 'COMMITTED': tokens.Keyword, + 'COMPLETION': tokens.Keyword, + 'CONCURRENTLY': tokens.Keyword, + 'CONDITION_NUMBER': tokens.Keyword, + 'CONNECT': tokens.Keyword, + 'CONNECTION': tokens.Keyword, + 'CONNECTION_NAME': tokens.Keyword, + 'CONSTRAINT': tokens.Keyword, + 'CONSTRAINTS': tokens.Keyword, + 'CONSTRAINT_CATALOG': tokens.Keyword, + 'CONSTRAINT_NAME': tokens.Keyword, + 'CONSTRAINT_SCHEMA': tokens.Keyword, + 'CONSTRUCTOR': tokens.Keyword, + 'CONTAINS': tokens.Keyword, + 'CONTINUE': tokens.Keyword, + 'CONVERSION': tokens.Keyword, + 'CONVERT': tokens.Keyword, + 'COPY': tokens.Keyword, + 'CORRESPONTING': tokens.Keyword, + 'COUNT': tokens.Keyword, + 'CREATEDB': tokens.Keyword, + 'CREATEUSER': tokens.Keyword, + 'CROSS': tokens.Keyword, + 'CUBE': tokens.Keyword, + 'CURRENT': tokens.Keyword, + 'CURRENT_DATE': tokens.Keyword, + 'CURRENT_PATH': tokens.Keyword, + 'CURRENT_ROLE': tokens.Keyword, + 'CURRENT_TIME': tokens.Keyword, + 'CURRENT_TIMESTAMP': tokens.Keyword, + 'CURRENT_USER': tokens.Keyword, + 'CURSOR': tokens.Keyword, + 'CURSOR_NAME': tokens.Keyword, + 'CYCLE': tokens.Keyword, + + 'DATA': tokens.Keyword, + 'DATABASE': tokens.Keyword, + 'DATETIME_INTERVAL_CODE': tokens.Keyword, + 'DATETIME_INTERVAL_PRECISION': tokens.Keyword, + 'DAY': tokens.Keyword, + 'DEALLOCATE': tokens.Keyword, + 'DECLARE': tokens.Keyword, + 'DEFAULT': tokens.Keyword, + 'DEFAULTS': tokens.Keyword, + 'DEFERRABLE': tokens.Keyword, + 'DEFERRED': tokens.Keyword, + 'DEFINED': tokens.Keyword, + 'DEFINER': tokens.Keyword, + 'DELIMITER': tokens.Keyword, + 'DELIMITERS': tokens.Keyword, + 'DEREF': tokens.Keyword, + 'DESC': tokens.Keyword.Order, + 'DESCRIBE': tokens.Keyword, + 'DESCRIPTOR': tokens.Keyword, + 'DESTROY': tokens.Keyword, + 'DESTRUCTOR': tokens.Keyword, + 'DETERMINISTIC': tokens.Keyword, + 'DIAGNOSTICS': tokens.Keyword, + 'DICTIONARY': tokens.Keyword, + 'DISABLE': tokens.Keyword, + 'DISCONNECT': tokens.Keyword, + 'DISPATCH': tokens.Keyword, + 'DO': tokens.Keyword, + 'DOMAIN': tokens.Keyword, + 'DYNAMIC': tokens.Keyword, + 'DYNAMIC_FUNCTION': tokens.Keyword, + 'DYNAMIC_FUNCTION_CODE': tokens.Keyword, + + 'EACH': tokens.Keyword, + 'ENABLE': tokens.Keyword, + 'ENCODING': tokens.Keyword, + 'ENCRYPTED': tokens.Keyword, + 'END-EXEC': tokens.Keyword, + 'ENGINE': tokens.Keyword, + 'EQUALS': tokens.Keyword, + 'ESCAPE': tokens.Keyword, + 'EVERY': tokens.Keyword, + 'EXCEPT': tokens.Keyword, + 'EXCEPTION': tokens.Keyword, + 'EXCLUDING': tokens.Keyword, + 'EXCLUSIVE': tokens.Keyword, + 'EXEC': tokens.Keyword, + 'EXECUTE': tokens.Keyword, + 'EXISTING': tokens.Keyword, + 'EXISTS': tokens.Keyword, + 'EXTERNAL': tokens.Keyword, + 'EXTRACT': tokens.Keyword, + + 'FALSE': tokens.Keyword, + 'FETCH': tokens.Keyword, + 'FILE': tokens.Keyword, + 'FINAL': tokens.Keyword, + 'FIRST': tokens.Keyword, + 'FORCE': tokens.Keyword, + 'FOREACH': tokens.Keyword, + 'FOREIGN': tokens.Keyword, + 'FORTRAN': tokens.Keyword, + 'FORWARD': tokens.Keyword, + 'FOUND': tokens.Keyword, + 'FREE': tokens.Keyword, + 'FREEZE': tokens.Keyword, + 'FULL': tokens.Keyword, + 'FUNCTION': tokens.Keyword, + + # 'G': tokens.Keyword, + 'GENERAL': tokens.Keyword, + 'GENERATED': tokens.Keyword, + 'GET': tokens.Keyword, + 'GLOBAL': tokens.Keyword, + 'GO': tokens.Keyword, + 'GOTO': tokens.Keyword, + 'GRANT': tokens.Keyword, + 'GRANTED': tokens.Keyword, + 'GROUPING': tokens.Keyword, + + 'HANDLER': tokens.Keyword, + 'HAVING': tokens.Keyword, + 'HIERARCHY': tokens.Keyword, + 'HOLD': tokens.Keyword, + 'HOST': tokens.Keyword, + + 'IDENTIFIED': tokens.Keyword, + 'IDENTITY': tokens.Keyword, + 'IGNORE': tokens.Keyword, + 'ILIKE': tokens.Keyword, + 'IMMEDIATE': tokens.Keyword, + 'IMMUTABLE': tokens.Keyword, + + 'IMPLEMENTATION': tokens.Keyword, + 'IMPLICIT': tokens.Keyword, + 'INCLUDING': tokens.Keyword, + 'INCREMENT': tokens.Keyword, + 'INDEX': tokens.Keyword, + + 'INDITCATOR': tokens.Keyword, + 'INFIX': tokens.Keyword, + 'INHERITS': tokens.Keyword, + 'INITIAL': tokens.Keyword, + 'INITIALIZE': tokens.Keyword, + 'INITIALLY': tokens.Keyword, + 'INOUT': tokens.Keyword, + 'INPUT': tokens.Keyword, + 'INSENSITIVE': tokens.Keyword, + 'INSTANTIABLE': tokens.Keyword, + 'INSTEAD': tokens.Keyword, + 'INTERSECT': tokens.Keyword, + 'INTO': tokens.Keyword, + 'INVOKER': tokens.Keyword, + 'IS': tokens.Keyword, + 'ISNULL': tokens.Keyword, + 'ISOLATION': tokens.Keyword, + 'ITERATE': tokens.Keyword, + + # 'K': tokens.Keyword, + 'KEY': tokens.Keyword, + 'KEY_MEMBER': tokens.Keyword, + 'KEY_TYPE': tokens.Keyword, + + 'LANCOMPILER': tokens.Keyword, + 'LANGUAGE': tokens.Keyword, + 'LARGE': tokens.Keyword, + 'LAST': tokens.Keyword, + 'LATERAL': tokens.Keyword, + 'LEADING': tokens.Keyword, + 'LENGTH': tokens.Keyword, + 'LESS': tokens.Keyword, + 'LEVEL': tokens.Keyword, + 'LIMIT': tokens.Keyword, + 'LISTEN': tokens.Keyword, + 'LOAD': tokens.Keyword, + 'LOCAL': tokens.Keyword, + 'LOCALTIME': tokens.Keyword, + 'LOCALTIMESTAMP': tokens.Keyword, + 'LOCATION': tokens.Keyword, + 'LOCATOR': tokens.Keyword, + 'LOCK': tokens.Keyword, + 'LOWER': tokens.Keyword, + + # 'M': tokens.Keyword, + 'MAP': tokens.Keyword, + 'MATCH': tokens.Keyword, + 'MAXEXTENTS': tokens.Keyword, + 'MAXVALUE': tokens.Keyword, + 'MESSAGE_LENGTH': tokens.Keyword, + 'MESSAGE_OCTET_LENGTH': tokens.Keyword, + 'MESSAGE_TEXT': tokens.Keyword, + 'METHOD': tokens.Keyword, + 'MINUTE': tokens.Keyword, + 'MINUS': tokens.Keyword, + 'MINVALUE': tokens.Keyword, + 'MOD': tokens.Keyword, + 'MODE': tokens.Keyword, + 'MODIFIES': tokens.Keyword, + 'MODIFY': tokens.Keyword, + 'MONTH': tokens.Keyword, + 'MORE': tokens.Keyword, + 'MOVE': tokens.Keyword, + 'MUMPS': tokens.Keyword, + + 'NAMES': tokens.Keyword, + 'NATIONAL': tokens.Keyword, + 'NATURAL': tokens.Keyword, + 'NCHAR': tokens.Keyword, + 'NCLOB': tokens.Keyword, + 'NEW': tokens.Keyword, + 'NEXT': tokens.Keyword, + 'NO': tokens.Keyword, + 'NOAUDIT': tokens.Keyword, + 'NOCOMPRESS': tokens.Keyword, + 'NOCREATEDB': tokens.Keyword, + 'NOCREATEUSER': tokens.Keyword, + 'NONE': tokens.Keyword, + 'NOT': tokens.Keyword, + 'NOTFOUND': tokens.Keyword, + 'NOTHING': tokens.Keyword, + 'NOTIFY': tokens.Keyword, + 'NOTNULL': tokens.Keyword, + 'NOWAIT': tokens.Keyword, + 'NULL': tokens.Keyword, + 'NULLABLE': tokens.Keyword, + 'NULLIF': tokens.Keyword, + + 'OBJECT': tokens.Keyword, + 'OCTET_LENGTH': tokens.Keyword, + 'OF': tokens.Keyword, + 'OFF': tokens.Keyword, + 'OFFLINE': tokens.Keyword, + 'OFFSET': tokens.Keyword, + 'OIDS': tokens.Keyword, + 'OLD': tokens.Keyword, + 'ONLINE': tokens.Keyword, + 'ONLY': tokens.Keyword, + 'OPEN': tokens.Keyword, + 'OPERATION': tokens.Keyword, + 'OPERATOR': tokens.Keyword, + 'OPTION': tokens.Keyword, + 'OPTIONS': tokens.Keyword, + 'ORDINALITY': tokens.Keyword, + 'OUT': tokens.Keyword, + 'OUTPUT': tokens.Keyword, + 'OVERLAPS': tokens.Keyword, + 'OVERLAY': tokens.Keyword, + 'OVERRIDING': tokens.Keyword, + 'OWNER': tokens.Keyword, + + 'PAD': tokens.Keyword, + 'PARAMETER': tokens.Keyword, + 'PARAMETERS': tokens.Keyword, + 'PARAMETER_MODE': tokens.Keyword, + 'PARAMATER_NAME': tokens.Keyword, + 'PARAMATER_ORDINAL_POSITION': tokens.Keyword, + 'PARAMETER_SPECIFIC_CATALOG': tokens.Keyword, + 'PARAMETER_SPECIFIC_NAME': tokens.Keyword, + 'PARAMATER_SPECIFIC_SCHEMA': tokens.Keyword, + 'PARTIAL': tokens.Keyword, + 'PASCAL': tokens.Keyword, + 'PCTFREE': tokens.Keyword, + 'PENDANT': tokens.Keyword, + 'PLACING': tokens.Keyword, + 'PLI': tokens.Keyword, + 'POSITION': tokens.Keyword, + 'POSTFIX': tokens.Keyword, + 'PRECISION': tokens.Keyword, + 'PREFIX': tokens.Keyword, + 'PREORDER': tokens.Keyword, + 'PREPARE': tokens.Keyword, + 'PRESERVE': tokens.Keyword, + 'PRIMARY': tokens.Keyword, + 'PRIOR': tokens.Keyword, + 'PRIVILEGES': tokens.Keyword, + 'PROCEDURAL': tokens.Keyword, + 'PROCEDURE': tokens.Keyword, + 'PUBLIC': tokens.Keyword, + + 'RAISE': tokens.Keyword, + 'RAW': tokens.Keyword, + 'READ': tokens.Keyword, + 'READS': tokens.Keyword, + 'RECHECK': tokens.Keyword, + 'RECURSIVE': tokens.Keyword, + 'REF': tokens.Keyword, + 'REFERENCES': tokens.Keyword, + 'REFERENCING': tokens.Keyword, + 'REINDEX': tokens.Keyword, + 'RELATIVE': tokens.Keyword, + 'RENAME': tokens.Keyword, + 'REPEATABLE': tokens.Keyword, + 'RESET': tokens.Keyword, + 'RESOURCE': tokens.Keyword, + 'RESTART': tokens.Keyword, + 'RESTRICT': tokens.Keyword, + 'RESULT': tokens.Keyword, + 'RETURN': tokens.Keyword, + 'RETURNED_LENGTH': tokens.Keyword, + 'RETURNED_OCTET_LENGTH': tokens.Keyword, + 'RETURNED_SQLSTATE': tokens.Keyword, + 'RETURNING': tokens.Keyword, + 'RETURNS': tokens.Keyword, + 'REVOKE': tokens.Keyword, + 'RIGHT': tokens.Keyword, + 'ROLE': tokens.Keyword, + 'ROLLBACK': tokens.Keyword.DML, + 'ROLLUP': tokens.Keyword, + 'ROUTINE': tokens.Keyword, + 'ROUTINE_CATALOG': tokens.Keyword, + 'ROUTINE_NAME': tokens.Keyword, + 'ROUTINE_SCHEMA': tokens.Keyword, + 'ROW': tokens.Keyword, + 'ROWS': tokens.Keyword, + 'ROW_COUNT': tokens.Keyword, + 'RULE': tokens.Keyword, + + 'SAVE_POINT': tokens.Keyword, + 'SCALE': tokens.Keyword, + 'SCHEMA': tokens.Keyword, + 'SCHEMA_NAME': tokens.Keyword, + 'SCOPE': tokens.Keyword, + 'SCROLL': tokens.Keyword, + 'SEARCH': tokens.Keyword, + 'SECOND': tokens.Keyword, + 'SECURITY': tokens.Keyword, + 'SELF': tokens.Keyword, + 'SENSITIVE': tokens.Keyword, + 'SEQUENCE': tokens.Keyword, + 'SERIALIZABLE': tokens.Keyword, + 'SERVER_NAME': tokens.Keyword, + 'SESSION': tokens.Keyword, + 'SESSION_USER': tokens.Keyword, + 'SETOF': tokens.Keyword, + 'SETS': tokens.Keyword, + 'SHARE': tokens.Keyword, + 'SHOW': tokens.Keyword, + 'SIMILAR': tokens.Keyword, + 'SIMPLE': tokens.Keyword, + 'SIZE': tokens.Keyword, + 'SOME': tokens.Keyword, + 'SOURCE': tokens.Keyword, + 'SPACE': tokens.Keyword, + 'SPECIFIC': tokens.Keyword, + 'SPECIFICTYPE': tokens.Keyword, + 'SPECIFIC_NAME': tokens.Keyword, + 'SQL': tokens.Keyword, + 'SQLBUF': tokens.Keyword, + 'SQLCODE': tokens.Keyword, + 'SQLERROR': tokens.Keyword, + 'SQLEXCEPTION': tokens.Keyword, + 'SQLSTATE': tokens.Keyword, + 'SQLWARNING': tokens.Keyword, + 'STABLE': tokens.Keyword, + 'START': tokens.Keyword.DML, + # 'STATE': tokens.Keyword, + 'STATEMENT': tokens.Keyword, + 'STATIC': tokens.Keyword, + 'STATISTICS': tokens.Keyword, + 'STDIN': tokens.Keyword, + 'STDOUT': tokens.Keyword, + 'STORAGE': tokens.Keyword, + 'STRICT': tokens.Keyword, + 'STRUCTURE': tokens.Keyword, + 'STYPE': tokens.Keyword, + 'SUBCLASS_ORIGIN': tokens.Keyword, + 'SUBLIST': tokens.Keyword, + 'SUBSTRING': tokens.Keyword, + 'SUCCESSFUL': tokens.Keyword, + 'SUM': tokens.Keyword, + 'SYMMETRIC': tokens.Keyword, + 'SYNONYM': tokens.Keyword, + 'SYSID': tokens.Keyword, + 'SYSTEM': tokens.Keyword, + 'SYSTEM_USER': tokens.Keyword, + + 'TABLE': tokens.Keyword, + 'TABLE_NAME': tokens.Keyword, + 'TEMP': tokens.Keyword, + 'TEMPLATE': tokens.Keyword, + 'TEMPORARY': tokens.Keyword, + 'TERMINATE': tokens.Keyword, + 'THAN': tokens.Keyword, + 'TIMESTAMP': tokens.Keyword, + 'TIMEZONE_HOUR': tokens.Keyword, + 'TIMEZONE_MINUTE': tokens.Keyword, + 'TO': tokens.Keyword, + 'TOAST': tokens.Keyword, + 'TRAILING': tokens.Keyword, + 'TRANSATION': tokens.Keyword, + 'TRANSACTIONS_COMMITTED': tokens.Keyword, + 'TRANSACTIONS_ROLLED_BACK': tokens.Keyword, + 'TRANSATION_ACTIVE': tokens.Keyword, + 'TRANSFORM': tokens.Keyword, + 'TRANSFORMS': tokens.Keyword, + 'TRANSLATE': tokens.Keyword, + 'TRANSLATION': tokens.Keyword, + 'TREAT': tokens.Keyword, + 'TRIGGER': tokens.Keyword, + 'TRIGGER_CATALOG': tokens.Keyword, + 'TRIGGER_NAME': tokens.Keyword, + 'TRIGGER_SCHEMA': tokens.Keyword, + 'TRIM': tokens.Keyword, + 'TRUE': tokens.Keyword, + 'TRUNCATE': tokens.Keyword, + 'TRUSTED': tokens.Keyword, + 'TYPE': tokens.Keyword, + + 'UID': tokens.Keyword, + 'UNCOMMITTED': tokens.Keyword, + 'UNDER': tokens.Keyword, + 'UNENCRYPTED': tokens.Keyword, + 'UNION': tokens.Keyword, + 'UNIQUE': tokens.Keyword, + 'UNKNOWN': tokens.Keyword, + 'UNLISTEN': tokens.Keyword, + 'UNNAMED': tokens.Keyword, + 'UNNEST': tokens.Keyword, + 'UNTIL': tokens.Keyword, + 'UPPER': tokens.Keyword, + 'USAGE': tokens.Keyword, + 'USE': tokens.Keyword, + 'USER': tokens.Keyword, + 'USER_DEFINED_TYPE_CATALOG': tokens.Keyword, + 'USER_DEFINED_TYPE_NAME': tokens.Keyword, + 'USER_DEFINED_TYPE_SCHEMA': tokens.Keyword, + 'USING': tokens.Keyword, + + 'VACUUM': tokens.Keyword, + 'VALID': tokens.Keyword, + 'VALIDATE': tokens.Keyword, + 'VALIDATOR': tokens.Keyword, + 'VALUES': tokens.Keyword, + 'VARIABLE': tokens.Keyword, + 'VERBOSE': tokens.Keyword, + 'VERSION': tokens.Keyword, + 'VIEW': tokens.Keyword, + 'VOLATILE': tokens.Keyword, + + 'WHENEVER': tokens.Keyword, + 'WITH': tokens.Keyword.CTE, + 'WITHOUT': tokens.Keyword, + 'WORK': tokens.Keyword, + 'WRITE': tokens.Keyword, + + 'YEAR': tokens.Keyword, + + 'ZONE': tokens.Keyword, + + # Name.Builtin + 'ARRAY': tokens.Name.Builtin, + 'BIGINT': tokens.Name.Builtin, + 'BINARY': tokens.Name.Builtin, + 'BIT': tokens.Name.Builtin, + 'BLOB': tokens.Name.Builtin, + 'BOOLEAN': tokens.Name.Builtin, + 'CHAR': tokens.Name.Builtin, + 'CHARACTER': tokens.Name.Builtin, + 'DATE': tokens.Name.Builtin, + 'DEC': tokens.Name.Builtin, + 'DECIMAL': tokens.Name.Builtin, + 'FLOAT': tokens.Name.Builtin, + 'INT': tokens.Name.Builtin, + 'INT8': tokens.Name.Builtin, + 'INTEGER': tokens.Name.Builtin, + 'INTERVAL': tokens.Name.Builtin, + 'LONG': tokens.Name.Builtin, + 'NUMBER': tokens.Name.Builtin, + 'NUMERIC': tokens.Name.Builtin, + 'REAL': tokens.Name.Builtin, + 'ROWID': tokens.Name.Builtin, + 'ROWLABEL': tokens.Name.Builtin, + 'ROWNUM': tokens.Name.Builtin, + 'SERIAL': tokens.Name.Builtin, + 'SERIAL8': tokens.Name.Builtin, + 'SIGNED': tokens.Name.Builtin, + 'SMALLINT': tokens.Name.Builtin, + 'SYSDATE': tokens.Name, + 'TEXT': tokens.Name.Builtin, + 'TINYINT': tokens.Name.Builtin, + 'UNSIGNED': tokens.Name.Builtin, + 'VARCHAR': tokens.Name.Builtin, + 'VARCHAR2': tokens.Name.Builtin, + 'VARYING': tokens.Name.Builtin, +} + +KEYWORDS_COMMON = { + 'SELECT': tokens.Keyword.DML, + 'INSERT': tokens.Keyword.DML, + 'DELETE': tokens.Keyword.DML, + 'UPDATE': tokens.Keyword.DML, + 'REPLACE': tokens.Keyword.DML, + 'MERGE': tokens.Keyword.DML, + 'DROP': tokens.Keyword.DDL, + 'CREATE': tokens.Keyword.DDL, + 'ALTER': tokens.Keyword.DDL, + + 'WHERE': tokens.Keyword, + 'FROM': tokens.Keyword, + 'INNER': tokens.Keyword, + 'JOIN': tokens.Keyword, + 'STRAIGHT_JOIN': tokens.Keyword, + 'AND': tokens.Keyword, + 'OR': tokens.Keyword, + 'LIKE': tokens.Keyword, + 'ON': tokens.Keyword, + 'IN': tokens.Keyword, + 'SET': tokens.Keyword, + + 'BY': tokens.Keyword, + 'GROUP': tokens.Keyword, + 'ORDER': tokens.Keyword, + 'LEFT': tokens.Keyword, + 'OUTER': tokens.Keyword, + 'FULL': tokens.Keyword, + + 'IF': tokens.Keyword, + 'END': tokens.Keyword, + 'THEN': tokens.Keyword, + 'LOOP': tokens.Keyword, + 'AS': tokens.Keyword, + 'ELSE': tokens.Keyword, + 'FOR': tokens.Keyword, + 'WHILE': tokens.Keyword, + + 'CASE': tokens.Keyword, + 'WHEN': tokens.Keyword, + 'MIN': tokens.Keyword, + 'MAX': tokens.Keyword, + 'DISTINCT': tokens.Keyword, +} + +KEYWORDS_ORACLE = { + 'ARCHIVE': tokens.Keyword, + 'ARCHIVELOG': tokens.Keyword, + + 'BACKUP': tokens.Keyword, + 'BECOME': tokens.Keyword, + 'BLOCK': tokens.Keyword, + 'BODY': tokens.Keyword, + + 'CANCEL': tokens.Keyword, + 'CHANGE': tokens.Keyword, + 'COMPILE': tokens.Keyword, + 'CONTENTS': tokens.Keyword, + 'CONTROLFILE': tokens.Keyword, + + 'DATAFILE': tokens.Keyword, + 'DBA': tokens.Keyword, + 'DISMOUNT': tokens.Keyword, + 'DOUBLE': tokens.Keyword, + 'DUMP': tokens.Keyword, + + 'EVENTS': tokens.Keyword, + 'EXCEPTIONS': tokens.Keyword, + 'EXPLAIN': tokens.Keyword, + 'EXTENT': tokens.Keyword, + 'EXTERNALLY': tokens.Keyword, + + 'FLUSH': tokens.Keyword, + 'FREELIST': tokens.Keyword, + 'FREELISTS': tokens.Keyword, + + # groups seems too common as table name + # 'GROUPS': tokens.Keyword, + + 'INDICATOR': tokens.Keyword, + 'INITRANS': tokens.Keyword, + 'INSTANCE': tokens.Keyword, + + 'LAYER': tokens.Keyword, + 'LINK': tokens.Keyword, + 'LISTS': tokens.Keyword, + 'LOGFILE': tokens.Keyword, + + 'MANAGE': tokens.Keyword, + 'MANUAL': tokens.Keyword, + 'MAXDATAFILES': tokens.Keyword, + 'MAXINSTANCES': tokens.Keyword, + 'MAXLOGFILES': tokens.Keyword, + 'MAXLOGHISTORY': tokens.Keyword, + 'MAXLOGMEMBERS': tokens.Keyword, + 'MAXTRANS': tokens.Keyword, + 'MINEXTENTS': tokens.Keyword, + 'MODULE': tokens.Keyword, + 'MOUNT': tokens.Keyword, + + 'NOARCHIVELOG': tokens.Keyword, + 'NOCACHE': tokens.Keyword, + 'NOCYCLE': tokens.Keyword, + 'NOMAXVALUE': tokens.Keyword, + 'NOMINVALUE': tokens.Keyword, + 'NOORDER': tokens.Keyword, + 'NORESETLOGS': tokens.Keyword, + 'NORMAL': tokens.Keyword, + 'NOSORT': tokens.Keyword, + + 'OPTIMAL': tokens.Keyword, + 'OWN': tokens.Keyword, + + 'PACKAGE': tokens.Keyword, + 'PARALLEL': tokens.Keyword, + 'PCTINCREASE': tokens.Keyword, + 'PCTUSED': tokens.Keyword, + 'PLAN': tokens.Keyword, + 'PRIVATE': tokens.Keyword, + 'PROFILE': tokens.Keyword, + + 'QUOTA': tokens.Keyword, + + 'RECOVER': tokens.Keyword, + 'RESETLOGS': tokens.Keyword, + 'RESTRICTED': tokens.Keyword, + 'REUSE': tokens.Keyword, + 'ROLES': tokens.Keyword, + + 'SAVEPOINT': tokens.Keyword, + 'SCN': tokens.Keyword, + 'SECTION': tokens.Keyword, + 'SEGMENT': tokens.Keyword, + 'SHARED': tokens.Keyword, + 'SNAPSHOT': tokens.Keyword, + 'SORT': tokens.Keyword, + 'STATEMENT_ID': tokens.Keyword, + 'STOP': tokens.Keyword, + 'SWITCH': tokens.Keyword, + + 'TABLES': tokens.Keyword, + 'TABLESPACE': tokens.Keyword, + 'THREAD': tokens.Keyword, + 'TIME': tokens.Keyword, + 'TRACING': tokens.Keyword, + 'TRANSACTION': tokens.Keyword, + 'TRIGGERS': tokens.Keyword, + + 'UNLIMITED': tokens.Keyword, + 'UNLOCK': tokens.Keyword, +} + +# PostgreSQL Syntax +KEYWORDS_PLPGSQL = { + 'PARTITION': tokens.Keyword, + 'OVER': tokens.Keyword, + 'PERFORM': tokens.Keyword, + 'NOTICE': tokens.Keyword, + 'PLPGSQL': tokens.Keyword, + 'INHERIT': tokens.Keyword, + 'INDEXES': tokens.Keyword, + + 'FOR': tokens.Keyword, + 'IN': tokens.Keyword, + 'LOOP': tokens.Keyword, +} diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/lexer.py b/thesisenv/lib/python3.6/site-packages/sqlparse/lexer.py new file mode 100644 index 0000000..60e43da --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/lexer.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""SQL Lexer""" + +# This code is based on the SqlLexer in pygments. +# http://pygments.org/ +# It's separated from the rest of pygments to increase performance +# and to allow some customizations. + +from sqlparse import tokens +from sqlparse.keywords import SQL_REGEX +from sqlparse.compat import bytes_type, text_type, file_types +from sqlparse.utils import consume + + +class Lexer(object): + """Lexer + Empty class. Leaving for backwards-compatibility + """ + + @staticmethod + def get_tokens(text, encoding=None): + """ + Return an iterable of (tokentype, value) pairs generated from + `text`. If `unfiltered` is set to `True`, the filtering mechanism + is bypassed even if filters are defined. + + Also preprocess the text, i.e. expand tabs and strip it if + wanted and applies registered filters. + + Split ``text`` into (tokentype, text) pairs. + + ``stack`` is the inital stack (default: ``['root']``) + """ + if isinstance(text, file_types): + text = text.read() + + if isinstance(text, text_type): + pass + elif isinstance(text, bytes_type): + if encoding: + text = text.decode(encoding) + else: + try: + text = text.decode('utf-8') + except UnicodeDecodeError: + text = text.decode('unicode-escape') + else: + raise TypeError(u"Expected text or file-like object, got {!r}". + format(type(text))) + + iterable = enumerate(text) + for pos, char in iterable: + for rexmatch, action in SQL_REGEX: + m = rexmatch(text, pos) + + if not m: + continue + elif isinstance(action, tokens._TokenType): + yield action, m.group() + elif callable(action): + yield action(m.group()) + + consume(iterable, m.end() - pos - 1) + break + else: + yield tokens.Error, char + + +def tokenize(sql, encoding=None): + """Tokenize sql. + + Tokenize *sql* using the :class:`Lexer` and return a 2-tuple stream + of ``(token type, value)`` items. + """ + return Lexer().get_tokens(sql, encoding) diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/sql.py b/thesisenv/lib/python3.6/site-packages/sqlparse/sql.py new file mode 100644 index 0000000..f698782 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/sql.py @@ -0,0 +1,608 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +"""This module contains classes representing syntactical elements of SQL.""" +from __future__ import print_function + +import re + +from sqlparse import tokens as T +from sqlparse.compat import string_types, text_type, unicode_compatible +from sqlparse.utils import imt, remove_quotes + + +@unicode_compatible +class Token(object): + """Base class for all other classes in this module. + + It represents a single token and has two instance attributes: + ``value`` is the unchange value of the token and ``ttype`` is + the type of the token. + """ + + __slots__ = ('value', 'ttype', 'parent', 'normalized', 'is_keyword', + 'is_group', 'is_whitespace') + + def __init__(self, ttype, value): + value = text_type(value) + self.value = value + self.ttype = ttype + self.parent = None + self.is_group = False + self.is_keyword = ttype in T.Keyword + self.is_whitespace = self.ttype in T.Whitespace + self.normalized = value.upper() if self.is_keyword else value + + def __str__(self): + return self.value + + # Pending tokenlist __len__ bug fix + # def __len__(self): + # return len(self.value) + + def __repr__(self): + cls = self._get_repr_name() + value = self._get_repr_value() + + q = u'"' if value.startswith("'") and value.endswith("'") else u"'" + return u"<{cls} {q}{value}{q} at 0x{id:2X}>".format( + id=id(self), **locals()) + + def _get_repr_name(self): + return str(self.ttype).split('.')[-1] + + def _get_repr_value(self): + raw = text_type(self) + if len(raw) > 7: + raw = raw[:6] + '...' + return re.sub(r'\s+', ' ', raw) + + def flatten(self): + """Resolve subgroups.""" + yield self + + def match(self, ttype, values, regex=False): + """Checks whether the token matches the given arguments. + + *ttype* is a token type. If this token doesn't match the given token + type. + *values* is a list of possible values for this token. The values + are OR'ed together so if only one of the values matches ``True`` + is returned. Except for keyword tokens the comparison is + case-sensitive. For convenience it's ok to pass in a single string. + If *regex* is ``True`` (default is ``False``) the given values are + treated as regular expressions. + """ + type_matched = self.ttype is ttype + if not type_matched or values is None: + return type_matched + + if isinstance(values, string_types): + values = (values,) + + if regex: + # TODO: Add test for regex with is_keyboard = false + flag = re.IGNORECASE if self.is_keyword else 0 + values = (re.compile(v, flag) for v in values) + + for pattern in values: + if pattern.search(self.normalized): + return True + return False + + if self.is_keyword: + values = (v.upper() for v in values) + + return self.normalized in values + + def within(self, group_cls): + """Returns ``True`` if this token is within *group_cls*. + + Use this method for example to check if an identifier is within + a function: ``t.within(sql.Function)``. + """ + parent = self.parent + while parent: + if isinstance(parent, group_cls): + return True + parent = parent.parent + return False + + def is_child_of(self, other): + """Returns ``True`` if this token is a direct child of *other*.""" + return self.parent == other + + def has_ancestor(self, other): + """Returns ``True`` if *other* is in this tokens ancestry.""" + parent = self.parent + while parent: + if parent == other: + return True + parent = parent.parent + return False + + +@unicode_compatible +class TokenList(Token): + """A group of tokens. + + It has an additional instance attribute ``tokens`` which holds a + list of child-tokens. + """ + + __slots__ = 'tokens' + + def __init__(self, tokens=None): + self.tokens = tokens or [] + [setattr(token, 'parent', self) for token in tokens] + super(TokenList, self).__init__(None, text_type(self)) + self.is_group = True + + def __str__(self): + return u''.join(token.value for token in self.flatten()) + + # weird bug + # def __len__(self): + # return len(self.tokens) + + def __iter__(self): + return iter(self.tokens) + + def __getitem__(self, item): + return self.tokens[item] + + def _get_repr_name(self): + return type(self).__name__ + + def _pprint_tree(self, max_depth=None, depth=0, f=None): + """Pretty-print the object tree.""" + indent = u' | ' * depth + for idx, token in enumerate(self.tokens): + cls = token._get_repr_name() + value = token._get_repr_value() + + q = u'"' if value.startswith("'") and value.endswith("'") else u"'" + print(u"{indent}{idx:2d} {cls} {q}{value}{q}" + .format(**locals()), file=f) + + if token.is_group and (max_depth is None or depth < max_depth): + token._pprint_tree(max_depth, depth + 1, f) + + def get_token_at_offset(self, offset): + """Returns the token that is on position offset.""" + idx = 0 + for token in self.flatten(): + end = idx + len(token.value) + if idx <= offset < end: + return token + idx = end + + def flatten(self): + """Generator yielding ungrouped tokens. + + This method is recursively called for all child tokens. + """ + for token in self.tokens: + if token.is_group: + for item in token.flatten(): + yield item + else: + yield token + + def get_sublists(self): + for token in self.tokens: + if token.is_group: + yield token + + @property + def _groupable_tokens(self): + return self.tokens + + def _token_matching(self, funcs, start=0, end=None, reverse=False): + """next token that match functions""" + if start is None: + return None + + if not isinstance(funcs, (list, tuple)): + funcs = (funcs,) + + if reverse: + assert end is None + for idx in range(start - 2, -1, -1): + token = self.tokens[idx] + for func in funcs: + if func(token): + return idx, token + else: + for idx, token in enumerate(self.tokens[start:end], start=start): + for func in funcs: + if func(token): + return idx, token + return None, None + + def token_first(self, skip_ws=True, skip_cm=False): + """Returns the first child token. + + If *skip_ws* is ``True`` (the default), whitespace + tokens are ignored. + + if *skip_cm* is ``True`` (default: ``False``), comments are + ignored too. + """ + # this on is inconsistent, using Comment instead of T.Comment... + funcs = lambda tk: not ((skip_ws and tk.is_whitespace) or + (skip_cm and imt(tk, t=T.Comment, i=Comment))) + return self._token_matching(funcs)[1] + + def token_next_by(self, i=None, m=None, t=None, idx=-1, end=None): + funcs = lambda tk: imt(tk, i, m, t) + idx += 1 + return self._token_matching(funcs, idx, end) + + def token_not_matching(self, funcs, idx): + funcs = (funcs,) if not isinstance(funcs, (list, tuple)) else funcs + funcs = [lambda tk: not func(tk) for func in funcs] + return self._token_matching(funcs, idx) + + def token_matching(self, funcs, idx): + return self._token_matching(funcs, idx)[1] + + def token_prev(self, idx, skip_ws=True, skip_cm=False): + """Returns the previous token relative to *idx*. + + If *skip_ws* is ``True`` (the default) whitespace tokens are ignored. + If *skip_cm* is ``True`` comments are ignored. + ``None`` is returned if there's no previous token. + """ + return self.token_next(idx, skip_ws, skip_cm, _reverse=True) + + # TODO: May need to re-add default value to idx + def token_next(self, idx, skip_ws=True, skip_cm=False, _reverse=False): + """Returns the next token relative to *idx*. + + If *skip_ws* is ``True`` (the default) whitespace tokens are ignored. + If *skip_cm* is ``True`` comments are ignored. + ``None`` is returned if there's no next token. + """ + if idx is None: + return None, None + idx += 1 # alot of code usage current pre-compensates for this + funcs = lambda tk: not ((skip_ws and tk.is_whitespace) or + (skip_cm and imt(tk, t=T.Comment, i=Comment))) + return self._token_matching(funcs, idx, reverse=_reverse) + + def token_index(self, token, start=0): + """Return list index of token.""" + start = start if isinstance(start, int) else self.token_index(start) + return start + self.tokens[start:].index(token) + + def group_tokens(self, grp_cls, start, end, include_end=True, + extend=False): + """Replace tokens by an instance of *grp_cls*.""" + start_idx = start + start = self.tokens[start_idx] + + end_idx = end + include_end + + # will be needed later for new group_clauses + # while skip_ws and tokens and tokens[-1].is_whitespace: + # tokens = tokens[:-1] + + if extend and isinstance(start, grp_cls): + subtokens = self.tokens[start_idx + 1:end_idx] + + grp = start + grp.tokens.extend(subtokens) + del self.tokens[start_idx + 1:end_idx] + grp.value = text_type(start) + else: + subtokens = self.tokens[start_idx:end_idx] + grp = grp_cls(subtokens) + self.tokens[start_idx:end_idx] = [grp] + grp.parent = self + + for token in subtokens: + token.parent = grp + + return grp + + def insert_before(self, where, token): + """Inserts *token* before *where*.""" + if not isinstance(where, int): + where = self.token_index(where) + token.parent = self + self.tokens.insert(where, token) + + def insert_after(self, where, token, skip_ws=True): + """Inserts *token* after *where*.""" + if not isinstance(where, int): + where = self.token_index(where) + nidx, next_ = self.token_next(where, skip_ws=skip_ws) + token.parent = self + if next_ is None: + self.tokens.append(token) + else: + self.tokens.insert(nidx, token) + + def has_alias(self): + """Returns ``True`` if an alias is present.""" + return self.get_alias() is not None + + def get_alias(self): + """Returns the alias for this identifier or ``None``.""" + + # "name AS alias" + kw_idx, kw = self.token_next_by(m=(T.Keyword, 'AS')) + if kw is not None: + return self._get_first_name(kw_idx + 1, keywords=True) + + # "name alias" or "complicated column expression alias" + _, ws = self.token_next_by(t=T.Whitespace) + if len(self.tokens) > 2 and ws is not None: + return self._get_first_name(reverse=True) + + def get_name(self): + """Returns the name of this identifier. + + This is either it's alias or it's real name. The returned valued can + be considered as the name under which the object corresponding to + this identifier is known within the current statement. + """ + return self.get_alias() or self.get_real_name() + + def get_real_name(self): + """Returns the real name (object name) of this identifier.""" + # a.b + dot_idx, _ = self.token_next_by(m=(T.Punctuation, '.')) + return self._get_first_name(dot_idx) + + def get_parent_name(self): + """Return name of the parent object if any. + + A parent object is identified by the first occuring dot. + """ + dot_idx, _ = self.token_next_by(m=(T.Punctuation, '.')) + _, prev_ = self.token_prev(dot_idx) + return remove_quotes(prev_.value) if prev_ is not None else None + + def _get_first_name(self, idx=None, reverse=False, keywords=False): + """Returns the name of the first token with a name""" + + tokens = self.tokens[idx:] if idx else self.tokens + tokens = reversed(tokens) if reverse else tokens + types = [T.Name, T.Wildcard, T.String.Symbol] + + if keywords: + types.append(T.Keyword) + + for token in tokens: + if token.ttype in types: + return remove_quotes(token.value) + elif isinstance(token, (Identifier, Function)): + return token.get_name() + + +class Statement(TokenList): + """Represents a SQL statement.""" + + def get_type(self): + """Returns the type of a statement. + + The returned value is a string holding an upper-cased reprint of + the first DML or DDL keyword. If the first token in this group + isn't a DML or DDL keyword "UNKNOWN" is returned. + + Whitespaces and comments at the beginning of the statement + are ignored. + """ + first_token = self.token_first(skip_cm=True) + if first_token is None: + # An "empty" statement that either has not tokens at all + # or only whitespace tokens. + return 'UNKNOWN' + + elif first_token.ttype in (T.Keyword.DML, T.Keyword.DDL): + return first_token.normalized + + elif first_token.ttype == T.Keyword.CTE: + # The WITH keyword should be followed by either an Identifier or + # an IdentifierList containing the CTE definitions; the actual + # DML keyword (e.g. SELECT, INSERT) will follow next. + fidx = self.token_index(first_token) + tidx, token = self.token_next(fidx, skip_ws=True) + if isinstance(token, (Identifier, IdentifierList)): + _, dml_keyword = self.token_next(tidx, skip_ws=True) + + if dml_keyword.ttype == T.Keyword.DML: + return dml_keyword.normalized + + # Hmm, probably invalid syntax, so return unknown. + return 'UNKNOWN' + + +class Identifier(TokenList): + """Represents an identifier. + + Identifiers may have aliases or typecasts. + """ + + def is_wildcard(self): + """Return ``True`` if this identifier contains a wildcard.""" + _, token = self.token_next_by(t=T.Wildcard) + return token is not None + + def get_typecast(self): + """Returns the typecast or ``None`` of this object as a string.""" + midx, marker = self.token_next_by(m=(T.Punctuation, '::')) + nidx, next_ = self.token_next(midx, skip_ws=False) + return next_.value if next_ else None + + def get_ordering(self): + """Returns the ordering or ``None`` as uppercase string.""" + _, ordering = self.token_next_by(t=T.Keyword.Order) + return ordering.normalized if ordering else None + + def get_array_indices(self): + """Returns an iterator of index token lists""" + + for token in self.tokens: + if isinstance(token, SquareBrackets): + # Use [1:-1] index to discard the square brackets + yield token.tokens[1:-1] + + +class IdentifierList(TokenList): + """A list of :class:`~sqlparse.sql.Identifier`\'s.""" + + def get_identifiers(self): + """Returns the identifiers. + + Whitespaces and punctuations are not included in this generator. + """ + for token in self.tokens: + if not (token.is_whitespace or token.match(T.Punctuation, ',')): + yield token + + +class Parenthesis(TokenList): + """Tokens between parenthesis.""" + M_OPEN = T.Punctuation, '(' + M_CLOSE = T.Punctuation, ')' + + @property + def _groupable_tokens(self): + return self.tokens[1:-1] + + +class SquareBrackets(TokenList): + """Tokens between square brackets""" + M_OPEN = T.Punctuation, '[' + M_CLOSE = T.Punctuation, ']' + + @property + def _groupable_tokens(self): + return self.tokens[1:-1] + + +class Assignment(TokenList): + """An assignment like 'var := val;'""" + + +class If(TokenList): + """An 'if' clause with possible 'else if' or 'else' parts.""" + M_OPEN = T.Keyword, 'IF' + M_CLOSE = T.Keyword, 'END IF' + + +class For(TokenList): + """A 'FOR' loop.""" + M_OPEN = T.Keyword, ('FOR', 'FOREACH') + M_CLOSE = T.Keyword, 'END LOOP' + + +class Comparison(TokenList): + """A comparison used for example in WHERE clauses.""" + + @property + def left(self): + return self.tokens[0] + + @property + def right(self): + return self.tokens[-1] + + +class Comment(TokenList): + """A comment.""" + + def is_multiline(self): + return self.tokens and self.tokens[0].ttype == T.Comment.Multiline + + +class Where(TokenList): + """A WHERE clause.""" + M_OPEN = T.Keyword, 'WHERE' + M_CLOSE = T.Keyword, ( + 'ORDER', 'GROUP', 'LIMIT', 'UNION', 'UNION ALL', 'EXCEPT', + 'HAVING', 'RETURNING', 'INTO') + + +class Case(TokenList): + """A CASE statement with one or more WHEN and possibly an ELSE part.""" + M_OPEN = T.Keyword, 'CASE' + M_CLOSE = T.Keyword, 'END' + + def get_cases(self, skip_ws=False): + """Returns a list of 2-tuples (condition, value). + + If an ELSE exists condition is None. + """ + CONDITION = 1 + VALUE = 2 + + ret = [] + mode = CONDITION + + for token in self.tokens: + # Set mode from the current statement + if token.match(T.Keyword, 'CASE'): + continue + + elif skip_ws and token.ttype in T.Whitespace: + continue + + elif token.match(T.Keyword, 'WHEN'): + ret.append(([], [])) + mode = CONDITION + + elif token.match(T.Keyword, 'THEN'): + mode = VALUE + + elif token.match(T.Keyword, 'ELSE'): + ret.append((None, [])) + mode = VALUE + + elif token.match(T.Keyword, 'END'): + mode = None + + # First condition without preceding WHEN + if mode and not ret: + ret.append(([], [])) + + # Append token depending of the current mode + if mode == CONDITION: + ret[-1][0].append(token) + + elif mode == VALUE: + ret[-1][1].append(token) + + # Return cases list + return ret + + +class Function(TokenList): + """A function or procedure call.""" + + def get_parameters(self): + """Return a list of parameters.""" + parenthesis = self.tokens[-1] + for token in parenthesis.tokens: + if isinstance(token, IdentifierList): + return token.get_identifiers() + elif imt(token, i=(Function, Identifier), t=T.Literal): + return [token, ] + return [] + + +class Begin(TokenList): + """A BEGIN/END block.""" + M_OPEN = T.Keyword, 'BEGIN' + M_CLOSE = T.Keyword, 'END' + + +class Operation(TokenList): + """Grouping of operations""" diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/tokens.py b/thesisenv/lib/python3.6/site-packages/sqlparse/tokens.py new file mode 100644 index 0000000..6864f69 --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/tokens.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause +# +# The Token implementation is based on pygment's token system written +# by Georg Brandl. +# http://pygments.org/ + +"""Tokens""" + + +class _TokenType(tuple): + parent = None + + def __contains__(self, item): + return item is not None and (self is item or item[:len(self)] == self) + + def __getattr__(self, name): + new = _TokenType(self + (name,)) + setattr(self, name, new) + new.parent = self + return new + + def __repr__(self): + # self can be False only if its the `root` ie. Token itself + return 'Token' + ('.' if self else '') + '.'.join(self) + + +Token = _TokenType() + +# Special token types +Text = Token.Text +Whitespace = Text.Whitespace +Newline = Whitespace.Newline +Error = Token.Error +# Text that doesn't belong to this lexer (e.g. HTML in PHP) +Other = Token.Other + +# Common token types for source code +Keyword = Token.Keyword +Name = Token.Name +Literal = Token.Literal +String = Literal.String +Number = Literal.Number +Punctuation = Token.Punctuation +Operator = Token.Operator +Comparison = Operator.Comparison +Wildcard = Token.Wildcard +Comment = Token.Comment +Assignment = Token.Assignment + +# Generic types for non-source code +Generic = Token.Generic + +# String and some others are not direct childs of Token. +# alias them: +Token.Token = Token +Token.String = String +Token.Number = Number + +# SQL specific tokens +DML = Keyword.DML +DDL = Keyword.DDL +CTE = Keyword.CTE +Command = Keyword.Command diff --git a/thesisenv/lib/python3.6/site-packages/sqlparse/utils.py b/thesisenv/lib/python3.6/site-packages/sqlparse/utils.py new file mode 100644 index 0000000..ffa029b --- /dev/null +++ b/thesisenv/lib/python3.6/site-packages/sqlparse/utils.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com +# +# This module is part of python-sqlparse and is released under +# the BSD License: https://opensource.org/licenses/BSD-3-Clause + +import itertools +import re +from collections import deque +from contextlib import contextmanager +from sqlparse.compat import text_type + +# This regular expression replaces the home-cooked parser that was here before. +# It is much faster, but requires an extra post-processing step to get the +# desired results (that are compatible with what you would expect from the +# str.splitlines() method). +# +# It matches groups of characters: newlines, quoted strings, or unquoted text, +# and splits on that basis. The post-processing step puts those back together +# into the actual lines of SQL. +SPLIT_REGEX = re.compile(r""" +( + (?: # Start of non-capturing group + (?:\r\n|\r|\n) | # Match any single newline, or + [^\r\n'"]+ | # Match any character series without quotes or + # newlines, or + "(?:[^"\\]|\\.)*" | # Match double-quoted strings, or + '(?:[^'\\]|\\.)*' # Match single quoted strings + ) +) +""", re.VERBOSE) + +LINE_MATCH = re.compile(r'(\r\n|\r|\n)') + + +def split_unquoted_newlines(stmt): + """Split a string on all unquoted newlines. + + Unlike str.splitlines(), this will ignore CR/LF/CR+LF if the requisite + character is inside of a string.""" + text = text_type(stmt) + lines = SPLIT_REGEX.split(text) + outputlines = [''] + for line in lines: + if not line: + continue + elif LINE_MATCH.match(line): + outputlines.append('') + else: + outputlines[-1] += line + return outputlines + + +def remove_quotes(val): + """Helper that removes surrounding quotes from strings.""" + if val is None: + return + if val[0] in ('"', "'") and val[0] == val[-1]: + val = val[1:-1] + return val + + +def recurse(*cls): + """Function decorator to help with recursion + + :param cls: Classes to not recurse over + :return: function + """ + def wrap(f): + def wrapped_f(tlist): + for sgroup in tlist.get_sublists(): + if not isinstance(sgroup, cls): + wrapped_f(sgroup) + f(tlist) + + return wrapped_f + + return wrap + + +def imt(token, i=None, m=None, t=None): + """Helper function to simplify comparisons Instance, Match and TokenType + :param token: + :param i: Class or Tuple/List of Classes + :param m: Tuple of TokenType & Value. Can be list of Tuple for multiple + :param t: TokenType or Tuple/List of TokenTypes + :return: bool + """ + clss = i + types = [t, ] if t and not isinstance(t, list) else t + mpatterns = [m, ] if m and not isinstance(m, list) else m + + if token is None: + return False + elif clss and isinstance(token, clss): + return True + elif mpatterns and any(token.match(*pattern) for pattern in mpatterns): + return True + elif types and any(token.ttype in ttype for ttype in types): + return True + else: + return False + + +def consume(iterator, n): + """Advance the iterator n-steps ahead. If n is none, consume entirely.""" + deque(itertools.islice(iterator, n), maxlen=0) + + +@contextmanager +def offset(filter_, n=0): + filter_.offset += n + yield + filter_.offset -= n + + +@contextmanager +def indent(filter_, n=1): + filter_.indent += n + yield + filter_.indent -= n