Best Python code snippet using playwright-python
drawing_object.py
Source:drawing_object.py
...249 self._relative_vertical_position = relative_vertical_position250 else:251 self._relative_vertical_position = allowed_values[int(relative_vertical_position) if six.PY3 else long(relative_vertical_position)]252 @property253 def render_links(self):254 """Gets the render_links of this DrawingObject. # noqa: E501255 Gets or sets the list of links that originate from this DrawingObjectDto. # noqa: E501256 :return: The render_links of this DrawingObject. # noqa: E501257 :rtype: list[WordsApiLink]258 """259 return self._render_links260 @render_links.setter261 def render_links(self, render_links):262 """Sets the render_links of this DrawingObject.263 Gets or sets the list of links that originate from this DrawingObjectDto. # noqa: E501264 :param render_links: The render_links of this DrawingObject. # noqa: E501265 :type: list[WordsApiLink]266 """267 self._render_links = render_links268 @property269 def top(self):270 """Gets the top of this DrawingObject. # noqa: E501271 Gets or sets the distance in points from the origin to the top side of the image. # noqa: E501272 :return: The top of this DrawingObject. # noqa: E501273 :rtype: float274 """275 return self._top...
Model.py
Source:Model.py
1# train test split2import sys3import pandas as pd4from sklearn import svm5from plotly import graph_objs as go6from sklearn.ensemble import RandomForestClassifier7from sklearn.metrics import accuracy_score,precision_recall_fscore_support,multilabel_confusion_matrix,roc_curve, roc_auc_score8from sklearn.ensemble import AdaBoostClassifier9from sklearn.linear_model import LogisticRegression10from sklearn.model_selection import train_test_split11from sklearn.pipeline import Pipeline12from sklearn.preprocessing import Normalizer13from FinalBDA696.scripts import Correlation_Brute_Force_Plots as Corr_Brut_Plots, Resp_Pred_Plots as PredRespPlots14def main(input_df_filename,response):15 input_df = pd.read_csv(input_df_filename)16 input_df = input_df.dropna(axis=0, how="any")17 print(input_df.columns)18 #Upon Iteration, we found that HT_Streak and AT_Streak were nostradamus variables and were causing the model19 #performance to skew into unrealistic numbers. So we will drop them from the dataset.20 input_df = input_df.drop(['HT_Streak','AT_Streak'],axis=1)21 X = input_df.drop(['Home_team_wins'], axis=1)22 y = input_df["Home_team_wins"]23 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.15, random_state=1)24 name = []25 Accuracy_fin = []26 Precision_fin = []27 Recall_fin = []28 F_Score = []29 AUC = []30 AUC_Plot = []31 # Making a Pipeline for Normalizing the data and fitting RandomForestClassifier32 pipeline = Pipeline(33 [("Normalize", Normalizer()), ("rf", RandomForestClassifier(random_state=1))]34 )35 pipeline.fit(X_train, y_train)36 predict = pipeline.predict(X_test)37 print(predict)38 # Accuracy of the RandomForestClassifier39 accuracy = accuracy_score(y_test, predict)40 name.append("RF")41 Accuracy_fin.append(accuracy)42 prec,rec,fsc,_ = precision_recall_fscore_support(y_test,predict,average="macro")43 Precision_fin.append(prec)44 Recall_fin.append(rec)45 F_Score.append(fsc)46 print("Accuracy of RF:", accuracy)47 print("Precision Recall Fscore support of RF:", precision_recall_fscore_support(y_test,predict,average="macro"))48 confusion_matrix = multilabel_confusion_matrix(y_test,predict)49 print("RF CM",confusion_matrix)50 roc_auc_rf = roc_auc_score(y_test,predict)51 AUC.append(roc_auc_rf)52 print("RF ROC AUC Score",roc_auc_rf)53 fpr, tpr, _ = roc_curve(y_test, predict, drop_intermediate=False)54 fig = go.Figure(data=go.Scatter(x=fpr, y=tpr, name="Model"))55 fig = fig.add_trace(56 go.Scatter(57 x=[0.0, 1.0],58 y=[0.0, 1.0],59 line=dict(dash="dash"),60 mode="lines",61 showlegend=False,62 )63 )64 # Label the figure65 fig.update_layout(66 title=f"Receiver Operator Characteristic (AUC={round(roc_auc_rf, 6)})",67 xaxis_title="False Positive Rate (FPR)",68 yaxis_title="True Positive Rate (TPR)",69 )70 fig.write_html(71 file=f"../plots/ROC_FOR_RF_MODEL.html",72 include_plotlyjs="cdn",73 )74 AUC_Plot.append(75 "<a href ="76 + "./plots/ROC_FOR_RF_MODEL"77 + ".html"78 + ">"79 + "ROC Curve RF"80 + "</a>"81 )82 # Making a pipeline for Normalizing the data and fitting SVM Classifier83 pipeline = Pipeline(84 [("Normalize", Normalizer()), ("SVM", svm.SVC(kernel="rbf"))]85 )86 pipeline.fit(X_train, y_train)87 predict = pipeline.predict(X_test)88 # Accuracy score for the SVMClassifier89 accuracy = accuracy_score(y_test, predict)90 name.append("SVM")91 Accuracy_fin.append(accuracy)92 prec,rec,fsc,_ = precision_recall_fscore_support(y_test,predict,average="macro")93 Precision_fin.append(prec)94 Recall_fin.append(rec)95 F_Score.append(fsc)96 print("Accuracy of SVM with linear kernel:", accuracy)97 print("Accuracy of SVM:", accuracy)98 print("Precision Recall Fscore support of SVM:", precision_recall_fscore_support(y_test,predict,average="macro"))99 confusion_matrix = multilabel_confusion_matrix(y_test,predict)100 print("SVM CM",confusion_matrix)101 roc_auc_svm = roc_auc_score(y_test,predict)102 AUC.append(roc_auc_svm)103 print("SVM ROC AUC Score",roc_auc_svm)104 fpr1, tpr1, _ = roc_curve(y_test, predict, drop_intermediate=False)105 fig = go.Figure(data=go.Scatter(x=fpr1, y=tpr1, name="Model"))106 fig = fig.add_trace(107 go.Scatter(108 x=[0.0, 1.0],109 y=[0.0, 1.0],110 line=dict(dash="dash"),111 mode="lines",112 showlegend=False,113 )114 )115 # Label the figure116 fig.update_layout(117 title=f"Receiver Operator Characteristic (AUC={round(roc_auc_svm, 6)})",118 xaxis_title="False Positive Rate (FPR)",119 yaxis_title="True Positive Rate (TPR)",120 )121 fig.write_html(122 file=f"../plots/ROC_FOR_SVM_MODEL.html",123 include_plotlyjs="cdn",124 )125 AUC_Plot.append(126 "<a href ="127 + "./plots/ROC_FOR_SVM_MODEL"128 + ".html"129 + ">"130 + "ROC Curve SVM"131 + "</a>"132 )133 # Making a Pipeline for Normalizing the data and fitting AdaBoostClassifier134 pipeline = Pipeline(135 [("Normalize", Normalizer()), ("AdaBoost", AdaBoostClassifier(random_state=1,n_estimators=100))]136 )137 pipeline.fit(X_train, y_train)138 predict = pipeline.predict(X_test)139 print(predict)140 # Accuracy of the AdaBoostClassifier141 accuracy = accuracy_score(y_test, predict)142 name.append("ADABoost")143 Accuracy_fin.append(accuracy)144 prec,rec,fsc,_ = precision_recall_fscore_support(y_test,predict,average="macro")145 Precision_fin.append(prec)146 Recall_fin.append(rec)147 F_Score.append(fsc)148 print("Accuracy of adaboost:", accuracy)149 print("Precision Recall Fscore support of AdaBoost:", precision_recall_fscore_support(y_test,predict,average="macro"))150 confusion_matrix = multilabel_confusion_matrix(y_test,predict)151 print("AdaBoost CM",confusion_matrix)152 roc_auc_AB = roc_auc_score(y_test,predict)153 AUC.append(roc_auc_AB)154 print("AdaBoost ROC AUC Score",roc_auc_AB)155 fpr, tpr, _ = roc_curve(y_test, predict, drop_intermediate=False)156 fig = go.Figure(data=go.Scatter(x=fpr, y=tpr, name="Model"))157 fig = fig.add_trace(158 go.Scatter(159 x=[0.0, 1.0],160 y=[0.0, 1.0],161 line=dict(dash="dash"),162 mode="lines",163 showlegend=False,164 )165 )166 # Label the figure167 fig.update_layout(168 title=f"Receiver Operator Characteristic (AUC={round(roc_auc_AB, 6)})",169 xaxis_title="False Positive Rate (FPR)",170 yaxis_title="True Positive Rate (TPR)",171 )172 fig.write_html(173 file=f"../plots/ROC_FOR_AB_MODEL.html",174 include_plotlyjs="cdn",175 )176 AUC_Plot.append(177 "<a href ="178 + "./plots/ROC_FOR_AB_MODEL"179 + ".html"180 + ">"181 + "ROC Curve AB"182 + "</a>"183 )184 # Making a Pipeline for Normalizing the data and fitting logistic regression model185 pipeline = Pipeline(186 [("Normalize", Normalizer()), ("logit", LogisticRegression(random_state=1))]187 )188 pipeline.fit(X_train, y_train)189 predict = pipeline.predict(X_test)190 print(predict)191 # Accuracy of the log192 accuracy = accuracy_score(y_test, predict)193 name.append("LogisticRegression")194 Accuracy_fin.append(accuracy)195 prec,rec,fsc,_ = precision_recall_fscore_support(y_test,predict,average="macro")196 Precision_fin.append(prec)197 Recall_fin.append(rec)198 F_Score.append(fsc)199 print("Accuracy of log:", accuracy)200 print("Precision Recall Fscore support of log:", precision_recall_fscore_support(y_test,predict,average="macro"))201 confusion_matrix = multilabel_confusion_matrix(y_test,predict)202 print("log CM",confusion_matrix)203 roc_auc_log = roc_auc_score(y_test,predict)204 AUC.append(roc_auc_log)205 print("log ROC AUC Score",roc_auc_log)206 fpr, tpr, _ = roc_curve(y_test, predict, drop_intermediate=False)207 fig = go.Figure(data=go.Scatter(x=fpr, y=tpr, name="Model"))208 fig = fig.add_trace(209 go.Scatter(210 x=[0.0, 1.0],211 y=[0.0, 1.0],212 line=dict(dash="dash"),213 mode="lines",214 showlegend=False,215 )216 )217 # Label the figure218 fig.update_layout(219 title=f"Receiver Operator Characteristic (AUC={round(roc_auc_log, 6)})",220 xaxis_title="False Positive Rate (FPR)",221 yaxis_title="True Positive Rate (TPR)",222 )223 fig.write_html(224 file=f"../plots/ROC_FOR_log_MODEL.html",225 include_plotlyjs="cdn",226 )227 AUC_Plot.append(228 "<a href ="229 + "./plots/ROC_FOR_log_MODEL"230 + ".html"231 + ">"232 + "ROC Curve LOG"233 + "</a>"234 )235 #Putting it All Together236 PRP = PredRespPlots.main(input_df_filename, response)237 Corr1,Corr2,Corr3,Brut1,Brut2,Brut3 = Corr_Brut_Plots.main(input_df_filename,response)238 PRP.to_html("Predictor_vs_Response_Plots.html", render_links=True, escape=False)239 path = open("./Correlation_tables.html", "w")240 path.write(241 Corr1.to_html(render_links=True, escape=False)242 + "<br>"243 + Corr2.to_html(render_links=True, escape=False)244 + "<br>"245 + Corr3.to_html(render_links=True, escape=False)246 )247 # finally we will make the brute force html248 path = open("./Brute_Force_tables.html", "w")249 path.write(250 Brut1.to_html(render_links=True, escape=False)251 + "<br>"252 + Brut2.to_html(render_links=True, escape=False)253 + "<br>"254 + Brut3.to_html(render_links=True, escape=False)255 )256 ModelResult_df = pd.DataFrame(257 columns=[258 "Name",259 "Accuracy",260 "Precision",261 "Recall",262 "F_score",263 "AUC",264 "AUC_Curve"265 ]266 )267 ModelResult_df["Name"] = name268 ModelResult_df["Accuracy"] = Accuracy_fin269 ModelResult_df["Precision"] = Precision_fin270 ModelResult_df["Recall"] = Recall_fin271 ModelResult_df["F_score"] = F_Score272 ModelResult_df["AUC"] = AUC273 ModelResult_df["AUC_Curve"] = AUC_Plot274 print(ModelResult_df.head())275 ModelResult_df.to_html("Model_Performance.html",render_links=True,escape=False)276if __name__ == "__main__":277 input_df_filename = "OutputTable.csv" # sys.argv[1]278 response = "Home_team_wins" # sys.argv[2]...
vis_planner_3d.py
Source:vis_planner_3d.py
1import tinyik2import numpy as np3import open3d as o3d4import sys5sys.path.insert(0, "/Users/himty/Desktop/Serious_Stuff/UC_Berkeley/3_Junior/EECS 106A/eecs106a-final-project/src/path_planning/moveit_planner")6from next_pt_planner import NextPointPlanner7# Open3d likes to be unblocked :/8# This script puts keyboard input on another thread9import threading10import argparse11# From https://stackoverflow.com/a/57387909/590134612class KeyboardThread(threading.Thread):13 def __init__(self, input_cbk, name='keyboard-input-thread'):14 self.input_cbk = input_cbk15 super(KeyboardThread, self).__init__(name=name)16 self.start()17 def run(self):18 while True:19 self.input_cbk(input()) #waits to get input + Return20class VisPlanner3D():21 def __init__(self, render_links):22 self.render_links = render_links23 # stages are get_ee_pos, get_obj_pos24 self.stage = 'get_ee_pos'25 self.stage2query = {26 'get_ee_pos': 'Enter end effector position as "x y z": ',27 'get_obj_pos': 'Enter object position as "x y z": ',28 }29 self.vis = o3d.visualization.Visualizer()30 self.vis.create_window(window_name='tinyik vizualizer', width=640, height=480)31 self.obj_pos = []32 self.sphere_r = .12 # radius of circles33 self.ee_color = {'name': 'white', 'code': [.2, .2, .2]}34 self.obj_color = {'name': 'red', 'code': [.8, .2, .2]}35 self.near_color = {'name': 'green', 'code': [.1, .8, .1]}36 self.far_color = {'name': 'blue', 'code': [.1, .1, .8]}37 self.planner = NextPointPlanner(2, [])38 self.base_height = 7.539 self.l1 = 1040 self.l2 = 1241 # 'z' and 'x' are rotation axes.42 # Each array is the length of the joint between rotation axes43 # I don't think this library supports prismatic joints? 44 self.arm = tinyik.Actuator([45 'z',46 [0, 0, self.base_height],47 'x',48 [0, self.l1, 0],49 'x',50 [0, self.l2, 0],51 ])52 # Draw some initial things53 axes = o3d.geometry.TriangleMesh.create_coordinate_frame(54 size=0.6, origin=[0, 0, 0])55 self.vis.add_geometry(axes)56 self.render_arm()57 print('Legend:')58 print('- white ball is original end effector position')59 print('- {} ball is object'.format(self.obj_color['name']))60 print('- {} ball is closer to object (next step)'.format(self.near_color['name']))61 print('- {} ball is farther from object (next step)'.format(self.far_color['name']))62 print('Some balls may overlap')63 print()64 print(self.stage2query[self.stage])65 def input_cbk(self, inp):66 if self.stage == 'get_ee_pos':67 if len(inp.strip().split(' ')) != 3:68 # Tell user to try again69 return70 else:71 ee_pos = [float(coord) for coord in inp.split(' ')]72 self.arm.ee = ee_pos73 self.vis.clear_geometries()74 axes = o3d.geometry.TriangleMesh.create_coordinate_frame(75 size=0.6, origin=[0, 0, 0])76 self.vis.add_geometry(axes)77 self.render_arm()78 self.stage = 'get_obj_pos'79 elif self.stage == 'get_obj_pos':80 if len(inp.strip().split(' ')) != 3:81 # Tell user to try again82 return83 else:84 self.obj_pos = [float(coord) for coord in inp.split(' ')]85 obj = tinyik.visualizer.create_sphere(self.obj_pos, r=self.sphere_r, color=self.obj_color['code'])86 self.vis.add_geometry(obj)87 near_pos = self.planner.get_near_point(self.arm.ee, self.obj_pos)88 self.arm.ee = near_pos89 self.render_arm()90 obj = tinyik.visualizer.create_sphere(near_pos, r=self.sphere_r, color=self.near_color['code'])91 self.vis.add_geometry(obj)92 far_pos = self.planner.get_far_point(self.arm.ee, self.obj_pos)93 self.arm.ee = far_pos94 self.render_arm()95 obj = tinyik.visualizer.create_sphere(far_pos, r=self.sphere_r, color=self.far_color['code'])96 self.vis.add_geometry(obj)97 print('near pos', near_pos, 'far pos', far_pos)98 print('Displayed.')99 print()100 self.stage = 'get_ee_pos'101 else:102 raise ValueError('Unknown stage {}'.format(self.stage))103 print(self.stage2query[self.stage])104 def render_arm(self):105 if self.render_links:106 geos = self.get_joint_geometries()107 for geo in geos:108 self.vis.add_geometry(geo)109 else:110 ee_pos = self.arm.ee111 ee = tinyik.visualizer.create_sphere(ee_pos, r=self.sphere_r, color=self.ee_color['code'])112 self.vis.add_geometry(ee)113 def get_joint_geometries(self):114 """115 Copy pasted tinyik.visualize() function but removed116 the blocking function at the end. It also now returns the geometries generated117 """118 119 # Setting some values so the code runs in this class120 actuator = self.arm121 target = None122 root = None123 p = None124 joints = []125 for c in actuator.components:126 if hasattr(c, 'axis'):127 gc = tinyik.visualizer.Joint(c)128 joints.append(gc)129 else:130 gc = tinyik.visualizer.Link(c)131 if root is None:132 root = gc133 p = gc134 else:135 p.child = gc136 p = gc137 for j, a in zip(joints, actuator.angles):138 j.angle = a139 if target:140 geos = root.geo(link_color=[.5, .5, .5])141 actuator.ee = target142 for j, a in zip(joints, actuator.angles):143 j.angle = a144 geos += root.geo()145 geos += [tinyik.visualizer.create_sphere(target, r=self.sphere_r, color=[.8, .2, .2])]146 else:147 geos = root.geo()148 return geos149def visualize_3d(render_links):150 # Rendering updates are asynchronous in this thread151 vis_3d = VisPlanner3D(render_links)152 kthread = KeyboardThread(vis_3d.input_cbk)153 while True:154 vis_3d.vis.poll_events()155 vis_3d.vis.update_renderer()156if __name__ == "__main__":157 parser = argparse.ArgumentParser()158 parser.add_argument('--no_links', action='store_true') # default is false159 args = parser.parse_args()...
report.py
Source:report.py
1import pandas as pd2from jinja2 import Environment, FileSystemLoader3import seaborn as sns4import matplotlib.pyplot as plt5from matplotlib import rcParams6from matplotlib import colors7from matplotlib import cm8import numpy as np9import os10def generate_report(target):11 rcParams.update({'figure.autolayout': True})12 # loading template13 env = Environment(loader=FileSystemLoader('.'))14 template = env.get_template("templates/template.html")15 cur_path = os.path.abspath(os.getcwd())16 # reading data17 domains_df = pd.read_csv('reports/{}/data/{}_domains.csv'.format(target,target), index_col = 0)18 domains_df = domains_df.fillna('')19 domains_df.style.set_table_attributes('class="table-hover"')20 domains_df['domain'] = domains_df['domain'].apply(lambda x: '<a href="{}">{}</a>'.format(x,x))21 vulns_df = pd.read_csv('reports/{}/data/{}_vulns.csv'.format(target, target), index_col = 0)22 vulns_df = vulns_df.fillna('')23 vulns_df = vulns_df.sort_values(by = ['severity'], ascending=False)24 cwe_df = pd.read_csv('reports/{}/data/{}_cwes.csv'.format(target,target), index_col = 0)25 cwe_df = cwe_df.fillna('')26 impact_df = pd.read_csv('reports/{}/data/{}_impact.csv'.format(target,target), index_col = 0)27 impact_df = impact_df.fillna('')28 tech_df = pd.read_csv('reports/{}/data/{}_technologies.csv'.format(target,target), index_col = 0)29 tech_df = tech_df.fillna('').drop_duplicates().sort_values(by = ['type'])30 techs = []31 nb_techs = []32 for t in domains_df['technologies']:33 techs = t.split(',')34 for tech in techs:35 if tech not in techs:36 techs.append(tech)37 if tech not in nb_techs:38 nb_techs.append(tech)39 # generate plots40 vuln_chart = vulns_df.groupby('domain')['vulnerability'].nunique()41 # print(vuln_chart)42 if len(vuln_chart) > 0:43 chart = vuln_chart.plot.barh(title = 'Vulnerabilities found per domain')44 chart.set_xlabel('Vulnerabilities found')45 chart.set_ylabel('')46 vuln_chart_path = '{}/reports/{}/plots/{}vulnerability_domains.png'.format(cur_path,target, target)47 plt.savefig(vuln_chart_path)48 else:49 vuln_chart_path = 'Not found'50 bins = pd.cut(vulns_df['severity'], list(range(0,11)))51 severity_df = vulns_df.groupby(bins)['severity'].agg(['count'])52 if len(severity_df)>0:53 sev_chart = severity_df.plot.bar(title = 'Vulnerabilities by severity')54 # sev_chart = sns.barplot(x = severity_df.index, y = severity_df.values, orient = "h")55 sev_chart.set_ylabel('Vulnerabilities found')56 sev_chart.set_xlabel('Common Vulnerability Severity Score (CVSS)')57 labels = []58 for l in range(0,11):59 labels.append('{}-{}'.format(l, l+1))60 sev_chart.set_xticklabels(labels, rotation=0)61 # chart = sns.barplot( x = vulns_df.domain.unique(), y = vuln_chart.values, orient = "h")62 sev_chart_path = '{}/reports/{}/plots/{}_vulnerability_severity.png'.format(cur_path,target, target)63 plt.savefig(sev_chart_path)64 else:65 sev_chart_path = 'Not found'66 #generating live links67 vulns_df['domain'] = vulns_df['domain'].apply(lambda x: '<a href="{}">{}</a>'.format(x,x))68 vulns_df['vulnerability'] = vulns_df['vulnerability'].apply(lambda x: '<a href="https://www.cvedetails.com/cve/{}">{}</a>'.format(x,x))69 cwe_df['cve'] = cwe_df['cve'].apply(lambda x: '<a href="https://www.cvedetails.com/cve/{}">{}</a>'.format(x,x))70 cwe_df['cwe_id'] = cwe_df['cwe_id'].apply(lambda x: '<a href="https://cwe.mitre.org/data/definitions/{}.html">{}</a>'.format(x.split('-')[1],x))71 cwe_df['domain'] = cwe_df['domain'].apply(lambda x: '<a href="{}">{}</a>'.format(x,x))72 cwe_df = cwe_df.drop_duplicates()73 mit_df = pd.read_csv('reports/{}/data/{}_mitigation.csv'.format(target,target), index_col = 0)74 mitigations = list()75 for index, row in mit_df.iterrows():76 mitigations.append(row)77 certs_df = pd.read_csv('reports/{}/data/{}_certs.csv'.format(target,target), index_col = 0)78 certs_df = certs_df.fillna('')79 exp_df = pd.read_csv('reports/{}/data/{}_expired_certs.csv'.format(target,target), index_col = 0)80 exp_df = exp_df.fillna('')81 # print(cwe_df)82 try:83 most_common_vulnerability = vulns_df.vulnerability_types.mode().values[0]84 most_common_cwe = cwe_df.cwe_name.mode().values[0]85 most_common_type = tech_df.type.mode().values[0],86 most_common_tech = tech_df.technology.mode().values[0]87 except:88 most_common_vulnerability = ''89 most_common_cwe = ''90 most_common_type = ''91 most_common_tech = ''92 template_vars = {93 "target" : target,94 "nb_domains" : len(domains_df),95 "nb_tech" : len(nb_techs),96 "domains_df": domains_df.to_html(index=False, classes='table-hover', render_links=True, escape=False),97 "unique_cves" : len(vulns_df['vulnerability'].unique()),98 "unique_domains" : len(vulns_df['domain'].unique()),99 "mean_severity" : round(vulns_df['severity'].mean(),1),100 "nb_critical" : len(vulns_df.loc[vulns_df['severity'] >= 8]),101 "most_common_vulnerability": most_common_vulnerability ,102 "vulns_df" : vulns_df.to_html(index=False, classes='table-hover', render_links=True, escape=False),103 "vuln_chart_path" : vuln_chart_path,104 "sev_chart_path" : sev_chart_path,105 "cwe_df" : cwe_df.to_html(index=False, render_links=True, escape=False),106 "unique_cwes" : len(cwe_df['cwe_id'].unique()),107 "most_common_weakness" : most_common_cwe,108 "impact-df" : impact_df.to_html(index=False, render_links=True, escape=False),109 'nb_mit' : len(mitigations),110 'mitigations' : mitigations,111 'unique_tech' : len(tech_df['technology'].unique()),112 'most_common_type' : most_common_type,113 'most_common_tech': most_common_tech,114 'tech_df' : tech_df.to_html(index=False, render_links=True, escape=False),115 'cert_nb' : len(certs_df),116 'exp_nb' : len(exp_df),117 'exp_df' : exp_df.to_html(index=False, render_links=True, escape=False)118 }119 html_out = template.render(template_vars)120 Html_file= open("reports/{}/{}.html".format(target, target),"w")121 Html_file.write(html_out)122 Html_file.close()...
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!