Commit cfa573fc authored by LammLukas's avatar LammLukas

A lot of small changes

parent 5e9e2402
# Temporary directories and files
src/__pycache__/*
# IntelliSense of Pycharm
.idea/
......
"STUDY_PROGRAMME";"CODE_OF_STUDY_PROGRAMME";"Studienplan_Version";"SPO_KONTEXT";"REGISTRATION_NUMBER";"FAMILY_NAME_OF_STUDENT";"FIRST_NAME_OF_STUDENT";"GESCHLECHT";"DATE_OF_ASSESSMENT";"GUEL_U_AKTUELLE_ANTRITTE_SPO";"GRADE";"REMARK";"Number_Of_The_Course";"SEMESTER_OF_The_COURSE";"COURSE_TITLE";"Examiner";"Start_Time";"TERMIN_ORT";"DB_Primary_Key_Of_Exam";"DB_Primary_Key_Of_Candidate";"COURSE_GROUP_NAME";"FILE_REMARK";"EMAIL_ADDRESS";"ECTS_GRADE";"Information"
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Konstruktiver Ingenieurbau > Schale 2 > [VK] [3012164] Kontinuumsmechanik > [VK] [301216401 (2)] Klausurarbeit (oder mndliche Prfung) Kontinuumsmechanik";"383251";"Al Joundi";"Hazem";"M";"17.02.2020";"1";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2506598";"";"";"hazem.al@rwth-aachen.de";"";"Verwendete Notenskala, bzw. mgliche Prfungszustze (je nach Berechtigung)"
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Konstruktiver Ingenieurbau > Schale 2 > [VK] [3012164] Kontinuumsmechanik > [VK] [301216401 (2)] Klausurarbeit (oder mndliche Prfung) Kontinuumsmechanik";"388775";"Brijawi";"Mohamad Ammar";"M";"17.02.2020";"1";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2428102";"";"";"ammar.brijawi@rwth-aachen.de";"";"Notenskala 1"
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Advanced Computational Methods in Civil Engineering > Schale 1 > [VK] [3017255] Continuum Mechanics > [VK] [301725501] Prfung Continuum Mechanics";"390038";"Delpasand";"Ahmad";"M";"17.02.2020";"1";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2421695";"";"";"ahmad.delpasand@rwth-aachen.de";"";"PA-5,0 U-5,0 X-5,0 GA-B G-B GL-B M-B A-Q E-Q NZ-Q PAQ-Q Q Q-Q R-Q S-Q "
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Konstruktiver Ingenieurbau > Schale 2 > [VK] [3012164] Kontinuumsmechanik > [VK] [301216401 (2)] Klausurarbeit (oder mndliche Prfung) Kontinuumsmechanik";"336555";"Korn";"Vanessa";"W";"17.02.2020";"2";"";"Status zum Anmeldezeitpunkt 17.11.2019: Prfungsantritt: Vorletzter Antritt: 2 von maximal 3 Antritten.";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2497728";"";"";"vanessa.korn@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Advanced Computational Methods in Civil Engineering > Schale 1 > [VK] [3017255] Continuum Mechanics > [VK] [301725501] Prfung Continuum Mechanics";"389656";"Liu";"Chen";"W";"17.02.2020";"2";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2424926";"";"";"chen.liu2@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Konstruktiver Ingenieurbau > Schale 2 > [VK] [3012164] Kontinuumsmechanik > [VK] [301216401 (2)] Klausurarbeit (oder mndliche Prfung) Kontinuumsmechanik";"397199";"Nhiomog Tekel";"Johan Michael Yvon";"M";"17.02.2020";"2";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2470852";"";"";"johan.nhiomog.tekel@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Konstruktiver Ingenieurbau > Schale 2 > [VK] [3012164] Kontinuumsmechanik > [VK] [301216401] Klausurarbeit (oder mndliche Prfung) Kontinuumsmechanik";"289202";"Ntireme";"Vasiliki";"W";"17.02.2020";"3";"";"Status zum Anmeldezeitpunkt 16.12.2019: Prfungsantritt: ACHTUNG! LETZTMALIGER PRFUNGSANTRITT! Achtung! Mit der aktuellen Anmeldung werden 3 Antritte lt. SPO bei der Prfung erreicht! Sollten Sie diesen Prfungsversuch nicht bestehen, kann eine mndliche Ergnzungsprfung beantragt werden. ACHTUNG: Dies gilt NUR fr Klausuren und nicht, wenn die Note 5,0 aufgrund eines Tuschungsversuchs, eines Versumnisses oder eines Rcktritts ohne triftige Grnde festgesetzt wurde.";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2537800";"";"";"vasiliki.ntireme@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Advanced Computational Methods in Civil Engineering > Schale 1 > [VK] [3017255] Continuum Mechanics > [VK] [301725501] Prfung Continuum Mechanics";"391186";"Rastegarian";"Saeed";"M";"17.02.2020";"1";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2490895";"";"";"saeed.rastegarian@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Advanced Computational Methods in Civil Engineering > Schale 1 > [VK] [3017255] Continuum Mechanics > [VK] [301725501] Prfung Continuum Mechanics";"346873";"Ritzert";"Stephan Lukas Theodor";"M";"17.02.2020";"1";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2470111";"";"";"stephan.ritzert@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Konstruktiver Ingenieurbau > Schale 2 > [VK] [3012164] Kontinuumsmechanik > [VK] [301216401 (2)] Klausurarbeit (oder mndliche Prfung) Kontinuumsmechanik";"384195";"Teiba";"Abdullah Khalil";"M";"17.02.2020";"1";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2508988";"";"";"abdullah.teiba@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Advanced Computational Methods in Civil Engineering > Schale 1 > [VK] [3017255] Continuum Mechanics > [VK] [301725501] Prfung Continuum Mechanics";"401686";"Xu";"Peng";"M";"17.02.2020";"2";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2474391";"";"";"peng.xu@rwth-aachen.de";"";""
"Masterstudium - Bauingenieurwesen";"1480 88 017";"2010 ";"[2010] Bauingenieurwesen > Schwerpunktwahl > Schwerpunkt Tunnelbau und Geotechnik > Schale 2 > [VK] [3012164] Kontinuumsmechanik > [VK] [301216401 (2)] Klausurarbeit (oder mndliche Prfung) Kontinuumsmechanik";"399673";"Zuo";"Qi";"M";"17.02.2020";"1";"";"";"31PV00008";"19W";"Kontinnumsmechanik / Continuum Mechanics";"Simon Jaan-Willem Dr.-Ing. ";"11:30";"BS II (2131|102)";"1101894";"2484491";"";"";"qi.zuo@rwth-aachen.de";"";""
"""
Example 1 - Making your own scripts with miraculix
This short script will guide you through the process of writing your own scripts using the miraculix software.
Author: L. Lamm (lamm@ifam.rwth-aachen.de)
"""
""" Import all necessary packages from /src"""
from src.exam import Exam
"""
1. Create a new and empty exam object
"""
ex = Exam()
"""
2. Import information from RWTHOnline file
Within this step, the provided data from the RWTHOnline input file will be read. This includes
information on:
* Path to the inputfile
* Date of the examination
* Name of the course
* Name of the principal examiner
* List of participants
"""
ex.import_data_RWTHOnline('./data/example_inputdata.csv')
"""
3. Assign number of points per task
Besides the already imported information, you also have to assign the number of point which can
be achieved for each task.
"""
ex.Points_per_task = [10, 12, 20, 5]
"""
4. Assign rooms for examination
Besides the already imported information, you also have to assign the number of point which can
be achieved for each task.
"""
print(ex)
\ No newline at end of file
......@@ -74,7 +74,16 @@ class Exam(Exportable):
"Assign Name, date and examiner to exam"
self.Name = data[1][indices['title']]
self.Date = data[1][indices['date']]
self.Examiner = data[1][indices['examiner']]
examiner_str = data[1][indices['examiner']]
if re.findall("Dr\.-Ing\.", examiner_str):
examiner_str = re.sub("Dr\.-Ing\.", '', examiner_str)
examiner_str = "Dr.-Ing. " + examiner_str
if re.findall("Prof\.", examiner_str):
examiner_str = re.sub("Prof\.", '', examiner_str)
examiner_str = "Prof. " + examiner_str
if re.findall("Univ.-", examiner_str):
examiner_str = re.sub("Univ.-", '', examiner_str)
self.Examiner = examiner_str
"Create participants for exam"
iterator = iter(data)
......@@ -94,6 +103,7 @@ class Exam(Exportable):
room = Room()
room.load_template(room_id)
self.Rooms.append(room)
self.Rooms.sort(key=lambda x: x.NumSeats, reverse=True)
def export_data_RWTHOnline(self):
"""Export data to .csv file for upload to RWTHOnline
......@@ -178,8 +188,7 @@ class Exam(Exportable):
part.Annotation = item[7 + len(self.Points_per_task)]
def assign_participants(self, form='matriculation', rev=False, offset=5):
""" Assign participants to rooms
"""
""" Assign participants to rooms"""
if not self.is_object_initialized():
raise UninitializedObject('Not able to assign participants. '
'Please first initialize the exam object properly.', self)
......@@ -204,8 +213,7 @@ class Exam(Exportable):
break
def check_room_capacity(self, offset):
"""Check if total room capacity is sufficient
"""
"""Check if total room capacity is sufficient"""
num_part = len(self.Participants)
num_seats = 0
for room in self.Rooms:
......
......@@ -31,11 +31,25 @@ class InsuffientCapacity(MiraculixError):
super(InsuffientCapacity, self).__init__(message)
class TemplateAlreadyExists(MiraculixError):
class RoomTemplateAlreadyExists(MiraculixError):
"""Exception if template already exists in database"""
def __init__(self, message):
super(TemplateAlreadyExists, self).__init__(message)
super(RoomTemplateAlreadyExists, self).__init__(message)
class RoomTemplateDoesNotExist(MiraculixError):
"""Exception if template does not exist in database"""
def __init__(self, message, template_id):
super(RoomTemplateDoesNotExist, self).__init__(message)
self.id = template_id
print(self.id)
class ProtocolTemplateDoesNotExist(MiraculixError):
"""Exception if template does not exist in database"""
def __init__(self):
super(ProtocolTemplateDoesNotExist, self).__init__("Protocol template does not exist.")
class TableDoesNotExist(MiraculixError):
"""Exception if table does not exist in database"""
......@@ -43,9 +57,7 @@ class TableDoesNotExist(MiraculixError):
super(TableDoesNotExist, self).__init__(message)
class TemplateDoesNotExist(MiraculixError):
"""Exception if template does not exist in database"""
def __init__(self, message, template_id):
super(TemplateDoesNotExist, self).__init__(message)
self.id = template_id
print(self.id)
class FormatNotDefined(MiraculixError):
"""Exception if format does not exist"""
def __init__(self):
super(FormatNotDefined, self).__init__("Format not defined!")
\ No newline at end of file
......@@ -3,7 +3,7 @@ Parent class for participant objects.
Author: L. Lamm (lamm@ifam.rwth-aachen.de)
"""
from src.Exportable import Exportable
from src.exportable import Exportable
class Participant(Exportable):
......
......@@ -40,7 +40,7 @@ class Room(Exportable):
"Check if room with id already exists"
cursor.execute("SELECT name FROM rooms WHERE internal_ID = ?", [self.Internal_ID])
if cursor.fetchone() is not None:
raise TemplateAlreadyExists("Room template already exists in database!")
raise RoomTemplateAlreadyExists("Room template already exists in database!")
else:
values = [self.Internal_ID, self.Name, self.NumSeats]
cursor.execute("INSERT INTO rooms VALUES (?, ?, ?)", values)
......@@ -58,9 +58,9 @@ class Room(Exportable):
cursor.execute("SELECT name FROM rooms WHERE internal_ID = ?", [id_str])
val = cursor.fetchone()
if val is None:
raise TemplateDoesNotExist("Room template does not exists in database!", id_str)
raise RoomTemplateDoesNotExist("Room template does not exists in database!", id_str)
else:
self.Internal_ID = id_str
self.Name = val[0]
cursor.execute("SELECT num_seats FROM rooms WHERE internal_ID = ?", [id_str])
self.NumSeats = cursor.fetchone()[0]
self.NumSeats = int(cursor.fetchone()[0])
This source diff could not be displayed because it is too large. You can view the blob instead.
from src.exam import *
from src.protocols import Protocol
ex = Exam('./testdata/large_exam_inputdata.csv')
ex = Exam('../testdata/large_exam_inputdata.csv')
ex.Points_per_task = [10, 10, 5, 10]
ex.assign_participants()
prot = Protocol(ex)
......
Copyright 2007 Pallets
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 the copyright holder 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
HOLDER 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.
Metadata-Version: 2.1
Name: Jinja2
Version: 2.11.1
Summary: A very fast and expressive template engine.
Home-page: https://palletsprojects.com/p/jinja/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
Maintainer: Pallets
Maintainer-email: contact@palletsprojects.com
License: BSD-3-Clause
Project-URL: Documentation, https://jinja.palletsprojects.com/
Project-URL: Code, https://github.com/pallets/jinja
Project-URL: Issue tracker, https://github.com/pallets/jinja/issues
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
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.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing :: Markup :: HTML
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
Description-Content-Type: text/x-rst
Requires-Dist: MarkupSafe (>=0.23)
Provides-Extra: i18n
Requires-Dist: Babel (>=0.8) ; extra == 'i18n'
Jinja
=====
Jinja is a fast, expressive, extensible templating engine. Special
placeholders in the template allow writing code similar to Python
syntax. Then the template is passed data to render the final document.
It includes:
- Template inheritance and inclusion.
- Define and import macros within templates.
- HTML templates can use autoescaping to prevent XSS from untrusted
user input.
- A sandboxed environment can safely render untrusted templates.
- AsyncIO support for generating templates and calling async
functions.
- I18N support with Babel.
- Templates are compiled to optimized Python code just-in-time and
cached, or can be compiled ahead-of-time.
- Exceptions point to the correct line in templates to make debugging
easier.
- Extensible filters, tests, functions, and even syntax.
Jinja's philosophy is that while application logic belongs in Python if
possible, it shouldn't make the template designer's job difficult by
restricting functionality too much.
Installing
----------
Install and update using `pip`_:
.. code-block:: text
$ pip install -U Jinja2
.. _pip: https://pip.pypa.io/en/stable/quickstart/
In A Nutshell
-------------
.. code-block:: jinja
{% extends "base.html" %}
{% block title %}Members{% endblock %}
{% block content %}
<ul>
{% for user in users %}
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endblock %}
Links
-----
- Website: https://palletsprojects.com/p/jinja/
- Documentation: https://jinja.palletsprojects.com/
- Releases: https://pypi.org/project/Jinja2/
- Code: https://github.com/pallets/jinja
- Issue tracker: https://github.com/pallets/jinja/issues
- Test status: https://dev.azure.com/pallets/jinja/_build
- Official chat: https://discord.gg/t6rrQZH
Jinja2-2.11.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
Jinja2-2.11.1.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
Jinja2-2.11.1.dist-info/METADATA,sha256=7e9_tz7RirTbxIeiHTSq3e5g6ddCjoym3o5vdlRLuxU,3535
Jinja2-2.11.1.dist-info/RECORD,,
Jinja2-2.11.1.dist-info/WHEEL,sha256=hq9T7ntHzQqUTLUmJ2UVhPL-W4tJi3Yb2Lh5lMfs2mk,110
Jinja2-2.11.1.dist-info/entry_points.txt,sha256=Qy_DkVo6Xj_zzOtmErrATe8lHZhOqdjpt3e4JJAGyi8,61
Jinja2-2.11.1.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7
jinja2/__init__.py,sha256=Nq1rzGErXYjIQnqc1pDCJht5LmInBRIZkeL2qkrYEyI,1549
jinja2/__pycache__/__init__.cpython-37.pyc,,
jinja2/__pycache__/_compat.cpython-37.pyc,,
jinja2/__pycache__/_identifier.cpython-37.pyc,,
jinja2/__pycache__/asyncfilters.cpython-37.pyc,,
jinja2/__pycache__/asyncsupport.cpython-37.pyc,,
jinja2/__pycache__/bccache.cpython-37.pyc,,
jinja2/__pycache__/compiler.cpython-37.pyc,,
jinja2/__pycache__/constants.cpython-37.pyc,,
jinja2/__pycache__/debug.cpython-37.pyc,,
jinja2/__pycache__/defaults.cpython-37.pyc,,
jinja2/__pycache__/environment.cpython-37.pyc,,
jinja2/__pycache__/exceptions.cpython-37.pyc,,
jinja2/__pycache__/ext.cpython-37.pyc,,
jinja2/__pycache__/filters.cpython-37.pyc,,
jinja2/__pycache__/idtracking.cpython-37.pyc,,
jinja2/__pycache__/lexer.cpython-37.pyc,,
jinja2/__pycache__/loaders.cpython-37.pyc,,
jinja2/__pycache__/meta.cpython-37.pyc,,
jinja2/__pycache__/nativetypes.cpython-37.pyc,,
jinja2/__pycache__/nodes.cpython-37.pyc,,
jinja2/__pycache__/optimizer.cpython-37.pyc,,
jinja2/__pycache__/parser.cpython-37.pyc,,
jinja2/__pycache__/runtime.cpython-37.pyc,,
jinja2/__pycache__/sandbox.cpython-37.pyc,,
jinja2/__pycache__/tests.cpython-37.pyc,,
jinja2/__pycache__/utils.cpython-37.pyc,,
jinja2/__pycache__/visitor.cpython-37.pyc,,
jinja2/_compat.py,sha256=B6Se8HjnXVpzz9-vfHejn-DV2NjaVK-Iewupc5kKlu8,3191
jinja2/_identifier.py,sha256=EdgGJKi7O1yvr4yFlvqPNEqV6M1qHyQr8Gt8GmVTKVM,1775
jinja2/asyncfilters.py,sha256=8uwjG1zgHTv3K4nEvsj4HXWkK4NsOlfx7-CcnCULDWw,4185
jinja2/asyncsupport.py,sha256=ZBFsDLuq3Gtji3Ia87lcyuDbqaHZJRdtShZcqwpFnSQ,7209
jinja2/bccache.py,sha256=3Pmp4jo65M9FQuIxdxoDBbEDFwe4acDMQf77nEJfrHA,12139
jinja2/compiler.py,sha256=xCNpF7-xAduODbGKSVEyzU7XZGeLWHZr1cwcZTQob30,66236
jinja2/constants.py,sha256=RR1sTzNzUmKco6aZicw4JpQpJGCuPuqm1h1YmCNUEFY,1458
jinja2/debug.py,sha256=UmsW6OxNmbIGvIkwytOyM1NsZB6xJvl_nSz3VgNETUk,8597
jinja2/defaults.py,sha256=85B6YUUCyWPSdrSeVhcqFVuu_bHUAQXeey--FIwSeVQ,1126
jinja2/environment.py,sha256=XqCM_GmncAXPm--CxpRPVF6uV_sPKb0Q0jVa7Znry04,50605
jinja2/exceptions.py,sha256=VjNLawcmf2ODffqVMCQK1cRmvFaUfQWF4u8ouP3QPcE,5425
jinja2/ext.py,sha256=AtwL5O5enT_L3HR9-oBvhGyUTdGoyaqG_ICtnR_EVd4,26441
jinja2/filters.py,sha256=4xEq1qfJ7burpHW5GyL6bkGomp0W47jOXg-HG5aLP-Y,41401
jinja2/idtracking.py,sha256=J3O4VHsrbf3wzwiBc7Cro26kHb6_5kbULeIOzocchIU,9211
jinja2/lexer.py,sha256=VeGdW_t82Le4H-jLy-hX6UeosLf7ApUq2kuUos8YF4Y,29942
jinja2/loaders.py,sha256=UUy5ud3lNtGtnn8iorlF9o1FJ6UqZZKMxd0VGnnqMHI,20350
jinja2/meta.py,sha256=QjyYhfNRD3QCXjBJpiPl9KgkEkGXJbAkCUq4-Ur10EQ,4131
jinja2/nativetypes.py,sha256=Arb2_3IuM386vWZbGPY7DmxryrXg3WzXAEnaHJNdWa0,3576
jinja2/nodes.py,sha256=YwErhE9plVWeoxTQPtMwl10wovsyBRY4x9eAVgtP6zg,31071
jinja2/optimizer.py,sha256=gQLlMYzvQhluhzmAIFA1tXS0cwgWYOjprN-gTRcHVsc,1457
jinja2/parser.py,sha256=fcfdqePNTNyvosIvczbytVA332qpsURvYnCGcjDHSkA,35660
jinja2/runtime.py,sha256=94chnK20a1m1t5AaLWeuiTq6L3g3GLs6AxVPfbNXIHE,30582
jinja2/sandbox.py,sha256=knayyUvXsZ-F0mk15mO2-ehK9gsw04UhB8td-iUOtLc,17127
jinja2/tests.py,sha256=iO_Y-9Vo60zrVe1lMpSl5sKHqAxe2leZHC08OoZ8K24,4799
jinja2/utils.py,sha256=26B9HI2lVWaHY8iOnQTJzAcCL4PYOLiA3V79dm3oOSE,22456
jinja2/visitor.py,sha256=DUHupl0a4PGp7nxRtZFttUzAi1ccxzqc2hzetPYUz8U,3240
Wheel-Version: 1.0
Generator: bdist_wheel (0.34.1)
Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any
[babel.extractors]
jinja2 = jinja2.ext:babel_extract [i18n]
Copyright 2010 Pallets
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 the copyright holder 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
HOLDER 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.
Metadata-Version: 2.1
Name: MarkupSafe
Version: 1.1.1
Summary: Safely add untrusted strings to HTML/XML markup.
Home-page: https://palletsprojects.com/p/markupsafe/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
Maintainer: The Pallets Team
Maintainer-email: contact@palletsprojects.com
License: BSD-3-Clause
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
Project-URL: Code, https://github.com/pallets/markupsafe
Project-URL: Issue tracker, https://github.com/pallets/markupsafe/issues
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
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