Spaces:
Sleeping
Sleeping
qqubb
commited on
Commit
·
f9b174b
1
Parent(s):
956fd2d
added expanders for each card
Browse files- __pycache__/compliance_analysis.cpython-310.pyc +0 -0
- app.py +86 -80
- compliance_analysis.py +2 -2
__pycache__/compliance_analysis.cpython-310.pyc
CHANGED
Binary files a/__pycache__/compliance_analysis.cpython-310.pyc and b/__pycache__/compliance_analysis.cpython-310.pyc differ
|
|
app.py
CHANGED
@@ -59,46 +59,8 @@ with project_col:
|
|
59 |
|
60 |
if cards["project_file"]:
|
61 |
project_cc = cards["project_file"]
|
62 |
-
|
63 |
-
|
64 |
-
if section != 'card_details':
|
65 |
-
st.header(section.replace('_', ' ').title()) # section header
|
66 |
-
for key, details in items.items():
|
67 |
-
if 'verbose' in details and 'value' in details:
|
68 |
-
st.subheader(key.replace('_', ' ').title()) # section header
|
69 |
-
# details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
70 |
-
if isinstance(details['value'], str):
|
71 |
-
details['value'] = st.text_input(details['verbose'], value=details['value'])
|
72 |
-
elif isinstance(details['value'], bool):
|
73 |
-
details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
74 |
-
if 'verbose' not in details and 'value' not in details:
|
75 |
-
st.subheader(key.replace('_', ' ').title()) # section header
|
76 |
-
for key, details in details.items():
|
77 |
-
st.subheader(key.replace('_', ' ').title()) # section header
|
78 |
-
details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
79 |
-
st.divider()
|
80 |
-
st.divider()
|
81 |
-
# st.write("Updated Data:", project_cc)
|
82 |
-
|
83 |
-
updated_project_cc = yaml.dump(project_cc, sort_keys=False)
|
84 |
-
|
85 |
-
st.download_button(
|
86 |
-
label=f"Download Updated Project CC as YAML",
|
87 |
-
data=updated_project_cc,
|
88 |
-
file_name="updated_project.yaml",
|
89 |
-
mime="text/yaml"
|
90 |
-
)
|
91 |
-
|
92 |
-
with data_col:
|
93 |
-
|
94 |
-
st.title("Data CC")
|
95 |
-
if cards['data_files']:
|
96 |
-
# selected_data_file = st.selectbox("Select a Data CC", cards['data_files'], format_func=format_card_label)
|
97 |
-
# data_cc = selected_data_file[1]
|
98 |
-
for card in cards['data_files']:
|
99 |
-
data_cc = card[1]
|
100 |
-
st.title(f"{card[0]}")
|
101 |
-
for section, items in data_cc.items():
|
102 |
if section != 'card_details':
|
103 |
st.header(section.replace('_', ' ').title()) # section header
|
104 |
for key, details in items.items():
|
@@ -106,26 +68,68 @@ with data_col:
|
|
106 |
st.subheader(key.replace('_', ' ').title()) # section header
|
107 |
# details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
108 |
if isinstance(details['value'], str):
|
109 |
-
details['value'] = st.text_input(details['verbose'], value=details['value']
|
110 |
-
elif isinstance(details['value'], bool):
|
111 |
-
details['value'] = st.checkbox(details['verbose'], value=details['value']
|
112 |
if 'verbose' not in details and 'value' not in details:
|
113 |
st.subheader(key.replace('_', ' ').title()) # section header
|
114 |
for key, details in details.items():
|
115 |
st.subheader(key.replace('_', ' ').title()) # section header
|
116 |
-
details['value'] = st.checkbox(details['verbose'], value=details['value']
|
117 |
st.divider()
|
118 |
st.divider()
|
119 |
-
# st.write("Updated Data:",
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
st.download_button(
|
124 |
-
label=f"Download Updated
|
125 |
-
data=
|
126 |
-
file_name="
|
127 |
mime="text/yaml"
|
128 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
|
130 |
with model_col:
|
131 |
|
@@ -135,35 +139,37 @@ with model_col:
|
|
135 |
# model_cc = selected_data_file[1]
|
136 |
for card in cards['model_files']:
|
137 |
model_cc = card[1]
|
138 |
-
st.
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
st.subheader(key.replace('_', ' ').title()) # section header
|
145 |
-
# details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
146 |
-
if isinstance(details['value'], str):
|
147 |
-
details['value'] = st.text_input(details['verbose'], value=details['value'], key=f"model_{card[0]}_{key}")
|
148 |
-
elif isinstance(details['value'], bool):
|
149 |
-
details['value'] = st.checkbox(details['verbose'], value=details['value'], key=f"model_{card[0]}_{details}_{key}")
|
150 |
-
if 'verbose' not in details and 'value' not in details:
|
151 |
-
st.subheader(key.replace('_', ' ').title()) # section header
|
152 |
-
for key, details in details.items():
|
153 |
st.subheader(key.replace('_', ' ').title()) # section header
|
154 |
-
details['value'] = st.checkbox(details['verbose'], value=details['value']
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
|
168 |
# # # # json_data = json.dumps(data, indent=2)
|
169 |
# # # # st.download_button(
|
|
|
59 |
|
60 |
if cards["project_file"]:
|
61 |
project_cc = cards["project_file"]
|
62 |
+
with st.expander("project details"):
|
63 |
+
for section, items in project_cc.items():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
if section != 'card_details':
|
65 |
st.header(section.replace('_', ' ').title()) # section header
|
66 |
for key, details in items.items():
|
|
|
68 |
st.subheader(key.replace('_', ' ').title()) # section header
|
69 |
# details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
70 |
if isinstance(details['value'], str):
|
71 |
+
details['value'] = st.text_input(details['verbose'], value=details['value'])
|
72 |
+
elif isinstance(details['value'], bool):
|
73 |
+
details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
74 |
if 'verbose' not in details and 'value' not in details:
|
75 |
st.subheader(key.replace('_', ' ').title()) # section header
|
76 |
for key, details in details.items():
|
77 |
st.subheader(key.replace('_', ' ').title()) # section header
|
78 |
+
details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
79 |
st.divider()
|
80 |
st.divider()
|
81 |
+
# st.write("Updated Data:", project_cc)
|
82 |
+
|
83 |
+
updated_project_cc = yaml.dump(project_cc, sort_keys=False)
|
84 |
+
|
85 |
st.download_button(
|
86 |
+
label=f"Download Updated Project CC as YAML",
|
87 |
+
data=updated_project_cc,
|
88 |
+
file_name="updated_project.yaml",
|
89 |
mime="text/yaml"
|
90 |
+
)
|
91 |
+
# else:
|
92 |
+
# st.write("Missing project file")
|
93 |
+
|
94 |
+
with data_col:
|
95 |
+
|
96 |
+
st.title("Data CC")
|
97 |
+
if cards['data_files']:
|
98 |
+
# selected_data_file = st.selectbox("Select a Data CC", cards['data_files'], format_func=format_card_label)
|
99 |
+
# data_cc = selected_data_file[1]
|
100 |
+
for card in cards['data_files']:
|
101 |
+
data_cc = card[1]
|
102 |
+
with st.expander(f"{card[0]}"):
|
103 |
+
for section, items in data_cc.items():
|
104 |
+
if section != 'card_details':
|
105 |
+
st.header(section.replace('_', ' ').title()) # section header
|
106 |
+
for key, details in items.items():
|
107 |
+
if 'verbose' in details and 'value' in details:
|
108 |
+
st.subheader(key.replace('_', ' ').title()) # section header
|
109 |
+
# details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
110 |
+
if isinstance(details['value'], str):
|
111 |
+
details['value'] = st.text_input(details['verbose'], value=details['value'], key=f"data_{card[0]}_{key}")
|
112 |
+
elif isinstance(details['value'], bool):
|
113 |
+
details['value'] = st.checkbox(details['verbose'], value=details['value'], key=f"data_{card[0]}_{details}_{key}")
|
114 |
+
if 'verbose' not in details and 'value' not in details:
|
115 |
+
st.subheader(key.replace('_', ' ').title()) # section header
|
116 |
+
for key, details in details.items():
|
117 |
+
st.subheader(key.replace('_', ' ').title()) # section header
|
118 |
+
details['value'] = st.checkbox(details['verbose'], value=details['value'], key=f"data_{card[0]}_{details}_{key}")
|
119 |
+
st.divider()
|
120 |
+
st.divider()
|
121 |
+
# st.write("Updated Data:", data_cc)
|
122 |
+
|
123 |
+
data_cc_yaml_data = yaml.dump(data_cc, sort_keys=False)
|
124 |
+
|
125 |
+
st.download_button(
|
126 |
+
label=f"Download Updated {card[0]} CC as YAML",
|
127 |
+
data=data_cc_yaml_data,
|
128 |
+
file_name="updated_data.yaml",
|
129 |
+
mime="text/yaml"
|
130 |
+
)
|
131 |
+
# else:
|
132 |
+
# st.write("Missing data file")
|
133 |
|
134 |
with model_col:
|
135 |
|
|
|
139 |
# model_cc = selected_data_file[1]
|
140 |
for card in cards['model_files']:
|
141 |
model_cc = card[1]
|
142 |
+
with st.expander(f"{card[0]}"):
|
143 |
+
for section, items in model_cc.items():
|
144 |
+
if section != 'card_details':
|
145 |
+
st.header(section.replace('_', ' ').title()) # section header
|
146 |
+
for key, details in items.items():
|
147 |
+
if 'verbose' in details and 'value' in details:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
st.subheader(key.replace('_', ' ').title()) # section header
|
149 |
+
# details['value'] = st.checkbox(details['verbose'], value=details['value'])
|
150 |
+
if isinstance(details['value'], str):
|
151 |
+
details['value'] = st.text_input(details['verbose'], value=details['value'], key=f"model_{card[0]}_{key}")
|
152 |
+
elif isinstance(details['value'], bool):
|
153 |
+
details['value'] = st.checkbox(details['verbose'], value=details['value'], key=f"model_{card[0]}_{details}_{key}")
|
154 |
+
if 'verbose' not in details and 'value' not in details:
|
155 |
+
st.subheader(key.replace('_', ' ').title()) # section header
|
156 |
+
for key, details in details.items():
|
157 |
+
st.subheader(key.replace('_', ' ').title()) # section header
|
158 |
+
details['value'] = st.checkbox(details['verbose'], value=details['value'], key=f"model_{card[0]}_{details}_{key}")
|
159 |
+
st.divider()
|
160 |
+
st.divider()
|
161 |
+
# st.write("Updated Data:", model_cc)
|
162 |
+
|
163 |
+
model_cc_yaml_data = yaml.dump(model_cc, sort_keys=False)
|
164 |
+
|
165 |
+
st.download_button(
|
166 |
+
label=f"Download Updated {card[0]} CC as YAML",
|
167 |
+
data=model_cc_yaml_data,
|
168 |
+
file_name="updated_model.yaml",
|
169 |
+
mime="text/yaml"
|
170 |
+
)
|
171 |
+
# else:
|
172 |
+
# st.write("Missing data file")
|
173 |
|
174 |
# # # # json_data = json.dumps(data, indent=2)
|
175 |
# # # # st.download_button(
|
compliance_analysis.py
CHANGED
@@ -269,11 +269,11 @@ def check_intended_purpose(dispositive_variables, project_cc, other_cc):
|
|
269 |
dataset_intended_purposes = []
|
270 |
model_intended_purposes = []
|
271 |
|
272 |
-
if dispositive_variables['high_risk_ai_system'] == False:
|
273 |
dispositive_variables['msg'].append(f"Not high-risk")
|
274 |
return dispositive_variables
|
275 |
|
276 |
-
if dispositive_variables['high_risk_ai_system'] == True:
|
277 |
for key in project_cc['high_risk_ai_system']:
|
278 |
if project_cc['high_risk_ai_system'][f'{key}']['value']:
|
279 |
project_intended_purposes.append(key)
|
|
|
269 |
dataset_intended_purposes = []
|
270 |
model_intended_purposes = []
|
271 |
|
272 |
+
if dispositive_variables['ai_project_type']['high_risk_ai_system'] == False:
|
273 |
dispositive_variables['msg'].append(f"Not high-risk")
|
274 |
return dispositive_variables
|
275 |
|
276 |
+
if dispositive_variables['ai_project_type']['high_risk_ai_system'] == True:
|
277 |
for key in project_cc['high_risk_ai_system']:
|
278 |
if project_cc['high_risk_ai_system'][f'{key}']['value']:
|
279 |
project_intended_purposes.append(key)
|