winloop 0.1.5__tar.gz → 0.1.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. winloop-0.1.7/.flake8 +8 -0
  2. winloop-0.1.7/MANIFEST.in +9 -0
  3. winloop-0.1.7/Makefile +55 -0
  4. {winloop-0.1.5/winloop.egg-info → winloop-0.1.7}/PKG-INFO +9 -7
  5. {winloop-0.1.5 → winloop-0.1.7}/README.md +3 -3
  6. winloop-0.1.7/examples/bench/echoclient.py +100 -0
  7. winloop-0.1.7/examples/bench/echoserver.py +212 -0
  8. winloop-0.1.7/examples/bench/rlserver.py +93 -0
  9. winloop-0.1.7/mypy.ini +6 -0
  10. {winloop-0.1.5 → winloop-0.1.7}/pyproject.toml +7 -5
  11. {winloop-0.1.5 → winloop-0.1.7}/setup.py +12 -3
  12. winloop-0.1.7/tests/__main__.py +16 -0
  13. winloop-0.1.7/tests/certs/ssl_cert.pem +34 -0
  14. winloop-0.1.7/tests/certs/ssl_key.pem +40 -0
  15. {winloop-0.1.5 → winloop-0.1.7}/tests/test_aiodns.py +8 -3
  16. {winloop-0.1.5 → winloop-0.1.7}/tests/test_aiohttp.py +5 -1
  17. {winloop-0.1.5 → winloop-0.1.7}/tests/test_aiomultiprocess.py +7 -7
  18. {winloop-0.1.5 → winloop-0.1.7}/tests/test_base.py +8 -1
  19. {winloop-0.1.5 → winloop-0.1.7}/tests/test_dns.py +14 -2
  20. winloop-0.1.7/tests/test_playwright.py +38 -0
  21. {winloop-0.1.5 → winloop-0.1.7}/tests/test_process.py +2 -0
  22. {winloop-0.1.5 → winloop-0.1.7}/tests/test_tcp.py +19 -13
  23. {winloop-0.1.5 → winloop-0.1.7}/tests/test_unix.py +24 -16
  24. winloop-0.1.7/vendor/libuv/.git +1 -0
  25. winloop-0.1.7/vendor/libuv/.gitattributes +1 -0
  26. winloop-0.1.7/vendor/libuv/.github/ISSUE_TEMPLATE.md +13 -0
  27. winloop-0.1.7/vendor/libuv/.github/dependabot.yml +7 -0
  28. winloop-0.1.7/vendor/libuv/.github/workflows/CI-docs.yml +25 -0
  29. winloop-0.1.7/vendor/libuv/.github/workflows/CI-sample.yml +33 -0
  30. winloop-0.1.7/vendor/libuv/.github/workflows/CI-unix.yml +153 -0
  31. winloop-0.1.7/vendor/libuv/.github/workflows/CI-win.yml +130 -0
  32. winloop-0.1.7/vendor/libuv/.github/workflows/sanitizer.yml +128 -0
  33. winloop-0.1.7/vendor/libuv/.gitignore +80 -0
  34. winloop-0.1.7/vendor/libuv/.mailmap +67 -0
  35. winloop-0.1.7/vendor/libuv/.readthedocs.yaml +15 -0
  36. winloop-0.1.7/vendor/libuv/AUTHORS +569 -0
  37. winloop-0.1.7/vendor/libuv/CMakeLists.txt +808 -0
  38. winloop-0.1.7/vendor/libuv/CONTRIBUTING.md +171 -0
  39. winloop-0.1.7/vendor/libuv/ChangeLog +6100 -0
  40. winloop-0.1.7/vendor/libuv/LICENSE +19 -0
  41. winloop-0.1.7/vendor/libuv/LICENSE-docs +396 -0
  42. winloop-0.1.7/vendor/libuv/LICENSE-extra +36 -0
  43. winloop-0.1.7/vendor/libuv/LINKS.md +109 -0
  44. winloop-0.1.7/vendor/libuv/MAINTAINERS.md +56 -0
  45. winloop-0.1.7/vendor/libuv/Makefile.am +560 -0
  46. winloop-0.1.7/vendor/libuv/README.md +357 -0
  47. winloop-0.1.7/vendor/libuv/SECURITY.md +27 -0
  48. winloop-0.1.7/vendor/libuv/SUPPORTED_PLATFORMS.md +68 -0
  49. winloop-0.1.7/vendor/libuv/autogen.sh +75 -0
  50. winloop-0.1.7/vendor/libuv/cmake-toolchains/cross-mingw32.cmake +17 -0
  51. winloop-0.1.7/vendor/libuv/configure.ac +92 -0
  52. winloop-0.1.7/vendor/libuv/include/uv/aix.h +32 -0
  53. winloop-0.1.7/vendor/libuv/include/uv/bsd.h +34 -0
  54. winloop-0.1.7/vendor/libuv/include/uv/darwin.h +61 -0
  55. winloop-0.1.7/vendor/libuv/include/uv/errno.h +477 -0
  56. winloop-0.1.7/vendor/libuv/include/uv/linux.h +34 -0
  57. winloop-0.1.7/vendor/libuv/include/uv/os390.h +33 -0
  58. winloop-0.1.7/vendor/libuv/include/uv/posix.h +31 -0
  59. winloop-0.1.7/vendor/libuv/include/uv/sunos.h +44 -0
  60. winloop-0.1.7/vendor/libuv/include/uv/threadpool.h +37 -0
  61. winloop-0.1.7/vendor/libuv/include/uv/tree.h +768 -0
  62. winloop-0.1.7/vendor/libuv/include/uv/unix.h +509 -0
  63. winloop-0.1.7/vendor/libuv/include/uv/version.h +43 -0
  64. winloop-0.1.7/vendor/libuv/include/uv/win.h +703 -0
  65. winloop-0.1.7/vendor/libuv/include/uv.h +1968 -0
  66. winloop-0.1.7/vendor/libuv/libuv-static.pc.in +12 -0
  67. winloop-0.1.7/vendor/libuv/libuv.pc.in +13 -0
  68. winloop-0.1.7/vendor/libuv/m4/.gitignore +5 -0
  69. winloop-0.1.7/vendor/libuv/m4/as_case.m4 +21 -0
  70. winloop-0.1.7/vendor/libuv/m4/ax_pthread.m4 +485 -0
  71. winloop-0.1.7/vendor/libuv/m4/libuv-check-flags.m4 +336 -0
  72. winloop-0.1.7/vendor/libuv/m4/libuv-check-versions.m4 +7 -0
  73. winloop-0.1.7/vendor/libuv/src/fs-poll.c +287 -0
  74. winloop-0.1.7/vendor/libuv/src/heap-inl.h +245 -0
  75. winloop-0.1.7/vendor/libuv/src/idna.c +560 -0
  76. winloop-0.1.7/vendor/libuv/src/idna.h +31 -0
  77. winloop-0.1.7/vendor/libuv/src/inet.c +298 -0
  78. winloop-0.1.7/vendor/libuv/src/queue.h +90 -0
  79. winloop-0.1.7/vendor/libuv/src/random.c +123 -0
  80. winloop-0.1.7/vendor/libuv/src/strscpy.c +38 -0
  81. winloop-0.1.7/vendor/libuv/src/strscpy.h +39 -0
  82. winloop-0.1.7/vendor/libuv/src/strtok.c +52 -0
  83. winloop-0.1.7/vendor/libuv/src/strtok.h +27 -0
  84. winloop-0.1.7/vendor/libuv/src/thread-common.c +175 -0
  85. winloop-0.1.7/vendor/libuv/src/threadpool.c +418 -0
  86. winloop-0.1.7/vendor/libuv/src/timer.c +200 -0
  87. winloop-0.1.7/vendor/libuv/src/unix/aix-common.c +89 -0
  88. winloop-0.1.7/vendor/libuv/src/unix/aix.c +1320 -0
  89. winloop-0.1.7/vendor/libuv/src/unix/async.c +329 -0
  90. winloop-0.1.7/vendor/libuv/src/unix/bsd-ifaddrs.c +163 -0
  91. winloop-0.1.7/vendor/libuv/src/unix/bsd-proctitle.c +99 -0
  92. winloop-0.1.7/vendor/libuv/src/unix/core.c +1960 -0
  93. winloop-0.1.7/vendor/libuv/src/unix/cygwin.c +93 -0
  94. winloop-0.1.7/vendor/libuv/src/unix/darwin-proctitle.c +192 -0
  95. winloop-0.1.7/vendor/libuv/src/unix/darwin-stub.h +97 -0
  96. winloop-0.1.7/vendor/libuv/src/unix/darwin.c +237 -0
  97. winloop-0.1.7/vendor/libuv/src/unix/dl.c +80 -0
  98. winloop-0.1.7/vendor/libuv/src/unix/freebsd.c +285 -0
  99. winloop-0.1.7/vendor/libuv/src/unix/fs.c +2307 -0
  100. winloop-0.1.7/vendor/libuv/src/unix/fsevents.c +910 -0
  101. winloop-0.1.7/vendor/libuv/src/unix/getaddrinfo.c +252 -0
  102. winloop-0.1.7/vendor/libuv/src/unix/getnameinfo.c +121 -0
  103. winloop-0.1.7/vendor/libuv/src/unix/haiku.c +172 -0
  104. winloop-0.1.7/vendor/libuv/src/unix/hurd.c +172 -0
  105. winloop-0.1.7/vendor/libuv/src/unix/ibmi.c +542 -0
  106. winloop-0.1.7/vendor/libuv/src/unix/internal.h +498 -0
  107. winloop-0.1.7/vendor/libuv/src/unix/kqueue.c +624 -0
  108. winloop-0.1.7/vendor/libuv/src/unix/linux.c +2679 -0
  109. winloop-0.1.7/vendor/libuv/src/unix/loop-watcher.c +68 -0
  110. winloop-0.1.7/vendor/libuv/src/unix/loop.c +228 -0
  111. winloop-0.1.7/vendor/libuv/src/unix/netbsd.c +264 -0
  112. winloop-0.1.7/vendor/libuv/src/unix/no-fsevents.c +42 -0
  113. winloop-0.1.7/vendor/libuv/src/unix/no-proctitle.c +45 -0
  114. winloop-0.1.7/vendor/libuv/src/unix/openbsd.c +245 -0
  115. winloop-0.1.7/vendor/libuv/src/unix/os390-proctitle.c +136 -0
  116. winloop-0.1.7/vendor/libuv/src/unix/os390-syscalls.c +536 -0
  117. winloop-0.1.7/vendor/libuv/src/unix/os390-syscalls.h +75 -0
  118. winloop-0.1.7/vendor/libuv/src/unix/os390.c +1070 -0
  119. winloop-0.1.7/vendor/libuv/src/unix/pipe.c +542 -0
  120. winloop-0.1.7/vendor/libuv/src/unix/poll.c +160 -0
  121. winloop-0.1.7/vendor/libuv/src/unix/posix-hrtime.c +36 -0
  122. winloop-0.1.7/vendor/libuv/src/unix/posix-poll.c +385 -0
  123. winloop-0.1.7/vendor/libuv/src/unix/process.c +1110 -0
  124. winloop-0.1.7/vendor/libuv/src/unix/procfs-exepath.c +45 -0
  125. winloop-0.1.7/vendor/libuv/src/unix/proctitle.c +157 -0
  126. winloop-0.1.7/vendor/libuv/src/unix/qnx.c +142 -0
  127. winloop-0.1.7/vendor/libuv/src/unix/random-devurandom.c +93 -0
  128. winloop-0.1.7/vendor/libuv/src/unix/random-getentropy.c +57 -0
  129. winloop-0.1.7/vendor/libuv/src/unix/random-getrandom.c +86 -0
  130. winloop-0.1.7/vendor/libuv/src/unix/random-sysctl-linux.c +99 -0
  131. winloop-0.1.7/vendor/libuv/src/unix/signal.c +575 -0
  132. winloop-0.1.7/vendor/libuv/src/unix/stream.c +1566 -0
  133. winloop-0.1.7/vendor/libuv/src/unix/sunos.c +907 -0
  134. winloop-0.1.7/vendor/libuv/src/unix/sysinfo-loadavg.c +36 -0
  135. winloop-0.1.7/vendor/libuv/src/unix/sysinfo-memory.c +42 -0
  136. winloop-0.1.7/vendor/libuv/src/unix/tcp.c +673 -0
  137. winloop-0.1.7/vendor/libuv/src/unix/thread.c +877 -0
  138. winloop-0.1.7/vendor/libuv/src/unix/tty.c +472 -0
  139. winloop-0.1.7/vendor/libuv/src/unix/udp.c +1390 -0
  140. winloop-0.1.7/vendor/libuv/src/uv-common.c +1029 -0
  141. winloop-0.1.7/vendor/libuv/src/uv-common.h +433 -0
  142. winloop-0.1.7/vendor/libuv/src/uv-data-getter-setters.c +119 -0
  143. winloop-0.1.7/vendor/libuv/src/version.c +45 -0
  144. winloop-0.1.7/vendor/libuv/src/win/async.c +98 -0
  145. winloop-0.1.7/vendor/libuv/src/win/atomicops-inl.h +61 -0
  146. winloop-0.1.7/vendor/libuv/src/win/core.c +777 -0
  147. winloop-0.1.7/vendor/libuv/src/win/detect-wakeup.c +56 -0
  148. winloop-0.1.7/vendor/libuv/src/win/dl.c +135 -0
  149. winloop-0.1.7/vendor/libuv/src/win/error.c +174 -0
  150. winloop-0.1.7/vendor/libuv/src/win/fs-event.c +598 -0
  151. winloop-0.1.7/vendor/libuv/src/win/fs-fd-hash-inl.h +200 -0
  152. winloop-0.1.7/vendor/libuv/src/win/fs.c +3426 -0
  153. winloop-0.1.7/vendor/libuv/src/win/getaddrinfo.c +383 -0
  154. winloop-0.1.7/vendor/libuv/src/win/getnameinfo.c +146 -0
  155. winloop-0.1.7/vendor/libuv/src/win/handle-inl.h +180 -0
  156. winloop-0.1.7/vendor/libuv/src/win/handle.c +162 -0
  157. winloop-0.1.7/vendor/libuv/src/win/internal.h +333 -0
  158. winloop-0.1.7/vendor/libuv/src/win/loop-watcher.c +122 -0
  159. winloop-0.1.7/vendor/libuv/src/win/pipe.c +2673 -0
  160. winloop-0.1.7/vendor/libuv/src/win/poll.c +586 -0
  161. winloop-0.1.7/vendor/libuv/src/win/process-stdio.c +416 -0
  162. winloop-0.1.7/vendor/libuv/src/win/process.c +1397 -0
  163. winloop-0.1.7/vendor/libuv/src/win/req-inl.h +214 -0
  164. winloop-0.1.7/vendor/libuv/src/win/signal.c +282 -0
  165. winloop-0.1.7/vendor/libuv/src/win/snprintf.c +42 -0
  166. winloop-0.1.7/vendor/libuv/src/win/stream-inl.h +54 -0
  167. winloop-0.1.7/vendor/libuv/src/win/stream.c +252 -0
  168. winloop-0.1.7/vendor/libuv/src/win/tcp.c +1674 -0
  169. winloop-0.1.7/vendor/libuv/src/win/thread.c +470 -0
  170. winloop-0.1.7/vendor/libuv/src/win/tty.c +2422 -0
  171. winloop-0.1.7/vendor/libuv/src/win/udp.c +1143 -0
  172. winloop-0.1.7/vendor/libuv/src/win/util.c +1707 -0
  173. winloop-0.1.7/vendor/libuv/src/win/winapi.c +147 -0
  174. winloop-0.1.7/vendor/libuv/src/win/winapi.h +4769 -0
  175. winloop-0.1.7/vendor/libuv/src/win/winsock.c +575 -0
  176. winloop-0.1.7/vendor/libuv/src/win/winsock.h +201 -0
  177. winloop-0.1.7/vendor/libuv/test/benchmark-async-pummel.c +120 -0
  178. winloop-0.1.7/vendor/libuv/test/benchmark-async.c +142 -0
  179. winloop-0.1.7/vendor/libuv/test/benchmark-fs-stat.c +138 -0
  180. winloop-0.1.7/vendor/libuv/test/benchmark-getaddrinfo.c +92 -0
  181. winloop-0.1.7/vendor/libuv/test/benchmark-list.h +173 -0
  182. winloop-0.1.7/vendor/libuv/test/benchmark-loop-count.c +134 -0
  183. winloop-0.1.7/vendor/libuv/test/benchmark-million-async.c +113 -0
  184. winloop-0.1.7/vendor/libuv/test/benchmark-million-timers.c +86 -0
  185. winloop-0.1.7/vendor/libuv/test/benchmark-multi-accept.c +451 -0
  186. winloop-0.1.7/vendor/libuv/test/benchmark-ping-pongs.c +221 -0
  187. winloop-0.1.7/vendor/libuv/test/benchmark-ping-udp.c +169 -0
  188. winloop-0.1.7/vendor/libuv/test/benchmark-pound.c +351 -0
  189. winloop-0.1.7/vendor/libuv/test/benchmark-pump.c +478 -0
  190. winloop-0.1.7/vendor/libuv/test/benchmark-queue-work.c +71 -0
  191. winloop-0.1.7/vendor/libuv/test/benchmark-sizes.c +46 -0
  192. winloop-0.1.7/vendor/libuv/test/benchmark-spawn.c +164 -0
  193. winloop-0.1.7/vendor/libuv/test/benchmark-tcp-write-batch.c +144 -0
  194. winloop-0.1.7/vendor/libuv/test/benchmark-thread.c +64 -0
  195. winloop-0.1.7/vendor/libuv/test/benchmark-udp-pummel.c +243 -0
  196. winloop-0.1.7/vendor/libuv/test/blackhole-server.c +122 -0
  197. winloop-0.1.7/vendor/libuv/test/echo-server.c +431 -0
  198. winloop-0.1.7/vendor/libuv/test/fixtures/empty_file +0 -0
  199. winloop-0.1.7/vendor/libuv/test/fixtures/load_error.node +1 -0
  200. winloop-0.1.7/vendor/libuv/test/fixtures/lorem_ipsum.txt +1 -0
  201. winloop-0.1.7/vendor/libuv/test/fixtures/one_file/one_file +0 -0
  202. winloop-0.1.7/vendor/libuv/test/run-benchmarks.c +72 -0
  203. winloop-0.1.7/vendor/libuv/test/run-tests.c +269 -0
  204. winloop-0.1.7/vendor/libuv/test/runner-unix.c +456 -0
  205. winloop-0.1.7/vendor/libuv/test/runner-unix.h +36 -0
  206. winloop-0.1.7/vendor/libuv/test/runner-win.c +346 -0
  207. winloop-0.1.7/vendor/libuv/test/runner-win.h +41 -0
  208. winloop-0.1.7/vendor/libuv/test/runner.c +435 -0
  209. winloop-0.1.7/vendor/libuv/test/runner.h +172 -0
  210. winloop-0.1.7/vendor/libuv/test/task.h +384 -0
  211. winloop-0.1.7/vendor/libuv/test/test-active.c +84 -0
  212. winloop-0.1.7/vendor/libuv/test/test-async-null-cb.c +64 -0
  213. winloop-0.1.7/vendor/libuv/test/test-async.c +134 -0
  214. winloop-0.1.7/vendor/libuv/test/test-barrier.c +160 -0
  215. winloop-0.1.7/vendor/libuv/test/test-callback-stack.c +209 -0
  216. winloop-0.1.7/vendor/libuv/test/test-close-fd.c +84 -0
  217. winloop-0.1.7/vendor/libuv/test/test-close-order.c +80 -0
  218. winloop-0.1.7/vendor/libuv/test/test-condvar.c +248 -0
  219. winloop-0.1.7/vendor/libuv/test/test-connect-unspecified.c +64 -0
  220. winloop-0.1.7/vendor/libuv/test/test-connection-fail.c +161 -0
  221. winloop-0.1.7/vendor/libuv/test/test-cwd-and-chdir.c +57 -0
  222. winloop-0.1.7/vendor/libuv/test/test-default-loop-close.c +58 -0
  223. winloop-0.1.7/vendor/libuv/test/test-delayed-accept.c +189 -0
  224. winloop-0.1.7/vendor/libuv/test/test-dlerror.c +65 -0
  225. winloop-0.1.7/vendor/libuv/test/test-eintr-handling.c +96 -0
  226. winloop-0.1.7/vendor/libuv/test/test-embed.c +79 -0
  227. winloop-0.1.7/vendor/libuv/test/test-emfile.c +121 -0
  228. winloop-0.1.7/vendor/libuv/test/test-env-vars.c +178 -0
  229. winloop-0.1.7/vendor/libuv/test/test-error.c +82 -0
  230. winloop-0.1.7/vendor/libuv/test/test-fail-always.c +29 -0
  231. winloop-0.1.7/vendor/libuv/test/test-fork.c +769 -0
  232. winloop-0.1.7/vendor/libuv/test/test-fs-copyfile.c +232 -0
  233. winloop-0.1.7/vendor/libuv/test/test-fs-event.c +1237 -0
  234. winloop-0.1.7/vendor/libuv/test/test-fs-fd-hash.c +133 -0
  235. winloop-0.1.7/vendor/libuv/test/test-fs-open-flags.c +435 -0
  236. winloop-0.1.7/vendor/libuv/test/test-fs-poll.c +292 -0
  237. winloop-0.1.7/vendor/libuv/test/test-fs-readdir.c +462 -0
  238. winloop-0.1.7/vendor/libuv/test/test-fs.c +4642 -0
  239. winloop-0.1.7/vendor/libuv/test/test-get-currentexe.c +109 -0
  240. winloop-0.1.7/vendor/libuv/test/test-get-loadavg.c +35 -0
  241. winloop-0.1.7/vendor/libuv/test/test-get-memory.c +53 -0
  242. winloop-0.1.7/vendor/libuv/test/test-get-passwd.c +211 -0
  243. winloop-0.1.7/vendor/libuv/test/test-getaddrinfo.c +215 -0
  244. winloop-0.1.7/vendor/libuv/test/test-gethostname.c +58 -0
  245. winloop-0.1.7/vendor/libuv/test/test-getnameinfo.c +116 -0
  246. winloop-0.1.7/vendor/libuv/test/test-getsockname.c +362 -0
  247. winloop-0.1.7/vendor/libuv/test/test-getters-setters.c +114 -0
  248. winloop-0.1.7/vendor/libuv/test/test-gettimeofday.c +39 -0
  249. winloop-0.1.7/vendor/libuv/test/test-handle-fileno.c +125 -0
  250. winloop-0.1.7/vendor/libuv/test/test-homedir.c +72 -0
  251. winloop-0.1.7/vendor/libuv/test/test-hrtime.c +65 -0
  252. winloop-0.1.7/vendor/libuv/test/test-idle.c +125 -0
  253. winloop-0.1.7/vendor/libuv/test/test-idna.c +220 -0
  254. winloop-0.1.7/vendor/libuv/test/test-iouring-pollhup.c +111 -0
  255. winloop-0.1.7/vendor/libuv/test/test-ip-name.c +65 -0
  256. winloop-0.1.7/vendor/libuv/test/test-ip4-addr.c +55 -0
  257. winloop-0.1.7/vendor/libuv/test/test-ip6-addr.c +175 -0
  258. winloop-0.1.7/vendor/libuv/test/test-ipc-heavy-traffic-deadlock-bug.c +159 -0
  259. winloop-0.1.7/vendor/libuv/test/test-ipc-send-recv.c +435 -0
  260. winloop-0.1.7/vendor/libuv/test/test-ipc.c +857 -0
  261. winloop-0.1.7/vendor/libuv/test/test-list.h +1243 -0
  262. winloop-0.1.7/vendor/libuv/test/test-loop-alive.c +68 -0
  263. winloop-0.1.7/vendor/libuv/test/test-loop-close.c +77 -0
  264. winloop-0.1.7/vendor/libuv/test/test-loop-configure.c +38 -0
  265. winloop-0.1.7/vendor/libuv/test/test-loop-handles.c +337 -0
  266. winloop-0.1.7/vendor/libuv/test/test-loop-stop.c +83 -0
  267. winloop-0.1.7/vendor/libuv/test/test-loop-time.c +69 -0
  268. winloop-0.1.7/vendor/libuv/test/test-metrics.c +390 -0
  269. winloop-0.1.7/vendor/libuv/test/test-multiple-listen.c +109 -0
  270. winloop-0.1.7/vendor/libuv/test/test-mutexes.c +182 -0
  271. winloop-0.1.7/vendor/libuv/test/test-not-readable-nor-writable-on-read-error.c +104 -0
  272. winloop-0.1.7/vendor/libuv/test/test-not-writable-after-shutdown.c +69 -0
  273. winloop-0.1.7/vendor/libuv/test/test-osx-select.c +140 -0
  274. winloop-0.1.7/vendor/libuv/test/test-pass-always.c +28 -0
  275. winloop-0.1.7/vendor/libuv/test/test-ping-pong.c +439 -0
  276. winloop-0.1.7/vendor/libuv/test/test-pipe-bind-error.c +199 -0
  277. winloop-0.1.7/vendor/libuv/test/test-pipe-close-stdout-read-stdin.c +122 -0
  278. winloop-0.1.7/vendor/libuv/test/test-pipe-connect-error.c +97 -0
  279. winloop-0.1.7/vendor/libuv/test/test-pipe-connect-multiple.c +178 -0
  280. winloop-0.1.7/vendor/libuv/test/test-pipe-connect-prepare.c +83 -0
  281. winloop-0.1.7/vendor/libuv/test/test-pipe-getsockname.c +290 -0
  282. winloop-0.1.7/vendor/libuv/test/test-pipe-pending-instances.c +59 -0
  283. winloop-0.1.7/vendor/libuv/test/test-pipe-sendmsg.c +172 -0
  284. winloop-0.1.7/vendor/libuv/test/test-pipe-server-close.c +94 -0
  285. winloop-0.1.7/vendor/libuv/test/test-pipe-set-fchmod.c +92 -0
  286. winloop-0.1.7/vendor/libuv/test/test-pipe-set-non-blocking.c +131 -0
  287. winloop-0.1.7/vendor/libuv/test/test-platform-output.c +240 -0
  288. winloop-0.1.7/vendor/libuv/test/test-poll-close-doesnt-corrupt-stack.c +114 -0
  289. winloop-0.1.7/vendor/libuv/test/test-poll-close.c +73 -0
  290. winloop-0.1.7/vendor/libuv/test/test-poll-closesocket.c +92 -0
  291. winloop-0.1.7/vendor/libuv/test/test-poll-multiple-handles.c +104 -0
  292. winloop-0.1.7/vendor/libuv/test/test-poll-oob.c +214 -0
  293. winloop-0.1.7/vendor/libuv/test/test-poll.c +697 -0
  294. winloop-0.1.7/vendor/libuv/test/test-process-priority.c +83 -0
  295. winloop-0.1.7/vendor/libuv/test/test-process-title-threadsafe.c +108 -0
  296. winloop-0.1.7/vendor/libuv/test/test-process-title.c +135 -0
  297. winloop-0.1.7/vendor/libuv/test/test-queue-foreach-delete.c +205 -0
  298. winloop-0.1.7/vendor/libuv/test/test-random.c +94 -0
  299. winloop-0.1.7/vendor/libuv/test/test-readable-on-eof.c +110 -0
  300. winloop-0.1.7/vendor/libuv/test/test-ref.c +445 -0
  301. winloop-0.1.7/vendor/libuv/test/test-run-nowait.c +46 -0
  302. winloop-0.1.7/vendor/libuv/test/test-run-once.c +48 -0
  303. winloop-0.1.7/vendor/libuv/test/test-semaphore.c +111 -0
  304. winloop-0.1.7/vendor/libuv/test/test-shutdown-close.c +108 -0
  305. winloop-0.1.7/vendor/libuv/test/test-shutdown-eof.c +188 -0
  306. winloop-0.1.7/vendor/libuv/test/test-shutdown-simultaneous.c +135 -0
  307. winloop-0.1.7/vendor/libuv/test/test-shutdown-twice.c +85 -0
  308. winloop-0.1.7/vendor/libuv/test/test-signal-multiple-loops.c +325 -0
  309. winloop-0.1.7/vendor/libuv/test/test-signal-pending-on-close.c +116 -0
  310. winloop-0.1.7/vendor/libuv/test/test-signal.c +325 -0
  311. winloop-0.1.7/vendor/libuv/test/test-socket-buffer-size.c +77 -0
  312. winloop-0.1.7/vendor/libuv/test/test-spawn.c +2114 -0
  313. winloop-0.1.7/vendor/libuv/test/test-stdio-over-pipes.c +299 -0
  314. winloop-0.1.7/vendor/libuv/test/test-strscpy.c +53 -0
  315. winloop-0.1.7/vendor/libuv/test/test-strtok.c +90 -0
  316. winloop-0.1.7/vendor/libuv/test/test-tcp-alloc-cb-fail.c +123 -0
  317. winloop-0.1.7/vendor/libuv/test/test-tcp-bind-error.c +317 -0
  318. winloop-0.1.7/vendor/libuv/test/test-tcp-bind6-error.c +176 -0
  319. winloop-0.1.7/vendor/libuv/test/test-tcp-close-accept.c +198 -0
  320. winloop-0.1.7/vendor/libuv/test/test-tcp-close-after-read-timeout.c +183 -0
  321. winloop-0.1.7/vendor/libuv/test/test-tcp-close-reset.c +340 -0
  322. winloop-0.1.7/vendor/libuv/test/test-tcp-close-while-connecting.c +97 -0
  323. winloop-0.1.7/vendor/libuv/test/test-tcp-close.c +136 -0
  324. winloop-0.1.7/vendor/libuv/test/test-tcp-connect-error-after-write.c +98 -0
  325. winloop-0.1.7/vendor/libuv/test/test-tcp-connect-error.c +73 -0
  326. winloop-0.1.7/vendor/libuv/test/test-tcp-connect-timeout.c +196 -0
  327. winloop-0.1.7/vendor/libuv/test/test-tcp-connect6-error.c +129 -0
  328. winloop-0.1.7/vendor/libuv/test/test-tcp-create-socket-early.c +213 -0
  329. winloop-0.1.7/vendor/libuv/test/test-tcp-flags.c +59 -0
  330. winloop-0.1.7/vendor/libuv/test/test-tcp-oob.c +146 -0
  331. winloop-0.1.7/vendor/libuv/test/test-tcp-open.c +407 -0
  332. winloop-0.1.7/vendor/libuv/test/test-tcp-read-stop-start.c +136 -0
  333. winloop-0.1.7/vendor/libuv/test/test-tcp-read-stop.c +76 -0
  334. winloop-0.1.7/vendor/libuv/test/test-tcp-reuseport.c +248 -0
  335. winloop-0.1.7/vendor/libuv/test/test-tcp-rst.c +110 -0
  336. winloop-0.1.7/vendor/libuv/test/test-tcp-shutdown-after-write.c +138 -0
  337. winloop-0.1.7/vendor/libuv/test/test-tcp-try-write-error.c +109 -0
  338. winloop-0.1.7/vendor/libuv/test/test-tcp-try-write.c +135 -0
  339. winloop-0.1.7/vendor/libuv/test/test-tcp-unexpected-read.c +117 -0
  340. winloop-0.1.7/vendor/libuv/test/test-tcp-write-after-connect.c +77 -0
  341. winloop-0.1.7/vendor/libuv/test/test-tcp-write-fail.c +115 -0
  342. winloop-0.1.7/vendor/libuv/test/test-tcp-write-in-a-row.c +143 -0
  343. winloop-0.1.7/vendor/libuv/test/test-tcp-write-queue-order.c +139 -0
  344. winloop-0.1.7/vendor/libuv/test/test-tcp-write-to-half-open-connection.c +141 -0
  345. winloop-0.1.7/vendor/libuv/test/test-tcp-writealot.c +185 -0
  346. winloop-0.1.7/vendor/libuv/test/test-test-macros.c +42 -0
  347. winloop-0.1.7/vendor/libuv/test/test-thread-affinity.c +154 -0
  348. winloop-0.1.7/vendor/libuv/test/test-thread-equal.c +51 -0
  349. winloop-0.1.7/vendor/libuv/test/test-thread-priority.c +105 -0
  350. winloop-0.1.7/vendor/libuv/test/test-thread.c +296 -0
  351. winloop-0.1.7/vendor/libuv/test/test-threadpool-cancel.c +418 -0
  352. winloop-0.1.7/vendor/libuv/test/test-threadpool.c +76 -0
  353. winloop-0.1.7/vendor/libuv/test/test-timer-again.c +141 -0
  354. winloop-0.1.7/vendor/libuv/test/test-timer-from-check.c +80 -0
  355. winloop-0.1.7/vendor/libuv/test/test-timer.c +453 -0
  356. winloop-0.1.7/vendor/libuv/test/test-tmpdir.c +82 -0
  357. winloop-0.1.7/vendor/libuv/test/test-tty-duplicate-key.c +321 -0
  358. winloop-0.1.7/vendor/libuv/test/test-tty-escape-sequence-processing.c +1632 -0
  359. winloop-0.1.7/vendor/libuv/test/test-tty.c +468 -0
  360. winloop-0.1.7/vendor/libuv/test/test-udp-alloc-cb-fail.c +196 -0
  361. winloop-0.1.7/vendor/libuv/test/test-udp-bind.c +93 -0
  362. winloop-0.1.7/vendor/libuv/test/test-udp-connect.c +196 -0
  363. winloop-0.1.7/vendor/libuv/test/test-udp-connect6.c +199 -0
  364. winloop-0.1.7/vendor/libuv/test/test-udp-create-socket-early.c +139 -0
  365. winloop-0.1.7/vendor/libuv/test/test-udp-dgram-too-big.c +91 -0
  366. winloop-0.1.7/vendor/libuv/test/test-udp-ipv6.c +259 -0
  367. winloop-0.1.7/vendor/libuv/test/test-udp-mmsg.c +149 -0
  368. winloop-0.1.7/vendor/libuv/test/test-udp-multicast-interface.c +104 -0
  369. winloop-0.1.7/vendor/libuv/test/test-udp-multicast-interface6.c +108 -0
  370. winloop-0.1.7/vendor/libuv/test/test-udp-multicast-join.c +184 -0
  371. winloop-0.1.7/vendor/libuv/test/test-udp-multicast-join6.c +218 -0
  372. winloop-0.1.7/vendor/libuv/test/test-udp-multicast-ttl.c +94 -0
  373. winloop-0.1.7/vendor/libuv/test/test-udp-open.c +350 -0
  374. winloop-0.1.7/vendor/libuv/test/test-udp-options.c +160 -0
  375. winloop-0.1.7/vendor/libuv/test/test-udp-recv-in-a-row.c +121 -0
  376. winloop-0.1.7/vendor/libuv/test/test-udp-reuseport.c +287 -0
  377. winloop-0.1.7/vendor/libuv/test/test-udp-send-and-recv.c +212 -0
  378. winloop-0.1.7/vendor/libuv/test/test-udp-send-hang-loop.c +99 -0
  379. winloop-0.1.7/vendor/libuv/test/test-udp-send-immediate.c +148 -0
  380. winloop-0.1.7/vendor/libuv/test/test-udp-send-unreachable.c +201 -0
  381. winloop-0.1.7/vendor/libuv/test/test-udp-sendmmsg-error.c +75 -0
  382. winloop-0.1.7/vendor/libuv/test/test-udp-try-send.c +121 -0
  383. winloop-0.1.7/vendor/libuv/test/test-uname.c +69 -0
  384. winloop-0.1.7/vendor/libuv/test/test-walk-handles.c +77 -0
  385. winloop-0.1.7/vendor/libuv/test/test-watcher-cross-stop.c +112 -0
  386. winloop-0.1.7/vendor/libuv/tools/make_dist_html.py +122 -0
  387. winloop-0.1.7/vendor/libuv/tools/vswhere_usability_wrapper.cmd +33 -0
  388. winloop-0.1.7/vendor/libuv/tsansupp.txt +2 -0
  389. winloop-0.1.7/vendor/libuv/uv_win_longpath.manifest +8 -0
  390. {winloop-0.1.5 → winloop-0.1.7}/winloop/__init__.py +3 -1
  391. {winloop-0.1.5 → winloop-0.1.7}/winloop/_testbase.py +4 -2
  392. {winloop-0.1.5 → winloop-0.1.7}/winloop/_version.py +1 -1
  393. winloop-0.1.7/winloop/cbhandles.pxd +39 -0
  394. winloop-0.1.7/winloop/cbhandles.pyx +434 -0
  395. winloop-0.1.7/winloop/dns.pyx +491 -0
  396. winloop-0.1.7/winloop/errors.pyx +83 -0
  397. winloop-0.1.7/winloop/handles/async_.pxd +11 -0
  398. winloop-0.1.7/winloop/handles/async_.pyx +56 -0
  399. winloop-0.1.7/winloop/handles/basetransport.pxd +54 -0
  400. winloop-0.1.7/winloop/handles/basetransport.pyx +293 -0
  401. winloop-0.1.7/winloop/handles/check.pxd +14 -0
  402. winloop-0.1.7/winloop/handles/check.pyx +72 -0
  403. winloop-0.1.7/winloop/handles/fsevent.pxd +12 -0
  404. winloop-0.1.7/winloop/handles/fsevent.pyx +116 -0
  405. winloop-0.1.7/winloop/handles/handle.pxd +48 -0
  406. winloop-0.1.7/winloop/handles/handle.pyx +395 -0
  407. winloop-0.1.7/winloop/handles/idle.pxd +14 -0
  408. winloop-0.1.7/winloop/handles/idle.pyx +72 -0
  409. winloop-0.1.7/winloop/handles/pipe.pxd +33 -0
  410. winloop-0.1.7/winloop/handles/pipe.pyx +247 -0
  411. winloop-0.1.7/winloop/handles/poll.pxd +25 -0
  412. winloop-0.1.7/winloop/handles/poll.pyx +237 -0
  413. winloop-0.1.7/winloop/handles/process.pxd +80 -0
  414. winloop-0.1.7/winloop/handles/process.pyx +844 -0
  415. winloop-0.1.7/winloop/handles/stream.pxd +50 -0
  416. winloop-0.1.7/winloop/handles/stream.pyx +1038 -0
  417. winloop-0.1.7/winloop/handles/streamserver.pxd +26 -0
  418. winloop-0.1.7/winloop/handles/streamserver.pyx +150 -0
  419. winloop-0.1.7/winloop/handles/tcp.pxd +26 -0
  420. winloop-0.1.7/winloop/handles/tcp.pyx +228 -0
  421. winloop-0.1.7/winloop/handles/timer.pxd +18 -0
  422. winloop-0.1.7/winloop/handles/timer.pyx +89 -0
  423. winloop-0.1.7/winloop/handles/udp.pxd +22 -0
  424. winloop-0.1.7/winloop/handles/udp.pyx +408 -0
  425. winloop-0.1.7/winloop/includes/__init__.py +23 -0
  426. winloop-0.1.7/winloop/includes/compat.h +178 -0
  427. winloop-0.1.7/winloop/includes/consts.pxi +32 -0
  428. winloop-0.1.7/winloop/includes/debug.h +3 -0
  429. winloop-0.1.7/winloop/includes/debug.pxd +3 -0
  430. winloop-0.1.7/winloop/includes/flowcontrol.pxd +23 -0
  431. winloop-0.1.7/winloop/includes/fork_handler.h +56 -0
  432. winloop-0.1.7/winloop/includes/python.pxd +31 -0
  433. winloop-0.1.7/winloop/includes/stdlib.pxi +179 -0
  434. winloop-0.1.7/winloop/includes/system.pxd +82 -0
  435. winloop-0.1.7/winloop/includes/uv.pxd +517 -0
  436. {winloop-0.1.5 → winloop-0.1.7}/winloop/loop.c +17892 -16291
  437. winloop-0.1.7/winloop/loop.pxd +230 -0
  438. winloop-0.1.7/winloop/loop.pyx +3441 -0
  439. winloop-0.1.7/winloop/lru.pyx +79 -0
  440. winloop-0.1.7/winloop/pseudosock.pyx +209 -0
  441. winloop-0.1.7/winloop/py.typed +0 -0
  442. winloop-0.1.7/winloop/request.pxd +8 -0
  443. winloop-0.1.7/winloop/request.pyx +65 -0
  444. winloop-0.1.7/winloop/server.pxd +19 -0
  445. winloop-0.1.7/winloop/server.pyx +136 -0
  446. winloop-0.1.7/winloop/sslproto.pxd +138 -0
  447. winloop-0.1.7/winloop/sslproto.pyx +950 -0
  448. {winloop-0.1.5 → winloop-0.1.7/winloop.egg-info}/PKG-INFO +9 -7
  449. winloop-0.1.7/winloop.egg-info/SOURCES.txt +473 -0
  450. {winloop-0.1.5 → winloop-0.1.7}/winloop.egg-info/requires.txt +5 -7
  451. winloop-0.1.7/winloop.png +0 -0
  452. winloop-0.1.5/winloop.egg-info/SOURCES.txt +0 -41
  453. {winloop-0.1.5 → winloop-0.1.7}/LICENSE-APACHE +0 -0
  454. {winloop-0.1.5 → winloop-0.1.7}/LICENSE-MIT +0 -0
  455. {winloop-0.1.5 → winloop-0.1.7}/setup.cfg +0 -0
  456. /winloop-0.1.5/winloop/py.typed → /winloop-0.1.7/tests/__init__.py +0 -0
  457. {winloop-0.1.5 → winloop-0.1.7}/tests/test_context.py +0 -0
  458. {winloop-0.1.5 → winloop-0.1.7}/tests/test_cython.py +0 -0
  459. {winloop-0.1.5 → winloop-0.1.7}/tests/test_dealloc.py +0 -0
  460. {winloop-0.1.5 → winloop-0.1.7}/tests/test_executors.py +0 -0
  461. {winloop-0.1.5 → winloop-0.1.7}/tests/test_fs_event.py +0 -0
  462. {winloop-0.1.5 → winloop-0.1.7}/tests/test_libuv_api.py +0 -0
  463. {winloop-0.1.5 → winloop-0.1.7}/tests/test_pipes.py +0 -0
  464. {winloop-0.1.5 → winloop-0.1.7}/tests/test_process_spawning.py +0 -0
  465. {winloop-0.1.5 → winloop-0.1.7}/tests/test_regr1.py +0 -0
  466. {winloop-0.1.5 → winloop-0.1.7}/tests/test_runner.py +0 -0
  467. {winloop-0.1.5 → winloop-0.1.7}/tests/test_signals.py +0 -0
  468. {winloop-0.1.5 → winloop-0.1.7}/tests/test_sockets.py +0 -0
  469. {winloop-0.1.5 → winloop-0.1.7}/tests/test_sourcecode.py +0 -0
  470. {winloop-0.1.5 → winloop-0.1.7}/tests/test_testbase.py +0 -0
  471. {winloop-0.1.5 → winloop-0.1.7}/tests/test_udp.py +0 -0
  472. {winloop-0.1.5 → winloop-0.1.7}/winloop/_noop.py +0 -0
  473. {winloop-0.1.5 → winloop-0.1.7}/winloop/loop.pyi +0 -0
  474. {winloop-0.1.5 → winloop-0.1.7}/winloop.egg-info/dependency_links.txt +0 -0
  475. {winloop-0.1.5 → winloop-0.1.7}/winloop.egg-info/not-zip-safe +0 -0
  476. {winloop-0.1.5 → winloop-0.1.7}/winloop.egg-info/top_level.txt +0 -0
winloop-0.1.7/.flake8 ADDED
@@ -0,0 +1,8 @@
1
+ [flake8]
2
+ filename = *.py,*.pyi
3
+ ignore = E402,E731,D100,D101,D102,D103,D104,D105,W503,W504,E252
4
+ exclude = .git,__pycache__,build,dist,.eggs,postgres,vendor
5
+
6
+ per-file-ignores =
7
+ *.pyx,*.pxd,*.pxi: E211, E222, E225, E226, E227, E999
8
+ *.pyi: F401, F403, F405, F811, E127, E128, E203, E266, E301, E302, E305, E501, E701, E704, E741, B303, W503, W504
@@ -0,0 +1,9 @@
1
+ recursive-include docs *.py *.rst
2
+ recursive-include examples *.py
3
+ recursive-include tests *.py *.pem
4
+ recursive-include winloop *.pyx *.pxd *.pxi *.py *.c *.h *.pyi py.typed
5
+ recursive-include vendor/libuv *
6
+ recursive-exclude vendor/libuv/.git *
7
+ recursive-exclude vendor/libuv/docs *
8
+ recursive-exclude vendor/libuv/img *
9
+ include LICENSE-MIT LICENSE-APACHE README.md Makefile winloop.png .flake8 mypy.ini
winloop-0.1.7/Makefile ADDED
@@ -0,0 +1,55 @@
1
+ .PHONY: _default clean clean-libuv distclean compile debug docs test testinstalled release setup-build ci-clean
2
+
3
+
4
+ PYTHON ?= python
5
+ ROOT = $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
6
+
7
+
8
+ _default: compile
9
+
10
+
11
+ clean:
12
+ rm -fr dist/ doc/_build/ *.egg-info winloop/loop.*.pyd uvloop/loop_d.*.pyd
13
+ rm -fr winloop/*.c winloop/*.html winloop/*.so
14
+ rm -fr winloop/handles/*.html winloop/includes/*.html
15
+ find . -name '__pycache__' | xargs rm -rf
16
+
17
+
18
+ ci-clean: clean
19
+ rm -fr build/lib.* build/temp.* build/libuv
20
+
21
+
22
+ clean-libuv:
23
+ (cd vendor/libuv; git clean -dfX)
24
+
25
+
26
+ distclean: clean clean-libuv
27
+ rm -fr build/
28
+
29
+
30
+ setup-build:
31
+ $(PYTHON) setup.py build_ext --inplace --cython-always
32
+
33
+
34
+ compile: clean setup-build
35
+
36
+
37
+ debug: clean
38
+ $(PYTHON) setup.py build_ext --inplace --debug \
39
+ --cython-always \
40
+ --cython-annotate \
41
+ --cython-directives="linetrace=True" \
42
+ --define UVLOOP_DEBUG,CYTHON_TRACE,CYTHON_TRACE_NOGIL
43
+
44
+
45
+ docs:
46
+ $(PYTHON) setup.py build_ext --inplace build_sphinx
47
+
48
+
49
+ test:
50
+ PYTHONASYNCIODEBUG=1 $(PYTHON) -m unittest discover -v tests
51
+ $(PYTHON) -m unittest discover -v tests
52
+
53
+
54
+ testinstalled:
55
+ cd "$${HOME}" && $(PYTHON) -m unittest discover -v $(ROOT)/tests
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: winloop
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: Windows version of uvloop
5
5
  Author: Vizonex
6
6
  License: MIT License
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
23
24
  Classifier: Programming Language :: Python :: Implementation :: CPython
24
25
  Classifier: Topic :: System :: Networking
25
26
  Requires-Python: >=3.8.0
@@ -27,14 +28,15 @@ Description-Content-Type: text/markdown
27
28
  License-File: LICENSE-APACHE
28
29
  License-File: LICENSE-MIT
29
30
  Provides-Extra: test
30
- Requires-Dist: aiohttp>=3.8.1; python_version < "3.12" and extra == "test"
31
- Requires-Dist: aiohttp==3.9.0b0; python_version >= "3.12" and extra == "test"
31
+ Requires-Dist: aiohttp>=3.10.5; extra == "test"
32
32
  Requires-Dist: flake8~=5.0; extra == "test"
33
33
  Requires-Dist: psutil; extra == "test"
34
34
  Requires-Dist: pycodestyle~=2.9.0; extra == "test"
35
35
  Requires-Dist: pyOpenSSL~=23.0.0; extra == "test"
36
36
  Requires-Dist: mypy>=0.800; extra == "test"
37
- Requires-Dist: Cython<0.30.0,>=0.29.36; extra == "test"
37
+ Provides-Extra: dev
38
+ Requires-Dist: setuptools>=60; extra == "dev"
39
+ Requires-Dist: Cython~=3.0; extra == "dev"
38
40
  Provides-Extra: docs
39
41
  Requires-Dist: Sphinx~=4.1.2; extra == "docs"
40
42
  Requires-Dist: sphinxcontrib-asyncio~=0.3.0; extra == "docs"
@@ -44,8 +46,8 @@ Requires-Dist: sphinx_rtd_theme~=0.5.2; extra == "docs"
44
46
  <a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
45
47
 
46
48
  # Winloop
47
- An Alternative library for uvloop compatibility with windows because let's face it. Window's python asyncio standard libaray is garabage escpecially when Windows Defender decides to eat half your ram.
48
- I never really liked the fact that I couldn't make anything run faster escpecially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for windows [but windows was never compatible with uvloop.](https://github.com/MagicStack/uvloop/issues/14#issuecomment-575826367])
49
+ An Alternative library for uvloop compatibility with windows because let's face it. Window's python asyncio standard libaray is garabage especially when Windows Defender decides to eat half your ram.
50
+ I never really liked the fact that I couldn't make anything run faster especially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for windows [but windows was never compatible with uvloop.](https://github.com/MagicStack/uvloop/issues/14#issuecomment-575826367])
49
51
 
50
52
  Because nobody was willing to step in after so many years of waiting, I went ahead and downloaded the source code for uvloop and started modifying the source code to be windows compatible by carefully removing and changing parts that were not made for windows. Many hours of research went into making this library exist.
51
53
 
@@ -61,7 +63,7 @@ There is a performance increase of about 5 times vs using the `WindowsSelectorEv
61
63
  pip install winloop
62
64
  ```
63
65
 
64
- You can also clone the reposity and build the extension yourself by running the command below if you wish to use or build this library locally, Note that you will need Cython and The Visual C++ extensions
66
+ You can also clone the repository and build the extension yourself by running the command below if you wish to use or build this library locally, Note that you will need Cython and The Visual C++ extensions
65
67
  to compile this library on your own.
66
68
 
67
69
  ```
@@ -2,8 +2,8 @@
2
2
  <a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
3
3
 
4
4
  # Winloop
5
- An Alternative library for uvloop compatibility with windows because let's face it. Window's python asyncio standard libaray is garabage escpecially when Windows Defender decides to eat half your ram.
6
- I never really liked the fact that I couldn't make anything run faster escpecially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for windows [but windows was never compatible with uvloop.](https://github.com/MagicStack/uvloop/issues/14#issuecomment-575826367])
5
+ An Alternative library for uvloop compatibility with windows because let's face it. Window's python asyncio standard libaray is garabage especially when Windows Defender decides to eat half your ram.
6
+ I never really liked the fact that I couldn't make anything run faster especially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for windows [but windows was never compatible with uvloop.](https://github.com/MagicStack/uvloop/issues/14#issuecomment-575826367])
7
7
 
8
8
  Because nobody was willing to step in after so many years of waiting, I went ahead and downloaded the source code for uvloop and started modifying the source code to be windows compatible by carefully removing and changing parts that were not made for windows. Many hours of research went into making this library exist.
9
9
 
@@ -19,7 +19,7 @@ There is a performance increase of about 5 times vs using the `WindowsSelectorEv
19
19
  pip install winloop
20
20
  ```
21
21
 
22
- You can also clone the reposity and build the extension yourself by running the command below if you wish to use or build this library locally, Note that you will need Cython and The Visual C++ extensions
22
+ You can also clone the repository and build the extension yourself by running the command below if you wish to use or build this library locally, Note that you will need Cython and The Visual C++ extensions
23
23
  to compile this library on your own.
24
24
 
25
25
  ```
@@ -0,0 +1,100 @@
1
+ # Copied with minimal modifications from curio
2
+ # https://github.com/dabeaz/curio
3
+
4
+
5
+ import argparse
6
+ import concurrent.futures
7
+ import socket
8
+ import ssl
9
+ import time
10
+
11
+
12
+ if __name__ == '__main__':
13
+ parser = argparse.ArgumentParser()
14
+ parser.add_argument('--msize', default=1000, type=int,
15
+ help='message size in bytes')
16
+ parser.add_argument('--mpr', default=1, type=int,
17
+ help='messages per request')
18
+ parser.add_argument('--num', default=200000, type=int,
19
+ help='number of messages')
20
+ parser.add_argument('--times', default=1, type=int,
21
+ help='number of times to run the test')
22
+ parser.add_argument('--workers', default=3, type=int,
23
+ help='number of workers')
24
+ parser.add_argument('--addr', default='127.0.0.1:25000', type=str,
25
+ help='address:port of echoserver')
26
+ parser.add_argument('--ssl', default=False, action='store_true')
27
+ args = parser.parse_args()
28
+
29
+ client_context = None
30
+ if args.ssl:
31
+ print('with SSL')
32
+ if hasattr(ssl, 'PROTOCOL_TLS'):
33
+ client_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
34
+ else:
35
+ client_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
36
+ if hasattr(client_context, 'check_hostname'):
37
+ client_context.check_hostname = False
38
+ client_context.verify_mode = ssl.CERT_NONE
39
+
40
+ unix = False
41
+ if args.addr.startswith('file:'):
42
+ unix = True
43
+ addr = args.addr[5:]
44
+ else:
45
+ addr = args.addr.split(':')
46
+ addr[1] = int(addr[1])
47
+ addr = tuple(addr)
48
+ print('will connect to: {}'.format(addr))
49
+
50
+ MSGSIZE = args.msize
51
+ REQSIZE = MSGSIZE * args.mpr
52
+
53
+ msg = b'x' * (MSGSIZE - 1) + b'\n'
54
+ if args.mpr:
55
+ msg *= args.mpr
56
+
57
+ def run_test(n):
58
+ print('Sending', NMESSAGES, 'messages')
59
+ if args.mpr:
60
+ n //= args.mpr
61
+
62
+ if unix:
63
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
64
+ else:
65
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
66
+
67
+ try:
68
+ sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
69
+ except (OSError, NameError):
70
+ pass
71
+
72
+ if client_context:
73
+ sock = client_context.wrap_socket(sock)
74
+
75
+ sock.connect(addr)
76
+
77
+ while n > 0:
78
+ sock.sendall(msg)
79
+ nrecv = 0
80
+ while nrecv < REQSIZE:
81
+ resp = sock.recv(REQSIZE)
82
+ if not resp:
83
+ raise SystemExit()
84
+ nrecv += len(resp)
85
+ n -= 1
86
+
87
+ TIMES = args.times
88
+ N = args.workers
89
+ NMESSAGES = args.num
90
+ start = time.time()
91
+ for _ in range(TIMES):
92
+ # Winloop comment: switch from ProcessPoolExecutor to ThreadPoolExecutor
93
+ # to avoid issues with __mp_main__ on Windows.
94
+ with concurrent.futures.ThreadPoolExecutor(max_workers=N) as e:
95
+ for _ in range(N):
96
+ e.submit(run_test, NMESSAGES)
97
+ end = time.time()
98
+ duration = end - start
99
+ print(NMESSAGES * N * TIMES, 'in', duration)
100
+ print(NMESSAGES * N * TIMES / duration, 'requests/sec')
@@ -0,0 +1,212 @@
1
+ import argparse
2
+ import asyncio
3
+ import gc
4
+ import os.path
5
+ import pathlib
6
+ import socket
7
+ import ssl
8
+
9
+
10
+ PRINT = 0
11
+
12
+
13
+ async def echo_server(loop, address, unix):
14
+ if unix:
15
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
16
+ else:
17
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
18
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
19
+ sock.bind(address)
20
+ sock.listen(5)
21
+ sock.setblocking(False)
22
+ if PRINT:
23
+ print('Server listening at', address)
24
+ with sock:
25
+ while True:
26
+ client, addr = await loop.sock_accept(sock)
27
+ if PRINT:
28
+ print('Connection from', addr)
29
+ loop.create_task(echo_client(loop, client))
30
+
31
+
32
+ async def echo_client(loop, client):
33
+ try:
34
+ client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
35
+ except (OSError, NameError):
36
+ pass
37
+
38
+ with client:
39
+ while True:
40
+ data = await loop.sock_recv(client, 1000000)
41
+ if not data:
42
+ break
43
+ await loop.sock_sendall(client, data)
44
+ if PRINT:
45
+ print('Connection closed')
46
+
47
+
48
+ async def echo_client_streams(reader, writer):
49
+ sock = writer.get_extra_info('socket')
50
+ try:
51
+ sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
52
+ except (OSError, NameError):
53
+ pass
54
+ if PRINT:
55
+ print('Connection from', sock.getpeername())
56
+ while True:
57
+ data = await reader.read(1000000)
58
+ if not data:
59
+ break
60
+ writer.write(data)
61
+ if PRINT:
62
+ print('Connection closed')
63
+ writer.close()
64
+
65
+
66
+ class EchoProtocol(asyncio.Protocol):
67
+ def connection_made(self, transport):
68
+ self.transport = transport
69
+
70
+ def connection_lost(self, exc):
71
+ self.transport = None
72
+
73
+ def data_received(self, data):
74
+ self.transport.write(data)
75
+
76
+
77
+ class EchoBufferedProtocol(asyncio.BufferedProtocol):
78
+ def connection_made(self, transport):
79
+ self.transport = transport
80
+ # Here the buffer is intended to be copied, so that the outgoing buffer
81
+ # won't be wrongly updated by next read
82
+ self.buffer = bytearray(256 * 1024)
83
+
84
+ def connection_lost(self, exc):
85
+ self.transport = None
86
+
87
+ def get_buffer(self, sizehint):
88
+ return self.buffer
89
+
90
+ def buffer_updated(self, nbytes):
91
+ self.transport.write(self.buffer[:nbytes])
92
+
93
+
94
+ async def print_debug(loop):
95
+ while True:
96
+ print(chr(27) + "[2J") # clear screen
97
+ loop.print_debug_info()
98
+ await asyncio.sleep(0.5)
99
+
100
+
101
+ if __name__ == '__main__':
102
+ parser = argparse.ArgumentParser()
103
+ parser.add_argument('--uvloop', default=False, action='store_true')
104
+ parser.add_argument('--streams', default=False, action='store_true')
105
+ parser.add_argument('--proto', default=False, action='store_true')
106
+ parser.add_argument('--addr', default='127.0.0.1:25000', type=str)
107
+ parser.add_argument('--print', default=False, action='store_true')
108
+ parser.add_argument('--ssl', default=False, action='store_true')
109
+ parser.add_argument('--buffered', default=False, action='store_true')
110
+ args = parser.parse_args()
111
+
112
+ if args.uvloop:
113
+ import winloop as uvloop
114
+ loop = uvloop.new_event_loop()
115
+ print('using UVLoop')
116
+ else:
117
+ loop = asyncio.new_event_loop()
118
+ print('using asyncio loop')
119
+
120
+ asyncio.set_event_loop(loop)
121
+ loop.set_debug(False)
122
+
123
+ if args.print:
124
+ PRINT = 1
125
+
126
+ if hasattr(loop, 'print_debug_info'):
127
+ loop.create_task(print_debug(loop))
128
+ PRINT = 0
129
+
130
+ unix = False
131
+ if args.addr.startswith('file:'):
132
+ unix = True
133
+ addr = args.addr[5:]
134
+ if os.path.exists(addr):
135
+ os.remove(addr)
136
+ else:
137
+ addr = args.addr.split(':')
138
+ addr[1] = int(addr[1])
139
+ addr = tuple(addr)
140
+
141
+ print('serving on: {}'.format(addr))
142
+
143
+ server_context = None
144
+ if args.ssl:
145
+ print('with SSL')
146
+ if hasattr(ssl, 'PROTOCOL_TLS'):
147
+ server_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
148
+ else:
149
+ server_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
150
+ server_context.load_cert_chain(
151
+ (pathlib.Path(__file__).parent.parent.parent /
152
+ 'tests' / 'certs' / 'ssl_cert.pem'),
153
+ (pathlib.Path(__file__).parent.parent.parent /
154
+ 'tests' / 'certs' / 'ssl_key.pem'))
155
+ if hasattr(server_context, 'check_hostname'):
156
+ server_context.check_hostname = False
157
+ server_context.verify_mode = ssl.CERT_NONE
158
+
159
+ if args.streams:
160
+ if args.proto:
161
+ print('cannot use --stream and --proto simultaneously')
162
+ exit(1)
163
+
164
+ if args.buffered:
165
+ print('cannot use --stream and --buffered simultaneously')
166
+ exit(1)
167
+
168
+ print('using asyncio/streams')
169
+ if unix:
170
+ coro = asyncio.start_unix_server(echo_client_streams,
171
+ addr,
172
+ ssl=server_context)
173
+ else:
174
+ coro = asyncio.start_server(echo_client_streams,
175
+ *addr,
176
+ ssl=server_context)
177
+ srv = loop.run_until_complete(coro)
178
+ elif args.proto:
179
+ if args.streams:
180
+ print('cannot use --stream and --proto simultaneously')
181
+ exit(1)
182
+
183
+ if args.buffered:
184
+ print('using buffered protocol')
185
+ protocol = EchoBufferedProtocol
186
+ else:
187
+ print('using simple protocol')
188
+ protocol = EchoProtocol
189
+
190
+ if unix:
191
+ coro = loop.create_unix_server(protocol, addr,
192
+ ssl=server_context)
193
+ else:
194
+ coro = loop.create_server(protocol, *addr,
195
+ ssl=server_context)
196
+ srv = loop.run_until_complete(coro)
197
+ else:
198
+ if args.ssl:
199
+ print('cannot use SSL for loop.sock_* methods')
200
+ exit(1)
201
+
202
+ print('using sock_recv/sock_sendall')
203
+ loop.create_task(echo_server(loop, addr, unix))
204
+ try:
205
+ loop.run_forever()
206
+ finally:
207
+ if hasattr(loop, 'print_debug_info'):
208
+ gc.collect()
209
+ print(chr(27) + "[2J")
210
+ loop.print_debug_info()
211
+
212
+ loop.close()
@@ -0,0 +1,93 @@
1
+ import argparse
2
+ import asyncio
3
+ import gc
4
+ import os.path
5
+ import socket as stdsock
6
+
7
+
8
+ PRINT = 0
9
+
10
+
11
+ async def echo_client_streams(reader, writer):
12
+ sock = writer.get_extra_info('socket')
13
+ try:
14
+ sock.setsockopt(
15
+ stdsock.IPPROTO_TCP, stdsock.TCP_NODELAY, 1)
16
+ except (OSError, NameError):
17
+ pass
18
+ if PRINT:
19
+ print('Connection from', sock.getpeername())
20
+ while True:
21
+ data = await reader.readline()
22
+ if not data:
23
+ break
24
+ writer.write(data)
25
+ if PRINT:
26
+ print('Connection closed')
27
+ writer.close()
28
+
29
+
30
+ async def print_debug(loop):
31
+ while True:
32
+ print(chr(27) + "[2J") # clear screen
33
+ loop.print_debug_info()
34
+ await asyncio.sleep(0.5)
35
+
36
+
37
+ if __name__ == '__main__':
38
+ parser = argparse.ArgumentParser()
39
+ parser.add_argument('--uvloop', default=False, action='store_true')
40
+ parser.add_argument('--addr', default='127.0.0.1:25000', type=str)
41
+ parser.add_argument('--print', default=False, action='store_true')
42
+ args = parser.parse_args()
43
+
44
+ if args.uvloop:
45
+ import winloop as uvloop
46
+ loop = uvloop.new_event_loop()
47
+ print('using UVLoop')
48
+ else:
49
+ loop = asyncio.new_event_loop()
50
+ print('using asyncio loop')
51
+
52
+ asyncio.set_event_loop(loop)
53
+ loop.set_debug(False)
54
+
55
+ if args.print:
56
+ PRINT = 1
57
+
58
+ if hasattr(loop, 'print_debug_info'):
59
+ loop.create_task(print_debug(loop))
60
+ PRINT = 0
61
+
62
+ unix = False
63
+ if args.addr.startswith('file:'):
64
+ unix = True
65
+ addr = args.addr[5:]
66
+ if os.path.exists(addr):
67
+ os.remove(addr)
68
+ else:
69
+ addr = args.addr.split(':')
70
+ addr[1] = int(addr[1])
71
+ addr = tuple(addr)
72
+
73
+ print('readline performance test')
74
+ print('serving on: {}'.format(addr))
75
+
76
+ print('using asyncio/streams')
77
+ if unix:
78
+ coro = asyncio.start_unix_server(echo_client_streams,
79
+ addr, limit=256000)
80
+ else:
81
+ coro = asyncio.start_server(echo_client_streams,
82
+ *addr, limit=256000)
83
+ srv = loop.run_until_complete(coro)
84
+
85
+ try:
86
+ loop.run_forever()
87
+ finally:
88
+ if hasattr(loop, 'print_debug_info'):
89
+ gc.collect()
90
+ print(chr(27) + "[2J")
91
+ loop.print_debug_info()
92
+
93
+ loop.close()
winloop-0.1.7/mypy.ini ADDED
@@ -0,0 +1,6 @@
1
+ [mypy]
2
+ incremental = True
3
+ strict = True
4
+
5
+ [mypy-winloop._testbase]
6
+ ignore_errors = True
@@ -25,6 +25,7 @@ classifiers = [
25
25
  "Programming Language :: Python :: 3.10",
26
26
  "Programming Language :: Python :: 3.11",
27
27
  "Programming Language :: Python :: 3.12",
28
+ "Programming Language :: Python :: 3.13",
28
29
  "Programming Language :: Python :: Implementation :: CPython",
29
30
  "Topic :: System :: Networking",
30
31
  ]
@@ -37,14 +38,16 @@ test = [
37
38
  # pycodestyle is a dependency of flake8, but it must be frozen because
38
39
  # their combination breaks too often
39
40
  # (example breakage: https://gitlab.com/pycqa/flake8/issues/427)
40
- 'aiohttp>=3.8.1; python_version < "3.12"',
41
- 'aiohttp==3.9.0b0; python_version >= "3.12"',
41
+ 'aiohttp>=3.10.5',
42
42
  'flake8~=5.0',
43
43
  'psutil',
44
44
  'pycodestyle~=2.9.0',
45
45
  'pyOpenSSL~=23.0.0',
46
46
  'mypy>=0.800',
47
- 'Cython(>=0.29.36,<0.30.0)',
47
+ ]
48
+ dev = [
49
+ 'setuptools>=60',
50
+ 'Cython~=3.0',
48
51
  ]
49
52
  docs = [
50
53
  'Sphinx~=4.1.2',
@@ -56,7 +59,7 @@ docs = [
56
59
  requires = [
57
60
  "setuptools>=60",
58
61
  "wheel",
59
- "Cython(>=0.29.36,<0.30.0)",
62
+ "Cython~=3.0",
60
63
  ]
61
64
  build-backend = "setuptools.build_meta"
62
65
 
@@ -69,7 +72,6 @@ packages = ["winloop"]
69
72
 
70
73
  [tool.cibuildwheel]
71
74
  build-frontend = "build"
72
- # Winloop comment: skip tests for now ("ImportError: cannot import name 'includes' from ... " in GitHub action)
73
75
  #test-extras = "test"
74
76
  #test-command = "python -m unittest discover -v {project}/tests"
75
77
 
@@ -20,7 +20,7 @@ from setuptools.command.build_ext import build_ext
20
20
  from setuptools.command.sdist import sdist
21
21
 
22
22
 
23
- CYTHON_DEPENDENCY = 'Cython(>=0.29.36,<0.30.0)'
23
+ CYTHON_DEPENDENCY = 'Cython~=3.0'
24
24
  MACHINE = platform.machine()
25
25
  MODULES_CFLAGS = [os.getenv('UVLOOP_OPT_CFLAGS', '-O2')]
26
26
  _ROOT = pathlib.Path(__file__).parent
@@ -140,11 +140,14 @@ class uvloop_build_ext(build_ext):
140
140
  v = True
141
141
 
142
142
  directives[k] = v
143
+ self.cython_directives = directives
143
144
 
144
145
  self.distribution.ext_modules[:] = cythonize(
145
146
  self.distribution.ext_modules,
146
147
  compiler_directives=directives,
147
- annotate=self.cython_annotate)
148
+ annotate=self.cython_annotate,
149
+ compile_time_env=dict(DEFAULT_FREELIST_SIZE=250),
150
+ emit_linenums=self.debug)
148
151
 
149
152
  super().finalize_options()
150
153
 
@@ -176,7 +179,11 @@ class uvloop_build_ext(build_ext):
176
179
  cmd,
177
180
  cwd=LIBUV_BUILD_DIR, env=env, check=True)
178
181
 
179
- j_flag = '-j{}'.format(os.cpu_count() or 1)
182
+ try:
183
+ njobs = len(os.sched_getaffinity(0))
184
+ except AttributeError:
185
+ njobs = os.cpu_count()
186
+ j_flag = '-j{}'.format(njobs or 1)
180
187
  c_flag = "CFLAGS={}".format(env['CFLAGS'])
181
188
  subprocess.run(
182
189
  ['make', j_flag, c_flag],
@@ -233,6 +240,8 @@ with open(str(_ROOT / 'winloop' / '_version.py')) as f:
233
240
 
234
241
  if sys.platform == 'win32':
235
242
  from Cython.Build import cythonize
243
+ from Cython.Compiler.Main import default_options
244
+ default_options['compile_time_env'] = dict(DEFAULT_FREELIST_SIZE=250)
236
245
  ext = cythonize([
237
246
  Extension(
238
247
  "winloop.loop",
@@ -0,0 +1,16 @@
1
+ import os.path
2
+ import sys
3
+ import unittest
4
+ import unittest.runner
5
+
6
+
7
+ def suite():
8
+ test_loader = unittest.TestLoader()
9
+ test_suite = test_loader.discover(os.path.dirname(__file__))
10
+ return test_suite
11
+
12
+
13
+ if __name__ == '__main__':
14
+ runner = unittest.runner.TextTestRunner()
15
+ result = runner.run(suite())
16
+ sys.exit(not result.wasSuccessful())