diff --git a/backend/OpenSourceProject/backend/ChatService/__pycache__/__init__.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/__pycache__/__init__.cpython-36.pyc index 30eb520c..6e26b1fa 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/__pycache__/__init__.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/__pycache__/__init__.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/__pycache__/config.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/__pycache__/config.cpython-36.pyc index 62b9d180..24327bfa 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/__pycache__/config.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/__pycache__/config.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/__pycache__/routes.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/__pycache__/routes.cpython-36.pyc index 0c8c9a93..5ea633f0 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/__pycache__/routes.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/__pycache__/routes.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/__pycache__/schemas.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/__pycache__/schemas.cpython-36.pyc index 69764371..00b996e3 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/__pycache__/schemas.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/__pycache__/schemas.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/__pycache__/validators.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/__pycache__/validators.cpython-36.pyc index adc4c655..95fa8859 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/__pycache__/validators.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/__pycache__/validators.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/__init__.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/__init__.cpython-36.pyc index 9d6f3ebb..b3cf4765 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/__init__.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/__init__.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/__init__.cpython-37.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 6749ddc3..00000000 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/chatbot.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/chatbot.cpython-36.pyc index f6f1183e..738eb7b4 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/chatbot.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/chatbot.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/chatbot.cpython-37.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/chatbot.cpython-37.pyc deleted file mode 100644 index 296e6ab5..00000000 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/chatbot.cpython-37.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_login.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_login.cpython-36.pyc index b68c004c..9cc7b270 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_login.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_login.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_login.cpython-37.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_login.cpython-37.pyc deleted file mode 100644 index 29c08a66..00000000 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_login.cpython-37.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_logout.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_logout.cpython-36.pyc index 28bb4736..b7c5df58 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_logout.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_logout.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_logout.cpython-37.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_logout.cpython-37.pyc deleted file mode 100644 index 1d277bf1..00000000 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_logout.cpython-37.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_register.cpython-36.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_register.cpython-36.pyc index 1d82e641..51e37fb3 100644 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_register.cpython-36.pyc and b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_register.cpython-36.pyc differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_register.cpython-37.pyc b/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_register.cpython-37.pyc deleted file mode 100644 index ac1b1aaf..00000000 Binary files a/backend/OpenSourceProject/backend/ChatService/api/__pycache__/user_register.cpython-37.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/brain/.DS_Store b/backend/OpenSourceProject/backend/ChatService/api/brain/.DS_Store new file mode 100644 index 00000000..330e8894 Binary files /dev/null and b/backend/OpenSourceProject/backend/ChatService/api/brain/.DS_Store differ diff --git a/backend/OpenSourceProject/backend/ChatService/api/brain/program.rive b/backend/OpenSourceProject/backend/ChatService/api/brain/program.rive index 1bd0876a..ecf1aa22 100644 --- a/backend/OpenSourceProject/backend/ChatService/api/brain/program.rive +++ b/backend/OpenSourceProject/backend/ChatService/api/brain/program.rive @@ -1,35 +1,32 @@ - ++ * type function +- > Ok, I will remember the type name . + *isdigit() -- if is string type, Returns True if all characters in the string are digits -^ if is a byte type, Return true if all bytes in the sequence are ASCII decimal digits and the sequence is not empty, false otherwise. ASCII decimal digits are those byte values in the sequence b'0123456789'. +* == String => Returns True if all characters in the string are digits + *isalpha() -- Returns True if all characters in the string are in the alphabet +* == String => Returns True if all characters in the string are in the alphabet + *upper() -- if is string type, Converts a string into upper case -^ , Return a copy of the string with all the cased characters converted to uppercase. +* == String => Converts a string into upper case, Return a copy of the string with all the cased characters converted to uppercase. + *translate() -- Returns a translated string - +* == String => Returns a translated string + *lower() -- if is bytes type, return a copy of the sequence with all the uppercase ASCII characters converted to their corresponding lowercase counterpart. -^ if is string type, return a copy of the string with all the cased characters converted to lowercase. +* == String => if is string type, return a copy of the string with all the cased characters converted to lowercase. + *split() -- Splits the string at the specified separator, and returns a list +* == String => Splits the string at the specified separator, and returns a list + *endswith() -- Returns true if the string ends with the specified value +* == String => Returns true if the string ends with the specified value + *lstrip() -- Returns a left trim version of the string +* == String => Returns a left trim version of the string + *encode() -- Returns an encoded version of the string +* == String => Returns an encoded version of the string + *startswith() -- Returns true if the string starts with the specified value \ No newline at end of file +* == String => Returns true if the string starts with the specified value \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/ChatService/api/brain/regulardialog.rive b/backend/OpenSourceProject/backend/ChatService/api/brain/regulardialog.rive index ad3e52e2..a7f21a38 100644 --- a/backend/OpenSourceProject/backend/ChatService/api/brain/regulardialog.rive +++ b/backend/OpenSourceProject/backend/ChatService/api/brain/regulardialog.rive @@ -27,8 +27,5 @@ * != undefined => Yes, your name is ! - I don't know your name. -+ for child in children -- ➪ iterator method count every elements in children - + * -- Google search: "http://google.com/search?q=" +- Google search: "http://google.com/search?q=" \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/ChatService/api/chatbot.py b/backend/OpenSourceProject/backend/ChatService/api/chatbot.py index 0130d9f7..c13aa64c 100644 --- a/backend/OpenSourceProject/backend/ChatService/api/chatbot.py +++ b/backend/OpenSourceProject/backend/ChatService/api/chatbot.py @@ -7,6 +7,14 @@ from .. import schemas,config import jwt import os +import json + + +from wit import Wit +access_token = "ABJWGG53QBEVM6UY6AUMBPNP42EQCXOZ" +client = Wit(access_token) + + rs = RiveScript() rs.load_directory(os.getcwd()) rs.sort_replies() @@ -17,5 +25,45 @@ def get(self): try: data = jwt.decode(g.headers['Token'],config.Secret_Key) except Exception: - return make_response(jsonify(message = 'invalid token'), 400) - return make_response(jsonify(messge = rs.reply(data['email'], g.args['message']))) \ No newline at end of file + return make_response(jsonify(message = 'invalid token'), 401) + #print(g.args['message']) + resp = client.message(g.args['message']) + resp = self.wit_response(resp) + #print("*"*100) + #print(rs.reply(data['email'], g.args['message'])) + #print(resp) + if resp == None: + return make_response(jsonify(messge=rs.reply(data['email'], g.args['message']))) + else: + return make_response(jsonify(messge=resp)) + # if rs.reply(data['email'], g.args['message']) == "Sorry I don't understand.": + # return make_response(jsonify(messge = resp )) + # return make_response(jsonify(messge = rs.reply(data['email'], g.args['message']))) + + def wit_response(self,text): + #print(json.dumps(text, indent=4)) + #print(text["_text"]) + message = "Analysing the code " + text["_text"] + " : " + entities = list(text["entities"].keys()) + if "intent" not in entities: + return None + intent = text["entities"]["intent"][0]["value"] + if intent == "function_search": + return None + + if intent == "Loop_function": + m_function ="This is a Loop Function, since the key world " +\ + text["entities"]["loop_tag"][0]["value"] + if intent == "Conditional_statement": + m_function = "This is a Conditions Statement, since the key world " + \ + text["entities"]["condition_statement_tag"][0]["value"] + + if "condition" in entities: + condition_entities = list(text["entities"]["condition"][0]["entities"].keys()) + c = text["entities"]["condition"][0]["entities"] + m_condition = ". The rest is condition: " +text["entities"]["condition"][0]["value"] + "; it can split into several parts: " + for i in condition_entities: + if i!= "intent": + m_condition += i + " is " + c[i][0]["value"] +"; " + + return message + m_function + m_condition \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/ChatService/schemas.py b/backend/OpenSourceProject/backend/ChatService/schemas.py index ff198b2b..6cf06235 100644 --- a/backend/OpenSourceProject/backend/ChatService/schemas.py +++ b/backend/OpenSourceProject/backend/ChatService/schemas.py @@ -50,7 +50,7 @@ def copy(self): base_path = '/ChatService' -definitions = {'definitions': {'User': {'type': 'object', 'properties': {'email': {'type': 'string'}, 'password': {'type': 'string'}, 'role': {'type': 'string', 'enum': ['mentor', 'learner']}}, 'xml': {'name': 'User'}}}, 'parameters': {}} +definitions = {'definitions': {'User': {'type': 'object', 'properties': {'email': {'type': 'string'}, 'password': {'type': 'string'}}, 'xml': {'name': 'User'}}}, 'parameters': {}} validators = { ('chatbot', 'GET'): {'headers': {'required': ['Token'], 'properties': {'Token': {'type': 'string'}}}, 'args': {'required': ['message'], 'properties': {'message': {'type': 'string'}}}}, diff --git a/backend/OpenSourceProject/backend/env/.Python b/backend/OpenSourceProject/backend/env/.Python deleted file mode 120000 index a199d2ea..00000000 --- a/backend/OpenSourceProject/backend/env/.Python +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/Python \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/include/python3.6m b/backend/OpenSourceProject/backend/env/include/python3.6m deleted file mode 120000 index a0f3e18d..00000000 --- a/backend/OpenSourceProject/backend/env/include/python3.6m +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/LICENSE.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/LICENSE.txt deleted file mode 120000 index b2012995..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/LICENSE.txt \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__future__.py b/backend/OpenSourceProject/backend/env/lib/python3.6/__future__.py deleted file mode 120000 index b872ca11..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/__future__.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/__future__.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/__future__.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/__future__.cpython-36.pyc deleted file mode 100644 index fee875a9..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/__future__.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_bootlocale.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_bootlocale.cpython-36.pyc deleted file mode 100644 index 28d9f9b2..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_bootlocale.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_collections_abc.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_collections_abc.cpython-36.pyc deleted file mode 100644 index 428a7f64..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_collections_abc.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_weakrefset.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_weakrefset.cpython-36.pyc deleted file mode 100644 index ab327cc9..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/_weakrefset.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/abc.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/abc.cpython-36.pyc deleted file mode 100644 index 912ecb50..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/abc.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/base64.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/base64.cpython-36.pyc deleted file mode 100644 index 9b5d487a..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/base64.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/bisect.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/bisect.cpython-36.pyc deleted file mode 100644 index 295fc2f8..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/bisect.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/codecs.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/codecs.cpython-36.pyc deleted file mode 100644 index 17a76a91..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/codecs.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/copy.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/copy.cpython-36.pyc deleted file mode 100644 index 09439bcd..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/copy.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/copyreg.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/copyreg.cpython-36.pyc deleted file mode 100644 index f76b5c76..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/copyreg.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/enum.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/enum.cpython-36.pyc deleted file mode 100644 index c278a406..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/enum.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/fnmatch.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/fnmatch.cpython-36.pyc deleted file mode 100644 index e7cc4ae0..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/fnmatch.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/functools.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/functools.cpython-36.pyc deleted file mode 100644 index 280a8b0e..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/functools.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/genericpath.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/genericpath.cpython-36.pyc deleted file mode 100644 index 9d4c2d6e..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/genericpath.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/hashlib.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/hashlib.cpython-36.pyc deleted file mode 100644 index 2c025b65..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/hashlib.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/heapq.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/heapq.cpython-36.pyc deleted file mode 100644 index 1faf96d5..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/heapq.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/hmac.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/hmac.cpython-36.pyc deleted file mode 100644 index e2e290fa..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/hmac.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/io.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/io.cpython-36.pyc deleted file mode 100644 index 110879ab..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/io.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/keyword.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/keyword.cpython-36.pyc deleted file mode 100644 index 4a325617..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/keyword.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/linecache.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/linecache.cpython-36.pyc deleted file mode 100644 index c37c346d..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/linecache.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/locale.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/locale.cpython-36.pyc deleted file mode 100644 index 49a2a39a..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/locale.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/ntpath.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/ntpath.cpython-36.pyc deleted file mode 100644 index 58aa712c..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/ntpath.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/operator.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/operator.cpython-36.pyc deleted file mode 100644 index f347dbe3..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/operator.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/os.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/os.cpython-36.pyc deleted file mode 100644 index 012d4824..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/os.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/posixpath.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/posixpath.cpython-36.pyc deleted file mode 100644 index 9dc15380..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/posixpath.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/random.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/random.cpython-36.pyc deleted file mode 100644 index 9df27a00..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/random.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/re.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/re.cpython-36.pyc deleted file mode 100644 index 7e354694..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/re.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/reprlib.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/reprlib.cpython-36.pyc deleted file mode 100644 index 201e330b..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/reprlib.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/shutil.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/shutil.cpython-36.pyc deleted file mode 100644 index e9de0d49..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/shutil.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/site.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/site.cpython-36.pyc deleted file mode 100644 index d39d0ff0..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/site.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_compile.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_compile.cpython-36.pyc deleted file mode 100644 index 8931c390..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_compile.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_constants.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_constants.cpython-36.pyc deleted file mode 100644 index 89f517c7..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_constants.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_parse.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_parse.cpython-36.pyc deleted file mode 100644 index e10eebdc..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/sre_parse.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/stat.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/stat.cpython-36.pyc deleted file mode 100644 index 110f77f4..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/stat.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/struct.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/struct.cpython-36.pyc deleted file mode 100644 index 02440163..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/struct.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tarfile.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tarfile.cpython-36.pyc deleted file mode 100644 index 5e4fb15d..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tarfile.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tempfile.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tempfile.cpython-36.pyc deleted file mode 100644 index da6ded7c..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tempfile.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/token.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/token.cpython-36.pyc deleted file mode 100644 index 9df498a3..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/token.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tokenize.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tokenize.cpython-36.pyc deleted file mode 100644 index 25cfe173..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/tokenize.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/types.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/types.cpython-36.pyc deleted file mode 100644 index 93c13005..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/types.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/warnings.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/warnings.cpython-36.pyc deleted file mode 100644 index 128fe0c1..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/warnings.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/weakref.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/weakref.cpython-36.pyc deleted file mode 100644 index f51b91e3..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/__pycache__/weakref.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/_bootlocale.py b/backend/OpenSourceProject/backend/env/lib/python3.6/_bootlocale.py deleted file mode 120000 index 86e692f4..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/_bootlocale.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_bootlocale.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/_collections_abc.py b/backend/OpenSourceProject/backend/env/lib/python3.6/_collections_abc.py deleted file mode 120000 index 6c14bfe2..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/_collections_abc.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_collections_abc.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/_dummy_thread.py b/backend/OpenSourceProject/backend/env/lib/python3.6/_dummy_thread.py deleted file mode 120000 index 2dfda764..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/_dummy_thread.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_dummy_thread.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/_weakrefset.py b/backend/OpenSourceProject/backend/env/lib/python3.6/_weakrefset.py deleted file mode 120000 index 2e4d9c6f..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/_weakrefset.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_weakrefset.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/abc.py b/backend/OpenSourceProject/backend/env/lib/python3.6/abc.py deleted file mode 120000 index a31fbfce..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/abc.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/abc.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/base64.py b/backend/OpenSourceProject/backend/env/lib/python3.6/base64.py deleted file mode 120000 index 1b7d69eb..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/base64.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/base64.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/bisect.py b/backend/OpenSourceProject/backend/env/lib/python3.6/bisect.py deleted file mode 120000 index ecdeb499..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/bisect.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bisect.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/codecs.py b/backend/OpenSourceProject/backend/env/lib/python3.6/codecs.py deleted file mode 120000 index cc7d07c1..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/codecs.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/codecs.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/collections b/backend/OpenSourceProject/backend/env/lib/python3.6/collections deleted file mode 120000 index 89daf45f..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/collections +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/collections \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/config-3.6m-darwin b/backend/OpenSourceProject/backend/env/lib/python3.6/config-3.6m-darwin deleted file mode 120000 index 93faa24a..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/config-3.6m-darwin +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/config-3.6m-darwin \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/copy.py b/backend/OpenSourceProject/backend/env/lib/python3.6/copy.py deleted file mode 120000 index 7e58b986..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/copy.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/copy.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/copyreg.py b/backend/OpenSourceProject/backend/env/lib/python3.6/copyreg.py deleted file mode 120000 index 16e36a7e..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/copyreg.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/copyreg.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/__init__.py b/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/__init__.py deleted file mode 100644 index b9b0f24f..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/__init__.py +++ /dev/null @@ -1,134 +0,0 @@ -import os -import sys -import warnings - -# opcode is not a virtualenv module, so we can use it to find the stdlib -# Important! To work on pypy, this must be a module that resides in the -# lib-python/modified-x.y.z directory -import opcode - -dirname = os.path.dirname - -distutils_path = os.path.join(os.path.dirname(opcode.__file__), "distutils") -if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)): - warnings.warn("The virtualenv distutils package at %s appears to be in the same location as the system distutils?") -else: - __path__.insert(0, distutils_path) # noqa: F821 - if sys.version_info < (3, 4): - import imp - - real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ("", "", imp.PKG_DIRECTORY)) - else: - import importlib.machinery - - distutils_path = os.path.join(distutils_path, "__init__.py") - loader = importlib.machinery.SourceFileLoader("_virtualenv_distutils", distutils_path) - if sys.version_info < (3, 5): - import types - - real_distutils = types.ModuleType(loader.name) - else: - import importlib.util - - spec = importlib.util.spec_from_loader(loader.name, loader) - real_distutils = importlib.util.module_from_spec(spec) - loader.exec_module(real_distutils) - - # Copy the relevant attributes - try: - __revision__ = real_distutils.__revision__ - except AttributeError: - pass - __version__ = real_distutils.__version__ - -from distutils import dist, sysconfig # isort:skip - -try: - basestring -except NameError: - basestring = str - -# patch build_ext (distutils doesn't know how to get the libs directory -# path on windows - it hardcodes the paths around the patched sys.prefix) - -if sys.platform == "win32": - from distutils.command.build_ext import build_ext as old_build_ext - - class build_ext(old_build_ext): - def finalize_options(self): - if self.library_dirs is None: - self.library_dirs = [] - elif isinstance(self.library_dirs, basestring): - self.library_dirs = self.library_dirs.split(os.pathsep) - - self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs")) - old_build_ext.finalize_options(self) - - from distutils.command import build_ext as build_ext_module - - build_ext_module.build_ext = build_ext - -# distutils.dist patches: - -old_find_config_files = dist.Distribution.find_config_files - - -def find_config_files(self): - found = old_find_config_files(self) - if os.name == "posix": - user_filename = ".pydistutils.cfg" - else: - user_filename = "pydistutils.cfg" - user_filename = os.path.join(sys.prefix, user_filename) - if os.path.isfile(user_filename): - for item in list(found): - if item.endswith("pydistutils.cfg"): - found.remove(item) - found.append(user_filename) - return found - - -dist.Distribution.find_config_files = find_config_files - -# distutils.sysconfig patches: - -old_get_python_inc = sysconfig.get_python_inc - - -def sysconfig_get_python_inc(plat_specific=0, prefix=None): - if prefix is None: - prefix = sys.real_prefix - return old_get_python_inc(plat_specific, prefix) - - -sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__ -sysconfig.get_python_inc = sysconfig_get_python_inc - -old_get_python_lib = sysconfig.get_python_lib - - -def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None): - if standard_lib and prefix is None: - prefix = sys.real_prefix - return old_get_python_lib(plat_specific, standard_lib, prefix) - - -sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__ -sysconfig.get_python_lib = sysconfig_get_python_lib - -old_get_config_vars = sysconfig.get_config_vars - - -def sysconfig_get_config_vars(*args): - real_vars = old_get_config_vars(*args) - if sys.platform == "win32": - lib_dir = os.path.join(sys.real_prefix, "libs") - if isinstance(real_vars, dict) and "LIBDIR" not in real_vars: - real_vars["LIBDIR"] = lib_dir # asked for all - elif isinstance(real_vars, list) and "LIBDIR" in args: - real_vars = real_vars + [lib_dir] # asked for list - return real_vars - - -sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__ -sysconfig.get_config_vars = sysconfig_get_config_vars diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/__pycache__/__init__.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 8344001f..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/distutils.cfg b/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/distutils.cfg deleted file mode 100644 index 1af230ec..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/distutils/distutils.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# This is a config file local to this virtualenv installation -# You may include options that will be used by all distutils commands, -# and by easy_install. For instance: -# -# [easy_install] -# find_links = http://mylocalsite diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/encodings b/backend/OpenSourceProject/backend/env/lib/python3.6/encodings deleted file mode 120000 index cdd97667..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/encodings +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/enum.py b/backend/OpenSourceProject/backend/env/lib/python3.6/enum.py deleted file mode 120000 index c8494c65..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/enum.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/enum.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/fnmatch.py b/backend/OpenSourceProject/backend/env/lib/python3.6/fnmatch.py deleted file mode 120000 index 5f57e437..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/fnmatch.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/fnmatch.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/functools.py b/backend/OpenSourceProject/backend/env/lib/python3.6/functools.py deleted file mode 120000 index 98368071..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/functools.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/functools.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/genericpath.py b/backend/OpenSourceProject/backend/env/lib/python3.6/genericpath.py deleted file mode 120000 index 132cfbfc..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/genericpath.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/genericpath.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/hashlib.py b/backend/OpenSourceProject/backend/env/lib/python3.6/hashlib.py deleted file mode 120000 index 9c7d1d94..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/hashlib.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/hashlib.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/heapq.py b/backend/OpenSourceProject/backend/env/lib/python3.6/heapq.py deleted file mode 120000 index 45709d02..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/heapq.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/heapq.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/hmac.py b/backend/OpenSourceProject/backend/env/lib/python3.6/hmac.py deleted file mode 120000 index 01954085..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/hmac.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/hmac.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/imp.py b/backend/OpenSourceProject/backend/env/lib/python3.6/imp.py deleted file mode 120000 index c537a349..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/imp.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/importlib b/backend/OpenSourceProject/backend/env/lib/python3.6/importlib deleted file mode 120000 index ab6abd94..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/importlib +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/io.py b/backend/OpenSourceProject/backend/env/lib/python3.6/io.py deleted file mode 120000 index 158eacae..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/io.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/io.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/keyword.py b/backend/OpenSourceProject/backend/env/lib/python3.6/keyword.py deleted file mode 120000 index 3b3a04c7..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/keyword.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/keyword.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/lib-dynload b/backend/OpenSourceProject/backend/env/lib/python3.6/lib-dynload deleted file mode 120000 index a0e6f9b0..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/lib-dynload +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/linecache.py b/backend/OpenSourceProject/backend/env/lib/python3.6/linecache.py deleted file mode 120000 index 2a81bfa2..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/linecache.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/linecache.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/locale.py b/backend/OpenSourceProject/backend/env/lib/python3.6/locale.py deleted file mode 120000 index 91ff291a..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/locale.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/no-global-site-packages.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/no-global-site-packages.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/ntpath.py b/backend/OpenSourceProject/backend/env/lib/python3.6/ntpath.py deleted file mode 120000 index 75adb5f3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/ntpath.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ntpath.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/operator.py b/backend/OpenSourceProject/backend/env/lib/python3.6/operator.py deleted file mode 120000 index 132dfe1f..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/operator.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/operator.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/orig-prefix.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/orig-prefix.txt deleted file mode 100644 index 147f6e25..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/orig-prefix.txt +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6 \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/os.py b/backend/OpenSourceProject/backend/env/lib/python3.6/os.py deleted file mode 120000 index 3e95ba4b..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/os.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/os.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/posixpath.py b/backend/OpenSourceProject/backend/env/lib/python3.6/posixpath.py deleted file mode 120000 index 001775ec..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/posixpath.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/posixpath.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/random.py b/backend/OpenSourceProject/backend/env/lib/python3.6/random.py deleted file mode 120000 index 3e75bcf5..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/random.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/random.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/re.py b/backend/OpenSourceProject/backend/env/lib/python3.6/re.py deleted file mode 120000 index ae91da78..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/re.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/re.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/readline.so b/backend/OpenSourceProject/backend/env/lib/python3.6/readline.so deleted file mode 120000 index 66558e8d..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/readline.so +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/readline.cpython-36m-darwin.so \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/reprlib.py b/backend/OpenSourceProject/backend/env/lib/python3.6/reprlib.py deleted file mode 120000 index 1ff2da8c..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/reprlib.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/reprlib.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/rlcompleter.py b/backend/OpenSourceProject/backend/env/lib/python3.6/rlcompleter.py deleted file mode 120000 index 7142da6a..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/rlcompleter.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/rlcompleter.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/shutil.py b/backend/OpenSourceProject/backend/env/lib/python3.6/shutil.py deleted file mode 120000 index 32bdd220..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/shutil.py +++ /dev/null @@ -1 +0,0 @@ -/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/shutil.py \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt deleted file mode 100644 index 87ce152a..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/LICENSE.txt +++ /dev/null @@ -1,39 +0,0 @@ -Copyright © 2014 by the Pallets team. - -Some rights reserved. - -Redistribution and use in source and binary forms of the software as -well as documentation, with or without modification, are permitted -provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -- 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. - -- 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 AND DOCUMENTATION 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 AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - ----- - -Click uses parts of optparse written by Gregory P. Ward and maintained -by the Python Software Foundation. This is limited to code in parser.py. - -Copyright © 2001-2006 Gregory P. Ward. All rights reserved. -Copyright © 2002-2006 Python Software Foundation. All rights reserved. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA deleted file mode 100644 index 625bdadd..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/METADATA +++ /dev/null @@ -1,121 +0,0 @@ -Metadata-Version: 2.1 -Name: Click -Version: 7.0 -Summary: Composable command line interface toolkit -Home-page: https://palletsprojects.com/p/click/ -Author: Armin Ronacher -Author-email: armin.ronacher@active-4.com -Maintainer: Pallets Team -Maintainer-email: contact@palletsprojects.com -License: BSD -Project-URL: Documentation, https://click.palletsprojects.com/ -Project-URL: Code, https://github.com/pallets/click -Project-URL: Issue tracker, https://github.com/pallets/click/issues -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -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 -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* - -\$ click\_ -========== - -Click is a Python package for creating beautiful command line interfaces -in a composable way with as little code as necessary. It's the "Command -Line Interface Creation Kit". It's highly configurable but comes with -sensible defaults out of the box. - -It aims to make the process of writing command line tools quick and fun -while also preventing any frustration caused by the inability to -implement an intended CLI API. - -Click in three points: - -- Arbitrary nesting of commands -- Automatic help page generation -- Supports lazy loading of subcommands at runtime - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - $ pip install click - -Click supports Python 3.4 and newer, Python 2.7, and PyPy. - -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - -A Simple Example ----------------- - -What does it look like? Here is an example of a simple Click program: - -.. code-block:: python - - import click - - @click.command() - @click.option("--count", default=1, help="Number of greetings.") - @click.option("--name", prompt="Your name", - help="The person to greet.") - def hello(count, name): - """Simple program that greets NAME for a total of COUNT times.""" - for _ in range(count): - click.echo("Hello, %s!" % name) - - if __name__ == '__main__': - hello() - -And what it looks like when run: - -.. code-block:: text - - $ python hello.py --count=3 - Your name: Click - Hello, Click! - Hello, Click! - Hello, Click! - - -Donate ------- - -The Pallets organization develops and supports Click and other popular -packages. In order to grow the community of contributors and users, and -allow the maintainers to devote more time to the projects, `please -donate today`_. - -.. _please donate today: https://palletsprojects.com/donate - - -Links ------ - -* Website: https://palletsprojects.com/p/click/ -* Documentation: https://click.palletsprojects.com/ -* License: `BSD `_ -* Releases: https://pypi.org/project/click/ -* Code: https://github.com/pallets/click -* Issue tracker: https://github.com/pallets/click/issues -* Test status: - - * Linux, Mac: https://travis-ci.org/pallets/click - * Windows: https://ci.appveyor.com/project/pallets/click - -* Test coverage: https://codecov.io/gh/pallets/click - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD deleted file mode 100644 index b99c0be6..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/RECORD +++ /dev/null @@ -1,40 +0,0 @@ -Click-7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Click-7.0.dist-info/LICENSE.txt,sha256=4hIxn676T0Wcisk3_chVcECjyrivKTZsoqSNI5AlIlw,1876 -Click-7.0.dist-info/METADATA,sha256=-r8jeke3Zer4diRvT1MjFZuiJ6yTT_qFP39svLqdaLI,3516 -Click-7.0.dist-info/RECORD,, -Click-7.0.dist-info/WHEEL,sha256=gduuPyBvFJQSQ0zdyxF7k0zynDXbIbvg5ZBHoXum5uk,110 -Click-7.0.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 -click/__init__.py,sha256=HjGThQ7tef9kkwCV371TBnrf0SAi6fKfU_jtEnbYTvQ,2789 -click/__pycache__/__init__.cpython-36.pyc,, -click/__pycache__/_bashcomplete.cpython-36.pyc,, -click/__pycache__/_compat.cpython-36.pyc,, -click/__pycache__/_termui_impl.cpython-36.pyc,, -click/__pycache__/_textwrap.cpython-36.pyc,, -click/__pycache__/_unicodefun.cpython-36.pyc,, -click/__pycache__/_winconsole.cpython-36.pyc,, -click/__pycache__/core.cpython-36.pyc,, -click/__pycache__/decorators.cpython-36.pyc,, -click/__pycache__/exceptions.cpython-36.pyc,, -click/__pycache__/formatting.cpython-36.pyc,, -click/__pycache__/globals.cpython-36.pyc,, -click/__pycache__/parser.cpython-36.pyc,, -click/__pycache__/termui.cpython-36.pyc,, -click/__pycache__/testing.cpython-36.pyc,, -click/__pycache__/types.cpython-36.pyc,, -click/__pycache__/utils.cpython-36.pyc,, -click/_bashcomplete.py,sha256=iaNUmtxag0YPfxba3TDYCNietiTMQIrvhRLj-H8okFU,11014 -click/_compat.py,sha256=vYmvoj4opPxo-c-2GMQQjYT_r_QkOKybkfGoeVrt0dA,23399 -click/_termui_impl.py,sha256=xHmLtOJhKUCVD6168yucJ9fknUJPAMs0eUTPgVUO-GQ,19611 -click/_textwrap.py,sha256=gwS4m7bdQiJnzaDG8osFcRb-5vn4t4l2qSCy-5csCEc,1198 -click/_unicodefun.py,sha256=QHy2_5jYlX-36O-JVrTHNnHOqg8tquUR0HmQFev7Ics,4364 -click/_winconsole.py,sha256=PPWVak8Iikm_gAPsxMrzwsVFCvHgaW3jPaDWZ1JBl3U,8965 -click/core.py,sha256=q8FLcDZsagBGSRe5Y9Hi_FGvAeZvusNfoO5EkhkSQ8Y,75305 -click/decorators.py,sha256=idKt6duLUUfAFftrHoREi8MJSd39XW36pUVHthdglwk,11226 -click/exceptions.py,sha256=CNpAjBAE7qjaV4WChxQeak95e5yUOau8AsvT-8m6wss,7663 -click/formatting.py,sha256=eh-cypTUAhpI3HD-K4ZpR3vCiURIO62xXvKkR3tNUTM,8889 -click/globals.py,sha256=oQkou3ZQ5DgrbVM6BwIBirwiqozbjfirzsLGAlLRRdg,1514 -click/parser.py,sha256=m-nGZz4VwprM42_qtFlWFGo7yRJQxkBlRcZodoH593Y,15510 -click/termui.py,sha256=o_ZXB2jyvL2Rce7P_bFGq452iyBq9ykJyRApIPMCZO0,23207 -click/testing.py,sha256=aYGqY_iWLu2p4k7lkuJ6t3fqpf6aPGqTsyLzNY_ngKg,13062 -click/types.py,sha256=2Q929p-aBP_ZYuMFJqJR-Ipucofv3fmDc5JzBDPmzJU,23287 -click/utils.py,sha256=6-D0WkAxvv9FkgHXSHwDIv0l9Gdx9Mm6Z5vuKNLIfZI,15763 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL deleted file mode 100644 index 1316c41d..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.31.1) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt deleted file mode 100644 index dca9a909..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Click-7.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -click diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/LICENSE.rst b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/LICENSE.rst deleted file mode 100644 index 9d227a0c..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/METADATA deleted file mode 100644 index 08fcc912..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/METADATA +++ /dev/null @@ -1,134 +0,0 @@ -Metadata-Version: 2.1 -Name: Flask -Version: 1.1.1 -Summary: A simple framework for building complex web applications. -Home-page: https://palletsprojects.com/p/flask/ -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://flask.palletsprojects.com/ -Project-URL: Code, https://github.com/pallets/flask -Project-URL: Issue tracker, https://github.com/pallets/flask/issues -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Framework :: Flask -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: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application -Classifier: Topic :: Software Development :: Libraries :: Application Frameworks -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* -Requires-Dist: Werkzeug (>=0.15) -Requires-Dist: Jinja2 (>=2.10.1) -Requires-Dist: itsdangerous (>=0.24) -Requires-Dist: click (>=5.1) -Provides-Extra: dev -Requires-Dist: pytest ; extra == 'dev' -Requires-Dist: coverage ; extra == 'dev' -Requires-Dist: tox ; extra == 'dev' -Requires-Dist: sphinx ; extra == 'dev' -Requires-Dist: pallets-sphinx-themes ; extra == 'dev' -Requires-Dist: sphinxcontrib-log-cabinet ; extra == 'dev' -Requires-Dist: sphinx-issues ; extra == 'dev' -Provides-Extra: docs -Requires-Dist: sphinx ; extra == 'docs' -Requires-Dist: pallets-sphinx-themes ; extra == 'docs' -Requires-Dist: sphinxcontrib-log-cabinet ; extra == 'docs' -Requires-Dist: sphinx-issues ; extra == 'docs' -Provides-Extra: dotenv -Requires-Dist: python-dotenv ; extra == 'dotenv' - -Flask -===== - -Flask is a lightweight `WSGI`_ web application framework. It is designed -to make getting started quick and easy, with the ability to scale up to -complex applications. It began as a simple wrapper around `Werkzeug`_ -and `Jinja`_ and has become one of the most popular Python web -application frameworks. - -Flask offers suggestions, but doesn't enforce any dependencies or -project layout. It is up to the developer to choose the tools and -libraries they want to use. There are many extensions provided by the -community that make adding new functionality easy. - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U Flask - - -A Simple Example ----------------- - -.. code-block:: python - - from flask import Flask - - app = Flask(__name__) - - @app.route("/") - def hello(): - return "Hello, World!" - -.. code-block:: text - - $ env FLASK_APP=hello.py flask run - * Serving Flask app "hello" - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) - - -Contributing ------------- - -For guidance on setting up a development environment and how to make a -contribution to Flask, see the `contributing guidelines`_. - -.. _contributing guidelines: https://github.com/pallets/flask/blob/master/CONTRIBUTING.rst - - -Donate ------- - -The Pallets organization develops and supports Flask and the libraries -it uses. In order to grow the community of contributors and users, and -allow the maintainers to devote more time to the projects, `please -donate today`_. - -.. _please donate today: https://psfmember.org/civicrm/contribute/transact?reset=1&id=20 - - -Links ------ - -* Website: https://palletsprojects.com/p/flask/ -* Documentation: https://flask.palletsprojects.com/ -* Releases: https://pypi.org/project/Flask/ -* Code: https://github.com/pallets/flask -* Issue tracker: https://github.com/pallets/flask/issues -* Test status: https://dev.azure.com/pallets/flask/_build -* Official chat: https://discord.gg/t6rrQZH - -.. _WSGI: https://wsgi.readthedocs.io -.. _Werkzeug: https://www.palletsprojects.com/p/werkzeug/ -.. _Jinja: https://www.palletsprojects.com/p/jinja/ -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/RECORD deleted file mode 100644 index c24d0ef7..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/RECORD +++ /dev/null @@ -1,48 +0,0 @@ -../../../bin/flask,sha256=Rpxl6CbuZGtfm_TIfKM9exFaS1S8D70veTszndDC6iQ,281 -Flask-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Flask-1.1.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 -Flask-1.1.1.dist-info/METADATA,sha256=Ht4R6TpTKOaXOmmQHhEF3A0Obpzde2Ai0kzNdu6-VWQ,4400 -Flask-1.1.1.dist-info/RECORD,, -Flask-1.1.1.dist-info/WHEEL,sha256=h_aVn5OB2IERUjMbi2pucmR_zzWJtk303YXvhh60NJ8,110 -Flask-1.1.1.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42 -Flask-1.1.1.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 -flask/__init__.py,sha256=qaBW4gy9Xxmdc3ygYO0_H214H1VpF7fq8xRR4XbqRjE,1894 -flask/__main__.py,sha256=fjVtt3QTANXlpJCOv3Ha7d5H-76MwzSIOab7SFD9TEk,254 -flask/__pycache__/__init__.cpython-36.pyc,, -flask/__pycache__/__main__.cpython-36.pyc,, -flask/__pycache__/_compat.cpython-36.pyc,, -flask/__pycache__/app.cpython-36.pyc,, -flask/__pycache__/blueprints.cpython-36.pyc,, -flask/__pycache__/cli.cpython-36.pyc,, -flask/__pycache__/config.cpython-36.pyc,, -flask/__pycache__/ctx.cpython-36.pyc,, -flask/__pycache__/debughelpers.cpython-36.pyc,, -flask/__pycache__/globals.cpython-36.pyc,, -flask/__pycache__/helpers.cpython-36.pyc,, -flask/__pycache__/logging.cpython-36.pyc,, -flask/__pycache__/sessions.cpython-36.pyc,, -flask/__pycache__/signals.cpython-36.pyc,, -flask/__pycache__/templating.cpython-36.pyc,, -flask/__pycache__/testing.cpython-36.pyc,, -flask/__pycache__/views.cpython-36.pyc,, -flask/__pycache__/wrappers.cpython-36.pyc,, -flask/_compat.py,sha256=8KPT54Iig96TuLipdogLRHNYToIcg-xPhnSV5VRERnw,4099 -flask/app.py,sha256=gLZInxueeQ9dkBo1wrntZ-bZqiDT4rYxy_AQ1xraFDc,98066 -flask/blueprints.py,sha256=vkdm8NusGsfZUeIfPdCluj733QFmiQcT4Sk1tuZLUjw,21400 -flask/cli.py,sha256=_WhPG1bggNdrP0QO95Vex6VJpDqTsVK0z54Y5poljKU,30933 -flask/config.py,sha256=3dejvQRYfNHw_V7dCLMxU8UNFpL34xIKemN7gHZIZ8Y,10052 -flask/ctx.py,sha256=cks-omGedkxawHFo6bKIrdOHsJCAgg1i_NWw_htxb5U,16724 -flask/debughelpers.py,sha256=-whvPKuAoU8AZ9c1z_INuOeBgfYDqE1J2xNBsoriugU,6475 -flask/globals.py,sha256=OgcHb6_NCyX6-TldciOdKcyj4PNfyQwClxdMhvov6aA,1637 -flask/helpers.py,sha256=x2Pa85R5dV6uA5f5423JTb6x4u6ZaMGf8sfosUZ76dQ,43004 -flask/json/__init__.py,sha256=6nITbZYiYOPB8Qfi1-dvsblwn01KRz8VOsMBIZyaYek,11988 -flask/json/__pycache__/__init__.cpython-36.pyc,, -flask/json/__pycache__/tag.cpython-36.pyc,, -flask/json/tag.py,sha256=vq9GOllg_0kTWKuVFrwmkeOQzR-jdBD23x-89JyCCQI,8306 -flask/logging.py,sha256=WcY5UkqTysGfmosyygSlXyZYGwOp3y-VsE6ehoJ48dk,3250 -flask/sessions.py,sha256=G0KsEkr_i1LG_wOINwFSOW3ts7Xbv4bNgEZKc7TRloc,14360 -flask/signals.py,sha256=yYLOed2x8WnQ7pirGalQYfpYpCILJ0LJhmNSrnWvjqw,2212 -flask/templating.py,sha256=F8E_IZXn9BGsjMzUJ5N_ACMyZdiFBp_SSEaUunvfZ7g,4939 -flask/testing.py,sha256=b0QaEejx0UcXqfSFP43k5W57bTVeDyrNK3uPD8JUpCk,10146 -flask/views.py,sha256=eeWnadLAj0QdQPLtjKipDetRZyG62CT2y7fNOFDJz0g,5802 -flask/wrappers.py,sha256=kgsvtZuMM6RQaDqhRbc5Pcj9vqTnaERl2pmXcdGL7LU,4736 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/WHEEL deleted file mode 100644 index 78e6f69d..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.4) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/entry_points.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/entry_points.txt deleted file mode 100644 index 1eb02520..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -flask = flask.cli:main - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/top_level.txt deleted file mode 100644 index 7e106024..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask-1.1.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -flask diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/DESCRIPTION.rst b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/DESCRIPTION.rst deleted file mode 100644 index e1187231..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,3 +0,0 @@ -UNKNOWN - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/METADATA deleted file mode 100644 index 44a450bf..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/METADATA +++ /dev/null @@ -1,29 +0,0 @@ -Metadata-Version: 2.0 -Name: Flask-RESTful -Version: 0.3.7 -Summary: Simple framework for creating REST APIs -Home-page: https://www.github.com/flask-restful/flask-restful/ -Author: Twilio API Team -Author-email: help@twilio.com -License: BSD -Platform: any -Classifier: Framework :: Flask -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: License :: OSI Approved :: BSD License -Provides-Extra: docs -Requires-Dist: aniso8601 (>=0.82) -Requires-Dist: Flask (>=0.8) -Requires-Dist: six (>=1.3.0) -Requires-Dist: pytz -Provides-Extra: docs -Requires-Dist: sphinx; extra == 'docs' - -UNKNOWN - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/RECORD deleted file mode 100644 index 263f0c30..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/RECORD +++ /dev/null @@ -1,27 +0,0 @@ -Flask_RESTful-0.3.7.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10 -Flask_RESTful-0.3.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Flask_RESTful-0.3.7.dist-info/METADATA,sha256=-rTvfEneMaSF6ZIm4oNeD1Imo4E7IkciGy2RnM0xmKo,882 -Flask_RESTful-0.3.7.dist-info/RECORD,, -Flask_RESTful-0.3.7.dist-info/WHEEL,sha256=kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8,110 -Flask_RESTful-0.3.7.dist-info/metadata.json,sha256=st4vJ82R36oCTXb65zhhaMR8wgqJ1EIvxfc21jdukow,1064 -Flask_RESTful-0.3.7.dist-info/top_level.txt,sha256=lNpWPlejgBAtMhCUwz_FTyJH12ul1mBZ-Uv3ZK1HiGg,14 -flask_restful/__init__.py,sha256=VRwraEsTs-kJdByT8bMHC5Iy7sxzTx3sZQyAKrOFzGo,27502 -flask_restful/__pycache__/__init__.cpython-36.pyc,, -flask_restful/__pycache__/__version__.cpython-36.pyc,, -flask_restful/__pycache__/fields.cpython-36.pyc,, -flask_restful/__pycache__/inputs.cpython-36.pyc,, -flask_restful/__pycache__/reqparse.cpython-36.pyc,, -flask_restful/__version__.py,sha256=KRsKKlxa0W81N7sVaSIcQp7Z_ymI-7V2rOBm1rOTCEE,45 -flask_restful/fields.py,sha256=_aO-5n5vn_tLYkxw8rQhAqzPXQRvfumvz_M9HJUL99c,13069 -flask_restful/inputs.py,sha256=AOBF_1BpB8snY3XJT_vca_uWYzkCP2nla01lFU7xqLE,9114 -flask_restful/representations/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 -flask_restful/representations/__pycache__/__init__.cpython-36.pyc,, -flask_restful/representations/__pycache__/json.cpython-36.pyc,, -flask_restful/representations/json.py,sha256=swKwnbt7v2ioHfHkqhqbzIu_yrcP0ComlSl49IGFJOo,873 -flask_restful/reqparse.py,sha256=2BYZmrS5SYf74UVK5FlJxihkh-YduzknbiXNJnsOYfI,14606 -flask_restful/utils/__init__.py,sha256=Qh5pyCIT2dfHmrUdS6lsMbBLjZmAhz1fl7vWyJ_n4XQ,719 -flask_restful/utils/__pycache__/__init__.cpython-36.pyc,, -flask_restful/utils/__pycache__/cors.cpython-36.pyc,, -flask_restful/utils/__pycache__/crypto.cpython-36.pyc,, -flask_restful/utils/cors.py,sha256=cZiqaHhIn0w66spRoSIdC-jIn4X_b6OlVms5eGF4Ess,2084 -flask_restful/utils/crypto.py,sha256=q3PBvAYMJYybbqqQlKNF_Pqeyo9h3x5jFJuVqtEA5bA,996 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/WHEEL deleted file mode 100644 index 7332a419..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/metadata.json b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/metadata.json deleted file mode 100644 index 005040ed..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Framework :: Flask", "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", "License :: OSI Approved :: BSD License"], "extensions": {"python.details": {"contacts": [{"email": "help@twilio.com", "name": "Twilio API Team", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://www.github.com/flask-restful/flask-restful/"}}}, "extras": ["docs"], "generator": "bdist_wheel (0.30.0)", "license": "BSD", "metadata_version": "2.0", "name": "Flask-RESTful", "platform": "any", "run_requires": [{"requires": ["Flask (>=0.8)", "aniso8601 (>=0.82)", "pytz", "six (>=1.3.0)"]}, {"extra": "docs", "requires": ["sphinx"]}], "summary": "Simple framework for creating REST APIs", "test_requires": [{"requires": ["Flask-RESTful", "blinker", "mock (>=0.8)"]}], "version": "0.3.7"} \ No newline at end of file diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/top_level.txt deleted file mode 100644 index f7b85270..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Flask_RESTful-0.3.7.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -flask_restful diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/LICENSE.rst b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/LICENSE.rst deleted file mode 100644 index c37cae49..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/METADATA deleted file mode 100644 index 11c545a4..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/METADATA +++ /dev/null @@ -1,103 +0,0 @@ -Metadata-Version: 2.1 -Name: Jinja2 -Version: 2.10.3 -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 :: 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-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 %} - - {% 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 - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/RECORD deleted file mode 100644 index f476d0c6..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/RECORD +++ /dev/null @@ -1,61 +0,0 @@ -Jinja2-2.10.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Jinja2-2.10.3.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 -Jinja2-2.10.3.dist-info/METADATA,sha256=RD_zg-jTU2K8LbwVqRNYNxo-RmRD-g08ZimL2R1mUEg,3380 -Jinja2-2.10.3.dist-info/RECORD,, -Jinja2-2.10.3.dist-info/WHEEL,sha256=8zNYZbwQSXoB9IfXOjPfeNwvAsALAjffgk27FqvCWbo,110 -Jinja2-2.10.3.dist-info/entry_points.txt,sha256=Qy_DkVo6Xj_zzOtmErrATe8lHZhOqdjpt3e4JJAGyi8,61 -Jinja2-2.10.3.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 -jinja2/__init__.py,sha256=9fIkcl501fvTG_9oTAHveZrNmWHUnC3cb1ccCJQ1VzQ,2616 -jinja2/__pycache__/__init__.cpython-36.pyc,, -jinja2/__pycache__/_compat.cpython-36.pyc,, -jinja2/__pycache__/_identifier.cpython-36.pyc,, -jinja2/__pycache__/asyncfilters.cpython-36.pyc,, -jinja2/__pycache__/asyncsupport.cpython-36.pyc,, -jinja2/__pycache__/bccache.cpython-36.pyc,, -jinja2/__pycache__/compiler.cpython-36.pyc,, -jinja2/__pycache__/constants.cpython-36.pyc,, -jinja2/__pycache__/debug.cpython-36.pyc,, -jinja2/__pycache__/defaults.cpython-36.pyc,, -jinja2/__pycache__/environment.cpython-36.pyc,, -jinja2/__pycache__/exceptions.cpython-36.pyc,, -jinja2/__pycache__/ext.cpython-36.pyc,, -jinja2/__pycache__/filters.cpython-36.pyc,, -jinja2/__pycache__/idtracking.cpython-36.pyc,, -jinja2/__pycache__/lexer.cpython-36.pyc,, -jinja2/__pycache__/loaders.cpython-36.pyc,, -jinja2/__pycache__/meta.cpython-36.pyc,, -jinja2/__pycache__/nativetypes.cpython-36.pyc,, -jinja2/__pycache__/nodes.cpython-36.pyc,, -jinja2/__pycache__/optimizer.cpython-36.pyc,, -jinja2/__pycache__/parser.cpython-36.pyc,, -jinja2/__pycache__/runtime.cpython-36.pyc,, -jinja2/__pycache__/sandbox.cpython-36.pyc,, -jinja2/__pycache__/tests.cpython-36.pyc,, -jinja2/__pycache__/utils.cpython-36.pyc,, -jinja2/__pycache__/visitor.cpython-36.pyc,, -jinja2/_compat.py,sha256=mS-2MTiCpkkOd-JKvxQQxNQFEEu-YVwUnwVHruplYoo,2685 -jinja2/_identifier.py,sha256=W1QBSY-iJsyt6oR_nKSuNNCzV95vLIOYgUNPUI1d5gU,1726 -jinja2/asyncfilters.py,sha256=cTDPvrS8Hp_IkwsZ1m9af_lr5nHysw7uTa5gV0NmZVE,4144 -jinja2/asyncsupport.py,sha256=UErQ3YlTLaSjFb94P4MVn08-aVD9jJxty2JVfMRb-1M,7878 -jinja2/bccache.py,sha256=FF8Qij2CGK6oKdHb9Vz396YHh1kssAxqX2XsB6uMvLk,12719 -jinja2/compiler.py,sha256=BqC5U6JxObSRhblyT_a6Tp5GtEU5z3US1a4jLQaxxgo,65386 -jinja2/constants.py,sha256=uwwV8ZUhHhacAuz5PTwckfsbqBaqM7aKfyJL7kGX5YQ,1626 -jinja2/debug.py,sha256=BAWmOZJGeOKY6g3OCJ1v0_GrUKz1LHp4Z-3m_tJIT-U,12281 -jinja2/defaults.py,sha256=Em-95hmsJxIenDCZFB1YSvf9CNhe9rBmytN3yUrBcWA,1400 -jinja2/environment.py,sha256=VnkAkqw8JbjZct4tAyHlpBrka2vqB-Z58RAP-32P1ZY,50849 -jinja2/exceptions.py,sha256=_Rj-NVi98Q6AiEjYQOsP8dEIdu5AlmRHzcSNOPdWix4,4428 -jinja2/ext.py,sha256=atMQydEC86tN1zUsdQiHw5L5cF62nDbqGue25Yiu3N4,24500 -jinja2/filters.py,sha256=yOAJk0MsH-_gEC0i0U6NweVQhbtYaC-uE8xswHFLF4w,36528 -jinja2/idtracking.py,sha256=2GbDSzIvGArEBGLkovLkqEfmYxmWsEf8c3QZwM4uNsw,9197 -jinja2/lexer.py,sha256=ySEPoXd1g7wRjsuw23uimS6nkGN5aqrYwcOKxCaVMBQ,28559 -jinja2/loaders.py,sha256=xiTuURKAEObyym0nU8PCIXu_Qp8fn0AJ5oIADUUm-5Q,17382 -jinja2/meta.py,sha256=fmKHxkmZYAOm9QyWWy8EMd6eefAIh234rkBMW2X4ZR8,4340 -jinja2/nativetypes.py,sha256=_sJhS8f-8Q0QMIC0dm1YEdLyxEyoO-kch8qOL5xUDfE,7308 -jinja2/nodes.py,sha256=L10L_nQDfubLhO3XjpF9qz46FSh2clL-3e49ogVlMmA,30853 -jinja2/optimizer.py,sha256=MsdlFACJ0FRdPtjmCAdt7JQ9SGrXFaDNUaslsWQaG3M,1722 -jinja2/parser.py,sha256=lPzTEbcpTRBLw8ii6OYyExHeAhaZLMA05Hpv4ll3ULk,35875 -jinja2/runtime.py,sha256=nmO38W08p1d1S4MdvtCgzzLIqVs4J4nwwiMZjZmVQaY,27644 -jinja2/sandbox.py,sha256=i6nacG3tCN-4UwEpzDpl6TcQdCR-zRMsoEahiQ01LiY,17080 -jinja2/tests.py,sha256=18yVEZwhD79Osy5wlK_m0GTtY_9OPtiSklURgvltGo8,4214 -jinja2/utils.py,sha256=xYUsq6h5_xDLVT4b5dvdjQ6H7S9WfUglrVIJ6qyPTRw,20501 -jinja2/visitor.py,sha256=JD1H1cANA29JcntFfN5fPyqQxB4bI4wC00BzZa-XHks,3316 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/WHEEL deleted file mode 100644 index 8b701e93..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.6) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/entry_points.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/entry_points.txt deleted file mode 100644 index 3619483f..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[babel.extractors] -jinja2 = jinja2.ext:babel_extract [i18n] - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/top_level.txt deleted file mode 100644 index 7f7afbf3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Jinja2-2.10.3.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -jinja2 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.rst b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.rst deleted file mode 100644 index 9d227a0c..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA deleted file mode 100644 index b208d936..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/METADATA +++ /dev/null @@ -1,103 +0,0 @@ -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 -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 :: 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.* - -MarkupSafe -========== - -MarkupSafe implements a text object that escapes characters so it is -safe to use in HTML and XML. Characters that have special meanings are -replaced so that they display as the actual characters. This mitigates -injection attacks, meaning untrusted user input can safely be displayed -on a page. - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U MarkupSafe - -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - -Examples --------- - -.. code-block:: pycon - - >>> from markupsafe import Markup, escape - >>> # escape replaces special characters and wraps in Markup - >>> escape('') - Markup(u'<script>alert(document.cookie);</script>') - >>> # wrap in Markup to mark text "safe" and prevent escaping - >>> Markup('Hello') - Markup('hello') - >>> escape(Markup('Hello')) - Markup('hello') - >>> # Markup is a text subclass (str on Python 3, unicode on Python 2) - >>> # methods and operators escape their arguments - >>> template = Markup("Hello %s") - >>> template % '"World"' - Markup('Hello "World"') - - -Donate ------- - -The Pallets organization develops and supports MarkupSafe and other -libraries that use it. In order to grow the community of contributors -and users, and allow the maintainers to devote more time to the -projects, `please donate today`_. - -.. _please donate today: https://palletsprojects.com/donate - - -Links ------ - -* Website: https://palletsprojects.com/p/markupsafe/ -* Documentation: https://markupsafe.palletsprojects.com/ -* License: `BSD-3-Clause `_ -* Releases: https://pypi.org/project/MarkupSafe/ -* Code: https://github.com/pallets/markupsafe -* Issue tracker: https://github.com/pallets/markupsafe/issues -* Test status: - - * Linux, Mac: https://travis-ci.org/pallets/markupsafe - * Windows: https://ci.appveyor.com/project/pallets/markupsafe - -* Test coverage: https://codecov.io/gh/pallets/markupsafe - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD deleted file mode 100644 index 1c09bc48..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/RECORD +++ /dev/null @@ -1,16 +0,0 @@ -MarkupSafe-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -MarkupSafe-1.1.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 -MarkupSafe-1.1.1.dist-info/METADATA,sha256=nJHwJ4_4ka-V39QH883jPrslj6inNdyyNASBXbYgHXQ,3570 -MarkupSafe-1.1.1.dist-info/RECORD,, -MarkupSafe-1.1.1.dist-info/WHEEL,sha256=jbwwsYxUMSTI4YtVtq_YJIxL7IgPdHeCKUMmQlt2K6U,109 -MarkupSafe-1.1.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 -markupsafe/__init__.py,sha256=oTblO5f9KFM-pvnq9bB0HgElnqkJyqHnFN1Nx2NIvnY,10126 -markupsafe/__pycache__/__init__.cpython-36.pyc,, -markupsafe/__pycache__/_compat.cpython-36.pyc,, -markupsafe/__pycache__/_constants.cpython-36.pyc,, -markupsafe/__pycache__/_native.cpython-36.pyc,, -markupsafe/_compat.py,sha256=uEW1ybxEjfxIiuTbRRaJpHsPFf4yQUMMKaPgYEC5XbU,558 -markupsafe/_constants.py,sha256=zo2ajfScG-l1Sb_52EP3MlDCqO7Y1BVHUXXKRsVDRNk,4690 -markupsafe/_native.py,sha256=d-8S_zzYt2y512xYcuSxq0NeG2DUUvG80wVdTn-4KI8,1873 -markupsafe/_speedups.c,sha256=k0fzEIK3CP6MmMqeY0ob43TP90mVN0DTyn7BAl3RqSg,9884 -markupsafe/_speedups.cpython-36m-darwin.so,sha256=gAFPy56Sic0xoW6ZX3vNlSIudH37VfkTL5p5huZTCKQ,35080 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL deleted file mode 100644 index 368d7aaa..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.1) -Root-Is-Purelib: false -Tag: cp36-cp36m-macosx_10_6_intel - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt deleted file mode 100644 index 75bf7292..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/MarkupSafe-1.1.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -markupsafe diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/AUTHORS b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/AUTHORS deleted file mode 100644 index 90c7fa4d..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/AUTHORS +++ /dev/null @@ -1,29 +0,0 @@ -PyJWT lead developer ---------------------- - - - jpadilla - - -Original author ------------------- - -- progrium - - -Patches and Suggestions ------------------------ - - - Boris Feld - - - Åsmund Ødegård - Adding support for RSA-SHA256 privat/public signature. - - - Mark Adams - - - Wouter Bolsterlee - - - Michael Davis - - - Vinod Gupta - - - Derek Weitzel diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/LICENSE b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/LICENSE deleted file mode 100644 index bdc7819e..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 José Padilla - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/METADATA deleted file mode 100644 index 47ee5589..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/METADATA +++ /dev/null @@ -1,115 +0,0 @@ -Metadata-Version: 2.1 -Name: PyJWT -Version: 1.7.1 -Summary: JSON Web Token implementation in Python -Home-page: http://github.com/jpadilla/pyjwt -Author: Jose Padilla -Author-email: hello@jpadilla.com -License: MIT -Keywords: jwt json web token security signing -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Natural Language :: English -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2.7 -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 :: Utilities -Provides-Extra: crypto -Requires-Dist: cryptography (>=1.4) ; extra == 'crypto' -Provides-Extra: flake8 -Requires-Dist: flake8 ; extra == 'flake8' -Requires-Dist: flake8-import-order ; extra == 'flake8' -Requires-Dist: pep8-naming ; extra == 'flake8' -Provides-Extra: test -Requires-Dist: pytest (<5.0.0,>=4.0.1) ; extra == 'test' -Requires-Dist: pytest-cov (<3.0.0,>=2.6.0) ; extra == 'test' -Requires-Dist: pytest-runner (<5.0.0,>=4.2) ; extra == 'test' - -PyJWT -===== - -.. image:: https://travis-ci.com/jpadilla/pyjwt.svg?branch=master - :target: http://travis-ci.com/jpadilla/pyjwt?branch=master - -.. image:: https://ci.appveyor.com/api/projects/status/h8nt70aqtwhht39t?svg=true - :target: https://ci.appveyor.com/project/jpadilla/pyjwt - -.. image:: https://img.shields.io/pypi/v/pyjwt.svg - :target: https://pypi.python.org/pypi/pyjwt - -.. image:: https://coveralls.io/repos/jpadilla/pyjwt/badge.svg?branch=master - :target: https://coveralls.io/r/jpadilla/pyjwt?branch=master - -.. image:: https://readthedocs.org/projects/pyjwt/badge/?version=latest - :target: https://pyjwt.readthedocs.io - -A Python implementation of `RFC 7519 `_. Original implementation was written by `@progrium `_. - -Sponsor -------- - -+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| |auth0-logo| | If you want to quickly add secure token-based authentication to Python projects, feel free to check Auth0's Python SDK and free plan at `auth0.com/overview `_. | -+--------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. |auth0-logo| image:: https://user-images.githubusercontent.com/83319/31722733-de95bbde-b3ea-11e7-96bf-4f4e8f915588.png - -Installing ----------- - -Install with **pip**: - -.. code-block:: sh - - $ pip install PyJWT - - -Usage ------ - -.. code:: python - - >>> import jwt - >>> encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256') - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.4twFt5NiznN84AWoo1d7KO1T_yoc0Z6XOpOVswacPZg' - - >>> jwt.decode(encoded, 'secret', algorithms=['HS256']) - {'some': 'payload'} - - -Command line ------------- - -Usage:: - - pyjwt [options] INPUT - -Decoding examples:: - - pyjwt --key=secret decode TOKEN - pyjwt decode --no-verify TOKEN - -See more options executing ``pyjwt --help``. - - -Documentation -------------- - -View the full docs online at https://pyjwt.readthedocs.io/en/latest/ - - -Tests ------ - -You can run tests from the project root after cloning with: - -.. code-block:: sh - - $ python setup.py test - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/RECORD deleted file mode 100644 index 00ff2afb..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/RECORD +++ /dev/null @@ -1,35 +0,0 @@ -../../../bin/pyjwt,sha256=EGD4v9AVJsLLFl6WlHcGg9Nej9IZXwz_TzuDQ363iR4,284 -PyJWT-1.7.1.dist-info/AUTHORS,sha256=rahh5ZJ3f4RSF4X1_K1DvxTRm4Hy45QiMP7dDG_-yrE,595 -PyJWT-1.7.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -PyJWT-1.7.1.dist-info/LICENSE,sha256=7IKvgVtfnahoWvswDMW-t5SeHCK3m2wcBUeWzv32ysY,1080 -PyJWT-1.7.1.dist-info/METADATA,sha256=wIohFuzbkeGUiMkkD5U98z520aUoY6UnmsfDl4vVHRI,3878 -PyJWT-1.7.1.dist-info/RECORD,, -PyJWT-1.7.1.dist-info/WHEEL,sha256=_wJFdOYk7i3xxT8ElOkUJvOdOvfNGbR9g-bf6UQT6sU,110 -PyJWT-1.7.1.dist-info/entry_points.txt,sha256=Xl_tLkGbTgywYa7PwaEY2xSiCtVtM2PdHTL4CW_n9dM,45 -PyJWT-1.7.1.dist-info/top_level.txt,sha256=RP5DHNyJbMq2ka0FmfTgoSaQzh7e3r5XuCWCO8a00k8,4 -jwt/__init__.py,sha256=zzpUkNjnVRNWZKLBgn-t3fR3IWVdCWekrAKtsZWkCoQ,810 -jwt/__main__.py,sha256=_rMsGakpyw1N023P8QOjCgbCxhXSCNIg92YpmUhQGMk,4162 -jwt/__pycache__/__init__.cpython-36.pyc,, -jwt/__pycache__/__main__.cpython-36.pyc,, -jwt/__pycache__/algorithms.cpython-36.pyc,, -jwt/__pycache__/api_jws.cpython-36.pyc,, -jwt/__pycache__/api_jwt.cpython-36.pyc,, -jwt/__pycache__/compat.cpython-36.pyc,, -jwt/__pycache__/exceptions.cpython-36.pyc,, -jwt/__pycache__/help.cpython-36.pyc,, -jwt/__pycache__/utils.cpython-36.pyc,, -jwt/algorithms.py,sha256=kL1ARjxNL8JeuxEpWS8On14qJWomMX_A_ncIrnZhBrA,13336 -jwt/api_jws.py,sha256=wQxbg_cYR4hAJl4-9Ijf29B46NrOKhruXS7ANPFqkZ8,8095 -jwt/api_jwt.py,sha256=NKRiCsTcMd0B5N-74zvqBYpQuxBxC4f6TCLM6P0jxVU,7905 -jwt/compat.py,sha256=VG2zhmZFQ5spP0AThSVumRogymUXORz6fxA1jTew-cA,1624 -jwt/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -jwt/contrib/__pycache__/__init__.cpython-36.pyc,, -jwt/contrib/algorithms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -jwt/contrib/algorithms/__pycache__/__init__.cpython-36.pyc,, -jwt/contrib/algorithms/__pycache__/py_ecdsa.cpython-36.pyc,, -jwt/contrib/algorithms/__pycache__/pycrypto.cpython-36.pyc,, -jwt/contrib/algorithms/py_ecdsa.py,sha256=tSTUrwx-u14DJcqAChRzJG-wf7bEY2Gv2hI5xSZZNjk,1771 -jwt/contrib/algorithms/pycrypto.py,sha256=mU3vRfk9QKj06ky3XXKXNkxv8-R4mBHbFR3EvbOgJ6k,1249 -jwt/exceptions.py,sha256=kGq96NMkyPBmx7-RXvLXq9ddTo2_SJPKPTpPscvGUuA,986 -jwt/help.py,sha256=w9sYBatZK8-DIAxLPsdxQBVHXnqjOTETJ4dFY5hhEHs,1609 -jwt/utils.py,sha256=RraFiloy_xsB8NA1CrlHxS9lR73If8amInQ3P1mKXeM,2629 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/WHEEL deleted file mode 100644 index c4bde303..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.32.3) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/entry_points.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/entry_points.txt deleted file mode 100644 index 78717b26..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -pyjwt = jwt.__main__:main - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/top_level.txt deleted file mode 100644 index 27ccc9bc..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/PyJWT-1.7.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -jwt diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/LICENSE.rst b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/LICENSE.rst deleted file mode 100644 index c37cae49..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/LICENSE.rst +++ /dev/null @@ -1,28 +0,0 @@ -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. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/METADATA deleted file mode 100644 index 6341603c..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/METADATA +++ /dev/null @@ -1,128 +0,0 @@ -Metadata-Version: 2.1 -Name: Werkzeug -Version: 0.16.0 -Summary: The comprehensive WSGI web application library. -Home-page: https://palletsprojects.com/p/werkzeug/ -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://werkzeug.palletsprojects.com/ -Project-URL: Code, https://github.com/pallets/werkzeug -Project-URL: Issue tracker, https://github.com/pallets/werkzeug/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.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware -Classifier: Topic :: Software Development :: Libraries :: Application Frameworks -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* -Provides-Extra: dev -Requires-Dist: pytest ; extra == 'dev' -Requires-Dist: coverage ; extra == 'dev' -Requires-Dist: tox ; extra == 'dev' -Requires-Dist: sphinx ; extra == 'dev' -Requires-Dist: pallets-sphinx-themes ; extra == 'dev' -Requires-Dist: sphinx-issues ; extra == 'dev' -Provides-Extra: termcolor -Requires-Dist: termcolor ; extra == 'termcolor' -Provides-Extra: watchdog -Requires-Dist: watchdog ; extra == 'watchdog' - -Werkzeug -======== - -*werkzeug* German noun: "tool". Etymology: *werk* ("work"), *zeug* ("stuff") - -Werkzeug is a comprehensive `WSGI`_ web application library. It began as -a simple collection of various utilities for WSGI applications and has -become one of the most advanced WSGI utility libraries. - -It includes: - -- An interactive debugger that allows inspecting stack traces and - source code in the browser with an interactive interpreter for any - frame in the stack. -- A full-featured request object with objects to interact with - headers, query args, form data, files, and cookies. -- A response object that can wrap other WSGI applications and handle - streaming data. -- A routing system for matching URLs to endpoints and generating URLs - for endpoints, with an extensible system for capturing variables - from URLs. -- HTTP utilities to handle entity tags, cache control, dates, user - agents, cookies, files, and more. -- A threaded WSGI server for use while developing applications - locally. -- A test client for simulating HTTP requests during testing without - requiring running a server. - -Werkzeug is Unicode aware and doesn't enforce any dependencies. It is up -to the developer to choose a template engine, database adapter, and even -how to handle requests. It can be used to build all sorts of end user -applications such as blogs, wikis, or bulletin boards. - -`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while -providing more structure and patterns for defining powerful -applications. - - -Installing ----------- - -Install and update using `pip`_: - -.. code-block:: text - - pip install -U Werkzeug - - -A Simple Example ----------------- - -.. code-block:: python - - from werkzeug.wrappers import Request, Response - - @Request.application - def application(request): - return Response('Hello, World!') - - if __name__ == '__main__': - from werkzeug.serving import run_simple - run_simple('localhost', 4000, application) - - -Links ------ - -- Website: https://palletsprojects.com/p/werkzeug/ -- Documentation: https://werkzeug.palletsprojects.com/ -- Releases: https://pypi.org/project/Werkzeug/ -- Code: https://github.com/pallets/werkzeug -- Issue tracker: https://github.com/pallets/werkzeug/issues -- Test status: https://dev.azure.com/pallets/werkzeug/_build -- Official chat: https://discord.gg/t6rrQZH - -.. _WSGI: https://wsgi.readthedocs.io/en/latest/ -.. _Flask: https://www.palletsprojects.com/p/flask/ -.. _pip: https://pip.pypa.io/en/stable/quickstart/ - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/RECORD deleted file mode 100644 index 5705ef05..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/RECORD +++ /dev/null @@ -1,119 +0,0 @@ -Werkzeug-0.16.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Werkzeug-0.16.0.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 -Werkzeug-0.16.0.dist-info/METADATA,sha256=BH9_q8z1IK2FbYDS7tSWLsd07z7GDReBgRumclV7T08,4712 -Werkzeug-0.16.0.dist-info/RECORD,, -Werkzeug-0.16.0.dist-info/WHEEL,sha256=8zNYZbwQSXoB9IfXOjPfeNwvAsALAjffgk27FqvCWbo,110 -Werkzeug-0.16.0.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 -werkzeug/__init__.py,sha256=tTlHx8lI6FpqB_X9x_zICTy3Rgikur6yIUJr8AE2XTs,7141 -werkzeug/__pycache__/__init__.cpython-36.pyc,, -werkzeug/__pycache__/_compat.cpython-36.pyc,, -werkzeug/__pycache__/_internal.cpython-36.pyc,, -werkzeug/__pycache__/_reloader.cpython-36.pyc,, -werkzeug/__pycache__/datastructures.cpython-36.pyc,, -werkzeug/__pycache__/exceptions.cpython-36.pyc,, -werkzeug/__pycache__/filesystem.cpython-36.pyc,, -werkzeug/__pycache__/formparser.cpython-36.pyc,, -werkzeug/__pycache__/http.cpython-36.pyc,, -werkzeug/__pycache__/local.cpython-36.pyc,, -werkzeug/__pycache__/posixemulation.cpython-36.pyc,, -werkzeug/__pycache__/routing.cpython-36.pyc,, -werkzeug/__pycache__/security.cpython-36.pyc,, -werkzeug/__pycache__/serving.cpython-36.pyc,, -werkzeug/__pycache__/test.cpython-36.pyc,, -werkzeug/__pycache__/testapp.cpython-36.pyc,, -werkzeug/__pycache__/urls.cpython-36.pyc,, -werkzeug/__pycache__/useragents.cpython-36.pyc,, -werkzeug/__pycache__/utils.cpython-36.pyc,, -werkzeug/__pycache__/wsgi.cpython-36.pyc,, -werkzeug/_compat.py,sha256=oBEVVrJT4sqYdIZbUWmgV9T9w257RhTSDBlTjh0Zbb0,6431 -werkzeug/_internal.py,sha256=Wx7cpTRWqeBd0LAqobo0lCO4pNUW4oav6XKf7Taumgk,14590 -werkzeug/_reloader.py,sha256=I3mg3oRQ0lLzl06oEoVopN3bN7CtINuuUQdqDcmTnEs,11531 -werkzeug/contrib/__init__.py,sha256=EvNyiiCF49j5P0fZYJ3ZGe82ofXdSBvUNqWFwwBMibQ,553 -werkzeug/contrib/__pycache__/__init__.cpython-36.pyc,, -werkzeug/contrib/__pycache__/atom.cpython-36.pyc,, -werkzeug/contrib/__pycache__/cache.cpython-36.pyc,, -werkzeug/contrib/__pycache__/fixers.cpython-36.pyc,, -werkzeug/contrib/__pycache__/iterio.cpython-36.pyc,, -werkzeug/contrib/__pycache__/lint.cpython-36.pyc,, -werkzeug/contrib/__pycache__/profiler.cpython-36.pyc,, -werkzeug/contrib/__pycache__/securecookie.cpython-36.pyc,, -werkzeug/contrib/__pycache__/sessions.cpython-36.pyc,, -werkzeug/contrib/__pycache__/wrappers.cpython-36.pyc,, -werkzeug/contrib/atom.py,sha256=KpPJcTfzNW1J0VNQckCbVtVGBe3V8s451tOUya4qByI,15415 -werkzeug/contrib/cache.py,sha256=AEh5UIw-Ui7sHZnlpvrD7ueOKUhCaAD55FXiPtXbbRs,32115 -werkzeug/contrib/fixers.py,sha256=peEtAiIWYT5bh00EWEPOGKzGZXivOzVhhzKPvvzk1RM,9193 -werkzeug/contrib/iterio.py,sha256=KKHa_8aCF_uhoeQVyPGUwrivuB6y6nNdXYo2D2vzOA8,10928 -werkzeug/contrib/lint.py,sha256=NdIxP0E2kVt1xDIxoaIz3Rcl8ZdgmHaFbGTOaybGpN4,296 -werkzeug/contrib/profiler.py,sha256=k_oMLU-AtsVvQ9TxNdermY6FuzSTYr-WE-ZmWb_DMyU,1229 -werkzeug/contrib/securecookie.py,sha256=xbtElskGmtbiApgOJ5WhGgqGDs_68_PcWzqDIAY_QZY,13076 -werkzeug/contrib/sessions.py,sha256=CkJ4IWvNqIaZCP83FMKYFszKL7E6Y1m6YEii7RaTYWs,13040 -werkzeug/contrib/wrappers.py,sha256=ZmNk0wpzD66yomPnQxapndZQs4c0kNJaRzqI-BVxeQk,13199 -werkzeug/datastructures.py,sha256=yVH4r-XD8CjOo18tDGVJYiAfezng6pK9hWzzLFy5a94,91761 -werkzeug/debug/__init__.py,sha256=Bo3HvgTNY4NQ_2jROTSk3r1ScZcT_g_4EnuHTjKyrKM,18275 -werkzeug/debug/__pycache__/__init__.cpython-36.pyc,, -werkzeug/debug/__pycache__/console.cpython-36.pyc,, -werkzeug/debug/__pycache__/repr.cpython-36.pyc,, -werkzeug/debug/__pycache__/tbtools.cpython-36.pyc,, -werkzeug/debug/console.py,sha256=HoBL21bbcmtiCLqiLDJLZi1LYnWMZxjoXYH5WaZB1XY,5469 -werkzeug/debug/repr.py,sha256=lIwuhbyrMwVe3P_cFqNyqzHL7P93TLKod7lw9clydEw,9621 -werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673 -werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 -werkzeug/debug/shared/debugger.js,sha256=rOhqZMRfpZnnu6_XCGn6wMWPhtfwRAcyZKksdIxPJas,6400 -werkzeug/debug/shared/jquery.js,sha256=CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo,88145 -werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191 -werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200 -werkzeug/debug/shared/source.png,sha256=RoGcBTE4CyCB85GBuDGTFlAnUqxwTBiIfDqW15EpnUQ,818 -werkzeug/debug/shared/style.css,sha256=gZ9uhmb5zj3XLuT9RvnMp6jMINgQ-VVBCp-2AZbG3YQ,6604 -werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 -werkzeug/debug/tbtools.py,sha256=SkAAA4KKfwsXJinUbf-AEP4GqONTsR4uU7WPUloXcSE,20318 -werkzeug/exceptions.py,sha256=7wl3ufZZU23sASp0ciPe8GJssGND9DX6sDbjxvPuGYU,23437 -werkzeug/filesystem.py,sha256=HzKl-j0Hd8Jl66j778UbPTAYNnY6vUZgYLlBZ0e7uw0,2101 -werkzeug/formparser.py,sha256=Sto0jZid9im9ZVIf56vilCdyX-arK33wSftkYsLCnzo,21788 -werkzeug/http.py,sha256=L6r2ehiorjOtsXITW-01zJsvtVa8Emkpkftu9di_cSk,41628 -werkzeug/local.py,sha256=USVEcgIg-oCiUJFPIecFIW9jkIejfw4Fjf1u5yN-Np4,14456 -werkzeug/middleware/__init__.py,sha256=f1SFZo67IlW4k1uqKzNHxYQlsakUS-D6KK_j0e3jjwQ,549 -werkzeug/middleware/__pycache__/__init__.cpython-36.pyc,, -werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc,, -werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc,, -werkzeug/middleware/__pycache__/lint.cpython-36.pyc,, -werkzeug/middleware/__pycache__/profiler.cpython-36.pyc,, -werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc,, -werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc,, -werkzeug/middleware/dispatcher.py,sha256=_-KoMzHtcISHS7ouWKAOraqlCLprdh83YOAn_8DjLp8,2240 -werkzeug/middleware/http_proxy.py,sha256=lRjTdMmghHiZuZrS7_UJ3gZc-vlFizhBbFZ-XZPLwIA,7117 -werkzeug/middleware/lint.py,sha256=ItTwuWJnflF8xMT1uqU_Ty1ryhux-CjeUfskqaUpxsw,12967 -werkzeug/middleware/profiler.py,sha256=8B_s23d6BGrU_q54gJsm6kcCbOJbTSqrXCsioHON0Xs,4471 -werkzeug/middleware/proxy_fix.py,sha256=1hi6AJH-J2uh2hMm1g0u7XfjRiTOoUeIOOmwWZ2n9t0,8670 -werkzeug/middleware/shared_data.py,sha256=WtSphPrsUdpEk4E-_09CAILhfOBJ1YtcX1LrxcQfIzw,8224 -werkzeug/posixemulation.py,sha256=gSSiv1SCmOyzOM_nq1ZaZCtxP__C5MeDJl_4yXJmi4Q,3541 -werkzeug/routing.py,sha256=BSgjrYNwj2j5dAHQtK4INEp2TOf4OJP8hBncYSRO2ps,73410 -werkzeug/security.py,sha256=81149MplFq7-hD4RK4sKp9kzXXejjV9D4lWBzaRyeQ8,8106 -werkzeug/serving.py,sha256=qqdsTMILMt_B8ffBtROWK3RRpZeyTkQ9g-jhtpJodrY,36607 -werkzeug/test.py,sha256=Cnb5xa3vLDL0hzFCH1fkG_YRpndViGQgCh4D744iSQk,40645 -werkzeug/testapp.py,sha256=bHekqMsqRfVxwgFbvOMem-DYa_sdB7R47yUXpt1RUTo,9329 -werkzeug/urls.py,sha256=hWZMk4ABiJmQPP_B5rRibWTp9gOyNLQpTqq6cmQAfeE,39322 -werkzeug/useragents.py,sha256=0A_Ip74edPv_hy6CouBTpGumi2uyOci01COuzYFOm3U,5622 -werkzeug/utils.py,sha256=KxCOHhsox7tAVe0m-ZyOGPoCaIbBIy7TxhocaUEHrd4,25050 -werkzeug/wrappers/__init__.py,sha256=S4VioKAmF_av9Ec9zQvG71X1EOkYfPx1TYck9jyDiyY,1384 -werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/accept.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/auth.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/etag.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/json.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/request.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/response.cpython-36.pyc,, -werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc,, -werkzeug/wrappers/accept.py,sha256=TIvjUc0g73fhTWX54wg_D9NNzKvpnG1X8u1w26tK1o8,1760 -werkzeug/wrappers/auth.py,sha256=Pmn6iaGHBrUyHbJpW0lZhO_q9RVoAa5QalaTqcavdAI,1158 -werkzeug/wrappers/base_request.py,sha256=aknREwqVT7WJUxm4weUGdBj90H6rDR3DvsIvmYhaC8A,26943 -werkzeug/wrappers/base_response.py,sha256=ZA1XlxtsbvG4SpbdOEMT5--z7aZM0w6C5y33W8wOXa4,27906 -werkzeug/wrappers/common_descriptors.py,sha256=OJ8jOwMun4L-BxCuFPkK1vaefx_-Y5IndVXvvn_ems4,12089 -werkzeug/wrappers/etag.py,sha256=TwMO1fvluXbBqnFTj2DvrCNa3mYhbHYe1UZAVzfXvuU,12533 -werkzeug/wrappers/json.py,sha256=HvK_A4NpO0sLqgb10sTJcoZydYOwyNiPCJPV7SVgcgE,4343 -werkzeug/wrappers/request.py,sha256=qPo2zmmBv4HxboywtWZb2pJL8OPXo07BUXBKw2j9Fi8,1338 -werkzeug/wrappers/response.py,sha256=vDZFEGzDOG0jjmS0uVVjeT3hqRt1hFaf15npnx7RD28,2329 -werkzeug/wrappers/user_agent.py,sha256=YJb-vr12cujG7sQMG9V89VsJa-03SWSenhg1W4cT0EY,435 -werkzeug/wsgi.py,sha256=iXOR9l1fDd2IgqeTRQZPR6LnBBBx7Xsy97_i2n5HPUo,34666 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/WHEEL deleted file mode 100644 index 8b701e93..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.6) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/top_level.txt deleted file mode 100644 index 6fe8da84..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/Werkzeug-0.16.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -werkzeug diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/_pyrsistent_version.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/_pyrsistent_version.cpython-36.pyc deleted file mode 100644 index 6f46b566..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/_pyrsistent_version.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc deleted file mode 100644 index d1275016..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc deleted file mode 100644 index 5ced4ab0..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/zipp.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/zipp.cpython-36.pyc deleted file mode 100644 index c067cbab..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/__pycache__/zipp.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/_cffi_backend.cpython-36m-darwin.so b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/_cffi_backend.cpython-36m-darwin.so deleted file mode 100644 index 2875077c..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/_cffi_backend.cpython-36m-darwin.so and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/_pyrsistent_version.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/_pyrsistent_version.py deleted file mode 100644 index d89af2c3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/_pyrsistent_version.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = '0.15.5' diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/INSTALLER b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/LICENSE b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/LICENSE deleted file mode 100644 index a668014b..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2019, Brandon Nielsen -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 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. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/METADATA b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/METADATA deleted file mode 100644 index be388e41..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/METADATA +++ /dev/null @@ -1,426 +0,0 @@ -Metadata-Version: 2.1 -Name: aniso8601 -Version: 8.0.0 -Summary: A library for parsing ISO 8601 strings. -Home-page: https://bitbucket.org/nielsenb/aniso8601 -Author: Brandon Nielsen -Author-email: nielsenb@jetfuse.net -License: UNKNOWN -Project-URL: Documentation, https://aniso8601.readthedocs.io/ -Project-URL: Source, https://bitbucket.org/nielsenb/aniso8601 -Project-URL: Tracker, https://bitbucket.org/nielsenb/aniso8601/issues -Keywords: iso8601 parser -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -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 - -aniso8601 -========= - -Another ISO 8601 parser for Python ----------------------------------- - -Features -======== -* Pure Python implementation -* Python 3 support -* Logical behavior - - - Parse a time, get a `datetime.time `_ - - Parse a date, get a `datetime.date `_ - - Parse a datetime, get a `datetime.datetime `_ - - Parse a duration, get a `datetime.timedelta `_ - - Parse an interval, get a tuple of dates or datetimes - - Parse a repeating interval, get a date or datetime `generator `_ - -* UTC offset represented as fixed-offset tzinfo -* Parser separate from representation, allowing parsing to different datetime formats -* No regular expressions - -Installation -============ - -The recommended installation method is to use pip:: - - $ pip install aniso8601 - -Alternatively, you can download the source (git repository hosted at `Bitbucket `_) and install directly:: - - $ python setup.py install - -Use -=== - -Parsing datetimes ------------------ - -To parse a typical ISO 8601 datetime string:: - - >>> import aniso8601 - >>> aniso8601.parse_datetime('1977-06-10T12:00:00Z') - datetime.datetime(1977, 6, 10, 12, 0, tzinfo=+0:00:00 UTC) - -Alternative delimiters can be specified, for example, a space:: - - >>> aniso8601.parse_datetime('1977-06-10 12:00:00Z', delimiter=' ') - datetime.datetime(1977, 6, 10, 12, 0, tzinfo=+0:00:00 UTC) - -UTC offsets are supported:: - - >>> aniso8601.parse_datetime('1979-06-05T08:00:00-08:00') - datetime.datetime(1979, 6, 5, 8, 0, tzinfo=-8:00:00 UTC) - -If a UTC offset is not specified, the returned datetime will be naive:: - - >>> aniso8601.parse_datetime('1983-01-22T08:00:00') - datetime.datetime(1983, 1, 22, 8, 0) - -Leap seconds are currently not supported and attempting to parse one raises a :code:`LeapSecondError`:: - - >>> aniso8601.parse_datetime('2018-03-06T23:59:60') - Traceback (most recent call last): - File "", line 1, in - File "aniso8601/time.py", line 131, in parse_datetime - return builder.build_datetime(datepart, timepart) - File "aniso8601/builder.py", line 300, in build_datetime - cls._build_object(time)) - File "aniso8601/builder.py", line 71, in _build_object - ss=parsetuple[2], tz=parsetuple[3]) - File "aniso8601/builder.py", line 253, in build_time - raise LeapSecondError('Leap seconds are not supported.') - aniso8601.exceptions.LeapSecondError: Leap seconds are not supported. - -Parsing dates -------------- - -To parse a date represented in an ISO 8601 string:: - - >>> import aniso8601 - >>> aniso8601.parse_date('1984-04-23') - datetime.date(1984, 4, 23) - -Basic format is supported as well:: - - >>> aniso8601.parse_date('19840423') - datetime.date(1984, 4, 23) - -To parse a date using the ISO 8601 week date format:: - - >>> aniso8601.parse_date('1986-W38-1') - datetime.date(1986, 9, 15) - -To parse an ISO 8601 ordinal date:: - - >>> aniso8601.parse_date('1988-132') - datetime.date(1988, 5, 11) - -Parsing times -------------- - -To parse a time formatted as an ISO 8601 string:: - - >>> import aniso8601 - >>> aniso8601.parse_time('11:31:14') - datetime.time(11, 31, 14) - -As with all of the above, basic format is supported:: - - >>> aniso8601.parse_time('113114') - datetime.time(11, 31, 14) - -A UTC offset can be specified for times:: - - >>> aniso8601.parse_time('17:18:19-02:30') - datetime.time(17, 18, 19, tzinfo=-2:30:00 UTC) - >>> aniso8601.parse_time('171819Z') - datetime.time(17, 18, 19, tzinfo=+0:00:00 UTC) - -Reduced accuracy is supported:: - - >>> aniso8601.parse_time('21:42') - datetime.time(21, 42) - >>> aniso8601.parse_time('22') - datetime.time(22, 0) - -A decimal fraction is always allowed on the lowest order element of an ISO 8601 formatted time:: - - >>> aniso8601.parse_time('22:33.5') - datetime.time(22, 33, 30) - >>> aniso8601.parse_time('23.75') - datetime.time(23, 45) - -The decimal fraction can be specified with a comma instead of a full-stop:: - - >>> aniso8601.parse_time('22:33,5') - datetime.time(22, 33, 30) - >>> aniso8601.parse_time('23,75') - datetime.time(23, 45) - -Leap seconds are currently not supported and attempting to parse one raises a :code:`LeapSecondError`:: - - >>> aniso8601.parse_time('23:59:60') - Traceback (most recent call last): - File "", line 1, in - File "aniso8601/time.py", line 116, in parse_time - return _RESOLUTION_MAP[get_time_resolution(timestr)](timestr, tz, builder) - File "aniso8601/time.py", line 165, in _parse_second_time - return builder.build_time(hh=hourstr, mm=minutestr, ss=secondstr, tz=tz) - File "aniso8601/builder.py", line 253, in build_time - raise LeapSecondError('Leap seconds are not supported.') - aniso8601.exceptions.LeapSecondError: Leap seconds are not supported. - -Parsing durations ------------------ - -To parse a duration formatted as an ISO 8601 string:: - - >>> import aniso8601 - >>> aniso8601.parse_duration('P1Y2M3DT4H54M6S') - datetime.timedelta(428, 17646) - -Reduced accuracy is supported:: - - >>> aniso8601.parse_duration('P1Y') - datetime.timedelta(365) - -A decimal fraction is allowed on the lowest order element:: - - >>> aniso8601.parse_duration('P1YT3.5M') - datetime.timedelta(365, 210) - -The decimal fraction can be specified with a comma instead of a full-stop:: - - >>> aniso8601.parse_duration('P1YT3,5M') - datetime.timedelta(365, 210) - -Parsing a duration from a combined date and time is supported as well:: - - >>> aniso8601.parse_duration('P0001-01-02T01:30:5') - datetime.timedelta(397, 5405) - -Parsing intervals ------------------ - -To parse an interval specified by a start and end:: - - >>> import aniso8601 - >>> aniso8601.parse_interval('2007-03-01T13:00:00/2008-05-11T15:30:00') - (datetime.datetime(2007, 3, 1, 13, 0), datetime.datetime(2008, 5, 11, 15, 30)) - -Intervals specified by a start time and a duration are supported:: - - >>> aniso8601.parse_interval('2007-03-01T13:00:00Z/P1Y2M10DT2H30M') - (datetime.datetime(2007, 3, 1, 13, 0, tzinfo=+0:00:00 UTC), datetime.datetime(2008, 5, 9, 15, 30, tzinfo=+0:00:00 UTC)) - -A duration can also be specified by a duration and end time:: - - >>> aniso8601.parse_interval('P1M/1981-04-05') - (datetime.date(1981, 4, 5), datetime.date(1981, 3, 6)) - -Notice that the result of the above parse is not in order from earliest to latest. If sorted intervals are required, simply use the :code:`sorted` keyword as shown below:: - - >>> sorted(aniso8601.parse_interval('P1M/1981-04-05')) - [datetime.date(1981, 3, 6), datetime.date(1981, 4, 5)] - -The end of an interval is returned as a datetime when required to maintain the resolution specified by a duration, even if the duration start is given as a date:: - - >>> aniso8601.parse_interval('2014-11-12/PT4H54M6.5S') - (datetime.date(2014, 11, 12), datetime.datetime(2014, 11, 12, 4, 54, 6, 500000)) - >>> aniso8601.parse_interval('2007-03-01/P1.5D') - (datetime.date(2007, 3, 1), datetime.datetime(2007, 3, 2, 12, 0)) - -Repeating intervals are supported as well, and return a generator:: - - >>> aniso8601.parse_repeating_interval('R3/1981-04-05/P1D') - - >>> list(aniso8601.parse_repeating_interval('R3/1981-04-05/P1D')) - [datetime.date(1981, 4, 5), datetime.date(1981, 4, 6), datetime.date(1981, 4, 7)] - -Repeating intervals are allowed to go in the reverse direction:: - - >>> list(aniso8601.parse_repeating_interval('R2/PT1H2M/1980-03-05T01:01:00')) - [datetime.datetime(1980, 3, 5, 1, 1), datetime.datetime(1980, 3, 4, 23, 59)] - -Unbounded intervals are also allowed (Python 2):: - - >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00') - >>> result.next() - datetime.datetime(1980, 3, 5, 1, 1) - >>> result.next() - datetime.datetime(1980, 3, 4, 23, 59) - -or for Python 3:: - - >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00') - >>> next(result) - datetime.datetime(1980, 3, 5, 1, 1) - >>> next(result) - datetime.datetime(1980, 3, 4, 23, 59) - -Note that you should never try to convert a generator produced by an unbounded interval to a list:: - - >>> list(aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00')) - Traceback (most recent call last): - File "", line 1, in - File "aniso8601/builders/python.py", line 463, in _date_generator_unbounded - currentdate += timedelta - OverflowError: date value out of range - -Date and time resolution ------------------------- - -In some situations, it may be useful to figure out the resolution provided by an ISO 8601 date or time string. Two functions are provided for this purpose. - -To get the resolution of a ISO 8601 time string:: - - >>> aniso8601.get_time_resolution('11:31:14') == aniso8601.resolution.TimeResolution.Seconds - True - >>> aniso8601.get_time_resolution('11:31') == aniso8601.resolution.TimeResolution.Minutes - True - >>> aniso8601.get_time_resolution('11') == aniso8601.resolution.TimeResolution.Hours - True - -Similarly, for an ISO 8601 date string:: - - >>> aniso8601.get_date_resolution('1981-04-05') == aniso8601.resolution.DateResolution.Day - True - >>> aniso8601.get_date_resolution('1981-04') == aniso8601.resolution.DateResolution.Month - True - >>> aniso8601.get_date_resolution('1981') == aniso8601.resolution.DateResolution.Year - True - -Builders -======== - -Builders can be used to change the output format of a parse operation. All parse functions have a :code:`builder` keyword argument which accepts a builder class. - -Two builders are included. The :code:`PythonTimeBuilder` (the default) in the :code:`aniso8601.builders.python` module, and the :code:`TupleBuilder` which returns the parse result as a tuple of strings and is located in the :code:`aniso8601.builders` module. - -The following builders are available as separate projects: - -* `RelativeTimeBuilder `_ supports parsing to `datetutil relativedelta types `_ for calendar level accuracy -* `AttoTimeBuilder `_ supports parsing directly to `attotime attodatetime and attotimedelta types `_ which support sub-nanosecond precision -* `NumPyTimeBuilder `_ supports parsing directly to `NumPy datetime64 and timedelta64 types `_ - -TupleBuilder ------------- - -The :code:`TupleBuilder` returns parse results as tuples of strings. It is located in the :code:`aniso8601.builders` module. - -Datetimes -^^^^^^^^^ - -Parsing a datetime returns a tuple containing a date tuple as a collection of strings, a time tuple as a collection of strings, and the 'datetime' string. The date tuple contains the following parse components: :code:`(YYYY, MM, DD, Www, D, DDD, 'date')`. The time tuple contains the following parse components :code:`(hh, mm, ss, tz, 'time')`, where :code:`tz` is a tuple with the following components :code:`(negative, Z, hh, mm, name, 'timezone')` with :code:`negative` and :code:`Z` being booleans:: - - >>> import aniso8601 - >>> from aniso8601.builders import TupleBuilder - >>> aniso8601.parse_datetime('1977-06-10T12:00:00', builder=TupleBuilder) - (('1977', '06', '10', None, None, None, 'date'), ('12', '00', '00', None, 'time'), 'datetime') - >>> aniso8601.parse_datetime('1979-06-05T08:00:00-08:00', builder=TupleBuilder) - (('1979', '06', '05', None, None, None, 'date'), ('08', '00', '00', (True, None, '08', '00', '-08:00', 'timezone'), 'time'), 'datetime') - -Dates -^^^^^ - -Parsing a date returns a tuple containing the following parse components: :code:`(YYYY, MM, DD, Www, D, DDD, 'date')`:: - - >>> import aniso8601 - >>> from aniso8601.builders import TupleBuilder - >>> aniso8601.parse_date('1984-04-23', builder=TupleBuilder) - ('1984', '04', '23', None, None, None, 'date') - >>> aniso8601.parse_date('1986-W38-1', builder=TupleBuilder) - ('1986', None, None, '38', '1', None, 'date') - >>> aniso8601.parse_date('1988-132', builder=TupleBuilder) - ('1988', None, None, None, None, '132', 'date') - -Times -^^^^^ - -Parsing a time returns a tuple containing following parse components: :code:`(hh, mm, ss, tz, 'time')`, where :code:`tz` is a tuple with the following components :code:`(negative, Z, hh, mm, name, 'timezone')` with :code:`negative` and :code:`Z` being booleans:: - - >>> import aniso8601 - >>> from aniso8601.builders import TupleBuilder - >>> aniso8601.parse_time('11:31:14', builder=TupleBuilder) - ('11', '31', '14', None, 'time') - >>> aniso8601.parse_time('171819Z', builder=TupleBuilder) - ('17', '18', '19', (False, True, None, None, 'Z', 'timezone'), 'time') - >>> aniso8601.parse_time('17:18:19-02:30', builder=TupleBuilder) - ('17', '18', '19', (True, None, '02', '30', '-02:30', 'timezone'), 'time') - -Durations -^^^^^^^^^ - -Parsing a duration returns a tuple containing the following parse components: :code:`(PnY, PnM, PnW, PnD, TnH, TnM, TnS, 'duration')`:: - - >>> import aniso8601 - >>> from aniso8601.builders import TupleBuilder - >>> aniso8601.parse_duration('P1Y2M3DT4H54M6S', builder=TupleBuilder) - ('1', '2', None, '3', '4', '54', '6', 'duration') - >>> aniso8601.parse_duration('P7W', builder=TupleBuilder) - (None, None, '7', None, None, None, None, 'duration') - -Intervals -^^^^^^^^^ - -Parsing an interval returns a tuple containing the following parse components: :code:`(start, end, duration, 'interval')`, :code:`start` and :code:`end` may both be datetime or date tuples, :code:`duration` is a duration tuple:: - - >>> import aniso8601 - >>> from aniso8601.builders import TupleBuilder - >>> aniso8601.parse_interval('2007-03-01T13:00:00/2008-05-11T15:30:00', builder=TupleBuilder) - ((('2007', '03', '01', None, None, None, 'date'), ('13', '00', '00', None, 'time'), 'datetime'), (('2008', '05', '11', None, None, None, 'date'), ('15', '30', '00', None, 'time'), 'datetime'), None, 'interval') - >>> aniso8601.parse_interval('2007-03-01T13:00:00Z/P1Y2M10DT2H30M', builder=TupleBuilder) - ((('2007', '03', '01', None, None, None, 'date'), ('13', '00', '00', (False, True, None, None, 'Z', 'timezone'), 'time'), 'datetime'), None, ('1', '2', None, '10', '2', '30', None, 'duration'), 'interval') - >>> aniso8601.parse_interval('P1M/1981-04-05', builder=TupleBuilder) - (None, ('1981', '04', '05', None, None, None, 'date'), (None, '1', None, None, None, None, None, 'duration'), 'interval') - -A repeating interval returns a tuple containing the following parse components: :code:`(R, Rnn, interval, 'repeatinginterval')` where :code:`R` is a boolean, :code:`True` for an unbounded interval, :code:`False` otherwise.:: - - >>> aniso8601.parse_repeating_interval('R3/1981-04-05/P1D', builder=TupleBuilder) - (False, '3', (('1981', '04', '05', None, None, None, 'date'), None, (None, None, None, '1', None, None, None, 'duration'), 'interval'), 'repeatinginterval') - >>> aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00', builder=TupleBuilder) - (True, None, (None, (('1980', '03', '05', None, None, None, 'date'), ('01', '01', '00', None, 'time'), 'datetime'), (None, None, None, None, '1', '2', None, 'duration'), 'interval'), 'repeatinginterval') - -Development -=========== - -Setup ------ - -It is recommended to develop using a `virtualenv `_. - -Tests ------ - -Tests can be run using `setuptools `:: - - $ python setup.py test - -Contributing -============ - -aniso8601 is an open source project hosted on `Bitbucket `_. - -Any and all bugs are welcome on our `issue tracker `_. -Of particular interest are valid ISO 8601 strings that don't parse, or invalid ones that do. At a minimum, -bug reports should include an example of the misbehaving string, as well as the expected result. Of course -patches containing unit tests (or fixed bugs) are welcome! - -References -========== - -* `ISO 8601:2004(E) `_ (Caution, PDF link) -* `Wikipedia article on ISO 8601 `_ -* `Discussion on alternative ISO 8601 parsers for Python `_ - - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/RECORD b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/RECORD deleted file mode 100644 index f74a2539..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/RECORD +++ /dev/null @@ -1,58 +0,0 @@ -aniso8601-8.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -aniso8601-8.0.0.dist-info/LICENSE,sha256=_4-36Mju5uzbMHe1eLOXOuwIXiA7ugYNCjZLFS78c7E,1501 -aniso8601-8.0.0.dist-info/METADATA,sha256=I7aDyEj9IaUZqhV1GpJXZuKCpHtN2AaG_iOrVwFizr0,17682 -aniso8601-8.0.0.dist-info/RECORD,, -aniso8601-8.0.0.dist-info/WHEEL,sha256=HX-v9-noUkyUoxyZ1PMSuS7auUxDAR4VBdoYLqD0xws,110 -aniso8601-8.0.0.dist-info/top_level.txt,sha256=MVQomyeED8nGIH7PUQdMzxgLppIB48oYHtcmL17ETB0,10 -aniso8601/__init__.py,sha256=2kR6ejtLWMAYh2SEGNAI9u9B0kHzyrPLemgY1T1I2rI,527 -aniso8601/__pycache__/__init__.cpython-36.pyc,, -aniso8601/__pycache__/compat.cpython-36.pyc,, -aniso8601/__pycache__/date.cpython-36.pyc,, -aniso8601/__pycache__/decimalfraction.cpython-36.pyc,, -aniso8601/__pycache__/duration.cpython-36.pyc,, -aniso8601/__pycache__/exceptions.cpython-36.pyc,, -aniso8601/__pycache__/interval.cpython-36.pyc,, -aniso8601/__pycache__/resolution.cpython-36.pyc,, -aniso8601/__pycache__/time.cpython-36.pyc,, -aniso8601/__pycache__/timezone.cpython-36.pyc,, -aniso8601/__pycache__/utcoffset.cpython-36.pyc,, -aniso8601/builders/__init__.py,sha256=xopOoBTrP3OWHQjIq2r5krXPxAY_ZZMbzMC_xTJ9SP4,4355 -aniso8601/builders/__pycache__/__init__.cpython-36.pyc,, -aniso8601/builders/__pycache__/python.cpython-36.pyc,, -aniso8601/builders/python.py,sha256=0qWXgssqE1b6JUVQj3Dh2JVfHO52CZOQmwahjqVfOuo,17874 -aniso8601/builders/tests/__init__.py,sha256=fTze-wZVwlWm5PQ3JwVFQB4_sUA8VYc5xAUlpuJXyF8,209 -aniso8601/builders/tests/__pycache__/__init__.cpython-36.pyc,, -aniso8601/builders/tests/__pycache__/test_init.cpython-36.pyc,, -aniso8601/builders/tests/__pycache__/test_python.cpython-36.pyc,, -aniso8601/builders/tests/test_init.py,sha256=sUj_AFcflZ14qzyvcNSQCZ_gZyiel4GH3Hl9pUbR9g4,19811 -aniso8601/builders/tests/test_python.py,sha256=F8qLx5Aer52HrpFL1aVUWPJWIqXyMjZ0yR1bt2TBvH0,56546 -aniso8601/compat.py,sha256=yIFLFZPynvlbkP-VxVgl-zMIixHMMA70TQ2XPrA-8Uo,305 -aniso8601/date.py,sha256=YmLON2OvH44VxnNpiof_XVLpbeq0FTLEzBlApJ9KOJk,6799 -aniso8601/decimalfraction.py,sha256=CZjkhnvWTwr8P6SyXYRG4VDVKtBGRcrr6Agvmh2xfmA,470 -aniso8601/duration.py,sha256=cr5eUM1H5jDxumpgui2cgMQrHTqqcHO_-yhQbHJn1Cs,10239 -aniso8601/exceptions.py,sha256=meiF5CfDPI4kAXhWdtqNPdvr-A2SsgtFqrevUxV2nLQ,1182 -aniso8601/interval.py,sha256=STbdtAsF301tcMczP7WW9eTSyeakI_Hme6kITFeUXrI,6467 -aniso8601/resolution.py,sha256=-9bOvUPBfRikQW8eEqWcdJGmaG8wmOmfLvKPI7-Kw-k,422 -aniso8601/tests/__init__.py,sha256=fTze-wZVwlWm5PQ3JwVFQB4_sUA8VYc5xAUlpuJXyF8,209 -aniso8601/tests/__pycache__/__init__.cpython-36.pyc,, -aniso8601/tests/__pycache__/compat.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_date.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_decimalfraction.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_duration.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_init.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_interval.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_time.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_timezone.cpython-36.pyc,, -aniso8601/tests/__pycache__/test_utcoffset.cpython-36.pyc,, -aniso8601/tests/compat.py,sha256=WAdb3CjQdWVWfPE4beKKZNONXmjZ4FRPOtVaHODB6lQ,314 -aniso8601/tests/test_date.py,sha256=esYbP_xelmjH6KCmTezPPQkLSV5AzzD822Z1voTAYHA,7867 -aniso8601/tests/test_decimalfraction.py,sha256=xG3VcJxr62aiduE8qw5_n3NHz26xBC4a2kKmgkcnvE4,839 -aniso8601/tests/test_duration.py,sha256=X4W5VfI_ObOXGlekBj58IGXEU2PdHBRpfn46H1xoryo,24588 -aniso8601/tests/test_init.py,sha256=mvWz-CjIwdhebTebs4ndb3Ib-JqvuWreAYt5Gz7bXQk,1198 -aniso8601/tests/test_interval.py,sha256=8YDuBCBr4NwhkpQU9UzNncl4N7fnERvujdK5d6hNDhs,33730 -aniso8601/tests/test_time.py,sha256=niQ5Bn5nFQMhBqM9MIjYOAeS6dabdjVKewOxmUpEkGU,22844 -aniso8601/tests/test_timezone.py,sha256=dvJJS_XShCiNYCRdUr_E2G3DwgeNh9QsfPtUFe_korI,5130 -aniso8601/tests/test_utcoffset.py,sha256=SXCGYLo4F5zSqD3Y269KaIqZssWzAxAw7iCaAUA43Lk,1947 -aniso8601/time.py,sha256=Iuagso7Zl4i599AVNJWhM3qpD1ddXDKs4EWBI3fnP2c,5159 -aniso8601/timezone.py,sha256=uS3EcImNjtasdEDyG7h5gHxWVXBtvAN_7jPz3MzK2G4,2055 -aniso8601/utcoffset.py,sha256=F9f2dyA7IHvuxtgBYr6v2Hwyt-u6YNxfjEh8YK0x6-k,2671 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/WHEEL b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/WHEEL deleted file mode 100644 index c8240f03..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.1) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/top_level.txt b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/top_level.txt deleted file mode 100644 index 166ae78c..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601-8.0.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -aniso8601 diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__init__.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__init__.py deleted file mode 100644 index 1ce7f6c8..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -#Import the main parsing functions so they are readily available -from aniso8601.time import parse_datetime, parse_time, get_time_resolution -from aniso8601.date import parse_date, get_date_resolution -from aniso8601.duration import parse_duration -from aniso8601.interval import parse_interval, parse_repeating_interval diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/__init__.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 7f442428..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/compat.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/compat.cpython-36.pyc deleted file mode 100644 index 9bc6c17d..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/compat.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/date.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/date.cpython-36.pyc deleted file mode 100644 index 97ebd5be..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/date.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/decimalfraction.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/decimalfraction.cpython-36.pyc deleted file mode 100644 index 1aea8c12..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/decimalfraction.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/duration.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/duration.cpython-36.pyc deleted file mode 100644 index b9ea110d..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/duration.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/exceptions.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/exceptions.cpython-36.pyc deleted file mode 100644 index b204b03d..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/exceptions.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/interval.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/interval.cpython-36.pyc deleted file mode 100644 index c2b32afe..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/interval.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/resolution.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/resolution.cpython-36.pyc deleted file mode 100644 index a2e36a8e..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/resolution.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/time.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/time.cpython-36.pyc deleted file mode 100644 index c410187f..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/time.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/timezone.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/timezone.cpython-36.pyc deleted file mode 100644 index 4af91b50..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/timezone.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/utcoffset.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/utcoffset.cpython-36.pyc deleted file mode 100644 index a621c54c..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/__pycache__/utcoffset.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__init__.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__init__.py deleted file mode 100644 index 014688d3..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__init__.py +++ /dev/null @@ -1,116 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -from aniso8601.exceptions import ISOFormatError - -class BaseTimeBuilder(object): - @classmethod - def build_date(cls, YYYY=None, MM=None, DD=None, Www=None, D=None, - DDD=None): - raise NotImplementedError - - @classmethod - def build_time(cls, hh=None, mm=None, ss=None, tz=None): - raise NotImplementedError - - @classmethod - def build_datetime(cls, date, time): - raise NotImplementedError - - @classmethod - def build_duration(cls, PnY=None, PnM=None, PnW=None, PnD=None, TnH=None, - TnM=None, TnS=None): - raise NotImplementedError - - @classmethod - def build_interval(cls, start=None, end=None, duration=None): - #start, end, and duration are all tuples - raise NotImplementedError - - @classmethod - def build_repeating_interval(cls, R=None, Rnn=None, interval=None): - #interval is a tuple - raise NotImplementedError - - @classmethod - def build_timezone(cls, negative=None, Z=None, hh=None, mm=None, name=''): - raise NotImplementedError - - @staticmethod - def cast(value, castfunction, caughtexceptions=(ValueError,), - thrownexception=ISOFormatError, thrownmessage=None): - - try: - result = castfunction(value) - except caughtexceptions: - raise thrownexception(thrownmessage) - - return result - - @classmethod - def _build_object(cls, parsetuple): - #Given a TupleBuilder tuple, build the correct object - if parsetuple[-1] == 'date': - return cls.build_date(YYYY=parsetuple[0], MM=parsetuple[1], - DD=parsetuple[2], Www=parsetuple[3], - D=parsetuple[4], DDD=parsetuple[5]) - elif parsetuple[-1] == 'time': - return cls.build_time(hh=parsetuple[0], mm=parsetuple[1], - ss=parsetuple[2], tz=parsetuple[3]) - elif parsetuple[-1] == 'datetime': - return cls.build_datetime(parsetuple[0], parsetuple[1]) - elif parsetuple[-1] == 'duration': - return cls.build_duration(PnY=parsetuple[0], PnM=parsetuple[1], - PnW=parsetuple[2], PnD=parsetuple[3], - TnH=parsetuple[4], TnM=parsetuple[5], - TnS=parsetuple[6]) - elif parsetuple[-1] == 'interval': - return cls.build_interval(start=parsetuple[0], end=parsetuple[1], - duration=parsetuple[2]) - elif parsetuple[-1] == 'repeatinginterval': - return cls.build_repeating_interval(R=parsetuple[0], - Rnn=parsetuple[1], - interval=parsetuple[2]) - - return cls.build_timezone(negative=parsetuple[0], Z=parsetuple[1], - hh=parsetuple[2], mm=parsetuple[3], - name=parsetuple[4]) - -class TupleBuilder(BaseTimeBuilder): - #Builder used to return the arguments as a tuple, cleans up some parse methods - @classmethod - def build_date(cls, YYYY=None, MM=None, DD=None, Www=None, D=None, - DDD=None): - - return (YYYY, MM, DD, Www, D, DDD, 'date') - - @classmethod - def build_time(cls, hh=None, mm=None, ss=None, tz=None): - return (hh, mm, ss, tz, 'time') - - @classmethod - def build_datetime(cls, date, time): - return (date, time, 'datetime') - - @classmethod - def build_duration(cls, PnY=None, PnM=None, PnW=None, PnD=None, TnH=None, - TnM=None, TnS=None): - - return (PnY, PnM, PnW, PnD, TnH, TnM, TnS, 'duration') - - @classmethod - def build_interval(cls, start=None, end=None, duration=None): - return (start, end, duration, 'interval') - - @classmethod - def build_repeating_interval(cls, R=None, Rnn=None, interval=None): - return (R, Rnn, interval, 'repeatinginterval') - - @classmethod - def build_timezone(cls, negative=None, Z=None, hh=None, mm=None, name=''): - return (negative, Z, hh, mm, name, 'timezone') diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__pycache__/__init__.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 696e6e8f..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__pycache__/python.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__pycache__/python.cpython-36.pyc deleted file mode 100644 index 939340cc..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/__pycache__/python.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/python.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/python.py deleted file mode 100644 index 1b7fffad..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/python.py +++ /dev/null @@ -1,458 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -import datetime - -from aniso8601.builders import BaseTimeBuilder, TupleBuilder -from aniso8601.exceptions import (DayOutOfBoundsError, - HoursOutOfBoundsError, - LeapSecondError, MidnightBoundsError, - MinutesOutOfBoundsError, - SecondsOutOfBoundsError, - WeekOutOfBoundsError, YearOutOfBoundsError) -from aniso8601.utcoffset import UTCOffset - -MICROSECONDS_PER_SECOND = int(1e6) - -MICROSECONDS_PER_MINUTE = 60 * MICROSECONDS_PER_SECOND -MICROSECONDS_PER_HOUR = 60 * MICROSECONDS_PER_MINUTE -MICROSECONDS_PER_DAY = 24 * MICROSECONDS_PER_HOUR -MICROSECONDS_PER_WEEK = 7 * MICROSECONDS_PER_DAY -MICROSECONDS_PER_MONTH = 30 * MICROSECONDS_PER_DAY -MICROSECONDS_PER_YEAR = 365 * MICROSECONDS_PER_DAY - -class PythonTimeBuilder(BaseTimeBuilder): - @classmethod - def build_date(cls, YYYY=None, MM=None, DD=None, Www=None, D=None, - DDD=None): - - if YYYY is not None: - #Truncated dates, like '19', refer to 1900-1999 inclusive, - #we simply parse to 1900 - if len(YYYY) < 4: - #Shift 0s in from the left to form complete year - YYYY = YYYY.ljust(4, '0') - - year = cls.cast(YYYY, int, - thrownmessage='Invalid year string.') - - if MM is not None: - month = cls.cast(MM, int, - thrownmessage='Invalid month string.') - else: - month = 1 - - if DD is not None: - day = cls.cast(DD, int, - thrownmessage='Invalid day string.') - else: - day = 1 - - if Www is not None: - weeknumber = cls.cast(Www, int, - thrownmessage='Invalid week string.') - - if weeknumber == 0 or weeknumber > 53: - raise WeekOutOfBoundsError('Week number must be between ' - '1..53.') - else: - weeknumber = None - - if DDD is not None: - dayofyear = cls.cast(DDD, int, - thrownmessage='Invalid day string.') - else: - dayofyear = None - - if D is not None: - dayofweek = cls.cast(D, int, - thrownmessage='Invalid day string.') - - if dayofweek == 0 or dayofweek > 7: - raise DayOutOfBoundsError('Weekday number must be between ' - '1..7.') - else: - dayofweek = None - - #0000 (1 BC) is not representable as a Python date so a ValueError is - #raised - if year == 0: - raise YearOutOfBoundsError('Year must be between 1..9999.') - - if dayofyear is not None: - return PythonTimeBuilder._build_ordinal_date(year, dayofyear) - - if weeknumber is not None: - return PythonTimeBuilder._build_week_date(year, weeknumber, - isoday=dayofweek) - - return datetime.date(year, month, day) - - @classmethod - def build_time(cls, hh=None, mm=None, ss=None, tz=None): - #Builds a time from the given parts, handling fractional arguments - #where necessary - hours = 0 - minutes = 0 - seconds = 0 - microseconds = 0 - - if hh is not None: - if '.' in hh: - hours, remainingmicroseconds = cls._split_to_microseconds(hh, MICROSECONDS_PER_HOUR, 'Invalid hour string.') - microseconds += remainingmicroseconds - else: - hours = cls.cast(hh, int, - thrownmessage='Invalid hour string.') - - if mm is not None: - if '.' in mm: - minutes, remainingmicroseconds = cls._split_to_microseconds(mm, MICROSECONDS_PER_MINUTE, 'Invalid minute string.') - microseconds += remainingmicroseconds - else: - minutes = cls.cast(mm, int, - thrownmessage='Invalid minute string.') - - if ss is not None: - if '.' in ss: - seconds, remainingmicroseconds = cls._split_to_microseconds(ss, MICROSECONDS_PER_SECOND, 'Invalid second string.') - microseconds += remainingmicroseconds - else: - seconds = cls.cast(ss, int, - thrownmessage='Invalid second string.') - - hours, minutes, seconds, microseconds = PythonTimeBuilder._distribute_microseconds(microseconds, (hours, minutes, seconds), (MICROSECONDS_PER_HOUR, MICROSECONDS_PER_MINUTE, MICROSECONDS_PER_SECOND)) - - #Range checks - if hours == 23 and minutes == 59 and seconds == 60: - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - raise LeapSecondError('Leap seconds are not supported.') - - if (hours == 24 - and (minutes != 0 or seconds != 0)): - raise MidnightBoundsError('Hour 24 may only represent midnight.') - - if hours > 24: - raise HoursOutOfBoundsError('Hour must be between 0..24 with ' - '24 representing midnight.') - - if minutes >= 60: - raise MinutesOutOfBoundsError('Minutes must be less than 60.') - - if seconds >= 60: - raise SecondsOutOfBoundsError('Seconds must be less than 60.') - - #Fix ranges that have passed range checks - if hours == 24: - hours = 0 - minutes = 0 - seconds = 0 - - #Datetimes don't handle fractional components, so we use a timedelta - if tz is not None: - return (datetime.datetime(1, 1, 1, - hour=hours, - minute=minutes, - tzinfo=cls._build_object(tz)) - + datetime.timedelta(seconds=seconds, - microseconds=microseconds) - ).timetz() - - return (datetime.datetime(1, 1, 1, - hour=hours, - minute=minutes) - + datetime.timedelta(seconds=seconds, - microseconds=microseconds) - ).time() - - @classmethod - def build_datetime(cls, date, time): - return datetime.datetime.combine(cls._build_object(date), - cls._build_object(time)) - - @classmethod - def build_duration(cls, PnY=None, PnM=None, PnW=None, PnD=None, TnH=None, - TnM=None, TnS=None): - years = 0 - months = 0 - days = 0 - weeks = 0 - hours = 0 - minutes = 0 - seconds = 0 - microseconds = 0 - - if PnY is not None: - if '.' in PnY: - years, remainingmicroseconds = cls._split_to_microseconds(PnY, MICROSECONDS_PER_YEAR, 'Invalid year string.') - microseconds += remainingmicroseconds - else: - years = cls.cast(PnY, int, - thrownmessage='Invalid year string.') - - if PnM is not None: - if '.' in PnM: - months, remainingmicroseconds = cls._split_to_microseconds(PnM, MICROSECONDS_PER_MONTH, 'Invalid month string.') - microseconds += remainingmicroseconds - else: - months = cls.cast(PnM, int, - thrownmessage='Invalid month string.') - - if PnW is not None: - if '.' in PnW: - weeks, remainingmicroseconds = cls._split_to_microseconds(PnW, MICROSECONDS_PER_WEEK, 'Invalid week string.') - microseconds += remainingmicroseconds - else: - weeks = cls.cast(PnW, int, - thrownmessage='Invalid week string.') - - if PnD is not None: - if '.' in PnD: - days, remainingmicroseconds = cls._split_to_microseconds(PnD, MICROSECONDS_PER_DAY, 'Invalid day string.') - microseconds += remainingmicroseconds - else: - days = cls.cast(PnD, int, - thrownmessage='Invalid day string.') - - if TnH is not None: - if '.' in TnH: - hours, remainingmicroseconds = cls._split_to_microseconds(TnH, MICROSECONDS_PER_HOUR, 'Invalid hour string.') - microseconds += remainingmicroseconds - else: - hours = cls.cast(TnH, int, - thrownmessage='Invalid hour string.') - - if TnM is not None: - if '.' in TnM: - minutes, remainingmicroseconds = cls._split_to_microseconds(TnM, MICROSECONDS_PER_MINUTE, 'Invalid minute string.') - microseconds += remainingmicroseconds - else: - minutes = cls.cast(TnM, int, - thrownmessage='Invalid minute string.') - - if TnS is not None: - if '.' in TnS: - seconds, remainingmicroseconds = cls._split_to_microseconds(TnS, MICROSECONDS_PER_SECOND, 'Invalid second string.') - microseconds += remainingmicroseconds - else: - seconds = cls.cast(TnS, int, - thrownmessage='Invalid second string.') - - years, months, weeks, days, hours, minutes, seconds, microseconds = PythonTimeBuilder._distribute_microseconds(microseconds, (years, months, weeks, days, hours, minutes, seconds), (MICROSECONDS_PER_YEAR, MICROSECONDS_PER_MONTH, MICROSECONDS_PER_WEEK, MICROSECONDS_PER_DAY, MICROSECONDS_PER_HOUR, MICROSECONDS_PER_MINUTE, MICROSECONDS_PER_SECOND)) - - #Note that weeks can be handled without conversion to days - totaldays = years * 365 + months * 30 + days - - return datetime.timedelta(days=totaldays, - seconds=seconds, - microseconds=microseconds, - minutes=minutes, - hours=hours, - weeks=weeks) - - @classmethod - def build_interval(cls, start=None, end=None, duration=None): - if start is not None and end is not None: - #/ - startobject = cls._build_object(start) - endobject = cls._build_object(end) - - return (startobject, endobject) - - durationobject = cls._build_object(duration) - - #Determine if datetime promotion is required - datetimerequired = (duration[4] is not None - or duration[5] is not None - or duration[6] is not None - or durationobject.seconds != 0 - or durationobject.microseconds != 0) - - if end is not None: - #/ - endobject = cls._build_object(end) - if end[-1] == 'date' and datetimerequired is True: - # is a date, and requires datetime resolution - return (endobject, - cls.build_datetime(end, TupleBuilder.build_time()) - - durationobject) - - return (endobject, - endobject - - durationobject) - - #/ - startobject = cls._build_object(start) - - if start[-1] == 'date' and datetimerequired is True: - # is a date, and requires datetime resolution - return (startobject, - cls.build_datetime(start, TupleBuilder.build_time()) - + durationobject) - - return (startobject, - startobject - + durationobject) - - @classmethod - def build_repeating_interval(cls, R=None, Rnn=None, interval=None): - startobject = None - endobject = None - - if interval[0] is not None: - startobject = cls._build_object(interval[0]) - - if interval[1] is not None: - endobject = cls._build_object(interval[1]) - - if interval[2] is not None: - durationobject = cls._build_object(interval[2]) - else: - durationobject = endobject - startobject - - if R is True: - if startobject is not None: - return cls._date_generator_unbounded(startobject, - durationobject) - - return cls._date_generator_unbounded(endobject, - -durationobject) - - iterations = cls.cast(Rnn, int, - thrownmessage='Invalid iterations.') - - if startobject is not None: - return cls._date_generator(startobject, durationobject, iterations) - - return cls._date_generator(endobject, -durationobject, iterations) - - @classmethod - def build_timezone(cls, negative=None, Z=None, hh=None, mm=None, name=''): - if Z is True: - #Z -> UTC - return UTCOffset(name='UTC', minutes=0) - - if hh is not None: - tzhour = cls.cast(hh, int, - thrownmessage='Invalid hour string.') - else: - tzhour = 0 - - if mm is not None: - tzminute = cls.cast(mm, int, - thrownmessage='Invalid minute string.') - else: - tzminute = 0 - - if negative is True: - return UTCOffset(name=name, minutes=-(tzhour * 60 + tzminute)) - - return UTCOffset(name=name, minutes=tzhour * 60 + tzminute) - - @staticmethod - def _build_week_date(isoyear, isoweek, isoday=None): - if isoday is None: - return (PythonTimeBuilder._iso_year_start(isoyear) - + datetime.timedelta(weeks=isoweek - 1)) - - return (PythonTimeBuilder._iso_year_start(isoyear) - + datetime.timedelta(weeks=isoweek - 1, days=isoday - 1)) - - @staticmethod - def _build_ordinal_date(isoyear, isoday): - #Day of year to a date - #https://stackoverflow.com/questions/2427555/python-question-year-and-day-of-year-to-date - builtdate = (datetime.date(isoyear, 1, 1) - + datetime.timedelta(days=isoday - 1)) - - #Enforce ordinal day limitation - #https://bitbucket.org/nielsenb/aniso8601/issues/14/parsing-ordinal-dates-should-only-allow - if isoday == 0 or builtdate.year != isoyear: - raise DayOutOfBoundsError('Day of year must be from 1..365, ' - '1..366 for leap year.') - - return builtdate - - @staticmethod - def _iso_year_start(isoyear): - #Given an ISO year, returns the equivalent of the start of the year - #on the Gregorian calendar (which is used by Python) - #Stolen from: - #http://stackoverflow.com/questions/304256/whats-the-best-way-to-find-the-inverse-of-datetime-isocalendar - - #Determine the location of the 4th of January, the first week of - #the ISO year is the week containing the 4th of January - #http://en.wikipedia.org/wiki/ISO_week_date - fourth_jan = datetime.date(isoyear, 1, 4) - - #Note the conversion from ISO day (1 - 7) and Python day (0 - 6) - delta = datetime.timedelta(days=fourth_jan.isoweekday() - 1) - - #Return the start of the year - return fourth_jan - delta - - @staticmethod - def _date_generator(startdate, timedelta, iterations): - currentdate = startdate - currentiteration = 0 - - while currentiteration < iterations: - yield currentdate - - #Update the values - currentdate += timedelta - currentiteration += 1 - - @staticmethod - def _date_generator_unbounded(startdate, timedelta): - currentdate = startdate - - while True: - yield currentdate - - #Update the value - currentdate += timedelta - - @classmethod - def _split_to_microseconds(cls, floatstr, conversion, thrownmessage): - #Splits a string with a decimal point into an int, and - #int representing the floating point remainder as a number - #of microseconds, determined by multiplying by conversion - intpart, floatpart = floatstr.split('.') - - intvalue = cls.cast(intpart, int, - thrownmessage=thrownmessage) - - preconvertedvalue = cls.cast(floatpart, int, - thrownmessage=thrownmessage) - - convertedvalue = ((preconvertedvalue * conversion) // - (10 ** len(floatpart))) - - return (intvalue, convertedvalue) - - @staticmethod - def _distribute_microseconds(todistribute, recipients, reductions): - #Given a number of microseconds as int, a tuple of ints length n - #to distribute to, and a tuple of ints length n to divide todistribute - #by (from largest to smallest), returns a tuple of length n + 1, with - #todistribute divided across recipients using the reductions, with - #the final remainder returned as the final tuple member - results = [] - - remainder = todistribute - - for index, reduction in enumerate(reductions): - additional, remainder = divmod(remainder, reduction) - - results.append(recipients[index] + additional) - - #Always return the remaining microseconds - results.append(remainder) - - return tuple(results) diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__init__.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__init__.py deleted file mode 100644 index 7dcd5d13..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/__init__.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 8642e03b..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/test_init.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/test_init.cpython-36.pyc deleted file mode 100644 index a6c66380..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/test_init.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/test_python.cpython-36.pyc b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/test_python.cpython-36.pyc deleted file mode 100644 index 5ee7754d..00000000 Binary files a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/__pycache__/test_python.cpython-36.pyc and /dev/null differ diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/test_init.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/test_init.py deleted file mode 100644 index 440b816d..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/test_init.py +++ /dev/null @@ -1,421 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -import unittest -import aniso8601 - -from aniso8601.builders import BaseTimeBuilder, TupleBuilder -from aniso8601.exceptions import ISOFormatError -from aniso8601.tests.compat import mock - -class TestBaseTimeBuilder(unittest.TestCase): - def test_build_date(self): - with self.assertRaises(NotImplementedError): - BaseTimeBuilder.build_date() - - def test_build_time(self): - with self.assertRaises(NotImplementedError): - BaseTimeBuilder.build_time() - - def test_build_datetime(self): - with self.assertRaises(NotImplementedError): - BaseTimeBuilder.build_datetime(None, None) - - def test_build_duration(self): - with self.assertRaises(NotImplementedError): - BaseTimeBuilder.build_duration() - - def test_build_interval(self): - with self.assertRaises(NotImplementedError): - BaseTimeBuilder.build_interval() - - def test_build_repeating_interval(self): - with self.assertRaises(NotImplementedError): - BaseTimeBuilder.build_repeating_interval() - - def test_build_timezone(self): - with self.assertRaises(NotImplementedError): - BaseTimeBuilder.build_timezone() - - def test_cast(self): - self.assertEqual(BaseTimeBuilder.cast('1', int), 1) - self.assertEqual(BaseTimeBuilder.cast('-2', int), -2) - self.assertEqual(BaseTimeBuilder.cast('3', float), float(3)) - self.assertEqual(BaseTimeBuilder.cast('-4', float), float(-4)) - self.assertEqual(BaseTimeBuilder.cast('5.6', float), 5.6) - self.assertEqual(BaseTimeBuilder.cast('-7.8', float), -7.8) - - def test_cast_exception(self): - with self.assertRaises(ISOFormatError): - BaseTimeBuilder.cast('asdf', int) - - with self.assertRaises(ISOFormatError): - BaseTimeBuilder.cast('asdf', float) - - def test_cast_caughtexception(self): - def tester(value): - raise RuntimeError - - with self.assertRaises(ISOFormatError): - BaseTimeBuilder.cast('asdf', tester, - caughtexceptions=(RuntimeError,)) - - def test_cast_thrownexception(self): - with self.assertRaises(RuntimeError): - BaseTimeBuilder.cast('asdf', int, - thrownexception=RuntimeError) - - def test_build_object(self): - datetest = (('1', '2', '3', '4', '5', '6', 'date'), - {'YYYY': '1', 'MM': '2', 'DD': '3', - 'Www': '4', 'D': '5', 'DDD': '6'}) - - timetest = (('1', '2', '3', - (False, False, '4', '5', 'tz name', 'timezone'), - 'time'), - {'hh': '1', 'mm': '2', 'ss': '3', - 'tz': (False, False, '4', '5', 'tz name', 'timezone')}) - - datetimetest = ((('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', - (True, False, '10', '11', 'tz name', 'timezone'), - 'time'), - 'datetime'), - (('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', - (True, False, '10', '11', 'tz name', 'timezone'), - 'time'))) - - durationtest = (('1', '2', '3', '4', '5', '6', '7', 'duration'), - {'PnY': '1', 'PnM': '2', 'PnW': '3', 'PnD': '4', - 'TnH': '5', 'TnM': '6', 'TnS': '7'}) - - intervaltests = (((('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', '10', '11', '12', 'date'), - None, 'interval'), - {'start': ('1', '2', '3', '4', '5', '6', 'date'), - 'end': ('7', '8', '9', '10', '11', '12', 'date'), - 'duration': None}), - ((('1', '2', '3', '4', '5', '6', 'date'), - None, - ('7', '8', '9', '10', '11', '12', '13', 'duration'), - 'interval'), - {'start': ('1', '2', '3', '4', '5', '6', 'date'), - 'end': None, - 'duration': ('7', '8', '9', '10', '11', '12', '13', - 'duration')}), - ((None, - ('1', '2', '3', - (True, False, '4', '5', 'tz name', 'timezone'), - 'time'), - ('6', '7', '8', '9', '10', '11', '12', 'duration'), - 'interval'), - {'start': None, - 'end': ('1', '2', '3', - (True, False, '4', '5', 'tz name', - 'timezone'), - 'time'), - 'duration': ('6', '7', '8', '9', '10', '11', '12', - 'duration')})) - - repeatingintervaltests = (((True, - None, - (('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', '10', '11', '12', 'date'), - None, 'interval'), 'repeatinginterval'), - {'R': True, - 'Rnn': None, - 'interval': (('1', '2', '3', - '4', '5', '6', 'date'), - ('7', '8', '9', - '10', '11', '12', 'date'), - None, 'interval')}), - ((False, - '1', - ((('2', '3', '4', '5', '6', '7', 'date'), - ('8', '9', '10', None, 'time'), - 'datetime'), - (('11', '12', '13', '14', '15', '16', - 'date'), - ('17', '18', '19', None, 'time'), - 'datetime'), - None, 'interval'), 'repeatinginterval'), - {'R':False, - 'Rnn': '1', - 'interval': ((('2', '3', '4', - '5', '6', '7', 'date'), - ('8', '9', '10', None, - 'time'), 'datetime'), - (('11', '12', '13', - '14', '15', '16', 'date'), - ('17', '18', '19', None, - 'time'), 'datetime'), - None, 'interval')})) - - timezonetest = ((False, False, '1', '2', '+01:02', 'timezone'), - {'negative': False, 'Z': False, - 'hh': '1', 'mm': '2', 'name': '+01:02'}) - - with mock.patch.object(aniso8601.builders.BaseTimeBuilder, - 'build_date') as mock_build: - mock_build.return_value = datetest[0] - - result = BaseTimeBuilder._build_object(datetest[0]) - - self.assertEqual(result, datetest[0]) - mock_build.assert_called_once_with(**datetest[1]) - - with mock.patch.object(aniso8601.builders.BaseTimeBuilder, - 'build_time') as mock_build: - mock_build.return_value = timetest[0] - - result = BaseTimeBuilder._build_object(timetest[0]) - - self.assertEqual(result, timetest[0]) - mock_build.assert_called_once_with(**timetest[1]) - - with mock.patch.object(aniso8601.builders.BaseTimeBuilder, - 'build_datetime') as mock_build: - mock_build.return_value = datetimetest[0] - - result = BaseTimeBuilder._build_object(datetimetest[0]) - - self.assertEqual(result, datetimetest[0]) - mock_build.assert_called_once_with(*datetimetest[1]) - - with mock.patch.object(aniso8601.builders.BaseTimeBuilder, - 'build_duration') as mock_build: - mock_build.return_value = durationtest[0] - - result = BaseTimeBuilder._build_object(durationtest[0]) - - self.assertEqual(result, durationtest[0]) - mock_build.assert_called_once_with(**durationtest[1]) - - for intervaltest in intervaltests: - with mock.patch.object(aniso8601.builders.BaseTimeBuilder, - 'build_interval') as mock_build: - mock_build.return_value = intervaltest[0] - - result = BaseTimeBuilder._build_object(intervaltest[0]) - - self.assertEqual(result, intervaltest[0]) - mock_build.assert_called_once_with(**intervaltest[1]) - - for repeatingintervaltest in repeatingintervaltests: - with mock.patch.object(aniso8601.builders.BaseTimeBuilder, - 'build_repeating_interval') as mock_build: - mock_build.return_value = repeatingintervaltest[0] - - result = BaseTimeBuilder._build_object(repeatingintervaltest[0]) - - self.assertEqual(result, repeatingintervaltest[0]) - mock_build.assert_called_once_with(**repeatingintervaltest[1]) - - with mock.patch.object(aniso8601.builders.BaseTimeBuilder, - 'build_timezone') as mock_build: - mock_build.return_value = timezonetest[0] - - result = BaseTimeBuilder._build_object(timezonetest[0]) - - self.assertEqual(result, timezonetest[0]) - mock_build.assert_called_once_with(**timezonetest[1]) - -class TestTupleBuilder(unittest.TestCase): - def test_build_date(self): - datetuple = TupleBuilder.build_date() - - self.assertEqual(datetuple, (None, None, None, - None, None, None, - 'date')) - - datetuple = TupleBuilder.build_date(YYYY='1', MM='2', DD='3', - Www='4', D='5', DDD='6') - - self.assertEqual(datetuple, ('1', '2', '3', - '4', '5', '6', - 'date')) - - def test_build_time(self): - testtuples = (({}, (None, None, None, None, 'time')), - ({'hh': '1', 'mm': '2', 'ss': '3', 'tz': None}, - ('1', '2', '3', None, 'time')), - ({'hh': '1', 'mm': '2', 'ss': '3', 'tz': (False, False, - '4', '5', - 'tz name', - 'timezone')}, - ('1', '2', '3', (False, False, '4', '5', - 'tz name', 'timezone'), - 'time'))) - - for testtuple in testtuples: - self.assertEqual(TupleBuilder.build_time(**testtuple[0]), - testtuple[1]) - - def test_build_datetime(self): - testtuples = (({'date': ('1', '2', '3', '4', '5', '6', 'date'), - 'time': ('7', '8', '9', None, 'time')}, - (('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', None, 'time'), - 'datetime')), - ({'date': ('1', '2', '3', '4', '5', '6', 'date'), - 'time': ('7', '8', '9', - (True, False, '10', '11', 'tz name', - 'timezone'), - 'time')}, - (('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', - (True, False, '10', '11', 'tz name', - 'timezone'), - 'time'), 'datetime'))) - - for testtuple in testtuples: - self.assertEqual(TupleBuilder.build_datetime(**testtuple[0]), - testtuple[1]) - - def test_build_duration(self): - testtuples = (({}, (None, None, None, None, None, None, None, - 'duration')), - ({'PnY': '1', 'PnM': '2', 'PnW': '3', 'PnD': '4', - 'TnH': '5', 'TnM': '6', 'TnS': '7'}, - ('1', '2', '3', '4', - '5', '6', '7', - 'duration'))) - - for testtuple in testtuples: - self.assertEqual(TupleBuilder.build_duration(**testtuple[0]), - testtuple[1]) - - def test_build_interval(self): - testtuples = (({}, (None, None, None, 'interval')), - ({'start': ('1', '2', '3', '4', '5', '6', 'date'), - 'end': ('7', '8', '9', '10', '11', '12', 'date')}, - (('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', '10', '11', '12', 'date'), - None, 'interval')), - ({'start': ('1', '2', '3', - (True, False, '7', '8', 'tz name', - 'timezone'), - 'time'), - 'end': ('4', '5', '6', - (False, False, '9', '10', 'tz name', - 'timezone'), - 'time')}, - (('1', '2', '3', - (True, False, '7', '8', 'tz name', - 'timezone'), - 'time'), - ('4', '5', '6', - (False, False, '9', '10', 'tz name', - 'timezone'), - 'time'), - None, 'interval')), - ({'start': (('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', - (True, False, '10', '11', 'tz name', - 'timezone'), - 'time'), - 'datetime'), - 'end': (('12', '13', '14', '15', '16', '17', 'date'), - ('18', '19', '20', - (False, False, '21', '22', 'tz name', - 'timezone'), - 'time'), - 'datetime')}, - ((('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', - (True, False, '10', '11', 'tz name', - 'timezone'), - 'time'), - 'datetime'), - (('12', '13', '14', '15', '16', '17', 'date'), - ('18', '19', '20', - (False, False, '21', '22', 'tz name', - 'timezone'), - 'time'), - 'datetime'), - None, 'interval')), - ({'start': ('1', '2', '3', '4', '5', '6', 'date'), - 'end': None, - 'duration': ('7', '8', '9', '10', '11', '12', '13', - 'duration')}, - (('1', '2', '3', '4', '5', '6', 'date'), - None, - ('7', '8', '9', '10', '11', '12', '13', - 'duration'), - 'interval')), - ({'start': None, - 'end': ('1', '2', '3', - (True, False, '4', '5', 'tz name', - 'timezone'), - 'time'), - 'duration': ('6', '7', '8', '9', '10', '11', '12', - 'duration')}, - (None, - ('1', '2', '3', - (True, False, '4', '5', 'tz name', - 'timezone'), - 'time'), - ('6', '7', '8', '9', '10', '11', '12', - 'duration'), - 'interval'))) - - for testtuple in testtuples: - self.assertEqual(TupleBuilder.build_interval(**testtuple[0]), - testtuple[1]) - - def test_build_repeating_interval(self): - testtuples = (({}, (None, None, None, 'repeatinginterval')), - ({'R': True, - 'interval':(('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', '10', '11', '12', 'date'), - None, 'interval')}, - (True, None, (('1', '2', '3', '4', '5', '6', 'date'), - ('7', '8', '9', '10', '11', '12', 'date'), - None, 'interval'), - 'repeatinginterval')), - ({'R':False, 'Rnn': '1', - 'interval': ((('2', '3', '4', '5', '6', '7', - 'date'), - ('8', '9', '10', None, 'time'), - 'datetime'), - (('11', '12', '13', '14', '15', '16', - 'date'), - ('17', '18', '19', None, 'time'), - 'datetime'), - None, 'interval')}, - (False, '1', - ((('2', '3', '4', '5', '6', '7', - 'date'), - ('8', '9', '10', None, 'time'), - 'datetime'), - (('11', '12', '13', '14', '15', '16', - 'date'), - ('17', '18', '19', None, 'time'), - 'datetime'), - None, 'interval'), - 'repeatinginterval'))) - - for testtuple in testtuples: - result = TupleBuilder.build_repeating_interval(**testtuple[0]) - self.assertEqual(result, testtuple[1]) - - def test_build_timezone(self): - testtuples = (({}, (None, None, None, None, '', 'timezone')), - ({'negative': False, 'Z': True, 'name': 'UTC'}, - (False, True, None, None, 'UTC', 'timezone')), - ({'negative': False, 'Z': False, 'hh': '1', 'mm': '2', - 'name': '+01:02'}, - (False, False, '1', '2', '+01:02', 'timezone')), - ({'negative': True, 'Z': False, 'hh': '1', 'mm': '2', - 'name': '-01:02'}, - (True, False, '1', '2', '-01:02', 'timezone'))) - - for testtuple in testtuples: - result = TupleBuilder.build_timezone(**testtuple[0]) - self.assertEqual(result, testtuple[1]) diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/test_python.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/test_python.py deleted file mode 100644 index e17c51bc..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/builders/tests/test_python.py +++ /dev/null @@ -1,998 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -import datetime -import unittest - -from aniso8601 import compat -from aniso8601.exceptions import (DayOutOfBoundsError, HoursOutOfBoundsError, - ISOFormatError, LeapSecondError, - MidnightBoundsError, MinutesOutOfBoundsError, - SecondsOutOfBoundsError, - WeekOutOfBoundsError, YearOutOfBoundsError) -from aniso8601.builders.python import PythonTimeBuilder -from aniso8601.utcoffset import UTCOffset - -class TestPythonTimeBuilder(unittest.TestCase): - def test_build_date(self): - testtuples = (({'YYYY': '2013', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(2013, 1, 1)), - ({'YYYY': '0001', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(1, 1, 1)), - ({'YYYY': '1900', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(1900, 1, 1)), - ({'YYYY': '1981', 'MM': '04', 'DD': '05', 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(1981, 4, 5)), - ({'YYYY': '1981', 'MM': '04', 'DD': None, 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(1981, 4, 1)), - ({'YYYY': '1981', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': '095'}, - datetime.date(1981, 4, 5)), - ({'YYYY': '1981', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': '365'}, - datetime.date(1981, 12, 31)), - ({'YYYY': '1980', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': '366'}, - datetime.date(1980, 12, 31)), - #Make sure we shift in zeros - ({'YYYY': '1', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(1000, 1, 1)), - ({'YYYY': '12', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(1200, 1, 1)), - ({'YYYY': '123', 'MM': None, 'DD': None, 'Www': None, - 'D': None, 'DDD': None}, - datetime.date(1230, 1, 1))) - - for testtuple in testtuples: - result = PythonTimeBuilder.build_date(**testtuple[0]) - self.assertEqual(result, testtuple[1]) - - #Test weekday - testtuples = (({'YYYY': '2004', 'MM': None, 'DD': None, 'Www': '53', - 'D': None, 'DDD': None}, - datetime.date(2004, 12, 27), 0), - ({'YYYY': '2009', 'MM': None, 'DD': None, 'Www': '01', - 'D': None, 'DDD': None}, - datetime.date(2008, 12, 29), 0), - ({'YYYY': '2010', 'MM': None, 'DD': None, 'Www': '01', - 'D': None, 'DDD': None}, - datetime.date(2010, 1, 4), 0), - ({'YYYY': '2009', 'MM': None, 'DD': None, 'Www': '53', - 'D': None, 'DDD': None}, - datetime.date(2009, 12, 28), 0), - ({'YYYY': '2009', 'MM': None, 'DD': None, 'Www': '01', - 'D': '1', 'DDD': None}, - datetime.date(2008, 12, 29), 0), - ({'YYYY': '2009', 'MM': None, 'DD': None, 'Www': '53', - 'D': '7', 'DDD': None}, - datetime.date(2010, 1, 3), 6), - ({'YYYY': '2010', 'MM': None, 'DD': None, 'Www': '01', - 'D': '1', 'DDD': None}, - datetime.date(2010, 1, 4), 0), - ({'YYYY': '2004', 'MM': None, 'DD': None, 'Www': '53', - 'D': '6', 'DDD': None}, - datetime.date(2005, 1, 1), 5)) - - for testtuple in testtuples: - result = PythonTimeBuilder.build_date(**testtuple[0]) - self.assertEqual(result, testtuple[1]) - self.assertEqual(result.weekday(), testtuple[2]) - - def test_build_date_bounds_checking(self): - #0 isn't a valid week number - with self.assertRaises(WeekOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='2003', Www='00') - - #Week must not be larger than 53 - with self.assertRaises(WeekOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='2004', Www='54') - - #0 isn't a valid day number - with self.assertRaises(DayOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='2001', Www='02', D='0') - - #Day must not be larger than 7 - with self.assertRaises(DayOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='2001', Www='02', D='8') - - #0 isn't a valid year for a Python builder - with self.assertRaises(YearOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='0000') - - with self.assertRaises(DayOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='1981', DDD='000') - - #Day 366 is only valid on a leap year - with self.assertRaises(DayOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='1981', DDD='366') - - #Day must me 365, or 366, not larger - with self.assertRaises(DayOutOfBoundsError): - PythonTimeBuilder.build_date(YYYY='1981', DDD='367') - - def test_build_time(self): - testtuples = (({}, datetime.time()), - ({'hh': '12.5'}, - datetime.time(hour=12, minute=30)), - ({'hh': '23.99999999997'}, - datetime.time(hour=23, minute=59, second=59, - microsecond=999999)), - ({'hh': '1', 'mm': '23'}, - datetime.time(hour=1, minute=23)), - ({'hh': '1', 'mm': '23.4567'}, - datetime.time(hour=1, minute=23, second=27, - microsecond=402000)), - ({'hh': '14', 'mm': '43.999999997'}, - datetime.time(hour=14, minute=43, second=59, - microsecond=999999)), - ({'hh': '1', 'mm': '23', 'ss': '45'}, - datetime.time(hour=1, minute=23, second=45)), - ({'hh': '23', 'mm': '21', 'ss': '28.512400'}, - datetime.time(hour=23, minute=21, second=28, - microsecond=512400)), - ({'hh': '01', 'mm': '03', 'ss': '11.858714'}, - datetime.time(hour=1, minute=3, second=11, - microsecond=858714)), - ({'hh': '14', 'mm': '43', 'ss': '59.9999997'}, - datetime.time(hour=14, minute=43, second=59, - microsecond=999999)), - ({'hh': '24'}, datetime.time(hour=0)), - ({'hh': '24', 'mm': '00'}, datetime.time(hour=0)), - ({'hh': '24', 'mm': '00', 'ss': '00'}, - datetime.time(hour=0)), - ({'tz': (False, None, '00', '00', 'UTC', 'timezone')}, - datetime.time(tzinfo=UTCOffset(name='UTC', minutes=0))), - ({'hh': '23', 'mm': '21', 'ss': '28.512400', - 'tz': (False, None, '00', '00', '+00:00', 'timezone')}, - datetime.time(hour=23, minute=21, second=28, - microsecond=512400, - tzinfo=UTCOffset(name='+00:00', - minutes=0))), - ({'hh': '1', 'mm': '23', - 'tz': (False, None, '01', '00', '+1', 'timezone')}, - datetime.time(hour=1, minute=23, - tzinfo=UTCOffset(name='+1', - minutes=60))), - ({'hh': '1', 'mm': '23.4567', - 'tz': (True, None, '01', '00', '-1', 'timezone')}, - datetime.time(hour=1, minute=23, second=27, - microsecond=402000, - tzinfo=UTCOffset(name='-1', - minutes=-60))), - ({'hh': '23', 'mm': '21', 'ss': '28.512400', - 'tz': (False, None, '01', '30', '+1:30', 'timezone')}, - datetime.time(hour=23, minute=21, second=28, - microsecond=512400, - tzinfo=UTCOffset(name='+1:30', - minutes=90))), - ({'hh': '23', 'mm': '21', 'ss': '28.512400', - 'tz': (False, None, '11', '15', '+11:15', 'timezone')}, - datetime.time(hour=23, minute=21, second=28, - microsecond=512400, - tzinfo=UTCOffset(name='+11:15', - minutes=675))), - ({'hh': '23', 'mm': '21', 'ss': '28.512400', - 'tz': (False, None, '12', '34', '+12:34', 'timezone')}, - datetime.time(hour=23, minute=21, second=28, - microsecond=512400, - tzinfo=UTCOffset(name='+12:34', - minutes=754))), - ({'hh': '23', 'mm': '21', 'ss': '28.512400', - 'tz': (False, None, '00', '00', 'UTC', 'timezone')}, - datetime.time(hour=23, minute=21, second=28, - microsecond=512400, - tzinfo=UTCOffset(name='UTC', - minutes=0))), - #Make sure we truncate, not round - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - #https://bitbucket.org/nielsenb/aniso8601/issues/21/sub-microsecond-precision-is-lost-when - ({'hh': '14.9999999999999999'}, - datetime.time(hour=14, minute=59, second=59, - microsecond=999999)), - ({'mm': '0.00000000999'}, - datetime.time()), - ({'mm': '0.0000000999'}, - datetime.time(microsecond=5)), - ({'ss': '0.0000001'}, - datetime.time()), - ({'ss': '2.0000048'}, - datetime.time(second=2, - microsecond=4))) - - for testtuple in testtuples: - result = PythonTimeBuilder.build_time(**testtuple[0]) - self.assertEqual(result, testtuple[1]) - - def test_build_time_bounds_checking(self): - #Leap seconds not supported - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - #https://bitbucket.org/nielsenb/aniso8601/issues/13/parsing-of-leap-second-gives-wildly - with self.assertRaises(LeapSecondError): - PythonTimeBuilder.build_time(hh='23', mm='59', ss='60') - - with self.assertRaises(LeapSecondError): - PythonTimeBuilder.build_time(hh='23', mm='59', ss='60', - tz=UTCOffset(name='UTC', minutes=0)) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='00', ss='60') - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='00', ss='60', - tz=UTCOffset(name='UTC', minutes=0)) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='00', ss='61') - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='00', ss='61', - tz=UTCOffset(name='UTC', minutes=0)) - - with self.assertRaises(MinutesOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='61') - - with self.assertRaises(MinutesOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='61', - tz=UTCOffset(name='UTC', minutes=0)) - - with self.assertRaises(MinutesOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='60') - - with self.assertRaises(MinutesOutOfBoundsError): - PythonTimeBuilder.build_time(hh='00', mm='60.1') - - with self.assertRaises(HoursOutOfBoundsError): - PythonTimeBuilder.build_time(hh='25') - - #Hour 24 can only represent midnight - with self.assertRaises(MidnightBoundsError): - PythonTimeBuilder.build_time(hh='24', mm='00', ss='01') - - with self.assertRaises(MidnightBoundsError): - PythonTimeBuilder.build_time(hh='24', mm='00.1') - - with self.assertRaises(MidnightBoundsError): - PythonTimeBuilder.build_time(hh='24', mm='01') - - with self.assertRaises(MidnightBoundsError): - PythonTimeBuilder.build_time(hh='24.1') - - def test_build_datetime(self): - testtuples = (((('2019', '06', '05', None, None, None, 'date'), - ('01', '03', '11.858714', None, 'time')), - datetime.datetime(2019, 6, 5, hour=1, minute=3, - second=11, microsecond=858714)), - ((('1234', '02', '03', None, None, None, 'date'), - ('23', '21', '28.512400', None, 'time')), - datetime.datetime(1234, 2, 3, hour=23, minute=21, - second=28, microsecond=512400)), - ((('1981', '04', '05', None, None, None, 'date'), - ('23', '21', '28.512400', - (False, None, '11', '15', '+11:15', 'timezone'), - 'time')), - datetime.datetime(1981, 4, 5, hour=23, minute=21, - second=28, microsecond=512400, - tzinfo=UTCOffset(name='+11:15', - minutes=675)))) - - for testtuple in testtuples: - result = PythonTimeBuilder.build_datetime(*testtuple[0]) - self.assertEqual(result, testtuple[1]) - - def test_build_datetime_bounds_checking(self): - #Leap seconds not supported - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - #https://bitbucket.org/nielsenb/aniso8601/issues/13/parsing-of-leap-second-gives-wildly - with self.assertRaises(LeapSecondError): - PythonTimeBuilder.build_datetime(('2016', '12', '31', - None, None, None, 'date'), - ('23', '59', '60', None, 'time')) - - with self.assertRaises(LeapSecondError): - PythonTimeBuilder.build_datetime(('2016', '12', '31', - None, None, None, 'date'), - ('23', '59', '60', - (False, None, '00', '00', - '+00:00', 'timezone'), 'time')) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '00', '60', None, 'time')) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '00', '60', - (False, None, '00', '00', - '+00:00', 'timezone'), 'time')) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '00', '61', None, 'time')) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '00', '61', - (False, None, '00', '00', - '+00:00', 'timezone'), 'time')) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '59', '61', None, 'time')) - - with self.assertRaises(SecondsOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '59', '61', - (False, None, '00', '00', - '+00:00', 'timezone'), 'time')) - - with self.assertRaises(MinutesOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '61', None, None, 'time')) - - with self.assertRaises(MinutesOutOfBoundsError): - PythonTimeBuilder.build_datetime(('1981', '04', '05', - None, None, None, 'date'), - ('00', '61', None, - (False, None, '00', '00', - '+00:00', 'timezone'), 'time')) - - def test_build_duration(self): - testtuples = (({'PnY': '1', 'PnM': '2', 'PnD': '3', - 'TnH': '4', 'TnM': '54', 'TnS': '6'}, - datetime.timedelta(days=428, hours=4, - minutes=54, seconds=6)), - ({'PnY': '1', 'PnM': '2', 'PnD': '3', - 'TnH': '4', 'TnM': '54', 'TnS': '6.5'}, - datetime.timedelta(days=428, hours=4, - minutes=54, seconds=6.5)), - ({'PnY': '1', 'PnM': '2', 'PnD': '3'}, - datetime.timedelta(days=428)), - ({'PnY': '1', 'PnM': '2', 'PnD': '3.5'}, - datetime.timedelta(days=428.5)), - ({'TnH': '4', 'TnM': '54', 'TnS': '6.5'}, - datetime.timedelta(hours=4, minutes=54, seconds=6.5)), - ({'TnH': '1', 'TnM': '3', 'TnS': '11.858714'}, - datetime.timedelta(hours=1, minutes=3, - seconds=11, microseconds=858714)), - ({'TnH': '4', 'TnM': '54', 'TnS': '28.512400'}, - datetime.timedelta(hours=4, minutes=54, - seconds=28, microseconds=512400)), - #Make sure we truncate, not round - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - #https://bitbucket.org/nielsenb/aniso8601/issues/21/sub-microsecond-precision-is-lost-when - ({'PnY': '1999.9999999999999999'}, - datetime.timedelta(days=729999, seconds=86399, - microseconds=999999)), - ({'PnM': '1.9999999999999999'}, - datetime.timedelta(days=59, hours=23, - minutes=59, seconds=59, - microseconds=999999)), - ({'PnW': '1.9999999999999999'}, - datetime.timedelta(days=13, hours=23, - minutes=59, seconds=59, - microseconds=999999)), - ({'PnD': '1.9999999999999999'}, - datetime.timedelta(days=1, hours=23, - minutes=59, seconds=59, - microseconds=999999)), - ({'TnH': '14.9999999999999999'}, - datetime.timedelta(hours=14, minutes=59, - seconds=59, microseconds=999999)), - ({'TnM': '0.00000000999'}, datetime.timedelta(0)), - ({'TnM': '0.0000000999'}, - datetime.timedelta(microseconds=5)), - ({'TnS': '0.0000001'}, datetime.timedelta(0)), - ({'TnS': '2.0000048'}, - datetime.timedelta(seconds=2, microseconds=4)), - ({'PnY': '1'}, datetime.timedelta(days=365)), - ({'PnY': '1.5'}, datetime.timedelta(days=547.5)), - ({'PnM': '1'}, datetime.timedelta(days=30)), - ({'PnM': '1.5'}, datetime.timedelta(days=45)), - ({'PnW': '1'}, datetime.timedelta(days=7)), - ({'PnW': '1.5'}, datetime.timedelta(days=10.5)), - ({'PnD': '1'}, datetime.timedelta(days=1)), - ({'PnD': '1.5'}, datetime.timedelta(days=1.5)), - ({'PnY': '0003', 'PnM': '06', 'PnD': '04', - 'TnH': '12', 'TnM': '30', 'TnS': '05'}, - datetime.timedelta(days=1279, hours=12, - minutes=30, seconds=5)), - ({'PnY': '0003', 'PnM': '06', 'PnD': '04', - 'TnH': '12', 'TnM': '30', 'TnS': '05.5'}, - datetime.timedelta(days=1279, hours=12, - minutes=30, seconds=5.5)), - #Make sure we truncate, not round - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - ({'PnY': '0001', 'PnM': '02', 'PnD': '03', - 'TnH': '14', 'TnM': '43', 'TnS': '59.9999997'}, - datetime.timedelta(days=428, hours=14, - minutes=43, seconds=59, - microseconds=999999)), - #Verify overflows - ({'TnH': '36'}, datetime.timedelta(days=1, hours=12))) - - for testtuple in testtuples: - result = PythonTimeBuilder.build_duration(**testtuple[0]) - self.assertEqual(result, testtuple[1]) - - def test_build_interval(self): - testtuples = (({'end': (('1981', '04', '05', None, None, None, 'date'), - ('01', '01', '00', None, 'time'), 'datetime'), - 'duration': (None, '1', None, None, None, None, None, - 'duration')}, - datetime.datetime(year=1981, month=4, day=5, - hour=1, minute=1), - datetime.datetime(year=1981, month=3, day=6, - hour=1, minute=1)), - ({'end': ('1981', '04', '05', None, None, None, 'date'), - 'duration': (None, '1', None, None, None, None, None, - 'duration')}, - datetime.date(year=1981, month=4, day=5), - datetime.date(year=1981, month=3, day=6)), - ({'end': ('2018', '03', '06', None, None, None, 'date'), - 'duration': ('1.5', None, None, None, None, None, None, - 'duration')}, - datetime.date(year=2018, month=3, day=6), - datetime.datetime(year=2016, month=9, day=4, - hour=12)), - ({'end': ('2014', '11', '12', None, None, None, 'date'), - 'duration': (None, None, None, None, '1', None, None, - 'duration')}, - datetime.date(year=2014, month=11, day=12), - datetime.datetime(year=2014, month=11, day=11, - hour=23)), - ({'end': ('2014', '11', '12', None, None, None, 'date'), - 'duration': (None, None, None, None, '4', '54', '6.5', - 'duration')}, - datetime.date(year=2014, month=11, day=12), - datetime.datetime(year=2014, month=11, day=11, - hour=19, minute=5, second=53, - microsecond=500000)), - ({'end': (('2050', '03', '01', - None, None, None, 'date'), - ('13', '00', '00', - (False, True, None, None, - 'Z', 'timezone'), 'time'), 'datetime'), - 'duration': (None, None, None, - None, '10', None, None, 'duration')}, - datetime.datetime(year=2050, month=3, day=1, - hour=13, - tzinfo=UTCOffset(name='UTC', - minutes=0)), - datetime.datetime(year=2050, month=3, day=1, - hour=3, - tzinfo=UTCOffset(name='UTC', - minutes=0))), - #Make sure we truncate, not round - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - #https://bitbucket.org/nielsenb/aniso8601/issues/21/sub-microsecond-precision-is-lost-when - ({'end': ('2000', '01', '01', - None, None, None, 'date'), - 'duration': ('1999.9999999999999999', None, None, - None, None, None, - None, 'duration')}, - datetime.date(year=2000, month=1, day=1), - datetime.datetime(year=1, month=4, day=30, - hour=0, minute=0, second=0, - microsecond=1)), - ({'end': ('1989', '03', '01', - None, None, None, 'date'), - 'duration': (None, '1.9999999999999999', None, - None, None, None, - None, 'duration')}, - datetime.date(year=1989, month=3, day=1), - datetime.datetime(year=1988, month=12, day=31, - hour=0, minute=0, second=0, - microsecond=1)), - ({'end': ('1989', '03', '01', - None, None, None, 'date'), - 'duration': (None, None, '1.9999999999999999', - None, None, None, - None, 'duration')}, - datetime.date(year=1989, month=3, day=1), - datetime.datetime(year=1989, month=2, day=15, - hour=0, minute=0, second=0, - microsecond=1)), - ({'end': ('1989', '03', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - '1.9999999999999999', None, None, - None, 'duration')}, - datetime.date(year=1989, month=3, day=1), - datetime.datetime(year=1989, month=2, day=27, - hour=0, minute=0, second=0, - microsecond=1)), - ({'end': ('2001', '01', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - None, '14.9999999999999999', None, - None, 'duration')}, - datetime.date(year=2001, month=1, day=1), - datetime.datetime(year=2000, month=12, day=31, - hour=9, minute=0, second=0, - microsecond=1)), - ({'end': ('2001', '01', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - None, None, '0.00000000999', - None, 'duration')}, - datetime.date(year=2001, month=1, day=1), - datetime.datetime(year=2001, month=1, day=1)), - ({'end': ('2001', '01', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - None, None, '0.0000000999', - None, 'duration')}, - datetime.date(year=2001, month=1, day=1), - datetime.datetime(year=2000, month=12, day=31, - hour=23, minute=59, second=59, - microsecond=999995)), - ({'end': ('2018', '03', '06', None, None, None, 'date'), - 'duration': (None, None, None, - None, None, None, - '0.0000001', 'duration')}, - datetime.date(year=2018, month=3, day=6), - datetime.datetime(year=2018, month=3, day=6)), - ({'end': ('2018', '03', '06', None, None, None, 'date'), - 'duration': (None, None, None, - None, None, None, - '2.0000048', 'duration')}, - datetime.date(year=2018, month=3, day=6), - datetime.datetime(year=2018, month=3, day=5, - hour=23, minute=59, second=57, - microsecond=999996)), - ({'start': (('1981', '04', '05', - None, None, None, 'date'), - ('01', '01', '00', None, 'time'), - 'datetime'), - 'duration': (None, '1', None, - '1', None, '1', None, 'duration')}, - datetime.datetime(year=1981, month=4, day=5, - hour=1, minute=1), - datetime.datetime(year=1981, month=5, day=6, - hour=1, minute=2)), - ({'start': ('1981', '04', '05', - None, None, None, 'date'), - 'duration': (None, '1', None, - '1', None, None, None, 'duration')}, - datetime.date(year=1981, month=4, day=5), - datetime.date(year=1981, month=5, day=6)), - ({'start': ('2018', '03', '06', - None, None, None, 'date'), - 'duration': (None, '2.5', None, - None, None, None, None, 'duration')}, - datetime.date(year=2018, month=3, day=6), - datetime.date(year=2018, month=5, day=20)), - ({'start': ('2014', '11', '12', - None, None, None, 'date'), - 'duration': (None, None, None, - None, '1', None, None, 'duration')}, - datetime.date(year=2014, month=11, day=12), - datetime.datetime(year=2014, month=11, day=12, - hour=1, minute=0)), - ({'start': ('2014', '11', '12', - None, None, None, 'date'), - 'duration': (None, None, None, - None, '4', '54', '6.5', 'duration')}, - datetime.date(year=2014, month=11, day=12), - datetime.datetime(year=2014, month=11, day=12, - hour=4, minute=54, second=6, - microsecond=500000)), - ({'start': (('2050', '03', '01', - None, None, None, 'date'), - ('13', '00', '00', - (False, True, None, None, - 'Z', 'timezone'), 'time'), 'datetime'), - 'duration': (None, None, None, - None, '10', None, None, 'duration')}, - datetime.datetime(year=2050, month=3, day=1, - hour=13, - tzinfo=UTCOffset(name='UTC', - minutes=0)), - datetime.datetime(year=2050, month=3, day=1, - hour=23, - tzinfo=UTCOffset(name='UTC', - minutes=0))), - #Make sure we truncate, not round - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - ({'start': ('0001', '01', '01', - None, None, None, 'date'), - 'duration': ('1999.9999999999999999', None, None, - None, None, None, - None, 'duration')}, - datetime.date(year=1, month=1, day=1), - datetime.datetime(year=1999, month=9, day=3, - hour=23, minute=59, second=59, - microsecond=999999)), - ({'start': ('1989', '03', '01', - None, None, None, 'date'), - 'duration': (None, '1.9999999999999999', None, - None, None, None, - None, 'duration')}, - datetime.date(year=1989, month=3, day=1), - datetime.datetime(year=1989, month=4, day=29, - hour=23, minute=59, second=59, - microsecond=999999)), - ({'start': ('1989', '03', '01', - None, None, None, 'date'), - 'duration': (None, None, '1.9999999999999999', - None, None, None, - None, 'duration')}, - datetime.date(year=1989, month=3, day=1), - datetime.datetime(year=1989, month=3, day=14, - hour=23, minute=59, second=59, - microsecond=999999)), - ({'start': ('1989', '03', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - '1.9999999999999999', None, None, - None, 'duration')}, - datetime.date(year=1989, month=3, day=1), - datetime.datetime(year=1989, month=3, day=2, - hour=23, minute=59, second=59, - microsecond=999999)), - ({'start': ('2001', '01', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - None, '14.9999999999999999', None, - None, 'duration')}, - datetime.date(year=2001, month=1, day=1), - datetime.datetime(year=2001, month=1, day=1, - hour=14, minute=59, second=59, - microsecond=999999)), - ({'start': ('2001', '01', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - None, None, '0.00000000999', - None, 'duration')}, - datetime.date(year=2001, month=1, day=1), - datetime.datetime(year=2001, month=1, day=1)), - ({'start': ('2001', '01', '01', - None, None, None, 'date'), - 'duration': (None, None, None, - None, None, '0.0000000999', - None, 'duration')}, - datetime.date(year=2001, month=1, day=1), - datetime.datetime(year=2001, month=1, day=1, - hour=0, minute=0, second=0, - microsecond=5)), - ({'start': ('2018', '03', '06', - None, None, None, 'date'), - 'duration': (None, None, None, - None, None, None, - '0.0000001', 'duration')}, - datetime.date(year=2018, month=3, day=6), - datetime.datetime(year=2018, month=3, day=6)), - ({'start': ('2018', '03', '06', - None, None, None, 'date'), - 'duration': (None, None, None, - None, None, None, - '2.0000048', 'duration')}, - datetime.date(year=2018, month=3, day=6), - datetime.datetime(year=2018, month=3, day=6, - hour=0, minute=0, second=2, - microsecond=4)), - ({'start': (('1980', '03', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - 'end': (('1981', '04', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime')}, - datetime.datetime(year=1980, month=3, day=5, - hour=1, minute=1), - datetime.datetime(year=1981, month=4, day=5, - hour=1, minute=1)), - ({'start': (('1980', '03', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - 'end': ('1981', '04', '05', - None, None, None, 'date')}, - datetime.datetime(year=1980, month=3, day=5, - hour=1, minute=1), - datetime.date(year=1981, month=4, day=5)), - ({'start': ('1980', '03', '05', - None, None, None, 'date'), - 'end': (('1981', '04', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime')}, - datetime.date(year=1980, month=3, day=5), - datetime.datetime(year=1981, month=4, day=5, - hour=1, minute=1)), - ({'start': ('1980', '03', '05', - None, None, None, 'date'), - 'end': ('1981', '04', '05', - None, None, None, 'date')}, - datetime.date(year=1980, month=3, day=5), - datetime.date(year=1981, month=4, day=5)), - ({'start': ('1981', '04', '05', - None, None, None, 'date'), - 'end': ('1980', '03', '05', - None, None, None, 'date')}, - datetime.date(year=1981, month=4, day=5), - datetime.date(year=1980, month=3, day=5)), - ({'start': (('2050', '03', '01', - None, None, None, 'date'), - ('13', '00', '00', - (False, True, None, None, - 'Z', 'timezone'), 'time'), 'datetime'), - 'end': (('2050', '05', '11', - None, None, None, 'date'), - ('15', '30', '00', - (False, True, None, None, - 'Z', 'timezone'), 'time'), 'datetime')}, - datetime.datetime(year=2050, month=3, day=1, - hour=13, - tzinfo=UTCOffset(name='UTC', - minutes=0)), - datetime.datetime(year=2050, month=5, day=11, - hour=15, minute=30, - tzinfo=UTCOffset(name='UTC', - minutes=0))), - #Make sure we truncate, not round - #https://bitbucket.org/nielsenb/aniso8601/issues/10/sub-microsecond-precision-in-durations-is - ({'start': (('1980', '03', '05', - None, None, None, 'date'), - ('01', '01', '00.0000001', - None, 'time'), 'datetime'), - 'end': (('1981', '04', '05', - None, None, None, 'date'), - ('14', '43', '59.9999997', None, 'time'), - 'datetime')}, - datetime.datetime(year=1980, month=3, day=5, - hour=1, minute=1), - datetime.datetime(year=1981, month=4, day=5, - hour=14, minute=43, second=59, - microsecond=999999))) - - for testtuple in testtuples: - result = PythonTimeBuilder.build_interval(**testtuple[0]) - self.assertEqual(result[0], testtuple[1]) - self.assertEqual(result[1], testtuple[2]) - - def test_build_repeating_interval(self): - args = {'Rnn': '3', 'interval': (('1981', '04', '05', - None, None, None, 'date'), - None, - (None, None, None, - '1', None, None, - None, 'duration'), - 'interval')} - results = list(PythonTimeBuilder.build_repeating_interval(**args)) - - self.assertEqual(results[0], datetime.date(year=1981, month=4, day=5)) - self.assertEqual(results[1], datetime.date(year=1981, month=4, day=6)) - self.assertEqual(results[2], datetime.date(year=1981, month=4, day=7)) - - args = {'Rnn': '11', 'interval': (None, - (('1980', '03', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - (None, None, None, - None, '1', '2', - None, 'duration'), - 'interval')} - results = list(PythonTimeBuilder.build_repeating_interval(**args)) - - for dateindex in compat.range(0, 11): - self.assertEqual(results[dateindex], - datetime.datetime(year=1980, month=3, day=5, - hour=1, minute=1) - - dateindex * datetime.timedelta(hours=1, - minutes=2)) - - args = {'Rnn': '2', 'interval': ((('1980', '03', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - (('1981', '04', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - None, - 'interval')} - results = list(PythonTimeBuilder.build_repeating_interval(**args)) - - self.assertEqual(results[0], - datetime.datetime(year=1980, month=3, day=5, - hour=1, minute=1)) - self.assertEqual(results[1], - datetime.datetime(year=1981, month=4, day=5, - hour=1, minute=1)) - - args = {'Rnn': '2', 'interval': ((('1980', '03', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - (('1981', '04', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - None, - 'interval')} - results = list(PythonTimeBuilder.build_repeating_interval(**args)) - - self.assertEqual(results[0], - datetime.datetime(year=1980, month=3, day=5, - hour=1, minute=1)) - self.assertEqual(results[1], - datetime.datetime(year=1981, month=4, day=5, - hour=1, minute=1)) - - args = {'R': True, 'interval': (None, - (('1980', '03', '05', - None, None, None, 'date'), - ('01', '01', '00', - None, 'time'), 'datetime'), - (None, None, None, - None, '1', '2', None, 'duration'), - 'interval')} - resultgenerator = PythonTimeBuilder.build_repeating_interval(**args) - - #Test the first 11 generated - for dateindex in compat.range(0, 11): - self.assertEqual(next(resultgenerator), - datetime.datetime(year=1980, month=3, day=5, - hour=1, minute=1) - - dateindex * datetime.timedelta(hours=1, - minutes=2)) - - def test_build_timezone(self): - testtuples = (({'Z': True, 'name': 'Z'}, - datetime.timedelta(hours=0), 'UTC'), - ({'negative': False, 'hh': '00', 'mm': '00', - 'name': '+00:00'}, - datetime.timedelta(hours=0), '+00:00'), - ({'negative': False, 'hh': '01', 'mm': '00', - 'name': '+01:00'}, - datetime.timedelta(hours=1), '+01:00'), - ({'negative': True, 'hh': '01', 'mm': '00', - 'name': '-01:00'}, - -datetime.timedelta(hours=1), '-01:00'), - ({'negative': False, 'hh': '00', 'mm': '12', - 'name': '+00:12'}, - datetime.timedelta(minutes=12), '+00:12'), - ({'negative': False, 'hh': '01', 'mm': '23', - 'name': '+01:23'}, - datetime.timedelta(hours=1, minutes=23), '+01:23'), - ({'negative': True, 'hh': '01', 'mm': '23', - 'name': '-01:23'}, - -datetime.timedelta(hours=1, minutes=23), '-01:23'), - ({'negative': False, 'hh': '00', - 'name': '+00'}, - datetime.timedelta(hours=0), '+00'), - ({'negative': False, 'hh': '01', - 'name': '+01'}, - datetime.timedelta(hours=1), '+01'), - ({'negative': True, 'hh': '01', - 'name': '-01'}, - -datetime.timedelta(hours=1), '-01'), - ({'negative': False, 'hh': '12', - 'name': '+12'}, - datetime.timedelta(hours=12), '+12'), - ({'negative': True, 'hh': '12', - 'name': '-12'}, - -datetime.timedelta(hours=12), '-12')) - - for testtuple in testtuples: - result = PythonTimeBuilder.build_timezone(**testtuple[0]) - self.assertEqual(result.utcoffset(None), testtuple[1]) - self.assertEqual(result.tzname(None), testtuple[2]) - - def test_build_week_date(self): - weekdate = PythonTimeBuilder._build_week_date(2009, 1) - self.assertEqual(weekdate, datetime.date(year=2008, month=12, day=29)) - - weekdate = PythonTimeBuilder._build_week_date(2009, 53, isoday=7) - self.assertEqual(weekdate, datetime.date(year=2010, month=1, day=3)) - - def test_build_ordinal_date(self): - ordinaldate = PythonTimeBuilder._build_ordinal_date(1981, 95) - self.assertEqual(ordinaldate, datetime.date(year=1981, month=4, day=5)) - - def test_build_ordinal_date_bounds_checking(self): - with self.assertRaises(DayOutOfBoundsError): - PythonTimeBuilder._build_ordinal_date(1234, 0) - - with self.assertRaises(DayOutOfBoundsError): - PythonTimeBuilder._build_ordinal_date(1234, 367) - - def test_iso_year_start(self): - yearstart = PythonTimeBuilder._iso_year_start(2004) - self.assertEqual(yearstart, datetime.date(year=2003, month=12, day=29)) - - yearstart = PythonTimeBuilder._iso_year_start(2010) - self.assertEqual(yearstart, datetime.date(year=2010, month=1, day=4)) - - yearstart = PythonTimeBuilder._iso_year_start(2009) - self.assertEqual(yearstart, datetime.date(year=2008, month=12, day=29)) - - def test_date_generator(self): - startdate = datetime.date(year=2018, month=8, day=29) - timedelta = datetime.timedelta(days=1) - iterations = 10 - - generator = PythonTimeBuilder._date_generator(startdate, - timedelta, - iterations) - - results = list(generator) - - for dateindex in compat.range(0, 10): - self.assertEqual(results[dateindex], - datetime.date(year=2018, month=8, day=29) - + dateindex * datetime.timedelta(days=1)) - - def test_date_generator_unbounded(self): - startdate = datetime.date(year=2018, month=8, day=29) - timedelta = datetime.timedelta(days=5) - - generator = PythonTimeBuilder._date_generator_unbounded(startdate, - timedelta) - - #Check the first 10 results - for dateindex in compat.range(0, 10): - self.assertEqual(next(generator), - datetime.date(year=2018, month=8, day=29) - + dateindex * datetime.timedelta(days=5)) - - def test_split_to_microseconds(self): - result = PythonTimeBuilder._split_to_microseconds('1.1', int(1e6), 'dummy') - - self.assertEqual(result, (1, 100000)) - self.assertIsInstance(result[0], int) - self.assertIsInstance(result[1], int) - - result = PythonTimeBuilder._split_to_microseconds('1.000001', int(1e6), 'dummy') - - self.assertEqual(result, (1, 1)) - self.assertIsInstance(result[0], int) - self.assertIsInstance(result[1], int) - - result = PythonTimeBuilder._split_to_microseconds('1.0000001', int(1e6), 'dummy') - - self.assertEqual(result, (1, 0)) - self.assertIsInstance(result[0], int) - self.assertIsInstance(result[1], int) - - def test_split_to_microseconds_exception(self): - with self.assertRaises(ISOFormatError) as e: - PythonTimeBuilder._split_to_microseconds('b.1', int(1e6), 'exception text') - - self.assertEqual(str(e.exception), 'exception text') - - with self.assertRaises(ISOFormatError) as e: - PythonTimeBuilder._split_to_microseconds('1.ad', int(1e6), 'exception text') - - self.assertEqual(str(e.exception), 'exception text') - - def test_distribute_microseconds(self): - self.assertEqual(PythonTimeBuilder._distribute_microseconds(1, (), ()), (1,)) - self.assertEqual(PythonTimeBuilder._distribute_microseconds(11, (0,), (10,)), (1, 1)) - self.assertEqual(PythonTimeBuilder._distribute_microseconds(211, (0, 0), (100, 10)), (2, 1, 1)) - - self.assertEqual(PythonTimeBuilder._distribute_microseconds(1, (), ()), (1,)) - self.assertEqual(PythonTimeBuilder._distribute_microseconds(11, (5,), (10,)), (6, 1)) - self.assertEqual(PythonTimeBuilder._distribute_microseconds(211, (10, 5), (100, 10)), (12, 6, 1)) diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/compat.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/compat.py deleted file mode 100644 index f824ba13..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/compat.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -import sys - -PY2 = sys.version_info[0] == 2 - -if PY2: - range = xrange -else: - range = range diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/date.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/date.py deleted file mode 100644 index cc0291ac..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/date.py +++ /dev/null @@ -1,209 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -from aniso8601.exceptions import ISOFormatError -from aniso8601.builders.python import PythonTimeBuilder -from aniso8601.resolution import DateResolution - -def get_date_resolution(isodatestr): - #Valid string formats are: - # - #Y[YYY] - #YYYY-MM-DD - #YYYYMMDD - #YYYY-MM - #YYYY-Www - #YYYYWww - #YYYY-Www-D - #YYYYWwwD - #YYYY-DDD - #YYYYDDD - if isodatestr.startswith('+') or isodatestr.startswith('-'): - raise NotImplementedError('ISO 8601 extended year representation ' - 'not supported.') - - if isodatestr[0].isdigit() is False or isodatestr[-1].isdigit() is False: - raise ISOFormatError('"{0}" is not a valid ISO 8601 date.' - .format(isodatestr)) - - if isodatestr.find('W') != -1: - #Handle ISO 8601 week date format - hyphens_present = 1 if isodatestr.find('-') != -1 else 0 - week_date_len = 7 + hyphens_present - weekday_date_len = 8 + 2 * hyphens_present - - if len(isodatestr) == week_date_len: - #YYYY-Www - #YYYYWww - return DateResolution.Week - elif len(isodatestr) == weekday_date_len: - #YYYY-Www-D - #YYYYWwwD - return DateResolution.Weekday - else: - raise ISOFormatError('"{0}" is not a valid ISO 8601 week date.' - .format(isodatestr)) - - #If the size of the string of 4 or less, - #assume its a truncated year representation - if len(isodatestr) <= 4: - return DateResolution.Year - - #An ISO string may be a calendar represntation if: - # 1) When split on a hyphen, the sizes of the parts are 4, 2, 2 or 4, 2 - # 2) There are no hyphens, and the length is 8 - datestrsplit = isodatestr.split('-') - - #Check case 1 - if len(datestrsplit) == 2: - if len(datestrsplit[0]) == 4 and len(datestrsplit[1]) == 2: - return DateResolution.Month - - if len(datestrsplit) == 3: - if (len(datestrsplit[0]) == 4 - and len(datestrsplit[1]) == 2 - and len(datestrsplit[2]) == 2): - return DateResolution.Day - - #Check case 2 - if len(isodatestr) == 8 and isodatestr.find('-') == -1: - return DateResolution.Day - - #An ISO string may be a ordinal date representation if: - # 1) When split on a hyphen, the sizes of the parts are 4, 3 - # 2) There are no hyphens, and the length is 7 - - #Check case 1 - if len(datestrsplit) == 2: - if len(datestrsplit[0]) == 4 and len(datestrsplit[1]) == 3: - return DateResolution.Ordinal - - #Check case 2 - if len(isodatestr) == 7 and isodatestr.find('-') == -1: - return DateResolution.Ordinal - - #None of the date representations match - raise ISOFormatError('"{0}" is not an ISO 8601 date, perhaps it ' - 'represents a time or datetime.'.format(isodatestr)) - -def parse_date(isodatestr, builder=PythonTimeBuilder): - #Given a string in any ISO 8601 date format, return a datetime.date - #object that corresponds to the given date. Valid string formats are: - # - #Y[YYY] - #YYYY-MM-DD - #YYYYMMDD - #YYYY-MM - #YYYY-Www - #YYYYWww - #YYYY-Www-D - #YYYYWwwD - #YYYY-DDD - #YYYYDDD - # - #Note that the ISO 8601 date format of ±YYYYY is expressly not supported - return _RESOLUTION_MAP[get_date_resolution(isodatestr)](isodatestr, - builder) - -def _parse_year(yearstr, builder): - #yearstr is of the format Y[YYY] - return builder.build_date(YYYY=yearstr) - -def _parse_calendar_day(datestr, builder): - #datestr is of the format YYYY-MM-DD or YYYYMMDD - if len(datestr) == 10: - #YYYY-MM-DD - yearstr = datestr[0:4] - monthstr = datestr[5:7] - daystr = datestr[8:] - elif len(datestr) == 8: - #YYYYMMDD - yearstr = datestr[0:4] - monthstr = datestr[4:6] - daystr = datestr[6:] - else: - raise ISOFormatError('"{0}" is not a valid ISO 8601 calendar day.' - .format(datestr)) - - return builder.build_date(YYYY=yearstr, MM=monthstr, DD=daystr) - -def _parse_calendar_month(datestr, builder): - #datestr is of the format YYYY-MM - if len(datestr) != 7: - raise ISOFormatError('"{0}" is not a valid ISO 8601 calendar month.' - .format(datestr)) - - yearstr = datestr[0:4] - monthstr = datestr[5:] - - return builder.build_date(YYYY=yearstr, MM=monthstr) - -def _parse_week_day(datestr, builder): - #datestr is of the format YYYY-Www-D, YYYYWwwD - # - #W is the week number prefix, ww is the week number, between 1 and 53 - #0 is not a valid week number, which differs from the Python implementation - # - #D is the weekday number, between 1 and 7, which differs from the Python - #implementation which is between 0 and 6 - - yearstr = datestr[0:4] - - #Week number will be the two characters after the W - windex = datestr.find('W') - weekstr = datestr[windex + 1:windex + 3] - - if datestr.find('-') != -1 and len(datestr) == 10: - #YYYY-Www-D - daystr = datestr[9:10] - elif len(datestr) == 8: - #YYYYWwwD - daystr = datestr[7:8] - else: - raise ISOFormatError('"{0}" is not a valid ISO 8601 week date.' - .format(datestr)) - - return builder.build_date(YYYY=yearstr, Www=weekstr, D=daystr) - -def _parse_week(datestr, builder): - #datestr is of the format YYYY-Www, YYYYWww - # - #W is the week number prefix, ww is the week number, between 1 and 53 - #0 is not a valid week number, which differs from the Python implementation - - yearstr = datestr[0:4] - - #Week number will be the two characters after the W - windex = datestr.find('W') - weekstr = datestr[windex + 1:windex + 3] - - return builder.build_date(YYYY=yearstr, Www=weekstr) - -def _parse_ordinal_date(datestr, builder): - #datestr is of the format YYYY-DDD or YYYYDDD - #DDD can be from 1 - 36[5,6], this matches Python's definition - - yearstr = datestr[0:4] - - if datestr.find('-') != -1: - #YYYY-DDD - daystr = datestr[(datestr.find('-') + 1):] - else: - #YYYYDDD - daystr = datestr[4:] - - return builder.build_date(YYYY=yearstr, DDD=daystr) - -_RESOLUTION_MAP = { - DateResolution.Day: _parse_calendar_day, - DateResolution.Ordinal: _parse_ordinal_date, - DateResolution.Month: _parse_calendar_month, - DateResolution.Week: _parse_week, - DateResolution.Weekday: _parse_week_day, - DateResolution.Year: _parse_year -} diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/decimalfraction.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/decimalfraction.py deleted file mode 100644 index 528284d4..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/decimalfraction.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -def find_separator(value): - """Returns the decimal separator index if found else -1.""" - return normalize(value).find('.') - -def normalize(value): - """Returns the string that the decimal separators are normalized.""" - return value.replace(',', '.') diff --git a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/duration.py b/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/duration.py deleted file mode 100644 index 7012ca9c..00000000 --- a/backend/OpenSourceProject/backend/env/lib/python3.6/site-packages/aniso8601/duration.py +++ /dev/null @@ -1,281 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2019, Brandon Nielsen -# All rights reserved. -# -# This software may be modified and distributed under the terms -# of the BSD license. See the LICENSE file for details. - -from aniso8601 import compat -from aniso8601.builders import TupleBuilder -from aniso8601.builders.python import PythonTimeBuilder -from aniso8601.date import parse_date -from aniso8601.decimalfraction import find_separator, normalize -from aniso8601.exceptions import ISOFormatError, NegativeDurationError -from aniso8601.time import parse_time - -def parse_duration(isodurationstr, builder=PythonTimeBuilder): - #Given a string representing an ISO 8601 duration, return a - #a duration built by the given builder. Valid formats are: - # - #PnYnMnDTnHnMnS (or any reduced precision equivalent) - #PT