KWAFRWDXIDNGRJRDC6WIT2QUGAYOBCPEM5UTTZBY7ES5HBA6EKYAC 6LWK5RUG2KZTPZ2EJGRHEJC3FMHNJIRDFG323W2ZO7EKFQQFINQAC YZZGUYEMBTRMFASNHNB7JG7POQ2HES75QZ7E2BJAEXL4RW5T3PYAC SVZFNBSJ2QJH2ONX3RXOUZCQ3KI2JFEF4JC33EXAQ3BLD2WS4VKAC RNHBTG23XBZEWM6W6ZBQGLDUMGH74NKUORUEATD2Y4AQY4QXXCVAC CSVKQAZKZCZM5X6WT23IYD62XNLH5LF6DD3FO47QLJR7JI775KNAC NQQINJY7GYQBCMVMSVVNOHHDZRSXDB4H7QYK2RHC7SD66L7RODWQC UEMLM7XK4TAKNYTPVOIVUIVHAGM3WQ43UZS5RXXX737HMC56OVSQC TR5I4JERWQG64Z2IEB4Q2BXLDNUEG6FFZVBQM4VU46OXKE75TBBQC QHP6Q5AHX4IB67KPRSSAMCLGQR2ACXYJZGTT5RC27DXZBWABG5GAC WA74Q2QVFYL5CA4ZZKAKQVSHCCM6IGFPH77WGJ2E67W37QM76SWQC W3HTM6XGFE34AW5PWARJQGV3AJWDPAUCOLCNBT3GLAI3D3LKGIBQC U2P5JVQUPDUSY2CJYAV6TRUT2MXOEMVZOTHRN2VF4PHHQYR7WKEQC PVDK3SJ75IKLO5M4WH6Y5EOKP4I5PSQBUKJWA5K25HRO7HI536EQC 2ES4JAXQIYX57NDNWE2NI3EABHFIRSIIQROTWW6U6AWSEUYQVYVAC 2DEG4NWOKXYIKLFJ6RRWXVEPTQ7RJEBMMZT2ILCCID6ZGULMLC4QC WQADGK6X25XKRKOQFDUXSAPHEE2WSEH6CBFHLUB23X657674BNLQC '''We will have one functional test to start with. It should cover the following1- workon a special directory for testing called testing inside data folder.2- create a couple of new projects3- start working on one of them4- wait a few know seconds then stop working on it.5- check the functionalities and the data.'''
from datetime import datetimefrom ..engine import db_managerdef last_recorded_activity():logs = db_manager.logs()logs = sorted(logs, key=lambda log: log["start_time"])return logs[-1]
"""This file provides the following functionality- Data analysis for day vs backmarket work start time"""from dash_app.engine import db_managerfrom datetime import datedef get_bm_start_times_graph_data():logs = db_manager.logs()logs = [log for log in logs if log["project"] == "backmarket"] # Only backmarket projectsfor log in logs:log.update({"day": date.fromisoformat(log["date"]), "start_time": log["start_time"].time().hour})# logs = [log for log in logs if log["day"].month == 10]logs = [log for log in logs if 6 <= log["start_time"] <= 15]logs_as_dict = {}for log in logs:if log["day"] not in logs_as_dict:logs_as_dict[log["day"]] = log["start_time"]continueif log["start_time"] < logs_as_dict[log["day"]]:logs_as_dict[log["day"]] = log["start_time"]return list(logs_as_dict.keys()), list(logs_as_dict.values())
import osfrom pymongo import MongoClientclass DBManager:def __init__(self):self.connection = MongoClient(os.getenv("MONGODB_URI"))if os.getenv("MONGODB_URI"):# This covers the case where DB name is provided in the URIself.db = self.connection.get_database()else:self.db = self.connection.ptcself.projects_collection = self.db['projects']def projects(self):return self.projects_collection.find()@staticmethoddef serialize_log(log):start = log["start"]hour, minute, second = start.split(":")if len(hour) == 1:hour = "0" + hourif len(minute) == 1:minute = "0" + minuteif len(second) == 1:second = "0" + secondlog["start"] = f"{hour}:{minute}:{second}"from datetime import datetime, timedeltastart_time = datetime.fromisoformat("{}T{}".format(log["date"], log.pop("start")))log["start_time"] = start_timeif log["end"] == "Not yet.":log["end_time"] = Nonereturnhour, minute, second = log["end"].split(":")if len(hour) == 1:hour = "0" + hourif len(minute) == 1:minute = "0" + minuteif len(second) == 1:second = "0" + secondlog["end"] = f"{hour}:{minute}:{second}"end_time = datetime.fromisoformat("{}T{}".format(log["date"], log.pop("end")))if end_time < start_time:end_time += timedelta(days=1)log["end_time"] = end_timedef logs(self):logs = []for project in self.projects():for log in project["logs"]:log["project"] = project["name"]logs.extend(project["logs"])for log in logs:self.serialize_log(log)return logsdb_manager = DBManager()
import osimport sysimport dashimport dash_core_components as dccimport dash_html_components as htmlimport plotly.graph_objects as gosys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']app = dash.Dash(__name__, external_stylesheets=external_stylesheets)from dash_app.knowledge_base.last_activity import last_recorded_activityfrom dash_app.knowledge_base.backmarket_work_analysis import get_bm_start_times_graph_datalast_activity = last_recorded_activity()bm_start_time_graph = get_bm_start_times_graph_data()colors = {'background': '#111111','text': '#7FDBFF'}app.layout = html.Div(style={'backgroundColor': colors['background']}, children=[html.H1(children='Hello Dash',style={'textAlign': 'center','color': colors['text']}),html.Div(children='Dash: A web application framework for Python.', style={'textAlign': 'center','color': colors['text']}),html.Div(f"""Currently working on {last_activity["project"]}""", style={'textAlign': 'center', 'color': colors['text']}),html.Div(f"""It started on {last_activity["start_time"]}""", style={'textAlign': 'center', 'color': colors['text']}),html.Div(f"""end_date is {last_activity["end_time"]}""", style={'textAlign': 'center', 'color': colors['text']}),dcc.Graph(id='backmarket-analysis-1',figure={'data': [{'x': bm_start_time_graph[0], 'y': bm_start_time_graph[1]}]})])if __name__ == '__main__':app.run_server(debug=True)
import osfrom pymongo import MongoClientfrom app.fms import FileManagerclass ProjectsMongoSynchronizer:def __init__(self):self.connection = MongoClient(os.getenv("MONGODB_URI"))if os.getenv("MONGODB_URI"):# This covers the case where DB name is provided in the URIself.db = self.connection.get_database()else:self.db = self.connection.ptc# self.users_collection = self.db['User']self.projects_collection = self.db['projects']def synchronize(self):projects = FileManager.read('projects')projects = [project for project in projects if not projects[project].get('archived')]for project in projects:self.sync_project_data(project)def sync_project_data(self, project_name):updated_logs = FileManager.read('logs/{}'.format(project_name))if not self.projects_collection.count_documents({"name": project_name}):print(f"Adding new project.. {project_name}")return self.projects_collection.insert({"name": project_name,"logs": updated_logs})print(f"Updating existing project.. {project_name}")return self.projects_collection.update({"name": project_name}, {"logs": updated_logs})
def read(cls, fname='projects'):with open(BASE_DIR + '/data/' + fname + '.json', 'r+') as p_file:projects = json.load(p_file)
@staticmethoddef read(file_name='projects'):with open(BASE_DIR + '/data/' + file_name + '.json', 'r+') as projects_file:projects = json.load(projects_file)
def update(projects, fname='projects'):with open(BASE_DIR + '/data/' + fname + '.json', 'r+') as p_file:p_file.seek(0)p_file.truncate()p_file.write(simplejson.dumps(projects, indent=4))def delete(name):pass
manager = ProjectsManager()
@staticmethoddef update(projects, file_name='projects'):with open(BASE_DIR + '/data/' + file_name + '.json', 'r+') as projects_file:projects_file.seek(0)projects_file.truncate()projects_file.write(simplejson.dumps(projects, indent=4))
"sha256:47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7","sha256:993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033"
"sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3","sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"
},"click": {"hashes": ["sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13","sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"],"version": "==7.0"},"dash": {"hashes": ["sha256:678884297afaae08a638cf1bda61c8f89f7cf2c8fd15f36ea29c43559684f4fa"],"index": "pypi","version": "==1.9.0"},"dash-core-components": {"hashes": ["sha256:6ed00e421e4ff5ebe1bb91b0add168ef89cf2afbdff1e0cef91633dd338569c8"],"version": "==1.8.0"},"dash-daq": {"hashes": ["sha256:8370e6624c2b2dd8c53ed8af9a5a376d4b4a8bb4eb4899b57ae8e55fdb8bad8f"],"index": "pypi","version": "==0.3.3"},"dash-html-components": {"hashes": ["sha256:8992097a044f5add21f86ccbe0caef8c499394a04d5f2b6cc4458a42f37cca98"],"version": "==1.0.2"},"dash-renderer": {"hashes": ["sha256:74aab93b6332290d9bff5f81060a5c4cbf0c393f8ccff85b2edb1ae976bdd5f0"],"version": "==1.2.4"},"dash-table": {"hashes": ["sha256:d30cd8f2212134a576c131f00d403fc6b5ef54579106178fc8d6309500539f07"],"version": "==4.6.0"
"sha256:0a66b33458fab9c1e400a9be1a68056abda178eb02a8cb4b8f795e9df20b053b","sha256:3981f609c0358a9fcdb25b0e7fab3d9e23019356fb429c635ce4133135ae1bc4"
"sha256:18157af2a4fc3feedf2b5dcc6196f448639acf01c68bc33d4d5a04c3ef87f494","sha256:24adcd2b29a8ffa9d552dc79638cd21736a3fb04eda7d102c6cebafdaadb88ad","sha256:54f2cb4b687035b2a03206dbfc538055cc48b59a953187b0458aa1b574d47b53","sha256:59d1e8c993b9a37ea06df9d72cf907a46cc8063b30717cdac2f34d1658b6f936","sha256:733033ec80c896e30a43ab3e776856096836787197a44eb21022320a61311983","sha256:74cf1d18207381c665b9e6292d65100ce146d958707793174b03869dc6e614f4","sha256:95bf6ce986c1119aef12c9b348f4dee9c6dcc58391bdd0bc2b0bf353c2b15986","sha256:9712975adcf8c6e12876239085ad757b8fdeba223d46d23daef82b47658f83a9","sha256:a5ebb22a04c9cc65081938ee7651b4e3b4d2a28522ea8ec04c7bdd2b3e9e8cd8","sha256:aa184895d1ad4573fbfaaf803563d02f019ebdf4790e41cc568a330607eae439","sha256:e3782b7b92fefd46a6ad1fd8fe63fe6c6f1b7740a95ca56957f48d1aee34b357","sha256:e9efa0791b5d9f9dd9689015ea6bce0a27fcd5ecbcd30e6d940bffa4f7f03389","sha256:eea593cf466b9c126ce667f6d30503624ef24459f118c75594a69353b6c3d5fc","sha256:f93351459f110b4c1ee28556aef9a791832df6f910bea7b3f616109d534df06b"
"sha256:dd945e3ae5d3d0325ad9982e0d5667f79ca121d0bb6f35274dc84371bbb79dd5","sha256:f7ce6c06250f694976c3cd4944e3b607b0810b93383839e5b67c7199ce2f0d3d"
"sha256:60829eb19e21269f0ecd30007d19fa223ff6d6c02637036ddcd51858885db945","sha256:c9997d4e7ca260e2e681db6a54f46a9d82c82f85fe05a0dcad8afd1ae713d003"
},"itsdangerous": {"hashes": ["sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19","sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"],"version": "==1.1.0"},"jinja2": {"hashes": ["sha256:93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250","sha256:b0eaf100007721b5c16c1fc1eecb87409464edc10469ddc9a22a27a99123be49"],"version": "==2.11.1"
"markupsafe": {"hashes": ["sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473","sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161","sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235","sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5","sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42","sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff","sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b","sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1","sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e","sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183","sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66","sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b","sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1","sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15","sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1","sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e","sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b","sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905","sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735","sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d","sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e","sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d","sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c","sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21","sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2","sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5","sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b","sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6","sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f","sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f","sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2","sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7","sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"],"version": "==1.1.1"},"numpy": {"hashes": ["sha256:1786a08236f2c92ae0e70423c45e1e62788ed33028f94ca99c4df03f5be6b3c6","sha256:17aa7a81fe7599a10f2b7d95856dc5cf84a4eefa45bc96123cbbc3ebc568994e","sha256:20b26aaa5b3da029942cdcce719b363dbe58696ad182aff0e5dcb1687ec946dc","sha256:2d75908ab3ced4223ccba595b48e538afa5ecc37405923d1fea6906d7c3a50bc","sha256:39d2c685af15d3ce682c99ce5925cc66efc824652e10990d2462dfe9b8918c6a","sha256:56bc8ded6fcd9adea90f65377438f9fea8c05fcf7c5ba766bef258d0da1554aa","sha256:590355aeade1a2eaba17617c19edccb7db8d78760175256e3cf94590a1a964f3","sha256:70a840a26f4e61defa7bdf811d7498a284ced303dfbc35acb7be12a39b2aa121","sha256:77c3bfe65d8560487052ad55c6998a04b654c2fbc36d546aef2b2e511e760971","sha256:9537eecf179f566fd1c160a2e912ca0b8e02d773af0a7a1120ad4f7507cd0d26","sha256:9acdf933c1fd263c513a2df3dceecea6f3ff4419d80bf238510976bf9bcb26cd","sha256:ae0975f42ab1f28364dcda3dde3cf6c1ddab3e1d4b2909da0cb0191fa9ca0480","sha256:b3af02ecc999c8003e538e60c89a2b37646b39b688d4e44d7373e11c2debabec","sha256:b6ff59cee96b454516e47e7721098e6ceebef435e3e21ac2d6c3b8b02628eb77","sha256:b765ed3930b92812aa698a455847141869ef755a87e099fddd4ccf9d81fffb57","sha256:c98c5ffd7d41611407a1103ae11c8b634ad6a43606eca3e2a5a269e5d6e8eb07","sha256:cf7eb6b1025d3e169989416b1adcd676624c2dbed9e3bcb7137f51bfc8cc2572","sha256:d92350c22b150c1cae7ebb0ee8b5670cc84848f6359cf6b5d8f86617098a9b73","sha256:e422c3152921cece8b6a2fb6b0b4d73b6579bd20ae075e7d15143e711f3ca2ca","sha256:e840f552a509e3380b0f0ec977e8124d0dc34dc0e68289ca28f4d7c1d0d79474","sha256:f3d0a94ad151870978fb93538e95411c83899c9dc63e6fb65542f769568ecfa5"],"index": "pypi","version": "==1.18.1"},
"sha256:da2420fe13a9452d8ae97a0e478adde1dee153b11ba832a95b223a2ba01c10f7","sha256:da6b43a8c9ae93bc80e2739efb38cc776ba74a886e3e9318d65fe81a8b8a2c6e"
"sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d","sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"
"sha256:642afdabb681d39f5948fd5477764d94faf17ce40e5691e9998b52815fbb4e71","sha256:d14fcb29dabecba3d7b360bf72327c26c385248a5d603cf6be5f566ce999b261"
"sha256:01b4e10027aef5bb9ecefbc26f5df3368ce34aef81df43850f701e716e3fe16d","sha256:0fc5aa1b1acf7f61af46fe0414e6a4d0c234b339db4c03a63da48599acf1cbfc","sha256:1396eb7151e0558b1f817e4b9d7697d5599e5c40d839a9f7270bd90af994ad82","sha256:18e84a3ec5e73adcb4187b8e5541b2ad61d716026ed9863267e650300d8bea33","sha256:19adf2848b80cb349b9891cc854581bbf24c338be9a3260e73159bdeb2264464","sha256:20ee0475aa2ba437b0a14806f125d696f90a8433d820fb558fdd6f052acde103","sha256:26798795097bdeb571f13942beef7e0b60125397811c75b7aa9214d89880dd1d","sha256:26e707a4eb851ec27bb969b5f1413b9b2eac28fe34271fa72329100317ea7c73","sha256:2a3c7ad01553b27ec553688a1e6445e7f40355fb37d925c11fcb50b504e367f8","sha256:2f07b27dbf303ea53f4147a7922ce91a26b34a0011131471d8aaf73151fdee9a","sha256:316f0cf543013d0c085e15a2c8abe0db70f93c9722c0f99b6f3318ff69477d70","sha256:31d11a600eea0c60de22c8bdcb58cda63c762891facdcb74248c36713240987f","sha256:334ef3ffd0df87ea83a0054454336159f8ad9c1b389e19c0032d9cb8410660e6","sha256:358ba4693c01022d507b96a980ded855a32dbdccc3c9331d0667be5e967f30ed","sha256:3a6568bc53103df260f5c7d2da36dffc5202b9a36c85540bba1836a774943794","sha256:444bf2f44264578c4085bb04493bfed0e5c1b4fe7c2704504d769f955cc78fe4","sha256:47a00b22c52ee59dffc2aad02d0bbfb20c26ec5b8de8900492bf13ad6901cf35","sha256:4c067db43b331fc709080d441cb2e157114fec60749667d12186cc3fc8e7a951","sha256:4c092310f804a5d45a1bcaa4191d6d016c457b6ed3982a622c35f729ff1c7f6b","sha256:53b711b33134e292ef8499835a3df10909c58df53a2a0308f598c432e9a62892","sha256:568d6bee70652d8a5af1cd3eec48b4ca1696fb1773b80719ebbd2925b72cb8f6","sha256:56fa55032782b7f8e0bf6956420d11e2d4e9860598dfe9c504edec53af0fc372","sha256:5a2c492680c61b440272341294172fa3b3751797b1ab983533a770e4fb0a67ac","sha256:61235cc39b5b2f593086d1d38f3fc130b2d125bd8fc8621d35bc5b6bdeb92bd2","sha256:619ac9aaf681434b4d4718d1b31aa2f0fce64f2b3f8435688fcbdc0c818b6c54","sha256:6238ac1f483494011abde5286282afdfacd8926659e222ba9b74c67008d3a58c","sha256:63752a72ca4d4e1386278bd43d14232f51718b409e7ac86bcf8810826b531113","sha256:6fdc5ccb43864065d40dd838437952e9e3da9821b7eac605ba46ada77f846bdf","sha256:7abc3a6825a346fa4621a6f63e3b662bbb9e0f6ffc32d30a459d695f20fb1a8b","sha256:7aef381bb9ae8a3821abd7f9d4d93978dbd99072b48522e181baeffcd95b56ae","sha256:80df3caf251fe61a3f0c9614adc6e2bfcffd1cd3345280896766712fb4b4d6d7","sha256:95f970f34b59987dee6f360d2e7d30e181d58957b85dff929eee4423739bd151","sha256:993257f6ca3cde55332af1f62af3e04ca89ce63c08b56a387cdd46136c72f2fa","sha256:9c0a57390549affc2b5dda24a38de03a5c7cbc58750cd161ff5d106c3c6eec80","sha256:a0794e987d55d2f719cc95fcf980fc62d12b80e287e6a761c4be14c60bd9fecc","sha256:a3b98121e68bf370dd8ea09df67e916f93ea95b52fc010902312168c4d1aff5d","sha256:a60756d55f0887023b3899e6c2923ba5f0042fb11b1d17810b4e07395404f33e","sha256:a676bd2fbc2309092b9bbb0083d35718b5420af3a42135ebb1e4c3633f56604d","sha256:a732838c78554c1257ff2492f5c8c4c7312d0aecd7f732149e255f3749edd5ee","sha256:ae65d65fde4135ef423a2608587c9ef585a3551fc2e4e431e7c7e527047581be","sha256:b070a4f064a9edb70f921bfdc270725cff7a78c22036dd37a767c51393fb956f","sha256:b6da85949aa91e9f8c521681344bd2e163de894a5492337fba8b05c409225a4f","sha256:bbf47110765b2a999803a7de457567389253f8670f7daafb98e059c899ce9764","sha256:c06b3f998d2d7160db58db69adfb807d2ec307e883e2f17f6b87a1ef6c723f11","sha256:c318fb70542be16d3d4063cde6010b1e4d328993a793529c15a619251f517c39","sha256:c4aef42e5fa4c9d5a99f751fb79caa880dac7eaf8a65121549318b984676a1b7","sha256:c9ca545e93a9c2a3bdaa2e6e21f7a43267ff0813e8055adf2b591c13164c0c57","sha256:da2c3220eb55c4239dd8b982e213da0b79023cac59fe54ca09365f2bc7e4ad32","sha256:dd8055da300535eefd446b30995c0813cc4394873c9509323762a93e97c04c03","sha256:e2b46e092ea54b732d98c476720386ff2ccd126de1e52076b470b117bff7e409","sha256:e334c4f39a2863a239d38b5829e442a87f241a92da9941861ee6ec5d6380b7fe","sha256:e5c54f04ca42bbb5153aec5d4f2e3d9f81e316945220ac318abd4083308143f5","sha256:f96333f9d2517c752c20a35ff95de5fc2763ac8cdb1653df0f6f45d281620606"
"sha256:76e4b03d700a641fd7761d3cd4fdbbdcd787eade1ebfac43f877016328334f78","sha256:a295f03ff20341491bfe4717a39cd0a8cc9afad619ba44b77e86b0ab8a2b8282"
"sha256:0dcfb335921b88a850d461dc255ff4708294943322bd55de6cfd68972490ca1f","sha256:b205cffd05ebfd0a468db74f0eedbff8df1a7bfc47521516ade4692991bb0833"
"sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e","sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"
"sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4","sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"],"version": "==2.22.0"},"retrying": {"hashes": ["sha256:08c039560a6da2fe4f2c426d0766e284d3b736e355f8dd24b37367b0bb41973b"
"sha256:067a7177ddfa32e1483ba5169ebea1bc2ea27f224853211ca669325648ca5642","sha256:2fc546e6af49fb45b93bbe878dea4c48edc34083729c0abd09981fe55bdf7f91","sha256:354fa32b02885e6dae925f1b5bbf842c333c1e11ea5453ddd67309dc31fdb40a","sha256:37e685986cf6f8144607f90340cff72d36acf654f3653a6c47b84c5c38d00df7","sha256:3af610ee72efbe644e19d5eaad575c73fb83026192114e5f6719f4901097fce2","sha256:3b919fc9cf508f13b929a9b274c40786036b31ad28657819b3b9ba44ba651f50","sha256:3dd289368bbd064974d9a5961101f080e939cbe051e6689a193c99fb6e9ac89b","sha256:6c3258ffff58712818a233b9737fe4be943d306c40cf63d14ddc82ba563f483a","sha256:75e3f0b12c28945c08f54350d91e624f8dd580ab74fd4f1bbea54bc6b0165610","sha256:b1f329139ba647a9548aa05fb95d046b4a677643070dc2afc05fa2e975d09ca5","sha256:ee9625fc8ee164902dfbb0ff932b26df112da9f871c32f0f9c1bcf20c350fe2a","sha256:fb2530b53c28f0d4d84990e945c2ebb470edb469d63e389bf02ff409012fe7c5"
"sha256:0fe3994207485efb63d8f10a833ff31236ed27e3b23dadd0bf51c9900313f8f2","sha256:17163e643dbf125bb552de17c826b0161c68c970335d270e174363d19e7ea882","sha256:1d1e929cdd15151f3c0b2efe953b3281b2fd5ad5f234f77aca725f28486466f6","sha256:1ea59f570b9d4916ae5540a9181f9c978e16863383738b69a70363bc5e63c4cb","sha256:22a7acb81968a7c64eba7526af2cf566e7e2ded1cb5c83f0906b17ff1540f866","sha256:2b4b2b738b3b99819a17feaf118265d0753d5536049ea570b3c43b51c4701e81","sha256:4cf91aab51b02b3327c9d51897960c554f00891f9b31abd8a2f50fd4a0071ce8","sha256:7cce4bac7e0d66f3a080b80212c2238e063211fe327f98d764c6acbc214497fc","sha256:8027bd5f1e633eb61b8239994e6fc3aba0346e76294beac22a892eb8faa92ba1","sha256:86afc5b5cbd42d706efd33f280fec7bd7e2772ef54e3f34cf6b30777cd19a614","sha256:87d349517b572964350cc1adc5a31b493bbcee284505e81637d0174b2758ba17","sha256:926bcbef9eb60e798eabda9cd0bbcb0fca70d2779aa0aa56845749d973eb7ad5","sha256:9a126c3a91df5b1403e965ba63b304a50b53d8efc908a8c71545ed72535374a3","sha256:daaf4d11db982791be74b23ff4729af2c7da79316de0bebf880fa2d60bcc8c5a","sha256:fc046afda0ed8f5295212068266c92991ab1f4a50c6a7144b69364bdee4a0159","sha256:fc9051d249dd5512e541f20330a74592f7a65b2d62e18122ca89bf71f94db748"
"sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c","sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
"sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a","sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
"sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39","sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"
"sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc","sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc"
"sha256:2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82","sha256:c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c"
"sha256:54c38050039232e1db4ad7375cfce6748d7b41c29e95a081c8a6d2c30364a2ce","sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d"
"sha256:6a9496209b76463f1dec126ab928919aaf1f55b38beb9219af3fe202f6bbdd12","sha256:f69932b1e806b38a7818d9a1e918e5821b685715040b48e59c657b3c7961b742"
"sha256:d9459e7237e2e5858738ff9c3e26504b79899b58a6d49e574d352493d80684c6","sha256:f6689108b1734501d3b59c84427259fd5ac5141afe2e846cfa8598eb811886c9"
"sha256:571702b5bd167911fe9036e5039ba67f820d6502832285cde8c881ab2b2149fd","sha256:c8481b5e59d34a5c7c42e98f6625e633f6ef59353abea6437472c7ec2093f191"
"sha256:b4f4052551025c6b0b0b193b29a6ff7bdb74c52450631206c262aef9f7159ad2","sha256:d5c871cb9360b414f981e7072c52c33258d598305280fef91c6cae34739d65d5"
"sha256:35704a43a3c113cce4de228ddb39aab374b8004f4f2407d070b6a2ca784ce8a2","sha256:895c63e93b94ac1e1690f5fdd40b65f07c8171e3e53cbd7793b5b96c0e0a7f24"
"sha256:56b2105a80e9c4df49de85e125feb6be69f49920e121406f15e7acde6c9dfc57","sha256:951af01f61e6dccd04159042a0706a31ad437864ec6e25d0d7a96a9fbb9b0095"
"sha256:2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba","sha256:3fbd41d4caf27fa4a377bfd16fef87271099463e6fa73e92a52f92dfee5d425b"
"sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937","sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"
"sha256:c1d6aff5252ab2ef391c2fe498ed8c088066f66bc64a8d5c095bbf795d9fec34","sha256:d4c47f79b635a0e70b84fdb97ebd9a274203706b1ee5ed44c10da62755cf3ec9","sha256:fd17048d8335c1e6d5ee403c3569953ba3eb8555d710bfc548faf0712666ea39"
"sha256:a402e9bf468b63314e37460b68ba68243d55b2f8c4d0192f85a019af3945050e","sha256:c93e53af97f630f12f5f62a3274e79527936ed466f038953dfa379d4941f651a"
"sha256:5ffada19f6203563680669ee7f53b64dabbeb100eb51b61996085e99c03b284a","sha256:e8218dd399a61674745138520d0d4cf2621d7e032439341bc3f647bff125818d"
"sha256:2a3fe295e54a20164a9df49c75fa58526d3be48e14aceba6d6b1e8ac0bfd6f1b","sha256:98c8aa5a9f778fcd1026a17361ddaf7330d1b7c62ae97c3bb0ae73e0b9b6b0fe"],"version": "==2.5.2"},"pyrepl": {"hashes": ["sha256:292570f34b5502e871bbb966d639474f2b57fbfcd3373c2d6a2f3d56e681a775"
"sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c","sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
"sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a","sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
"sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835","sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9"
"sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44","sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7"
"sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e","sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"
"sha256:8fd29383f539be45b20bd4df0dc29c20ba48654a41e661925e612311e9f3c603","sha256:f28b3e8a6483e5d49e7f8949ac1a78314e740333ae305b4ba5defd3e74fb37a8"