winloop 0.1.5__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.
- winloop-0.1.6/.flake8 +8 -0
- winloop-0.1.6/MANIFEST.in +9 -0
- winloop-0.1.6/Makefile +55 -0
- {winloop-0.1.5/winloop.egg-info → winloop-0.1.6}/PKG-INFO +1 -1
- winloop-0.1.6/examples/bench/echoclient.py +100 -0
- winloop-0.1.6/examples/bench/echoserver.py +212 -0
- winloop-0.1.6/examples/bench/rlserver.py +93 -0
- winloop-0.1.6/mypy.ini +6 -0
- {winloop-0.1.5 → winloop-0.1.6}/pyproject.toml +0 -1
- winloop-0.1.6/tests/__main__.py +16 -0
- winloop-0.1.6/tests/certs/ssl_cert.pem +34 -0
- winloop-0.1.6/tests/certs/ssl_key.pem +40 -0
- winloop-0.1.6/vendor/libuv/.git +1 -0
- winloop-0.1.6/vendor/libuv/.gitattributes +1 -0
- winloop-0.1.6/vendor/libuv/.github/ISSUE_TEMPLATE.md +13 -0
- winloop-0.1.6/vendor/libuv/.github/workflows/CI-docs.yml +25 -0
- winloop-0.1.6/vendor/libuv/.github/workflows/CI-sample.yml +33 -0
- winloop-0.1.6/vendor/libuv/.github/workflows/CI-unix.yml +148 -0
- winloop-0.1.6/vendor/libuv/.github/workflows/CI-win.yml +130 -0
- winloop-0.1.6/vendor/libuv/.github/workflows/sanitizer.yml +128 -0
- winloop-0.1.6/vendor/libuv/.gitignore +80 -0
- winloop-0.1.6/vendor/libuv/.mailmap +67 -0
- winloop-0.1.6/vendor/libuv/.readthedocs.yaml +15 -0
- winloop-0.1.6/vendor/libuv/AUTHORS +569 -0
- winloop-0.1.6/vendor/libuv/CMakeLists.txt +807 -0
- winloop-0.1.6/vendor/libuv/CONTRIBUTING.md +171 -0
- winloop-0.1.6/vendor/libuv/ChangeLog +6100 -0
- winloop-0.1.6/vendor/libuv/LICENSE +19 -0
- winloop-0.1.6/vendor/libuv/LICENSE-docs +396 -0
- winloop-0.1.6/vendor/libuv/LICENSE-extra +36 -0
- winloop-0.1.6/vendor/libuv/LINKS.md +109 -0
- winloop-0.1.6/vendor/libuv/MAINTAINERS.md +56 -0
- winloop-0.1.6/vendor/libuv/Makefile.am +560 -0
- winloop-0.1.6/vendor/libuv/README.md +345 -0
- winloop-0.1.6/vendor/libuv/SECURITY.md +27 -0
- winloop-0.1.6/vendor/libuv/SUPPORTED_PLATFORMS.md +68 -0
- winloop-0.1.6/vendor/libuv/autogen.sh +75 -0
- winloop-0.1.6/vendor/libuv/cmake-toolchains/cross-mingw32.cmake +17 -0
- winloop-0.1.6/vendor/libuv/configure.ac +92 -0
- winloop-0.1.6/vendor/libuv/include/uv/aix.h +32 -0
- winloop-0.1.6/vendor/libuv/include/uv/bsd.h +34 -0
- winloop-0.1.6/vendor/libuv/include/uv/darwin.h +61 -0
- winloop-0.1.6/vendor/libuv/include/uv/errno.h +477 -0
- winloop-0.1.6/vendor/libuv/include/uv/linux.h +34 -0
- winloop-0.1.6/vendor/libuv/include/uv/os390.h +33 -0
- winloop-0.1.6/vendor/libuv/include/uv/posix.h +31 -0
- winloop-0.1.6/vendor/libuv/include/uv/sunos.h +44 -0
- winloop-0.1.6/vendor/libuv/include/uv/threadpool.h +37 -0
- winloop-0.1.6/vendor/libuv/include/uv/tree.h +768 -0
- winloop-0.1.6/vendor/libuv/include/uv/unix.h +509 -0
- winloop-0.1.6/vendor/libuv/include/uv/version.h +43 -0
- winloop-0.1.6/vendor/libuv/include/uv/win.h +703 -0
- winloop-0.1.6/vendor/libuv/include/uv.h +1968 -0
- winloop-0.1.6/vendor/libuv/libuv-static.pc.in +12 -0
- winloop-0.1.6/vendor/libuv/libuv.pc.in +13 -0
- winloop-0.1.6/vendor/libuv/m4/.gitignore +5 -0
- winloop-0.1.6/vendor/libuv/m4/as_case.m4 +21 -0
- winloop-0.1.6/vendor/libuv/m4/ax_pthread.m4 +485 -0
- winloop-0.1.6/vendor/libuv/m4/libuv-check-flags.m4 +336 -0
- winloop-0.1.6/vendor/libuv/m4/libuv-check-versions.m4 +7 -0
- winloop-0.1.6/vendor/libuv/src/fs-poll.c +287 -0
- winloop-0.1.6/vendor/libuv/src/heap-inl.h +245 -0
- winloop-0.1.6/vendor/libuv/src/idna.c +560 -0
- winloop-0.1.6/vendor/libuv/src/idna.h +31 -0
- winloop-0.1.6/vendor/libuv/src/inet.c +298 -0
- winloop-0.1.6/vendor/libuv/src/queue.h +90 -0
- winloop-0.1.6/vendor/libuv/src/random.c +123 -0
- winloop-0.1.6/vendor/libuv/src/strscpy.c +38 -0
- winloop-0.1.6/vendor/libuv/src/strscpy.h +39 -0
- winloop-0.1.6/vendor/libuv/src/strtok.c +52 -0
- winloop-0.1.6/vendor/libuv/src/strtok.h +27 -0
- winloop-0.1.6/vendor/libuv/src/thread-common.c +175 -0
- winloop-0.1.6/vendor/libuv/src/threadpool.c +418 -0
- winloop-0.1.6/vendor/libuv/src/timer.c +200 -0
- winloop-0.1.6/vendor/libuv/src/unix/aix-common.c +89 -0
- winloop-0.1.6/vendor/libuv/src/unix/aix.c +1320 -0
- winloop-0.1.6/vendor/libuv/src/unix/async.c +329 -0
- winloop-0.1.6/vendor/libuv/src/unix/bsd-ifaddrs.c +163 -0
- winloop-0.1.6/vendor/libuv/src/unix/bsd-proctitle.c +99 -0
- winloop-0.1.6/vendor/libuv/src/unix/core.c +1957 -0
- winloop-0.1.6/vendor/libuv/src/unix/cygwin.c +93 -0
- winloop-0.1.6/vendor/libuv/src/unix/darwin-proctitle.c +192 -0
- winloop-0.1.6/vendor/libuv/src/unix/darwin-stub.h +97 -0
- winloop-0.1.6/vendor/libuv/src/unix/darwin.c +237 -0
- winloop-0.1.6/vendor/libuv/src/unix/dl.c +80 -0
- winloop-0.1.6/vendor/libuv/src/unix/freebsd.c +285 -0
- winloop-0.1.6/vendor/libuv/src/unix/fs.c +2304 -0
- winloop-0.1.6/vendor/libuv/src/unix/fsevents.c +910 -0
- winloop-0.1.6/vendor/libuv/src/unix/getaddrinfo.c +252 -0
- winloop-0.1.6/vendor/libuv/src/unix/getnameinfo.c +121 -0
- winloop-0.1.6/vendor/libuv/src/unix/haiku.c +172 -0
- winloop-0.1.6/vendor/libuv/src/unix/hurd.c +172 -0
- winloop-0.1.6/vendor/libuv/src/unix/ibmi.c +542 -0
- winloop-0.1.6/vendor/libuv/src/unix/internal.h +486 -0
- winloop-0.1.6/vendor/libuv/src/unix/kqueue.c +624 -0
- winloop-0.1.6/vendor/libuv/src/unix/linux.c +2679 -0
- winloop-0.1.6/vendor/libuv/src/unix/loop-watcher.c +68 -0
- winloop-0.1.6/vendor/libuv/src/unix/loop.c +228 -0
- winloop-0.1.6/vendor/libuv/src/unix/netbsd.c +264 -0
- winloop-0.1.6/vendor/libuv/src/unix/no-fsevents.c +42 -0
- winloop-0.1.6/vendor/libuv/src/unix/no-proctitle.c +45 -0
- winloop-0.1.6/vendor/libuv/src/unix/openbsd.c +245 -0
- winloop-0.1.6/vendor/libuv/src/unix/os390-proctitle.c +136 -0
- winloop-0.1.6/vendor/libuv/src/unix/os390-syscalls.c +536 -0
- winloop-0.1.6/vendor/libuv/src/unix/os390-syscalls.h +75 -0
- winloop-0.1.6/vendor/libuv/src/unix/os390.c +1070 -0
- winloop-0.1.6/vendor/libuv/src/unix/pipe.c +542 -0
- winloop-0.1.6/vendor/libuv/src/unix/poll.c +160 -0
- winloop-0.1.6/vendor/libuv/src/unix/posix-hrtime.c +36 -0
- winloop-0.1.6/vendor/libuv/src/unix/posix-poll.c +385 -0
- winloop-0.1.6/vendor/libuv/src/unix/process.c +1109 -0
- winloop-0.1.6/vendor/libuv/src/unix/procfs-exepath.c +45 -0
- winloop-0.1.6/vendor/libuv/src/unix/proctitle.c +157 -0
- winloop-0.1.6/vendor/libuv/src/unix/qnx.c +142 -0
- winloop-0.1.6/vendor/libuv/src/unix/random-devurandom.c +93 -0
- winloop-0.1.6/vendor/libuv/src/unix/random-getentropy.c +57 -0
- winloop-0.1.6/vendor/libuv/src/unix/random-getrandom.c +86 -0
- winloop-0.1.6/vendor/libuv/src/unix/random-sysctl-linux.c +99 -0
- winloop-0.1.6/vendor/libuv/src/unix/signal.c +575 -0
- winloop-0.1.6/vendor/libuv/src/unix/stream.c +1566 -0
- winloop-0.1.6/vendor/libuv/src/unix/sunos.c +907 -0
- winloop-0.1.6/vendor/libuv/src/unix/sysinfo-loadavg.c +36 -0
- winloop-0.1.6/vendor/libuv/src/unix/sysinfo-memory.c +42 -0
- winloop-0.1.6/vendor/libuv/src/unix/tcp.c +659 -0
- winloop-0.1.6/vendor/libuv/src/unix/thread.c +877 -0
- winloop-0.1.6/vendor/libuv/src/unix/tty.c +472 -0
- winloop-0.1.6/vendor/libuv/src/unix/udp.c +1390 -0
- winloop-0.1.6/vendor/libuv/src/uv-common.c +1029 -0
- winloop-0.1.6/vendor/libuv/src/uv-common.h +433 -0
- winloop-0.1.6/vendor/libuv/src/uv-data-getter-setters.c +119 -0
- winloop-0.1.6/vendor/libuv/src/version.c +45 -0
- winloop-0.1.6/vendor/libuv/src/win/async.c +98 -0
- winloop-0.1.6/vendor/libuv/src/win/atomicops-inl.h +61 -0
- winloop-0.1.6/vendor/libuv/src/win/core.c +777 -0
- winloop-0.1.6/vendor/libuv/src/win/detect-wakeup.c +56 -0
- winloop-0.1.6/vendor/libuv/src/win/dl.c +135 -0
- winloop-0.1.6/vendor/libuv/src/win/error.c +173 -0
- winloop-0.1.6/vendor/libuv/src/win/fs-event.c +598 -0
- winloop-0.1.6/vendor/libuv/src/win/fs-fd-hash-inl.h +200 -0
- winloop-0.1.6/vendor/libuv/src/win/fs.c +3426 -0
- winloop-0.1.6/vendor/libuv/src/win/getaddrinfo.c +383 -0
- winloop-0.1.6/vendor/libuv/src/win/getnameinfo.c +146 -0
- winloop-0.1.6/vendor/libuv/src/win/handle-inl.h +180 -0
- winloop-0.1.6/vendor/libuv/src/win/handle.c +162 -0
- winloop-0.1.6/vendor/libuv/src/win/internal.h +333 -0
- winloop-0.1.6/vendor/libuv/src/win/loop-watcher.c +122 -0
- winloop-0.1.6/vendor/libuv/src/win/pipe.c +2677 -0
- winloop-0.1.6/vendor/libuv/src/win/poll.c +586 -0
- winloop-0.1.6/vendor/libuv/src/win/process-stdio.c +416 -0
- winloop-0.1.6/vendor/libuv/src/win/process.c +1397 -0
- winloop-0.1.6/vendor/libuv/src/win/req-inl.h +214 -0
- winloop-0.1.6/vendor/libuv/src/win/signal.c +282 -0
- winloop-0.1.6/vendor/libuv/src/win/snprintf.c +42 -0
- winloop-0.1.6/vendor/libuv/src/win/stream-inl.h +54 -0
- winloop-0.1.6/vendor/libuv/src/win/stream.c +252 -0
- winloop-0.1.6/vendor/libuv/src/win/tcp.c +1674 -0
- winloop-0.1.6/vendor/libuv/src/win/thread.c +470 -0
- winloop-0.1.6/vendor/libuv/src/win/tty.c +2422 -0
- winloop-0.1.6/vendor/libuv/src/win/udp.c +1143 -0
- winloop-0.1.6/vendor/libuv/src/win/util.c +1707 -0
- winloop-0.1.6/vendor/libuv/src/win/winapi.c +147 -0
- winloop-0.1.6/vendor/libuv/src/win/winapi.h +4769 -0
- winloop-0.1.6/vendor/libuv/src/win/winsock.c +575 -0
- winloop-0.1.6/vendor/libuv/src/win/winsock.h +201 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-async-pummel.c +120 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-async.c +142 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-fs-stat.c +138 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-getaddrinfo.c +92 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-list.h +173 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-loop-count.c +134 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-million-async.c +113 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-million-timers.c +86 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-multi-accept.c +451 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-ping-pongs.c +221 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-ping-udp.c +169 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-pound.c +351 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-pump.c +478 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-queue-work.c +71 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-sizes.c +46 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-spawn.c +164 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-tcp-write-batch.c +144 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-thread.c +64 -0
- winloop-0.1.6/vendor/libuv/test/benchmark-udp-pummel.c +243 -0
- winloop-0.1.6/vendor/libuv/test/blackhole-server.c +122 -0
- winloop-0.1.6/vendor/libuv/test/echo-server.c +431 -0
- winloop-0.1.6/vendor/libuv/test/fixtures/empty_file +0 -0
- winloop-0.1.6/vendor/libuv/test/fixtures/load_error.node +1 -0
- winloop-0.1.6/vendor/libuv/test/fixtures/lorem_ipsum.txt +1 -0
- winloop-0.1.6/vendor/libuv/test/fixtures/one_file/one_file +0 -0
- winloop-0.1.6/vendor/libuv/test/run-benchmarks.c +72 -0
- winloop-0.1.6/vendor/libuv/test/run-tests.c +269 -0
- winloop-0.1.6/vendor/libuv/test/runner-unix.c +456 -0
- winloop-0.1.6/vendor/libuv/test/runner-unix.h +36 -0
- winloop-0.1.6/vendor/libuv/test/runner-win.c +346 -0
- winloop-0.1.6/vendor/libuv/test/runner-win.h +41 -0
- winloop-0.1.6/vendor/libuv/test/runner.c +435 -0
- winloop-0.1.6/vendor/libuv/test/runner.h +172 -0
- winloop-0.1.6/vendor/libuv/test/task.h +384 -0
- winloop-0.1.6/vendor/libuv/test/test-active.c +84 -0
- winloop-0.1.6/vendor/libuv/test/test-async-null-cb.c +64 -0
- winloop-0.1.6/vendor/libuv/test/test-async.c +134 -0
- winloop-0.1.6/vendor/libuv/test/test-barrier.c +160 -0
- winloop-0.1.6/vendor/libuv/test/test-callback-stack.c +209 -0
- winloop-0.1.6/vendor/libuv/test/test-close-fd.c +84 -0
- winloop-0.1.6/vendor/libuv/test/test-close-order.c +80 -0
- winloop-0.1.6/vendor/libuv/test/test-condvar.c +248 -0
- winloop-0.1.6/vendor/libuv/test/test-connect-unspecified.c +64 -0
- winloop-0.1.6/vendor/libuv/test/test-connection-fail.c +161 -0
- winloop-0.1.6/vendor/libuv/test/test-cwd-and-chdir.c +57 -0
- winloop-0.1.6/vendor/libuv/test/test-default-loop-close.c +58 -0
- winloop-0.1.6/vendor/libuv/test/test-delayed-accept.c +189 -0
- winloop-0.1.6/vendor/libuv/test/test-dlerror.c +65 -0
- winloop-0.1.6/vendor/libuv/test/test-eintr-handling.c +96 -0
- winloop-0.1.6/vendor/libuv/test/test-embed.c +79 -0
- winloop-0.1.6/vendor/libuv/test/test-emfile.c +121 -0
- winloop-0.1.6/vendor/libuv/test/test-env-vars.c +178 -0
- winloop-0.1.6/vendor/libuv/test/test-error.c +82 -0
- winloop-0.1.6/vendor/libuv/test/test-fail-always.c +29 -0
- winloop-0.1.6/vendor/libuv/test/test-fork.c +769 -0
- winloop-0.1.6/vendor/libuv/test/test-fs-copyfile.c +232 -0
- winloop-0.1.6/vendor/libuv/test/test-fs-event.c +1237 -0
- winloop-0.1.6/vendor/libuv/test/test-fs-fd-hash.c +133 -0
- winloop-0.1.6/vendor/libuv/test/test-fs-open-flags.c +435 -0
- winloop-0.1.6/vendor/libuv/test/test-fs-poll.c +292 -0
- winloop-0.1.6/vendor/libuv/test/test-fs-readdir.c +462 -0
- winloop-0.1.6/vendor/libuv/test/test-fs.c +4642 -0
- winloop-0.1.6/vendor/libuv/test/test-get-currentexe.c +109 -0
- winloop-0.1.6/vendor/libuv/test/test-get-loadavg.c +35 -0
- winloop-0.1.6/vendor/libuv/test/test-get-memory.c +53 -0
- winloop-0.1.6/vendor/libuv/test/test-get-passwd.c +211 -0
- winloop-0.1.6/vendor/libuv/test/test-getaddrinfo.c +215 -0
- winloop-0.1.6/vendor/libuv/test/test-gethostname.c +58 -0
- winloop-0.1.6/vendor/libuv/test/test-getnameinfo.c +116 -0
- winloop-0.1.6/vendor/libuv/test/test-getsockname.c +362 -0
- winloop-0.1.6/vendor/libuv/test/test-getters-setters.c +114 -0
- winloop-0.1.6/vendor/libuv/test/test-gettimeofday.c +39 -0
- winloop-0.1.6/vendor/libuv/test/test-handle-fileno.c +125 -0
- winloop-0.1.6/vendor/libuv/test/test-homedir.c +72 -0
- winloop-0.1.6/vendor/libuv/test/test-hrtime.c +65 -0
- winloop-0.1.6/vendor/libuv/test/test-idle.c +125 -0
- winloop-0.1.6/vendor/libuv/test/test-idna.c +220 -0
- winloop-0.1.6/vendor/libuv/test/test-iouring-pollhup.c +111 -0
- winloop-0.1.6/vendor/libuv/test/test-ip-name.c +65 -0
- winloop-0.1.6/vendor/libuv/test/test-ip4-addr.c +55 -0
- winloop-0.1.6/vendor/libuv/test/test-ip6-addr.c +175 -0
- winloop-0.1.6/vendor/libuv/test/test-ipc-heavy-traffic-deadlock-bug.c +159 -0
- winloop-0.1.6/vendor/libuv/test/test-ipc-send-recv.c +435 -0
- winloop-0.1.6/vendor/libuv/test/test-ipc.c +857 -0
- winloop-0.1.6/vendor/libuv/test/test-list.h +1243 -0
- winloop-0.1.6/vendor/libuv/test/test-loop-alive.c +68 -0
- winloop-0.1.6/vendor/libuv/test/test-loop-close.c +77 -0
- winloop-0.1.6/vendor/libuv/test/test-loop-configure.c +38 -0
- winloop-0.1.6/vendor/libuv/test/test-loop-handles.c +337 -0
- winloop-0.1.6/vendor/libuv/test/test-loop-stop.c +83 -0
- winloop-0.1.6/vendor/libuv/test/test-loop-time.c +69 -0
- winloop-0.1.6/vendor/libuv/test/test-metrics.c +390 -0
- winloop-0.1.6/vendor/libuv/test/test-multiple-listen.c +109 -0
- winloop-0.1.6/vendor/libuv/test/test-mutexes.c +182 -0
- winloop-0.1.6/vendor/libuv/test/test-not-readable-nor-writable-on-read-error.c +104 -0
- winloop-0.1.6/vendor/libuv/test/test-not-writable-after-shutdown.c +69 -0
- winloop-0.1.6/vendor/libuv/test/test-osx-select.c +140 -0
- winloop-0.1.6/vendor/libuv/test/test-pass-always.c +28 -0
- winloop-0.1.6/vendor/libuv/test/test-ping-pong.c +439 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-bind-error.c +199 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-close-stdout-read-stdin.c +122 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-connect-error.c +97 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-connect-multiple.c +178 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-connect-prepare.c +83 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-getsockname.c +290 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-pending-instances.c +59 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-sendmsg.c +172 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-server-close.c +94 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-set-fchmod.c +92 -0
- winloop-0.1.6/vendor/libuv/test/test-pipe-set-non-blocking.c +131 -0
- winloop-0.1.6/vendor/libuv/test/test-platform-output.c +240 -0
- winloop-0.1.6/vendor/libuv/test/test-poll-close-doesnt-corrupt-stack.c +114 -0
- winloop-0.1.6/vendor/libuv/test/test-poll-close.c +73 -0
- winloop-0.1.6/vendor/libuv/test/test-poll-closesocket.c +92 -0
- winloop-0.1.6/vendor/libuv/test/test-poll-multiple-handles.c +104 -0
- winloop-0.1.6/vendor/libuv/test/test-poll-oob.c +214 -0
- winloop-0.1.6/vendor/libuv/test/test-poll.c +697 -0
- winloop-0.1.6/vendor/libuv/test/test-process-priority.c +83 -0
- winloop-0.1.6/vendor/libuv/test/test-process-title-threadsafe.c +108 -0
- winloop-0.1.6/vendor/libuv/test/test-process-title.c +135 -0
- winloop-0.1.6/vendor/libuv/test/test-queue-foreach-delete.c +205 -0
- winloop-0.1.6/vendor/libuv/test/test-random.c +94 -0
- winloop-0.1.6/vendor/libuv/test/test-readable-on-eof.c +110 -0
- winloop-0.1.6/vendor/libuv/test/test-ref.c +445 -0
- winloop-0.1.6/vendor/libuv/test/test-run-nowait.c +46 -0
- winloop-0.1.6/vendor/libuv/test/test-run-once.c +48 -0
- winloop-0.1.6/vendor/libuv/test/test-semaphore.c +111 -0
- winloop-0.1.6/vendor/libuv/test/test-shutdown-close.c +108 -0
- winloop-0.1.6/vendor/libuv/test/test-shutdown-eof.c +188 -0
- winloop-0.1.6/vendor/libuv/test/test-shutdown-simultaneous.c +135 -0
- winloop-0.1.6/vendor/libuv/test/test-shutdown-twice.c +85 -0
- winloop-0.1.6/vendor/libuv/test/test-signal-multiple-loops.c +325 -0
- winloop-0.1.6/vendor/libuv/test/test-signal-pending-on-close.c +116 -0
- winloop-0.1.6/vendor/libuv/test/test-signal.c +325 -0
- winloop-0.1.6/vendor/libuv/test/test-socket-buffer-size.c +77 -0
- winloop-0.1.6/vendor/libuv/test/test-spawn.c +2114 -0
- winloop-0.1.6/vendor/libuv/test/test-stdio-over-pipes.c +299 -0
- winloop-0.1.6/vendor/libuv/test/test-strscpy.c +53 -0
- winloop-0.1.6/vendor/libuv/test/test-strtok.c +90 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-alloc-cb-fail.c +123 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-bind-error.c +317 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-bind6-error.c +176 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-close-accept.c +198 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-close-after-read-timeout.c +183 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-close-reset.c +340 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-close-while-connecting.c +97 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-close.c +136 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-connect-error-after-write.c +98 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-connect-error.c +73 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-connect-timeout.c +196 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-connect6-error.c +129 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-create-socket-early.c +213 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-flags.c +59 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-oob.c +146 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-open.c +407 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-read-stop-start.c +136 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-read-stop.c +76 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-reuseport.c +248 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-rst.c +110 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-shutdown-after-write.c +138 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-try-write-error.c +109 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-try-write.c +135 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-unexpected-read.c +117 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-write-after-connect.c +77 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-write-fail.c +115 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-write-in-a-row.c +143 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-write-queue-order.c +139 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-write-to-half-open-connection.c +141 -0
- winloop-0.1.6/vendor/libuv/test/test-tcp-writealot.c +185 -0
- winloop-0.1.6/vendor/libuv/test/test-test-macros.c +42 -0
- winloop-0.1.6/vendor/libuv/test/test-thread-affinity.c +154 -0
- winloop-0.1.6/vendor/libuv/test/test-thread-equal.c +51 -0
- winloop-0.1.6/vendor/libuv/test/test-thread-priority.c +105 -0
- winloop-0.1.6/vendor/libuv/test/test-thread.c +296 -0
- winloop-0.1.6/vendor/libuv/test/test-threadpool-cancel.c +418 -0
- winloop-0.1.6/vendor/libuv/test/test-threadpool.c +76 -0
- winloop-0.1.6/vendor/libuv/test/test-timer-again.c +141 -0
- winloop-0.1.6/vendor/libuv/test/test-timer-from-check.c +80 -0
- winloop-0.1.6/vendor/libuv/test/test-timer.c +453 -0
- winloop-0.1.6/vendor/libuv/test/test-tmpdir.c +82 -0
- winloop-0.1.6/vendor/libuv/test/test-tty-duplicate-key.c +321 -0
- winloop-0.1.6/vendor/libuv/test/test-tty-escape-sequence-processing.c +1632 -0
- winloop-0.1.6/vendor/libuv/test/test-tty.c +468 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-alloc-cb-fail.c +196 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-bind.c +93 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-connect.c +196 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-connect6.c +199 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-create-socket-early.c +139 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-dgram-too-big.c +91 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-ipv6.c +259 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-mmsg.c +149 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-multicast-interface.c +104 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-multicast-interface6.c +108 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-multicast-join.c +184 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-multicast-join6.c +218 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-multicast-ttl.c +94 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-open.c +350 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-options.c +160 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-recv-in-a-row.c +121 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-reuseport.c +287 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-send-and-recv.c +212 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-send-hang-loop.c +99 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-send-immediate.c +148 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-send-unreachable.c +201 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-sendmmsg-error.c +75 -0
- winloop-0.1.6/vendor/libuv/test/test-udp-try-send.c +121 -0
- winloop-0.1.6/vendor/libuv/test/test-uname.c +69 -0
- winloop-0.1.6/vendor/libuv/test/test-walk-handles.c +77 -0
- winloop-0.1.6/vendor/libuv/test/test-watcher-cross-stop.c +112 -0
- winloop-0.1.6/vendor/libuv/tools/make_dist_html.py +122 -0
- winloop-0.1.6/vendor/libuv/tools/vswhere_usability_wrapper.cmd +33 -0
- winloop-0.1.6/vendor/libuv/tsansupp.txt +2 -0
- winloop-0.1.6/vendor/libuv/uv_win_longpath.manifest +8 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop/__init__.py +3 -1
- {winloop-0.1.5 → winloop-0.1.6}/winloop/_version.py +1 -1
- winloop-0.1.6/winloop/cbhandles.pxd +39 -0
- winloop-0.1.6/winloop/cbhandles.pyx +434 -0
- winloop-0.1.6/winloop/dns.pyx +483 -0
- winloop-0.1.6/winloop/errors.pyx +83 -0
- winloop-0.1.6/winloop/handles/async_.pxd +11 -0
- winloop-0.1.6/winloop/handles/async_.pyx +56 -0
- winloop-0.1.6/winloop/handles/basetransport.pxd +54 -0
- winloop-0.1.6/winloop/handles/basetransport.pyx +293 -0
- winloop-0.1.6/winloop/handles/check.pxd +14 -0
- winloop-0.1.6/winloop/handles/check.pyx +72 -0
- winloop-0.1.6/winloop/handles/fsevent.pxd +12 -0
- winloop-0.1.6/winloop/handles/fsevent.pyx +116 -0
- winloop-0.1.6/winloop/handles/handle.pxd +48 -0
- winloop-0.1.6/winloop/handles/handle.pyx +395 -0
- winloop-0.1.6/winloop/handles/idle.pxd +14 -0
- winloop-0.1.6/winloop/handles/idle.pyx +72 -0
- winloop-0.1.6/winloop/handles/pipe.pxd +33 -0
- winloop-0.1.6/winloop/handles/pipe.pyx +226 -0
- winloop-0.1.6/winloop/handles/poll.pxd +25 -0
- winloop-0.1.6/winloop/handles/poll.pyx +237 -0
- winloop-0.1.6/winloop/handles/process.pxd +80 -0
- winloop-0.1.6/winloop/handles/process.pyx +844 -0
- winloop-0.1.6/winloop/handles/stream.pxd +50 -0
- winloop-0.1.6/winloop/handles/stream.pyx +1030 -0
- winloop-0.1.6/winloop/handles/streamserver.pxd +26 -0
- winloop-0.1.6/winloop/handles/streamserver.pyx +150 -0
- winloop-0.1.6/winloop/handles/tcp.pxd +26 -0
- winloop-0.1.6/winloop/handles/tcp.pyx +228 -0
- winloop-0.1.6/winloop/handles/timer.pxd +18 -0
- winloop-0.1.6/winloop/handles/timer.pyx +89 -0
- winloop-0.1.6/winloop/handles/udp.pxd +22 -0
- winloop-0.1.6/winloop/handles/udp.pyx +409 -0
- winloop-0.1.6/winloop/includes/__init__.py +23 -0
- winloop-0.1.6/winloop/includes/compat.h +158 -0
- winloop-0.1.6/winloop/includes/consts.pxi +25 -0
- winloop-0.1.6/winloop/includes/debug.h +3 -0
- winloop-0.1.6/winloop/includes/debug.pxd +3 -0
- winloop-0.1.6/winloop/includes/flowcontrol.pxd +23 -0
- winloop-0.1.6/winloop/includes/fork_handler.h +51 -0
- winloop-0.1.6/winloop/includes/python.pxd +31 -0
- winloop-0.1.6/winloop/includes/stdlib.pxi +178 -0
- winloop-0.1.6/winloop/includes/system.pxd +82 -0
- winloop-0.1.6/winloop/includes/uv.pxd +516 -0
- winloop-0.1.6/winloop/loop.pxd +229 -0
- winloop-0.1.6/winloop/loop.pyx +3420 -0
- winloop-0.1.6/winloop/lru.pyx +79 -0
- winloop-0.1.6/winloop/pseudosock.pyx +209 -0
- winloop-0.1.6/winloop/py.typed +0 -0
- winloop-0.1.6/winloop/request.pxd +8 -0
- winloop-0.1.6/winloop/request.pyx +65 -0
- winloop-0.1.6/winloop/server.pxd +19 -0
- winloop-0.1.6/winloop/server.pyx +136 -0
- winloop-0.1.6/winloop/sslproto.pxd +138 -0
- winloop-0.1.6/winloop/sslproto.pyx +950 -0
- {winloop-0.1.5 → winloop-0.1.6/winloop.egg-info}/PKG-INFO +1 -1
- winloop-0.1.6/winloop.egg-info/SOURCES.txt +471 -0
- winloop-0.1.6/winloop.png +0 -0
- winloop-0.1.5/winloop.egg-info/SOURCES.txt +0 -41
- {winloop-0.1.5 → winloop-0.1.6}/LICENSE-APACHE +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/LICENSE-MIT +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/README.md +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/setup.cfg +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/setup.py +0 -0
- /winloop-0.1.5/winloop/py.typed → /winloop-0.1.6/tests/__init__.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_aiodns.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_aiohttp.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_aiomultiprocess.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_base.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_context.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_cython.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_dealloc.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_dns.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_executors.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_fs_event.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_libuv_api.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_pipes.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_process.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_process_spawning.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_regr1.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_runner.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_signals.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_sockets.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_sourcecode.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_tcp.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_testbase.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_udp.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/tests/test_unix.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop/_noop.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop/_testbase.py +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop/loop.c +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop/loop.pyi +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop.egg-info/dependency_links.txt +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop.egg-info/not-zip-safe +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop.egg-info/requires.txt +0 -0
- {winloop-0.1.5 → winloop-0.1.6}/winloop.egg-info/top_level.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
|
|
@@ -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
|
@@ -69,7 +69,6 @@ packages = ["winloop"]
|
|
|
69
69
|
|
|
70
70
|
[tool.cibuildwheel]
|
|
71
71
|
build-frontend = "build"
|
|
72
|
-
# Winloop comment: skip tests for now ("ImportError: cannot import name 'includes' from ... " in GitHub action)
|
|
73
72
|
#test-extras = "test"
|
|
74
73
|
#test-command = "python -m unittest discover -v {project}/tests"
|
|
75
74
|
|
|
@@ -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())
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIF8TCCBFmgAwIBAgIJAMstgJlaaVJcMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNV
|
|
3
|
+
BAYTAlhZMSYwJAYDVQQKDB1QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBDQTEW
|
|
4
|
+
MBQGA1UEAwwNb3VyLWNhLXNlcnZlcjAeFw0xODA4MjkxNDIzMTZaFw0yODA3MDcx
|
|
5
|
+
NDIzMTZaMF8xCzAJBgNVBAYTAlhZMRcwFQYDVQQHDA5DYXN0bGUgQW50aHJheDEj
|
|
6
|
+
MCEGA1UECgwaUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24xEjAQBgNVBAMMCWxv
|
|
7
|
+
Y2FsaG9zdDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAJ8oLzdB739k
|
|
8
|
+
YxZiFukBFGIpyjqYkj0I015p/sDz1MT7DljcZLBLy7OqnkLpB5tnM8256DwdihPA
|
|
9
|
+
3zlnfEzTfr9DD0qFBW2H5cMCoz7X17koeRhzGDd3dkjUeBjXvR5qRosG8wM3lQug
|
|
10
|
+
U7AizY+3Azaj1yN3mZ9K5a20jr58Kqinz+Xxx6sb2JfYYff2neJbBahNm5id0AD2
|
|
11
|
+
pi/TthZqO5DURJYo+MdgZOcy+7jEjOJsLWZd3Yzq78iM07qDjbpIoVpENZCTHTWA
|
|
12
|
+
hX8LIqz0OBmh4weQpm4+plU7E4r4D82uauocWw8iyuznCTtABWO7n9fWySmf9QZC
|
|
13
|
+
WYxHAFpBQs6zUVqAD7nhFdTqpQ9bRiaEnjE4HiAccPW+MAoSxFnv/rNzEzI6b4zU
|
|
14
|
+
NspFMfg1aNVamdjxdpUZ1GG1Okf0yPJykqEX4PZl3La1Be2q7YZ1wydR523Xd+f3
|
|
15
|
+
EO4/g+imETSKn8gyCf6Rvib175L4r2WV1CXQH7gFwZYCod6WHYq5TQIDAQABo4IB
|
|
16
|
+
wDCCAbwwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA4GA1UdDwEB/wQEAwIFoDAdBgNV
|
|
17
|
+
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E
|
|
18
|
+
FgQUj+od4zNcABazi29rb9NMy7XLfFUwfQYDVR0jBHYwdIAU3b/K2ubRNLo3dSHK
|
|
19
|
+
b5oIKPI1tkihUaRPME0xCzAJBgNVBAYTAlhZMSYwJAYDVQQKDB1QeXRob24gU29m
|
|
20
|
+
dHdhcmUgRm91bmRhdGlvbiBDQTEWMBQGA1UEAwwNb3VyLWNhLXNlcnZlcoIJAMst
|
|
21
|
+
gJlaaVJbMIGDBggrBgEFBQcBAQR3MHUwPAYIKwYBBQUHMAKGMGh0dHA6Ly90ZXN0
|
|
22
|
+
Y2EucHl0aG9udGVzdC5uZXQvdGVzdGNhL3B5Y2FjZXJ0LmNlcjA1BggrBgEFBQcw
|
|
23
|
+
AYYpaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5ldC90ZXN0Y2Evb2NzcC8wQwYD
|
|
24
|
+
VR0fBDwwOjA4oDagNIYyaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5ldC90ZXN0
|
|
25
|
+
Y2EvcmV2b2NhdGlvbi5jcmwwDQYJKoZIhvcNAQELBQADggGBACf1jFkQ9MbnKAC/
|
|
26
|
+
uo17EwPxHKZfswZVpCK527LVRr33DN1DbrR5ZWchDCpV7kCOhZ+fR7sKKk22ZHSY
|
|
27
|
+
oH+u3PEu20J3GOB1iyY1aMNB7WvId3JvappdVWkC/VpUyFfLsGUDFuIPADmZZqCb
|
|
28
|
+
iJMX4loteTVfl1d4xK/1mV6Gq9MRrRqiDfpSELn+v53OM9mGspwW+NZ1CIrbCuW0
|
|
29
|
+
KxZ/tPkqn8PSd9fNZR70bB7rWbnwrl+kH8xKxLl6qdlrMmg74WWwhLeQxK7+9DdP
|
|
30
|
+
IaDenzqx5cwWBGY/C0HcQj0gPuy3lSs1V/q+f7Y6uspPWP51PgiJLIywXS75iRAr
|
|
31
|
+
+UFGTzwAtyfTZSQoFyMmMULqfk6T5HtoVMqfRvPvK+mFDLWEstU1NIB1K/CRI7gI
|
|
32
|
+
AY65ClTU+zRS/tlF8IA7tsFvgtEf8jsI9kamlidhS1gyeg4dWcVErV4aeTPB1AUv
|
|
33
|
+
StPYQkKNM+NjytWHl5tNuBoDNLsc0gI/WSPiI4CIY8LwomOoiw==
|
|
34
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
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
|
|
39
|
+
aH1M/zC4aVaS0DYB/Gxq7v8=
|
|
40
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gitdir: ../../.git/modules/vendor/libuv
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
test/fixtures/lorem_ipsum.txt text eol=lf
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
If you want to report a bug, you are in the right place!
|
|
3
|
+
|
|
4
|
+
If you need help or have a question, go here:
|
|
5
|
+
https://github.com/libuv/libuv/discussions
|
|
6
|
+
|
|
7
|
+
If you are reporting a libuv test failure, please ensure that you are not
|
|
8
|
+
running the test as root.
|
|
9
|
+
|
|
10
|
+
Please include code that demonstrates the bug and keep it short and simple.
|
|
11
|
+
-->
|
|
12
|
+
* **Version**: <!-- libuv version -->
|
|
13
|
+
* **Platform**: <!-- `uname -a` (UNIX), or Windows version and machine type -->
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: CI-docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- 'docs/**'
|
|
7
|
+
- '!docs/code/**'
|
|
8
|
+
- '.github/workflows/CI-docs.yml'
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
docs-src:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v3
|
|
15
|
+
- uses: actions/setup-python@v4
|
|
16
|
+
with:
|
|
17
|
+
python-version: '3.9'
|
|
18
|
+
cache: 'pip' # caching pip dependencies
|
|
19
|
+
- run: pip install -r docs/requirements.txt
|
|
20
|
+
- name: html
|
|
21
|
+
run: |
|
|
22
|
+
make -C docs html
|
|
23
|
+
- name: linkcheck
|
|
24
|
+
run: |
|
|
25
|
+
make -C docs linkcheck
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: ci-sample
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- '**'
|
|
7
|
+
- '!docs/**'
|
|
8
|
+
- '!.**'
|
|
9
|
+
- 'docs/code/**'
|
|
10
|
+
- '.github/workflows/CI-sample.yml'
|
|
11
|
+
push:
|
|
12
|
+
branches:
|
|
13
|
+
- v[0-9].*
|
|
14
|
+
- master
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build:
|
|
18
|
+
strategy:
|
|
19
|
+
fail-fast: false
|
|
20
|
+
matrix:
|
|
21
|
+
os: [macos-latest, ubuntu-latest, windows-latest]
|
|
22
|
+
runs-on: ${{matrix.os}}
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v2
|
|
25
|
+
- name: setup
|
|
26
|
+
run: cmake -E make_directory ${{runner.workspace}}/libuv/docs/code/build
|
|
27
|
+
- name: configure
|
|
28
|
+
# you may like use Ninja on unix-like OS, but for windows, the only easy way is to use Visual Studio if you want Ninja
|
|
29
|
+
run: cmake ..
|
|
30
|
+
working-directory: ${{runner.workspace}}/libuv/docs/code/build
|
|
31
|
+
- name: build
|
|
32
|
+
run: cmake --build .
|
|
33
|
+
working-directory: ${{runner.workspace}}/libuv/docs/code/build
|