winloop 0.1.4__tar.gz → 0.1.6__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.6/.flake8 +8 -0
  2. winloop-0.1.6/MANIFEST.in +9 -0
  3. winloop-0.1.6/Makefile +55 -0
  4. {winloop-0.1.4/winloop.egg-info → winloop-0.1.6}/PKG-INFO +26 -4
  5. winloop-0.1.6/examples/bench/echoclient.py +100 -0
  6. winloop-0.1.6/examples/bench/echoserver.py +212 -0
  7. winloop-0.1.6/examples/bench/rlserver.py +93 -0
  8. winloop-0.1.6/mypy.ini +6 -0
  9. winloop-0.1.6/pyproject.toml +78 -0
  10. winloop-0.1.6/setup.py +289 -0
  11. winloop-0.1.6/tests/certs/ssl_cert.pem +34 -0
  12. winloop-0.1.6/tests/certs/ssl_key.pem +40 -0
  13. winloop-0.1.6/tests/test_fs_event.py +105 -0
  14. winloop-0.1.6/tests/test_pipes.py +304 -0
  15. winloop-0.1.6/tests/test_process.py +1047 -0
  16. winloop-0.1.6/tests/test_signals.py +470 -0
  17. winloop-0.1.6/tests/test_sockets.py +767 -0
  18. winloop-0.1.6/tests/test_tcp.py +3219 -0
  19. winloop-0.1.6/vendor/libuv/.git +1 -0
  20. winloop-0.1.6/vendor/libuv/.gitattributes +1 -0
  21. winloop-0.1.6/vendor/libuv/.github/ISSUE_TEMPLATE.md +13 -0
  22. winloop-0.1.6/vendor/libuv/.github/workflows/CI-docs.yml +25 -0
  23. winloop-0.1.6/vendor/libuv/.github/workflows/CI-sample.yml +33 -0
  24. winloop-0.1.6/vendor/libuv/.github/workflows/CI-unix.yml +148 -0
  25. winloop-0.1.6/vendor/libuv/.github/workflows/CI-win.yml +130 -0
  26. winloop-0.1.6/vendor/libuv/.github/workflows/sanitizer.yml +128 -0
  27. winloop-0.1.6/vendor/libuv/.gitignore +80 -0
  28. winloop-0.1.6/vendor/libuv/.mailmap +67 -0
  29. winloop-0.1.6/vendor/libuv/.readthedocs.yaml +15 -0
  30. winloop-0.1.6/vendor/libuv/AUTHORS +569 -0
  31. winloop-0.1.6/vendor/libuv/CMakeLists.txt +807 -0
  32. winloop-0.1.6/vendor/libuv/CONTRIBUTING.md +171 -0
  33. winloop-0.1.6/vendor/libuv/ChangeLog +6100 -0
  34. winloop-0.1.6/vendor/libuv/LICENSE +19 -0
  35. winloop-0.1.6/vendor/libuv/LICENSE-docs +396 -0
  36. winloop-0.1.6/vendor/libuv/LICENSE-extra +36 -0
  37. winloop-0.1.6/vendor/libuv/LINKS.md +109 -0
  38. winloop-0.1.6/vendor/libuv/MAINTAINERS.md +56 -0
  39. winloop-0.1.6/vendor/libuv/Makefile.am +560 -0
  40. winloop-0.1.6/vendor/libuv/README.md +345 -0
  41. winloop-0.1.6/vendor/libuv/SECURITY.md +27 -0
  42. winloop-0.1.6/vendor/libuv/SUPPORTED_PLATFORMS.md +68 -0
  43. winloop-0.1.6/vendor/libuv/autogen.sh +75 -0
  44. winloop-0.1.6/vendor/libuv/cmake-toolchains/cross-mingw32.cmake +17 -0
  45. winloop-0.1.6/vendor/libuv/configure.ac +92 -0
  46. winloop-0.1.6/vendor/libuv/include/uv/aix.h +32 -0
  47. winloop-0.1.6/vendor/libuv/include/uv/bsd.h +34 -0
  48. winloop-0.1.6/vendor/libuv/include/uv/darwin.h +61 -0
  49. winloop-0.1.6/vendor/libuv/include/uv/errno.h +477 -0
  50. winloop-0.1.6/vendor/libuv/include/uv/linux.h +34 -0
  51. winloop-0.1.6/vendor/libuv/include/uv/os390.h +33 -0
  52. winloop-0.1.6/vendor/libuv/include/uv/posix.h +31 -0
  53. winloop-0.1.6/vendor/libuv/include/uv/sunos.h +44 -0
  54. winloop-0.1.6/vendor/libuv/include/uv/threadpool.h +37 -0
  55. winloop-0.1.6/vendor/libuv/include/uv/tree.h +768 -0
  56. winloop-0.1.6/vendor/libuv/include/uv/unix.h +509 -0
  57. winloop-0.1.6/vendor/libuv/include/uv/version.h +43 -0
  58. winloop-0.1.6/vendor/libuv/include/uv/win.h +703 -0
  59. winloop-0.1.6/vendor/libuv/include/uv.h +1968 -0
  60. winloop-0.1.6/vendor/libuv/libuv-static.pc.in +12 -0
  61. winloop-0.1.6/vendor/libuv/libuv.pc.in +13 -0
  62. winloop-0.1.6/vendor/libuv/m4/.gitignore +5 -0
  63. winloop-0.1.6/vendor/libuv/m4/as_case.m4 +21 -0
  64. winloop-0.1.6/vendor/libuv/m4/ax_pthread.m4 +485 -0
  65. winloop-0.1.6/vendor/libuv/m4/libuv-check-flags.m4 +336 -0
  66. winloop-0.1.6/vendor/libuv/m4/libuv-check-versions.m4 +7 -0
  67. winloop-0.1.6/vendor/libuv/src/heap-inl.h +245 -0
  68. winloop-0.1.6/vendor/libuv/src/idna.h +31 -0
  69. winloop-0.1.6/vendor/libuv/src/queue.h +90 -0
  70. winloop-0.1.6/vendor/libuv/src/strscpy.h +39 -0
  71. winloop-0.1.6/vendor/libuv/src/strtok.h +27 -0
  72. winloop-0.1.6/vendor/libuv/src/unix/aix-common.c +89 -0
  73. winloop-0.1.6/vendor/libuv/src/unix/aix.c +1320 -0
  74. winloop-0.1.6/vendor/libuv/src/unix/async.c +329 -0
  75. winloop-0.1.6/vendor/libuv/src/unix/bsd-ifaddrs.c +163 -0
  76. winloop-0.1.6/vendor/libuv/src/unix/bsd-proctitle.c +99 -0
  77. winloop-0.1.6/vendor/libuv/src/unix/core.c +1957 -0
  78. winloop-0.1.6/vendor/libuv/src/unix/cygwin.c +93 -0
  79. winloop-0.1.6/vendor/libuv/src/unix/darwin-proctitle.c +192 -0
  80. winloop-0.1.6/vendor/libuv/src/unix/darwin-stub.h +97 -0
  81. winloop-0.1.6/vendor/libuv/src/unix/darwin.c +237 -0
  82. winloop-0.1.6/vendor/libuv/src/unix/dl.c +80 -0
  83. winloop-0.1.6/vendor/libuv/src/unix/freebsd.c +285 -0
  84. winloop-0.1.6/vendor/libuv/src/unix/fs.c +2304 -0
  85. winloop-0.1.6/vendor/libuv/src/unix/fsevents.c +910 -0
  86. winloop-0.1.6/vendor/libuv/src/unix/getaddrinfo.c +252 -0
  87. winloop-0.1.6/vendor/libuv/src/unix/getnameinfo.c +121 -0
  88. winloop-0.1.6/vendor/libuv/src/unix/haiku.c +172 -0
  89. winloop-0.1.6/vendor/libuv/src/unix/hurd.c +172 -0
  90. winloop-0.1.6/vendor/libuv/src/unix/ibmi.c +542 -0
  91. winloop-0.1.6/vendor/libuv/src/unix/internal.h +486 -0
  92. winloop-0.1.6/vendor/libuv/src/unix/kqueue.c +624 -0
  93. winloop-0.1.6/vendor/libuv/src/unix/linux.c +2679 -0
  94. winloop-0.1.6/vendor/libuv/src/unix/loop-watcher.c +68 -0
  95. winloop-0.1.6/vendor/libuv/src/unix/loop.c +228 -0
  96. winloop-0.1.6/vendor/libuv/src/unix/netbsd.c +264 -0
  97. winloop-0.1.6/vendor/libuv/src/unix/no-fsevents.c +42 -0
  98. winloop-0.1.6/vendor/libuv/src/unix/no-proctitle.c +45 -0
  99. winloop-0.1.6/vendor/libuv/src/unix/openbsd.c +245 -0
  100. winloop-0.1.6/vendor/libuv/src/unix/os390-proctitle.c +136 -0
  101. winloop-0.1.6/vendor/libuv/src/unix/os390-syscalls.c +536 -0
  102. winloop-0.1.6/vendor/libuv/src/unix/os390-syscalls.h +75 -0
  103. winloop-0.1.6/vendor/libuv/src/unix/os390.c +1070 -0
  104. winloop-0.1.6/vendor/libuv/src/unix/pipe.c +542 -0
  105. winloop-0.1.6/vendor/libuv/src/unix/poll.c +160 -0
  106. winloop-0.1.6/vendor/libuv/src/unix/posix-hrtime.c +36 -0
  107. winloop-0.1.6/vendor/libuv/src/unix/posix-poll.c +385 -0
  108. winloop-0.1.6/vendor/libuv/src/unix/process.c +1109 -0
  109. winloop-0.1.6/vendor/libuv/src/unix/procfs-exepath.c +45 -0
  110. winloop-0.1.6/vendor/libuv/src/unix/proctitle.c +157 -0
  111. winloop-0.1.6/vendor/libuv/src/unix/qnx.c +142 -0
  112. winloop-0.1.6/vendor/libuv/src/unix/random-devurandom.c +93 -0
  113. winloop-0.1.6/vendor/libuv/src/unix/random-getentropy.c +57 -0
  114. winloop-0.1.6/vendor/libuv/src/unix/random-getrandom.c +86 -0
  115. winloop-0.1.6/vendor/libuv/src/unix/random-sysctl-linux.c +99 -0
  116. winloop-0.1.6/vendor/libuv/src/unix/signal.c +575 -0
  117. winloop-0.1.6/vendor/libuv/src/unix/stream.c +1566 -0
  118. winloop-0.1.6/vendor/libuv/src/unix/sunos.c +907 -0
  119. winloop-0.1.6/vendor/libuv/src/unix/sysinfo-loadavg.c +36 -0
  120. winloop-0.1.6/vendor/libuv/src/unix/sysinfo-memory.c +42 -0
  121. winloop-0.1.6/vendor/libuv/src/unix/tcp.c +659 -0
  122. winloop-0.1.6/vendor/libuv/src/unix/thread.c +877 -0
  123. winloop-0.1.6/vendor/libuv/src/unix/tty.c +472 -0
  124. winloop-0.1.6/vendor/libuv/src/unix/udp.c +1390 -0
  125. winloop-0.1.6/vendor/libuv/src/uv-common.h +433 -0
  126. winloop-0.1.6/vendor/libuv/src/win/atomicops-inl.h +61 -0
  127. winloop-0.1.6/vendor/libuv/src/win/fs-fd-hash-inl.h +200 -0
  128. winloop-0.1.6/vendor/libuv/src/win/handle-inl.h +180 -0
  129. winloop-0.1.6/vendor/libuv/src/win/internal.h +333 -0
  130. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/pipe.c +10 -5
  131. winloop-0.1.6/vendor/libuv/src/win/req-inl.h +214 -0
  132. winloop-0.1.6/vendor/libuv/src/win/stream-inl.h +54 -0
  133. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/tcp.c +6 -0
  134. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/udp.c +6 -0
  135. winloop-0.1.6/vendor/libuv/src/win/winapi.h +4769 -0
  136. winloop-0.1.6/vendor/libuv/src/win/winsock.h +201 -0
  137. winloop-0.1.6/vendor/libuv/test/benchmark-async-pummel.c +120 -0
  138. winloop-0.1.6/vendor/libuv/test/benchmark-async.c +142 -0
  139. winloop-0.1.6/vendor/libuv/test/benchmark-fs-stat.c +138 -0
  140. winloop-0.1.6/vendor/libuv/test/benchmark-getaddrinfo.c +92 -0
  141. winloop-0.1.6/vendor/libuv/test/benchmark-list.h +173 -0
  142. winloop-0.1.6/vendor/libuv/test/benchmark-loop-count.c +134 -0
  143. winloop-0.1.6/vendor/libuv/test/benchmark-million-async.c +113 -0
  144. winloop-0.1.6/vendor/libuv/test/benchmark-million-timers.c +86 -0
  145. winloop-0.1.6/vendor/libuv/test/benchmark-multi-accept.c +451 -0
  146. winloop-0.1.6/vendor/libuv/test/benchmark-ping-pongs.c +221 -0
  147. winloop-0.1.6/vendor/libuv/test/benchmark-ping-udp.c +169 -0
  148. winloop-0.1.6/vendor/libuv/test/benchmark-pound.c +351 -0
  149. winloop-0.1.6/vendor/libuv/test/benchmark-pump.c +478 -0
  150. winloop-0.1.6/vendor/libuv/test/benchmark-queue-work.c +71 -0
  151. winloop-0.1.6/vendor/libuv/test/benchmark-sizes.c +46 -0
  152. winloop-0.1.6/vendor/libuv/test/benchmark-spawn.c +164 -0
  153. winloop-0.1.6/vendor/libuv/test/benchmark-tcp-write-batch.c +144 -0
  154. winloop-0.1.6/vendor/libuv/test/benchmark-thread.c +64 -0
  155. winloop-0.1.6/vendor/libuv/test/benchmark-udp-pummel.c +243 -0
  156. winloop-0.1.6/vendor/libuv/test/blackhole-server.c +122 -0
  157. winloop-0.1.6/vendor/libuv/test/echo-server.c +431 -0
  158. winloop-0.1.6/vendor/libuv/test/fixtures/empty_file +0 -0
  159. winloop-0.1.6/vendor/libuv/test/fixtures/load_error.node +1 -0
  160. winloop-0.1.6/vendor/libuv/test/fixtures/lorem_ipsum.txt +1 -0
  161. winloop-0.1.6/vendor/libuv/test/fixtures/one_file/one_file +0 -0
  162. winloop-0.1.6/vendor/libuv/test/run-benchmarks.c +72 -0
  163. winloop-0.1.6/vendor/libuv/test/run-tests.c +269 -0
  164. winloop-0.1.6/vendor/libuv/test/runner-unix.c +456 -0
  165. winloop-0.1.6/vendor/libuv/test/runner-unix.h +36 -0
  166. winloop-0.1.6/vendor/libuv/test/runner-win.c +346 -0
  167. winloop-0.1.6/vendor/libuv/test/runner-win.h +41 -0
  168. winloop-0.1.6/vendor/libuv/test/runner.c +435 -0
  169. winloop-0.1.6/vendor/libuv/test/runner.h +172 -0
  170. winloop-0.1.6/vendor/libuv/test/task.h +384 -0
  171. winloop-0.1.6/vendor/libuv/test/test-active.c +84 -0
  172. winloop-0.1.6/vendor/libuv/test/test-async-null-cb.c +64 -0
  173. winloop-0.1.6/vendor/libuv/test/test-async.c +134 -0
  174. winloop-0.1.6/vendor/libuv/test/test-barrier.c +160 -0
  175. winloop-0.1.6/vendor/libuv/test/test-callback-stack.c +209 -0
  176. winloop-0.1.6/vendor/libuv/test/test-close-fd.c +84 -0
  177. winloop-0.1.6/vendor/libuv/test/test-close-order.c +80 -0
  178. winloop-0.1.6/vendor/libuv/test/test-condvar.c +248 -0
  179. winloop-0.1.6/vendor/libuv/test/test-connect-unspecified.c +64 -0
  180. winloop-0.1.6/vendor/libuv/test/test-connection-fail.c +161 -0
  181. winloop-0.1.6/vendor/libuv/test/test-cwd-and-chdir.c +57 -0
  182. winloop-0.1.6/vendor/libuv/test/test-default-loop-close.c +58 -0
  183. winloop-0.1.6/vendor/libuv/test/test-delayed-accept.c +189 -0
  184. winloop-0.1.6/vendor/libuv/test/test-dlerror.c +65 -0
  185. winloop-0.1.6/vendor/libuv/test/test-eintr-handling.c +96 -0
  186. winloop-0.1.6/vendor/libuv/test/test-embed.c +79 -0
  187. winloop-0.1.6/vendor/libuv/test/test-emfile.c +121 -0
  188. winloop-0.1.6/vendor/libuv/test/test-env-vars.c +178 -0
  189. winloop-0.1.6/vendor/libuv/test/test-error.c +82 -0
  190. winloop-0.1.6/vendor/libuv/test/test-fail-always.c +29 -0
  191. winloop-0.1.6/vendor/libuv/test/test-fork.c +769 -0
  192. winloop-0.1.6/vendor/libuv/test/test-fs-copyfile.c +232 -0
  193. winloop-0.1.6/vendor/libuv/test/test-fs-event.c +1237 -0
  194. winloop-0.1.6/vendor/libuv/test/test-fs-fd-hash.c +133 -0
  195. winloop-0.1.6/vendor/libuv/test/test-fs-open-flags.c +435 -0
  196. winloop-0.1.6/vendor/libuv/test/test-fs-poll.c +292 -0
  197. winloop-0.1.6/vendor/libuv/test/test-fs-readdir.c +462 -0
  198. winloop-0.1.6/vendor/libuv/test/test-fs.c +4642 -0
  199. winloop-0.1.6/vendor/libuv/test/test-get-currentexe.c +109 -0
  200. winloop-0.1.6/vendor/libuv/test/test-get-loadavg.c +35 -0
  201. winloop-0.1.6/vendor/libuv/test/test-get-memory.c +53 -0
  202. winloop-0.1.6/vendor/libuv/test/test-get-passwd.c +211 -0
  203. winloop-0.1.6/vendor/libuv/test/test-getaddrinfo.c +215 -0
  204. winloop-0.1.6/vendor/libuv/test/test-gethostname.c +58 -0
  205. winloop-0.1.6/vendor/libuv/test/test-getnameinfo.c +116 -0
  206. winloop-0.1.6/vendor/libuv/test/test-getsockname.c +362 -0
  207. winloop-0.1.6/vendor/libuv/test/test-getters-setters.c +114 -0
  208. winloop-0.1.6/vendor/libuv/test/test-gettimeofday.c +39 -0
  209. winloop-0.1.6/vendor/libuv/test/test-handle-fileno.c +125 -0
  210. winloop-0.1.6/vendor/libuv/test/test-homedir.c +72 -0
  211. winloop-0.1.6/vendor/libuv/test/test-hrtime.c +65 -0
  212. winloop-0.1.6/vendor/libuv/test/test-idle.c +125 -0
  213. winloop-0.1.6/vendor/libuv/test/test-idna.c +220 -0
  214. winloop-0.1.6/vendor/libuv/test/test-iouring-pollhup.c +111 -0
  215. winloop-0.1.6/vendor/libuv/test/test-ip-name.c +65 -0
  216. winloop-0.1.6/vendor/libuv/test/test-ip4-addr.c +55 -0
  217. winloop-0.1.6/vendor/libuv/test/test-ip6-addr.c +175 -0
  218. winloop-0.1.6/vendor/libuv/test/test-ipc-heavy-traffic-deadlock-bug.c +159 -0
  219. winloop-0.1.6/vendor/libuv/test/test-ipc-send-recv.c +435 -0
  220. winloop-0.1.6/vendor/libuv/test/test-ipc.c +857 -0
  221. winloop-0.1.6/vendor/libuv/test/test-list.h +1243 -0
  222. winloop-0.1.6/vendor/libuv/test/test-loop-alive.c +68 -0
  223. winloop-0.1.6/vendor/libuv/test/test-loop-close.c +77 -0
  224. winloop-0.1.6/vendor/libuv/test/test-loop-configure.c +38 -0
  225. winloop-0.1.6/vendor/libuv/test/test-loop-handles.c +337 -0
  226. winloop-0.1.6/vendor/libuv/test/test-loop-stop.c +83 -0
  227. winloop-0.1.6/vendor/libuv/test/test-loop-time.c +69 -0
  228. winloop-0.1.6/vendor/libuv/test/test-metrics.c +390 -0
  229. winloop-0.1.6/vendor/libuv/test/test-multiple-listen.c +109 -0
  230. winloop-0.1.6/vendor/libuv/test/test-mutexes.c +182 -0
  231. winloop-0.1.6/vendor/libuv/test/test-not-readable-nor-writable-on-read-error.c +104 -0
  232. winloop-0.1.6/vendor/libuv/test/test-not-writable-after-shutdown.c +69 -0
  233. winloop-0.1.6/vendor/libuv/test/test-osx-select.c +140 -0
  234. winloop-0.1.6/vendor/libuv/test/test-pass-always.c +28 -0
  235. winloop-0.1.6/vendor/libuv/test/test-ping-pong.c +439 -0
  236. winloop-0.1.6/vendor/libuv/test/test-pipe-bind-error.c +199 -0
  237. winloop-0.1.6/vendor/libuv/test/test-pipe-close-stdout-read-stdin.c +122 -0
  238. winloop-0.1.6/vendor/libuv/test/test-pipe-connect-error.c +97 -0
  239. winloop-0.1.6/vendor/libuv/test/test-pipe-connect-multiple.c +178 -0
  240. winloop-0.1.6/vendor/libuv/test/test-pipe-connect-prepare.c +83 -0
  241. winloop-0.1.6/vendor/libuv/test/test-pipe-getsockname.c +290 -0
  242. winloop-0.1.6/vendor/libuv/test/test-pipe-pending-instances.c +59 -0
  243. winloop-0.1.6/vendor/libuv/test/test-pipe-sendmsg.c +172 -0
  244. winloop-0.1.6/vendor/libuv/test/test-pipe-server-close.c +94 -0
  245. winloop-0.1.6/vendor/libuv/test/test-pipe-set-fchmod.c +92 -0
  246. winloop-0.1.6/vendor/libuv/test/test-pipe-set-non-blocking.c +131 -0
  247. winloop-0.1.6/vendor/libuv/test/test-platform-output.c +240 -0
  248. winloop-0.1.6/vendor/libuv/test/test-poll-close-doesnt-corrupt-stack.c +114 -0
  249. winloop-0.1.6/vendor/libuv/test/test-poll-close.c +73 -0
  250. winloop-0.1.6/vendor/libuv/test/test-poll-closesocket.c +92 -0
  251. winloop-0.1.6/vendor/libuv/test/test-poll-multiple-handles.c +104 -0
  252. winloop-0.1.6/vendor/libuv/test/test-poll-oob.c +214 -0
  253. winloop-0.1.6/vendor/libuv/test/test-poll.c +697 -0
  254. winloop-0.1.6/vendor/libuv/test/test-process-priority.c +83 -0
  255. winloop-0.1.6/vendor/libuv/test/test-process-title-threadsafe.c +108 -0
  256. winloop-0.1.6/vendor/libuv/test/test-process-title.c +135 -0
  257. winloop-0.1.6/vendor/libuv/test/test-queue-foreach-delete.c +205 -0
  258. winloop-0.1.6/vendor/libuv/test/test-random.c +94 -0
  259. winloop-0.1.6/vendor/libuv/test/test-readable-on-eof.c +110 -0
  260. winloop-0.1.6/vendor/libuv/test/test-ref.c +445 -0
  261. winloop-0.1.6/vendor/libuv/test/test-run-nowait.c +46 -0
  262. winloop-0.1.6/vendor/libuv/test/test-run-once.c +48 -0
  263. winloop-0.1.6/vendor/libuv/test/test-semaphore.c +111 -0
  264. winloop-0.1.6/vendor/libuv/test/test-shutdown-close.c +108 -0
  265. winloop-0.1.6/vendor/libuv/test/test-shutdown-eof.c +188 -0
  266. winloop-0.1.6/vendor/libuv/test/test-shutdown-simultaneous.c +135 -0
  267. winloop-0.1.6/vendor/libuv/test/test-shutdown-twice.c +85 -0
  268. winloop-0.1.6/vendor/libuv/test/test-signal-multiple-loops.c +325 -0
  269. winloop-0.1.6/vendor/libuv/test/test-signal-pending-on-close.c +116 -0
  270. winloop-0.1.6/vendor/libuv/test/test-signal.c +325 -0
  271. winloop-0.1.6/vendor/libuv/test/test-socket-buffer-size.c +77 -0
  272. winloop-0.1.6/vendor/libuv/test/test-spawn.c +2114 -0
  273. winloop-0.1.6/vendor/libuv/test/test-stdio-over-pipes.c +299 -0
  274. winloop-0.1.6/vendor/libuv/test/test-strscpy.c +53 -0
  275. winloop-0.1.6/vendor/libuv/test/test-strtok.c +90 -0
  276. winloop-0.1.6/vendor/libuv/test/test-tcp-alloc-cb-fail.c +123 -0
  277. winloop-0.1.6/vendor/libuv/test/test-tcp-bind-error.c +317 -0
  278. winloop-0.1.6/vendor/libuv/test/test-tcp-bind6-error.c +176 -0
  279. winloop-0.1.6/vendor/libuv/test/test-tcp-close-accept.c +198 -0
  280. winloop-0.1.6/vendor/libuv/test/test-tcp-close-after-read-timeout.c +183 -0
  281. winloop-0.1.6/vendor/libuv/test/test-tcp-close-reset.c +340 -0
  282. winloop-0.1.6/vendor/libuv/test/test-tcp-close-while-connecting.c +97 -0
  283. winloop-0.1.6/vendor/libuv/test/test-tcp-close.c +136 -0
  284. winloop-0.1.6/vendor/libuv/test/test-tcp-connect-error-after-write.c +98 -0
  285. winloop-0.1.6/vendor/libuv/test/test-tcp-connect-error.c +73 -0
  286. winloop-0.1.6/vendor/libuv/test/test-tcp-connect-timeout.c +196 -0
  287. winloop-0.1.6/vendor/libuv/test/test-tcp-connect6-error.c +129 -0
  288. winloop-0.1.6/vendor/libuv/test/test-tcp-create-socket-early.c +213 -0
  289. winloop-0.1.6/vendor/libuv/test/test-tcp-flags.c +59 -0
  290. winloop-0.1.6/vendor/libuv/test/test-tcp-oob.c +146 -0
  291. winloop-0.1.6/vendor/libuv/test/test-tcp-open.c +407 -0
  292. winloop-0.1.6/vendor/libuv/test/test-tcp-read-stop-start.c +136 -0
  293. winloop-0.1.6/vendor/libuv/test/test-tcp-read-stop.c +76 -0
  294. winloop-0.1.6/vendor/libuv/test/test-tcp-reuseport.c +248 -0
  295. winloop-0.1.6/vendor/libuv/test/test-tcp-rst.c +110 -0
  296. winloop-0.1.6/vendor/libuv/test/test-tcp-shutdown-after-write.c +138 -0
  297. winloop-0.1.6/vendor/libuv/test/test-tcp-try-write-error.c +109 -0
  298. winloop-0.1.6/vendor/libuv/test/test-tcp-try-write.c +135 -0
  299. winloop-0.1.6/vendor/libuv/test/test-tcp-unexpected-read.c +117 -0
  300. winloop-0.1.6/vendor/libuv/test/test-tcp-write-after-connect.c +77 -0
  301. winloop-0.1.6/vendor/libuv/test/test-tcp-write-fail.c +115 -0
  302. winloop-0.1.6/vendor/libuv/test/test-tcp-write-in-a-row.c +143 -0
  303. winloop-0.1.6/vendor/libuv/test/test-tcp-write-queue-order.c +139 -0
  304. winloop-0.1.6/vendor/libuv/test/test-tcp-write-to-half-open-connection.c +141 -0
  305. winloop-0.1.6/vendor/libuv/test/test-tcp-writealot.c +185 -0
  306. winloop-0.1.6/vendor/libuv/test/test-test-macros.c +42 -0
  307. winloop-0.1.6/vendor/libuv/test/test-thread-affinity.c +154 -0
  308. winloop-0.1.6/vendor/libuv/test/test-thread-equal.c +51 -0
  309. winloop-0.1.6/vendor/libuv/test/test-thread-priority.c +105 -0
  310. winloop-0.1.6/vendor/libuv/test/test-thread.c +296 -0
  311. winloop-0.1.6/vendor/libuv/test/test-threadpool-cancel.c +418 -0
  312. winloop-0.1.6/vendor/libuv/test/test-threadpool.c +76 -0
  313. winloop-0.1.6/vendor/libuv/test/test-timer-again.c +141 -0
  314. winloop-0.1.6/vendor/libuv/test/test-timer-from-check.c +80 -0
  315. winloop-0.1.6/vendor/libuv/test/test-timer.c +453 -0
  316. winloop-0.1.6/vendor/libuv/test/test-tmpdir.c +82 -0
  317. winloop-0.1.6/vendor/libuv/test/test-tty-duplicate-key.c +321 -0
  318. winloop-0.1.6/vendor/libuv/test/test-tty-escape-sequence-processing.c +1632 -0
  319. winloop-0.1.6/vendor/libuv/test/test-tty.c +468 -0
  320. winloop-0.1.6/vendor/libuv/test/test-udp-alloc-cb-fail.c +196 -0
  321. winloop-0.1.6/vendor/libuv/test/test-udp-bind.c +93 -0
  322. winloop-0.1.6/vendor/libuv/test/test-udp-connect.c +196 -0
  323. winloop-0.1.6/vendor/libuv/test/test-udp-connect6.c +199 -0
  324. winloop-0.1.6/vendor/libuv/test/test-udp-create-socket-early.c +139 -0
  325. winloop-0.1.6/vendor/libuv/test/test-udp-dgram-too-big.c +91 -0
  326. winloop-0.1.6/vendor/libuv/test/test-udp-ipv6.c +259 -0
  327. winloop-0.1.6/vendor/libuv/test/test-udp-mmsg.c +149 -0
  328. winloop-0.1.6/vendor/libuv/test/test-udp-multicast-interface.c +104 -0
  329. winloop-0.1.6/vendor/libuv/test/test-udp-multicast-interface6.c +108 -0
  330. winloop-0.1.6/vendor/libuv/test/test-udp-multicast-join.c +184 -0
  331. winloop-0.1.6/vendor/libuv/test/test-udp-multicast-join6.c +218 -0
  332. winloop-0.1.6/vendor/libuv/test/test-udp-multicast-ttl.c +94 -0
  333. winloop-0.1.6/vendor/libuv/test/test-udp-open.c +350 -0
  334. winloop-0.1.6/vendor/libuv/test/test-udp-options.c +160 -0
  335. winloop-0.1.6/vendor/libuv/test/test-udp-recv-in-a-row.c +121 -0
  336. winloop-0.1.6/vendor/libuv/test/test-udp-reuseport.c +287 -0
  337. winloop-0.1.6/vendor/libuv/test/test-udp-send-and-recv.c +212 -0
  338. winloop-0.1.6/vendor/libuv/test/test-udp-send-hang-loop.c +99 -0
  339. winloop-0.1.6/vendor/libuv/test/test-udp-send-immediate.c +148 -0
  340. winloop-0.1.6/vendor/libuv/test/test-udp-send-unreachable.c +201 -0
  341. winloop-0.1.6/vendor/libuv/test/test-udp-sendmmsg-error.c +75 -0
  342. winloop-0.1.6/vendor/libuv/test/test-udp-try-send.c +121 -0
  343. winloop-0.1.6/vendor/libuv/test/test-uname.c +69 -0
  344. winloop-0.1.6/vendor/libuv/test/test-walk-handles.c +77 -0
  345. winloop-0.1.6/vendor/libuv/test/test-watcher-cross-stop.c +112 -0
  346. winloop-0.1.6/vendor/libuv/tools/make_dist_html.py +122 -0
  347. winloop-0.1.6/vendor/libuv/tools/vswhere_usability_wrapper.cmd +33 -0
  348. winloop-0.1.6/vendor/libuv/tsansupp.txt +2 -0
  349. winloop-0.1.6/vendor/libuv/uv_win_longpath.manifest +8 -0
  350. {winloop-0.1.4 → winloop-0.1.6}/winloop/__init__.py +4 -14
  351. {winloop-0.1.4 → winloop-0.1.6}/winloop/_testbase.py +4 -5
  352. {winloop-0.1.4 → winloop-0.1.6}/winloop/_version.py +1 -1
  353. winloop-0.1.6/winloop/cbhandles.pxd +39 -0
  354. winloop-0.1.6/winloop/cbhandles.pyx +434 -0
  355. winloop-0.1.6/winloop/dns.pyx +483 -0
  356. winloop-0.1.6/winloop/errors.pyx +83 -0
  357. winloop-0.1.6/winloop/handles/async_.pxd +11 -0
  358. winloop-0.1.6/winloop/handles/async_.pyx +56 -0
  359. winloop-0.1.6/winloop/handles/basetransport.pxd +54 -0
  360. winloop-0.1.6/winloop/handles/basetransport.pyx +293 -0
  361. winloop-0.1.6/winloop/handles/check.pxd +14 -0
  362. winloop-0.1.6/winloop/handles/check.pyx +72 -0
  363. winloop-0.1.6/winloop/handles/fsevent.pxd +12 -0
  364. winloop-0.1.6/winloop/handles/fsevent.pyx +116 -0
  365. winloop-0.1.6/winloop/handles/handle.pxd +48 -0
  366. winloop-0.1.6/winloop/handles/handle.pyx +395 -0
  367. winloop-0.1.6/winloop/handles/idle.pxd +14 -0
  368. winloop-0.1.6/winloop/handles/idle.pyx +72 -0
  369. winloop-0.1.6/winloop/handles/pipe.pxd +33 -0
  370. winloop-0.1.6/winloop/handles/pipe.pyx +226 -0
  371. winloop-0.1.6/winloop/handles/poll.pxd +25 -0
  372. winloop-0.1.6/winloop/handles/poll.pyx +237 -0
  373. winloop-0.1.6/winloop/handles/process.pxd +80 -0
  374. winloop-0.1.6/winloop/handles/process.pyx +844 -0
  375. winloop-0.1.6/winloop/handles/stream.pxd +50 -0
  376. winloop-0.1.6/winloop/handles/stream.pyx +1030 -0
  377. winloop-0.1.6/winloop/handles/streamserver.pxd +26 -0
  378. winloop-0.1.6/winloop/handles/streamserver.pyx +150 -0
  379. winloop-0.1.6/winloop/handles/tcp.pxd +26 -0
  380. winloop-0.1.6/winloop/handles/tcp.pyx +228 -0
  381. winloop-0.1.6/winloop/handles/timer.pxd +18 -0
  382. winloop-0.1.6/winloop/handles/timer.pyx +89 -0
  383. winloop-0.1.6/winloop/handles/udp.pxd +22 -0
  384. winloop-0.1.6/winloop/handles/udp.pyx +409 -0
  385. winloop-0.1.6/winloop/includes/compat.h +158 -0
  386. winloop-0.1.6/winloop/includes/consts.pxi +25 -0
  387. winloop-0.1.6/winloop/includes/debug.h +3 -0
  388. winloop-0.1.6/winloop/includes/debug.pxd +3 -0
  389. winloop-0.1.6/winloop/includes/flowcontrol.pxd +23 -0
  390. winloop-0.1.6/winloop/includes/fork_handler.h +51 -0
  391. winloop-0.1.6/winloop/includes/python.pxd +31 -0
  392. winloop-0.1.6/winloop/includes/stdlib.pxi +178 -0
  393. winloop-0.1.6/winloop/includes/system.pxd +82 -0
  394. winloop-0.1.6/winloop/includes/uv.pxd +516 -0
  395. {winloop-0.1.4 → winloop-0.1.6}/winloop/loop.c +14534 -12880
  396. winloop-0.1.6/winloop/loop.pxd +229 -0
  397. winloop-0.1.6/winloop/loop.pyx +3420 -0
  398. winloop-0.1.6/winloop/lru.pyx +79 -0
  399. winloop-0.1.6/winloop/pseudosock.pyx +209 -0
  400. winloop-0.1.6/winloop/py.typed +0 -0
  401. winloop-0.1.6/winloop/request.pxd +8 -0
  402. winloop-0.1.6/winloop/request.pyx +65 -0
  403. winloop-0.1.6/winloop/server.pxd +19 -0
  404. winloop-0.1.6/winloop/server.pyx +136 -0
  405. winloop-0.1.6/winloop/sslproto.pxd +138 -0
  406. winloop-0.1.6/winloop/sslproto.pyx +950 -0
  407. {winloop-0.1.4 → winloop-0.1.6/winloop.egg-info}/PKG-INFO +26 -4
  408. winloop-0.1.6/winloop.egg-info/SOURCES.txt +471 -0
  409. winloop-0.1.6/winloop.egg-info/not-zip-safe +1 -0
  410. winloop-0.1.6/winloop.egg-info/requires.txt +19 -0
  411. {winloop-0.1.4 → winloop-0.1.6}/winloop.egg-info/top_level.txt +0 -1
  412. winloop-0.1.6/winloop.png +0 -0
  413. winloop-0.1.4/pyproject.toml +0 -9
  414. winloop-0.1.4/setup.py +0 -122
  415. winloop-0.1.4/winloop.egg-info/SOURCES.txt +0 -72
  416. {winloop-0.1.4 → winloop-0.1.6}/LICENSE-APACHE +0 -0
  417. {winloop-0.1.4 → winloop-0.1.6}/LICENSE-MIT +0 -0
  418. {winloop-0.1.4 → winloop-0.1.6}/README.md +0 -0
  419. {winloop-0.1.4 → winloop-0.1.6}/setup.cfg +0 -0
  420. {winloop-0.1.4 → winloop-0.1.6}/tests/__init__.py +0 -0
  421. {winloop-0.1.4 → winloop-0.1.6}/tests/__main__.py +0 -0
  422. {winloop-0.1.4 → winloop-0.1.6}/tests/test_aiodns.py +0 -0
  423. {winloop-0.1.4 → winloop-0.1.6}/tests/test_aiohttp.py +0 -0
  424. {winloop-0.1.4 → winloop-0.1.6}/tests/test_aiomultiprocess.py +0 -0
  425. {winloop-0.1.4 → winloop-0.1.6}/tests/test_base.py +0 -0
  426. {winloop-0.1.4 → winloop-0.1.6}/tests/test_context.py +0 -0
  427. {winloop-0.1.4 → winloop-0.1.6}/tests/test_cython.py +0 -0
  428. {winloop-0.1.4 → winloop-0.1.6}/tests/test_dealloc.py +0 -0
  429. {winloop-0.1.4 → winloop-0.1.6}/tests/test_dns.py +0 -0
  430. {winloop-0.1.4 → winloop-0.1.6}/tests/test_executors.py +0 -0
  431. {winloop-0.1.4 → winloop-0.1.6}/tests/test_libuv_api.py +0 -0
  432. {winloop-0.1.4 → winloop-0.1.6}/tests/test_process_spawning.py +0 -0
  433. {winloop-0.1.4 → winloop-0.1.6}/tests/test_regr1.py +0 -0
  434. {winloop-0.1.4 → winloop-0.1.6}/tests/test_runner.py +0 -0
  435. {winloop-0.1.4 → winloop-0.1.6}/tests/test_sourcecode.py +0 -0
  436. {winloop-0.1.4 → winloop-0.1.6}/tests/test_testbase.py +0 -0
  437. {winloop-0.1.4 → winloop-0.1.6}/tests/test_udp.py +0 -0
  438. {winloop-0.1.4 → winloop-0.1.6}/tests/test_unix.py +0 -0
  439. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/fs-poll.c +0 -0
  440. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/idna.c +0 -0
  441. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/inet.c +0 -0
  442. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/random.c +0 -0
  443. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/strscpy.c +0 -0
  444. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/strtok.c +0 -0
  445. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/thread-common.c +0 -0
  446. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/threadpool.c +0 -0
  447. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/timer.c +0 -0
  448. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/uv-common.c +0 -0
  449. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/uv-data-getter-setters.c +0 -0
  450. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/version.c +0 -0
  451. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/async.c +0 -0
  452. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/core.c +0 -0
  453. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/detect-wakeup.c +0 -0
  454. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/dl.c +0 -0
  455. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/error.c +0 -0
  456. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/fs-event.c +0 -0
  457. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/fs.c +0 -0
  458. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/getaddrinfo.c +0 -0
  459. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/getnameinfo.c +0 -0
  460. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/handle.c +0 -0
  461. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/loop-watcher.c +0 -0
  462. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/poll.c +0 -0
  463. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/process-stdio.c +0 -0
  464. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/process.c +0 -0
  465. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/signal.c +0 -0
  466. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/snprintf.c +0 -0
  467. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/stream.c +0 -0
  468. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/thread.c +0 -0
  469. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/tty.c +0 -0
  470. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/util.c +0 -0
  471. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/winapi.c +0 -0
  472. {winloop-0.1.4 → winloop-0.1.6}/vendor/libuv/src/win/winsock.c +0 -0
  473. {winloop-0.1.4 → winloop-0.1.6}/winloop/_noop.py +0 -0
  474. {winloop-0.1.4 → winloop-0.1.6}/winloop/includes/__init__.py +0 -0
  475. {winloop-0.1.4 → winloop-0.1.6}/winloop/loop.pyi +0 -0
  476. {winloop-0.1.4 → winloop-0.1.6}/winloop.egg-info/dependency_links.txt +0 -0
winloop-0.1.6/.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.6/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
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,22 +1,44 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: winloop
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: Windows version of uvloop
5
5
  Author: Vizonex
6
- Keywords: winloop,libuv,windows,fast-asyncio,uvloop-alternative
6
+ License: MIT License
7
+ Project-URL: github, https://github.com/Vizonex/Winloop
8
+ Keywords: asyncio,networking
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Framework :: AsyncIO
11
+ Classifier: Intended Audience :: Developers
7
12
  Classifier: License :: OSI Approved :: Apache Software License
8
13
  Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: POSIX
15
+ Classifier: Operating System :: MacOS :: MacOS X
9
16
  Classifier: Operating System :: Microsoft :: Windows
17
+ Classifier: Programming Language :: Python :: 3 :: Only
10
18
  Classifier: Programming Language :: Python :: 3.8
11
19
  Classifier: Programming Language :: Python :: 3.9
12
20
  Classifier: Programming Language :: Python :: 3.10
13
21
  Classifier: Programming Language :: Python :: 3.11
14
22
  Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Intended Audience :: Developers
16
- Classifier: Framework :: AsyncIO
23
+ Classifier: Programming Language :: Python :: Implementation :: CPython
24
+ Classifier: Topic :: System :: Networking
25
+ Requires-Python: >=3.8.0
17
26
  Description-Content-Type: text/markdown
18
27
  License-File: LICENSE-APACHE
19
28
  License-File: LICENSE-MIT
29
+ 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"
32
+ Requires-Dist: flake8~=5.0; extra == "test"
33
+ Requires-Dist: psutil; extra == "test"
34
+ Requires-Dist: pycodestyle~=2.9.0; extra == "test"
35
+ Requires-Dist: pyOpenSSL~=23.0.0; extra == "test"
36
+ Requires-Dist: mypy>=0.800; extra == "test"
37
+ Requires-Dist: Cython<0.30.0,>=0.29.36; extra == "test"
38
+ Provides-Extra: docs
39
+ Requires-Dist: Sphinx~=4.1.2; extra == "docs"
40
+ Requires-Dist: sphinxcontrib-asyncio~=0.3.0; extra == "docs"
41
+ Requires-Dist: sphinx_rtd_theme~=0.5.2; extra == "docs"
20
42
 
21
43
  <img src="https://raw.githubusercontent.com/Vizonex/Winloop/main/winloop.png" width="200px"/>
22
44
  <a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
@@ -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.6/mypy.ini ADDED
@@ -0,0 +1,6 @@
1
+ [mypy]
2
+ incremental = True
3
+ strict = True
4
+
5
+ [mypy-winloop._testbase]
6
+ ignore_errors = True
@@ -0,0 +1,78 @@
1
+ [project]
2
+ name = "winloop"
3
+ description = "Windows version of uvloop"
4
+ authors = [{name = "Vizonex"}]
5
+ requires-python = '>=3.8.0'
6
+ readme = "README.md"
7
+ license = {text = "MIT License"}
8
+ dynamic = ["version"]
9
+ keywords = [
10
+ "asyncio",
11
+ "networking",
12
+ ]
13
+ classifiers = [
14
+ "Development Status :: 5 - Production/Stable",
15
+ "Framework :: AsyncIO",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: Apache Software License",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Operating System :: POSIX",
20
+ "Operating System :: MacOS :: MacOS X",
21
+ "Operating System :: Microsoft :: Windows",
22
+ "Programming Language :: Python :: 3 :: Only",
23
+ "Programming Language :: Python :: 3.8",
24
+ "Programming Language :: Python :: 3.9",
25
+ "Programming Language :: Python :: 3.10",
26
+ "Programming Language :: Python :: 3.11",
27
+ "Programming Language :: Python :: 3.12",
28
+ "Programming Language :: Python :: Implementation :: CPython",
29
+ "Topic :: System :: Networking",
30
+ ]
31
+
32
+ [project.urls]
33
+ github = "https://github.com/Vizonex/Winloop"
34
+
35
+ [project.optional-dependencies]
36
+ test = [
37
+ # pycodestyle is a dependency of flake8, but it must be frozen because
38
+ # their combination breaks too often
39
+ # (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"',
42
+ 'flake8~=5.0',
43
+ 'psutil',
44
+ 'pycodestyle~=2.9.0',
45
+ 'pyOpenSSL~=23.0.0',
46
+ 'mypy>=0.800',
47
+ 'Cython(>=0.29.36,<0.30.0)',
48
+ ]
49
+ docs = [
50
+ 'Sphinx~=4.1.2',
51
+ 'sphinxcontrib-asyncio~=0.3.0',
52
+ 'sphinx_rtd_theme~=0.5.2',
53
+ ]
54
+
55
+ [build-system]
56
+ requires = [
57
+ "setuptools>=60",
58
+ "wheel",
59
+ "Cython(>=0.29.36,<0.30.0)",
60
+ ]
61
+ build-backend = "setuptools.build_meta"
62
+
63
+ [tool.setuptools]
64
+ zip-safe = false
65
+ packages = ["winloop"]
66
+
67
+ [tool.setuptools.exclude-package-data]
68
+ "*" = ["*.c", "*.h"]
69
+
70
+ [tool.cibuildwheel]
71
+ build-frontend = "build"
72
+ #test-extras = "test"
73
+ #test-command = "python -m unittest discover -v {project}/tests"
74
+
75
+ [tool.pytest.ini_options]
76
+ addopts = "--capture=no --assert=plain --strict-markers --tb=native --import-mode=importlib"
77
+ testpaths = "tests"
78
+ filterwarnings = "default"