در این مطلب، ویدئو آموزش Bazel: اهداف پایتون با py_library، py_test و py_binary (دپ های داخلی و خارجی) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:19:39
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,240 –> 00:00:02,399
سلام به همه، در آخرین ویدیو
2
00:00:02,399 –> 00:00:04,720
ما فضای کاری bazel خود را ایجاد کردیم و
3
00:00:04,720 –> 00:00:07,600
چند بسته نمونه ایجاد کردیم که این
4
00:00:07,600 –> 00:00:09,519
بسته ها کار زیادی انجام ندادند.
5
00:00:09,519 –> 00:00:11,519
6
00:00:11,519 –> 00:00:14,719
7
00:00:14,719 –> 00:00:16,079
8
00:00:16,079 –> 00:00:17,840
ما یک
9
00:00:17,840 –> 00:00:19,760
بسته جدید ایجاد می کنیم و یک
10
00:00:19,760 –> 00:00:21,600
کتابخانه پایتون می سازیم و سپس
11
00:00:21,600 –> 00:00:24,800
آن کتابخانه را از یک پروژه پایتون دیگر
12
00:00:24,800 –> 00:00:28,320
که قرار است یک برنامه فلاسک را اجرا کند مصرف
13
00:00:28,320 –> 00:00:30,480
می کنیم و همه کارها را انجام می دهیم.
14
00:00:30,480 –> 00:00:33,520
این از داخل monorepo است،
15
00:00:33,520 –> 00:00:34,399
16
00:00:34,399 –> 00:00:36,000
بنابراین اولین کاری که باید انجام دهیم، اگر
17
00:00:36,000 –> 00:00:37,559
به یاد داشته باشید قبل از
18
00:00:37,559 –> 00:00:40,079
workpace.bazel برای آوردن یک
19
00:00:40,079 –> 00:00:42,640
سری چیزها به monorepo ما استفاده می شود، بنابراین هر چیزی
20
00:00:42,640 –> 00:00:44,719
که از بیرون نیاز داریم، باید
21
00:00:44,719 –> 00:00:47,280
آن را در workspace.bazel تعریف کنیم تا
22
00:00:47,280 –> 00:00:49,039
این را وارد کنیم. monorepo ما،
23
00:00:49,039 –> 00:00:50,719
بنابراین امروز ما از
24
00:00:50,719 –> 00:00:54,000
چیزی به نام قوانین پایتون
25
00:00:54,000 –> 00:00:57,520
برای کار با بستههای پایتون خود استفاده خواهیم کرد، بنابراین
26
00:00:57,520 –> 00:00:59,760
قوانین پایتون در واقع در حال حاضر به
27
00:00:59,760 –> 00:01:02,239
همراه bazel
28
00:01:02,239 –> 00:01:03,680
um ارسال میشود، اما
29
00:01:03,680 –> 00:01:05,119
در آینده به نظر میرسد که این
30
00:01:05,119 –> 00:01:06,720
مورد مهاجرت خواهد کرد،
31
00:01:06,720 –> 00:01:09,680
بنابراین ما باید بخواهیم از این
32
00:01:09,680 –> 00:01:11,439
فقط در صورتی استفاده کنید که در آینده
33
00:01:11,439 –> 00:01:13,840
دیگر با bazel همراه
34
00:01:13,840 –> 00:01:14,640
نشود، بنابراین
35
00:01:14,640 –> 00:01:16,159
در اینجا میتوانیم دستورالعملهایی را برای
36
00:01:16,159 –> 00:01:18,159
شروع ببینید، اینجا به ما میگوید که این را به
37
00:01:18,159 –> 00:01:19,680
فایل فضای کاری خود اضافه کنیم و
38
00:01:19,680 –> 00:01:21,439
این جدیدترین نسخه را به ما میدهد. قوانین
39
00:01:21,439 –> 00:01:22,960
پایتون،
40
00:01:22,960 –> 00:01:25,040
بنابراین ما میخواهیم آن را بچسبانیم که در
41
00:01:25,040 –> 00:01:27,520
اینجا میتوانید ببینید که
42
00:01:27,520 –> 00:01:29,040
کار با آن خیلی آسان نیست.
43
00:01:29,040 –> 00:01:30,880
44
00:01:30,880 –> 00:01:33,040
45
00:01:33,040 –> 00:01:36,320
46
00:01:36,320 –> 00:01:38,320
47
00:01:38,320 –> 00:01:39,360
48
00:01:39,360 –> 00:01:41,520
پسوند bazel ما میتوانیم آن را در اینجا فعال کنیم و
49
00:01:41,520 –> 00:01:43,200
بلافاصله میبینید که
50
00:01:43,200 –> 00:01:45,920
این کار با فایلهای bazel ما را بسیار آسانتر میکند،
51
00:01:45,920 –> 00:01:48,000
52
00:01:48,000 –> 00:01:48,960
بنابراین
53
00:01:48,960 –> 00:01:51,360
اکنون میتوانیم ببینیم در اینجا از
54
00:01:51,360 –> 00:01:54,000
قانون آرشیو http استفاده میکنیم و در حال بارگذاری در قوانین
55
00:01:54,000 –> 00:01:57,119
پایتون هستیم، بنابراین باید قوانین پایتون را داشته باشیم.
56
00:01:57,119 –> 00:01:59,280
اکنون در monorepo ما،
57
00:01:59,280 –> 00:02:01,439
پس در مرحله بعد بسته جدید خود را تعریف
58
00:02:01,439 –> 00:02:02,399
59
00:02:02,399 –> 00:02:03,759
می کنیم، یک پوشه جدید
60
00:02:03,759 –> 00:02:06,719
به نام ماشین حساب
61
00:02:07,040 –> 00:02:09,199
در داخل این پوشه ایجاد می کنیم،
62
00:02:09,199 –> 00:02:11,400
ابتدا چند فایل ایجاد
63
00:02:11,400 –> 00:02:15,040
می کنیم. دایرکتوری به
64
00:02:15,040 –> 00:02:16,879
عنوان بسته بازل بعدی ما هستیم
65
00:02:16,879 –> 00:02:18,720
کد منبع خود را ایجاد می کنیم که
66
00:02:18,720 –> 00:02:21,360
در ماشین حساب
67
00:02:21,360 –> 00:02:22,720
p y قرار می گیرد
68
00:02:22,720 –> 00:02:24,640
و سپس یک فایل آزمایشی ایجاد می کنیم
69
00:02:24,640 –> 00:02:26,000
که به نام
70
00:02:26,000 –> 00:02:27,840
ماشین حساب
71
00:02:27,840 –> 00:02:30,239
تست نقطه py نامیده می شود،
72
00:02:30,239 –> 00:02:31,040
بنابراین
73
00:02:31,040 –> 00:02:33,680
فکر می کنم این تمام چیزی است که در حال حاضر به آن نیاز
74
00:02:33,680 –> 00:02:36,239
داریم، ما این سه مورد را داریم. بنابراین اولین
75
00:02:36,239 –> 00:02:37,599
کاری که میخواهیم انجام دهیم این است که کد منبع خود را بنویسیم،
76
00:02:37,599 –> 00:02:39,200
کد منبع
77
00:02:39,200 –> 00:02:40,800
بسیار ساده خواهد بود، بنابراین
78
00:02:40,800 –> 00:02:44,239
یک کلاس به نام ماشینحساب ایجاد
79
00:02:44,879 –> 00:02:46,239
میکنیم و در داخل این کلاس
80
00:02:46,239 –> 00:02:47,599
یک متد خواهیم داشت
81
00:02:47,599 –> 00:02:51,480
که به نام
82
00:02:52,400 –> 00:02:55,120
add دو پارامتر x و y را می گیرد و
83
00:02:55,120 –> 00:02:56,319
ممکن است قبلا حدس زده باشید
84
00:02:56,319 –> 00:03:00,159
که به برخی از اینها باز می گردد،
85
00:03:00,640 –> 00:03:02,159
مانند
86
00:03:02,159 –> 00:03:04,879
این که این کلاس ساده
87
00:03:04,879 –> 00:03:06,959
ما در داخل build.bazel است، ما
88
00:03:06,959 –> 00:03:09,599
سعی می کنیم یک کتابخانه از این کلاس بسازیم.
89
00:03:09,599 –> 00:03:12,319
بنابراین اگر به اینجا
90
00:03:12,319 –> 00:03:14,159
به قوانین بازگردیم،
91
00:03:14,159 –> 00:03:15,360
میتوانیم ببینیم
92
00:03:15,360 –> 00:03:16,879
که در واقع
93
00:03:16,879 –> 00:03:20,560
اسناد بهتری در اینجا در بیشتر در build
94
00:03:20,560 –> 00:03:21,760
up bazel وجود دارد
95
00:03:21,760 –> 00:03:24,159
و اینجاست که میتوانیم ببینیم که
96
00:03:24,159 –> 00:03:25,840
چند نمونه
97
00:03:25,840 –> 00:03:28,159
داریم، بنابراین چند قانون در اینجا داریم که py داریم.
98
00:03:28,159 –> 00:03:29,200
باینری
99
00:03:29,200 –> 00:03:33,200
py کتابخانه py تست و زمان اجرا py
100
00:03:33,200 –> 00:03:35,840
e کاملاً توضیحی هستند، بنابراین اول از
101
00:03:35,840 –> 00:03:37,360
همه ما یک کتابخانه
102
00:03:37,360 –> 00:03:40,080
میسازیم، بنابراین از کتابخانه py استفاده میکنیم
103
00:03:40,080 –> 00:03:43,599
و باید نمونهای از استفاده از کتابخانه py وجود داشته باشد،
104
00:03:43,599 –> 00:03:47,480
105
00:03:48,959 –> 00:03:50,720
بنابراین به نظر میرسد که آنها واقعاً
106
00:03:50,720 –> 00:03:52,959
مثالی ارائه نمیکنند. از کتابخانه py
107
00:03:52,959 –> 00:03:55,040
اما بسیار ساده است،
108
00:03:55,040 –> 00:04:00,560
بنابراین تنها کاری که ما باید انجام دهیم این است که از کتابخانه py استفاده
109
00:04:00,560 –> 00:04:02,480
کنیم و باید به این هدف نامی
110
00:04:02,480 –> 00:04:04,640
بدهیم که فقط آن را ماشین حساب می
111
00:04:04,640 –> 00:04:07,439
نامیم، باید فهرستی از منابع را به آن بدهیم
112
00:04:07,439 –> 00:04:08,480
تا
113
00:04:08,480 –> 00:04:10,080
فقط یکی داشته باشیم. فایل منبع در اینجا
114
00:04:10,080 –> 00:04:11,690
نامیده می شود و ماشین حساب
115
00:04:11,690 –> 00:04:14,810
[Music]
116
00:04:14,879 –> 00:04:16,720
dot p y نامیده می شود
117
00:04:16,720 –> 00:04:19,440
و سپس باید مقداری دید را تنظیم
118
00:04:19,440 –> 00:04:21,440
119
00:04:21,440 –> 00:04:23,199
کنیم، بنابراین بیایید در واقع فعلاً این را نظر
120
00:04:23,199 –> 00:04:25,520
دهیم و از حالت پیش فرض استفاده کنیم، اما
121
00:04:25,520 –> 00:04:27,680
در عرض یک دقیقه به آن برمی گردیم تا
122
00:04:27,680 –> 00:04:28,560
123
00:04:28,560 –> 00:04:30,160
بعد ما ما
124
00:04:30,160 –> 00:04:32,720
قصد داریم هدف آزمایشی خود را بنویسیم که
125
00:04:32,720 –> 00:04:34,720
از تست py استفاده می کند
126
00:04:34,720 –> 00:04:36,639
و من حدس می زنم آنها
127
00:04:36,639 –> 00:04:38,639
اسناد بهتری برای این کار دارند، بنابراین آنها
128
00:04:38,639 –> 00:04:40,479
یک مثال واقعی در اینجا دارند
129
00:04:40,479 –> 00:04:43,199
تا بتوانیم ببینیم که تست py یک
130
00:04:43,199 –> 00:04:45,199
فایل منبع می گیرد که واقعی شماست.
131
00:04:45,199 –> 00:04:47,520
فایل تست پایتون و لیستی از وابستگی ها را می گیرد،
132
00:04:47,520 –> 00:04:49,520
133
00:04:49,520 –> 00:04:50,639
پس
134
00:04:50,639 –> 00:04:52,400
بیایید این کار را انجام دهیم
135
00:04:52,400 –> 00:04:54,240
بنابراین ما تست py داریم، ما
136
00:04:54,240 –> 00:04:57,280
فقط این تست ماشین حساب
137
00:04:57,280 –> 00:04:58,400
138
00:04:58,400 –> 00:04:59,919
را صدا می کنیم و یک فایل منبع می گیرد
139
00:04:59,919 –> 00:05:03,440
که قرار است ماشین حساب
140
00:05:03,440 –> 00:05:06,639
test.py باشد و وابستگی ها را می گیرد،
141
00:05:06,639 –> 00:05:08,240
بنابراین در اینجا ما وابستگی های خود را لیست می کنیم.
142
00:05:08,240 –> 00:05:09,680
ما واقعاً
143
00:05:09,680 –> 00:05:10,800
صریح
144
00:05:10,800 –> 00:05:13,440
هستیم و میخواهیم بگوییم که
145
00:05:13,440 –> 00:05:17,120
به ماشینحساب پروژهها
146
00:05:17,280 –> 00:05:18,800
147
00:05:18,800 –> 00:05:20,560
وابسته خواهیم بود و به این
148
00:05:20,560 –> 00:05:24,680
کتابخانه که ماشینحساب نامیده میشود وابسته خواهیم بود،
149
00:05:24,720 –> 00:05:25,440
بنابراین
150
00:05:25,440 –> 00:05:27,919
از آزمایش ما میتوانیم فقط
151
00:05:27,919 –> 00:05:30,479
calculator.py را وارد کنیم.
152
00:05:30,479 –> 00:05:32,400
اما ما سعی خواهیم کرد این
153
00:05:32,400 –> 00:05:34,400
کتابخانه را مصرف کنیم که گویی پروژه دیگری
154
00:05:34,400 –> 00:05:36,160
در monorepo هستیم و از آن استفاده می
155
00:05:36,160 –> 00:05:37,360
کنیم، به همین دلیل است که از این
156
00:05:37,360 –> 00:05:39,199
وابستگی عبور می کنیم و در
157
00:05:39,199 –> 00:05:42,080
واقع از کتابخانه ساخت استفاده می کنیم
158
00:05:42,080 –> 00:05:44,639
بنابراین اکنون در تست ماشین حساب
159
00:05:44,639 –> 00:05:47,039
ما تست واحد را وارد
160
00:05:47,039 –> 00:05:48,960
می کنیم که همراه با پایتون است
161
00:05:48,960 –> 00:05:51,039
و همچنین از
162
00:05:51,039 –> 00:05:52,400
163
00:05:52,400 –> 00:05:55,360
ماشین حساب نقطه پروژه وارد
164
00:05:55,360 –> 00:05:56,639
165
00:05:56,639 –> 00:05:58,319
166
00:05:58,319 –> 00:06:00,800
می کنیم و ماشین حساب را وارد
167
00:06:00,800 –> 00:06:03,039
می کنیم که کلاس ماشین حساب
168
00:06:03,039 –> 00:06:05,199
ما است که در اینجا تعریف کردیم. ما فقط می رویم
169
00:06:05,199 –> 00:06:07,280
میخواهیم یک کلاس آزمایشی ساده بنویسیم، بنابراین
170
00:06:07,280 –> 00:06:10,720
میخواهیم بگوییم
171
00:06:10,720 –> 00:06:14,720
حالت تست نقطهای از مجموع تست کلاس
172
00:06:15,600 –> 00:06:17,199
و در اینجا فقط یک تست را تعریف میکنیم
173
00:06:17,199 –> 00:06:21,479
که تست برخی است
174
00:06:22,240 –> 00:06:24,639
و در اینجا فقط
175
00:06:24,639 –> 00:06:27,440
یک ماشینحساب جدید را نمونهسازی میکنیم
176
00:06:28,319 –> 00:06:30,800
و ما فقط می خواهیم
177
00:06:30,800 –> 00:06:32,840
178
00:06:32,840 –> 00:06:35,919
ثابت کنیم که اگر از ماشین حساب خود برای
179
00:06:35,919 –> 00:06:38,960
جمع کردن یک و دو استفاده
180
00:06:38,960 –> 00:06:41,759
کنیم، در نهایت باید سه را به دست آوریم،
181
00:06:41,759 –> 00:06:44,639
بگذارید فقط آن را ذخیره کرده و اگر نام برابر است این را در پایین بنویسید،
182
00:06:44,639 –> 00:06:46,800
183
00:06:46,800 –> 00:06:48,560
184
00:06:48,560 –> 00:06:49,919
بنابراین به این صورت است که می خواهیم
185
00:06:49,919 –> 00:06:52,560
186
00:06:52,560 –> 00:06:55,840
نقطه اصلی تست واحد آزمایشی خود را اجرا کنید،
187
00:06:56,000 –> 00:06:57,039
188
00:06:57,039 –> 00:06:59,039
بنابراین همه کدهای این
189
00:06:59,039 –> 00:07:02,000
کتابخانه است، اکنون ما کد کتابخانه واقعی
190
00:07:02,000 –> 00:07:04,240
را در اینجا داریم، کلاس آزمایشی خود
191
00:07:04,240 –> 00:07:05,199
192
00:07:05,199 –> 00:07:07,440
را داریم و دو هدف خود را داریم،
193
00:07:07,440 –> 00:07:09,680
بنابراین بیایید اکنون این را اجرا کنیم و ببینیم آیا
194
00:07:09,680 –> 00:07:13,440
کار می کند یا خیر. دوباره تست bazel را اجرا می
195
00:07:13,440 –> 00:07:15,280
کنیم و ما در حال آزمایش داخل ماشین حساب پروژه ها هستیم
196
00:07:15,280 –> 00:07:17,440
و بیایید فقط همه
197
00:07:17,440 –> 00:07:19,039
آزمایش ها را در آنجا اجرا کنیم حتی اگر فقط یک
198
00:07:19,039 –> 00:07:21,039
هدف است
199
00:07:21,039 –> 00:07:23,280
و ببینیم آیا این کار می کند یا
200
00:07:23,280 –> 00:07:25,120
نه، بنابراین این اولین بار است که
201
00:07:25,120 –> 00:07:27,440
من یک دستور bezel را از آن زمان اجرا می کنم.
202
00:07:27,440 –> 00:07:29,840
من چیزهایی را به فضای کاری اضافه
203
00:07:29,840 –> 00:07:32,880
کردم تا dow شود بارگذاری برخی چیزها،
204
00:07:32,880 –> 00:07:34,319
205
00:07:34,319 –> 00:07:35,680
و
206
00:07:35,680 –> 00:07:37,280
این دفعه بعد که این را اجرا می
207
00:07:37,280 –> 00:07:38,479
کنیم به هیچ وجه طول
208
00:07:38,479 –> 00:07:40,240
نمی کشد زیرا آزمایش را نیز در حافظه پنهان نگه می دارد
209
00:07:40,240 –> 00:07:41,280
،
210
00:07:41,280 –> 00:07:43,360
بنابراین ما می توانیم در اینجا ببینیم که 0.4 ثانیه سپری شده است،
211
00:07:43,360 –> 00:07:45,039
212
00:07:45,039 –> 00:07:46,960
می توانیم دوباره آن را اجرا کنیم و می توانیم ببینیم که در
213
00:07:46,960 –> 00:07:48,800
واقع این کار انجام شده است.
214
00:07:48,800 –> 00:07:51,360
اگر ما تغییری در این فایل ایجاد
215
00:07:51,360 –> 00:07:53,360
کنیم، بنابراین ما تغییر زیادی نمی دهیم،
216
00:07:53,360 –> 00:07:55,440
فقط یک خط جدید اضافه می
217
00:07:55,440 –> 00:07:57,680
کنیم و آزمایش خود را اجرا می کنیم، آن را دوباره اجرا می کنیم
218
00:07:57,680 –> 00:07:59,919
نه از حافظه پنهان
219
00:07:59,919 –> 00:08:02,479
و اجازه دهید آن را درست کنیم. نشان نمی دهد که
220
00:08:02,479 –> 00:08:04,800
این تست واقعا کار می کند، بنابراین می توانیم
221
00:08:04,800 –> 00:08:07,520
ببینیم که اکنون این شکست را دریافت می کنیم، می
222
00:08:07,520 –> 00:08:11,319
توانیم به گزارش اینجا نگاه کنیم
223
00:08:12,080 –> 00:08:13,840
و می توانیم ببینیم که خطای ادعای
224
00:08:13,840 –> 00:08:16,000
سه برابر با چهار
225
00:08:16,000 –> 00:08:17,039
خوب
226
00:08:17,039 –> 00:08:18,560
نیست، بنابراین بیایید این را به سه برگردانیم
227
00:08:18,560 –> 00:08:21,520
تا آزمایش خود را انجام دهیم. عبور دهید
228
00:08:21,520 –> 00:08:23,520
و آن را اجرا کنید و ما میتوانیم هر
229
00:08:23,520 –> 00:08:24,800
بار که آن را اجرا میکنیم، دوباره ببینیم که
230
00:08:24,800 –> 00:08:28,000
اکنون از حافظه پنهان میآید، بنابراین حالا
231
00:08:28,000 –> 00:08:30,319
بیایید پروژه دوم خود را شروع کنیم، بیایید یک پوشه جدید ایجاد
232
00:08:30,319 –> 00:08:33,200
کنیم و فقط آن را
233
00:08:33,200 –> 00:08:35,679
برنامه پایتون من بنامیم،
234
00:08:35,679 –> 00:08:38,599
بنابراین دوباره به اینجا میرویم. برای داشتن
235
00:08:38,599 –> 00:08:41,200
فایل build.basil
236
00:08:41,200 –> 00:08:43,279
ما به h فایل main.py خود را
237
00:08:43,279 –> 00:08:45,680
بردارید
238
00:08:45,680 –> 00:08:47,920
و حدس میزنم که ما هیچ
239
00:08:47,920 –> 00:08:50,320
هدف آزمایشی برای این
240
00:08:50,320 –> 00:08:53,360
مورد نمینویسیم، بنابراین بیایید به سرعت main.py خود را بنویسیم
241
00:08:53,360 –> 00:08:55,120
و زیاد نگران
242
00:08:55,120 –> 00:08:57,680
آنچه در اینجا میافتد نباشیم،
243
00:09:02,800 –> 00:09:05,519
بنابراین این برنامه ساده فلاسک
244
00:09:05,519 –> 00:09:07,519
ما است. از فلاسک
245
00:09:07,519 –> 00:09:08,800
استفاده می کنیم و از کتابخانه ای که نوشتیم استفاده می
246
00:09:08,800 –> 00:09:09,839
247
00:09:09,839 –> 00:09:11,920
کنیم تا همه اینها را جمع آوری کنیم و وارد کنیم،
248
00:09:11,920 –> 00:09:13,200
249
00:09:13,200 –> 00:09:14,959
بنابراین
250
00:09:14,959 –> 00:09:16,959
اکنون متوجه شدیم که در
251
00:09:16,959 –> 00:09:18,480
اینجا به یک وابستگی نیاز داریم، اما بیایید
252
00:09:18,480 –> 00:09:20,959
سعی کنیم خود را اجرا کنیم. اول از همه برنامه،
253
00:09:20,959 –> 00:09:23,760
بنابراین قبل از اینکه از کتابخانه py و
254
00:09:23,760 –> 00:09:25,200
تست py استفاده
255
00:09:25,200 –> 00:09:28,000
کنیم، در اینجا از py باینری استفاده می
256
00:09:28,000 –> 00:09:28,959
کنیم، زیرا در واقع این را
257
00:09:28,959 –> 00:09:30,240
اجرا خواهیم کرد،
258
00:09:30,240 –> 00:09:31,839
بنابراین
259
00:09:31,839 –> 00:09:33,680
این همان چیزی است که ما از باینری py استفاده
260
00:09:33,680 –> 00:09:36,320
261
00:09:36,320 –> 00:09:37,200
262
00:09:37,200 –> 00:09:39,360
خواهیم کرد. فقط میخواهیم آن را main بنامیم و
263
00:09:39,360 –> 00:09:40,880
در واقع از منبع
264
00:09:40,880 –> 00:09:42,880
main.py اس