Agrannya commited on
Commit
6f0bbbb
·
verified ·
1 Parent(s): 29f8f72

Upload folder using huggingface_hub

Browse files
.config/.last_survey_prompt.yaml CHANGED
@@ -1 +1 @@
1
- last_prompt_time: 1750858589.2551932
 
1
+ last_prompt_time: 1751403832.4579225
.config/.last_update_check.json CHANGED
@@ -1 +1 @@
1
- {"last_update_check_time": 1750858591.29523, "last_update_check_revision": 20250620144631, "notifications": [], "last_nag_times": {}}
 
1
+ {"last_update_check_time": 1751403834.040841, "last_update_check_revision": 20250627154417, "notifications": [], "last_nag_times": {}}
.config/logs/2025.07.01/21.03.20.550425.log ADDED
@@ -0,0 +1,765 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2025-07-01 21:03:32,573 DEBUG root Loaded Command Group: ['gcloud', 'components']
2
+ 2025-07-01 21:03:32,577 DEBUG root Loaded Command Group: ['gcloud', 'components', 'update']
3
+ 2025-07-01 21:03:32,579 DEBUG root Running [gcloud.components.update] with arguments: [--compile-python: "True", --quiet: "True", COMPONENT-IDS:6: "['core', 'gcloud-deps', 'bq', 'gcloud', 'gcloud-crc32c', 'gsutil']"]
4
+ 2025-07-01 21:03:32,580 INFO ___FILE_ONLY___ Beginning update. This process may take several minutes.
5
+
6
+ 2025-07-01 21:03:32,614 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
7
+ 2025-07-01 21:03:32,626 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components-2.json HTTP/11" 200 239798
8
+ 2025-07-01 21:03:32,638 INFO ___FILE_ONLY___
9
+
10
+ 2025-07-01 21:03:32,639 INFO ___FILE_ONLY___
11
+ Your current Google Cloud CLI version is: 529.0.0
12
+
13
+ 2025-07-01 21:03:32,639 INFO ___FILE_ONLY___ Installing components from version: 529.0.0
14
+
15
+ 2025-07-01 21:03:32,639 INFO ___FILE_ONLY___
16
+
17
+ 2025-07-01 21:03:32,639 DEBUG root Chosen display Format:table[box,title="These components will be removed."](details.display_name:label=Name:align=left,version.version_string:label=Version:align=right,data.size.size(zero="",min=1048576):label=Size:align=right)
18
+ 2025-07-01 21:03:32,640 DEBUG root Chosen display Format:table[box,title="These components will be updated."](details.display_name:label=Name:align=left,version.version_string:label=Version:align=right,data.size.size(zero="",min=1048576):label=Size:align=right)
19
+ 2025-07-01 21:03:32,640 DEBUG root Chosen display Format:table[box,title="These components will be installed."](details.display_name:label=Name:align=left,version.version_string:label=Version:align=right,data.size.size(zero="",min=1048576):label=Size:align=right)
20
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___ ┌─────────────────────────────────────────────────────────────────────────────┐
21
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___
22
+
23
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___ │ These components will be installed. │
24
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___
25
+
26
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___ ├─────────────────────────────────────────────────────┬────────────┬──────────┤
27
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___
28
+
29
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___ │ Name │ Version │ Size │
30
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___
31
+
32
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___ ├─────────────────────────────────────────────────────┼────────────┼──────────┤
33
+ 2025-07-01 21:03:32,678 INFO ___FILE_ONLY___
34
+
35
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___ │
36
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___ BigQuery Command Line Tool
37
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___
38
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___ │
39
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___ 2.1.19
40
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___
41
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___ │
42
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___ 1.8 MiB
43
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___
44
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___ │
45
+ 2025-07-01 21:03:32,679 INFO ___FILE_ONLY___
46
+
47
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___ │
48
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___ BigQuery Command Line Tool (Platform Specific)
49
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___
50
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___ │
51
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___ 2.1.17
52
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___
53
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___ │
54
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___ < 1 MiB
55
+ 2025-07-01 21:03:32,680 INFO ___FILE_ONLY___
56
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ │
57
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___
58
+
59
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ │
60
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ Bundled Python 3.12 (Platform Specific)
61
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___
62
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ │
63
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ 3.12.9
64
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___
65
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ │
66
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ 89.3 MiB
67
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___
68
+ 2025-07-01 21:03:32,681 INFO ___FILE_ONLY___ │
69
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___
70
+
71
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ │
72
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ Cloud Storage Command Line Tool
73
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___
74
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ │
75
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ 5.35
76
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___
77
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ │
78
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ 12.4 MiB
79
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___
80
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ │
81
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___
82
+
83
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ │
84
+ 2025-07-01 21:03:32,682 INFO ___FILE_ONLY___ Cloud Storage Command Line Tool (Platform Specific)
85
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___
86
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ │
87
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ 5.34
88
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___
89
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ │
90
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ < 1 MiB
91
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___
92
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ │
93
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___
94
+
95
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ │
96
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ Google Cloud CLI Core Libraries (Platform Specific)
97
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___
98
+ 2025-07-01 21:03:32,683 INFO ___FILE_ONLY___ │
99
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ 2025.05.23
100
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___
101
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ │
102
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ < 1 MiB
103
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___
104
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ │
105
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___
106
+
107
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ │
108
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ Google Cloud CRC32C Hash Tool (Platform Specific)
109
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___
110
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ │
111
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ 1.0.0
112
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___
113
+ 2025-07-01 21:03:32,684 INFO ___FILE_ONLY___ │
114
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ 1.5 MiB
115
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___
116
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ │
117
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___
118
+
119
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ │
120
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ gcloud cli dependencies (Platform Specific)
121
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___
122
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ │
123
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ 2021.04.16
124
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___
125
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ │
126
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ < 1 MiB
127
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___
128
+ 2025-07-01 21:03:32,685 INFO ___FILE_ONLY___ │
129
+ 2025-07-01 21:03:32,686 INFO ___FILE_ONLY___
130
+
131
+ 2025-07-01 21:03:32,686 INFO ___FILE_ONLY___ └─────────────────────────────────────────────────────┴────────────┴──────────┘
132
+ 2025-07-01 21:03:32,686 INFO ___FILE_ONLY___
133
+
134
+ 2025-07-01 21:03:32,686 INFO ___FILE_ONLY___
135
+
136
+ 2025-07-01 21:03:32,690 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
137
+ 2025-07-01 21:03:32,703 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/RELEASE_NOTES HTTP/11" 200 1444035
138
+ 2025-07-01 21:03:33,180 INFO ___FILE_ONLY___ For the latest full release notes, please visit:
139
+ https://cloud.google.com/sdk/release_notes
140
+
141
+
142
+ 2025-07-01 21:03:33,180 INFO ___FILE_ONLY___ Performing in place update...
143
+
144
+
145
+ 2025-07-01 21:03:33,183 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
146
+
147
+ 2025-07-01 21:03:33,183 INFO ___FILE_ONLY___ ╠═ Downloading: BigQuery Command Line Tool ═╣
148
+
149
+ 2025-07-01 21:03:33,183 INFO ___FILE_ONLY___ ╚
150
+ 2025-07-01 21:03:33,187 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
151
+ 2025-07-01 21:03:33,200 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-bq-20250627154417.tar.gz HTTP/11" 200 1850167
152
+ 2025-07-01 21:03:33,213 INFO ___FILE_ONLY___ ═
153
+ 2025-07-01 21:03:33,213 INFO ___FILE_ONLY___ ═
154
+ 2025-07-01 21:03:33,213 INFO ___FILE_ONLY___ ═
155
+ 2025-07-01 21:03:33,214 INFO ___FILE_ONLY___ ═
156
+ 2025-07-01 21:03:33,214 INFO ___FILE_ONLY___ ═
157
+ 2025-07-01 21:03:33,214 INFO ___FILE_ONLY___ ═
158
+ 2025-07-01 21:03:33,214 INFO ___FILE_ONLY___ ═
159
+ 2025-07-01 21:03:33,215 INFO ___FILE_ONLY___ ═
160
+ 2025-07-01 21:03:33,215 INFO ___FILE_ONLY___ ═
161
+ 2025-07-01 21:03:33,215 INFO ___FILE_ONLY___ ═
162
+ 2025-07-01 21:03:33,215 INFO ___FILE_ONLY___ ═
163
+ 2025-07-01 21:03:33,215 INFO ___FILE_ONLY___ ═
164
+ 2025-07-01 21:03:33,215 INFO ___FILE_ONLY___ ═
165
+ 2025-07-01 21:03:33,215 INFO ___FILE_ONLY___ ═
166
+ 2025-07-01 21:03:33,216 INFO ___FILE_ONLY___ ═
167
+ 2025-07-01 21:03:33,216 INFO ___FILE_ONLY___ ═
168
+ 2025-07-01 21:03:33,216 INFO ___FILE_ONLY___ ═
169
+ 2025-07-01 21:03:33,216 INFO ___FILE_ONLY___ ═
170
+ 2025-07-01 21:03:33,216 INFO ___FILE_ONLY___ ═
171
+ 2025-07-01 21:03:33,216 INFO ___FILE_ONLY___ ═
172
+ 2025-07-01 21:03:33,216 INFO ___FILE_ONLY___ ═
173
+ 2025-07-01 21:03:33,217 INFO ___FILE_ONLY___ ═
174
+ 2025-07-01 21:03:33,217 INFO ___FILE_ONLY___ ═
175
+ 2025-07-01 21:03:33,217 INFO ___FILE_ONLY___ ═
176
+ 2025-07-01 21:03:33,217 INFO ___FILE_ONLY___ ═
177
+ 2025-07-01 21:03:33,217 INFO ___FILE_ONLY___ ═
178
+ 2025-07-01 21:03:33,217 INFO ___FILE_ONLY___ ═
179
+ 2025-07-01 21:03:33,217 INFO ___FILE_ONLY___ ═
180
+ 2025-07-01 21:03:33,218 INFO ___FILE_ONLY___ ═
181
+ 2025-07-01 21:03:33,218 INFO ___FILE_ONLY___ ═
182
+ 2025-07-01 21:03:33,218 INFO ___FILE_ONLY___ ═
183
+ 2025-07-01 21:03:33,218 INFO ___FILE_ONLY___ ═
184
+ 2025-07-01 21:03:33,218 INFO ___FILE_ONLY___ ═
185
+ 2025-07-01 21:03:33,218 INFO ___FILE_ONLY___ ═
186
+ 2025-07-01 21:03:33,218 INFO ___FILE_ONLY___ ═
187
+ 2025-07-01 21:03:33,219 INFO ___FILE_ONLY___ ═
188
+ 2025-07-01 21:03:33,219 INFO ___FILE_ONLY___ ═
189
+ 2025-07-01 21:03:33,219 INFO ___FILE_ONLY___ ═
190
+ 2025-07-01 21:03:33,219 INFO ___FILE_ONLY___ ═
191
+ 2025-07-01 21:03:33,219 INFO ___FILE_ONLY___ ═
192
+ 2025-07-01 21:03:33,219 INFO ___FILE_ONLY___ ═
193
+ 2025-07-01 21:03:33,220 INFO ___FILE_ONLY___ ═
194
+ 2025-07-01 21:03:33,220 INFO ___FILE_ONLY___ ═
195
+ 2025-07-01 21:03:33,220 INFO ___FILE_ONLY___ ═
196
+ 2025-07-01 21:03:33,220 INFO ___FILE_ONLY___ ═
197
+ 2025-07-01 21:03:33,220 INFO ___FILE_ONLY___ ═
198
+ 2025-07-01 21:03:33,220 INFO ___FILE_ONLY___ ═
199
+ 2025-07-01 21:03:33,220 INFO ___FILE_ONLY___ ═
200
+ 2025-07-01 21:03:33,221 INFO ___FILE_ONLY___ ═
201
+ 2025-07-01 21:03:33,221 INFO ___FILE_ONLY___ ═
202
+ 2025-07-01 21:03:33,221 INFO ___FILE_ONLY___ ═
203
+ 2025-07-01 21:03:33,221 INFO ___FILE_ONLY___ ═
204
+ 2025-07-01 21:03:33,221 INFO ___FILE_ONLY___ ═
205
+ 2025-07-01 21:03:33,221 INFO ___FILE_ONLY___ ═
206
+ 2025-07-01 21:03:33,222 INFO ___FILE_ONLY___ ═
207
+ 2025-07-01 21:03:33,222 INFO ___FILE_ONLY___ ═
208
+ 2025-07-01 21:03:33,222 INFO ___FILE_ONLY___ ═
209
+ 2025-07-01 21:03:33,222 INFO ___FILE_ONLY___ ═
210
+ 2025-07-01 21:03:33,222 INFO ___FILE_ONLY___ ═
211
+ 2025-07-01 21:03:33,222 INFO ___FILE_ONLY___ ═
212
+ 2025-07-01 21:03:33,223 INFO ___FILE_ONLY___ ╝
213
+
214
+ 2025-07-01 21:03:33,225 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
215
+
216
+ 2025-07-01 21:03:33,225 INFO ___FILE_ONLY___ ╠═ Downloading: BigQuery Command Line Tool (Platform Spe... ═╣
217
+
218
+ 2025-07-01 21:03:33,225 INFO ___FILE_ONLY___ ╚
219
+ 2025-07-01 21:03:33,230 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
220
+ 2025-07-01 21:03:33,240 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-bq-nix-20250523104322.tar.gz HTTP/11" 200 1935
221
+ 2025-07-01 21:03:33,241 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
222
+ 2025-07-01 21:03:33,241 INFO ___FILE_ONLY___ ╝
223
+
224
+ 2025-07-01 21:03:33,244 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
225
+
226
+ 2025-07-01 21:03:33,244 INFO ___FILE_ONLY___ ╠═ Downloading: Bundled Python 3.12 ═╣
227
+
228
+ 2025-07-01 21:03:33,244 INFO ___FILE_ONLY___ ╚
229
+ 2025-07-01 21:03:33,244 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
230
+ 2025-07-01 21:03:33,244 INFO ___FILE_ONLY___ ╝
231
+
232
+ 2025-07-01 21:03:33,246 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════���═══════════════╗
233
+
234
+ 2025-07-01 21:03:33,246 INFO ___FILE_ONLY___ ╠═ Downloading: Bundled Python 3.12 (Platform Specific) ═╣
235
+
236
+ 2025-07-01 21:03:33,247 INFO ___FILE_ONLY___ ╚
237
+ 2025-07-01 21:03:33,250 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
238
+ 2025-07-01 21:03:33,266 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-bundled-python3-unix-linux-x86_64-20250502143716.tar.gz HTTP/11" 200 93610468
239
+ 2025-07-01 21:03:33,637 INFO ___FILE_ONLY___ ═
240
+ 2025-07-01 21:03:33,639 INFO ___FILE_ONLY___ ═
241
+ 2025-07-01 21:03:33,642 INFO ___FILE_ONLY___ ═
242
+ 2025-07-01 21:03:33,644 INFO ___FILE_ONLY___ ═
243
+ 2025-07-01 21:03:33,646 INFO ___FILE_ONLY___ ═
244
+ 2025-07-01 21:03:33,648 INFO ___FILE_ONLY___ ═
245
+ 2025-07-01 21:03:33,651 INFO ___FILE_ONLY___ ═
246
+ 2025-07-01 21:03:33,653 INFO ___FILE_ONLY___ ═
247
+ 2025-07-01 21:03:33,655 INFO ___FILE_ONLY___ ═
248
+ 2025-07-01 21:03:33,657 INFO ___FILE_ONLY___ ═
249
+ 2025-07-01 21:03:33,659 INFO ___FILE_ONLY___ ═
250
+ 2025-07-01 21:03:33,662 INFO ___FILE_ONLY___ ═
251
+ 2025-07-01 21:03:33,664 INFO ___FILE_ONLY___ ═
252
+ 2025-07-01 21:03:33,666 INFO ___FILE_ONLY___ ═
253
+ 2025-07-01 21:03:33,668 INFO ___FILE_ONLY___ ═
254
+ 2025-07-01 21:03:33,670 INFO ___FILE_ONLY___ ═
255
+ 2025-07-01 21:03:33,673 INFO ___FILE_ONLY___ ═
256
+ 2025-07-01 21:03:33,675 INFO ___FILE_ONLY___ ═
257
+ 2025-07-01 21:03:33,677 INFO ___FILE_ONLY___ ═
258
+ 2025-07-01 21:03:33,679 INFO ___FILE_ONLY___ ═
259
+ 2025-07-01 21:03:33,681 INFO ___FILE_ONLY___ ═
260
+ 2025-07-01 21:03:33,683 INFO ___FILE_ONLY___ ═
261
+ 2025-07-01 21:03:33,686 INFO ___FILE_ONLY___ ═
262
+ 2025-07-01 21:03:33,688 INFO ___FILE_ONLY___ ═
263
+ 2025-07-01 21:03:33,690 INFO ___FILE_ONLY___ ═
264
+ 2025-07-01 21:03:33,692 INFO ___FILE_ONLY___ ═
265
+ 2025-07-01 21:03:33,694 INFO ___FILE_ONLY___ ═
266
+ 2025-07-01 21:03:33,696 INFO ___FILE_ONLY___ ═
267
+ 2025-07-01 21:03:33,699 INFO ___FILE_ONLY___ ═
268
+ 2025-07-01 21:03:33,701 INFO ___FILE_ONLY___ ═
269
+ 2025-07-01 21:03:33,703 INFO ___FILE_ONLY___ ═
270
+ 2025-07-01 21:03:33,705 INFO ___FILE_ONLY___ ═
271
+ 2025-07-01 21:03:33,708 INFO ___FILE_ONLY___ ═
272
+ 2025-07-01 21:03:33,710 INFO ___FILE_ONLY___ ═
273
+ 2025-07-01 21:03:33,712 INFO ___FILE_ONLY___ ═
274
+ 2025-07-01 21:03:33,714 INFO ___FILE_ONLY___ ═
275
+ 2025-07-01 21:03:33,717 INFO ___FILE_ONLY___ ═
276
+ 2025-07-01 21:03:33,719 INFO ___FILE_ONLY___ ═
277
+ 2025-07-01 21:03:33,721 INFO ___FILE_ONLY___ ═
278
+ 2025-07-01 21:03:33,723 INFO ___FILE_ONLY___ ═
279
+ 2025-07-01 21:03:33,725 INFO ___FILE_ONLY___ ═
280
+ 2025-07-01 21:03:33,728 INFO ___FILE_ONLY___ ═
281
+ 2025-07-01 21:03:33,730 INFO ___FILE_ONLY___ ═
282
+ 2025-07-01 21:03:33,732 INFO ___FILE_ONLY___ ═
283
+ 2025-07-01 21:03:33,734 INFO ___FILE_ONLY___ ═
284
+ 2025-07-01 21:03:33,737 INFO ___FILE_ONLY___ ═
285
+ 2025-07-01 21:03:33,739 INFO ___FILE_ONLY___ ═
286
+ 2025-07-01 21:03:33,741 INFO ___FILE_ONLY___ ═
287
+ 2025-07-01 21:03:33,743 INFO ___FILE_ONLY___ ═
288
+ 2025-07-01 21:03:33,746 INFO ___FILE_ONLY___ ═
289
+ 2025-07-01 21:03:33,748 INFO ___FILE_ONLY___ ═
290
+ 2025-07-01 21:03:33,750 INFO ___FILE_ONLY___ ═
291
+ 2025-07-01 21:03:33,752 INFO ___FILE_ONLY___ ═
292
+ 2025-07-01 21:03:33,754 INFO ___FILE_ONLY___ ═
293
+ 2025-07-01 21:03:33,756 INFO ___FILE_ONLY___ ═
294
+ 2025-07-01 21:03:33,759 INFO ___FILE_ONLY___ ═
295
+ 2025-07-01 21:03:33,761 INFO ___FILE_ONLY___ ═
296
+ 2025-07-01 21:03:33,763 INFO ___FILE_ONLY___ ═
297
+ 2025-07-01 21:03:33,765 INFO ___FILE_ONLY___ ═
298
+ 2025-07-01 21:03:33,767 INFO ___FILE_ONLY___ ═
299
+ 2025-07-01 21:03:33,767 INFO ___FILE_ONLY___ ╝
300
+
301
+ 2025-07-01 21:03:33,773 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
302
+
303
+ 2025-07-01 21:03:33,773 INFO ___FILE_ONLY___ ╠═ Downloading: Cloud Storage Command Line Tool ═╣
304
+
305
+ 2025-07-01 21:03:33,773 INFO ___FILE_ONLY___ ╚
306
+ 2025-07-01 21:03:33,776 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
307
+ 2025-07-01 21:03:33,790 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-gsutil-20250627154417.tar.gz HTTP/11" 200 12962791
308
+ 2025-07-01 21:03:33,839 INFO ___FILE_ONLY___ ═
309
+ 2025-07-01 21:03:33,839 INFO ___FILE_ONLY___ ═
310
+ 2025-07-01 21:03:33,840 INFO ___FILE_ONLY___ ═
311
+ 2025-07-01 21:03:33,840 INFO ___FILE_ONLY___ ═
312
+ 2025-07-01 21:03:33,841 INFO ___FILE_ONLY___ ═
313
+ 2025-07-01 21:03:33,841 INFO ___FILE_ONLY___ ═
314
+ 2025-07-01 21:03:33,841 INFO ___FILE_ONLY___ ═
315
+ 2025-07-01 21:03:33,842 INFO ___FILE_ONLY___ ═
316
+ 2025-07-01 21:03:33,842 INFO ___FILE_ONLY___ ═
317
+ 2025-07-01 21:03:33,843 INFO ___FILE_ONLY___ ═
318
+ 2025-07-01 21:03:33,843 INFO ___FILE_ONLY___ ═
319
+ 2025-07-01 21:03:33,843 INFO ___FILE_ONLY___ ═
320
+ 2025-07-01 21:03:33,844 INFO ___FILE_ONLY___ ═
321
+ 2025-07-01 21:03:33,844 INFO ___FILE_ONLY___ ═
322
+ 2025-07-01 21:03:33,845 INFO ___FILE_ONLY___ ═
323
+ 2025-07-01 21:03:33,845 INFO ___FILE_ONLY___ ═
324
+ 2025-07-01 21:03:33,845 INFO ___FILE_ONLY___ ═
325
+ 2025-07-01 21:03:33,846 INFO ___FILE_ONLY___ ═
326
+ 2025-07-01 21:03:33,846 INFO ___FILE_ONLY___ ═
327
+ 2025-07-01 21:03:33,847 INFO ___FILE_ONLY___ ═
328
+ 2025-07-01 21:03:33,847 INFO ___FILE_ONLY___ ═
329
+ 2025-07-01 21:03:33,847 INFO ___FILE_ONLY___ ═
330
+ 2025-07-01 21:03:33,848 INFO ___FILE_ONLY___ ═
331
+ 2025-07-01 21:03:33,848 INFO ___FILE_ONLY___ ═
332
+ 2025-07-01 21:03:33,849 INFO ___FILE_ONLY___ ═
333
+ 2025-07-01 21:03:33,849 INFO ___FILE_ONLY___ ═
334
+ 2025-07-01 21:03:33,849 INFO ___FILE_ONLY___ ═
335
+ 2025-07-01 21:03:33,850 INFO ___FILE_ONLY___ ═
336
+ 2025-07-01 21:03:33,850 INFO ___FILE_ONLY___ ═
337
+ 2025-07-01 21:03:33,851 INFO ___FILE_ONLY___ ═
338
+ 2025-07-01 21:03:33,851 INFO ___FILE_ONLY___ ═
339
+ 2025-07-01 21:03:33,851 INFO ___FILE_ONLY___ ═
340
+ 2025-07-01 21:03:33,852 INFO ___FILE_ONLY___ ═
341
+ 2025-07-01 21:03:33,852 INFO ___FILE_ONLY___ ═
342
+ 2025-07-01 21:03:33,853 INFO ___FILE_ONLY___ ═
343
+ 2025-07-01 21:03:33,853 INFO ___FILE_ONLY___ ═
344
+ 2025-07-01 21:03:33,853 INFO ___FILE_ONLY___ ═
345
+ 2025-07-01 21:03:33,854 INFO ___FILE_ONLY___ ═
346
+ 2025-07-01 21:03:33,854 INFO ___FILE_ONLY___ ═
347
+ 2025-07-01 21:03:33,855 INFO ___FILE_ONLY___ ═
348
+ 2025-07-01 21:03:33,855 INFO ___FILE_ONLY___ ═
349
+ 2025-07-01 21:03:33,855 INFO ___FILE_ONLY___ ═
350
+ 2025-07-01 21:03:33,856 INFO ___FILE_ONLY___ ═
351
+ 2025-07-01 21:03:33,856 INFO ___FILE_ONLY___ ═
352
+ 2025-07-01 21:03:33,857 INFO ___FILE_ONLY___ ═
353
+ 2025-07-01 21:03:33,857 INFO ___FILE_ONLY___ ═
354
+ 2025-07-01 21:03:33,857 INFO ___FILE_ONLY___ ═
355
+ 2025-07-01 21:03:33,858 INFO ___FILE_ONLY___ ═
356
+ 2025-07-01 21:03:33,858 INFO ___FILE_ONLY___ ═
357
+ 2025-07-01 21:03:33,859 INFO ___FILE_ONLY___ ═
358
+ 2025-07-01 21:03:33,859 INFO ___FILE_ONLY___ ═
359
+ 2025-07-01 21:03:33,860 INFO ___FILE_ONLY___ ═
360
+ 2025-07-01 21:03:33,860 INFO ___FILE_ONLY___ ═
361
+ 2025-07-01 21:03:33,860 INFO ___FILE_ONLY___ ═
362
+ 2025-07-01 21:03:33,861 INFO ___FILE_ONLY___ ═
363
+ 2025-07-01 21:03:33,861 INFO ___FILE_ONLY___ ═
364
+ 2025-07-01 21:03:33,862 INFO ___FILE_ONLY___ ═
365
+ 2025-07-01 21:03:33,862 INFO ___FILE_ONLY___ ═
366
+ 2025-07-01 21:03:33,862 INFO ___FILE_ONLY___ ═
367
+ 2025-07-01 21:03:33,863 INFO ___FILE_ONLY___ ═
368
+ 2025-07-01 21:03:33,863 INFO ___FILE_ONLY___ ╝
369
+
370
+ 2025-07-01 21:03:33,865 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
371
+
372
+ 2025-07-01 21:03:33,865 INFO ___FILE_ONLY___ ╠═ Downloading: Cloud Storage Command Line Tool (Platfor... ═╣
373
+
374
+ 2025-07-01 21:03:33,865 INFO ___FILE_ONLY___ ╚
375
+ 2025-07-01 21:03:33,869 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
376
+ 2025-07-01 21:03:33,883 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-gsutil-nix-20250523104322.tar.gz HTTP/11" 200 1950
377
+ 2025-07-01 21:03:33,884 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
378
+ 2025-07-01 21:03:33,884 INFO ___FILE_ONLY___ ╝
379
+
380
+ 2025-07-01 21:03:33,886 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
381
+
382
+ 2025-07-01 21:03:33,887 INFO ___FILE_ONLY___ ╠═ Downloading: Default set of gcloud commands ═╣
383
+
384
+ 2025-07-01 21:03:33,887 INFO ___FILE_ONLY___ ╚
385
+ 2025-07-01 21:03:33,887 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
386
+ 2025-07-01 21:03:33,887 INFO ___FILE_ONLY___ ╝
387
+
388
+ 2025-07-01 21:03:33,889 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
389
+
390
+ 2025-07-01 21:03:33,889 INFO ___FILE_ONLY___ ╠═ Downloading: Google Cloud CLI Core Libraries (Platfor... ═╣
391
+
392
+ 2025-07-01 21:03:33,889 INFO ___FILE_ONLY___ ╚
393
+ 2025-07-01 21:03:33,892 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
394
+ 2025-07-01 21:03:33,906 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-core-nix-20250523104322.tar.gz HTTP/11" 200 2325
395
+ 2025-07-01 21:03:33,906 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
396
+ 2025-07-01 21:03:33,907 INFO ___FILE_ONLY___ ╝
397
+
398
+ 2025-07-01 21:03:33,909 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
399
+
400
+ 2025-07-01 21:03:33,909 INFO ___FILE_ONLY___ ╠═ Downloading: Google Cloud CRC32C Hash Tool ═╣
401
+
402
+ 2025-07-01 21:03:33,909 INFO ___FILE_ONLY___ ╚
403
+ 2025-07-01 21:03:33,909 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
404
+ 2025-07-01 21:03:33,909 INFO ___FILE_ONLY___ ╝
405
+
406
+ 2025-07-01 21:03:33,911 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
407
+
408
+ 2025-07-01 21:03:33,911 INFO ___FILE_ONLY___ ╠═ Downloading: Google Cloud CRC32C Hash Tool (Platform ... ═╣
409
+
410
+ 2025-07-01 21:03:33,911 INFO ___FILE_ONLY___ ╚
411
+ 2025-07-01 21:03:33,914 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
412
+ 2025-07-01 21:03:33,968 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-gcloud-crc32c-linux-x86_64-20250613150750.tar.gz HTTP/11" 200 1525557
413
+ 2025-07-01 21:03:33,982 INFO ___FILE_ONLY___ ═
414
+ 2025-07-01 21:03:33,982 INFO ___FILE_ONLY___ ═
415
+ 2025-07-01 21:03:33,982 INFO ___FILE_ONLY___ ═
416
+ 2025-07-01 21:03:33,982 INFO ___FILE_ONLY___ ═
417
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
418
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
419
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
420
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
421
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
422
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
423
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
424
+ 2025-07-01 21:03:33,983 INFO ___FILE_ONLY___ ═
425
+ 2025-07-01 21:03:33,984 INFO ___FILE_ONLY___ ═
426
+ 2025-07-01 21:03:33,984 INFO ___FILE_ONLY___ ═
427
+ 2025-07-01 21:03:33,984 INFO ___FILE_ONLY___ ═
428
+ 2025-07-01 21:03:33,984 INFO ___FILE_ONLY___ ═
429
+ 2025-07-01 21:03:33,984 INFO ___FILE_ONLY___ ═
430
+ 2025-07-01 21:03:33,984 INFO ___FILE_ONLY___ ═
431
+ 2025-07-01 21:03:33,984 INFO ___FILE_ONLY___ ═
432
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
433
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
434
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
435
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
436
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
437
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
438
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
439
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
440
+ 2025-07-01 21:03:33,985 INFO ___FILE_ONLY___ ═
441
+ 2025-07-01 21:03:33,986 INFO ___FILE_ONLY___ ═
442
+ 2025-07-01 21:03:33,986 INFO ___FILE_ONLY___ ═
443
+ 2025-07-01 21:03:33,986 INFO ___FILE_ONLY___ ═
444
+ 2025-07-01 21:03:33,986 INFO ___FILE_ONLY___ ═
445
+ 2025-07-01 21:03:33,986 INFO ___FILE_ONLY___ ═
446
+ 2025-07-01 21:03:33,986 INFO ___FILE_ONLY___ ═
447
+ 2025-07-01 21:03:33,986 INFO ___FILE_ONLY___ ═
448
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
449
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
450
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
451
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
452
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
453
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
454
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
455
+ 2025-07-01 21:03:33,987 INFO ___FILE_ONLY___ ═
456
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
457
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
458
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
459
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
460
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
461
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
462
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
463
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
464
+ 2025-07-01 21:03:33,988 INFO ___FILE_ONLY___ ═
465
+ 2025-07-01 21:03:33,989 INFO ___FILE_ONLY___ ═
466
+ 2025-07-01 21:03:33,989 INFO ___FILE_ONLY___ ═
467
+ 2025-07-01 21:03:33,989 INFO ___FILE_ONLY___ ═
468
+ 2025-07-01 21:03:33,989 INFO ___FILE_ONLY___ ═
469
+ 2025-07-01 21:03:33,989 INFO ___FILE_ONLY___ ═
470
+ 2025-07-01 21:03:33,989 INFO ___FILE_ONLY___ ═
471
+ 2025-07-01 21:03:33,990 INFO ___FILE_ONLY___ ═
472
+ 2025-07-01 21:03:33,990 INFO ___FILE_ONLY___ ═
473
+ 2025-07-01 21:03:33,990 INFO ___FILE_ONLY___ ╝
474
+
475
+ 2025-07-01 21:03:33,992 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
476
+
477
+ 2025-07-01 21:03:33,993 INFO ___FILE_ONLY___ ╠═ Downloading: gcloud cli dependencies (Platform Specific) ═╣
478
+
479
+ 2025-07-01 21:03:33,993 INFO ___FILE_ONLY___ ╚
480
+ 2025-07-01 21:03:33,996 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
481
+ 2025-07-01 21:03:34,012 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-gcloud-deps-linux-x86_64-20210416153011.tar.gz HTTP/11" 200 104
482
+ 2025-07-01 21:03:34,013 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
483
+ 2025-07-01 21:03:34,013 INFO ___FILE_ONLY___ ╝
484
+
485
+ 2025-07-01 21:03:34,015 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
486
+
487
+ 2025-07-01 21:03:34,015 INFO ___FILE_ONLY___ ╠═ Installing: BigQuery Command Line Tool ═╣
488
+
489
+ 2025-07-01 21:03:34,015 INFO ___FILE_ONLY___ ╚
490
+ 2025-07-01 21:03:34,109 INFO ___FILE_ONLY___ ═
491
+ 2025-07-01 21:03:34,112 INFO ___FILE_ONLY___ ═
492
+ 2025-07-01 21:03:34,115 INFO ___FILE_ONLY___ ═
493
+ 2025-07-01 21:03:34,117 INFO ___FILE_ONLY___ ═
494
+ 2025-07-01 21:03:34,121 INFO ___FILE_ONLY___ ═
495
+ 2025-07-01 21:03:34,123 INFO ___FILE_ONLY___ ═
496
+ 2025-07-01 21:03:34,126 INFO ___FILE_ONLY___ ═
497
+ 2025-07-01 21:03:34,128 INFO ___FILE_ONLY___ ═
498
+ 2025-07-01 21:03:34,131 INFO ___FILE_ONLY___ ═
499
+ 2025-07-01 21:03:34,133 INFO ___FILE_ONLY___ ═
500
+ 2025-07-01 21:03:34,135 INFO ___FILE_ONLY___ ═
501
+ 2025-07-01 21:03:34,138 INFO ___FILE_ONLY___ ═
502
+ 2025-07-01 21:03:34,140 INFO ___FILE_ONLY___ ═
503
+ 2025-07-01 21:03:34,143 INFO ___FILE_ONLY___ ═
504
+ 2025-07-01 21:03:34,144 INFO ___FILE_ONLY___ ═
505
+ 2025-07-01 21:03:34,147 INFO ___FILE_ONLY___ ═
506
+ 2025-07-01 21:03:34,149 INFO ___FILE_ONLY___ ═
507
+ 2025-07-01 21:03:34,151 INFO ___FILE_ONLY___ ═
508
+ 2025-07-01 21:03:34,153 INFO ___FILE_ONLY___ ═
509
+ 2025-07-01 21:03:34,157 INFO ___FILE_ONLY___ ═
510
+ 2025-07-01 21:03:34,159 INFO ___FILE_ONLY___ ═
511
+ 2025-07-01 21:03:34,161 INFO ___FILE_ONLY___ ═
512
+ 2025-07-01 21:03:34,164 INFO ___FILE_ONLY___ ═
513
+ 2025-07-01 21:03:34,166 INFO ___FILE_ONLY___ ═
514
+ 2025-07-01 21:03:34,168 INFO ___FILE_ONLY___ ═
515
+ 2025-07-01 21:03:34,170 INFO ___FILE_ONLY___ ═
516
+ 2025-07-01 21:03:34,173 INFO ___FILE_ONLY___ ═
517
+ 2025-07-01 21:03:34,176 INFO ___FILE_ONLY___ ═
518
+ 2025-07-01 21:03:34,179 INFO ___FILE_ONLY___ ═
519
+ 2025-07-01 21:03:34,183 INFO ___FILE_ONLY___ ═
520
+ 2025-07-01 21:03:34,185 INFO ___FILE_ONLY___ ═
521
+ 2025-07-01 21:03:34,187 INFO ___FILE_ONLY___ ═
522
+ 2025-07-01 21:03:34,189 INFO ___FILE_ONLY___ ═
523
+ 2025-07-01 21:03:34,193 INFO ___FILE_ONLY___ ═
524
+ 2025-07-01 21:03:34,195 INFO ___FILE_ONLY___ ═
525
+ 2025-07-01 21:03:34,202 INFO ___FILE_ONLY___ ═
526
+ 2025-07-01 21:03:34,208 INFO ___FILE_ONLY___ ═
527
+ 2025-07-01 21:03:34,212 INFO ___FILE_ONLY___ ═
528
+ 2025-07-01 21:03:34,215 INFO ___FILE_ONLY___ ═
529
+ 2025-07-01 21:03:34,217 INFO ___FILE_ONLY___ ═
530
+ 2025-07-01 21:03:34,220 INFO ___FILE_ONLY___ ═
531
+ 2025-07-01 21:03:34,222 INFO ___FILE_ONLY___ ═
532
+ 2025-07-01 21:03:34,225 INFO ___FILE_ONLY___ ═
533
+ 2025-07-01 21:03:34,229 INFO ___FILE_ONLY___ ═
534
+ 2025-07-01 21:03:34,231 INFO ___FILE_ONLY___ ═
535
+ 2025-07-01 21:03:34,234 INFO ___FILE_ONLY___ ═
536
+ 2025-07-01 21:03:34,236 INFO ___FILE_ONLY___ ═
537
+ 2025-07-01 21:03:34,238 INFO ___FILE_ONLY___ ═
538
+ 2025-07-01 21:03:34,240 INFO ___FILE_ONLY___ ═
539
+ 2025-07-01 21:03:34,242 INFO ___FILE_ONLY___ ═
540
+ 2025-07-01 21:03:34,245 INFO ___FILE_ONLY___ ═
541
+ 2025-07-01 21:03:34,247 INFO ___FILE_ONLY___ ═
542
+ 2025-07-01 21:03:34,250 INFO ___FILE_ONLY___ ═
543
+ 2025-07-01 21:03:34,252 INFO ___FILE_ONLY___ ═
544
+ 2025-07-01 21:03:34,254 INFO ___FILE_ONLY___ ═
545
+ 2025-07-01 21:03:34,256 INFO ___FILE_ONLY___ ═
546
+ 2025-07-01 21:03:34,259 INFO ___FILE_ONLY___ ═
547
+ 2025-07-01 21:03:34,261 INFO ___FILE_ONLY___ ═
548
+ 2025-07-01 21:03:34,263 INFO ___FILE_ONLY___ ═
549
+ 2025-07-01 21:03:34,265 INFO ___FILE_ONLY___ ═
550
+ 2025-07-01 21:03:34,265 INFO ___FILE_ONLY___ ╝
551
+
552
+ 2025-07-01 21:03:34,277 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
553
+
554
+ 2025-07-01 21:03:34,277 INFO ___FILE_ONLY___ ╠═ Installing: BigQuery Command Line Tool (Platform Spec... ═╣
555
+
556
+ 2025-07-01 21:03:34,277 INFO ___FILE_ONLY___ ╚
557
+ 2025-07-01 21:03:34,278 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
558
+ 2025-07-01 21:03:34,278 INFO ___FILE_ONLY___ ╝
559
+
560
+ 2025-07-01 21:03:34,286 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
561
+
562
+ 2025-07-01 21:03:34,286 INFO ___FILE_ONLY___ ╠═ Installing: Bundled Python 3.12 ═╣
563
+
564
+ 2025-07-01 21:03:34,286 INFO ___FILE_ONLY___ ╚
565
+ 2025-07-01 21:03:34,289 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
566
+ 2025-07-01 21:03:34,289 INFO ___FILE_ONLY___ ╝
567
+
568
+ 2025-07-01 21:03:34,291 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
569
+
570
+ 2025-07-01 21:03:34,291 INFO ___FILE_ONLY___ ╠═ Installing: Bundled Python 3.12 (Platform Specific) ═╣
571
+
572
+ 2025-07-01 21:03:34,291 INFO ___FILE_ONLY___ ╚
573
+ 2025-07-01 21:03:36,564 INFO ___FILE_ONLY___ ═
574
+ 2025-07-01 21:03:36,577 INFO ___FILE_ONLY___ ═
575
+ 2025-07-01 21:03:36,590 INFO ___FILE_ONLY___ ═
576
+ 2025-07-01 21:03:36,603 INFO ___FILE_ONLY___ ═
577
+ 2025-07-01 21:03:36,616 INFO ___FILE_ONLY___ ═
578
+ 2025-07-01 21:03:36,631 INFO ___FILE_ONLY___ ═
579
+ 2025-07-01 21:03:36,645 INFO ___FILE_ONLY___ ═
580
+ 2025-07-01 21:03:36,658 INFO ___FILE_ONLY___ ═
581
+ 2025-07-01 21:03:36,672 INFO ___FILE_ONLY___ ═
582
+ 2025-07-01 21:03:36,689 INFO ___FILE_ONLY___ ═
583
+ 2025-07-01 21:03:36,703 INFO ___FILE_ONLY___ ═
584
+ 2025-07-01 21:03:36,718 INFO ___FILE_ONLY___ ═
585
+ 2025-07-01 21:03:36,731 INFO ___FILE_ONLY___ ═
586
+ 2025-07-01 21:03:36,744 INFO ___FILE_ONLY___ ═
587
+ 2025-07-01 21:03:36,759 INFO ___FILE_ONLY___ ═
588
+ 2025-07-01 21:03:36,772 INFO ___FILE_ONLY___ ═
589
+ 2025-07-01 21:03:36,785 INFO ___FILE_ONLY___ ═
590
+ 2025-07-01 21:03:36,798 INFO ___FILE_ONLY___ ═
591
+ 2025-07-01 21:03:36,812 INFO ___FILE_ONLY___ ═
592
+ 2025-07-01 21:03:36,825 INFO ___FILE_ONLY___ ═
593
+ 2025-07-01 21:03:36,840 INFO ___FILE_ONLY___ ═
594
+ 2025-07-01 21:03:36,853 INFO ___FILE_ONLY___ ═
595
+ 2025-07-01 21:03:36,866 INFO ___FILE_ONLY___ ═
596
+ 2025-07-01 21:03:36,880 INFO ___FILE_ONLY___ ═
597
+ 2025-07-01 21:03:36,893 INFO ___FILE_ONLY___ ═
598
+ 2025-07-01 21:03:36,906 INFO ___FILE_ONLY___ ═
599
+ 2025-07-01 21:03:36,919 INFO ___FILE_ONLY___ ═
600
+ 2025-07-01 21:03:36,932 INFO ___FILE_ONLY___ ═
601
+ 2025-07-01 21:03:36,945 INFO ___FILE_ONLY___ ═
602
+ 2025-07-01 21:03:36,959 INFO ___FILE_ONLY___ ═
603
+ 2025-07-01 21:03:36,972 INFO ___FILE_ONLY___ ═
604
+ 2025-07-01 21:03:36,985 INFO ___FILE_ONLY___ ═
605
+ 2025-07-01 21:03:36,998 INFO ___FILE_ONLY___ ═
606
+ 2025-07-01 21:03:37,012 INFO ___FILE_ONLY___ ═
607
+ 2025-07-01 21:03:37,030 INFO ___FILE_ONLY___ ═
608
+ 2025-07-01 21:03:37,046 INFO ___FILE_ONLY___ ═
609
+ 2025-07-01 21:03:38,014 INFO ___FILE_ONLY___ ═
610
+ 2025-07-01 21:03:38,040 INFO ___FILE_ONLY___ ═
611
+ 2025-07-01 21:03:38,564 INFO ___FILE_ONLY___ ═
612
+ 2025-07-01 21:03:38,584 INFO ___FILE_ONLY___ ═
613
+ 2025-07-01 21:03:38,606 INFO ___FILE_ONLY___ ═
614
+ 2025-07-01 21:03:38,633 INFO ___FILE_ONLY___ ═
615
+ 2025-07-01 21:03:38,653 INFO ___FILE_ONLY___ ═
616
+ 2025-07-01 21:03:38,682 INFO ___FILE_ONLY___ ═
617
+ 2025-07-01 21:03:38,704 INFO ___FILE_ONLY___ ═
618
+ 2025-07-01 21:03:38,726 INFO ___FILE_ONLY___ ═
619
+ 2025-07-01 21:03:38,746 INFO ___FILE_ONLY___ ═
620
+ 2025-07-01 21:03:38,766 INFO ___FILE_ONLY___ ═
621
+ 2025-07-01 21:03:38,861 INFO ___FILE_ONLY___ ═
622
+ 2025-07-01 21:03:38,880 INFO ___FILE_ONLY___ ═
623
+ 2025-07-01 21:03:39,028 INFO ___FILE_ONLY___ ═
624
+ 2025-07-01 21:03:39,046 INFO ___FILE_ONLY___ ═
625
+ 2025-07-01 21:03:39,063 INFO ___FILE_ONLY___ ═
626
+ 2025-07-01 21:03:39,081 INFO ___FILE_ONLY___ ═
627
+ 2025-07-01 21:03:39,097 INFO ___FILE_ONLY___ ═
628
+ 2025-07-01 21:03:39,116 INFO ___FILE_ONLY___ ═
629
+ 2025-07-01 21:03:39,134 INFO ___FILE_ONLY___ ═
630
+ 2025-07-01 21:03:39,153 INFO ___FILE_ONLY___ ═
631
+ 2025-07-01 21:03:39,183 INFO ___FILE_ONLY___ ═
632
+ 2025-07-01 21:03:39,742 INFO ___FILE_ONLY___ ═
633
+ 2025-07-01 21:03:39,743 INFO ___FILE_ONLY___ ╝
634
+
635
+ 2025-07-01 21:03:39,801 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
636
+
637
+ 2025-07-01 21:03:39,801 INFO ___FILE_ONLY___ ╠═ Installing: Cloud Storage Command Line Tool ═╣
638
+
639
+ 2025-07-01 21:03:39,801 INFO ___FILE_ONLY___ ╚
640
+ 2025-07-01 21:03:40,363 INFO ___FILE_ONLY___ ═
641
+ 2025-07-01 21:03:40,376 INFO ___FILE_ONLY___ ═
642
+ 2025-07-01 21:03:40,387 INFO ___FILE_ONLY___ ═
643
+ 2025-07-01 21:03:40,398 INFO ___FILE_ONLY___ ═
644
+ 2025-07-01 21:03:40,408 INFO ___FILE_ONLY___ ═
645
+ 2025-07-01 21:03:40,446 INFO ___FILE_ONLY___ ═
646
+ 2025-07-01 21:03:40,465 INFO ___FILE_ONLY___ ═
647
+ 2025-07-01 21:03:40,487 INFO ___FILE_ONLY___ ═
648
+ 2025-07-01 21:03:40,503 INFO ___FILE_ONLY___ ═
649
+ 2025-07-01 21:03:40,520 INFO ___FILE_ONLY___ ═
650
+ 2025-07-01 21:03:40,538 INFO ___FILE_ONLY___ ═
651
+ 2025-07-01 21:03:40,550 INFO ___FILE_ONLY___ ═
652
+ 2025-07-01 21:03:40,563 INFO ___FILE_ONLY___ ═
653
+ 2025-07-01 21:03:40,575 INFO ___FILE_ONLY___ ═
654
+ 2025-07-01 21:03:40,586 INFO ___FILE_ONLY___ ═
655
+ 2025-07-01 21:03:40,606 INFO ___FILE_ONLY___ ═
656
+ 2025-07-01 21:03:40,621 INFO ___FILE_ONLY___ ═
657
+ 2025-07-01 21:03:40,633 INFO ___FILE_ONLY___ ═
658
+ 2025-07-01 21:03:40,646 INFO ___FILE_ONLY___ ═
659
+ 2025-07-01 21:03:40,658 INFO ___FILE_ONLY___ ═
660
+ 2025-07-01 21:03:40,669 INFO ___FILE_ONLY___ ═
661
+ 2025-07-01 21:03:40,683 INFO ___FILE_ONLY___ ═
662
+ 2025-07-01 21:03:40,694 INFO ___FILE_ONLY___ ═
663
+ 2025-07-01 21:03:40,707 INFO ___FILE_ONLY___ ═
664
+ 2025-07-01 21:03:40,719 INFO ___FILE_ONLY___ ═
665
+ 2025-07-01 21:03:40,730 INFO ___FILE_ONLY___ ═
666
+ 2025-07-01 21:03:40,742 INFO ___FILE_ONLY___ ═
667
+ 2025-07-01 21:03:40,758 INFO ___FILE_ONLY___ ═
668
+ 2025-07-01 21:03:40,776 INFO ___FILE_ONLY___ ═
669
+ 2025-07-01 21:03:40,791 INFO ___FILE_ONLY___ ═
670
+ 2025-07-01 21:03:40,805 INFO ___FILE_ONLY___ ═
671
+ 2025-07-01 21:03:40,829 INFO ___FILE_ONLY___ ═
672
+ 2025-07-01 21:03:40,846 INFO ___FILE_ONLY___ ═
673
+ 2025-07-01 21:03:40,869 INFO ___FILE_ONLY___ ═
674
+ 2025-07-01 21:03:40,885 INFO ___FILE_ONLY___ ═
675
+ 2025-07-01 21:03:40,904 INFO ___FILE_ONLY___ ═
676
+ 2025-07-01 21:03:40,915 INFO ___FILE_ONLY___ ═
677
+ 2025-07-01 21:03:40,927 INFO ___FILE_ONLY___ ═
678
+ 2025-07-01 21:03:40,968 INFO ___FILE_ONLY___ ═
679
+ 2025-07-01 21:03:40,984 INFO ___FILE_ONLY___ ═
680
+ 2025-07-01 21:03:40,998 INFO ___FILE_ONLY___ ═
681
+ 2025-07-01 21:03:41,010 INFO ___FILE_ONLY___ ═
682
+ 2025-07-01 21:03:41,022 INFO ___FILE_ONLY___ ═
683
+ 2025-07-01 21:03:41,035 INFO ___FILE_ONLY___ ═
684
+ 2025-07-01 21:03:41,047 INFO ___FILE_ONLY___ ═
685
+ 2025-07-01 21:03:41,058 INFO ___FILE_ONLY___ ═
686
+ 2025-07-01 21:03:41,069 INFO ___FILE_ONLY___ ═
687
+ 2025-07-01 21:03:41,080 INFO ___FILE_ONLY___ ═
688
+ 2025-07-01 21:03:41,091 INFO ___FILE_ONLY___ ═
689
+ 2025-07-01 21:03:41,105 INFO ___FILE_ONLY___ ═
690
+ 2025-07-01 21:03:41,121 INFO ___FILE_ONLY___ ═
691
+ 2025-07-01 21:03:41,135 INFO ___FILE_ONLY___ ═
692
+ 2025-07-01 21:03:41,150 INFO ___FILE_ONLY___ ═
693
+ 2025-07-01 21:03:41,166 INFO ___FILE_ONLY___ ═
694
+ 2025-07-01 21:03:41,180 INFO ___FILE_ONLY___ ═
695
+ 2025-07-01 21:03:41,197 INFO ___FILE_ONLY___ ═
696
+ 2025-07-01 21:03:41,215 INFO ___FILE_ONLY___ ═
697
+ 2025-07-01 21:03:41,238 INFO ___FILE_ONLY___ ═
698
+ 2025-07-01 21:03:41,256 INFO ___FILE_ONLY___ ═
699
+ 2025-07-01 21:03:41,277 INFO ___FILE_ONLY___ ═
700
+ 2025-07-01 21:03:41,277 INFO ___FILE_ONLY___ ╝
701
+
702
+ 2025-07-01 21:03:41,313 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
703
+
704
+ 2025-07-01 21:03:41,313 INFO ___FILE_ONLY___ ╠═ Installing: Cloud Storage Command Line Tool (Platform... ═╣
705
+
706
+ 2025-07-01 21:03:41,313 INFO ___FILE_ONLY___ ╚
707
+ 2025-07-01 21:03:41,314 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
708
+ 2025-07-01 21:03:41,314 INFO ___FILE_ONLY___ ╝
709
+
710
+ 2025-07-01 21:03:41,320 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
711
+
712
+ 2025-07-01 21:03:41,320 INFO ___FILE_ONLY___ ╠═ Installing: Default set of gcloud commands ═╣
713
+
714
+ 2025-07-01 21:03:41,320 INFO ___FILE_ONLY___ ╚
715
+ 2025-07-01 21:03:41,324 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
716
+ 2025-07-01 21:03:41,324 INFO ___FILE_ONLY___ ╝
717
+
718
+ 2025-07-01 21:03:41,326 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
719
+
720
+ 2025-07-01 21:03:41,326 INFO ___FILE_ONLY___ ╠═ Installing: Google Cloud CLI Core Libraries (Platform... ═╣
721
+
722
+ 2025-07-01 21:03:41,326 INFO ___FILE_ONLY___ ╚
723
+ 2025-07-01 21:03:41,328 INFO ___FILE_ONLY___ ══════════════════════════════
724
+ 2025-07-01 21:03:41,328 INFO ___FILE_ONLY___ ══════════════════════════════
725
+ 2025-07-01 21:03:41,328 INFO ___FILE_ONLY___ ╝
726
+
727
+ 2025-07-01 21:03:41,333 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
728
+
729
+ 2025-07-01 21:03:41,333 INFO ___FILE_ONLY___ ╠═ Installing: Google Cloud CRC32C Hash Tool ═╣
730
+
731
+ 2025-07-01 21:03:41,333 INFO ___FILE_ONLY___ ╚
732
+ 2025-07-01 21:03:41,337 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
733
+ 2025-07-01 21:03:41,337 INFO ___FILE_ONLY___ ╝
734
+
735
+ 2025-07-01 21:03:41,339 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
736
+
737
+ 2025-07-01 21:03:41,339 INFO ___FILE_ONLY___ ╠═ Installing: Google Cloud CRC32C Hash Tool (Platform S... ═╣
738
+
739
+ 2025-07-01 21:03:41,339 INFO ___FILE_ONLY___ ╚
740
+ 2025-07-01 21:03:41,381 INFO ___FILE_ONLY___ ══════════════════════════════
741
+ 2025-07-01 21:03:41,381 INFO ___FILE_ONLY___ ══════════════════════════════
742
+ 2025-07-01 21:03:41,381 INFO ___FILE_ONLY___ ╝
743
+
744
+ 2025-07-01 21:03:41,387 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
745
+
746
+ 2025-07-01 21:03:41,387 INFO ___FILE_ONLY___ ╠═ Installing: gcloud cli dependencies (Platform Specific) ═╣
747
+
748
+ 2025-07-01 21:03:41,387 INFO ___FILE_ONLY___ ╚
749
+ 2025-07-01 21:03:41,387 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
750
+ 2025-07-01 21:03:41,388 INFO ___FILE_ONLY___ ╝
751
+
752
+ 2025-07-01 21:03:41,393 DEBUG root Updating notification cache...
753
+ 2025-07-01 21:03:41,393 INFO ___FILE_ONLY___
754
+
755
+ 2025-07-01 21:03:41,395 INFO ___FILE_ONLY___ Performing post processing steps...
756
+ 2025-07-01 21:03:41,396 DEBUG root Executing command: ['/tools/google-cloud-sdk/bin/gcloud', 'components', 'post-process']
757
+ 2025-07-01 21:03:52,373 DEBUG ___FILE_ONLY___
758
+ 2025-07-01 21:03:52,373 DEBUG ___FILE_ONLY___
759
+ 2025-07-01 21:03:52,453 INFO root descriptor_list: [{'universeDomain': 'googleapis.com', 'universeShortName': '', 'authenticationDomain': 'auth.cloud.google.com', 'projectPrefix': '', 'cloudWebDomain': 'cloud.google.com', 'documentationDomain': 'cloud.google.com', 'version': '1.0.0', 'state': 'primary', 'artifactRegistryDomain': 'pkg.dev'}]
760
+ 2025-07-01 21:03:52,454 INFO ___FILE_ONLY___
761
+ Update done!
762
+
763
+
764
+ 2025-07-01 21:03:52,456 DEBUG root Chosen display Format:none
765
+ 2025-07-01 21:03:52,457 INFO root Display format: "none"
.config/logs/2025.07.01/21.03.41.948871.log ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ 2025-07-01 21:03:41,949 DEBUG root Loaded Command Group: ['gcloud', 'components']
2
+ 2025-07-01 21:03:41,951 DEBUG root Loaded Command Group: ['gcloud', 'components', 'post_process']
3
+ 2025-07-01 21:03:41,953 DEBUG root Running [gcloud.components.post-process] with arguments: []
4
+ 2025-07-01 21:03:52,197 DEBUG root Chosen display Format:none
5
+ 2025-07-01 21:03:52,198 INFO root Display format: "none"
.config/logs/2025.07.01/21.03.53.252709.log ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2025-07-01 21:03:53,253 DEBUG root Loaded Command Group: ['gcloud', 'components']
2
+ 2025-07-01 21:03:53,255 DEBUG root Loaded Command Group: ['gcloud', 'components', 'update']
3
+ 2025-07-01 21:03:53,257 DEBUG root Running [gcloud.components.update] with arguments: [--quiet: "True", COMPONENT-IDS:8: "['gcloud', 'core', 'bq', 'gsutil', 'compute', 'preview', 'alpha', 'beta']"]
4
+ 2025-07-01 21:03:53,258 INFO ___FILE_ONLY___ Beginning update. This process may take several minutes.
5
+
6
+ 2025-07-01 21:03:53,268 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
7
+ 2025-07-01 21:03:53,281 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components-2.json HTTP/11" 200 239798
8
+ 2025-07-01 21:03:53,295 WARNING root Component [compute] no longer exists.
9
+ 2025-07-01 21:03:53,296 INFO ___FILE_ONLY___
10
+
11
+ 2025-07-01 21:03:53,296 INFO ___FILE_ONLY___
12
+ Your current Google Cloud CLI version is: 529.0.0
13
+
14
+ 2025-07-01 21:03:53,296 INFO ___FILE_ONLY___ Installing components from version: 529.0.0
15
+
16
+ 2025-07-01 21:03:53,296 INFO ___FILE_ONLY___
17
+
18
+ 2025-07-01 21:03:53,296 DEBUG root Chosen display Format:table[box,title="These components will be removed."](details.display_name:label=Name:align=left,version.version_string:label=Version:align=right,data.size.size(zero="",min=1048576):label=Size:align=right)
19
+ 2025-07-01 21:03:53,297 DEBUG root Chosen display Format:table[box,title="These components will be updated."](details.display_name:label=Name:align=left,version.version_string:label=Version:align=right,data.size.size(zero="",min=1048576):label=Size:align=right)
20
+ 2025-07-01 21:03:53,297 DEBUG root Chosen display Format:table[box,title="These components will be installed."](details.display_name:label=Name:align=left,version.version_string:label=Version:align=right,data.size.size(zero="",min=1048576):label=Size:align=right)
21
+ 2025-07-01 21:03:53,312 INFO ___FILE_ONLY___ ┌────────────────────────────────────────────────┐
22
+ 2025-07-01 21:03:53,312 INFO ___FILE_ONLY___
23
+
24
+ 2025-07-01 21:03:53,312 INFO ___FILE_ONLY___ │ These components will be installed. │
25
+ 2025-07-01 21:03:53,312 INFO ___FILE_ONLY___
26
+
27
+ 2025-07-01 21:03:53,312 INFO ___FILE_ONLY___ ├─────────────────────────┬────────────┬─────────┤
28
+ 2025-07-01 21:03:53,312 INFO ___FILE_ONLY___
29
+
30
+ 2025-07-01 21:03:53,312 INFO ___FILE_ONLY___ │ Name │ Version │ Size │
31
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
32
+
33
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ ├─────────────────────────┼────────────┼─────────┤
34
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
35
+
36
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ │
37
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ gcloud Alpha Commands
38
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
39
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ │
40
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ 2025.06.27
41
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
42
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ │
43
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ < 1 MiB
44
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
45
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ │
46
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
47
+
48
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ │
49
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ gcloud Beta Commands
50
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
51
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ │
52
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ 2025.06.27
53
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___
54
+ 2025-07-01 21:03:53,313 INFO ___FILE_ONLY___ │
55
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ < 1 MiB
56
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
57
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ │
58
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
59
+
60
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ │
61
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ gcloud Preview Commands
62
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
63
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ │
64
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
65
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
66
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ │
67
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ < 1 MiB
68
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
69
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ │
70
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
71
+
72
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___ └─────────────────────────┴────────────┴─────────┘
73
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
74
+
75
+ 2025-07-01 21:03:53,314 INFO ___FILE_ONLY___
76
+
77
+ 2025-07-01 21:03:53,318 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
78
+ 2025-07-01 21:03:53,332 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/RELEASE_NOTES HTTP/11" 200 1444035
79
+ 2025-07-01 21:03:53,802 INFO ___FILE_ONLY___ For the latest full release notes, please visit:
80
+ https://cloud.google.com/sdk/release_notes
81
+
82
+
83
+ 2025-07-01 21:03:53,803 INFO ___FILE_ONLY___ Performing in place update...
84
+
85
+
86
+ 2025-07-01 21:03:53,805 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
87
+
88
+ 2025-07-01 21:03:53,805 INFO ___FILE_ONLY___ ╠═ Downloading: gcloud Alpha Commands ═╣
89
+
90
+ 2025-07-01 21:03:53,806 INFO ___FILE_ONLY___ ╚
91
+ 2025-07-01 21:03:53,809 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
92
+ 2025-07-01 21:03:53,916 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-alpha-20250627154417.tar.gz HTTP/11" 200 800
93
+ 2025-07-01 21:03:53,917 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
94
+ 2025-07-01 21:03:53,917 INFO ___FILE_ONLY___ ╝
95
+
96
+ 2025-07-01 21:03:53,919 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
97
+
98
+ 2025-07-01 21:03:53,919 INFO ___FILE_ONLY___ ╠═ Downloading: gcloud Beta Commands ═╣
99
+
100
+ 2025-07-01 21:03:53,919 INFO ___FILE_ONLY___ ╚
101
+ 2025-07-01 21:03:53,923 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
102
+ 2025-07-01 21:03:53,974 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-beta-20250627154417.tar.gz HTTP/11" 200 797
103
+ 2025-07-01 21:03:53,975 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
104
+ 2025-07-01 21:03:53,975 INFO ___FILE_ONLY___ ╝
105
+
106
+ 2025-07-01 21:03:53,977 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
107
+
108
+ 2025-07-01 21:03:53,977 INFO ___FILE_ONLY___ ╠═ Downloading: gcloud Preview Commands ═╣
109
+
110
+ 2025-07-01 21:03:53,977 INFO ___FILE_ONLY___ ╚
111
+ 2025-07-01 21:03:53,981 DEBUG urllib3.connectionpool Starting new HTTPS connection (1): dl.google.com:443
112
+ 2025-07-01 21:03:54,014 DEBUG urllib3.connectionpool https://dl.google.com:443 "GET /dl/cloudsdk/channels/rapid/components/google-cloud-sdk-preview-20241115154308.tar.gz HTTP/11" 200 823
113
+ 2025-07-01 21:03:54,015 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
114
+ 2025-07-01 21:03:54,015 INFO ___FILE_ONLY___ ╝
115
+
116
+ 2025-07-01 21:03:54,018 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
117
+
118
+ 2025-07-01 21:03:54,018 INFO ___FILE_ONLY___ ╠═ Installing: gcloud Alpha Commands ═╣
119
+
120
+ 2025-07-01 21:03:54,018 INFO ___FILE_ONLY___ ╚
121
+ 2025-07-01 21:03:54,019 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
122
+ 2025-07-01 21:03:54,019 INFO ___FILE_ONLY___ ╝
123
+
124
+ 2025-07-01 21:03:54,026 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
125
+
126
+ 2025-07-01 21:03:54,026 INFO ___FILE_ONLY___ ╠═ Installing: gcloud Beta Commands ═╣
127
+
128
+ 2025-07-01 21:03:54,026 INFO ___FILE_ONLY___ ╚
129
+ 2025-07-01 21:03:54,027 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
130
+ 2025-07-01 21:03:54,027 INFO ___FILE_ONLY___ ╝
131
+
132
+ 2025-07-01 21:03:54,033 INFO ___FILE_ONLY___ ╔════════════════════════════════════════════════════════════╗
133
+
134
+ 2025-07-01 21:03:54,034 INFO ___FILE_ONLY___ ╠═ Installing: gcloud Preview Commands ═╣
135
+
136
+ 2025-07-01 21:03:54,034 INFO ___FILE_ONLY___ ╚
137
+ 2025-07-01 21:03:54,034 INFO ___FILE_ONLY___ ════════════════════════════════════════════════════════════
138
+ 2025-07-01 21:03:54,035 INFO ___FILE_ONLY___ ╝
139
+
140
+ 2025-07-01 21:03:54,040 DEBUG root Updating notification cache...
141
+ 2025-07-01 21:03:54,041 INFO ___FILE_ONLY___
142
+
143
+ 2025-07-01 21:03:54,043 INFO ___FILE_ONLY___ Performing post processing steps...
144
+ 2025-07-01 21:03:54,043 DEBUG root Executing command: ['/tools/google-cloud-sdk/bin/gcloud', 'components', 'post-process']
145
+ 2025-07-01 21:04:05,574 DEBUG ___FILE_ONLY___
146
+ 2025-07-01 21:04:05,574 DEBUG ___FILE_ONLY___
147
+ 2025-07-01 21:04:05,812 INFO root descriptor_list: [{'universeDomain': 'googleapis.com', 'universeShortName': '', 'authenticationDomain': 'auth.cloud.google.com', 'projectPrefix': '', 'cloudWebDomain': 'cloud.google.com', 'documentationDomain': 'cloud.google.com', 'version': '1.0.0', 'state': 'primary', 'artifactRegistryDomain': 'pkg.dev'}]
148
+ 2025-07-01 21:04:05,813 INFO ___FILE_ONLY___
149
+ Update done!
150
+
151
+
152
+ 2025-07-01 21:04:05,815 DEBUG root Chosen display Format:none
153
+ 2025-07-01 21:04:05,815 INFO root Display format: "none"
.config/logs/2025.07.01/21.03.54.626322.log ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ 2025-07-01 21:03:54,627 DEBUG root Loaded Command Group: ['gcloud', 'components']
2
+ 2025-07-01 21:03:54,628 DEBUG root Loaded Command Group: ['gcloud', 'components', 'post_process']
3
+ 2025-07-01 21:03:54,630 DEBUG root Running [gcloud.components.post-process] with arguments: []
4
+ 2025-07-01 21:04:05,377 DEBUG root Chosen display Format:none
5
+ 2025-07-01 21:04:05,378 INFO root Display format: "none"
.config/logs/2025.07.01/21.04.06.597104.log ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ 2025-07-01 21:04:06,599 DEBUG root Loaded Command Group: ['gcloud', 'config']
2
+ 2025-07-01 21:04:06,658 DEBUG root Loaded Command Group: ['gcloud', 'config', 'set']
3
+ 2025-07-01 21:04:06,661 DEBUG root Running [gcloud.config.set] with arguments: [SECTION/PROPERTY: "component_manager/disable_update_check", VALUE: "true"]
4
+ 2025-07-01 21:04:06,662 INFO ___FILE_ONLY___ Updated property [component_manager/disable_update_check].
5
+
6
+ 2025-07-01 21:04:06,663 DEBUG root Chosen display Format:default
7
+ 2025-07-01 21:04:06,663 INFO root Display format: "default"
8
+ 2025-07-01 21:04:06,664 DEBUG root SDK update checks are disabled.
.config/logs/2025.07.01/21.04.07.490711.log ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ 2025-07-01 21:04:07,492 DEBUG root Loaded Command Group: ['gcloud', 'config']
2
+ 2025-07-01 21:04:07,547 DEBUG root Loaded Command Group: ['gcloud', 'config', 'set']
3
+ 2025-07-01 21:04:07,550 DEBUG root Running [gcloud.config.set] with arguments: [SECTION/PROPERTY: "compute/gce_metadata_read_timeout_sec", VALUE: "0"]
4
+ 2025-07-01 21:04:07,551 INFO ___FILE_ONLY___ Updated property [compute/gce_metadata_read_timeout_sec].
5
+
6
+ 2025-07-01 21:04:07,552 DEBUG root Chosen display Format:default
7
+ 2025-07-01 21:04:07,553 INFO root Display format: "default"
8
+ 2025-07-01 21:04:07,554 DEBUG root SDK update checks are disabled.
.gitattributes CHANGED
@@ -35,3 +35,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  sample_data/mnist_test.csv filter=lfs diff=lfs merge=lfs -text
37
  sample_data/mnist_train_small.csv filter=lfs diff=lfs merge=lfs -text
 
 
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  sample_data/mnist_test.csv filter=lfs diff=lfs merge=lfs -text
37
  sample_data/mnist_train_small.csv filter=lfs diff=lfs merge=lfs -text
38
+ fine_tuned_hindi_sentiment/tokenizer.json filter=lfs diff=lfs merge=lfs -text
deploy.py CHANGED
@@ -1,591 +1,356 @@
1
- import gradio as gr
2
- import matplotlib.pyplot as plt
3
- import pandas as pd
4
- import torch
5
- import emoji
6
- import re
7
- import numpy as np
8
- from collections import Counter
9
- from instagrapi import Client
10
- from transformers import (
11
- pipeline,
12
- AutoTokenizer,
13
- AutoModelForSequenceClassification,
14
- Trainer,
15
- TrainingArguments,
16
- RobertaForSequenceClassification,
17
- AlbertForSequenceClassification
18
- )
19
- from datasets import Dataset, Features, Value
20
- from sklearn.metrics import accuracy_score, f1_score
21
-
22
- # Configuration
23
- CONFIG = {
24
- "max_length": 128,
25
- "batch_size": 16,
26
- "learning_rate": 2e-5,
27
- "num_train_epochs": 3,
28
- "few_shot_examples": 5,
29
- "confidence_threshold": 0.7,
30
- "neutral_reanalysis_threshold": 0.33
31
- }
32
-
33
- # Global state
34
- cl = None
35
- explore_reels_list = []
36
- sentiment_analyzer = None
37
- content_classifier = None
38
-
39
- # Content categories
40
- CONTENT_CATEGORIES = [
41
- "news", "meme", "sports", "science", "music", "movie",
42
- "gym", "comedy", "food", "technology", "travel", "fashion", "art", "business"
43
- ]
44
-
45
- CATEGORY_KEYWORDS = {
46
- "news": {"news", "update", "breaking", "reported", "headlines"},
47
- "meme": {"meme", "funny", "lol", "haha", "relatable"},
48
- "sports": {"sports", "cricket", "football", "match", "game", "team", "score"},
49
- "science": {"science", "research", "discovery", "experiment", "facts", "theory"},
50
- "music": {"music", "song", "album", "release", "artist", "beats"},
51
- "movie": {"movie", "film", "bollywood", "trailer", "series", "actor"},
52
- "gym": {"gym", "workout", "fitness", "exercise", "training", "bodybuilding"},
53
- "comedy": {"comedy", "joke", "humor", "standup", "skit", "laugh"},
54
- "food": {"food", "recipe", "cooking", "eat", "delicious", "restaurant", "kitchen"},
55
- "technology": {"tech", "phone", "computer", "ai", "gadget", "software", "innovation"},
56
- "travel": {"travel", "trip", "vacation", "explore", "destination", "adventure"},
57
- "fashion": {"fashion", "style", "ootd", "outfit", "trends", "clothing"},
58
- "art": {"art", "artist", "painting", "drawing", "creative", "design"},
59
- "business": {"business", "startup", "marketing", "money", "finance", "entrepreneur"}
60
- }
61
-
62
- class ReelSentimentAnalyzer:
63
- def __init__(self):
64
- self.device = "cuda" if torch.cuda.is_available() else "cpu"
65
- self._initialize_models()
66
- self._setup_emotion_mappings()
67
-
68
- def _initialize_models(self):
69
- print("Loading sentiment analysis models...")
70
- # English models
71
- self.emotion_tokenizer = AutoTokenizer.from_pretrained("finiteautomata/bertweet-base-emotion-analysis")
72
- self.emotion_model = AutoModelForSequenceClassification.from_pretrained(
73
- "finiteautomata/bertweet-base-emotion-analysis"
74
- ).to(self.device)
75
-
76
- self.sentiment_tokenizer = AutoTokenizer.from_pretrained("cardiffnlp/twitter-roberta-base-sentiment-latest")
77
- self.sentiment_model = RobertaForSequenceClassification.from_pretrained(
78
- "cardiffnlp/twitter-roberta-base-sentiment-latest",
79
- ignore_mismatched_sizes=True
80
- ).to(self.device)
81
-
82
- # Hindi/English model
83
- self.hindi_tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-bert")
84
- self.hindi_model = AlbertForSequenceClassification.from_pretrained(
85
- "ai4bharat/indic-bert",
86
- num_labels=3,
87
- id2label={0: "negative", 1: "neutral", 2: "positive"},
88
- label2id={"negative": 0, "neutral": 1, "positive": 2}
89
- ).to(self.device)
90
- self.hindi_label2id = self.hindi_model.config.label2id
91
-
92
- def _setup_emotion_mappings(self):
93
- self.emotion_map = {
94
- "joy": "positive", "love": "positive", "happy": "positive",
95
- "anger": "negative", "sadness": "negative", "fear": "negative",
96
- "surprise": "neutral", "neutral": "neutral", "disgust": "negative", "shame": "negative"
97
- }
98
- self.neutral_keywords = {
99
- "ad", "sponsored", "promo", "sale", "discount", "offer", "giveaway",
100
- "buy", "shop", "link in bio",
101
- "विज्ञापन", "प्रचार", "ऑफर", "डिस्काउंट", "बिक्री", "लिंक बायो में"
102
- }
103
-
104
- def train_hindi_model(self, train_data, eval_data=None):
105
- print("Fine-tuning Hindi sentiment model...")
106
- train_dataset = Dataset.from_pandas(pd.DataFrame(train_data))
107
-
108
- def map_labels_to_ids(examples):
109
- labels = []
110
- for label_str in examples["label"]:
111
- if label_str in self.hindi_label2id:
112
- labels.append(self.hindi_label2id[label_str])
113
- else:
114
- print(f"Warning: Unexpected label '{label_str}'. Mapping to neutral.")
115
- labels.append(self.hindi_label2id["neutral"])
116
- examples["label"] = labels
117
- return examples
118
-
119
- train_dataset = train_dataset.map(map_labels_to_ids, batched=True)
120
- train_dataset = train_dataset.cast_column("label", Value("int64"))
121
-
122
- def tokenize_function(examples):
123
- return self.hindi_tokenizer(
124
- examples["text"],
125
- padding="max_length",
126
- truncation=True,
127
- max_length=CONFIG["max_length"]
128
- )
129
-
130
- tokenized_train = train_dataset.map(tokenize_function, batched=True)
131
-
132
- training_args = TrainingArguments(
133
- output_dir="./results",
134
- eval_strategy="epoch" if eval_data else "no",
135
- per_device_train_batch_size=CONFIG["batch_size"],
136
- per_device_eval_batch_size=CONFIG["batch_size"],
137
- learning_rate=CONFIG["learning_rate"],
138
- num_train_epochs=CONFIG["num_train_epochs"],
139
- weight_decay=0.01,
140
- save_strategy="no",
141
- logging_dir='./logs',
142
- logging_steps=10,
143
- report_to="none"
144
- )
145
-
146
- def compute_metrics(p):
147
- predictions, labels = p
148
- predictions = np.argmax(predictions, axis=1)
149
- return {
150
- "accuracy": accuracy_score(labels, predictions),
151
- "f1": f1_score(labels, predictions, average="weighted")
152
- }
153
-
154
- eval_dataset_processed = None
155
- if eval_data:
156
- eval_dataset = Dataset.from_pandas(pd.DataFrame(eval_data))
157
- eval_dataset = eval_dataset.map(map_labels_to_ids, batched=True)
158
- eval_dataset_processed = eval_dataset.cast_column("label", Value("int64")).map(tokenize_function, batched=True)
159
-
160
- trainer = Trainer(
161
- model=self.hindi_model,
162
- args=training_args,
163
- train_dataset=tokenized_train,
164
- eval_dataset=eval_dataset_processed,
165
- compute_metrics=compute_metrics if eval_data else None,
166
- )
167
-
168
- trainer.train()
169
- self.hindi_model.save_pretrained("./fine_tuned_hindi_sentiment")
170
- self.hindi_tokenizer.save_pretrained("./fine_tuned_hindi_sentiment")
171
-
172
- def preprocess_text(self, text):
173
- if not text:
174
- return ""
175
-
176
- text = emoji.demojize(text, delimiters=(" ", " "))
177
- text = re.sub(r"http\S+|@\w+", "", text)
178
-
179
- abbrevs = {
180
- r"\bomg\b": "oh my god",
181
- r"\btbh\b": "to be honest",
182
- r"\bky\b": "kyun",
183
- r"\bkb\b": "kab",
184
- r"\bkya\b": "kya",
185
- r"\bkahan\b": "kahan",
186
- r"\bkaisa\b": "kaisa"
187
- }
188
- for pattern, replacement in abbrevs.items():
189
- text = re.sub(pattern, replacement, text, flags=re.IGNORECASE)
190
-
191
- return re.sub(r"\s+", " ", text).strip()
192
-
193
- def detect_language(self, text):
194
- if re.search(r"[\u0900-\u097F]", text):
195
- return "hi"
196
- hinglish_keywords = ["hai", "kyun", "nahi", "kya", "acha", "bas", "yaar", "main"]
197
- if any(re.search(rf"\b{kw}\b", text.lower()) for kw in hinglish_keywords):
198
- return "hi-latin"
199
- return "en"
200
-
201
- def analyze_content(self, text):
202
- processed = self.preprocess_text(text)
203
- if not processed:
204
- return "neutral", 0.5, {"reason": "empty_text"}
205
-
206
- lang = self.detect_language(processed)
207
-
208
- if any(re.search(rf"\b{re.escape(kw)}\b", processed.lower()) for kw in self.neutral_keywords):
209
- return "neutral", 0.9, {"reason": "neutral_keyword"}
210
-
211
- try:
212
- if lang in ("hi", "hi-latin"):
213
- return self._analyze_hindi_content(processed)
214
- return self._analyze_english_content(processed)
215
- except Exception as e:
216
- print(f"Analysis error: {e}")
217
- return "neutral", 0.5, {"error": str(e), "original_text": text[:50]}
218
-
219
- def _analyze_hindi_content(self, text):
220
- inputs = self.hindi_tokenizer(
221
- text,
222
- return_tensors="pt",
223
- truncation=True,
224
- padding=True,
225
- max_length=CONFIG["max_length"]
226
- ).to(self.device)
227
-
228
- with torch.no_grad():
229
- outputs = self.hindi_model(**inputs)
230
-
231
- probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
232
- pred_idx = torch.argmax(probs).item()
233
- confidence = probs[0][pred_idx].item()
234
- label = self.hindi_model.config.id2label[pred_idx]
235
- return label, confidence, {"model": "fine-tuned-indic-bert", "lang": "hi"}
236
-
237
- def _analyze_english_content(self, text):
238
- # Emotion analysis
239
- emotion_inputs = self.emotion_tokenizer(
240
- text,
241
- return_tensors="pt",
242
- truncation=True,
243
- max_length=CONFIG["max_length"]
244
- ).to(self.device)
245
-
246
- with torch.no_grad():
247
- emotion_outputs = self.emotion_model(**emotion_inputs)
248
-
249
- emotion_probs = torch.nn.functional.softmax(emotion_outputs.logits, dim=-1)
250
- emotion_pred = torch.argmax(emotion_probs).item()
251
- emotion_label = self.emotion_model.config.id2label[emotion_pred]
252
- emotion_score = emotion_probs[0][emotion_pred].item()
253
-
254
- # Sentiment analysis
255
- sentiment_inputs = self.sentiment_tokenizer(
256
- text,
257
- return_tensors="pt",
258
- truncation=True,
259
- max_length=CONFIG["max_length"]
260
- ).to(self.device)
261
-
262
- with torch.no_grad():
263
- sentiment_outputs = self.sentiment_model(**sentiment_inputs)
264
-
265
- sentiment_probs = torch.nn.functional.softmax(sentiment_outputs.logits, dim=-1)
266
- sentiment_pred = torch.argmax(sentiment_probs).item()
267
- sentiment_label_mapping = {0: 'negative', 1: 'neutral', 2: 'positive'}
268
- sentiment_label = sentiment_label_mapping.get(sentiment_pred, 'neutral')
269
- sentiment_score = sentiment_probs[0][sentiment_pred].item()
270
-
271
- # Combine results
272
- mapped_emotion = self.emotion_map.get(emotion_label, "neutral")
273
-
274
- if sentiment_score > CONFIG["confidence_threshold"]:
275
- final_label = sentiment_label
276
- final_confidence = sentiment_score
277
- reason = "high_sentiment_confidence"
278
- elif emotion_score > CONFIG["confidence_threshold"] and mapped_emotion != "neutral":
279
- final_label = mapped_emotion
280
- final_confidence = emotion_score
281
- reason = "high_emotion_confidence"
282
- else:
283
- if sentiment_label == mapped_emotion and sentiment_label != "neutral":
284
- final_label = sentiment_label
285
- final_confidence = (sentiment_score + emotion_score) / 2
286
- reason = "emotion_sentiment_agreement"
287
- elif sentiment_label != "neutral" and sentiment_score > emotion_score and sentiment_score > 0.4:
288
- final_label = sentiment_label
289
- final_confidence = sentiment_score * 0.9
290
- reason = "sentiment_slightly_higher"
291
- elif mapped_emotion != "neutral" and emotion_score > sentiment_score and emotion_score > 0.4:
292
- final_label = mapped_emotion
293
- final_confidence = emotion_score * 0.9
294
- reason = "emotion_slightly_higher"
295
- else:
296
- final_label = "neutral"
297
- final_confidence = 0.6
298
- reason = "fallback_to_neutral"
299
-
300
- return final_label, final_confidence, {
301
- "emotion_label": emotion_label,
302
- "emotion_score": emotion_score,
303
- "sentiment_label": sentiment_label,
304
- "sentiment_score": sentiment_score,
305
- "mapped_emotion": mapped_emotion,
306
- "model": "ensemble",
307
- "lang": "en",
308
- "reason": reason
309
- }
310
-
311
- def analyze_reels(self, reels, max_to_analyze=100):
312
- print(f"Analyzing {max_to_analyze} reels...")
313
- results = Counter()
314
- detailed_results = []
315
-
316
- for i, reel in enumerate(reels[:max_to_analyze], 1):
317
- caption = getattr(reel, 'caption_text', '') or getattr(reel, 'caption', '') or ''
318
- label, confidence, details = self.analyze_content(caption)
319
- results[label] += 1
320
- detailed_results.append({
321
- "reel_id": reel.id,
322
- "text": caption,
323
- "label": label,
324
- "confidence": confidence,
325
- "details": details
326
- })
327
-
328
- if sum(results.values()) > 0 and results["neutral"] / sum(results.values()) > CONFIG["neutral_reanalysis_threshold"]:
329
- self._reduce_neutrals(results, detailed_results)
330
-
331
- return results, detailed_results
332
-
333
- def _reduce_neutrals(self, results, detailed_results):
334
- neutrals_to_recheck = [item for item in detailed_results if item["label"] == "neutral" and item["confidence"] < 0.8]
335
-
336
- for item in neutrals_to_recheck:
337
- text_lower = self.preprocess_text(item["text"]).lower()
338
- pos_keywords = {"amazing", "love", "best", "fantastic", "awesome", "superb", "great"}
339
- neg_keywords = {"hate", "worst", "bad", "terrible", "awful", "disappointed", "horrible", "cringe"}
340
-
341
- is_strong_pos = any(re.search(rf"\b{re.escape(kw)}\b", text_lower) for kw in pos_keywords)
342
- is_strong_neg = any(re.search(rf"\b{re.escape(kw)}\b", text_lower) for kw in neg_keywords)
343
-
344
- if is_strong_pos and not is_strong_neg:
345
- results["neutral"] -= 1
346
- results["positive"] += 1
347
- item.update({
348
- "label": "positive",
349
- "confidence": min(0.95, item["confidence"] + 0.3),
350
- "reanalyzed": True,
351
- "reanalysis_reason": "strong_pos_keywords"
352
- })
353
- elif is_strong_neg and not is_strong_pos:
354
- results["neutral"] -= 1
355
- results["negative"] += 1
356
- item.update({
357
- "label": "negative",
358
- "confidence": min(0.95, item["confidence"] + 0.3),
359
- "reanalyzed": True,
360
- "reanalysis_reason": "strong_neg_keywords"
361
- })
362
-
363
- def plot_sentiment_pie(results, title="Reels Sentiment Analysis"):
364
- sizes = [results.get('positive', 0), results.get('neutral', 0), results.get('negative', 0)]
365
- if sum(sizes) == 0:
366
- return None
367
-
368
- labels = ['Positive', 'Neutral', 'Negative']
369
- colors = ['#4CAF50', '#FFC107', '#F44336']
370
- explode = (0.05, 0, 0.05)
371
-
372
- fig, ax = plt.subplots(figsize=(8, 6))
373
- ax.pie(sizes, explode=explode, labels=labels, colors=colors,
374
- autopct='%1.1f%%', shadow=True, startangle=140,
375
- textprops={'fontsize': 12, 'color': 'black'})
376
- ax.axis('equal')
377
- plt.title(title, fontsize=16, pad=20)
378
- plt.tight_layout()
379
- return fig
380
-
381
- def plot_category_distribution(counter, title="Reels Content Distribution"):
382
- total = sum(counter.values())
383
- if total == 0:
384
- return None
385
-
386
- threshold = total * 0.02
387
- other_count = 0
388
- labels = []
389
- sizes = []
390
-
391
- for category, count in counter.most_common():
392
- if count >= threshold and category != "other":
393
- labels.append(category.replace('_', ' ').title())
394
- sizes.append(count)
395
- else:
396
- other_count += count
397
-
398
- if other_count > 0:
399
- labels.append("Other")
400
- sizes.append(other_count)
401
-
402
- if not sizes:
403
- return None
404
-
405
- fig, ax = plt.subplots(figsize=(10, 8))
406
- colors = plt.cm.viridis(np.linspace(0, 1, len(sizes)))
407
- ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140, colors=colors,
408
- wedgeprops={'edgecolor': 'white', 'linewidth': 1}, textprops={'fontsize': 11})
409
- plt.title(title, pad=20, fontsize=15)
410
- plt.axis('equal')
411
- plt.tight_layout()
412
- return fig
413
-
414
- def preprocess_text_cat(text):
415
- if not text:
416
- return ""
417
- text = re.sub(r"http\S+|@\w+|#\w+", "", text).lower()
418
- return re.sub(r"\s+", " ", text).strip()
419
-
420
- def classify_reel_content(text):
421
- global content_classifier
422
-
423
- processed = preprocess_text_cat(text)
424
- if not processed or len(processed.split()) < 2:
425
- return "other", {"reason": "short_text"}
426
-
427
- for category, keywords in CATEGORY_KEYWORDS.items():
428
- if any(re.search(rf"\b{re.escape(keyword)}\b", processed) for keyword in keywords):
429
- return category, {"reason": "keyword_match"}
430
-
431
- if content_classifier is None:
432
- return "other", {"reason": "classifier_not_initialized"}
433
-
434
- try:
435
- result = content_classifier(processed[:256], CONTENT_CATEGORIES, multi_label=False)
436
- top_label = result['labels'][0]
437
- top_score = result['scores'][0]
438
- return top_label if top_score > 0.5 else "other", {"reason": "model_prediction", "score": top_score}
439
- except Exception as e:
440
- print(f"Classification error: {e}")
441
- return "other", {"reason": "classification_error"}
442
-
443
- # Gradio Interface Functions
444
- def login_gradio_auto():
445
- global cl
446
- try:
447
- PASSWORD = "qwerty@desk" # Replace with your actual password
448
- except Exception as e:
449
- return f"Error accessing password: {e}", gr.update(visible=False)
450
-
451
- if not PASSWORD:
452
- return "Error: Instagram password not found.", gr.update(visible=False)
453
-
454
- cl = Client()
455
- try:
456
- cl.login("jattman1993", PASSWORD)
457
- return f"Successfully logged in as jattman1993", gr.update(visible=False)
458
- except Exception as e:
459
- cl = None
460
- error_message = str(e)
461
- if "Two factor challenged" in error_message or "challenge_required" in error_message:
462
- return f"Login failed: Two-factor authentication required.", gr.update(visible=True)
463
- return f"Error during login: {error_message}", gr.update(visible=False)
464
-
465
- def submit_otp_gradio(otp_code):
466
- global cl
467
- if cl is None:
468
- return "Error: Not logged in.", "", gr.update(visible=False)
469
-
470
- try:
471
- cl.two_factor_login(otp_code)
472
- return f"OTP successful. Logged in as jattman1993.", "", gr.update(visible=False)
473
- except Exception as e:
474
- return f"OTP failed: {e}", "", gr.update(visible=True)
475
-
476
- def fetch_reels_gradio():
477
- global cl, explore_reels_list
478
- if cl is None:
479
- explore_reels_list = []
480
- return "Error: Not logged in."
481
-
482
- try:
483
- explore_reels_list = cl.explore_reels()[:100]
484
- return f"Fetched {len(explore_reels_list)} reels."
485
- except Exception as e:
486
- explore_reels_list = []
487
- return f"Error fetching reels: {e}"
488
-
489
- def analyze_reels_gradio(max_to_analyze):
490
- global explore_reels_list, sentiment_analyzer, content_classifier
491
-
492
- if not explore_reels_list:
493
- return "Error: No reels fetched.", None, None
494
-
495
- num_reels = min(max_to_analyze, len(explore_reels_list))
496
- reels_to_analyze = explore_reels_list[:num_reels]
497
-
498
- if sentiment_analyzer is None:
499
- sentiment_analyzer = ReelSentimentAnalyzer()
500
-
501
- if content_classifier is None:
502
- content_classifier = pipeline(
503
- "zero-shot-classification",
504
- model="facebook/bart-large-mnli",
505
- device=0 if torch.cuda.is_available() else -1
506
- )
507
-
508
- status_messages = []
509
- sentiment_plot = None
510
- content_plot = None
511
-
512
- # Sentiment Analysis
513
- try:
514
- sentiment_results, _ = sentiment_analyzer.analyze_reels(reels_to_analyze)
515
- sentiment_plot = plot_sentiment_pie(sentiment_results)
516
- status_messages.append("Sentiment analysis complete.")
517
- except Exception as e:
518
- status_messages.append(f"Sentiment error: {e}")
519
-
520
- # Content Analysis
521
- try:
522
- category_counts = Counter()
523
- for reel in reels_to_analyze:
524
- caption = getattr(reel, 'caption_text', '') or getattr(reel, 'caption', '') or ''
525
- category, _ = classify_reel_content(caption)
526
- category_counts[category] += 1
527
- content_plot = plot_category_distribution(category_counts)
528
- status_messages.append("Content analysis complete.")
529
- except Exception as e:
530
- status_messages.append(f"Content error: {e}")
531
-
532
- return "\n".join(status_messages), sentiment_plot, content_plot
533
-
534
- # Gradio Interface
535
- with gr.Blocks() as demo:
536
- gr.Markdown("# Instagram Reels Analysis")
537
-
538
- # Login Section
539
- with gr.Row():
540
- connect_btn = gr.Button("Connect Instagram")
541
- login_status = gr.Label(label="Login Status")
542
-
543
- # OTP Input (hidden initially)
544
- with gr.Row(visible=False) as otp_row:
545
- otp_input = gr.Textbox(label="Enter OTP Code")
546
- otp_submit_btn = gr.Button("Submit OTP")
547
-
548
- # Fetch Section
549
- with gr.Row():
550
- fetch_btn = gr.Button("Fetch Reels")
551
- fetch_status = gr.Label(label="Fetch Status")
552
-
553
- # Analysis Section
554
- with gr.Row():
555
- max_reels = gr.Slider(1, 100, value=10, step=1, label="Number of Reels to Analyze")
556
- analyze_btn = gr.Button("Analyze Reels")
557
- analyze_status = gr.Label(label="Analysis Status")
558
-
559
- # Results Section
560
- with gr.Row():
561
- with gr.Column():
562
- gr.Markdown("## Sentiment Analysis")
563
- sentiment_output = gr.Plot(label="Sentiment Distribution")
564
- with gr.Column():
565
- gr.Markdown("## Content Analysis")
566
- content_output = gr.Plot(label="Content Distribution")
567
-
568
- # Event handlers
569
- connect_btn.click(
570
- login_gradio_auto,
571
- inputs=None,
572
- outputs=[login_status, otp_row]
573
- )
574
- otp_submit_btn.click(
575
- submit_otp_gradio,
576
- inputs=otp_input,
577
- outputs=[login_status, otp_input, otp_row]
578
- )
579
- fetch_btn.click(
580
- fetch_reels_gradio,
581
- inputs=None,
582
- outputs=fetch_status
583
- )
584
- analyze_btn.click(
585
- analyze_reels_gradio,
586
- inputs=max_reels,
587
- outputs=[analyze_status, sentiment_output, content_output]
588
- )
589
-
590
- if __name__ == "__main__":
591
- demo.launch()
 
1
+
2
+ def plot_sentiment_pie(results, title="Reels Sentiment Analysis"):
3
+ """
4
+ Creates a pie chart from sentiment analysis results and returns the matplotlib figure.
5
+
6
+ Args:
7
+ results: Counter object or dict with 'positive', 'neutral', 'negative' keys
8
+ title: Chart title
9
+
10
+ Returns:
11
+ Matplotlib Figure object, or None if no data.
12
+ """
13
+ labels = ['Positive', 'Neutral', 'Negative']
14
+ sizes = [results.get('positive', 0), results.get('neutral', 0), results.get('negative', 0)]
15
+
16
+ if sum(sizes) == 0:
17
+ return None
18
+
19
+ colors = ['#4CAF50', '#FFC107', '#F44336']
20
+ explode = (0.05, 0, 0.05)
21
+
22
+ fig, ax = plt.subplots(figsize=(8, 6))
23
+
24
+ filtered_labels = [label for i, label in enumerate(labels) if sizes[i] > 0]
25
+ filtered_sizes = [size for size in sizes if size > 0]
26
+ filtered_colors = [colors[i] for i, size in enumerate(sizes) if size > 0]
27
+ explode_map = {'Positive': 0.05, 'Neutral': 0, 'Negative': 0.05}
28
+ filtered_explode = [explode_map.get(label, 0) for label in filtered_labels]
29
+
30
+ ax.pie(filtered_sizes, explode=filtered_explode, labels=filtered_labels, colors=filtered_colors,
31
+ autopct='%1.1f%%', shadow=True, startangle=140,
32
+ textprops={'fontsize': 12, 'color': 'black'})
33
+
34
+ ax.axis('equal')
35
+ plt.title(title, fontsize=16, pad=20)
36
+ plt.tight_layout()
37
+
38
+ # Return the figure object instead of saving to bytes
39
+ return fig
40
+
41
+ def plot_category_distribution(counter, title="Reels Content Distribution"):
42
+ """
43
+ Generate pie chart from category counts and returns the matplotlib figure.
44
+
45
+ Args:
46
+ counter: Counter object with category counts.
47
+ title: Chart title.
48
+
49
+ Returns:
50
+ Matplotlib Figure object, or None if no data.
51
+ """
52
+ labels = []
53
+ sizes = []
54
+
55
+ total = sum(counter.values())
56
+ if total == 0:
57
+ return None
58
+
59
+ threshold = total * 0.02
60
+ other_count = 0
61
+
62
+ sorted_categories = counter.most_common()
63
+
64
+ for category, count in sorted_categories:
65
+ if count >= threshold and category != "other":
66
+ labels.append(category.replace('_', ' ').title())
67
+ sizes.append(count)
68
+ elif category == "other":
69
+ other_count += count
70
+ else:
71
+ other_count += count
72
+
73
+ if other_count > 0:
74
+ labels.append("Other")
75
+ sizes.append(other_count)
76
+
77
+ if not sizes:
78
+ return None
79
+
80
+ fig, ax = plt.subplots(figsize=(10, 8))
81
+ colors = plt.cm.viridis(np.linspace(0, 1, len(sizes)))
82
+
83
+ ax.pie(
84
+ sizes,
85
+ labels=labels,
86
+ autopct='%1.1f%%',
87
+ startangle=140,
88
+ colors=colors,
89
+ wedgeprops={'edgecolor': 'white', 'linewidth': 1},
90
+ textprops={'fontsize': 11, 'color': 'black'}
91
+ )
92
+
93
+ plt.title(title, pad=20, fontsize=15)
94
+ plt.axis('equal')
95
+ plt.tight_layout()
96
+
97
+ # Return the figure object instead of saving to bytes
98
+ return fig
99
+
100
+ # The rest of the Gradio Blocks interface definition and function linking
101
+ # should remain the same, as the analyze_reels_gradio function already
102
+ # calls these plotting functions and is intended to return the figure objects now.
103
+
104
+ # Global variables to maintain state across Gradio calls
105
+ global cl
106
+ global explore_reels_list
107
+ global sentiment_analyzer_instance
108
+ global content_classifier_pipeline
109
+
110
+ # Initialize sentiment analyzer if not already done (can be done here or lazily in analyze_reels_gradio)
111
+ # Doing it here ensures the model is loaded when this cell runs, potentially reducing latency on first analyze click.
112
+ try:
113
+ sentiment_analyzer_instance = ReelSentimentAnalyzer()
114
+ print("Sentiment Analyzer initialized.")
115
+ # Optional: Train Hindi model if needed and data is available
116
+ # sample_train_data = [...] # Define your training data
117
+ # sentiment_analyzer_instance.train_hindi_model(sample_train_data)
118
+ except Exception as e:
119
+ print(f"Error initializing Sentiment Analyzer globally: {e}")
120
+ sentiment_analyzer_instance = None
121
+
122
+
123
+ # Initialize content classifier pipeline if not already done (can be done here or lazily)
124
+ try:
125
+ print("Initializing Content Classifier Pipeline globally...")
126
+ content_classifier_pipeline = pipeline(
127
+ "zero-shot-classification",
128
+ model="facebook/bart-large-mnli",
129
+ device=0 if torch.cuda.is_available() else -1 # Use GPU if available
130
+ )
131
+ print("Content Classifier Pipeline Initialized.")
132
+ except Exception as e:
133
+ print(f"Error initializing Content Classifier globally: {e}")
134
+ content_classifier_pipeline = None
135
+
136
+
137
+ def login_gradio(username):
138
+ """Gradio-compatible login function."""
139
+ global cl
140
+ try:
141
+ PASSWORD = userdata.get('password')
142
+ except Exception as e:
143
+ return f"Error accessing password secret: {e}"
144
+
145
+
146
+ if not PASSWORD:
147
+ return "Error: Instagram password not found in Colab secrets."
148
+
149
+ cl = Client()
150
+
151
+ try:
152
+ cl.login(username, PASSWORD)
153
+ return f"Successfully logged in as {username}"
154
+ except Exception as e:
155
+ cl = None # Ensure cl is None on failure
156
+ return f"Error during login: {e}"
157
+
158
+ def fetch_reels_gradio():
159
+ """Gradio-compatible function to fetch explore reels."""
160
+ global cl
161
+ global explore_reels_list
162
+
163
+ if cl is None:
164
+ explore_reels_list = [] # Ensure list is empty on failure
165
+ return "Error: Not logged in. Please log in first."
166
+
167
+ try:
168
+ # Fetch a limited number of reels for demonstration purposes
169
+ # You might want to make this number configurable later
170
+ fetched_reels = cl.explore_reels()[:100] # Fetch up to 100 for analysis
171
+ explore_reels_list = fetched_reels
172
+ if explore_reels_list:
173
+ return f"Successfully fetched {len(explore_reels_list)} explore reels."
174
+ else:
175
+ explore_reels_list = [] # Ensure it's an empty list
176
+ return "Fetched 0 explore reels."
177
+ except Exception as e:
178
+ explore_reels_list = [] # Ensure it's an empty list on error
179
+ return f"Error fetching explore reels: {e}"
180
+
181
+
182
+ def analyze_reels_gradio(max_to_analyze):
183
+ """Gradio-compatible function to analyze fetched reels and generate plots."""
184
+ global explore_reels_list
185
+ global sentiment_analyzer_instance
186
+ global content_classifier_pipeline
187
+
188
+ if not explore_reels_list:
189
+ # Return None for plots if no reels
190
+ return "Error: No reels fetched yet. Please fetch reels first.", None, None
191
+
192
+ # Ensure max_to_analyze does not exceed the number of fetched reels
193
+ num_reels_to_process = min(max_to_analyze, len(explore_reels_list))
194
+ reels_to_analyze = explore_reels_list[:num_reels_to_process]
195
+
196
+ if not reels_to_analyze:
197
+ return "Error: No reels available to analyze.", None, None
198
+
199
+
200
+ # Check if analyzers are initialized
201
+ if sentiment_analyzer_instance is None:
202
+ return "Error: Sentiment Analyzer not initialized.", None, None
203
+ if content_classifier_pipeline is None:
204
+ return "Error: Content Classifier not initialized.", None, None
205
+
206
+
207
+ analysis_status_messages = []
208
+ sentiment_plot_figure = None # Changed to figure
209
+ content_plot_figure = None # Changed to figure
210
+
211
+ # Perform Sentiment Analysis
212
+ try:
213
+ analysis_status_messages.append(f"Starting Sentiment Analysis for {len(reels_to_analyze)} reels...")
214
+ sentiment_results, detailed_sentiment_results = sentiment_analyzer_instance.analyze_reels(
215
+ reels_to_analyze,
216
+ max_to_analyze=len(reels_to_analyze) # Pass the actual number being processed
217
+ )
218
+ # Call the updated plotting function that returns a figure
219
+ sentiment_plot_figure = plot_sentiment_pie(sentiment_results, title=f"Sentiment of {len(reels_to_analyze)} Instagram Reels")
220
+ analysis_status_messages.append("Sentiment Analysis Complete.")
221
+ except Exception as e:
222
+ analysis_status_messages.append(f"Error during Sentiment Analysis: {e}")
223
+ sentiment_plot_figure = None # Ensure plot is None on error
224
+
225
+
226
+ # Perform Content Categorization
227
+ try:
228
+ analysis_status_messages.append(f"Starting Content Categorization for {len(reels_to_analyze)} reels...")
229
+ category_counts = Counter()
230
+ # Re-implement content analysis slightly to fit this flow using the global pipeline
231
+ print(f"\n⏳ Analyzing content for {len(reels_to_analyze)} reels...")
232
+ for i, reel in enumerate(reels_to_analyze, 1):
233
+ caption = getattr(reel, 'caption_text', '') or getattr(reel, 'caption', '') or ''
234
+ # Use the global classifier pipeline
235
+ category, details = classify_reel_content(caption)
236
+ category_counts[category] += 1
237
+
238
+ print("\n✅ Content Analysis complete!")
239
+ print("\n📊 Category Counts:")
240
+ for category, count in category_counts.most_common():
241
+ print(f"- {category.replace('_', ' ').title()}: {count}")
242
+
243
+ # Call the updated plotting function that returns a figure
244
+ content_plot_figure = plot_category_distribution(category_counts)
245
+ analysis_status_messages.append("Content Categorization Complete.")
246
+
247
+ except Exception as e:
248
+ analysis_status_messages.append(f"Error during Content Analysis: {e}")
249
+ content_plot_figure = None # Ensure plot is None on error
250
+
251
+
252
+ final_status_message = "\n".join(analysis_status_messages)
253
+ # Return the figure objects
254
+ return final_status_message, sentiment_plot_figure, content_plot_figure
255
+
256
+ # --- Gradio Blocks Interface ---
257
+ with gr.Blocks() as demo:
258
+ gr.Markdown("# Instagram Reels Analysis")
259
+ with gr.Row():
260
+ username_input = gr.Textbox(label="Instagram Username")
261
+ login_button = gr.Button("Login")
262
+ login_status_output = gr.Label(label="Login Status")
263
+
264
+ with gr.Row():
265
+ fetch_button = gr.Button("Fetch Reels")
266
+ fetch_status_output = gr.Label(label="Fetch Status")
267
+
268
+ with gr.Row():
269
+ max_reels_input = gr.Slider(minimum=1, maximum=100, value=10, step=1, label="Number of Reels to Analyze")
270
+ analyze_button = gr.Button("Analyze Reels")
271
+
272
+ analyze_status_output = gr.Label(label="Analysis Status")
273
+
274
+ with gr.Row():
275
+ # Sentiment Analysis Outputs
276
+ with gr.Column():
277
+ gr.Markdown("## Sentiment Analysis")
278
+ sentiment_plot_output = gr.Plot(label="Sentiment Distribution")
279
+
280
+ # Content Analysis Outputs
281
+ with gr.Column():
282
+ gr.Markdown("## Content Analysis")
283
+ content_plot_output = gr.Plot(label="Content Distribution")
284
+
285
+
286
+ # Link login and fetch buttons (assuming login_gradio and fetch_reels_gradio are defined)
287
+ # Redefine login_gradio and fetch_reels_gradio here within the Blocks context
288
+ # to ensure they are linked correctly, even though they were defined above.
289
+ # This is a common pattern in Gradio Blocks.
290
+
291
+ def login_gradio_blocks(username):
292
+ """Gradio-compatible login function for Blocks."""
293
+ global cl
294
+ try:
295
+ PASSWORD = userdata.get('password')
296
+ except Exception as e:
297
+ return f"Error accessing password secret: {e}"
298
+
299
+
300
+ if not PASSWORD:
301
+ return "Error: Instagram password not found in Colab secrets."
302
+
303
+ cl = Client()
304
+
305
+ try:
306
+ cl.login(username, PASSWORD)
307
+ return f"Successfully logged in as {username}"
308
+ except Exception as e:
309
+ cl = None # Ensure cl is None on failure
310
+ return f"Error during login: {e}"
311
+
312
+ def fetch_reels_gradio_blocks():
313
+ """Gradio-compatible function to fetch explore reels for Blocks."""
314
+ global cl
315
+ global explore_reels_list
316
+
317
+ if cl is None:
318
+ explore_reels_list = [] # Ensure list is empty on failure
319
+ return "Error: Not logged in. Please log in first."
320
+
321
+ try:
322
+ # Fetch a limited number of reels for demonstration purposes
323
+ # You might want to make this number configurable later
324
+ fetched_reels = cl.explore_reels()[:100] # Fetch up to 100 for analysis
325
+ explore_reels_list = fetched_reels
326
+ if explore_reels_list:
327
+ return f"Successfully fetched {len(explore_reels_list)} explore reels."
328
+ else:
329
+ explore_reels_list = [] # Ensure it's an empty list
330
+ return "Fetched 0 explore reels."
331
+ except Exception as e:
332
+ explore_reels_list = [] # Ensure it's an empty list on error
333
+ return f"Error fetching explore reels: {e}"
334
+
335
+
336
+ login_button.click(
337
+ fn=login_gradio_blocks,
338
+ inputs=username_input,
339
+ outputs=login_status_output
340
+ )
341
+
342
+ fetch_button.click(
343
+ fn=fetch_reels_gradio_blocks,
344
+ inputs=None, # No direct inputs needed for fetching
345
+ outputs=fetch_status_output
346
+ )
347
+
348
+ # Link the Analyze button to the analysis function
349
+ analyze_button.click(
350
+ fn=analyze_reels_gradio,
351
+ inputs=max_reels_input, # Input is the slider value
352
+ outputs=[analyze_status_output, sentiment_plot_output, content_plot_output] # Outputs are status and the two plots
353
+ )
354
+
355
+ # The demo is now fully defined. It can be launched in the next step.
356
+ # demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fine_tuned_hindi_sentiment/config.json ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "AlbertForSequenceClassification"
4
+ ],
5
+ "attention_probs_dropout_prob": 0,
6
+ "bos_token_id": 2,
7
+ "classifier_dropout_prob": 0.1,
8
+ "down_scale_factor": 1,
9
+ "embedding_size": 128,
10
+ "eos_token_id": 3,
11
+ "gap_size": 0,
12
+ "hidden_act": "gelu",
13
+ "hidden_dropout_prob": 0,
14
+ "hidden_size": 768,
15
+ "id2label": {
16
+ "0": "negative",
17
+ "1": "neutral",
18
+ "2": "positive"
19
+ },
20
+ "initializer_range": 0.02,
21
+ "inner_group_num": 1,
22
+ "intermediate_size": 3072,
23
+ "label2id": {
24
+ "negative": 0,
25
+ "neutral": 1,
26
+ "positive": 2
27
+ },
28
+ "layer_norm_eps": 1e-12,
29
+ "max_position_embeddings": 512,
30
+ "model_type": "albert",
31
+ "net_structure_type": 0,
32
+ "num_attention_heads": 12,
33
+ "num_hidden_groups": 1,
34
+ "num_hidden_layers": 12,
35
+ "num_memory_blocks": 0,
36
+ "pad_token_id": 0,
37
+ "position_embedding_type": "absolute",
38
+ "problem_type": "single_label_classification",
39
+ "torch_dtype": "float32",
40
+ "transformers_version": "4.53.0",
41
+ "type_vocab_size": 2,
42
+ "vocab_size": 200000
43
+ }
fine_tuned_hindi_sentiment/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:311b002201944521ca56338b7c144e259b02c33f45f91f923e4b89c4a38d72b8
3
+ size 133787028
fine_tuned_hindi_sentiment/special_tokens_map.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "[CLS]",
3
+ "cls_token": "[CLS]",
4
+ "eos_token": "[SEP]",
5
+ "mask_token": {
6
+ "content": "[MASK]",
7
+ "lstrip": true,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false
11
+ },
12
+ "pad_token": "<pad>",
13
+ "sep_token": "[SEP]",
14
+ "unk_token": "<unk>"
15
+ }
fine_tuned_hindi_sentiment/spiece.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3a1173c2b6e144a02c001e289a05b5dbefddf247c50d4dcf42633158b2968fcb
3
+ size 5646064
fine_tuned_hindi_sentiment/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b1dde479dd4e493c0bea2cdefa97a961e84ba598a35311c44c4a8b1f56482220
3
+ size 15285941
fine_tuned_hindi_sentiment/tokenizer_config.json ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<pad>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "1": {
12
+ "content": "<unk>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "2": {
20
+ "content": "[CLS]",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "3": {
28
+ "content": "[SEP]",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "4": {
36
+ "content": "[MASK]",
37
+ "lstrip": true,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ }
43
+ },
44
+ "bos_token": "[CLS]",
45
+ "clean_up_tokenization_spaces": false,
46
+ "cls_token": "[CLS]",
47
+ "do_lower_case": true,
48
+ "eos_token": "[SEP]",
49
+ "extra_special_tokens": {},
50
+ "keep_accents": false,
51
+ "mask_token": "[MASK]",
52
+ "model_max_length": 1000000000000000019884624838656,
53
+ "pad_token": "<pad>",
54
+ "remove_space": true,
55
+ "sep_token": "[SEP]",
56
+ "sp_model_kwargs": {},
57
+ "tokenizer_class": "AlbertTokenizer",
58
+ "unk_token": "<unk>"
59
+ }