From 65d45ba6e9d9a5fd5f2b5c61bfedeff8389351be Mon Sep 17 00:00:00 2001 From: bendeez <127566471+bendeez@users.noreply.github.com> Date: Fri, 21 Jun 2024 10:45:24 -0500 Subject: [PATCH 1/6] Delete .idea directory --- .idea/.gitignore | 3 - .idea/dbnavigator.xml | 405 ------------------ .../inspectionProfiles/profiles_settings.xml | 6 - .idea/misc.xml | 4 - .idea/modules.xml | 8 - .idea/pythonProject110.iml | 10 - .idea/vcs.xml | 6 - 7 files changed, 442 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/dbnavigator.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/pythonProject110.iml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml deleted file mode 100644 index 6bde2c3..0000000 --- a/.idea/dbnavigator.xml +++ /dev/null @@ -1,405 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index d95df49..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 1f6e0d4..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/pythonProject110.iml b/.idea/pythonProject110.iml deleted file mode 100644 index 74d515a..0000000 --- a/.idea/pythonProject110.iml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 66b29362ceaf1c5ae07ce52b1afc994d088a5c13 Mon Sep 17 00:00:00 2001 From: bendeez <127566471+bendeez@users.noreply.github.com> Date: Fri, 21 Jun 2024 10:45:29 -0500 Subject: [PATCH 2/6] Delete __pycache__ directory --- __pycache__/connection.cpython-311.pyc | Bin 4183 -> 0 bytes __pycache__/event_loop.cpython-311.pyc | Bin 5682 -> 0 bytes __pycache__/future.cpython-311.pyc | Bin 1056 -> 0 bytes __pycache__/task.cpython-311.pyc | Bin 4962 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __pycache__/connection.cpython-311.pyc delete mode 100644 __pycache__/event_loop.cpython-311.pyc delete mode 100644 __pycache__/future.cpython-311.pyc delete mode 100644 __pycache__/task.cpython-311.pyc diff --git a/__pycache__/connection.cpython-311.pyc b/__pycache__/connection.cpython-311.pyc deleted file mode 100644 index 65945516b30ea528364957f7da89b56b193670cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4183 zcmb_f-A^0Y6~E&do3UrSHkhv%);I-`OhU-QCM2Znt_Tp8(j`%$522Apj%Nra#`fMB zLqLv1+pT0(JnX|tL~T~GswkyOD)pgn?Za+2e}HX`WNRd(mHN`Wxup+Lo_g+#eLW6Y z^+UZgK6B2w_niANzjNmJw|>75LHqeHvum3?LVqPfqj7cScnX*Uq#%V!qE-9JtTG_G zlCDj5m1U3%%_D{V3@O}G7edeAXSY>OVV05Peo4e7i81*sPG(|QQ{(j!)`O`F$0NWT zAQchst1gB446U+?3n)jtueucus7G-FZBsnpxy|&=q*Ez1t|!u|IGq>V5T1qK@w(+x zVRA?Y&Tcs(HD-k!fkbUBiC9|Ak{Tyrk94>6d72We$F+1!WLTHyZgy==#U=|oHrchT zZgT5s4QM8&uLDhE-Soth2{ollE|b&LN!n^vPMjXfXlBRcWjT>b=(4;UYM$0;L)k`Vy#izpRl85+ zxqYD;>V^kj4fR-$&R%$UtF4djFd3PL3lj%%dYT}R^RmwVFQ7eu(=CAFWP1v#XH?A~ zot`>E8`Pgp-wbFe-=d{}9QZ+WBn?wI?QHNL3}bW*fI-(Tx$9=dX_0@>J!MzFI1 zv0}I9uGTpLN#reB4aQNvV8vOZr}0$Sr?Agwbgv9bowl$^?fw@ZEjEt5HfBZeMw&YS zo}ST~>&^8j2vE%}z5Elb5#l!hh}=@KOrV^KZK^jU(G1*Ebs11DE20qEopYgu^Q7=uv?2|le!F`)zt^ODQx3d zMz)<`vVQyyu@N*?zncWtiPSyQS4X(4K9E=(ApMMHw$)u|1QF3_6bDI17Xg1FmQ3ub zWR7~a*p1Fme)O#)h_Uu(AP^Y5SmFE2e1D0L7<{D2M~=jf{ZGCeemwg7VdLCXN&LVN zKgcsxA+SIBh%F0!MWOGg`;^iBUa5QB=pN6{SHq_(;S1&Pg~Qlaoi9!m!xu{7MI*eJ zpWR=qioyNGia1yn2Mcp0@th%^D_Zxr;lA(ghehoR6+TktBL(h>_wds5$>PA}5_Ic*e|f_~vTMMp!V zP~4?N=SXJ{=$rYLtw%7ga4?4IEo&+{d%&8;x8kl_dle6ip|MR6-ZHL@j^p1PXGMc| zX_wpH-X48PmT#ih%tc7;x}JG?i^y)mYB&VE#A9+!R$4dtM#z{xO^;z++fL}~Ho8S( z=h5Qp>ZWRihvc#m?Xy0W3JI?IXTbtA?gE3|umiqtL|{MkYrg@qhmN}5eWW~IFLj+U zy3XW%RiVoeA{9X@3)10mNfpI-SwTIYMf!=T?zSCu8-~tg7j|Jq}DdJI;fR_A4NJsOIu`+w1vmpezm)qnic& z$qqc={%YmLZJPsHiR$I3UW#rR(XEoWZHU`NaT_cv;=5%LP+gcQiDwP*Y_V~_Itp~` z=W2-Ywl@hFnF)XTp>yV@{-HbP{*Ic* z;pe|z6I5N#Xx(N76|J7&Bx%c`)-!^U=mFE*e~#OQ(jo3@el_YL*FjyN4O(S6Lrd>& zj&SN}$hnph2+mm&>uASnd^cO8o|k8aFRH;DkD*QaI>`UVAN2H0;pyo5#=pi2@@{s56`RhCVkEJGH|CJ8Uf@~7EY((b|S za9}t}2>HC?%Y=LctpdTWGOVS+2{@MfnxC>a`yrl#4)X2P qegXt?9>Y|Tf6uzA$hT)*Rdl-8de^uq29|Y_{GI6j`IZiAz5fCnjd%wD diff --git a/__pycache__/event_loop.cpython-311.pyc b/__pycache__/event_loop.cpython-311.pyc deleted file mode 100644 index 67ea484850339eb8d934bedc1c6fc2b504a2b7e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5682 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 diff --git a/__pycache__/future.cpython-311.pyc b/__pycache__/future.cpython-311.pyc deleted file mode 100644 index b6d167225251642ead2a0b4677a7dfc715458c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmZuvJ8u&~5T3nhPYi6FJVD zg@b3^I8%(`sU?CiLn}_|_;~Z}cIX^0x)HY`hDyzDOa17(6)uD4bH(puCUw(Xl zW9anTrFI{v--9{j~YlbfU@ab>;HX3vb5|eIoDR b0+mudLP%`JSdu9)40|1Zlkd-e7Ifgheum$y diff --git a/__pycache__/task.cpython-311.pyc b/__pycache__/task.cpython-311.pyc deleted file mode 100644 index 7d029e14f94c7d15327cf8a59bafd786b4061ed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4962 zcmbVQO>7&-6`tMYl1p+aQZg-3j3ddWeoXz)`teUh97%Dis)L(8z|6sA&SRg^loFsY;!L4?XzMOM2{yD=Z*l3jqdtX>Kgk0zxkBn_2FP zOG$3p;q2S_dv9jmy!Yl?{@&;FAV`1xZEh+ArN7~dnb>M!`z#bzkbnd#jb^Dyio#_& zP0uou425X)JtQz6BEcb2YYak9;W5&rLtrnXsPh|KjZ(Vv?VOU6L@0U2vYCvSR8rYY zvO1W&OxEplQ2hud711OmphqwD+&45MA8(A<R zX3dvEP;;1l)3|186p@=V#s^d&VBb?K~}n-e9Si^o%$loF5Yj&wFVr#q5aDXV*? za!Onh0PUB+A1n{t^c7%Sftg*fzsdgZ7?cgSLTO7g-45)VXo$K%O#LYCuk8Lz0L zqvQU!<6~#9{a6+ynb2$R-Amp~NVD%r*%>$(`P$q)ZDpHw@2zw9?e*1UbN2Jl#SncMxef;?W}j%X;FX&xnKZ-L zTw3V3A$FuPa!L?ke3r<-JQm9p2)OQ4CT__8=HHNP9)<1oH}Gs917dnq9$oh=P$+VTFC`IhRh!N-{e;cYeN$#06vCIN3++ zTsoUfq~-HaFo(4Pn|vI|-{E&3m4d@YE{+sNmap#qtPbfA44#Pcx+f*W#+5`SDN5Mx zbZ262PRs}r-VzCadP71G;=3x60$hH!?K2}tJr{;$?hp)37Xjy6aw4tD=fle*ZSt5C> z@s+~(YFKUT*BbjPh=yU!;m=Z=&9RN<*t+suDK*E`=5eige3>x?$Z8;>1tO(DWM|8J zcv&o5{4BNVP`zE6x2u8}_o*#Dpz&>+eAfowRTS4RK1r$kpvDiDNZ#_b6xhOzNAA^L z)itww)2hE$^Y_AZzL9dI@5!6X?n0Lu=-4T9{3rg0{(@WOj%nPnl9`Dy z?ePbK5`F~gUx9mj2F}7r(id*zwzU+kd%_%p-vY8n8So^)3N=Up%~&|0Xx$gJ67rN? z0>&DO6>|{Ujo`PDbaeloq7^k?E*ayGrCSlCU=y#VP9$}~t%{0nv!(W(r+4FD{W`D0 z?ic6}Xe`wz-J$NFyUbN|2cTRvenhr%>CMgGkn}HJ>ffLWDKf2VwYg*v7(tdddQiTC7{62&i zj#n?^5c^;>I(iCyeUifTl;>h6^YxqIi|x#x+gT{va5B~qezyMr#O?w6+xtG&3br$2 z;j27_Z%C!a9&5eIZb1Tdi|_$LL;L&28pzs3>iBB}TN;3VdP2giQPwb^0Vqp8AUcy4 zGtw~bs<8#>C^Xou!JnHG;2Ma}N!e)#-tv5q*hO9I3Cwo|2v`Wm16JMSx;MD)qO5X# z8rN6i`pWHH7}6FPl{>QKZCF$^f4A!G(Y!tDLmS@ylDEIi2R?b{;X4oBU3zzs{3;CM z2cW}@9!q##i-=4_(zmEn>v|TCq zAV%QXz5v94SOBnE7bu&eUviiLWhqcm7%znYuqZ7Z0a*mFKpCr58U$j)V(xR(Vn)0> zC!L=kHUiv%v9bo3nLKB(xPBm2T-G#NY8riZ`17*`arJ%mP``Gl9~$a1F<(GScyaLc z3K&mk66rKqr-VU`5!SI+O2>dy9a49aP%V=nZSzS9d)s{be_8%17$k23flp3=D^rgJ z)f>^gkqYvdsGrxeaaOvTt!rLkz(fCNo%tWom!F%xE1DV9E2!9WF z;_=z6kW1q-ACLb$mq;5uOv3B*k<(9*vbxiN-v(Ou?4o-E_v2Ag2owCBV0@Ku=L|iamo7pZ-l%*X2wasERYt8P ddoH7+C3~(o-k@NKd&%PIf8f@C?$br4{|_!*83_OY From 03b9f8f7cd511bd6c463f3978f0b270ec1655f74 Mon Sep 17 00:00:00 2001 From: bendeez <127566471+bendeez@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:03:22 -0500 Subject: [PATCH 3/6] Create README.md --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..e45a34d --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +A custom made event loop with async and await syntax +background tasks, and helper functions. + +The selectors module makes this all possible. + +https://docs.python.org/3/library/selectors.html + +![Screenshot 2024-06-21 125920](https://github.com/bendeez/async_event_loop/assets/127566471/378260f9-9145-49ff-b910-366f1204171f) + +```python +from event_loop import EventLoop +from connection import Connection + + + +loop = EventLoop(max_connections=15) + +async def scrape_other_website(): + results = await loop.gather(Connection("https://www.google.com/")) + return results + +async def scrape_website(url): + first_result = await scrape_other_website() + print(first_result) + second_result = await loop.gather(*[Connection(url) for _ in range(10)]) + return second_result + +async def main(loop): + url = "https://github.com/" + task_1 = loop.create_task(scrape_website(url)) + result = await loop.gather(task_1) + print(result) + +loop.run(main(loop)) + From 69eebe692dce99a54711f21270a10305e85a0b18 Mon Sep 17 00:00:00 2001 From: bendeez <127566471+bendeez@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:04:33 -0500 Subject: [PATCH 4/6] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e45a34d..0b1c895 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -A custom made event loop with async and await syntax -background tasks, and helper functions. +A custom made event loop with async and await syntax, +background tasks, and custom functions. The selectors module makes this all possible. From 7a31393dc1b7416539b818dc35c26fa7e588c538 Mon Sep 17 00:00:00 2001 From: bendeez <127566471+bendeez@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:06:30 -0500 Subject: [PATCH 5/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b1c895..42c32b5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ A custom made event loop with async and await syntax, -background tasks, and custom functions. +background tasks, and custom functions, along with concurrent synchronization. The selectors module makes this all possible. From 25b30670f667ff2343be9916c9b87c4d1ed9ee66 Mon Sep 17 00:00:00 2001 From: Chimennadi Date: Sat, 22 Jun 2024 07:24:51 +0100 Subject: [PATCH 6/6] omitted a variable from connection.py --- connection.py | 3 +-- event_loop.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/connection.py b/connection.py index eea5640..f1cc343 100644 --- a/connection.py +++ b/connection.py @@ -17,8 +17,7 @@ def initialize_connection(self): self.get_url_details() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if self.port == 443: - context = ssl.create_default_context() - self.client = context.wrap_socket(s, server_hostname=self.host) + self.client = ssl.create_default_context().wrap_socket(s, server_hostname=self.host) self.client.setblocking(False) else: self.client = s diff --git a/event_loop.py b/event_loop.py index 853a41c..8819216 100644 --- a/event_loop.py +++ b/event_loop.py @@ -82,8 +82,7 @@ def add_connection(self, connection, fut=None,in_gather=False): connection.initialize_connection() if len(self.select_connections) < self.max_connections: self.select_connections.append(connection) - self.select.register(connection.client, selectors.EVENT_READ | selectors.EVENT_WRITE, - data=connection) + self.select.register(connection.client, selectors.EVENT_READ | selectors.EVENT_WRITE, data=connection) else: # limits the amount of concurrent connections self.connection_queue.put(connection)