From 9e38849553d4778b3db40c1ef4f7468a54ff6ffe Mon Sep 17 00:00:00 2001 From: Ehsan Shaghaei <53513242+Ehsan2754@users.noreply.github.com> Date: Tue, 19 Oct 2021 22:42:58 +0300 Subject: [PATCH 1/4] task 1 --- dataeng/Level1/demo-data/1000.csv | 2 + dataeng/Level1/demo-data/1000.png | Bin 0 -> 238 bytes dataeng/Level1/demo-data/1001.csv | 2 + dataeng/Level1/demo-data/1001.png | Bin 0 -> 226 bytes dataeng/Level1/demo-data/1002.csv | 2 + dataeng/Level1/demo-data/1002.png | Bin 0 -> 240 bytes dataeng/Level1/demo-data/1003.csv | 2 + dataeng/Level1/demo-data/1003.png | Bin 0 -> 228 bytes dataeng/Level1/demo-data/1004.csv | 2 + dataeng/Level1/demo-data/1004.png | Bin 0 -> 246 bytes dataeng/Level1/demo-data/1005.csv | 2 + dataeng/Level1/demo-data/1005.png | Bin 0 -> 240 bytes dataeng/Level1/demo-data/1006.csv | 2 + dataeng/Level1/demo-data/1006.png | Bin 0 -> 248 bytes dataeng/Level1/demo-output/output.csv | 8 ++ dataeng/Level1/image_path_finder.py | 88 ++++++++++++++++++++ dataeng/Level1/processed_data/output.csv | 101 +++++++++++++++++++++++ dataeng/Level1/src-data/1000.csv | 2 + dataeng/Level1/src-data/1000.png | Bin 0 -> 238 bytes dataeng/Level1/src-data/1001.csv | 2 + dataeng/Level1/src-data/1001.png | Bin 0 -> 226 bytes dataeng/Level1/src-data/1002.csv | 2 + dataeng/Level1/src-data/1002.png | Bin 0 -> 240 bytes dataeng/Level1/src-data/1003.csv | 2 + dataeng/Level1/src-data/1003.png | Bin 0 -> 228 bytes dataeng/Level1/src-data/1004.csv | 2 + dataeng/Level1/src-data/1004.png | Bin 0 -> 246 bytes dataeng/Level1/src-data/1005.csv | 2 + dataeng/Level1/src-data/1005.png | Bin 0 -> 240 bytes dataeng/Level1/src-data/1006.csv | 2 + dataeng/Level1/src-data/1006.png | Bin 0 -> 248 bytes dataeng/Level1/src-data/1007.csv | 2 + dataeng/Level1/src-data/1007.png | Bin 0 -> 232 bytes dataeng/Level1/src-data/1008.csv | 2 + dataeng/Level1/src-data/1008.png | Bin 0 -> 244 bytes dataeng/Level1/src-data/1009.csv | 2 + dataeng/Level1/src-data/1009.png | Bin 0 -> 233 bytes dataeng/Level1/src-data/1010.csv | 2 + dataeng/Level1/src-data/1010.png | Bin 0 -> 237 bytes dataeng/Level1/src-data/1011.csv | 2 + dataeng/Level1/src-data/1011.png | Bin 0 -> 237 bytes dataeng/Level1/src-data/1012.csv | 2 + dataeng/Level1/src-data/1012.png | Bin 0 -> 233 bytes dataeng/Level1/src-data/1013.csv | 2 + dataeng/Level1/src-data/1013.png | Bin 0 -> 228 bytes dataeng/Level1/src-data/1014.csv | 2 + dataeng/Level1/src-data/1014.png | Bin 0 -> 249 bytes dataeng/Level1/src-data/1015.csv | 2 + dataeng/Level1/src-data/1015.png | Bin 0 -> 234 bytes dataeng/Level1/src-data/1016.csv | 2 + dataeng/Level1/src-data/1016.png | Bin 0 -> 251 bytes dataeng/Level1/src-data/1017.csv | 2 + dataeng/Level1/src-data/1017.png | Bin 0 -> 237 bytes dataeng/Level1/src-data/1018.csv | 2 + dataeng/Level1/src-data/1018.png | Bin 0 -> 236 bytes dataeng/Level1/src-data/1019.csv | 2 + dataeng/Level1/src-data/1019.png | Bin 0 -> 257 bytes dataeng/Level1/src-data/1020.csv | 2 + dataeng/Level1/src-data/1020.png | Bin 0 -> 253 bytes dataeng/Level1/src-data/1021.csv | 2 + dataeng/Level1/src-data/1021.png | Bin 0 -> 251 bytes dataeng/Level1/src-data/1022.csv | 2 + dataeng/Level1/src-data/1022.png | Bin 0 -> 223 bytes dataeng/Level1/src-data/1023.csv | 2 + dataeng/Level1/src-data/1023.png | Bin 0 -> 239 bytes dataeng/Level1/src-data/1024.csv | 2 + dataeng/Level1/src-data/1024.png | Bin 0 -> 246 bytes dataeng/Level1/src-data/1025.csv | 2 + dataeng/Level1/src-data/1025.png | Bin 0 -> 229 bytes dataeng/Level1/src-data/1026.csv | 2 + dataeng/Level1/src-data/1026.png | Bin 0 -> 235 bytes dataeng/Level1/src-data/1027.csv | 2 + dataeng/Level1/src-data/1027.png | Bin 0 -> 232 bytes dataeng/Level1/src-data/1028.csv | 2 + dataeng/Level1/src-data/1028.png | Bin 0 -> 253 bytes dataeng/Level1/src-data/1029.csv | 2 + dataeng/Level1/src-data/1029.png | Bin 0 -> 244 bytes dataeng/Level1/src-data/1030.csv | 2 + dataeng/Level1/src-data/1030.png | Bin 0 -> 240 bytes dataeng/Level1/src-data/1031.csv | 2 + dataeng/Level1/src-data/1031.png | Bin 0 -> 219 bytes dataeng/Level1/src-data/1032.csv | 2 + dataeng/Level1/src-data/1032.png | Bin 0 -> 238 bytes dataeng/Level1/src-data/1033.csv | 2 + dataeng/Level1/src-data/1033.png | Bin 0 -> 241 bytes dataeng/Level1/src-data/1034.csv | 2 + dataeng/Level1/src-data/1034.png | Bin 0 -> 233 bytes dataeng/Level1/src-data/1035.csv | 2 + dataeng/Level1/src-data/1035.png | Bin 0 -> 223 bytes dataeng/Level1/src-data/1036.csv | 2 + dataeng/Level1/src-data/1036.png | Bin 0 -> 236 bytes dataeng/Level1/src-data/1037.csv | 2 + dataeng/Level1/src-data/1037.png | Bin 0 -> 249 bytes dataeng/Level1/src-data/1038.csv | 2 + dataeng/Level1/src-data/1038.png | Bin 0 -> 234 bytes dataeng/Level1/src-data/1039.csv | 2 + dataeng/Level1/src-data/1039.png | Bin 0 -> 249 bytes dataeng/Level1/src-data/1040.csv | 2 + dataeng/Level1/src-data/1040.png | Bin 0 -> 237 bytes dataeng/Level1/src-data/1041.csv | 2 + dataeng/Level1/src-data/1041.png | Bin 0 -> 238 bytes dataeng/Level1/src-data/1042.csv | 2 + dataeng/Level1/src-data/1042.png | Bin 0 -> 249 bytes dataeng/Level1/src-data/1043.csv | 2 + dataeng/Level1/src-data/1043.png | Bin 0 -> 247 bytes dataeng/Level1/src-data/1044.csv | 2 + dataeng/Level1/src-data/1044.png | Bin 0 -> 239 bytes dataeng/Level1/src-data/1045.csv | 2 + dataeng/Level1/src-data/1045.png | Bin 0 -> 242 bytes dataeng/Level1/src-data/1046.csv | 2 + dataeng/Level1/src-data/1046.png | Bin 0 -> 240 bytes dataeng/Level1/src-data/1047.csv | 2 + dataeng/Level1/src-data/1047.png | Bin 0 -> 236 bytes dataeng/Level1/src-data/1048.csv | 2 + dataeng/Level1/src-data/1048.png | Bin 0 -> 234 bytes dataeng/Level1/src-data/1049.csv | 2 + dataeng/Level1/src-data/1049.png | Bin 0 -> 223 bytes dataeng/Level1/src-data/1050.csv | 2 + dataeng/Level1/src-data/1050.png | Bin 0 -> 255 bytes dataeng/Level1/src-data/1051.csv | 2 + dataeng/Level1/src-data/1051.png | Bin 0 -> 243 bytes dataeng/Level1/src-data/1052.csv | 2 + dataeng/Level1/src-data/1052.png | Bin 0 -> 232 bytes dataeng/Level1/src-data/1053.csv | 2 + dataeng/Level1/src-data/1053.png | Bin 0 -> 240 bytes dataeng/Level1/src-data/1054.csv | 2 + dataeng/Level1/src-data/1054.png | Bin 0 -> 227 bytes dataeng/Level1/src-data/1055.csv | 2 + dataeng/Level1/src-data/1055.png | Bin 0 -> 231 bytes dataeng/Level1/src-data/1056.csv | 2 + dataeng/Level1/src-data/1056.png | Bin 0 -> 228 bytes dataeng/Level1/src-data/1057.csv | 2 + dataeng/Level1/src-data/1057.png | Bin 0 -> 232 bytes dataeng/Level1/src-data/1058.csv | 2 + dataeng/Level1/src-data/1058.png | Bin 0 -> 247 bytes dataeng/Level1/src-data/1059.csv | 2 + dataeng/Level1/src-data/1059.png | Bin 0 -> 241 bytes dataeng/Level1/src-data/1060.csv | 2 + dataeng/Level1/src-data/1060.png | Bin 0 -> 242 bytes dataeng/Level1/src-data/1061.csv | 2 + dataeng/Level1/src-data/1061.png | Bin 0 -> 245 bytes dataeng/Level1/src-data/1062.csv | 2 + dataeng/Level1/src-data/1062.png | Bin 0 -> 225 bytes dataeng/Level1/src-data/1063.csv | 2 + dataeng/Level1/src-data/1063.png | Bin 0 -> 227 bytes dataeng/Level1/src-data/1064.csv | 2 + dataeng/Level1/src-data/1064.png | Bin 0 -> 243 bytes dataeng/Level1/src-data/1065.csv | 2 + dataeng/Level1/src-data/1065.png | Bin 0 -> 227 bytes dataeng/Level1/src-data/1066.csv | 2 + dataeng/Level1/src-data/1066.png | Bin 0 -> 244 bytes dataeng/Level1/src-data/1067.csv | 2 + dataeng/Level1/src-data/1067.png | Bin 0 -> 250 bytes dataeng/Level1/src-data/1068.csv | 2 + dataeng/Level1/src-data/1068.png | Bin 0 -> 258 bytes dataeng/Level1/src-data/1069.csv | 2 + dataeng/Level1/src-data/1069.png | Bin 0 -> 243 bytes dataeng/Level1/src-data/1070.csv | 2 + dataeng/Level1/src-data/1070.png | Bin 0 -> 222 bytes dataeng/Level1/src-data/1071.csv | 2 + dataeng/Level1/src-data/1071.png | Bin 0 -> 255 bytes dataeng/Level1/src-data/1072.csv | 2 + dataeng/Level1/src-data/1072.png | Bin 0 -> 245 bytes dataeng/Level1/src-data/1073.csv | 2 + dataeng/Level1/src-data/1073.png | Bin 0 -> 245 bytes dataeng/Level1/src-data/1074.csv | 2 + dataeng/Level1/src-data/1074.png | Bin 0 -> 244 bytes dataeng/Level1/src-data/1075.csv | 2 + dataeng/Level1/src-data/1075.png | Bin 0 -> 235 bytes dataeng/Level1/src-data/1076.csv | 2 + dataeng/Level1/src-data/1076.png | Bin 0 -> 241 bytes dataeng/Level1/src-data/1077.csv | 2 + dataeng/Level1/src-data/1077.png | Bin 0 -> 225 bytes dataeng/Level1/src-data/1078.csv | 2 + dataeng/Level1/src-data/1078.png | Bin 0 -> 225 bytes dataeng/Level1/src-data/1079.csv | 2 + dataeng/Level1/src-data/1079.png | Bin 0 -> 246 bytes dataeng/Level1/src-data/1080.csv | 2 + dataeng/Level1/src-data/1080.png | Bin 0 -> 251 bytes dataeng/Level1/src-data/1081.csv | 2 + dataeng/Level1/src-data/1081.png | Bin 0 -> 231 bytes dataeng/Level1/src-data/1082.csv | 2 + dataeng/Level1/src-data/1082.png | Bin 0 -> 229 bytes dataeng/Level1/src-data/1083.csv | 2 + dataeng/Level1/src-data/1083.png | Bin 0 -> 251 bytes dataeng/Level1/src-data/1084.csv | 2 + dataeng/Level1/src-data/1084.png | Bin 0 -> 245 bytes dataeng/Level1/src-data/1085.csv | 2 + dataeng/Level1/src-data/1085.png | Bin 0 -> 237 bytes dataeng/Level1/src-data/1086.csv | 2 + dataeng/Level1/src-data/1086.png | Bin 0 -> 235 bytes dataeng/Level1/src-data/1087.csv | 2 + dataeng/Level1/src-data/1087.png | Bin 0 -> 236 bytes dataeng/Level1/src-data/1088.csv | 2 + dataeng/Level1/src-data/1088.png | Bin 0 -> 244 bytes dataeng/Level1/src-data/1089.csv | 2 + dataeng/Level1/src-data/1089.png | Bin 0 -> 220 bytes dataeng/Level1/src-data/1090.csv | 2 + dataeng/Level1/src-data/1090.png | Bin 0 -> 236 bytes dataeng/Level1/src-data/1091.csv | 2 + dataeng/Level1/src-data/1091.png | Bin 0 -> 227 bytes dataeng/Level1/src-data/1092.csv | 2 + dataeng/Level1/src-data/1092.png | Bin 0 -> 230 bytes dataeng/Level1/src-data/1093.csv | 2 + dataeng/Level1/src-data/1093.png | Bin 0 -> 243 bytes dataeng/Level1/src-data/1094.csv | 2 + dataeng/Level1/src-data/1094.png | Bin 0 -> 245 bytes dataeng/Level1/src-data/1095.csv | 2 + dataeng/Level1/src-data/1095.png | Bin 0 -> 246 bytes dataeng/Level1/src-data/1096.csv | 2 + dataeng/Level1/src-data/1096.png | Bin 0 -> 243 bytes dataeng/Level1/src-data/1097.csv | 2 + dataeng/Level1/src-data/1097.png | Bin 0 -> 240 bytes dataeng/Level1/src-data/1098.csv | 2 + dataeng/Level1/src-data/1098.png | Bin 0 -> 247 bytes dataeng/Level1/src-data/1099.csv | 2 + dataeng/Level1/src-data/1099.png | Bin 0 -> 253 bytes 217 files changed, 411 insertions(+) create mode 100644 dataeng/Level1/demo-data/1000.csv create mode 100644 dataeng/Level1/demo-data/1000.png create mode 100644 dataeng/Level1/demo-data/1001.csv create mode 100644 dataeng/Level1/demo-data/1001.png create mode 100644 dataeng/Level1/demo-data/1002.csv create mode 100644 dataeng/Level1/demo-data/1002.png create mode 100644 dataeng/Level1/demo-data/1003.csv create mode 100644 dataeng/Level1/demo-data/1003.png create mode 100644 dataeng/Level1/demo-data/1004.csv create mode 100644 dataeng/Level1/demo-data/1004.png create mode 100644 dataeng/Level1/demo-data/1005.csv create mode 100644 dataeng/Level1/demo-data/1005.png create mode 100644 dataeng/Level1/demo-data/1006.csv create mode 100644 dataeng/Level1/demo-data/1006.png create mode 100644 dataeng/Level1/demo-output/output.csv create mode 100644 dataeng/Level1/image_path_finder.py create mode 100644 dataeng/Level1/processed_data/output.csv create mode 100644 dataeng/Level1/src-data/1000.csv create mode 100644 dataeng/Level1/src-data/1000.png create mode 100644 dataeng/Level1/src-data/1001.csv create mode 100644 dataeng/Level1/src-data/1001.png create mode 100644 dataeng/Level1/src-data/1002.csv create mode 100644 dataeng/Level1/src-data/1002.png create mode 100644 dataeng/Level1/src-data/1003.csv create mode 100644 dataeng/Level1/src-data/1003.png create mode 100644 dataeng/Level1/src-data/1004.csv create mode 100644 dataeng/Level1/src-data/1004.png create mode 100644 dataeng/Level1/src-data/1005.csv create mode 100644 dataeng/Level1/src-data/1005.png create mode 100644 dataeng/Level1/src-data/1006.csv create mode 100644 dataeng/Level1/src-data/1006.png create mode 100644 dataeng/Level1/src-data/1007.csv create mode 100644 dataeng/Level1/src-data/1007.png create mode 100644 dataeng/Level1/src-data/1008.csv create mode 100644 dataeng/Level1/src-data/1008.png create mode 100644 dataeng/Level1/src-data/1009.csv create mode 100644 dataeng/Level1/src-data/1009.png create mode 100644 dataeng/Level1/src-data/1010.csv create mode 100644 dataeng/Level1/src-data/1010.png create mode 100644 dataeng/Level1/src-data/1011.csv create mode 100644 dataeng/Level1/src-data/1011.png create mode 100644 dataeng/Level1/src-data/1012.csv create mode 100644 dataeng/Level1/src-data/1012.png create mode 100644 dataeng/Level1/src-data/1013.csv create mode 100644 dataeng/Level1/src-data/1013.png create mode 100644 dataeng/Level1/src-data/1014.csv create mode 100644 dataeng/Level1/src-data/1014.png create mode 100644 dataeng/Level1/src-data/1015.csv create mode 100644 dataeng/Level1/src-data/1015.png create mode 100644 dataeng/Level1/src-data/1016.csv create mode 100644 dataeng/Level1/src-data/1016.png create mode 100644 dataeng/Level1/src-data/1017.csv create mode 100644 dataeng/Level1/src-data/1017.png create mode 100644 dataeng/Level1/src-data/1018.csv create mode 100644 dataeng/Level1/src-data/1018.png create mode 100644 dataeng/Level1/src-data/1019.csv create mode 100644 dataeng/Level1/src-data/1019.png create mode 100644 dataeng/Level1/src-data/1020.csv create mode 100644 dataeng/Level1/src-data/1020.png create mode 100644 dataeng/Level1/src-data/1021.csv create mode 100644 dataeng/Level1/src-data/1021.png create mode 100644 dataeng/Level1/src-data/1022.csv create mode 100644 dataeng/Level1/src-data/1022.png create mode 100644 dataeng/Level1/src-data/1023.csv create mode 100644 dataeng/Level1/src-data/1023.png create mode 100644 dataeng/Level1/src-data/1024.csv create mode 100644 dataeng/Level1/src-data/1024.png create mode 100644 dataeng/Level1/src-data/1025.csv create mode 100644 dataeng/Level1/src-data/1025.png create mode 100644 dataeng/Level1/src-data/1026.csv create mode 100644 dataeng/Level1/src-data/1026.png create mode 100644 dataeng/Level1/src-data/1027.csv create mode 100644 dataeng/Level1/src-data/1027.png create mode 100644 dataeng/Level1/src-data/1028.csv create mode 100644 dataeng/Level1/src-data/1028.png create mode 100644 dataeng/Level1/src-data/1029.csv create mode 100644 dataeng/Level1/src-data/1029.png create mode 100644 dataeng/Level1/src-data/1030.csv create mode 100644 dataeng/Level1/src-data/1030.png create mode 100644 dataeng/Level1/src-data/1031.csv create mode 100644 dataeng/Level1/src-data/1031.png create mode 100644 dataeng/Level1/src-data/1032.csv create mode 100644 dataeng/Level1/src-data/1032.png create mode 100644 dataeng/Level1/src-data/1033.csv create mode 100644 dataeng/Level1/src-data/1033.png create mode 100644 dataeng/Level1/src-data/1034.csv create mode 100644 dataeng/Level1/src-data/1034.png create mode 100644 dataeng/Level1/src-data/1035.csv create mode 100644 dataeng/Level1/src-data/1035.png create mode 100644 dataeng/Level1/src-data/1036.csv create mode 100644 dataeng/Level1/src-data/1036.png create mode 100644 dataeng/Level1/src-data/1037.csv create mode 100644 dataeng/Level1/src-data/1037.png create mode 100644 dataeng/Level1/src-data/1038.csv create mode 100644 dataeng/Level1/src-data/1038.png create mode 100644 dataeng/Level1/src-data/1039.csv create mode 100644 dataeng/Level1/src-data/1039.png create mode 100644 dataeng/Level1/src-data/1040.csv create mode 100644 dataeng/Level1/src-data/1040.png create mode 100644 dataeng/Level1/src-data/1041.csv create mode 100644 dataeng/Level1/src-data/1041.png create mode 100644 dataeng/Level1/src-data/1042.csv create mode 100644 dataeng/Level1/src-data/1042.png create mode 100644 dataeng/Level1/src-data/1043.csv create mode 100644 dataeng/Level1/src-data/1043.png create mode 100644 dataeng/Level1/src-data/1044.csv create mode 100644 dataeng/Level1/src-data/1044.png create mode 100644 dataeng/Level1/src-data/1045.csv create mode 100644 dataeng/Level1/src-data/1045.png create mode 100644 dataeng/Level1/src-data/1046.csv create mode 100644 dataeng/Level1/src-data/1046.png create mode 100644 dataeng/Level1/src-data/1047.csv create mode 100644 dataeng/Level1/src-data/1047.png create mode 100644 dataeng/Level1/src-data/1048.csv create mode 100644 dataeng/Level1/src-data/1048.png create mode 100644 dataeng/Level1/src-data/1049.csv create mode 100644 dataeng/Level1/src-data/1049.png create mode 100644 dataeng/Level1/src-data/1050.csv create mode 100644 dataeng/Level1/src-data/1050.png create mode 100644 dataeng/Level1/src-data/1051.csv create mode 100644 dataeng/Level1/src-data/1051.png create mode 100644 dataeng/Level1/src-data/1052.csv create mode 100644 dataeng/Level1/src-data/1052.png create mode 100644 dataeng/Level1/src-data/1053.csv create mode 100644 dataeng/Level1/src-data/1053.png create mode 100644 dataeng/Level1/src-data/1054.csv create mode 100644 dataeng/Level1/src-data/1054.png create mode 100644 dataeng/Level1/src-data/1055.csv create mode 100644 dataeng/Level1/src-data/1055.png create mode 100644 dataeng/Level1/src-data/1056.csv create mode 100644 dataeng/Level1/src-data/1056.png create mode 100644 dataeng/Level1/src-data/1057.csv create mode 100644 dataeng/Level1/src-data/1057.png create mode 100644 dataeng/Level1/src-data/1058.csv create mode 100644 dataeng/Level1/src-data/1058.png create mode 100644 dataeng/Level1/src-data/1059.csv create mode 100644 dataeng/Level1/src-data/1059.png create mode 100644 dataeng/Level1/src-data/1060.csv create mode 100644 dataeng/Level1/src-data/1060.png create mode 100644 dataeng/Level1/src-data/1061.csv create mode 100644 dataeng/Level1/src-data/1061.png create mode 100644 dataeng/Level1/src-data/1062.csv create mode 100644 dataeng/Level1/src-data/1062.png create mode 100644 dataeng/Level1/src-data/1063.csv create mode 100644 dataeng/Level1/src-data/1063.png create mode 100644 dataeng/Level1/src-data/1064.csv create mode 100644 dataeng/Level1/src-data/1064.png create mode 100644 dataeng/Level1/src-data/1065.csv create mode 100644 dataeng/Level1/src-data/1065.png create mode 100644 dataeng/Level1/src-data/1066.csv create mode 100644 dataeng/Level1/src-data/1066.png create mode 100644 dataeng/Level1/src-data/1067.csv create mode 100644 dataeng/Level1/src-data/1067.png create mode 100644 dataeng/Level1/src-data/1068.csv create mode 100644 dataeng/Level1/src-data/1068.png create mode 100644 dataeng/Level1/src-data/1069.csv create mode 100644 dataeng/Level1/src-data/1069.png create mode 100644 dataeng/Level1/src-data/1070.csv create mode 100644 dataeng/Level1/src-data/1070.png create mode 100644 dataeng/Level1/src-data/1071.csv create mode 100644 dataeng/Level1/src-data/1071.png create mode 100644 dataeng/Level1/src-data/1072.csv create mode 100644 dataeng/Level1/src-data/1072.png create mode 100644 dataeng/Level1/src-data/1073.csv create mode 100644 dataeng/Level1/src-data/1073.png create mode 100644 dataeng/Level1/src-data/1074.csv create mode 100644 dataeng/Level1/src-data/1074.png create mode 100644 dataeng/Level1/src-data/1075.csv create mode 100644 dataeng/Level1/src-data/1075.png create mode 100644 dataeng/Level1/src-data/1076.csv create mode 100644 dataeng/Level1/src-data/1076.png create mode 100644 dataeng/Level1/src-data/1077.csv create mode 100644 dataeng/Level1/src-data/1077.png create mode 100644 dataeng/Level1/src-data/1078.csv create mode 100644 dataeng/Level1/src-data/1078.png create mode 100644 dataeng/Level1/src-data/1079.csv create mode 100644 dataeng/Level1/src-data/1079.png create mode 100644 dataeng/Level1/src-data/1080.csv create mode 100644 dataeng/Level1/src-data/1080.png create mode 100644 dataeng/Level1/src-data/1081.csv create mode 100644 dataeng/Level1/src-data/1081.png create mode 100644 dataeng/Level1/src-data/1082.csv create mode 100644 dataeng/Level1/src-data/1082.png create mode 100644 dataeng/Level1/src-data/1083.csv create mode 100644 dataeng/Level1/src-data/1083.png create mode 100644 dataeng/Level1/src-data/1084.csv create mode 100644 dataeng/Level1/src-data/1084.png create mode 100644 dataeng/Level1/src-data/1085.csv create mode 100644 dataeng/Level1/src-data/1085.png create mode 100644 dataeng/Level1/src-data/1086.csv create mode 100644 dataeng/Level1/src-data/1086.png create mode 100644 dataeng/Level1/src-data/1087.csv create mode 100644 dataeng/Level1/src-data/1087.png create mode 100644 dataeng/Level1/src-data/1088.csv create mode 100644 dataeng/Level1/src-data/1088.png create mode 100644 dataeng/Level1/src-data/1089.csv create mode 100644 dataeng/Level1/src-data/1089.png create mode 100644 dataeng/Level1/src-data/1090.csv create mode 100644 dataeng/Level1/src-data/1090.png create mode 100644 dataeng/Level1/src-data/1091.csv create mode 100644 dataeng/Level1/src-data/1091.png create mode 100644 dataeng/Level1/src-data/1092.csv create mode 100644 dataeng/Level1/src-data/1092.png create mode 100644 dataeng/Level1/src-data/1093.csv create mode 100644 dataeng/Level1/src-data/1093.png create mode 100644 dataeng/Level1/src-data/1094.csv create mode 100644 dataeng/Level1/src-data/1094.png create mode 100644 dataeng/Level1/src-data/1095.csv create mode 100644 dataeng/Level1/src-data/1095.png create mode 100644 dataeng/Level1/src-data/1096.csv create mode 100644 dataeng/Level1/src-data/1096.png create mode 100644 dataeng/Level1/src-data/1097.csv create mode 100644 dataeng/Level1/src-data/1097.png create mode 100644 dataeng/Level1/src-data/1098.csv create mode 100644 dataeng/Level1/src-data/1098.png create mode 100644 dataeng/Level1/src-data/1099.csv create mode 100644 dataeng/Level1/src-data/1099.png diff --git a/dataeng/Level1/demo-data/1000.csv b/dataeng/Level1/demo-data/1000.csv new file mode 100644 index 00000000..afd57739 --- /dev/null +++ b/dataeng/Level1/demo-data/1000.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Susan, Lee, 612302400000 diff --git a/dataeng/Level1/demo-data/1000.png b/dataeng/Level1/demo-data/1000.png new file mode 100644 index 0000000000000000000000000000000000000000..b319625eca7797f1214f324ba5d88757abd67083 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMt)4E9Ar*7p-aN?JVj#j0D7yYz zqIdK{-AK0sYJ2l!r|Ci5a?e3qU zo92BGHfTs=ILiM`{C-8!d`^2t<_xwAJPSnUvKK}Dy?^~r-VaU*2V;=3&p?&4 z7)_Wn+G`KIXJ&w?>%G4HNu^xI0f>z2`_^~+_UA86spo(h6k03)gZ-g;0z)o)nw53p Uf?UIJpa&Q{UHx3vIVCg!0NCcXxkP#ow|=&DYh_pb?QQv7bJI*Y2Yu!Y@AC(r*X_-_-&cC#pXs6V z4U8tt8EhB2N)xV>{(5b*HtU#h9UIRANeAPGurHV|+K6b-+3 zJi8)d{lnBvMQ_cxn>hpRng73yYWiY)p)Bh7luH6PUG_J`v0Zrf=it71+uOG#@2uTd zvM==Y*Uz6HswXgyb2$d`YA`@;oRoo~GM{%`zy{+%C$4I0wGs!W(O*e>ua z2z|?(|M%bJs=2fND*j>NSs>|P++bFjTg46RcwbDVKC8mIo5M Z85X%JNhj4^>IQm&!PC{xWt~$(695_DW3>PP literal 0 HcmV?d00001 diff --git a/dataeng/Level1/demo-data/1003.csv b/dataeng/Level1/demo-data/1003.csv new file mode 100644 index 00000000..da0e51ea --- /dev/null +++ b/dataeng/Level1/demo-data/1003.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Vernon, Evans, 633733200000 diff --git a/dataeng/Level1/demo-data/1003.png b/dataeng/Level1/demo-data/1003.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2eae48f0b77289eb0b10553d9c2d9b5306f10b GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM)t)YnAr*7p-aN?JVj$oUxL7Pn z_FI2xgp-uOo@Waz7JZWa@qXK+P+ykB*1|JHp|>zLRsfK+k+<@*!)i&Fxq zJdNQj!z@M<<_xwAPQQ;_`91%{uP?#|5aHjH L{an^LB{Ts5Cy-nw literal 0 HcmV?d00001 diff --git a/dataeng/Level1/demo-data/1004.csv b/dataeng/Level1/demo-data/1004.csv new file mode 100644 index 00000000..f32edb85 --- /dev/null +++ b/dataeng/Level1/demo-data/1004.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Maria, Crooks, 1051214400000 diff --git a/dataeng/Level1/demo-data/1004.png b/dataeng/Level1/demo-data/1004.png new file mode 100644 index 0000000000000000000000000000000000000000..52951dfa34dac80df8c507e700344c4a094476bf GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMy`Cd?bmLt-emrlVK2`DNeAPGG={Sbw|-P_ zsIy<$y}a`0@81_|H$8X%xBU+bLVgyb33JBdpPH5KzyE1Znco27vR!a`ecgceA4yI zpS&M}1`TNpXBlptx4JOvy8H8&p;gyreo#&T3e95N67s$?{OtGL*M+|`mnQ**qJA{| z`LCP1_ bool: + """ + Given the path to the .csv file and the user id, create the data needed and then + append it to output_file/output.csv. + :param output_file: path to where the output file should be. + :param user_id: user id to be added to the output file. + :param path_to_csv: path to the .csv file. + :return: true if the output.csv was changed, false if not. + """ + if not os.path.isfile(output_file + "/output.csv"): + f = open(output_file + "/output.csv", "w+") + f.close() + r = csv.reader(open(output_file + "/output.csv", "r+")) + lines = list(r) + if not len(lines): + lines.append(["user_id", " first_name", " last_name", " birthts", " img_path"]) + jpg_path = path_to_csv[:-4] + jpg_path += ".png" + jpg_path = " " + jpg_path + line_to_write = [str(user_id), *list(csv.reader(open(path_to_csv, "r+")))[1], jpg_path] + line_to_write[1] = " " + line_to_write[1] + for i in range(len(lines)): + if lines[i][0] == line_to_write[0]: + if lines[i] == line_to_write: + return False + else: + lines[i] = line_to_write + break + else: + lines.append(line_to_write) + w = csv.writer(open(output_file + "/output_temp.csv", "w+")) + w.writerows(lines) + os.remove(output_file + "/output.csv") + os.rename(output_file + "/output_temp.csv", output_file + "/output.csv") + return True + + +def find_png(input_path: str) -> int: + """ + Takes a path to a .csv file and checks if there's a .png file with the same name in the same directory. + if the file exists then returns the name of the file (since this is also the user id), if it doesn't exist + return -1. + :param input_path: path to the .csv file. + :return: user id if the file exists or -1 otherwise. + """ + user_id = int(pathlib.Path(input_path).stem) + input_path = input_path[:-4] + input_path += ".png" + if os.path.isfile(input_path): + return user_id + return -1 + + +def process(input_path: str, output_path: str) -> (int, list): + """ + Reads all files in input_path (absolute path). looks for a .png and a .csv files that have the same name and + combines them. Stores output in output_path/output.csv. + Returns the number of files found and their names. + :param input_path: path used for finding the input. + :param output_path: path used for finding the output file. + :return: number of files found and their names. + """ + if not os.path.exists(os.path.dirname(input_path)): + raise ValueError("This directory doesn't exist") + count = 0 + filenames = [] + for filename in os.listdir(input_path): + if filename.endswith('.csv'): + user_id = find_png(input_path + "/" + filename) + if user_id == -1: + continue + if append_to_csv(output_path, user_id, input_path + "/" + filename): + count += 1 + filenames.append(pathlib.Path(filename).stem) + filenames.sort() + return count, filenames + + +if __name__ == "__main__": + print(process("/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/demo-data", "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/demo-output")) + istr = input("Enter the input absolute path: ") + ostr = input("Enter the output absolute path: ") + print(process(istr, ostr)) \ No newline at end of file diff --git a/dataeng/Level1/processed_data/output.csv b/dataeng/Level1/processed_data/output.csv new file mode 100644 index 00000000..3e70f6d8 --- /dev/null +++ b/dataeng/Level1/processed_data/output.csv @@ -0,0 +1,101 @@ +user_id, first_name, last_name, birthts, img_path +1037, Patrick, Newell, 853794000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1037.png +1084, Jody, Hochmuth, 752446800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1084.png +1057, Chad, Miller, 971208000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1057.png +1036, Ellen, Folkers, 821394000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1036.png +1040, Clara, Kimble, 765403200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1040.png +1035, Adolph, Raymond, 955915200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1035.png +1071, Jerome, Weaver, 1008795600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1071.png +1058, Olivia, Stout, 690674400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1058.png +1028, Martha, Burwell, 503269200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1028.png +1075, Stacey, Bishop, 493848000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1075.png +1044, Christopher, Hardin, 785883600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1044.png +1055, Jaclyn, Adams, 614635200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1055.png +1006, Rick, Mayfield, 412549200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1006.png +1054, Melissa, Denny, 482011200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1054.png +1003, Vernon, Evans, 633733200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1003.png +1048, Larry, Sanchez, 1068930000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1048.png +1078, David, May, 601074000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1078.png +1033, Jeanne, Shoup, 1018468800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1033.png +1067, Joseph, Carter, 1081713600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1067.png +1047, Kenneth, Osborn, 793918800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1047.png +1072, Morris, Hall, 407019600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1072.png +1085, Beverly, Livesey, 739224000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1085.png +1049, Brian, Brown, 814050000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1049.png +1062, Robert, Kirk, 506552400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1062.png +1061, Madelyn, Oliver, 936907200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1061.png +1039, Danielle, Robinson, 887230800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1039.png +1042, James, Nance, 1063051200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1042.png +1056, Frances, Visher, 906580800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1056.png +1014, Kim, Moore, 403218000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1014.png +1019, Wendy, Jarrette, 650145600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1019.png +1017, Lewis, Erickson, 642283200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1017.png +1080, Mary, Nelson, 518644800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1080.png +1032, Robert, David, 666997200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1032.png +1002, Nathan, Emery, 697237200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1002.png +1013, Shaneka, Cook, 752533200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1013.png +1023, Michael, Diaz, 630277200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1023.png +1008, Coletta, Haring, 768081600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1008.png +1020, Becky, Hanner, 883429200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1020.png +1089, Leah, Costales, 1072472400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1089.png +1066, Jeffrey, Mcdonald, 686091600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1066.png +1022, John, Rose, 919630800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1022.png +1029, Jimmy, Deane, 947365200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1029.png +1087, Aaron, Fox, 1090094400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1087.png +1031, Sidney, Woods, 865972800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1031.png +1046, Margaret, Diaz, 942872400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1046.png +1051, Janet, Chavarria, 1087588800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1051.png +1098, Maria, Horton, 702504000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1098.png +1088, Rachel, Robinson, 528148800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1088.png +1038, Mary, Roman, 750891600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1038.png +1065, Matthew, Bloom, 531176400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1065.png +1097, John, Bausch, 1013029200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1097.png +1026, James, Henry, 954705600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1026.png +1041, David, Bailey, 1062446400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1041.png +1052, Carolyn, Seymore, 385851600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1052.png +1076, Ray, Goins, 933451200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1076.png +1016, Betty, Partin, 467240400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1016.png +1030, Kathleen, Gittens, 921272400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1030.png +1043, John, Ramage, 378507600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1043.png +1004, Maria, Crooks, 1051214400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1004.png +1001, Rosa, Garcia, 670626000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1001.png +1081, Amy, Smith, 785710800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1081.png +1095, Corey, Davis, 1054411200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1095.png +1011, Glen, Martin, 636066000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1011.png +1009, Margaret, Smith, 388612800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1009.png +1091, Opal, Morse, 463780800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1091.png +1073, Myrtle, Ferro, 840830400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1073.png +1053, Dorothy, Massey, 356990400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1053.png +1021, Ray, Nunes, 352501200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1021.png +1079, Cindy, Wilcox, 1021060800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1079.png +1082, Joseph, Denton, 463089600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1082.png +1083, Keith, Wiggin, 461707200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1083.png +1074, Gisela, Patterson, 464990400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1074.png +1007, Eddie, Baumbach, 874526400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1007.png +1094, Cecil, Struck, 416437200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1094.png +1063, Stephanie, Nelson, 476571600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1063.png +1005, Sharon, Lang, 700606800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1005.png +1018, Jenee, Crouse, 429566400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1018.png +1060, Judith, Hatchett, 925070400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1060.png +1034, Brenda, Croyle, 788302800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1034.png +1027, Gregory, Pittman, 398894400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1027.png +1045, Suzanne, Ferguson, 812581200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1045.png +1015, Lorraine, Bingham, 891288000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1015.png +1025, Dino, Miller, 1074805200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1025.png +1064, Barbara, Blankenship, 655506000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1064.png +1093, Aaron, Towe, 877809600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1093.png +1068, Eloy, Florentino, 848005200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1068.png +1092, Alan, Mcgraw, 469054800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1092.png +1096, James, Peacock, 503442000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1096.png +1086, Nicole, Pharr, 884552400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1086.png +1000, Susan, Lee, 612302400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1000.png +1024, William, Quick, 340059600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1024.png +1050, Warren, Green, 443048400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1050.png +1090, Thomas, Williams, 946501200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1090.png +1010, James, Martin, 879627600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1010.png +1059, Wallace, Miller, 821134800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1059.png +1077, Blake, Dickerson, 508107600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1077.png +1012, Debbie, Mooney, 423086400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1012.png +1070, Elizabeth, Hoover, 334702800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1070.png +1099, Samuel, Ladner, 815259600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1099.png +1069, David, Myles, 432676800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1069.png diff --git a/dataeng/Level1/src-data/1000.csv b/dataeng/Level1/src-data/1000.csv new file mode 100644 index 00000000..afd57739 --- /dev/null +++ b/dataeng/Level1/src-data/1000.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Susan, Lee, 612302400000 diff --git a/dataeng/Level1/src-data/1000.png b/dataeng/Level1/src-data/1000.png new file mode 100644 index 0000000000000000000000000000000000000000..b319625eca7797f1214f324ba5d88757abd67083 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMt)4E9Ar*7p-aN?JVj#j0D7yYz zqIdK{-AK0sYJ2l!r|Ci5a?e3qU zo92BGHfTs=ILiM`{C-8!d`^2t<_xwAJPSnUvKK}Dy?^~r-VaU*2V;=3&p?&4 z7)_Wn+G`KIXJ&w?>%G4HNu^xI0f>z2`_^~+_UA86spo(h6k03)gZ-g;0z)o)nw53p Uf?UIJpa&Q{UHx3vIVCg!0NCcXxkP#ow|=&DYh_pb?QQv7bJI*Y2Yu!Y@AC(r*X_-_-&cC#pXs6V z4U8tt8EhB2N)xV>{(5b*HtU#h9UIRANeAPGurHV|+K6b-+3 zJi8)d{lnBvMQ_cxn>hpRng73yYWiY)p)Bh7luH6PUG_J`v0Zrf=it71+uOG#@2uTd zvM==Y*Uz6HswXgyb2$d`YA`@;oRoo~GM{%`zy{+%C$4I0wGs!W(O*e>ua z2z|?(|M%bJs=2fND*j>NSs>|P++bFjTg46RcwbDVKC8mIo5M Z85X%JNhj4^>IQm&!PC{xWt~$(695_DW3>PP literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1003.csv b/dataeng/Level1/src-data/1003.csv new file mode 100644 index 00000000..da0e51ea --- /dev/null +++ b/dataeng/Level1/src-data/1003.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Vernon, Evans, 633733200000 diff --git a/dataeng/Level1/src-data/1003.png b/dataeng/Level1/src-data/1003.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2eae48f0b77289eb0b10553d9c2d9b5306f10b GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM)t)YnAr*7p-aN?JVj$oUxL7Pn z_FI2xgp-uOo@Waz7JZWa@qXK+P+ykB*1|JHp|>zLRsfK+k+<@*!)i&Fxq zJdNQj!z@M<<_xwAPQQ;_`91%{uP?#|5aHjH L{an^LB{Ts5Cy-nw literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1004.csv b/dataeng/Level1/src-data/1004.csv new file mode 100644 index 00000000..f32edb85 --- /dev/null +++ b/dataeng/Level1/src-data/1004.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Maria, Crooks, 1051214400000 diff --git a/dataeng/Level1/src-data/1004.png b/dataeng/Level1/src-data/1004.png new file mode 100644 index 0000000000000000000000000000000000000000..52951dfa34dac80df8c507e700344c4a094476bf GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMy`Cd?bmLt-emrlVK2`DNeAPGG={Sbw|-P_ zsIy<$y}a`0@81_|H$8X%xBU+bLVgyb33JBdpPH5KzyE1Znco27vR!a`ecgceA4yI zpS&M}1`TNpXBlptx4JOvy8H8&p;gyreo#&T3e95N67s$?{OtGL*M+|`mnQ**qJA{| z`LCP1_mbC zVP5e66tB!7HRT&wihm}wJU+ZPYLUA`a*5tjpP9N}ShpB8Y;)t=wQX_Mg}-*~eV?b* zvGFXBbTDo(+bz}vqSF}Oezr46+ADXl=-wCO1ctK=vlzEr`0envc9;0~RwDzT0^Qn% z-%cjX8EhAL7VzE_|0SJ%FVdQ&MBb@0I8E%+5i9m literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1008.csv b/dataeng/Level1/src-data/1008.csv new file mode 100644 index 00000000..6dea1c5e --- /dev/null +++ b/dataeng/Level1/src-data/1008.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Coletta, Haring, 768081600000 diff --git a/dataeng/Level1/src-data/1008.png b/dataeng/Level1/src-data/1008.png new file mode 100644 index 0000000000000000000000000000000000000000..39f190947dee36ba0c7abaa9cca0841a02509a99 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM-JULvAr*7p-rUIBY#_m!=wNcQ z$x>3GIE|%z%gR^<%Z+DWdVc@vV)s|5?`)J;rp>{r{WuhlOVWNN(FX3*q~3`EB3-w*Dw=09G2cmH*GLfAebPG9vw9%EIn)_x{>% zmvtXm>@BnZz2{p#*i1M8GX6)yviC<8zpGFCQwP&!_SE|0S3j3^P6* z=#a=tJT?-y5#&^%0Zb%qgCy6#ardBb7ndR=@A_s$ZY>t&Npi z^mN}t^#q2q46_(bm^0We@GOvYs9wvy@80|D``4>ABlBD4H$Y@A{da#=`#0~)E%z!e zdq#-bv-2h%1nDqt2-_m}qO{KDk&M+J7Kq5TFZByAdVQOI$o~Mu@ORu7c^2GV9is4K U`TlK>f$nGUboFyt=akR{0N&1ETmS$7 literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1011.csv b/dataeng/Level1/src-data/1011.csv new file mode 100644 index 00000000..380495e7 --- /dev/null +++ b/dataeng/Level1/src-data/1011.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Glen, Martin, 636066000000 diff --git a/dataeng/Level1/src-data/1011.png b/dataeng/Level1/src-data/1011.png new file mode 100644 index 0000000000000000000000000000000000000000..c9970adb75113a35ed16721af230e72d1f8f4a57 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMEuJopAr*7p-a5_MY9PW8s5~uE zwdpE%SQ4Y=!L?1@9*ZV(7f%za;S>Mz)6?>~;--mq4N+_tmQ8X!z0of3{`0jb9k0Bx z|HHzwK+?gup=>wb9$WeE8|+{L-%kE@Sp8M?kpBUOS&Syk8QWhwtbT5jfAvq^4^9c7 zhBOA<*!vUz{L7Z*F3nosjia-}>*9qR+?v;FNGM2Fm82RGq2Bis;>iZq6`nf4#pAF3xXyk*+4Mpwr6Ex#$y O?F^o-elF{r5}E+XqFUqt literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1013.csv b/dataeng/Level1/src-data/1013.csv new file mode 100644 index 00000000..a1a422ae --- /dev/null +++ b/dataeng/Level1/src-data/1013.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Shaneka, Cook, 752533200000 diff --git a/dataeng/Level1/src-data/1013.png b/dataeng/Level1/src-data/1013.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbe8e12075a32a6ce4e4f6ecc9bf5647e60d068 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM)t)YnAr*7p-aN?JU?9NYI5i|i zJ}g`Q+9al$AE5>l1Rhmw_$=%a%cpeF^0|%cwhR0hPBYA6G-1wQyTG$x>Fq=Rw8w+j9(>%K27-BoITq4@p>VS|P= zhO-P&SL+^}KjeP^V&Xq}u+lV!+!OyB1@G5;!DZ^i7fCwoX882bG(Os{a~jau44$rj JF6*2UngEi_Scm`s literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1014.csv b/dataeng/Level1/src-data/1014.csv new file mode 100644 index 00000000..ed86a7d1 --- /dev/null +++ b/dataeng/Level1/src-data/1014.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Kim, Moore, 403218000000 diff --git a/dataeng/Level1/src-data/1014.png b/dataeng/Level1/src-data/1014.png new file mode 100644 index 0000000000000000000000000000000000000000..c34b99549a5807631ba1fd1c87682c9c2c88cb5e GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM1D-C9Ar*7p-nz(n$Uwv`Q9JfX zugsy1GKYF&6qSES9Z5ReYx}QYpZP)$KJiK0N;22Zoiz6)Ylx&n^l$n8+n*o1UjO}c z!qGjqH_!XQDdAw;kj9Yvx9;Q)<@1x_{FOGs`ES23)_U&zhlOW>Bv8?|*D?}!-*5l+ zHS+)E?)eRjCd?UZ7rfrLy1jp#K9_$lOy}9}PGA|H1%IDZFO2;Dw@!b`0ft$OTYfZL h`h38?1E_P0xLTvZ!s9>1B7uHk@O1TaS?83{1OO%>YXblP literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1015.csv b/dataeng/Level1/src-data/1015.csv new file mode 100644 index 00000000..e7f4f92d --- /dev/null +++ b/dataeng/Level1/src-data/1015.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Lorraine, Bingham, 891288000000 diff --git a/dataeng/Level1/src-data/1015.png b/dataeng/Level1/src-data/1015.png new file mode 100644 index 0000000000000000000000000000000000000000..79e4cb668bae0632dcaddfdcbfafe8529503b6df GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMjh-%!Ar*7p-nz)y>>$8!Q9|c* z*_s1ZYYvp@yzu%EU7(owUPkO$ZC58Bch~aZ?6<);r`t8^FlQ7$JN|s5eO~;vwWt5> z*RW?~&S1O1vp~|pxFL<9}jz{YJ+{N89jb$$cm7H;vSniGtc%UuOJ Op25@A&t;ucLK6VnSY7x4 literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1016.csv b/dataeng/Level1/src-data/1016.csv new file mode 100644 index 00000000..c08470fd --- /dev/null +++ b/dataeng/Level1/src-data/1016.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Betty, Partin, 467240400000 diff --git a/dataeng/Level1/src-data/1016.png b/dataeng/Level1/src-data/1016.png new file mode 100644 index 0000000000000000000000000000000000000000..e929ea787a7f34a2fce077cb0c2bb7cf33f72f30 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJML!K^+gUGOq*8z=vMLGW##oR_MQ*?!@{#b(!sdF>}kx3 z>Cc@`f_UBhGm7*|uKp7HC~VM>#&DJ)>av}|?>+TT_A1pev0VTu$^KQlAnn`#)~F-? l2N-67Y;yj6Ko-Qg#kVNaJbn6Jke?VBJYD@<);T3K0RVgVXI=mR literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1017.csv b/dataeng/Level1/src-data/1017.csv new file mode 100644 index 00000000..8ae81034 --- /dev/null +++ b/dataeng/Level1/src-data/1017.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Lewis, Erickson, 642283200000 diff --git a/dataeng/Level1/src-data/1017.png b/dataeng/Level1/src-data/1017.png new file mode 100644 index 0000000000000000000000000000000000000000..f20ea9eb4ba83995775a3b3415e8b27639df526d GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMEuJopAr*7p-ZbQDF%V%0oH|7; z?o@E~N)fpOVMh~GUi?Um+pdt^#=q|5H_PXGn;PRBw3#z9|0m9QcDno8o|;WFHqZLn zGQWY*ggJxl0?z_T2jhk`hPCT&3h&?RpYikG2Vnys|185Sn1ZFhy-#_){}|6@&j`^W zd#-h!-F5HhX8z|Zquxo^F+q%3eT#q3-#z(1YdK&FL;w2!Nq?xGz>v$#qN$~_J^pAr P(ESXau6{1-oD!M<8AV&W literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1018.csv b/dataeng/Level1/src-data/1018.csv new file mode 100644 index 00000000..a8f8b2fd --- /dev/null +++ b/dataeng/Level1/src-data/1018.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Jenee, Crouse, 429566400000 diff --git a/dataeng/Level1/src-data/1018.png b/dataeng/Level1/src-data/1018.png new file mode 100644 index 0000000000000000000000000000000000000000..59fd4b1bd1eca36ad34e74ac18793b7599e21553 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM&7LlfAr*7p-ty&YHV|+~RKEL7 zZr$Ghk}=gi4*Czm92FC#|P+>pj_mLbY=zi@v=Tz`h;{4c@=5FyErxnIuy_WZ>u0ao;Olii1s zzwfT@wiB?dg9)Bxn8j!UGRo<{_^ZF?j33!5{$+s}YnD>`!1twk0>fK|X_{&=Hw6

FVdQ&MBb@04us!-~a#s literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1019.csv b/dataeng/Level1/src-data/1019.csv new file mode 100644 index 00000000..8fd5eefd --- /dev/null +++ b/dataeng/Level1/src-data/1019.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Wendy, Jarrette, 650145600000 diff --git a/dataeng/Level1/src-data/1019.png b/dataeng/Level1/src-data/1019.png new file mode 100644 index 0000000000000000000000000000000000000000..7f45462b204b2f4b4e96a565402cd7c52565873a GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM6P_-PAr*7p&N|3>*nr1%_9e%v z7b17(`&@K(|G;6(F12Ce+0*Uc`xI|fa_F2qbuDVQYVmUW1zk)g{i5A<^WN`2AAi60 zSKLRzfCe{4Db@_W$_H=$$US|tCw^mH4U5QvK%np}XE}+r*TbLp$~{tEz|hNN!gXQF zuf~hJ>ci$I*cYgR6sg56$hI?xT7SN3zqKN1dTaATBW&A3%K`Rmt)`>m4#f&5t&jjCS{Xk24H2{O@lkHgFV2Q<>>a4u1#6S>~6X+A|#f*6|AH9|liXKbLh*2~7axW@AwR literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1021.csv b/dataeng/Level1/src-data/1021.csv new file mode 100644 index 00000000..d995050c --- /dev/null +++ b/dataeng/Level1/src-data/1021.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Ray, Nunes, 352501200000 diff --git a/dataeng/Level1/src-data/1021.png b/dataeng/Level1/src-data/1021.png new file mode 100644 index 0000000000000000000000000000000000000000..a89a33b1bce2d74173a0a2e8272e0047bcb427b3 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJML!K^3&?E=pNNwCCOhFd50NcWz5I`PHN#OtMf zxBL$<%wjZQ&RF@Ld3D(L-(BB?4S@R3GDN-l?U3^IPW`cBCzzqSU*j}3W$#~K)1C)2 kbm}|i{|o-I@GPihjIT4<7;>v_G0-;*p00i_>zopr0Iun0eEP!M6b$fN)8 zr&aj#;@5(=wrP0zEaU%N*6Pw6;I;JHEuouU_YY_=XZ)-Q*#7IJ>*+YX^XGTe{g58x=^>E{OezS|NCHK_ zy|TTqd*6H0Pj?mm@PL#7O?l63!koc&foH+b{Q_qhW-$VJ@7RF?d{q`&(>$5?`vP6e N;OXk;vd$@?2>>n)SCIe! literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1023.csv b/dataeng/Level1/src-data/1023.csv new file mode 100644 index 00000000..cb7037f7 --- /dev/null +++ b/dataeng/Level1/src-data/1023.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Michael, Diaz, 630277200000 diff --git a/dataeng/Level1/src-data/1023.png b/dataeng/Level1/src-data/1023.png new file mode 100644 index 0000000000000000000000000000000000000000..c965dbcc50dea9600c1adfeef0766ccb3f883f97 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMZJsWUAr*7p-g4w>HV|+K6y<+- zZ+At;`$zXu`yPZj7B-zYf1rN%w18id2ANy+mzK=r{UZM36vM5Gx{W@!-!3YhpMO6; zvGy0IgoANI8pGP}IxHaiEW@oI`bj~`$%jach#giCbkPa3nU#r dS1JNUnL9d-rl=ih-v{&ogQu&X%Q~loCID4`WOe`m literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1024.csv b/dataeng/Level1/src-data/1024.csv new file mode 100644 index 00000000..b648b695 --- /dev/null +++ b/dataeng/Level1/src-data/1024.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +William, Quick, 340059600000 diff --git a/dataeng/Level1/src-data/1024.png b/dataeng/Level1/src-data/1024.png new file mode 100644 index 0000000000000000000000000000000000000000..0731223548d907699976b124a19fbd68e3553a36 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMy`Cr3?nhO-Q_7`Lpny>Qw3`r>bH+J9Mi7Dzf6H*8DcUt{sU`jYzopr0Df&}jQ{`u literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1025.csv b/dataeng/Level1/src-data/1025.csv new file mode 100644 index 00000000..48fcc892 --- /dev/null +++ b/dataeng/Level1/src-data/1025.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Dino, Miller, 1074805200000 diff --git a/dataeng/Level1/src-data/1025.png b/dataeng/Level1/src-data/1025.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c3245067f1ef79c456da16265af817b2a866dd GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMHJ&bxAr*7p-ZJEBP>^tV$g}+1 zMNg{=^_K#EXV>yNcAa|M{yo>#ga6` zYF*bR_ccHHrh>&EVU4G9JGXg-YqPwOv*y$3H|Otb&|uDZT$mi^HMu$Ob;-}_{>RJb zH!zwoXRuvhyWg6?c7bPsq{Hf8auvVp{y+WqQayp;EW<3uEgvhVSFe5dT@WsCxp=|x zTB}9RsxJ8-04e|)u(0$|*!kWQm6wqO?!9I+O1%uE4T+={2iVv&;4hrx<22nlNXuUEo=ut1JHY_0L~F z%S`UteffRa{{Td4Ve6jqzyEgGDg9;PSs>|P-0NTAahJYD@< J);T3K0RSG?S1rgU(`So9RpYMF)1ZnDJGFe%x_`8u0%Bla#eDVF46NRVL7l7orF1-22-xG8EyVQQT jHM-AR-Gb~GSu^Uq9@?h}hP4L({lnnt>gTe~DWM4fpCV(6 literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1029.csv b/dataeng/Level1/src-data/1029.csv new file mode 100644 index 00000000..2fb9c552 --- /dev/null +++ b/dataeng/Level1/src-data/1029.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Jimmy, Deane, 947365200000 diff --git a/dataeng/Level1/src-data/1029.png b/dataeng/Level1/src-data/1029.png new file mode 100644 index 0000000000000000000000000000000000000000..8db3311d2da45bdcbb619c04af9f9106a58c86a9 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM-JULvAr*7p-ZbQ5G8Ax2RGxQ8 zIHKbJ9{xQ1+bi(K@rIi>bN7Dt-lSd27|M1bZ>qfgyY=(u@3%j% zdVjv4JtK1l+XbElzH^xu|9>B<_1yUn3(o>c2jhloebygW{ro-CuZC>xYd+cs^ z*o7p3D#YXis_YFmRo7c|&2L~d0U6}={J_ocyRFZ)|KJ3vNMp!-wex~~H%uC2@^7YP XPc)A{Td|@G=nV!>S3j3^P6HV|+KRF3>2 zW9#~U|0~U^Hl5hA?1cw8J8Rhf-HzPy)p&u*mMzz|ohkdpmL}=2`g!y9&l0T0RERb|CZus_DF5>H)xTWRx=`Yn27|t@xV%)OwtAqcOpR$6H;Y;Q> zFq$xDuw8idRrCA%|7X@XU-CZyR00-*7!dYnJB>Ar*7p-gM+@P!M6b$g}=} zt*zJhoX3KD7 zkj8M9A?npnF{xVr^_MoEZ;5AQ&S1O1v!L`XbG=v{E6)N+2V=0JS&Syk8Ryu+l9CRm z-!HdW{EThw2kiu)0kaslthD@i{Xg@$PGyjhx-|{ONkBpA^M6%qzqGB|19UBer>mdK II;Vst0Kv>v1ONa4 literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1032.csv b/dataeng/Level1/src-data/1032.csv new file mode 100644 index 00000000..2f6cd114 --- /dev/null +++ b/dataeng/Level1/src-data/1032.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Robert, David, 666997200000 diff --git a/dataeng/Level1/src-data/1032.png b/dataeng/Level1/src-data/1032.png new file mode 100644 index 0000000000000000000000000000000000000000..320c71e201b787420a1c596debde3ae362298a2d GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMt)4E9Ar*7p-ZbQDF%WPF6qU~A ze->#wW5T&>VciQ7r@TKMO0>%yBUdU8r`~66|=K)i+dk*tIeHMd;G={T4 zgZ@wZ_IKa5_1EpxjqI1iGcsp@OlqCS|Htu{C{)ej$^*}t<&D4^W_HV|+KoT?N1 zHO#g!KXlUvhP&G?Jm68RVf%MGa?ROvhrr$6?`=QDSH-xQXTjF@y`Mk&)c&m6|F6!@ z%CGGIiTBgyH!zwoXRuwk^;hrp`R~Tp+dl~#G^8<{Ww>>|G@-<9naj1{IwrOYJPRZp zxbO0(q|X0*M#G*Fq=RQc>plK}@0=6APJtOR%|<-xqg}<4KP({i#tqwk&$pZbF&`xG Zo53hq``bSsQIMw?JYD@<);T3K0RSsOVD}~`Y!iD5N+I0X32l&?R(|lUpr=fT{6Fc(S$jJ?ZT>i+*_;ue{TIEY|xO#aF!wJ zYVm{o=Z%{Y{O^s+pEvG)?zZ~(oTV^bPWL*V?V8*DQ}$IK?oF(S$jJ?E=pN-ih7MOKoiT z`P^219zU^;2_z=zpncr5@U`__p`Uf~uJdNYM5|M6KP>$sY|xO#aF!veu%8D+&tlvX zzlQye{E0Il<`>3=e;cRm{(WTP@8$CwAeQ{mcQJ0*#;kNt@*D^4-YVl-jSV7tJxp!e%x6aD4g z-*RpL{>`clDfwSj`-@Y;!MGufVQqe;dfz<$K>u(4_KXnKrgNDChj)zEAzj5yi`vB^5BL_I!M2tzNdV?@ZIH4|0@1v;aMOFH1XTX?~V3L=Ql8JVJ^9> V8Qkg9Q3G^7gQu&X%Q~loCIEyIThIUi literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1037.csv b/dataeng/Level1/src-data/1037.csv new file mode 100644 index 00000000..8008314a --- /dev/null +++ b/dataeng/Level1/src-data/1037.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Patrick, Newell, 853794000000 diff --git a/dataeng/Level1/src-data/1037.png b/dataeng/Level1/src-data/1037.png new file mode 100644 index 0000000000000000000000000000000000000000..52f6ec4119baabc0c0ce5c3860fc9b548392ffdc GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM1D-C9Ar*7p&J5%_WFWx0_ARf? zr03r}T4NkOT=#08Xd)|r=8ve;jYP%%w|+~fcpHW9YKRkA5P8pj-uK(@7XI8gFX)WA z?$;yb4vbQ)89<4B@+&`Q=k=VJ`GZfxVKGB5lZmgT!LPmR=jJQ!W9GU55<9ELzT&_A zIp&ifj_;lWS2ih2?=^q1(;i7dU)B5bd(>e9zSnI69WP^<<$muLoF{$?WX_f^j0@i%n7T;}w*uQ$IAKjMFYVHTqabB6u%0~hz*ySdz2>%Xu)BXb5wUGCJ~ z7jJ$}{QAB6qp(3k8pBzJsF!gsPDK8$b^pTxGRC;!niYH6`|hwg{0J4b4Uc|1Fo8^X i#O(E+`M(ax(tSOP^?w~Wc*_Oo7Y0vPKbLh*2~7ayfM@Xl literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1040.csv b/dataeng/Level1/src-data/1040.csv new file mode 100644 index 00000000..e3bf975a --- /dev/null +++ b/dataeng/Level1/src-data/1040.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Clara, Kimble, 765403200000 diff --git a/dataeng/Level1/src-data/1040.png b/dataeng/Level1/src-data/1040.png new file mode 100644 index 0000000000000000000000000000000000000000..1c15ec1a240517dbdfb98045d3a55363c9536834 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMEuJopAr*7p-a5_M;vm2fC_4E= zmYiF@T-;tijyO@4<&sNtR+QgP73gl0wZA<*XxACGUo26Q4$|l4x25inHCcc8?f3eK z`E^We7kCy(I=tR1)+Fg*+>pkQTN5X=zpp>bvhEkB1X$#4k^P6S?`x-=Z#6OiD$uQU zxcv8k{F3<%j3&$(Y!_C2Yh3Z7`o7pp^#q2q46_)wtg3ym_PNu=$5-A+!^BMf>$?~? alrcE!=o~i^G@1)^KZB>MpUXO@geCxShFW$2 literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1041.csv b/dataeng/Level1/src-data/1041.csv new file mode 100644 index 00000000..3c91985c --- /dev/null +++ b/dataeng/Level1/src-data/1041.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +David, Bailey, 1062446400000 diff --git a/dataeng/Level1/src-data/1041.png b/dataeng/Level1/src-data/1041.png new file mode 100644 index 0000000000000000000000000000000000000000..8f92dc7cc772540baf964843f3cba42afade80ce GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMt)4E9Ar*7p-n8aAkN*^T^z+~KkJJ+w&N9qm+_Lb!)73wEQx1UGKN{8*KR5%DdduqY!|vLg TwH%y44={MT`njxgN@xNAa$H@d literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1042.csv b/dataeng/Level1/src-data/1042.csv new file mode 100644 index 00000000..48dabe3e --- /dev/null +++ b/dataeng/Level1/src-data/1042.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +James, Nance, 1063051200000 diff --git a/dataeng/Level1/src-data/1042.png b/dataeng/Level1/src-data/1042.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc0818d6b93e2b7e76fd003e3b7220229eecbc7 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM1D-C9Ar*7p&N#?<*g$~g@dLIX z7lps!!XAQQoR!i^7Ro0lx6WKHpU%r|bys)o)@Y;hUkrOS95$cR_*G$FUw1!l{=@%W z{tk>%tQjH;BDL}tF0QUMo4QYMegl&U*9D-$+3f3Tj)$+9qi)9tQWDs(EL*>1TmG3B z#veH~92PV5GMOyhdqHsVH`i~CDIj^ZxCJKsXYPrAz0wae_vTsV#qWM=zdoYA0HmJl kLdo0Ke~mv_L>ByHGO;n55*3*&3-k+vr>mdKI;Vst01on9`~Uy| literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1043.csv b/dataeng/Level1/src-data/1043.csv new file mode 100644 index 00000000..2422d3ea --- /dev/null +++ b/dataeng/Level1/src-data/1043.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +John, Ramage, 378507600000 diff --git a/dataeng/Level1/src-data/1043.png b/dataeng/Level1/src-data/1043.png new file mode 100644 index 0000000000000000000000000000000000000000..197b47a53cb0c70b995bb496951fb32dff82baf3 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMeV#6kAr*7p-g4w>HV|;QxU7Ox z|Kj8?JLVnnE}5-dGP~&k&&C?|f48@?yh>LH%z3@nUaR_&xWQ?LTSj#^?B5@DU0-Vb z=O5qe)BXn-W-*#DXV^b?D6`+^^{qx?>ihVOIiot|;$O?zX14pTU#ZP{ z>3@J>7NZGsMt}8#xAwNL_WxT}`oF67m#{%Y8pBzJs28>uvab9UnD~!{XMv=Hal{ZWx*}l$(8@sUj!ThE6j38-<0pFO5 XpBUe;m|FH6=mQ2%S3j3^P6HV|;QxU6IQ zr!RX0uHAict@V=T$sdwG@~;Oq&2QW?Yumlwt2dd~GA`y>p!-~W{(HOBi@CYe->0vM zuVZ4nz_UQoAzOKW>!$tYN~in}Fw9~!Va_=HzW>hq@5;Zwulaf!CI(Sz++g-4=7rz4 zzlS4#a!NQDH>5G>miW!tSnuw#ZuuV;kZHyZV!Pyje7C8%_P^Ceeg(+LEuR=Q&$rGC c0a?g*Wtq;TisiF-fu3OSboFyt=akR{0JipKpa1{> literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1046.csv b/dataeng/Level1/src-data/1046.csv new file mode 100644 index 00000000..df67fd52 --- /dev/null +++ b/dataeng/Level1/src-data/1046.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Margaret, Diaz, 942872400000 diff --git a/dataeng/Level1/src-data/1046.png b/dataeng/Level1/src-data/1046.png new file mode 100644 index 0000000000000000000000000000000000000000..c98af3d9fde4a3c1c409b85da1e8568a37736a74 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM?Vc`&O4q9**zTm-upd^OawFwPdc{gQ==Hd{OWJ2Hu<;=P-qFi|(fn@Bey69?Aay?{Cge zS%Zc&hO-P&pY>Rb!K_ja?OEXFOTEepPXuJ{_0k!Jg}`~XnI zggIm3eRj97`O@idf$7Bx+2HAp!3|USRNa^>bP0l+XkKiiu&` literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1047.csv b/dataeng/Level1/src-data/1047.csv new file mode 100644 index 00000000..14153e11 --- /dev/null +++ b/dataeng/Level1/src-data/1047.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Kenneth, Osborn, 793918800000 diff --git a/dataeng/Level1/src-data/1047.png b/dataeng/Level1/src-data/1047.png new file mode 100644 index 0000000000000000000000000000000000000000..8d137beea5eb4a5634bbeca9e24226b3fc577355 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM&7LlfAr*7p-aN?JVj$oUI5qd! zyEO-zMRUq;yLo-k(eOKQ?EQiI=Nq0FFVHid7Swh|?HAKpo&~i^?RBTG{gzw)?0r?W z+Fur)1(FWN4QAVFxMTOqubX#&>vQEx{s$OlF`6)EEd1`!|NQ&@I(wM1Xa5<&5^NXv zemCB`|97j>cTamp<_xwAJPTUC9oahXj`s5T4Ir&-7w+%_1wm$C+ah1l{6*NHVH@+$ XNhVse%6?e@ozLLu>gTe~DWM4fRh(g8 literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1048.csv b/dataeng/Level1/src-data/1048.csv new file mode 100644 index 00000000..ef0c922a --- /dev/null +++ b/dataeng/Level1/src-data/1048.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Larry, Sanchez, 1068930000000 diff --git a/dataeng/Level1/src-data/1048.png b/dataeng/Level1/src-data/1048.png new file mode 100644 index 0000000000000000000000000000000000000000..c812caaeb76e83dc2ebe38b331a193f9f721d271 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMjh-%!Ar*7p-aN?JVj$pf@obX% zyfp{@^@lw;DHqff&dPjBrH1XF^{HL&(iOaYR&M=g^!u{C!YPJZB0DSNpC5mHx~$~q zAL*Cs2@Gc$W-)HL@ZZ5Zd#}9WUlyJPk`BfVVe6_N#l8N1{jbB5-toP9TR VC-E9|u>l>=;OXk;vd$@?2>>Z(T@e5P literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1049.csv b/dataeng/Level1/src-data/1049.csv new file mode 100644 index 00000000..b5ddc5e5 --- /dev/null +++ b/dataeng/Level1/src-data/1049.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Brian, Brown, 814050000000 diff --git a/dataeng/Level1/src-data/1049.png b/dataeng/Level1/src-data/1049.png new file mode 100644 index 0000000000000000000000000000000000000000..d97334c86a38fc6ddc9014cb3bc618b06864c7db GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMWu7jMAr*7p-rCFAU?9SfD9YVl zpmV%LhutGHb9I8kL(SvOzr8-b=aBG_@z!)s6aLE-$adk`iKD+O_sHF!_I2{-=q2)u z%o%JKcox_`YrIwdD}V3#z2~K0x*uSe#b^SNkaRF^xVA;_%I19!#2L>-fXITGulT>5urgPAJ!O3Z$Se&9;aB`UMNfYR{p5n0v+$q8wfaLE r`?y2FdQNe-{9-O&R>LZ?;3w17b2?A;Z+_5LF!y^uOyQPQr4PK;|2}1>KjjQi-srmF+JJ(%6Uod#O`njxgN@xNAS)pZp literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1052.csv b/dataeng/Level1/src-data/1052.csv new file mode 100644 index 00000000..63dc944f --- /dev/null +++ b/dataeng/Level1/src-data/1052.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Carolyn, Seymore, 385851600000 diff --git a/dataeng/Level1/src-data/1052.png b/dataeng/Level1/src-data/1052.png new file mode 100644 index 0000000000000000000000000000000000000000..788a7f48dc12e46ae2bfe7197b0bcafd3d94e955 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM^`0({Ar*7p-Z;qFVj$pfv2>&K z!PDR3o5T;=1vQ1Y^7>r(A^YR~vW_2;1}e^)Pbc4;{;y#*&jLvYO!0e^-8$e993%lO1N9~k9aRw;0|B>vrEk3Iq3sX$*H~!z%(DIkZ;>5P4Q`9#1**WMkXZ-zj+~mw|{@Q6D_1k}n zTKfOulyER^NMl%QU;pIB#p++HX4y`zV`96&vp~{;`)%Xu`<&&r@)MCnmf!zw`djfY z3rK-+!!@^eC+6)lU-9$*7hwaSF=rWWrSVtz^FY|M?lYS(XMhZA{dQpX()kUHTlBZR Wu(H^<_=g|R3k;sFelF{r5}E)BiD0b& literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1054.csv b/dataeng/Level1/src-data/1054.csv new file mode 100644 index 00000000..2560f6c8 --- /dev/null +++ b/dataeng/Level1/src-data/1054.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Melissa, Denny, 482011200000 diff --git a/dataeng/Level1/src-data/1054.png b/dataeng/Level1/src-data/1054.png new file mode 100644 index 0000000000000000000000000000000000000000..e9dd9846a2995d31fd3ae5c725689e0bd092c45f GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMRh}-6Ar*7p-m>OuFc4q}6zxxZ z_}4%6A!88(ceF0k#oiw7&sD02n?9OP3u-%~R>c^|c7bPsq=Ruo8bfZM%pRHS>8@`+ zfBSXgi?9Ju=q$r5Mib@?kQ!54{wwc(D}VpE_uTwCCWx-xZ<+nqACKQJo)zi;i&Fw@ zitd-%1nDKp`*DRRe0z9g?q;B?89ZJ6T-G@y GGywpDq*Vg| literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1055.csv b/dataeng/Level1/src-data/1055.csv new file mode 100644 index 00000000..90f06d11 --- /dev/null +++ b/dataeng/Level1/src-data/1055.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Jaclyn, Adams, 614635200000 diff --git a/dataeng/Level1/src-data/1055.png b/dataeng/Level1/src-data/1055.png new file mode 100644 index 0000000000000000000000000000000000000000..99f75f509b8bdcaf11e3007e7a6c5d6ab48e0355 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMb)GJcAr*7p-aN?JpdjJ!u&ZnZ ziyR_)%h{rNllx%M-G43u>EJayOsa2Z T@82i^bUA~ktDnm{r-UW|yD?he literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1056.csv b/dataeng/Level1/src-data/1056.csv new file mode 100644 index 00000000..6f4b03d8 --- /dev/null +++ b/dataeng/Level1/src-data/1056.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Frances, Visher, 906580800000 diff --git a/dataeng/Level1/src-data/1056.png b/dataeng/Level1/src-data/1056.png new file mode 100644 index 0000000000000000000000000000000000000000..1459a3f70c0da14e2b8bee1a8eee6e95e0c92488 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM)t)YnAr*7p-nz)yVj#c}s4SMi zIW6hsv?NZ=gYm4)jlDhGpY8f5pWcw*v?C~cuF>q5tS*uc(MtUC>9v1r?q5^9|9)Z} z6Waxz1(FWh-#1?nfB&*$-q$7b8yHQPGa$mo4QUK#s}*NKMC5)ml>WbbY4f}{mg6^ zcos-HXupkIQ6AraXSwpbHR^x)Bpi$z(iq-evoWZ8_ukh0-Yog3m*oc-W-*#DXDs~g zw7B??`1$rP)(H$}fnrSxCogx2^{Q+qp3zqU1$N_EH a&2ZOIgL_W-g)=~>GkCiCxvXZ+>pkQdvfoE7nKL97p8zT9%Y~MPv2yh|NPSb!IkrVa7sYb hyt4Vg4>Id5v*i}EiHjDjo(l8{gQu&X%Q~loCIIIWXx0D# literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1059.csv b/dataeng/Level1/src-data/1059.csv new file mode 100644 index 00000000..2941c61f --- /dev/null +++ b/dataeng/Level1/src-data/1059.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Wallace, Miller, 821134800000 diff --git a/dataeng/Level1/src-data/1059.png b/dataeng/Level1/src-data/1059.png new file mode 100644 index 0000000000000000000000000000000000000000..3c85f28b523897047009e8b5d084f704654a6f60 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM9iA?ZAr*7p-n__p$Uwq1QM>N~ z@0^pG){~`wOc4B)b-=+(s89Ud_lQ;B1U!CUUpuA9yKK3B!W70W$4|7|zrTL|@$b(w zit74*h#EAcF`Q+HDwWT8ds%n$x8D=*_r^0aXRux1S&)0~hyjFEx>r2PRz2qLy!?;a z2|(qu7`J4}MQrr{{$X!`5lG1+=2evm*NXq>oMYzXSs>}q%`Y*FJu2+J{~Y#zos1^T i86O${`TH0*lre3sFfJ2#cF-5-2L?}9KbLh*2~7aU+F-f> literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1060.csv b/dataeng/Level1/src-data/1060.csv new file mode 100644 index 00000000..5daf1476 --- /dev/null +++ b/dataeng/Level1/src-data/1060.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Judith, Hatchett, 925070400000 diff --git a/dataeng/Level1/src-data/1060.png b/dataeng/Level1/src-data/1060.png new file mode 100644 index 0000000000000000000000000000000000000000..ea3d5ab5ba5d142f1cce9f7b3d7cdf66b5bb5158 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMot`d^Ar*7p-ZJDm3XY&tE c35ROt`C0nRrdrZYKu<7uy85}Sb4q9e0G)ATfB*mh literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1061.csv b/dataeng/Level1/src-data/1061.csv new file mode 100644 index 00000000..6b0a9fbf --- /dev/null +++ b/dataeng/Level1/src-data/1061.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Madelyn, Oliver, 936907200000 diff --git a/dataeng/Level1/src-data/1061.png b/dataeng/Level1/src-data/1061.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0c3e1d8f227680a54a424d158d116bf169e818 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMJ)SO(Ar*7p-g4wRWFW$psD1bK zx!>~VWA`*hw{~%!EdGo$S&Syk8PP{~UU>1b&g~Bi&jLvYQ6TiE3egh*=fbGJpbBz;! z|DFCt*Z`vJJu_ICXF=#(=DpwEzxWxT3^T^;_j{8w47XV4FVMWaI&*0q(9H~35$IYh3%ciuQ@cF`eZxKT;lL^-a4Tr@HXKP}0j$d1n z5%vA{U%9V`)fYgd&YXAu^uDU^PWAm&=caz(1gQjSNj{mg<(vJ!Q2T&ScRA)aK+Fg> z5&uM|^j&dtmdKI;Vst0KIx(_W%F@ literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1065.csv b/dataeng/Level1/src-data/1065.csv new file mode 100644 index 00000000..7856b1c0 --- /dev/null +++ b/dataeng/Level1/src-data/1065.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Matthew, Bloom, 531176400000 diff --git a/dataeng/Level1/src-data/1065.png b/dataeng/Level1/src-data/1065.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b097bd64bfed395aa6c0846bab12aa0bf83acd GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMRh}-6Ar*7p-rUXGV8Fu==+F^3 zqxs^@X3e1Bz{{#PE+xK47t5Bdt|Fm`QCZ{ z_2-RG!UjO0vkbRhTN>Bnr_fDKJvp`}%wXwe&*L?pMX#2YbW?s~b-52Di08QG$ZkMYN9 literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1066.csv b/dataeng/Level1/src-data/1066.csv new file mode 100644 index 00000000..32b0aca5 --- /dev/null +++ b/dataeng/Level1/src-data/1066.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Jeffrey, Mcdonald, 686091600000 diff --git a/dataeng/Level1/src-data/1066.png b/dataeng/Level1/src-data/1066.png new file mode 100644 index 0000000000000000000000000000000000000000..87682674006908ec484aaafff4a326cea0e6c20d GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM-JULvAr*7p-t^^aHV|+~6n%f; zaHSppb3Jv9JY9)16Q(>r@ViX+<@w|VE7SCr`pne*BK{(kA$PCcjp@o?9=-j&vv%J% zyNh3S=g+QVV!ObzK+++4{`4#L`~UCVms;;(&&Zqs5q@4ppY^WT2_`m^iT zQ{jLHH%2MejBWRW&)vPA{(8E<1BffKfb(mk;Nri(SNs$_rM`fnm&t_d!j?0;FJ7#y z{Z=#oB|luF-LC^(wN}n4wr~-r?~PagDhBVbVdA==;joy&_l2E7_kV6*s3}YK@&924 cDSpPf$Hi>vmrFN`fu3RTboFyt=akR{02Ik+)c^nh literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1068.csv b/dataeng/Level1/src-data/1068.csv new file mode 100644 index 00000000..0340970f --- /dev/null +++ b/dataeng/Level1/src-data/1068.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Eloy, Florentino, 848005200000 diff --git a/dataeng/Level1/src-data/1068.png b/dataeng/Level1/src-data/1068.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f5606748b7fe9eac5ab02fbe338ae7ff51e565 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMlb$Y)Ar*7p&fLg**no#+u|jM4 z35lEaEd3MXmY&|CrPRQdI*0SlRJ{~gIRVv8U+>9Jt-K_CViCjH*Ilmm@87=v{(||5uf|ol;-G(92}Pbz#Xbr}W=8 zt6v@VfUCPuop5ZGT~JzHfE^=i2FN@$6ZsuU`=k{&&Hu!y;jkE_bLGzitA0(0++V}Q lbpa&gyGp-=9c1cRehVp+8=M+1RscQ4;OXk;vd$@?2>=J1Wu*WB literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1069.csv b/dataeng/Level1/src-data/1069.csv new file mode 100644 index 00000000..9514cb30 --- /dev/null +++ b/dataeng/Level1/src-data/1069.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +David, Myles, 432676800000 diff --git a/dataeng/Level1/src-data/1069.png b/dataeng/Level1/src-data/1069.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4114282f550efc0445af4b3a8667fca60598df GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMU7jwEAr*7p&N|I`*g%Bk@dT+k z(ZAMfZ~w7GD5&wk$;+QN7!-?VL|k~az1J}B;xZl3Mzt`V^ zQHnJ~WWi0VZ%&)*R;>AM{75*U!3`wn_w~T4+W+h4yzKqKBC;S5C^+lV-V3Y#)-Fwl ztBJbDp7!@b;kpi(IhmIHF*o@?a%wm%X6R)ySz7)m^!48Vt&_moD;lT$cM2Dp-@s%N Z@6DsNd9_RXF`zFPJYD@<);T3K0RWA$Vi^Dc literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1070.csv b/dataeng/Level1/src-data/1070.csv new file mode 100644 index 00000000..d8319b73 --- /dev/null +++ b/dataeng/Level1/src-data/1070.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Elizabeth, Hoover, 334702800000 diff --git a/dataeng/Level1/src-data/1070.png b/dataeng/Level1/src-data/1070.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7bcdad9c464c3bc3e8198f7d4dae7fb14ee8ec GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMrJgR1Ar*7p-g4w>P!M6b$n~;s z?uOSp`^0j!g?Ki;JiI4X;h};{TJpKdj+{m67fvxmS;eo3u9Deu=C}IfovUa1{}453 zNMkt5aO=fxfin!V7)_WnLVq`I_xjx~_nm(~6Waxz1(FWNU?sB{x2$^awD&x3)I0e) zR*3ku62Cv~A0LJvfM}i0p8Nj&FV%PKN+2z|H4Xo{FY+vqJ)Nw7RDP~cIMBfip00i_ I>zopr0FmldFaQ7m literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1071.csv b/dataeng/Level1/src-data/1071.csv new file mode 100644 index 00000000..c9045b2f --- /dev/null +++ b/dataeng/Level1/src-data/1071.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Jerome, Weaver, 1008795600000 diff --git a/dataeng/Level1/src-data/1071.png b/dataeng/Level1/src-data/1071.png new file mode 100644 index 0000000000000000000000000000000000000000..f004184fec35985f7ab385e87f73d8dc0b44a019 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMW1cRKAr*7p&NSq5G8AC_o0R>0 zrOk%rn>Z>Mqjj02CtKLeSXuAU#(wkf&Ba^Gyq@{UCy23T=oxp*pMO2c`A+`&`PYxB zFJS0pGU2))Gc_*bYOTH3QoAECp((EpXzbl(c=`MH4u1zmDb@^;1wU6YFRuN+s=7Aq z{tp(B1%VB2jI%D)EGWO<|LyPUeg9SL7(uE68`84uHvFzX@Y8{b>w<=Zuzo<5_^prY p;ujXpgKN_*epD|szk$gl-+Z-&UfPw;FrbeZJYD@<);T3K0RVouWSIZ} literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1072.csv b/dataeng/Level1/src-data/1072.csv new file mode 100644 index 00000000..ef856c34 --- /dev/null +++ b/dataeng/Level1/src-data/1072.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Morris, Hall, 407019600000 diff --git a/dataeng/Level1/src-data/1072.png b/dataeng/Level1/src-data/1072.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3a33f61297f2bfc377f858cb50d5e0de996679 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMJ)SO(Ar*7p-gM+@HV|+KoO&ty zimS)7cfSe~Z{(c(N%lv+tdl+SvSVAfZVTCV(O%&+!z@M<<_xwAJPY)3;}YC~m#SUZwQ^y76n}Q~n1a zW@JB;zPaXm`wP-(3HbQ^LU*XuNKz h{uh>~>In>Q*&FujUs$1(VFdICgQu&X%Q~loCIApfVRrxk literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1073.csv b/dataeng/Level1/src-data/1073.csv new file mode 100644 index 00000000..0a724d4b --- /dev/null +++ b/dataeng/Level1/src-data/1073.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Myrtle, Ferro, 840830400000 diff --git a/dataeng/Level1/src-data/1073.png b/dataeng/Level1/src-data/1073.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc76579fd1f12f5566c7dc348f1f12b160a6992 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMJ)SO(Ar*7p-rUG}*g(MHqQ;Vw z0g(ros~Po|=;cN&H<&ZQe}41-Eag9z6O@;Jy(d4__NDlYRED>rl^OqQ+QshnmA|q| zf2y9qaF$^fBNnfP7Po{>3&?E=q&ttV#Q`0Str;rzYJ-TUtHO&k6Y zkd~;Q4J$t%i2d$r{CfKQ21XN*8mIe>f!hDmHDKCX-?h5E{~c}@U&jP8P13>Jl7CGI bh*K9)Wb6I?#u87UKNvh+{an^LB{Ts5=_FwU literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1074.csv b/dataeng/Level1/src-data/1074.csv new file mode 100644 index 00000000..ed5181b9 --- /dev/null +++ b/dataeng/Level1/src-data/1074.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Gisela, Patterson, 464990400000 diff --git a/dataeng/Level1/src-data/1074.png b/dataeng/Level1/src-data/1074.png new file mode 100644 index 0000000000000000000000000000000000000000..699a67f9f427a27a1f05016c46f43bc031dcf190 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM-JULvAr*7p-ty*Zb`W5=D6yxh z{fmp`lG&CG+}pVXmu0qZT6iz0Dayp6&S>j3yQ#G=g-;kYn0^2AVtao5_Vu4Xo$yTg z7GKB2c7bPsq{Hhd_C;>%rPH6PCor64n8mn7^Rti4-h2HK@~8X{0Qn}&84!iW4P}-3 zCFT3=qQ2~S{=EH@ut7r_P)F4D?~O02=dC#N?=(#P^wNYcU;p*}7hiP-WZ);pmG6(_ d2Y@W(`*2gUEa0^LI-oZgJYD@<);T3K0RR97Wgh?l literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1075.csv b/dataeng/Level1/src-data/1075.csv new file mode 100644 index 00000000..ce375b10 --- /dev/null +++ b/dataeng/Level1/src-data/1075.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Stacey, Bishop, 493848000000 diff --git a/dataeng/Level1/src-data/1075.png b/dataeng/Level1/src-data/1075.png new file mode 100644 index 0000000000000000000000000000000000000000..257673f9a08ff4346f2efd916dc9d1ff783392df GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMO`a}}Ar*7p-n`4%>>$AKP$Fo( z>5{h9U%WmTa_Ct`PAg2@=l)Usa8p&)Pwx8>jCFVr!y zUEo2Q16z1Bs)%eQ{~zw51f0>fE`S&Un@K6g0s)nOi^33CS9g>&~?SA74s`?~D@ zzqkDl0HuMVJHH-a-ZH-dq9E%Uv$BQ%!Jlwh)7Onn{~48F#+mHrzR0scwvScCf8x`7 R5VQzzzGRPCMrb^k?cKkdIPPz`tVJ7;h8mzY?`1Tn+< zEqh(ze!E8}D=+&WV3-Bcy8Q2fHP0?sSIZsW-*#DXRuvZW^VrW^~Z|Z zo6pqv1C8r`NE$Sx0cE3hz3cRT{V{y$*WJf|JWM|TQNI2gvugZzX4`xGa3Qt}JPRZp zj2ou?31H3cRb^IZX(dl44$rjF6*2U Fng9+KSH=JU literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1078.csv b/dataeng/Level1/src-data/1078.csv new file mode 100644 index 00000000..86e493e3 --- /dev/null +++ b/dataeng/Level1/src-data/1078.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +David, May, 601074000000 diff --git a/dataeng/Level1/src-data/1078.png b/dataeng/Level1/src-data/1078.png new file mode 100644 index 0000000000000000000000000000000000000000..db34125b2b63cf6a509cdffadb2bd341cd17f9c8 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM6`n4RAr*7p-aO6OU?9K{D9XLj zZms+4%`H{a&Px37xy|HUccVBC<#@b>b1r?u}n zO)tSTfs{#trOrZ3iTx+M{gZuR8c1R(KgV0<`U!PRY!~!yZc;lOo;Y0+=w=2_S3j3^ HP6sJzmq z;rP}MJHnzPZ@U!~9NO`Z=g)Oj9mV;LIyX~$3SYhP+3zrwaZ73S#~pX-KV5kJ`P;{T zJ^G-`gK74>!;^44$rjF6*2UngDD7Z;Jo` literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1081.csv b/dataeng/Level1/src-data/1081.csv new file mode 100644 index 00000000..06561de8 --- /dev/null +++ b/dataeng/Level1/src-data/1081.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Amy, Smith, 785710800000 diff --git a/dataeng/Level1/src-data/1081.png b/dataeng/Level1/src-data/1081.png new file mode 100644 index 0000000000000000000000000000000000000000..bd3abae2f9118dd7bd2b3cb6f25c7258571ead3b GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMb)GJcAr*7p-ZbQDF%WPFR9?Av zUiz1^gWMU}!ag2PtUttW-_TvREaLc*pi@FOz3v~-V9xmY^Pxxj_5SbKvx|h4uk+e7 zGH0+|;8`H)VBC<#aF!t|>t<*ATh915(ht=Wfc#mETbBKAwC9GYd-{F-m8gTe~DWM4f>Qq?O literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1082.csv b/dataeng/Level1/src-data/1082.csv new file mode 100644 index 00000000..586ff65e --- /dev/null +++ b/dataeng/Level1/src-data/1082.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Joseph, Denton, 463089600000 diff --git a/dataeng/Level1/src-data/1082.png b/dataeng/Level1/src-data/1082.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1bb6be8f63fada81f7e55aef3791132989be4a GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMHJ&bxAr*7p-ZJEBFc4sH6#YA; zwSW5u+n2dHTLt_MZIpX+MJR^PMDX~vTLCv+?mOr+XB0nKlp1ZXTlLQUl~wsu^#q2q z46_)wT-+;g21uJQXY_wQaJ$ZSlm2;uo%25l8#JT=72I0CpWAiH{05Lb+Xbihjc=Y; zo&N>byzcXX>+fA9-%p0Ak2+PU@cY+p7|(S$jJ?Sk0z1K0lTeY&D{@28y~g$)|g7|t@> z`cZxI>pbqWNBs{l%mOLvE?#iFcy^cVbzyr(kS3l5Z-33*VLqQ*)flKj*KR?HeZiHT ofjjv-VaD$I6aT^oWZpMc0bP^*YFrGzfxcnzboFyt=akR{06n{A&Hw-a literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1084.csv b/dataeng/Level1/src-data/1084.csv new file mode 100644 index 00000000..21b41e9f --- /dev/null +++ b/dataeng/Level1/src-data/1084.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Jody, Hochmuth, 752446800000 diff --git a/dataeng/Level1/src-data/1084.png b/dataeng/Level1/src-data/1084.png new file mode 100644 index 0000000000000000000000000000000000000000..8bebb6749a95d2e8261721eb50aae7ad04bb78a7 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMJ)SO(Ar*7p-a5#8$UuNKut%e7 z+KWbI+Y3TZcd)FBQObR!vsnM^ZuL(YOEt=jp3Rw_5?;l)nrFe?Fui|!;+N|@`d1;h z&#aD#?E=pNNeAiu@15?R|JwKaxc>o$S&Syk8H0LmI5iGI3*lF!fU_OE_iISe9@+PaFM6=3-|tJ{4eeW)>Pwgy8Kan e*Zc;?E&8XEbtZkTPiO%8gTd3)&t;ucLK6VsS7plp literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1085.csv b/dataeng/Level1/src-data/1085.csv new file mode 100644 index 00000000..98e80557 --- /dev/null +++ b/dataeng/Level1/src-data/1085.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Beverly, Livesey, 739224000000 diff --git a/dataeng/Level1/src-data/1085.png b/dataeng/Level1/src-data/1085.png new file mode 100644 index 0000000000000000000000000000000000000000..ed69ef3db26031f518ed36ee7fba28f573b777b7 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMEuJopAr*7p-aN>8$U(p@QTe5F z_NEJ0mdNIC?qoAjIlW=upAY+HZ)mAKlX-mQ)-vz1<@y1s47vCI{n&HQp5J!bbNO|j z-kzy_q@KWVmSGm733CS91)c?x4zsoLAKm+YxZ}Iq9~KbbxWOz%f6Mo|aqn7%B!E0I zc>{U*m)C#Gt>~EF0MX|6w$<%@z1I5)KR7`u(iqlm5#M#_C!F`i{-fv-{{sxSxc=~& V--v3z{~YLk22WQ%mvv4FO#p;rVXXiF literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1086.csv b/dataeng/Level1/src-data/1086.csv new file mode 100644 index 00000000..091faace --- /dev/null +++ b/dataeng/Level1/src-data/1086.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Nicole, Pharr, 884552400000 diff --git a/dataeng/Level1/src-data/1086.png b/dataeng/Level1/src-data/1086.png new file mode 100644 index 0000000000000000000000000000000000000000..8c02b1d6529561c201c625be7887ecd527d0de3c GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMO`a}}Ar*7p-ZbQDb>LwL6wU5` zy3qD&Qf}hv)`T;MBxZ#F*SBU_^x{U8wASnw%qfx%vyJQTeOr85@!HehhNt`wFw9~! zVa`}D_Tlor^KahAUDvl~WX@o_z_Z}4SZ;~@|A*h7swXghG|v$U)VuLy=8g2 XPgmB|?eQ0&>lr*<{an^LB{Ts5=a61L literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1087.csv b/dataeng/Level1/src-data/1087.csv new file mode 100644 index 00000000..6a06b574 --- /dev/null +++ b/dataeng/Level1/src-data/1087.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Aaron, Fox, 1090094400000 diff --git a/dataeng/Level1/src-data/1087.png b/dataeng/Level1/src-data/1087.png new file mode 100644 index 0000000000000000000000000000000000000000..2428c7604daf7414938204f90325bdf84212f031 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM&7LlfAr*7p-rUI9U?9Q}D9SGA z{eAw?AQ?sF8(kV|F1Ge}UbA$|$oHt^dadkSvsgUfG(*(>dWmIEzbq}4vyVIzc&_S@ z{{e#ey{;L0BfhxLo zXX4bl_xE?ybJ#ON^j7-&7&oK=wM1Rpd130MzYlx=s=$)Ii@W2u` Qpz|3#UHx3vIVCg!0EY%!djJ3c literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1088.csv b/dataeng/Level1/src-data/1088.csv new file mode 100644 index 00000000..10783c4d --- /dev/null +++ b/dataeng/Level1/src-data/1088.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Rachel, Robinson, 528148800000 diff --git a/dataeng/Level1/src-data/1088.png b/dataeng/Level1/src-data/1088.png new file mode 100644 index 0000000000000000000000000000000000000000..361e750848f50c903b5d6aa071f1c2a03418180d GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM-JULvAr*7p-gM+TWFW$ps4aJ} zclpOR^N#g)%N$(G%FL->`X_N;>dK{un~!XZ&VD=Pjn93Dsf=5^pB_K|`|InEw;ykP z@<;Haut7r_!&!z~dGZ!XbJt1iod1JU!oe6Qw)Tt7h0D?V`vvS7nKRff@GQtxe(#ok z{p-!|PMfd)6oHBIzGb#u{qOtlT7{X6Cd?Th8F$wvT>ah{AE#c&1kxqxpl!?lrx|AI eS%z7RTg)A&>7KcJKW!G!8w{SVelF{r5}E)ucx3wk literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1089.csv b/dataeng/Level1/src-data/1089.csv new file mode 100644 index 00000000..13b0443a --- /dev/null +++ b/dataeng/Level1/src-data/1089.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Leah, Costales, 1072472400000 diff --git a/dataeng/Level1/src-data/1089.png b/dataeng/Level1/src-data/1089.png new file mode 100644 index 0000000000000000000000000000000000000000..567a81c9a6cde239d6857a6830a7b2696642588c GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM#hxyXAr*7p-nhuwpdi8Uuq#e_ z(ac$!XGS?@G{$jH>Y4Jo{r5aq84QUK#8D{-= z0_)^iVER)$>umi(dqbeOZcW2`##s literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1090.csv b/dataeng/Level1/src-data/1090.csv new file mode 100644 index 00000000..d0fa66d8 --- /dev/null +++ b/dataeng/Level1/src-data/1090.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Thomas, Williams, 946501200000 diff --git a/dataeng/Level1/src-data/1090.png b/dataeng/Level1/src-data/1090.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac768a8a272c2ef4baff4bcac8a97280113d95c GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM&7LlfAr*7p-rUIBY#`te*fT>( z_I0YlHSg)SlrIFa6keS9XU>=SUV(V^#GI)2wX1TL$t#>@xFxjn#n-xfe`Vy?_P_l! z>yxlSLmIc2V<}f zu=K*e2e#k;n|}ZM;&;U%bxa`Dk`BLL);|h-eK_zZrvzB7?$`PU@>AwFFm91udslAC U?0ZvkfzD^}boFyt=akR{06uqNp#T5? literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1091.csv b/dataeng/Level1/src-data/1091.csv new file mode 100644 index 00000000..9b190aeb --- /dev/null +++ b/dataeng/Level1/src-data/1091.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Opal, Morse, 463780800000 diff --git a/dataeng/Level1/src-data/1091.png b/dataeng/Level1/src-data/1091.png new file mode 100644 index 0000000000000000000000000000000000000000..4e83071cb3728933688fbcef2c7abb80694ae166 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMRh}-6Ar*7p-rC67U?9Q}D4OkF z%D`U0pw8=;uzEs5)1jw__xk;8bwA)y;G@Yq(f12;O)5j~zW6z>r^!b3*;emw|M@{X zf#EE}EXFOz?JoSX`{(`oUx9cXE6)N+2jd2_{ryv}?pdDwZ2ueMhv5f+s!W(O=5b$y z$cB~bxqOV#U}DZ-yKsm-WG?sD4|n5*V0zQQrUKP3{_l5~XF=@UPsVd=IHGlcu4eFb L^>bP0l+XkK+R{`c literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1092.csv b/dataeng/Level1/src-data/1092.csv new file mode 100644 index 00000000..2985731b --- /dev/null +++ b/dataeng/Level1/src-data/1092.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Alan, Mcgraw, 469054800000 diff --git a/dataeng/Level1/src-data/1092.png b/dataeng/Level1/src-data/1092.png new file mode 100644 index 0000000000000000000000000000000000000000..48e73678b35f348068d81cf1ab4d18546e1bcedf GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMwVp1HAr*7p-a5_MU?9K{s5~vf z)GWoYchjhmUXub+PV*eKMp)BHHU zJtK1l+XbElOU1rBtz9qe{!l%E;Vi=}#x0jWAGrMWH~;VU`3;OFAT@s18<)Q>)ZHiE zbp|B=fzkCo`@1ds-s=n2F@a2wbTDp61M4-}&kyBads4qpzZGc07TI1O(;vUNE&PBE OXYh3Ob6Mw<&;$U*$5<}_ literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1093.csv b/dataeng/Level1/src-data/1093.csv new file mode 100644 index 00000000..30939c9c --- /dev/null +++ b/dataeng/Level1/src-data/1093.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Aaron, Towe, 877809600000 diff --git a/dataeng/Level1/src-data/1093.png b/dataeng/Level1/src-data/1093.png new file mode 100644 index 0000000000000000000000000000000000000000..a78917adc26250ca0a931272aa8c379754ff1377 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMU7jwEAr*7p-g4wRWFW$psJ+)~ zyWXDvk}*5psur7QdcXaf^WR@Cdi&Ml z??0~BkJS?x&N9qm+;Z6NLbY75+dK6-CbkPa3nU%1=d!1LwwZ7MB>AJ^>-S0f>i_-= z7PMz%&HyRkeapOg{_DN3`#a`0Fq(kGrk$!+P1~<72UjBdjqyG|1IR4nhA=Ds7{@;> cJPT?W9)C0Ce8gRn3-kqpr>mdKI;Vst04|PRAOHXW literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1094.csv b/dataeng/Level1/src-data/1094.csv new file mode 100644 index 00000000..20444099 --- /dev/null +++ b/dataeng/Level1/src-data/1094.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Cecil, Struck, 416437200000 diff --git a/dataeng/Level1/src-data/1094.png b/dataeng/Level1/src-data/1094.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba8acba685311f9580dd78659e54357d3fdd331 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMJ)SO(Ar*7p-ZbQDb`Ws5D6yx> z)$hs7;zc56)hxRg9DSg(=zimWEmm%O=5?!`v)_i^oV~AcGtYwF+mr9x1b)Bx^mFXL z<4@HS7|t@xV%+la$E3f--~DEmuKdHovp~|pxFHQJVZxl@{OoqdmpHk%!t3_ct%k`? zi(*$Qw|lP)H{i`rZ~i599&Ru4|8S@sIsWvZZ9QxEP8)&CCAv#>X6AljN|SWB{hI&!Pw8KuKK|Xa zsbl8vW%C;tO_(#-E`;50O<=pgvjC`KzJBKZ_1nKOU%Y<(lK%mQSs(@5{~kE=*~003 z6YCRzcp&ndG@Mzv+I~3 gW`F+g1T?JvV479T>eKZSK#wqZy85}Sb4q9e0OmJnp8x;= literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1096.csv b/dataeng/Level1/src-data/1096.csv new file mode 100644 index 00000000..0a34f25d --- /dev/null +++ b/dataeng/Level1/src-data/1096.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +James, Peacock, 503442000000 diff --git a/dataeng/Level1/src-data/1096.png b/dataeng/Level1/src-data/1096.png new file mode 100644 index 0000000000000000000000000000000000000000..36ca11a272d3a3fd269c89d4309d8010d851806b GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMU7jwEAr*7p-VEeAWFWwBF{DaN z|IyC99{v-Re`qh-kvQ8=?Ac$@uC$1ZjLl!~MW>oqF-Edo`1ZZKy1HiX%Z&5hVxKiP z&HE&5(2&M(mf_aF|I_Zfeeae0?emjU!oe6QsJn%K&euP3cjc8%`5$1I#c0Bu5&i7; ziucUw5G_$JY7(|x{QtEkL6z+S&w{D^9DDiC*x8@^QwK94x3ld$c cAcJceLNDq5JsPAF0rUccr>mdKI;Vst0D2E$c>n+a literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1098.csv b/dataeng/Level1/src-data/1098.csv new file mode 100644 index 00000000..97eac619 --- /dev/null +++ b/dataeng/Level1/src-data/1098.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Maria, Horton, 702504000000 diff --git a/dataeng/Level1/src-data/1098.png b/dataeng/Level1/src-data/1098.png new file mode 100644 index 0000000000000000000000000000000000000000..75d0b1b7c2f5aeb585aaa7fedf379799681b1284 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMeV#6kAr*7p-a5$H>>%K9Q6fjt z{kP}IZ;uV9>ndKCh>@B3;{1X7?F}9C8K=h@Z@HE?_3lgd6GjbYb^j`S&!6p*pZxi{u>60=Ct(91|13jPhU|-zd-m5a{lmhuKoY3PEajYA z|2yGxH^QgPZ(uZG&S1OX^qQemPh@93%oN>Hy(`5}zdwVSaVyLI!T(kUwhJH=yldru gus>B#V0g=0;jM3SC-3JGpidY)UHx3vIVCg!0Gt|SXaE2J literal 0 HcmV?d00001 diff --git a/dataeng/Level1/src-data/1099.csv b/dataeng/Level1/src-data/1099.csv new file mode 100644 index 00000000..101cc8b3 --- /dev/null +++ b/dataeng/Level1/src-data/1099.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Samuel, Ladner, 815259600000 diff --git a/dataeng/Level1/src-data/1099.png b/dataeng/Level1/src-data/1099.png new file mode 100644 index 0000000000000000000000000000000000000000..96d88530c51492c330a3f8056681fc26b838e393 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMBc3jfAr*7p-a5#6$U(p@F~Fk!*6P`u=_%pA*mm(OxN9YUFYf*N_4nuZ z@847J`iF&Qfuw_RgW0$Jt$h*8t;61_*DtA10-T!&7V}1jp2}onqfAK}<`oBL?PhdF9FpF`^ jHOr5ZNBj>k++wc?Fq(4Od*M-_e;7Pn{an^LB{Ts5!?S6e literal 0 HcmV?d00001 From a66c61334b9ab0ddb6ea8963667e28d58e4ba86b Mon Sep 17 00:00:00 2001 From: Ehsan Shaghaei <53513242+Ehsan2754@users.noreply.github.com> Date: Tue, 19 Oct 2021 22:48:38 +0300 Subject: [PATCH 2/4] task 2 --- dataeng/Level1/image_path_finder.py | 48 ++--- dataeng/Level1/processed_data/output.csv | 202 +++++++++--------- dataeng/Level1/unittests/demo-data/1000.csv | 2 + dataeng/Level1/unittests/demo-data/1000.png | Bin 0 -> 238 bytes dataeng/Level1/unittests/demo-data/1001.csv | 2 + dataeng/Level1/unittests/demo-data/1001.png | Bin 0 -> 226 bytes dataeng/Level1/unittests/demo-data/1002.csv | 2 + dataeng/Level1/unittests/demo-data/1002.png | Bin 0 -> 240 bytes dataeng/Level1/unittests/demo-data/1003.csv | 2 + dataeng/Level1/unittests/demo-data/1003.png | Bin 0 -> 228 bytes dataeng/Level1/unittests/demo-data/1004.csv | 2 + dataeng/Level1/unittests/demo-data/1005.csv | 2 + dataeng/Level1/unittests/demo-data/1005.png | Bin 0 -> 240 bytes dataeng/Level1/unittests/demo-data/1006.png | Bin 0 -> 248 bytes .../Level1/unittests/demo-output/output.csv | 7 + .../unittests/test_image_path_finder.py | 12 ++ dataeng/Level2/server.py | 87 ++++++++ dataeng/util.py | 76 +++++++ 18 files changed, 319 insertions(+), 125 deletions(-) create mode 100644 dataeng/Level1/unittests/demo-data/1000.csv create mode 100644 dataeng/Level1/unittests/demo-data/1000.png create mode 100644 dataeng/Level1/unittests/demo-data/1001.csv create mode 100644 dataeng/Level1/unittests/demo-data/1001.png create mode 100644 dataeng/Level1/unittests/demo-data/1002.csv create mode 100644 dataeng/Level1/unittests/demo-data/1002.png create mode 100644 dataeng/Level1/unittests/demo-data/1003.csv create mode 100644 dataeng/Level1/unittests/demo-data/1003.png create mode 100644 dataeng/Level1/unittests/demo-data/1004.csv create mode 100644 dataeng/Level1/unittests/demo-data/1005.csv create mode 100644 dataeng/Level1/unittests/demo-data/1005.png create mode 100644 dataeng/Level1/unittests/demo-data/1006.png create mode 100644 dataeng/Level1/unittests/demo-output/output.csv create mode 100644 dataeng/Level1/unittests/test_image_path_finder.py create mode 100644 dataeng/Level2/server.py create mode 100644 dataeng/util.py diff --git a/dataeng/Level1/image_path_finder.py b/dataeng/Level1/image_path_finder.py index 9f67480c..9f01928d 100644 --- a/dataeng/Level1/image_path_finder.py +++ b/dataeng/Level1/image_path_finder.py @@ -1,29 +1,27 @@ -import os import pathlib -import csv +from util import * -def append_to_csv(output_file, user_id: int, path_to_csv: str) -> bool: +def append_to_csv(output_file, user_id: int, path_to_csv: str, user_png: bool) -> bool: """ Given the path to the .csv file and the user id, create the data needed and then append it to output_file/output.csv. :param output_file: path to where the output file should be. :param user_id: user id to be added to the output file. :param path_to_csv: path to the .csv file. + :param user_png: is there a photo for this .csv file. :return: true if the output.csv was changed, false if not. """ - if not os.path.isfile(output_file + "/output.csv"): - f = open(output_file + "/output.csv", "w+") - f.close() - r = csv.reader(open(output_file + "/output.csv", "r+")) - lines = list(r) + lines = get_csv(output_file + "/output.csv") if not len(lines): - lines.append(["user_id", " first_name", " last_name", " birthts", " img_path"]) - jpg_path = path_to_csv[:-4] - jpg_path += ".png" - jpg_path = " " + jpg_path - line_to_write = [str(user_id), *list(csv.reader(open(path_to_csv, "r+")))[1], jpg_path] - line_to_write[1] = " " + line_to_write[1] + lines.append(["user_id", "first_name", "last_name", "birthts", "img_path"]) + if user_png: + jpg_path = path_to_csv[:-4] + jpg_path += ".png" + else: + jpg_path = "None" + temp = get_csv(path_to_csv) + line_to_write = [str(user_id), *temp[1], jpg_path] for i in range(len(lines)): if lines[i][0] == line_to_write[0]: if lines[i] == line_to_write: @@ -40,7 +38,7 @@ def append_to_csv(output_file, user_id: int, path_to_csv: str) -> bool: return True -def find_png(input_path: str) -> int: +def find_png_and_id(input_path: str) -> (bool, int): """ Takes a path to a .csv file and checks if there's a .png file with the same name in the same directory. if the file exists then returns the name of the file (since this is also the user id), if it doesn't exist @@ -48,12 +46,15 @@ def find_png(input_path: str) -> int: :param input_path: path to the .csv file. :return: user id if the file exists or -1 otherwise. """ - user_id = int(pathlib.Path(input_path).stem) + try: + user_id = int(pathlib.Path(input_path).stem) + except ValueError: + return False, -1 input_path = input_path[:-4] input_path += ".png" if os.path.isfile(input_path): - return user_id - return -1 + return True, user_id + return False, user_id def process(input_path: str, output_path: str) -> (int, list): @@ -69,12 +70,12 @@ def process(input_path: str, output_path: str) -> (int, list): raise ValueError("This directory doesn't exist") count = 0 filenames = [] - for filename in os.listdir(input_path): + for filename in sorted(os.listdir(input_path)): if filename.endswith('.csv'): - user_id = find_png(input_path + "/" + filename) - if user_id == -1: + user_id = find_png_and_id(input_path + "/" + filename) + if user_id[1] == -1: continue - if append_to_csv(output_path, user_id, input_path + "/" + filename): + if append_to_csv(output_path, user_id[1], input_path + "/" + filename, user_id[0]): count += 1 filenames.append(pathlib.Path(filename).stem) filenames.sort() @@ -82,7 +83,6 @@ def process(input_path: str, output_path: str) -> (int, list): if __name__ == "__main__": - print(process("/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/demo-data", "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/demo-output")) istr = input("Enter the input absolute path: ") ostr = input("Enter the output absolute path: ") - print(process(istr, ostr)) \ No newline at end of file + print(process(istr, ostr)) diff --git a/dataeng/Level1/processed_data/output.csv b/dataeng/Level1/processed_data/output.csv index 3e70f6d8..3dc79e76 100644 --- a/dataeng/Level1/processed_data/output.csv +++ b/dataeng/Level1/processed_data/output.csv @@ -1,101 +1,101 @@ -user_id, first_name, last_name, birthts, img_path -1037, Patrick, Newell, 853794000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1037.png -1084, Jody, Hochmuth, 752446800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1084.png -1057, Chad, Miller, 971208000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1057.png -1036, Ellen, Folkers, 821394000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1036.png -1040, Clara, Kimble, 765403200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1040.png -1035, Adolph, Raymond, 955915200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1035.png -1071, Jerome, Weaver, 1008795600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1071.png -1058, Olivia, Stout, 690674400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1058.png -1028, Martha, Burwell, 503269200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1028.png -1075, Stacey, Bishop, 493848000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1075.png -1044, Christopher, Hardin, 785883600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1044.png -1055, Jaclyn, Adams, 614635200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1055.png -1006, Rick, Mayfield, 412549200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1006.png -1054, Melissa, Denny, 482011200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1054.png -1003, Vernon, Evans, 633733200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1003.png -1048, Larry, Sanchez, 1068930000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1048.png -1078, David, May, 601074000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1078.png -1033, Jeanne, Shoup, 1018468800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1033.png -1067, Joseph, Carter, 1081713600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1067.png -1047, Kenneth, Osborn, 793918800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1047.png -1072, Morris, Hall, 407019600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1072.png -1085, Beverly, Livesey, 739224000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1085.png -1049, Brian, Brown, 814050000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1049.png -1062, Robert, Kirk, 506552400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1062.png -1061, Madelyn, Oliver, 936907200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1061.png -1039, Danielle, Robinson, 887230800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1039.png -1042, James, Nance, 1063051200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1042.png -1056, Frances, Visher, 906580800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1056.png -1014, Kim, Moore, 403218000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1014.png -1019, Wendy, Jarrette, 650145600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1019.png -1017, Lewis, Erickson, 642283200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1017.png -1080, Mary, Nelson, 518644800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1080.png -1032, Robert, David, 666997200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1032.png -1002, Nathan, Emery, 697237200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1002.png -1013, Shaneka, Cook, 752533200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1013.png -1023, Michael, Diaz, 630277200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1023.png -1008, Coletta, Haring, 768081600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1008.png -1020, Becky, Hanner, 883429200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1020.png -1089, Leah, Costales, 1072472400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1089.png -1066, Jeffrey, Mcdonald, 686091600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1066.png -1022, John, Rose, 919630800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1022.png -1029, Jimmy, Deane, 947365200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1029.png -1087, Aaron, Fox, 1090094400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1087.png -1031, Sidney, Woods, 865972800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1031.png -1046, Margaret, Diaz, 942872400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1046.png -1051, Janet, Chavarria, 1087588800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1051.png -1098, Maria, Horton, 702504000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1098.png -1088, Rachel, Robinson, 528148800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1088.png -1038, Mary, Roman, 750891600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1038.png -1065, Matthew, Bloom, 531176400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1065.png -1097, John, Bausch, 1013029200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1097.png -1026, James, Henry, 954705600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1026.png -1041, David, Bailey, 1062446400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1041.png -1052, Carolyn, Seymore, 385851600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1052.png -1076, Ray, Goins, 933451200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1076.png -1016, Betty, Partin, 467240400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1016.png -1030, Kathleen, Gittens, 921272400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1030.png -1043, John, Ramage, 378507600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1043.png -1004, Maria, Crooks, 1051214400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1004.png -1001, Rosa, Garcia, 670626000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1001.png -1081, Amy, Smith, 785710800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1081.png -1095, Corey, Davis, 1054411200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1095.png -1011, Glen, Martin, 636066000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1011.png -1009, Margaret, Smith, 388612800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1009.png -1091, Opal, Morse, 463780800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1091.png -1073, Myrtle, Ferro, 840830400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1073.png -1053, Dorothy, Massey, 356990400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1053.png -1021, Ray, Nunes, 352501200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1021.png -1079, Cindy, Wilcox, 1021060800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1079.png -1082, Joseph, Denton, 463089600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1082.png -1083, Keith, Wiggin, 461707200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1083.png -1074, Gisela, Patterson, 464990400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1074.png -1007, Eddie, Baumbach, 874526400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1007.png -1094, Cecil, Struck, 416437200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1094.png -1063, Stephanie, Nelson, 476571600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1063.png -1005, Sharon, Lang, 700606800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1005.png -1018, Jenee, Crouse, 429566400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1018.png -1060, Judith, Hatchett, 925070400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1060.png -1034, Brenda, Croyle, 788302800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1034.png -1027, Gregory, Pittman, 398894400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1027.png -1045, Suzanne, Ferguson, 812581200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1045.png -1015, Lorraine, Bingham, 891288000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1015.png -1025, Dino, Miller, 1074805200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1025.png -1064, Barbara, Blankenship, 655506000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1064.png -1093, Aaron, Towe, 877809600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1093.png -1068, Eloy, Florentino, 848005200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1068.png -1092, Alan, Mcgraw, 469054800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1092.png -1096, James, Peacock, 503442000000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1096.png -1086, Nicole, Pharr, 884552400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1086.png -1000, Susan, Lee, 612302400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1000.png -1024, William, Quick, 340059600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1024.png -1050, Warren, Green, 443048400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1050.png -1090, Thomas, Williams, 946501200000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1090.png -1010, James, Martin, 879627600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1010.png -1059, Wallace, Miller, 821134800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1059.png -1077, Blake, Dickerson, 508107600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1077.png -1012, Debbie, Mooney, 423086400000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1012.png -1070, Elizabeth, Hoover, 334702800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1070.png -1099, Samuel, Ladner, 815259600000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1099.png -1069, David, Myles, 432676800000, /home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1069.png +user_id,first_name,last_name,birthts,img_path +1000,Susan,Lee,612302400000,None +1001,Rosa,Garcia,670626000000,None +1002,Nathan,Emery,697237200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1002.png +1003,Vernon,Evans,633733200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1003.png +1004,Maria,Crooks,1051214400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1004.png +1005,Sharon,Lang,700606800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1005.png +1006,Rick,Mayfield,412549200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1006.png +1007,Eddie,Baumbach,874526400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1007.png +1008,Coletta,Haring,768081600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1008.png +1009,Margaret,Smith,388612800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1009.png +1010,James,Martin,879627600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1010.png +1011,Glen,Martin,636066000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1011.png +1012,Debbie,Mooney,423086400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1012.png +1013,Shaneka,Cook,752533200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1013.png +1014,Kim,Moore,403218000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1014.png +1015,Lorraine,Bingham,891288000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1015.png +1016,Betty,Partin,467240400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1016.png +1017,Lewis,Erickson,642283200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1017.png +1018,Jenee,Crouse,429566400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1018.png +1019,Wendy,Jarrette,650145600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1019.png +1020,Becky,Hanner,883429200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1020.png +1021,Ray,Nunes,352501200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1021.png +1022,John,Rose,919630800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1022.png +1023,Michael,Diaz,630277200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1023.png +1024,William,Quick,340059600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1024.png +1025,Dino,Miller,1074805200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1025.png +1026,James,Henry,954705600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1026.png +1027,Gregory,Pittman,398894400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1027.png +1028,Martha,Burwell,503269200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1028.png +1029,Jimmy,Deane,947365200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1029.png +1030,Kathleen,Gittens,921272400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1030.png +1031,Sidney,Woods,865972800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1031.png +1032,Robert,David,666997200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1032.png +1033,Jeanne,Shoup,1018468800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1033.png +1034,Brenda,Croyle,788302800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1034.png +1035,Adolph,Raymond,955915200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1035.png +1036,Ellen,Folkers,821394000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1036.png +1037,Patrick,Newell,853794000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1037.png +1038,Mary,Roman,750891600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1038.png +1039,Danielle,Robinson,887230800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1039.png +1040,Clara,Kimble,765403200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1040.png +1041,David,Bailey,1062446400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1041.png +1042,James,Nance,1063051200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1042.png +1043,John,Ramage,378507600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1043.png +1044,Christopher,Hardin,785883600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1044.png +1045,Suzanne,Ferguson,812581200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1045.png +1046,Margaret,Diaz,942872400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1046.png +1047,Kenneth,Osborn,793918800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1047.png +1048,Larry,Sanchez,1068930000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1048.png +1049,Brian,Brown,814050000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1049.png +1050,Warren,Green,443048400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1050.png +1051,Janet,Chavarria,1087588800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1051.png +1052,Carolyn,Seymore,385851600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1052.png +1053,Dorothy,Massey,356990400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1053.png +1054,Melissa,Denny,482011200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1054.png +1055,Jaclyn,Adams,614635200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1055.png +1056,Frances,Visher,906580800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1056.png +1057,Chad,Miller,971208000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1057.png +1058,Olivia,Stout,690674400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1058.png +1059,Wallace,Miller,821134800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1059.png +1060,Judith,Hatchett,925070400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1060.png +1061,Madelyn,Oliver,936907200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1061.png +1062,Robert,Kirk,506552400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1062.png +1063,Stephanie,Nelson,476571600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1063.png +1064,Barbara,Blankenship,655506000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1064.png +1065,Matthew,Bloom,531176400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1065.png +1066,Jeffrey,Mcdonald,686091600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1066.png +1067,Joseph,Carter,1081713600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1067.png +1068,Eloy,Florentino,848005200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1068.png +1069,David,Myles,432676800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1069.png +1070,Elizabeth,Hoover,334702800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1070.png +1071,Jerome,Weaver,1008795600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1071.png +1072,Morris,Hall,407019600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1072.png +1073,Myrtle,Ferro,840830400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1073.png +1074,Gisela,Patterson,464990400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1074.png +1075,Stacey,Bishop,493848000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1075.png +1076,Ray,Goins,933451200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1076.png +1077,Blake,Dickerson,508107600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1077.png +1078,David,May,601074000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1078.png +1079,Cindy,Wilcox,1021060800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1079.png +1080,Mary,Nelson,518644800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1080.png +1081,Amy,Smith,785710800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1081.png +1082,Joseph,Denton,463089600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1082.png +1083,Keith,Wiggin,461707200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1083.png +1084,Jody,Hochmuth,752446800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1084.png +1085,Beverly,Livesey,739224000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1085.png +1086,Nicole,Pharr,884552400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1086.png +1087,Aaron,Fox,1090094400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1087.png +1088,Rachel,Robinson,528148800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1088.png +1089,Leah,Costales,1072472400000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1089.png +1090,Thomas,Williams,946501200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1090.png +1091,Opal,Morse,463780800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1091.png +1092,Alan,Mcgraw,469054800000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1092.png +1093,Aaron,Towe,877809600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1093.png +1094,Cecil,Struck,416437200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1094.png +1095,Corey,Davis,1054411200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1095.png +1096,James,Peacock,503442000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1096.png +1097,John,Bausch,1013029200000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1097.png +1098,Maria,Horton,702504000000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1098.png +1099,Samuel,Ladner,815259600000,/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data/1099.png diff --git a/dataeng/Level1/unittests/demo-data/1000.csv b/dataeng/Level1/unittests/demo-data/1000.csv new file mode 100644 index 00000000..afd57739 --- /dev/null +++ b/dataeng/Level1/unittests/demo-data/1000.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Susan, Lee, 612302400000 diff --git a/dataeng/Level1/unittests/demo-data/1000.png b/dataeng/Level1/unittests/demo-data/1000.png new file mode 100644 index 0000000000000000000000000000000000000000..b319625eca7797f1214f324ba5d88757abd67083 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJMt)4E9Ar*7p-aN?JVj#j0D7yYz zqIdK{-AK0sYJ2l!r|Ci5a?e3qU zo92BGHfTs=ILiM`{C-8!d`^2t<_xwAJPSnUvKK}Dy?^~r-VaU*2V;=3&p?&4 z7)_Wn+G`KIXJ&w?>%G4HNu^xI0f>z2`_^~+_UA86spo(h6k03)gZ-g;0z)o)nw53p Uf?UIJpa&Q{UHx3vIVCg!0NCcXxkP#ow|=&DYh_pb?QQv7bJI*Y2Yu!Y@AC(r*X_-_-&cC#pXs6V z4U8tt8EhB2N)xV>{(5b*HtU#h9UIRANeAPGurHV|+K6b-+3 zJi8)d{lnBvMQ_cxn>hpRng73yYWiY)p)Bh7luH6PUG_J`v0Zrf=it71+uOG#@2uTd zvM==Y*Uz6HswXgyb2$d`YA`@;oRoo~GM{%`zy{+%C$4I0wGs!W(O*e>ua z2z|?(|M%bJs=2fND*j>NSs>|P++bFjTg46RcwbDVKC8mIo5M Z85X%JNhj4^>IQm&!PC{xWt~$(695_DW3>PP literal 0 HcmV?d00001 diff --git a/dataeng/Level1/unittests/demo-data/1003.csv b/dataeng/Level1/unittests/demo-data/1003.csv new file mode 100644 index 00000000..da0e51ea --- /dev/null +++ b/dataeng/Level1/unittests/demo-data/1003.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Vernon, Evans, 633733200000 diff --git a/dataeng/Level1/unittests/demo-data/1003.png b/dataeng/Level1/unittests/demo-data/1003.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2eae48f0b77289eb0b10553d9c2d9b5306f10b GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM)t)YnAr*7p-aN?JVj$oUxL7Pn z_FI2xgp-uOo@Waz7JZWa@qXK+P+ykB*1|JHp|>zLRsfK+k+<@*!)i&Fxq zJdNQj!z@M<<_xwAPQQ;_`91%{uP?#|5aHjH L{an^LB{Ts5Cy-nw literal 0 HcmV?d00001 diff --git a/dataeng/Level1/unittests/demo-data/1004.csv b/dataeng/Level1/unittests/demo-data/1004.csv new file mode 100644 index 00000000..f32edb85 --- /dev/null +++ b/dataeng/Level1/unittests/demo-data/1004.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Maria, Crooks, 1051214400000 diff --git a/dataeng/Level1/unittests/demo-data/1005.csv b/dataeng/Level1/unittests/demo-data/1005.csv new file mode 100644 index 00000000..38a14b90 --- /dev/null +++ b/dataeng/Level1/unittests/demo-data/1005.csv @@ -0,0 +1,2 @@ +first_name, last_name, birthts +Sharon, Lang, 700606800000 diff --git a/dataeng/Level1/unittests/demo-data/1005.png b/dataeng/Level1/unittests/demo-data/1005.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad02751da176417b08fa46de2668e9eafce1702 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGJM?Vc`d?bmLt-emrlVK2`DNeAPGG={Sbw|-P_ zsIy<$y}a`0@81_|H$8X%xBU+bLVgyb33JBdpPH5KzyE1Znco27vR!a`ecgceA4yI zpS&M}1`TNpXBlptx4JOvy8H8&p;gyreo#&T3e95N67s$?{OtGL*M+|`mnQ**qJA{| z`LCP1_ list: + """ + Gets the data from output.csv and removes the rows that don't pass the filters. + :param image_filter: True, False, or None. Returns entries with photo path if true. Returns entries without + photo path if false. Ignores if None. + :param min_age_filter: Either -1 or a positive float. If -1 ignore, else entries' age must be higher + than min_age_filter. + :param max_age_filter: Either -1 or a positive float. If -1 ignore, else entries' age must be lower + than min_age_filter. + :return: list with filtered rows. + """ + lines = get_csv(output_path + "/output.csv") + lines = lines[1:] + ans = [] + for i in range(len(lines)): + if not check_image(lines[i], image_filter) or not check_min_age(lines[i], min_age_filter) or \ + not check_max_age(lines[i], max_age_filter): + continue + ans.append(lines[i]) + return ans + + +@app.route('/data', methods=['GET']) +def process_request(): + """ + Takes parameters from url as specified in the readme file. Queries the output.csv and returns all of the rows in the + file (except the header). + :return: a JSON file of all the rows that pass the filtering. + """ + image_filter = request.args.get('is_image_exists', default="None", type=str) + min_age_filter = request.args.get('min_age', default=-1.0, type=float) + max_age_filter = request.args.get('max_age', default=-1.0, type=float) + if min_age_filter > max_age_filter != -1: + return "min age is bigger than max age", 400 + if image_filter.lower() == "true": + image_filter = True + elif image_filter.lower() == "false": + image_filter = False + else: + image_filter = None + return jsonify({'result': get_data(image_filter, min_age_filter, max_age_filter)}) + + +if __name__ == "__main__": + app.run(debug=True) diff --git a/dataeng/util.py b/dataeng/util.py new file mode 100644 index 00000000..86b68c36 --- /dev/null +++ b/dataeng/util.py @@ -0,0 +1,76 @@ +import os +import csv + +input_path_real_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data" +output_path_real_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/processed_data" +input_path_test_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/unittests/demo-data" +output_path_test_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/unittests/demo-output" + + +def millisecond_to_years(x): + """ + Turns x millisecond to years. + :param x: number of milliseconds. + :return: the equivalent number of years. + """ + return x / 31556952000 + + +def check_image(row, image_filter): + """ + Checks if a certain row in the output.csv file correctly passes the filter. + :param row: an entry in the .csv file. + :param image_filter: True, False, or None. + :return: if it passes or not. + """ + if image_filter is None: + return True + if image_filter: + if row[-1] != "None": + return True + if not image_filter: + if row[-1] == "None": + return True + return False + + +def check_min_age(row, min_age_filter): + """ + Checks if a certain row in the output.csv file correctly passes the filter. + :param row: an entry in the .csv file. + :param min_age_filter: minimum age in years. + :return: if it passes or not. + """ + if min_age_filter == -1: + return True + if millisecond_to_years(int(row[-2])) >= min_age_filter: + return True + return False + + +def check_max_age(row, max_age_filter): + """ + Checks if a certain row in the output.csv file correctly passes the filter. + :param row: an entry in the .csv file. + :param max_age_filter: maximum age in years. + :return: if it passes or not. + """ + if max_age_filter == -1: + return True + if millisecond_to_years(int(row[-2])) <= max_age_filter: + return True + return False + + +def get_csv(path): + """ + Given an absolute path to a .csv, returns the contents of the csv file. + :param path: path to the .csv + :return: contents of the csv file. + """ + if not os.path.isfile(path): + f = open(path, "w+") + f.close() + reader = csv.reader(open(path, "r+"), delimiter=',', quoting=csv.QUOTE_NONE) + temp = [[x.strip() for x in row] for row in reader] + return temp From 5342365784e367b668d7afeb0f6395707f193d2d Mon Sep 17 00:00:00 2001 From: Ehsan Shaghaei <53513242+Ehsan2754@users.noreply.github.com> Date: Tue, 19 Oct 2021 22:56:20 +0300 Subject: [PATCH 3/4] Task 3 --- dataeng/app.py | 83 +++++++++++++++++++++++++++ dataeng/config.py | 7 +++ dataeng/db_handler.py | 108 +++++++++++++++++++++++++++++++++++ dataeng/docker-compose.yml | 57 ++++++++++++++++++ dataeng/dockerfile | 9 +++ dataeng/image_path_finder.py | 77 +++++++++++++++++++++++++ dataeng/main.py | 47 +++++++++++++++ dataeng/requirements.txt | 19 ++++++ dataeng/util.py | 49 +++++++++++----- 9 files changed, 443 insertions(+), 13 deletions(-) create mode 100644 dataeng/app.py create mode 100644 dataeng/config.py create mode 100644 dataeng/db_handler.py create mode 100644 dataeng/docker-compose.yml create mode 100644 dataeng/dockerfile create mode 100644 dataeng/image_path_finder.py create mode 100644 dataeng/main.py create mode 100644 dataeng/requirements.txt diff --git a/dataeng/app.py b/dataeng/app.py new file mode 100644 index 00000000..99bff460 --- /dev/null +++ b/dataeng/app.py @@ -0,0 +1,83 @@ +from flask import Flask, request, jsonify +from image_path_finder import process +from util import * +from apscheduler.schedulers.background import BackgroundScheduler +import atexit +from typing import Union +import db_handler + + +minio_client = None +input_bucket = None +output_bucket = None + + +def sched_process(): + """ + function for the scheduler to make automatic updates to entries. + :return: Nothing. + """ + print("Running automated update...") + process(minio_client, input_bucket, output_bucket) + print("Finished...") + + +sched = BackgroundScheduler() +sched.add_job(sched_process, 'interval', seconds=120) +sched.start() +atexit.register(lambda: sched.shutdown()) + +app = Flask(__name__) + + +@app.route('/data', methods=['POST']) +def process_data(): + """ + Forces a data update. + :return: a tuple, the number of added or updated entries, and a sorted list of the user ids for + new or updated entries + """ + process(minio_client, input_bucket, output_bucket) + return jsonify({"Result": "Done"}) + + +def get_data(image_filter: Union[None, bool], min_age_filter: float, max_age_filter: float) -> list: + """ + Gets the data from output.csv and removes the rows that don't pass the filters. + :param image_filter: True, False, or None. Returns entries with photo path if true. Returns entries without + photo path if false. Ignores if None. + :param min_age_filter: Either -1 or a positive float. If -1 ignore, else entries' age must be higher + than min_age_filter. + :param max_age_filter: Either -1 or a positive float. If -1 ignore, else entries' age must be lower + than min_age_filter. + :return: list with filtered rows. + """ + lines = db_handler.get_users_data('users') + ans = [] + for i in range(len(lines)): + if not check_image(lines[i], image_filter) or not check_min_age(lines[i], min_age_filter) or \ + not check_max_age(lines[i], max_age_filter): + continue + ans.append(lines[i]) + return ans + + +@app.route('/data', methods=['GET']) +def process_request(): + """ + Takes parameters from url as specified in the readme file. Queries the output.csv and returns all of the rows in the + file (except the header). + :return: a JSON file of all the rows that pass the filtering. + """ + image_filter = request.args.get('is_image_exists', default="None", type=str) + min_age_filter = request.args.get('min_age', default=-1.0, type=float) + max_age_filter = request.args.get('max_age', default=-1.0, type=float) + if min_age_filter > max_age_filter != -1: + return "min age is bigger than max age", 400 + if image_filter.lower() == "true": + image_filter = True + elif image_filter.lower() == "false": + image_filter = False + else: + image_filter = None + return jsonify({'result': get_data(image_filter, min_age_filter, max_age_filter)}) diff --git a/dataeng/config.py b/dataeng/config.py new file mode 100644 index 00000000..39f4aa64 --- /dev/null +++ b/dataeng/config.py @@ -0,0 +1,7 @@ +access_key = "minio-access-key" +secret_key = "minio-secret-key" +db_name = "internship" +user = "postgres" +password = "postgres" +db_host = "db" +minio_host = "minio" diff --git a/dataeng/db_handler.py b/dataeng/db_handler.py new file mode 100644 index 00000000..a6a3e20a --- /dev/null +++ b/dataeng/db_handler.py @@ -0,0 +1,108 @@ +import psycopg2 +import config + + +def init(): + """ + Initiates the connection with the database 'dbname' + :return: (conn, crsr) -> (the connection object, the cursor to perform commands) + """ + conn = psycopg2.connect(dbname=config.db_name, user=config.user, + password=config.password, host=config.db_host) + return conn, conn.cursor() + + +def get_users_data(table_name): + """ + Retrieves all the data in the table table_name + :param table_name: the name of the table + :return: a list that contains all the data in the table + + NOTE: + the returned list will contain all the information about the users right after each other + without having each user in a separate list. + For example: returned_list = [user_id1, first_name1, last_name1, birthdate1, img_path1, user_id2, first_name2, .....] + """ + conn, crsr = init() + + crsr.execute(f"SELECT user_id, first_name, last_name, birthdate, img_path FROM {table_name};") + data = crsr.fetchall() + + conn.commit() + crsr.close() + conn.close() + + res = [] + for row in data: + res.append(row) + return res + + +def get_ids(table_name): + """ + Retrieves all the ids of the users inside the 'table_name' table + :param table_name: the name of the table + :return: a list of the ids of the users inside the table + """ + conn, crsr = init() + + crsr.execute(f"SELECT user_id FROM {table_name};") + ids = crsr.fetchall() + + conn.commit() + conn.close() + crsr.close() + + return [id[0] for id in ids] + + +def update_row(table_name, user): + """ + + :param user: [first_name, last_name, birthts, img_path, user_id] + :return: + """ + conn, crsr = init() + + user = [user[1], user[2], user[3], user[4], user[0]] + + crsr.execute(f""" + UPDATE {table_name} SET first_name = %s, last_name = %s, + birthdate = %s, img_path = %s WHERE user_id = %s; + """, user) + + conn.commit() + conn.close() + + +def insert_row(table_name, user): + conn, crsr = init() + + crsr.execute( + f"INSERT INTO {table_name} (user_id, first_name, last_name, birthdate, img_path) " + f"VALUES (%s, %s, %s, %s, %s)", user) + + conn.commit() + conn.close() + + +def create_table_users(): + """ + Creates the table users that we will use to migrate our data from output.csv to. + """ + conn, crsr = init() + + crsr.execute(""" + CREATE TABLE IF NOT EXISTS users( + id SERIAL PRIMARY KEY NOT NULL, + user_id varchar (20) NOT NULL, + first_name varchar (30) NOT NULL, + last_name varchar (30) NOT NULL, + birthdate varchar (30) NOT NULL, + img_path varchar (250) NOT NULL + ); + """) + + conn.commit() + crsr.close() + conn.close() diff --git a/dataeng/docker-compose.yml b/dataeng/docker-compose.yml new file mode 100644 index 00000000..0180622a --- /dev/null +++ b/dataeng/docker-compose.yml @@ -0,0 +1,57 @@ +version: '3' +services: + minio: + image: bitnami/minio:latest + restart: always + environment: + - MINIO_ACCESS_KEY=minio-access-key + - MINIO_SECRET_KEY=minio-secret-key + volumes: + - ./minio:/data + ports: + - 9000:9000 + - 9001:9001 + + minio-create-bucket: + image: minio/mc + depends_on: + - minio + entrypoint: > + /bin/sh -c " + /usr/bin/mc config host add myminio http://minio:9000 minio-access-key minio-secret-key; + /usr/bin/mc mb myminio/datalake; + /usr/bin/mc policy download myminio/datalake; + exit 0; + " + db: + image: postgres:13.3 + restart: always + environment: + POSTGRES_DB: internship + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + volumes: + - ./postgres-data:/var/lib/postgresql + ports: + - 5432:5432 + + pgadmin: + image: chorss/docker-pgadmin4 + restart: always + volumes: + - ./pgadmin:/data + ports: + - 5050:5050 + depends_on: + - db + + web: + build: . + ports: + - 5000:5000 + depends_on: + - db + - pgadmin + - minio + - minio-create-bucket + diff --git a/dataeng/dockerfile b/dataeng/dockerfile new file mode 100644 index 00000000..400b2a6c --- /dev/null +++ b/dataeng/dockerfile @@ -0,0 +1,9 @@ +FROM python:3.7.12-bullseye +WORKDIR /code +ENV FLASK_APP=app.py +ENV FLASK_RUN_HOST=0.0.0.0 +COPY requirements.txt requirements.txt +RUN pip3 install -r requirements.txt +EXPOSE 5000 +COPY . . +CMD ["python3", "main.py"] diff --git a/dataeng/image_path_finder.py b/dataeng/image_path_finder.py new file mode 100644 index 00000000..d5fa79da --- /dev/null +++ b/dataeng/image_path_finder.py @@ -0,0 +1,77 @@ +from util import * +from minio import Minio +import os +import io +import db_handler + + +def append_to_csv(minio_client: Minio, input_bucket: str, object_name: str, user_id: (bool, int), output_bucket: str) -> None: + """ + Given the path to the .csv file and the user id, create the data needed and then + append it to output_file/output.csv. + :param output_file: path to where the output file should be. + :param user_id: user id to be added to the output file. + :param path_to_csv: path to the .csv file. + :param user_png: is there a photo for this .csv file. + :return: true if the output.csv was changed, false if not. + """ + lines = get_csv(minio_client, output_bucket, "output.csv", 5) + if user_id[0]: + png_path = input_bucket + "/" + object_name[:-4] + png_path += ".png" + else: + png_path = "None" + temp = get_csv(minio_client, input_bucket, object_name, 3) + line_to_write = [str(user_id[1]), *temp[1], png_path] + lines.append(line_to_write) + put_csv("temp_output.csv", lines) + minio_client.remove_object(output_bucket, "output.csv") + minio_client.fput_object(output_bucket, "output.csv", "temp_output.csv") + os.remove("temp_output.csv") + if line_to_write[0] in db_handler.get_ids('users'): + db_handler.update_row("users", line_to_write) + else: + db_handler.insert_row("users", line_to_write) + + +def find_png_and_id(minio_client: Minio, input_bucket: str, obj_name: str) -> (bool, int): + """ + Takes a path to a .csv file and checks if there's a .png file with the same name in the same directory. + if the file exists then returns the name of the file (since this is also the user id), if it doesn't exist + return -1. + :param input_path: path to the .csv file. + :return: user id if the file exists or -1 otherwise. + """ + try: + user_id = int(obj_name[:-4]) + except ValueError: + return False, -1 + png_name = obj_name[:-4] + png_name += ".png" + try: + minio_client.stat_object(input_bucket, png_name) + return True, user_id + except: + return False, user_id + + +def process(minio_client: Minio, input_bucket: str, output_bucket: str) -> None: + """ + Reads all files in input_path (absolute path). looks for a .png and a .csv files that have the same name and + combines them. Stores output in output_path/output.csv. + Returns the number of files found and their names. + :param minio_client: path used for finding the input. + :param input_bucket: path used for finding the input. + :param output_bucket: path used for finding the output file. + :return: number of files found and their names. + """ + minio_client.remove_object(output_bucket, "output.csv") + minio_client.put_object( + output_bucket, "output.csv", io.BytesIO(b"user_id,first_name,last_name,birthts,img_path"), 45, + ) + for obj in minio_client.list_objects(input_bucket): + if obj.object_name.endswith('.csv'): + user_id = find_png_and_id(minio_client, input_bucket, obj.object_name) + if user_id[1] == -1: + continue + append_to_csv(minio_client, input_bucket, obj.object_name, user_id, output_bucket) diff --git a/dataeng/main.py b/dataeng/main.py new file mode 100644 index 00000000..768cec06 --- /dev/null +++ b/dataeng/main.py @@ -0,0 +1,47 @@ +from minio import Minio +import config +import os +import io +import app +from minio.select import SelectRequest, CSVInputSerialization, CSVOutputSerialization +import db_handler + + +def get_minio_client(access, secret): + return Minio( + config.minio_host + ":9000", + access_key=access, + secret_key=secret, + secure=False + ) + + +if __name__ == "__main__": + db_handler.create_table_users() + minio_client = get_minio_client(config.access_key, config.secret_key) + if not minio_client.bucket_exists("src"): + minio_client.make_bucket("src") + if not minio_client.bucket_exists("res"): + minio_client.make_bucket("res") + + try: + minio_client.select_object_content( + "res", + "output.csv", + SelectRequest( + "select * from S3Object", + CSVInputSerialization(), + CSVOutputSerialization(), + request_progress=True, + ), + ) + except: + minio_client.put_object( + "res", "output.csv", io.BytesIO(b"user_id,first_name,last_name,birthts,img_path"), 45, + ) + + app.minio_client = minio_client + app.input_bucket = "src" + app.output_bucket = "res" + port = int(os.environ.get('PORT', 5000)) + app.app.run(host='0.0.0.0', port=port) diff --git a/dataeng/requirements.txt b/dataeng/requirements.txt new file mode 100644 index 00000000..3820d264 --- /dev/null +++ b/dataeng/requirements.txt @@ -0,0 +1,19 @@ +APScheduler==3.8.0 +backports.zoneinfo==0.2.1 +certifi==2021.5.30 +charset-normalizer==2.0.6 +click==8.0.1 +Flask==2.0.2 +idna==3.2 +itsdangerous==2.0.1 +Jinja2==3.0.2 +MarkupSafe==2.0.1 +minio==7.1.0 +psycopg2==2.9.1 +python-dateutil==2.8.2 +pytz==2021.3 +requests==2.26.0 +six==1.16.0 +tzlocal==2.0.0 +urllib3==1.26.7 +Werkzeug==2.0.2 diff --git a/dataeng/util.py b/dataeng/util.py index 86b68c36..9bcad307 100644 --- a/dataeng/util.py +++ b/dataeng/util.py @@ -1,10 +1,6 @@ -import os import csv - -input_path_real_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/src-data" -output_path_real_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/processed_data" -input_path_test_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/unittests/demo-data" -output_path_test_data = "/home/ehsan2754/git_workspace/provectus task/provectus-internship-task/Level1/unittests/demo-output" +from minio import Minio +from minio.select import SelectRequest, CSVInputSerialization, CSVOutputSerialization def millisecond_to_years(x): @@ -62,15 +58,42 @@ def check_max_age(row, max_age_filter): return False -def get_csv(path): +def get_csv(minio_client: Minio, bucket: str, obj: str, num_col: int): """ Given an absolute path to a .csv, returns the contents of the csv file. :param path: path to the .csv :return: contents of the csv file. """ - if not os.path.isfile(path): - f = open(path, "w+") - f.close() - reader = csv.reader(open(path, "r+"), delimiter=',', quoting=csv.QUOTE_NONE) - temp = [[x.strip() for x in row] for row in reader] - return temp + with minio_client.select_object_content( + bucket, + obj, + SelectRequest( + "select * from S3Object", + CSVInputSerialization(), + CSVOutputSerialization(), + request_progress=True, + ), + ) as result: + for data in result.stream(): + x = data.decode().replace("\n", ",").split(",") + for i in range(len(x)): + x[i] = x[i].strip('"').strip(" ") + y = [i for i in x if i != ""] + ans = [] + k = 0 + temp = [] + for i in y: + if not k: + ans.append(temp.copy()) + temp.clear() + temp.append(i) + k += 1 + k %= num_col + ans.append(temp.copy()) + ans = ans[1:] + return ans + + +def put_csv(path: str, lines: list): + w = csv.writer(open(path, "w+")) + w.writerows(lines) From 7559fb9729c15779a7b30c5e3a75f0e44104d799 Mon Sep 17 00:00:00 2001 From: Ehsan Shaghaei <53513242+Ehsan2754@users.noreply.github.com> Date: Tue, 19 Oct 2021 23:06:43 +0300 Subject: [PATCH 4/4] Finalizing --- dataeng/README.md | 1 + dataeng/solution.md | 239 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 240 insertions(+) create mode 100644 dataeng/solution.md diff --git a/dataeng/README.md b/dataeng/README.md index 3df8bdd1..9a0f1913 100644 --- a/dataeng/README.md +++ b/dataeng/README.md @@ -1,3 +1,4 @@ +# Check out my [Solution](solution.md) ### Prerequisites * Python 3.7 or greater * Docker 19.03 or greater diff --git a/dataeng/solution.md b/dataeng/solution.md new file mode 100644 index 00000000..a5504a2d --- /dev/null +++ b/dataeng/solution.md @@ -0,0 +1,239 @@ +# Provectus-Internship-Task +In this file I will explain how to run and test my solution to the test task. I will also explain some of the logic in the code. Reading this file plus the documentation in the code itself should be sufficient to understand how this code works. The solution to the theoretical questions will also be included in this file. + +## Applicant +[![Ehsans's GitHub stats](https://github-readme-stats.vercel.app/api?username=ehsan2754)](https://github.com/ehsan2754/github-readme-stats) + + +![Github]( https://img.shields.io/badge/Github-000000?style=for-the-badge&logo=github&logoColor=white) [Ehsan Shaghaei](https://github.com/Ehsan2754) + + +![Telegram]( https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white) [Ehsan Shaghaei](https://t.me/ethanshagaei) + + +## Table of Contents +1. [ Data Processing ](#data) +2. [ Theoretical Questions ](#theo) + + + +# Data Processing Level 3 + +## Table of Contents +1. [ Installing The Service ](#install) +2. [ Using The Service ](#use) +3. [ Understanding The Code ](#code) + + +# 1. Installing The Service + +First clone this repo somewhere on your machine. From now on we will call the path to where you cloned the repo {installation path}. + +Then inside the repo run +``` +sudo docker-compose up --build +``` +This will run and create some folders in {installation path}. Namely it will create {installation path}/minio, {installation path}/pgadmin, and {installation path}/postgres-data. + +After it creates these folders docker-compose will keep crashing and restarting. Stop and the services with `Ctrl+C` and run: +``` +sudo docker-compose down +``` + +The docker-compose crashes since it needs access permissions to these folders but these folders are created without the permissions. To fix this problem one can do something like +``` +sudo chmod 777 minio/ +sudo chmod 777 pgadmin/ +sudo chmod 777 postgres-data/ +``` + +Now running + +``` +sudo docker-compose up +``` +Will run everything without crashing. + +If you wait some time until docker-compose runs the web service then inside the {installation path}/minio you should have 2 folders named `src` and `res`. + +When the service wants to read input data it will only look inside `src` so if you want to add input data for processing then you need to copy it inside `src` and since this folder is created without permissions to copy you might need to do + +``` +sudo chmod 777 minio/src/ +``` +before you are allowed to copy inside `src`. + +Inside `res` there will be a file called `output.csv` which is the same `output.csv` described in the the test task. + +Now you should have a running service. + + + +# 2. Using The Service + +The services need some time to set up after building. You should wait for a few seconds after docker-compose builds all services to make sure everything is working. On slow laptops it will take some time for services to run after building. + +After running docker-compose as specified in the previous step you should have multiple services running. One of them is a flask server. + +The flask server starts a scheduler that processes the input data in `src` every set amount of time (the default is 900 seconds and can be edited form `config.py` file) and puts the output data in `output.csv` and postgres DB. + +You can interact with the flask server with the following requests: + +* a POST request on http://localhost:5000/data to force it to process the data in `src` instead of waiting for the schedular. +* a GET request on http://localhost:5000/data to return the data in the postgres DB. + +The GET request can use a query string to give filters for the retrieved data. The filters are `is_image_exists`, `min_age`, and `max_age`. For example: + +* http://localhost:5000/data?is_image_exists=true&min_age=30.5 will return all users that have a photo and their age >= 30.5. +* http://localhost:5000/data?max_age=30.5 will return all users whose age <= 30.5 regardless of their photo status. +* http://localhost:5000/data?is_image_exists=false will return all users without a photo. + +To check that the data is getting to the postgres DB correctly you can use the `pgadmin` service on http://localhost:5050 with the password `postgres`. Then make a connection to the postgres service on port 5432. Note that when you are making a connection to the postgres service the hostname/address is `db` and not `localhost` since docker images have their own dns names. The username and password for the connection are `postgres`. + + +# 3. Understanding The Code + +The `main.py` file is the launching point of the web service. It starts by making a connection with the `minio` and `postgres` services. It then creates 2 buckets in `minio` if they don't exist. The names of these buckets are taken from `config.py` file. After that, `main.py` starts a flask server which can be found in `app.py`. + +The flask server starts a scheduler to process the input data periodically and has two end-points as defined in "Using The Service". Processing the input data, whether that is done because of scheduler or a call to the end-point, happens by making a call to a function called `process` in the script `image_path_finder.py` which handles the updating. All the previous scripts make use of helper functions defined in `util.py` and from environment variables defined in `config.py`. + +Also, whenever the app needs to interact with the postgres DB it will use some of the functions in `db_handler.py`. For example, when sending the output from `output.csv` to the postgres DB it will use the function `handle_row` inside `db_handler.py`. + +### Different DNS Names In The Containers + +In the dockerfile you will notice that we define an environment variable called `IS_DOCKER`. This environment variable will tell the web service if it is running from docker or not. When the web service is running it will look at that variable and depending on it, the service will either connect to `minio:9000` or `localhost:9000` for establishing the connection to `minio` service. That is because if the web service is running from inside the container then it needs to use the dns names for the containers instead of `localhost`. The same thing will happen for connecting with the database. It will either use `db` or `localhost`. + +### Running The Web Service Without Docker + +Due to handling the dns names as defined above you can actually launch the service from outside the docker without problems. + +First go you `docker-compose.yml` and comment out or delete everything related to the web service. Then run +``` +sudo docker-compose up +``` +Now you can use the service from the terminal or any IDE and it will work as expected provided that docker-composed finished building and setting up. This is helpful if you wanted to use a debugger on the code. Make sure you have all the dependencies in `requirements.txt` installed. + +### Safety Note +The `config.py` shouldn't actually be uploaded to the git repo and `dockerfile` shouldn't use explicit values in the `ENV` statement in a production environment because they contain passwords, account names, environment variables. It was done this way to ease the use of this repo since this is just a test task. + +The proper way of handling that is creating a `.env` file that defines all those variables and use it in `dockerfile` and the web service itself and gitignoring that file when pushing to the repo. + + + +# Theoretical Questions + +## Table of Contents +1. [ SQL ](#sql) +2. [ Algorithms And Data Structures ](#dsa) +3. [ Linux Shell ](#linux) + + + +# 1. SQL + + 1. +``` +SELECT users.id FROM +users LEFT JOIN departments ON users.id=departments.user_id +WHERE departments.department_id != 1 OR departments.user_id IS NULL; +``` + + 2. Here we changed the table name from `user` to `users` + + ``` + SELECT lastname FROM users + GROUP BY lastname + HAVING count(lastname) > 1 + ``` + + 3. Here we changed the table name from `user` to `users` + + ``` + SELECT username, salary FROM + (salary JOIN users ON salary.id = users.id) + ORDER BY salary DESC LIMIT 1 OFFSET 1 + ``` + + +# 2. Algorithms And Data Structures + + 1. + +``` +def count_connections(list1: list, list2: list) -> int: + ans = 0 + + count = {} + + for i in list1: + if i in count: + count[i] += 1 + else: + count[i] = 1 + + for i in list2: + if i in count: + ans += 1 + + return ans +``` + + 2. + The time complexity for this solution is O(N) since dictionaries are hashmaps and we only loop over the string and do nothing else. + + The memory complexity is O(1) since we use a constant number of variables. `last_idx` would have at max 26 values inside it, therefore, constant memory. +``` +def calc(s: str) -> int: + last_idx = {} + ans = 0 + start_idx = 0 + + for i in range(len(s)): + if s[i] in last_idx: + start_idx = max(start_idx, last_idx[s[i]] + 1) + + ans = max(ans, i - start_idx + 1) + + last_idx[s[i]] = i + + return ans +``` + 3. + ``` +def bs(nums: list, target: int) -> int: + ans = len(nums) + l = 0 + r = len(nums) - 1 + while l <= r: + mid = (l + r) // 2 + if nums[mid] == target: + return mid + elif nums[mid] > target: + ans = mid + r = mid - 1 + else: + l = mid + 1 + + return ans + ``` + + +# 3. Linux Shell + + 1. `sudo lsof -i :80 ; lsof -i :443` + + 2. `cat /proc/PID/environ | tr '\0' '\n'` + + 3. + + To run in the background: + + `nohup python /path/to/my_program.py &` + + To close first you have to find the PID using this: + + `ps ax | grep my_program.py` + + and then kill the process with: + + `kill PID`