From b0d2a6c2382efb5f230f7182dec4458a01a7561b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ellensohn?= Date: Fri, 18 Aug 2023 09:03:28 +0200 Subject: [PATCH] cythonize: build works but cannot load module in run --- build/.built_by | 1 + .../__init__.py => build/COLCON_IGNORE | 0 ...middleware.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 222768 bytes ...middleware.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 222768 bytes .../rmp220_middleware/rmp220_middleware.py | 19 + .../build/lib/rmp220_middleware/__init__.py | 0 .../rmp220_middleware.bak.py | 85 +- .../rmp220_middleware/rmp220_middleware.py | 19 + .../rmp220_middleware/rmp220_middleware.o | Bin 0 -> 388376 bytes build/rmp220_middleware/colcon_build.rc | 1 + .../colcon_command_prefix_setup_py.sh | 1 + .../colcon_command_prefix_setup_py.sh.env | 88 + build/rmp220_middleware/install.log | 13 + .../__pycache__/sitecustomize.cpython-310.pyc | Bin 0 -> 355 bytes .../prefix_override/sitecustomize.py | 3 + .../rmp220_middleware.egg-info/PKG-INFO | 12 + .../rmp220_middleware.egg-info/SOURCES.txt | 16 + .../dependency_links.txt | 1 + .../entry_points.txt | 3 + .../rmp220_middleware.egg-info/requires.txt | 3 + .../rmp220_middleware.egg-info/top_level.txt | 1 + .../rmp220_middleware.egg-info/zip-safe | 1 + .../rmp220_middleware/rmp220_middleware.o | Bin 0 -> 388376 bytes install/.colcon_install_layout | 1 + install/COLCON_IGNORE | 0 install/_local_setup_util_ps1.py | 404 + install/_local_setup_util_sh.py | 404 + install/local_setup.bash | 107 + install/local_setup.ps1 | 55 + install/local_setup.sh | 137 + install/local_setup.zsh | 120 + .../PKG-INFO | 12 + .../SOURCES.txt | 16 + .../dependency_links.txt | 1 + .../entry_points.txt | 3 + .../requires.txt | 3 + .../top_level.txt | 1 + .../zip-safe | 1 + ...middleware.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 222768 bytes .../rmp220_middleware/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 230 bytes .../rmp220_middleware.bak.cpython-310.pyc | Bin 0 -> 3732 bytes .../rmp220_middleware.cpython-310.pyc | Bin 0 -> 727 bytes .../rmp220_middleware.bak.py | 107 + .../rmp220_middleware/rmp220_middleware.py | 19 + .../lib/rmp220_middleware/rmp220_middleware | 33 + .../resource_index/packages/rmp220_middleware | 0 .../colcon-core/packages/rmp220_middleware | 0 .../hook/ament_prefix_path.dsv | 1 + .../hook/ament_prefix_path.ps1 | 3 + .../hook/ament_prefix_path.sh | 3 + .../rmp220_middleware/hook/pythonpath.dsv | 1 + .../rmp220_middleware/hook/pythonpath.ps1 | 3 + .../rmp220_middleware/hook/pythonpath.sh | 3 + .../share/rmp220_middleware/package.bash | 31 + .../share/rmp220_middleware/package.dsv | 6 + .../share/rmp220_middleware/package.ps1 | 116 + .../share/rmp220_middleware/package.sh | 87 + .../share/rmp220_middleware/package.xml | 18 + .../share/rmp220_middleware/package.zsh | 42 + install/setup.bash | 31 + install/setup.ps1 | 29 + install/setup.sh | 45 + install/setup.zsh | 31 + install/spawn_shell.bash | 82 + log/COLCON_IGNORE | 0 log/build_2023-08-18_08-51-11/events.log | 8 + log/build_2023-08-18_08-51-11/logger_all.log | 67 + .../rmp220_middleware/command.log | 0 .../rmp220_middleware/stderr.log | 18 + .../rmp220_middleware/stdout.log | 0 .../rmp220_middleware/stdout_stderr.log | 18 + .../rmp220_middleware/streams.log | 18 + log/build_2023-08-18_08-51-47/events.log | 77 + log/build_2023-08-18_08-51-47/logger_all.log | 90 + .../rmp220_middleware/command.log | 2 + .../rmp220_middleware/stderr.log | 3 + .../rmp220_middleware/stdout.log | 38 + .../rmp220_middleware/stdout_stderr.log | 41 + .../rmp220_middleware/streams.log | 43 + log/build_2023-08-18_08-53-55/events.log | 57 + log/build_2023-08-18_08-53-55/logger_all.log | 91 + .../rmp220_middleware/command.log | 2 + .../rmp220_middleware/stderr.log | 2 + .../rmp220_middleware/stdout.log | 23 + .../rmp220_middleware/stdout_stderr.log | 25 + .../rmp220_middleware/streams.log | 27 + log/build_2023-08-18_08-57-01/events.log | 58 + log/build_2023-08-18_08-57-01/logger_all.log | 91 + .../rmp220_middleware/command.log | 2 + .../rmp220_middleware/stderr.log | 2 + .../rmp220_middleware/stdout.log | 23 + .../rmp220_middleware/stdout_stderr.log | 25 + .../rmp220_middleware/streams.log | 27 + log/build_2023-08-18_09-00-01/events.log | 72 + log/build_2023-08-18_09-00-01/logger_all.log | 91 + .../rmp220_middleware/command.log | 2 + .../rmp220_middleware/stderr.log | 0 .../rmp220_middleware/stdout.log | 33 + .../rmp220_middleware/stdout_stderr.log | 33 + .../rmp220_middleware/streams.log | 35 + log/build_2023-08-18_09-00-46/events.log | 8 + log/build_2023-08-18_09-00-46/logger_all.log | 68 + .../rmp220_middleware/command.log | 0 .../rmp220_middleware/stderr.log | 18 + .../rmp220_middleware/stdout.log | 0 .../rmp220_middleware/stdout_stderr.log | 18 + .../rmp220_middleware/streams.log | 18 + log/build_2023-08-18_09-01-39/events.log | 69 + log/build_2023-08-18_09-01-39/logger_all.log | 91 + .../rmp220_middleware/command.log | 2 + .../rmp220_middleware/stderr.log | 2 + .../rmp220_middleware/stdout.log | 28 + .../rmp220_middleware/stdout_stderr.log | 30 + .../rmp220_middleware/streams.log | 32 + log/latest | 1 + log/latest_build | 1 + .../__pycache__/__init__.cpython-310.pyc | Bin 199 -> 0 bytes .../rmp220_middleware.cpython-310.pyc | Bin 3842 -> 0 bytes rmp220_middleware/rmp220_middleware.c | 7046 +++++++++++++++++ rmp220_middleware/rmp220_middleware.py | 89 +- rmp220_middleware/rmp220_middleware.py.bak | 107 + .../rmp220_middleware_cython.pyx | 98 + setup.py | 7 +- 124 files changed, 10975 insertions(+), 125 deletions(-) create mode 100644 build/.built_by rename rmp220_middleware/__init__.py => build/COLCON_IGNORE (100%) create mode 100755 build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so create mode 100755 build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so create mode 100644 build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.py create mode 100644 build/rmp220_middleware/build/lib/rmp220_middleware/__init__.py rename rmp220_middleware/rmp220_middleware copy.py => build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py (55%) create mode 100644 build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py create mode 100644 build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o create mode 100644 build/rmp220_middleware/colcon_build.rc create mode 100644 build/rmp220_middleware/colcon_command_prefix_setup_py.sh create mode 100644 build/rmp220_middleware/colcon_command_prefix_setup_py.sh.env create mode 100644 build/rmp220_middleware/install.log create mode 100644 build/rmp220_middleware/prefix_override/__pycache__/sitecustomize.cpython-310.pyc create mode 100644 build/rmp220_middleware/prefix_override/sitecustomize.py create mode 100644 build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO create mode 100644 build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt create mode 100644 build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt create mode 100644 build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt create mode 100644 build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt create mode 100644 build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt create mode 100644 build/rmp220_middleware/rmp220_middleware.egg-info/zip-safe create mode 100644 build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o create mode 100644 install/.colcon_install_layout create mode 100644 install/COLCON_IGNORE create mode 100644 install/_local_setup_util_ps1.py create mode 100644 install/_local_setup_util_sh.py create mode 100644 install/local_setup.bash create mode 100644 install/local_setup.ps1 create mode 100644 install/local_setup.sh create mode 100644 install/local_setup.zsh create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/PKG-INFO create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/SOURCES.txt create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/dependency_links.txt create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/entry_points.txt create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/requires.txt create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/top_level.txt create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/zip-safe create mode 100755 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware.cpython-310-x86_64-linux-gnu.so create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__init__.py create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__pycache__/__init__.cpython-310.pyc create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__pycache__/rmp220_middleware.bak.cpython-310.pyc create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__pycache__/rmp220_middleware.cpython-310.pyc create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.bak.py create mode 100644 install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py create mode 100755 install/rmp220_middleware/lib/rmp220_middleware/rmp220_middleware create mode 100644 install/rmp220_middleware/share/ament_index/resource_index/packages/rmp220_middleware create mode 100644 install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware create mode 100644 install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv create mode 100644 install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1 create mode 100644 install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh create mode 100644 install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv create mode 100644 install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1 create mode 100644 install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh create mode 100644 install/rmp220_middleware/share/rmp220_middleware/package.bash create mode 100644 install/rmp220_middleware/share/rmp220_middleware/package.dsv create mode 100644 install/rmp220_middleware/share/rmp220_middleware/package.ps1 create mode 100644 install/rmp220_middleware/share/rmp220_middleware/package.sh create mode 100644 install/rmp220_middleware/share/rmp220_middleware/package.xml create mode 100644 install/rmp220_middleware/share/rmp220_middleware/package.zsh create mode 100644 install/setup.bash create mode 100644 install/setup.ps1 create mode 100644 install/setup.sh create mode 100644 install/setup.zsh create mode 100644 install/spawn_shell.bash create mode 100644 log/COLCON_IGNORE create mode 100644 log/build_2023-08-18_08-51-11/events.log create mode 100644 log/build_2023-08-18_08-51-11/logger_all.log create mode 100644 log/build_2023-08-18_08-51-11/rmp220_middleware/command.log create mode 100644 log/build_2023-08-18_08-51-11/rmp220_middleware/stderr.log create mode 100644 log/build_2023-08-18_08-51-11/rmp220_middleware/stdout.log create mode 100644 log/build_2023-08-18_08-51-11/rmp220_middleware/stdout_stderr.log create mode 100644 log/build_2023-08-18_08-51-11/rmp220_middleware/streams.log create mode 100644 log/build_2023-08-18_08-51-47/events.log create mode 100644 log/build_2023-08-18_08-51-47/logger_all.log create mode 100644 log/build_2023-08-18_08-51-47/rmp220_middleware/command.log create mode 100644 log/build_2023-08-18_08-51-47/rmp220_middleware/stderr.log create mode 100644 log/build_2023-08-18_08-51-47/rmp220_middleware/stdout.log create mode 100644 log/build_2023-08-18_08-51-47/rmp220_middleware/stdout_stderr.log create mode 100644 log/build_2023-08-18_08-51-47/rmp220_middleware/streams.log create mode 100644 log/build_2023-08-18_08-53-55/events.log create mode 100644 log/build_2023-08-18_08-53-55/logger_all.log create mode 100644 log/build_2023-08-18_08-53-55/rmp220_middleware/command.log create mode 100644 log/build_2023-08-18_08-53-55/rmp220_middleware/stderr.log create mode 100644 log/build_2023-08-18_08-53-55/rmp220_middleware/stdout.log create mode 100644 log/build_2023-08-18_08-53-55/rmp220_middleware/stdout_stderr.log create mode 100644 log/build_2023-08-18_08-53-55/rmp220_middleware/streams.log create mode 100644 log/build_2023-08-18_08-57-01/events.log create mode 100644 log/build_2023-08-18_08-57-01/logger_all.log create mode 100644 log/build_2023-08-18_08-57-01/rmp220_middleware/command.log create mode 100644 log/build_2023-08-18_08-57-01/rmp220_middleware/stderr.log create mode 100644 log/build_2023-08-18_08-57-01/rmp220_middleware/stdout.log create mode 100644 log/build_2023-08-18_08-57-01/rmp220_middleware/stdout_stderr.log create mode 100644 log/build_2023-08-18_08-57-01/rmp220_middleware/streams.log create mode 100644 log/build_2023-08-18_09-00-01/events.log create mode 100644 log/build_2023-08-18_09-00-01/logger_all.log create mode 100644 log/build_2023-08-18_09-00-01/rmp220_middleware/command.log create mode 100644 log/build_2023-08-18_09-00-01/rmp220_middleware/stderr.log create mode 100644 log/build_2023-08-18_09-00-01/rmp220_middleware/stdout.log create mode 100644 log/build_2023-08-18_09-00-01/rmp220_middleware/stdout_stderr.log create mode 100644 log/build_2023-08-18_09-00-01/rmp220_middleware/streams.log create mode 100644 log/build_2023-08-18_09-00-46/events.log create mode 100644 log/build_2023-08-18_09-00-46/logger_all.log create mode 100644 log/build_2023-08-18_09-00-46/rmp220_middleware/command.log create mode 100644 log/build_2023-08-18_09-00-46/rmp220_middleware/stderr.log create mode 100644 log/build_2023-08-18_09-00-46/rmp220_middleware/stdout.log create mode 100644 log/build_2023-08-18_09-00-46/rmp220_middleware/stdout_stderr.log create mode 100644 log/build_2023-08-18_09-00-46/rmp220_middleware/streams.log create mode 100644 log/build_2023-08-18_09-01-39/events.log create mode 100644 log/build_2023-08-18_09-01-39/logger_all.log create mode 100644 log/build_2023-08-18_09-01-39/rmp220_middleware/command.log create mode 100644 log/build_2023-08-18_09-01-39/rmp220_middleware/stderr.log create mode 100644 log/build_2023-08-18_09-01-39/rmp220_middleware/stdout.log create mode 100644 log/build_2023-08-18_09-01-39/rmp220_middleware/stdout_stderr.log create mode 100644 log/build_2023-08-18_09-01-39/rmp220_middleware/streams.log create mode 120000 log/latest create mode 120000 log/latest_build delete mode 100644 rmp220_middleware/__pycache__/__init__.cpython-310.pyc delete mode 100644 rmp220_middleware/__pycache__/rmp220_middleware.cpython-310.pyc create mode 100644 rmp220_middleware/rmp220_middleware.c create mode 100644 rmp220_middleware/rmp220_middleware.py.bak create mode 100644 rmp220_middleware/rmp220_middleware_cython.pyx diff --git a/build/.built_by b/build/.built_by new file mode 100644 index 0000000..06e74ac --- /dev/null +++ b/build/.built_by @@ -0,0 +1 @@ +colcon diff --git a/rmp220_middleware/__init__.py b/build/COLCON_IGNORE similarity index 100% rename from rmp220_middleware/__init__.py rename to build/COLCON_IGNORE diff --git a/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so b/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..39892ea23d09a25ec7b7fad86ced35ec6f5326a5 GIT binary patch literal 222768 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

YrEwg1{Wp9D*b#_SqQlUK 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

1KQ8AGW%K1 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�I`Q%6uO3#|I;Fmr=;f%#vucvefD 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 literal 0 HcmV?d00001 diff --git a/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so b/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..39892ea23d09a25ec7b7fad86ced35ec6f5326a5 GIT binary patch literal 222768 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

YrEwg1{Wp9D*b#_SqQlUK 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

1KQ8AGW%K1 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�I`Q%6uO3#|I;Fmr=;f%#vucvefD z)&c%yi)XbIV6K89#Gf(Pz`)GAf6%hZj>TD$b9I(9>-$q?45p|_fx0M0-43u|2TGxZ zo`pr&Zt5dxe%cafG>-de0q=W1qt7Cs~Uz zbhZOQZ~6M2%#f*^+mL~2TtYE5TX6N z9cA>~xCPA#?huAO3kRQj2T9O}sd(Q2v?*E)HHH|x!Ay~>r~{0Qa!!Vk292S8D-u|H zpx{!8gbqL%nCW=RDiHz+RE6u`YLn;K*N;mW(uDjWmY`35H`87_KsVziq8s03xOnm# zo@cWG%}5r;7++*LLSEnB{Ab-Pl+zjI>3pT`7FYHI(C-5?+jc{%x&ARLFv6#CM)ROmk^s6;C#TbT}t=*A?0T> zUgO!+cQSY4Y^vIc3pMS`9F+xdRMy@cf_rn0nwr3_ulccnAJ_bb;5RfRnjy~>rTnz{l4cCd8CpKoy(-|VdA|_+C2zD8c67~!H38BDRK?bl zoB(XTOc$K%3MDG5DV*?OH5L(%;~R^FiW(|LFBBuG4|?S&8AYn(Pk2k8)cV-0Qw8CB zn>tDKg@0jx$1dOikK3{CV?6r%7`9JHN131_tU#-p zX-GglmBaK54xHV%$oRo|nk_wK7wmw;`}hG#Ie7_h<-3}1hH5uC5(asgL8aHOqc4Deje@*KnfL4yJ(_jSY-hOtggCicJ(&| z-3G<)uA*t|E=+mgg*ux!L`6e)SSRDXWGX~L?*>HygY1ig7zO@87%6CIc|B8PKx6I43va*2~IX- zU4r;<1Hz$cF`C--mm4(K=F3$riJ|-8uHU!#ewTWJE0$&+RGGg!`SE}nSB1#mUGoPE zL6VH?Z?`Gbf!#0UY0Agl*);xacP@MWt33LE^Pk?`I9n-pfn}=7S3_h)Z>yw`gKRW} zm6RkJA~VoPW7ZA!u+kD`BtMa+{2>&<5vh^mo*n%_; zV`6`WmE(9mGW{M27nY{KiZ}t!fUuDMd^6Z6=XrXaZIXQlLv`fW6nJI)!+3~Zl{gDR zF9$ECXLs3Df%yvt}L=m2S{HPY-9qpZTC4I!hbrSVOv zMyf1M)fD5E>|&(KY_JZwa3ND*q}04TKqEa6c}yEg*n5F}jTos4l^DjTvZq!VOfXW4 zhkexE*sY{W7)jXi5MF!*jf9^lO%Z5>cH3w+$0uR#4(9dPR8#Aj>*Voj3Rjk!ujSS< zRNCeJ&P$58dNFNv8f(Fc?=v-k`2oQLL4{~AW~vU)OOVbag;K;I8`&8MKenjN30?VtC|P+sTR-iuQunYFxF=QR-1a6(P~-*LiK>|VEIzjyhEm( zCetBe2Ik}$x1zz`N{(PFBrJ^mV3M$Sq<I{)v(z-3%qr0^4#!iZn^O8U7bg!<^ zvi*LBfP?%Q_r=TZiPiGCbLPz&zo7pxRRB7vivk%><5GtvMbUZiwBg|*i11a@REF2B>zwW@DCL{R{-+@|6IZA zM7&)MQi>u5|!nE)#nLHubOvgjq zF_riT$NgeFf=cn{vxmGi!+BmMwyjFcfbzFXJeqRf?6g1@5 zhw2={>&T6Ny+J6aKB{&$9}+TK98Lzj zVUF7BO5D%pLq8iuJn3^S21%)~;l ziB_S#V$MTM|34&}Vm)ciEMUbvD70Z+WPQiN>N^%w-?4!DjzyEZ;}?qN{%@#(@;293(3nN>2*%Emi`6K#qZ!?1#W*8TpTjJj@++V0U_9NdQ=}d!k{7j>P zGtan)y56D=5KE2=HDJV-X-V>h5UyW;gwD8f@-gV<>m?bq-&6kr@Gm&O-xJ5zu$0mZ zFIPCkpzy0&qY4oT*mAQr-ZYI|Ilq!~BnpVjVs8U4TVp@tVN*4`a0len*M&oCn?QmI z`=49UkzQi*x*>j>*0Rd<5DvtI;g@3{$HMT~!aao{7~LWsV}V#xvq?r+|3FOqd1h?MVhMzWXt} za>i;fTY*WIU~f>&Fw<58cWm)Ih?!Nh4BIWOH=4q#=q@f}Ose?|S4`inxi45L^`96m z1*0jTV|?x;tV=P_EEuWrIo{-Jb1g~s{ys{DU$|lGw8z8PunpUrUApd%v@rMzQiPJ-dv8lQFUqF>wZ=A6u z(;@|H+e`_+h)$On`>P~tDgWsvtVMW3_7i)wx)g5iQhC5*Anpdo8kJl316$U0fQs8DS$s;ziK&blGEOpOvhH9F7db)Nq{o+DS^ z`=7)JeiECBDWIAee?YeG9!T58_Zsa=JH~+TSlT41QuZZ)voh98A6k#T1evGMm4Mxu zxfkzVK}zgHKu^!wC4FZX`VhzyvtN-e^a{IBZ*-w;e1u_J_AWjIzAO8%5D#ZhVuxZ+ zk}{wxp}f+Qdh4Eq;i|@G(vUu@@of$8ep}-g0e`76io0~93LY$==hWAE>&*0tPC?CzG+ zPXILigxM#MclHVJ3BAP&0Q*VnZ*hV{ecSrC)>5+HT8}Lz*Vy6*iXl6*cnL3Sinj=M zOY!%`5c_lxYWGw-a6i>< zemmiw-|oG3;C`>&E^_T^2QSncUg(f8AEFzA&DtN7rPqV)$9DiYzQYq8sOpIhJ32ts zjt*aS5LI7wI869(hu<~)dxv{Fg8kl(Q#!(yQ#w9E=#h?rui4R&!tiMnb`r^6jy@?K zK>GpXd8`lkPrW;p9*+k;Bo!ZqjGqZSn)WbyKiL_1 zMLftW@ELfh{A)Enip%)u0=$_D-FrcFyf~2Y{_9-6e%+tIS1L@1y&`_(6}*3o?IE^2 z4(#&yA(6F9iED)!&fa7<$9ls}L&l3MKD|;TM(kO&@p>lYkkl!hX z-x*dNQp2hT?gt|{ipCMVT>K77CT^!3ZfBJEnNbC!3Pd9v4_@)`V8NkUEY#6j!7w*Y z9MCw%^?0>ic;GJ=M?`M%MCI^A>%|kTrwc+eh3g@ez6Y{L>dqAxLsx_R?5wv=Jk7dB z!;6sc@S^cW(gVg9JwW(@q94WO{8$9vg8tfgh4_{ga3c^N+VuXWz~0~VOK~P6o5Pu0 zX`BhnBhKVXwY~X%I2XVYQQ*B|EuIwT@??ueEudski!B0fY4I(=Z>{S=z)=p@bAL-z z_Wkfcfari&mUS)Pmh0PeL8vddAS68dghk?s7SR)-9uSsD!4a3h4&srnG#&}A?zh%6 z#rMoCo>vUvdGJV5@+HNe3;uKZq;mMAF>O%BF>Thip|Z7fN#*L@Hp9gw4R1TCEvS>) z1|DiuJLnqKZoGC$Nmn(WK54#nMu$&=lEWvB7wL2#pBW8W8_!0PE8GXj;G@f@F9=!g{)J5 z;f~-Oc?4n)8h0mS5FA8d41%*IUJz?c<$mca(Qm|Ke8Z5V1R=*XPBf>*9v0v5a2%0G z2_la-vC*O4j0a8u0Z0ja!&nB9WAT1ACUdmfWCrn*5z7-?ma&)MUK7(Z5RuGejuj^` zHfu^2bVw}U%ld*>5Mz)_!u4JV*DJ=SA4@#(ag8r)K=?~W8NH;tBOgI@@nAvFyPuKX z{S13|NvL=4Be;*zeXmd_A0yp)Ox>w~*obnXL2K3wBp?*6~dg!Lj$v1O~@q{IH!8Zkn-dH_9= z=p_ge0B$K>DLrr{dLm@kw)siGpW2`YVtXpw152a_LMGY&5Gr899-#uT^V@Bbm|znF zh7tq}h!n~ZDFnT721A1xhy|FsgaSAR#$MSQy)xMyL3MmjNes?tUWG#Xpc9z>6o8ek z{)B&MoN}bBvm>8NPx#z>R7TH7)k?)vIrl|3NZh?4dLT-8SZuxwl=o!Ll*W1}YiKre zJ2LNiIdS!T-Ya?J+fuND>ysbXJSs=6Uaa+6Eu!x)Tqe_}Wrh0+34d7sr6!S6XQ-E& z>=6IHqsj87#6Q@4xzze{R5#%to9}E%zQ<17AT_q(#4k=HeBi{Ht$1D7YGo^CV`ZzY z0)O9XR%_zdw*E}6n~FavCj52r?0Z0{8qV)D`cu8Ze zO!L=z8~EDQ4bi<~%A?humhS&Fr}Vwx1%gw7n8Nq6Q}|U`!JPdSzMCqTvv1D%NV4D#;6-^H%K7mj0}4aVupGjq%ada2O}`*GP>Z%=((_S9d}khWXW@XKZxr@w55 zSva=4IkaIt?F7uUd+M2Xuh2~UH=ZAn{?ZfuWu^|T(OnozW8A{*q|M_Tz9f?FiDBzg zLZ7nF^hBRIB7@kGwl8!9_(FK7>FH#;E{6eQ&EwcwqcN$iqV4~INN6Ak>gMAp`ryY^ z)eVNkaNS_sG|MX~b;B@BucuU5H|40C@1<_OXWf+laov>bx?y;Px+xFU&DRYPjeLzN z@+NN^qASV7ALUX>f|do5^3-Z7mueESR8%?UKwA)TKntr%ZltoxrLqK;>MED&5;$35 z$J(M-b3P>a@$DvZsbylj7cc{X!f;Iz;bi?mU4%%w#zTldz75sldg)>7y}eO5$)nYt zm7eu1dlqJ(;o9q6b?tE~{|B|#8?}d8>;1>I)?3$FZ(VD>L$$UI)rG-I`V_|-^eOBR zp-%}~s!PvY*#SSnoE2pDDj`dCVNpY>3tDt_;YO;fx2Z0`QeB*`PHHQHliKc;{=)iA)de`Ux;769R;?;n-@kU8#wdrc_eDTGBkgOv%ojI5R-1_T zy5i=cjJNd7zKmgdO7lqO27Pk?@r>{s&KjwwFH^FA)HmPf%*hkdhP>T!!#QlFUrPF+ zoj_#cp7b!x+=O9fDhxAkVVGGA!^~+IW`@J?lf_KT6GXEelN|Lb4Rw1otb($ccPj0eUno$_6x$ggA&$_sgoL;?X34?1L}FQ!FDvu zow`{P5yVo9Dg;sMS_UgD2Tl-yZ$g2RAlO8yLAOz;CJCveUwGMFSCxy^=Q^iiKM@+J}H-SlX5rYl0GAEF(YfIMpgA%=^TlkVe@Uo z!H;)dI4BLGQ0-j4=j`+38L~jdWVu3xNNuMLbpoHG*T0iXP8c;ImW)G#1tlzCBf#EW z>u4>xV)&%ma6}6AW9sO&Ax5Gk&#m`Ty~vp})b?gr(SbMzOyapz6FCcUKi6N*hEciZ z3%abdFdo$tw=G;c0hu!@syWmS>l|3H?J%PQ&`v>Mi_~j{MGINfz*48al9hKjxSBlL zQrUDN_n%_IF#bQ=a#Bv1zbc!C>9lPMT*=1AaI7LZOjS1a>-EBP8a)h$jUUFd62dSm zBMh@r!f?2D!g$tF7-nsSVOCoRc7m6-q}Cpwz^564_Hcg69<#>bJ<@+vi8wbDjIq-E zOaF`JKQRYV6LThEyL;V`D!YM7^iI<|IVy1p?Nwcd&^8~xc(38M2^rVR=$-qm4t3TU@7Q&&UoQ6&1UO=;pb9yxD+<9E1}u9L%1BJu=&?LhK2| zra0yP&p6)hfK%=wz|-#RcK!;RD);POsP-DZ^$^svYu7H$cCqi0@j0XYJ#qr2Dwdv_ z1>cb%OO;y6H47$OWGN4{oMaPH$gAQO`+~xcu@f!~e%zArtb=+xV>_1fWaRMAv6KX6 zaX+Mwz?T#><&qGkH=c{bIYNC*-!HQi9Eevd(>L>6JSt?2!D9`%l!O zw{mh)d`{sjg;0s(8J~~Q<;XQBa{O(UlQtcen95hu|EHh7-%7<`gqVCbMRv#WU}O4M zJWBU_wYgOIW9~gQaM@C00k<-@6dd8@p2AlParvq6A#NbNQ~Mr1Pw_$HPn+N}q50J2 zxcu7kRqp4#b;38ij68ATiO3cYR`@^Iq%Q+yY+_cB;V=cCk(df*A)9+CQ!38|As)G} zg6Gr_kK7{{crkXpe+n;5+7br%EbV73?c(z;c%V7RAMo*`Lp7HJqCD@=#EK;_7VSO-eS!5;OQ9NO}fBjol-) zB@lUV4F5E;pD)7ko%osN=nx+ni^k#$jRuF`a9~UR-l`PA=Ze-9;h}r93A`DHgKWDb3mDvH!}|uPAICTFgo%xtTujcVn<>hF1oiCSPB>6 zR_AZV@io*EWa?N7Ul6|{e*-Cu82x6J!acm%`3v)a`tLb89%ni}Wsd#aBkpYibAtFaHbi+QNvD0(2WgkL4*QZVDC zMx~m$6wE&tNLz{jJXwoi??Z=?m1OZeue=aR%a&oC+aJnP#!?w*Dh6vPhVkP(>}#^mw3wZzqU_ zK>cuF7{gAG2yukoPS7bRpM6(=#Xv3I6<|UAc7j;^yg&lQ#YsO4nzs{#F#5P(k^>cl zXBJBWd7GleP-BQ8`F4U{*5rIU!Ds%@zP7dNhbZj4B;m^TlR|^}MasOOAS9L4hrV?j z8L9R@HV=G7!8ZRO&s8HGye7#~WX6W+-y@@4)H`MCU$Kca?s*MQxhZn^P(7;q2eTMc*RAIQh$K>o3OF63$7u*`BM zB;_~q-`6RN?>a73{N!pY%Wv#FmA?R)(KcRZDfD?W^XHKwGVfXnUthB!|6OEB%WSoj z1SoIhZ`73dUW4ZcxcKt}gmTK@w07hj%Y!?sL@C!49c`t^;21DvdTE(&ZL&Nw_(|U9 zd=y>({DYQO59cYi=IzYGWoOKU~roZ4gPx08|E2rmj9ro@pZ31WZ#>E%Zi+JxCB}F*|KnVXMgr+zTRR<&MH2$ zuI+9aX!o@_>vOE#EroV}A!i{|mKss_X!ZO$Ntv3P^E@fq?v|2;tbCZgCtIGYLtb+& zB>~Eo>>Z?tOkGRi`Mvk$7@tn3k)<%QeJA@ZMznHDVR!f$-M*QJ`+XOgBczS?xxJ&p;+C;ua<+1F!w6A#FBm*t48DLbY{Wq;J zPkkOR=bC@W8ivD|5~TR49EKuwz1_<4b9VFND{-_-%j~rj#&DD4Ps+2Zw9+w4q0xV6 zco@$XiT(7S5IxoC!da#cHynmj&Pk&u)m1b)1&q-f3^6Grjeed%@g+j#>XpPg8vRJ_ z=saz7OV&oeDBw;S{jvZhMqij%Nu&Qe_ZVjC+UQ9J8eKC4M!(Gp)94d(@0WGS^|>E% zLMek!Du#)IpM- zizI@EU#>aJ)B_D?BpP?$WiuH`SJ_ud4mZnL8#cnFepC-Dg-v znXJrh_$rgbWaX=gS_5*WolRHE$DLz@<1iSmoh=T>FR1h6RZ;*gwAu*hll- zE&MR$y*#D7EPIV!B(C+NoYPxad$laD&a3kh=hge_{ZbFiI~yL-LkjzjgFQ9rL;q2^ zQF0(fiPYJZwgk-A{%S|6Nel3hYyRT`v;ODzvz&Y~;661?PLpg>@5%LO^lmvy^+Ie# z42o97R`ZF6uXFda7j4RWk1y+4+~Ac4xEyOVq6mq=srEN2^%E#;UHor8yZD!o#md!G z?^zGE_JMbhml2s0WTpM(>^I@1)TBC7>)>*r-eI0U{I2;=&8330LO)f}Qz?qH0wjuN z^rBf*QOpNcV&3+0)oq7$AUgGjgHlESxrl#iYtAWb_ zo;2^4vK8qMwTkz+{!G0LvNU^Rc5we~_MDvH{_C6{?ftkK57!9rGip2&-2ajC3uKK& zE7$j0xxUxR^}SZE@3nHd|0CskAxJCN_gcBW*UI(1R<7^0a=Aaga#)UfaiL0Fs0|k? z!i73a1mrie+e3{ITE9W5D@;}TO)c#Vbbu*YPjkNidiFaU$Mnx{Wm$0WQjN=+nT5+M z+3TV1M214_-_W}5*4U!pbH>m69$x*(>U=gOEt?!g#kiVx;ABh zkR1eO9V~?tiG|rOvrOVvPPG(HB%aTHi4++F&b1U4@`ub}xM-P+EQS8$K<00FTv^L> zvlK44{5$gqHlwsm4@+S;*`N6%Dg620PmwEpFN4PCqc28X6Eyy0DGVB)i9Sb)$VBf8 z%Z!TNV`UPSLYZOFkyfUbr7)e})KDu^&r&G!v-%a!t~i-~Jm|3J_%o-n-B-YksRH*8 zjYF|2cK361`||xOY;RTAK~+s<&m78q|Hf1bCXv_>cKmqIza9NHE8jogGIl@&-r-d5 zmPvZ7@CR5kbJTsG&$*;TK1q6N2=vL<^p{;NXa~Qkg3SOEO$Im0<4OA5N$BPmG z4DQ}d{|w(=7K~rpQdkvlXK$`h6-jz(RR||uUZ4FD9|vdh{Dst2tO^R4syN-G8LEoj zHXFI<;0O5h{1xig^ilY-GfaTW2pG(Q_O$^&{D7&9>jM-%6w+ILnSKRw- zJ5)SmDW{>ceUfpE-!zx_ESXk&ctpvpSqqwNW$5-dWxUIDr1;NT3f=ztjE$s-F<-J2 z4rA*xK17?61{@J7aa%$ub1mZi`|tjgF#iu9ZJEu}A_(KQ*L zaB4vctQVrm;mkD|>oQQZbzqXSnH3aVB}WITLRK>>Q2U~OMSVA|e7jAUU-Wu~@AEXq z-(@L1P{1Y3tQn`ju#{31V<8Ubp%_y1pDcwYemrBgHSw>OLK8p6XRC~fqjoKYCVngf zTad=Y2}_}gr)4~)O&rfRcsy(XyT*$Qh^M0n7EF?o;k`k+h_GOQQchQC!b@XoV`#!_ zW536eO*n-KO?atLIqqspCF$*DvwbN(vMx8vp-q3;7D?4NsVj$#d4B9wekR>$D6+KX z=(F=;%lH-DW&HX(_v`rci!IBksHmB-FJmZ$wChmvsC+4bY1gM)85;e**i0rV?d=>( zq0#S+Jwl39)FqZe*D^Eqtp1WOa!_I^bg+-aW|JZ^S6B+CCbRLR9r7mWlv@hd=VtK> z@Me9kpQT`va`O-rdX<&B#nNPv9N&k>1M{Y|V=N7FIFM{;lG+qYgB)nnxWi=Rp0+fu z2MUGJHOe*5Qn)~JUu+I`)=;i^a})BNWad8=a2JT5P36-wj4%$#OZ8O~ZhGa;Xt9s; zjoK3CSiIOWo^9BIFvriga_6B(J;ZOh8OM;M&}A5kr1g?np3oE6anWgjwuwm;p3&^By&Z0a$9ymmCO5|M5%yqHmNVU+_B}P5X4dT^}#JI^$9Rm+CJ# z7?BWrD})uT^n3W#8TgJNa)a=vmsN*1=3^tOWoz#iY&*G;_yj}Ypqm2Pl5RXL$O=}= zRnGZXS2;iBwfcUTqg3Twj0(J%9C#lVJ1@$c@(^$>~09^Ag0RIwcypRj;G;eA$<>(KrgfZNC#Rpa_NAOk^ zw3m~N6n9Y3xWgcG<6mTp%Fhne!uJ;@*e_>K>l(sfW_LX+pSpH0_xGfa_$8U0IDf2f)_`mr6#_@&!i?3~P zv->%dS=13;m6L*D9bvcIa)j#WWh2FpHpr;>x-E0+CpzA+_|#8yY_NFyi4L*+K8vqZ zDM?bLN=cHATPfMSwW*Zz|DjUC!vE_^2@C(1l~UJaHd!eaV=BeMp-O3Kq->?Mvt>@L zl#UjkS}CVld}^g!VeyqJB}uAODM`}tDup%Tx4AZ`n0)k>{1Q0Kl5Wx$RkuC>`t(H? z>^qaMq?+kH=>d4sTdYh74EYr#8gNssSl0k zI5Nnr>lfNQG{s>4c;sb#SXKuU%`7F2c}U~C!O<`SbS-^i>MYYvgA-H!*;cG8#h!J4 zJygq~rKM9g)Pc$u*tqWfBkKK8T>FTEFyigL%L($V+>tt@vQmf_Rq!HU&jOW|79B78C% z6ims67(8|$VbS<-1L7@e&=-HsfOr`a!0^u>WNfM&KA_vM2`aNmXB4G#Feuyz;70qs z;?M`Jkk6zr20<0?3NP4|a+t7m8wg;a{={)8!H`HH+CbrDm{43s5d^f|{s!Q0`m4oO z#DBeXULhaQbyndtHAKQvKiM$F0J@6wy*G3VXDYueebPK>wlmoRS*qzRP!3 zBh(eA4kdokby}5j_$Y+_7<}*{tuNdehF$ZdFn3d@?Br|x$%G6^D+(!#V}Im+)u|BQ zdB4owhjT6W{u4HN3sfj`)a zGd4)$_W%9-=m1Xix^J`lg@1m3%Uz15Qd))rm*LCsz0{-pKsAn5xSMIE&F+V0HQ`Pp zpwFQry>NDWs=l{Ng9y^_=UV+7oonE9uqxoo1xCC0vpPMi!5V?Qs%ZPf@N9|D+>@TGlGDO zpzW0Y2%8$ZxoV16 z1&7(mVneeqOGPbgUI+%lEETmNGz-WkG_#-$%`Aou6QP-fL!sHPLHTT;WHCB4vtSUK z#f`lk9hzCthGrIHLNg2N&@4BQw<%hT4$Ul>49yxC8ReV~TYu*M43o1lxqgVk_=Y6y zHd1LYzet(TEF_iGrz+@6%1CWAvw7%%VR;)P921(gw-kMty}1s}0(5g7nnn8Qc4|Yj zo>r_gv)<>?WMmd1p<{r8eqjT%Br%)ogsMSPx%3$~b@AfB5s;7(*)Od{oi-n6u(@aFLmu{mhI!PU!K-v-Gd zo4u5*l}gs|UQuSP6j_@~mpoTz4I|34ku}7xiQsc2J@HL>$qDe16P(Ln!gz;06E4*W zC&xU$%-W!#e-l0vj<98)`>Pw=kBU4R3GQckFL>tOX58;-LsY;bw^~EE>TVOnD?AV z)G}`?uVEcH>tL0fh>gY*A9f@Etf}TlK8f)9N#s*1DJ`n0rorq)E%M&w6-weAOh)fjz7{;7QKpc!7CE{pwEHeqjSbsZD zux!`4Hc?$DS22tnF)0z2=w+0zPzZmdwO;{v3*;TkU2xa+M*O+)Zq5|Gc4Z~&SY(9< z+zM|b{lxp~kOFiFZ$CA$vA@`=YJf(t1~02XyWyc)|4~cfE5G0NcA!oqBUnnAX=!+5 zL*>+9=)TVT7!6rJwhi&;EQ^W^>ZBB>GE^VAwG%d3(lX+K4o4-N_>A}se>bHRumTI7 ztF?5dp`z773iv|(Bwa!fw8O0?19;uIX!ccqoq}@sLczW2M-{9-geiCtBPo=L=NgIN z@k#$AtHL}8Zn{#s#q&*SyVZAGiehv~m=R%$S^2mCozdrIF(|->s2;PYM%WV$CUizB{XkfZkhq7=2 zTIce}1`d83pi5%Up>DwUcWYkxO0qiS{pztq=pxjG@ zaG{KZ7tCWSPj}6O_sWwe>An1a*!0uUiqroG&F2emKhNX;?!9YU(KnWhPgndHIf~LC zjrb^o$3sp8rv_|6WcYM|aL#3+-t}fnp``hQXh@BuUx-65vw!G)7tH_sa1nazBA5lbEL)R*#fbElJ1(NnkUD;dLN`DXyC{Etv6VUn zzH%;?_4M?|KiyJdEOhKdZJYpoA|8l>tu8ZM*or~i9p7m{J|_my86c_P2%8*oE;e8j zHVFhF7S^5lOhe}5olt#}0UM$*{I@^ZIGlZY<7i)O2{{i6-@VKnd5B{&lKvYe#D6*n909|9iZ5SM+P;f%G<0Dh0_{bE# za)}eSx==tL;uEUeC3u$Z;#m~R8+^kI6zg^EvefJB#W<>q(!mUn*c{o)k#noJ*o=RR z{S_SlR`{z8Vzs}4hz%(N;vd&ZDEl`c(>L6PMkzVR`seNV5?&WIg4NM8s1BeHxd^el zAjHPkae876Ug`mOsRuj|8u@|bA0jVvY2@YTZVuldOGO|+M@4AF3_hXUQyGI}hz?dm z{y4`ldHsQ!ML8Fs#xF1~^uithdQ4~AneMJJZD$SQY@mN|4-&O|kx zd6u^0S(gHHsl2b?h&$k2jNLlQ*am3*c9!sDW8q#cqTN7S~Rz_WDV|S zpl_aPVz(oBv>R!Hcuxcgp*bTVjbK`G7w9+FP%>x2!lE3*?OB%txEy(gHJRt`q6!zu zv-Q8P*iv&kbG zG07SxNvOmq<*&DC}s1vB9Kj!G)@&Y7NJlHR=nDuIfki8=>FSF&hYlZPJ@Dwt3Ry-J7&lK4{ll zopC{hv`F+1+VmR0U=8qvHr1k?7)+H624?WfoE^XH?dE&|eRiUn!HELyo>2!8_?mnt zFCmSskZP;8k->MUk|Qkr5qCEl^_aUviQGJ+7USb1z${iD&>|l|C*h>Jl)I2_P8Hj> z^HE_%HD@rZrE2h2*ZUWMtw<&yFuTD$6ASJas})L^SE$t%xms<|$PLJb;k4HQ>d zpi@-(+pR*J$W}F9Lu1BM1g~Kqx*GbRe^O(p@*CmBqF6Xj#c*ztiupP+94X+T1Cv{P z?aXR#O@p<*3kF(;oiYL+a<5zabpIC1mqSucGYL6$PJP$9u!I~(QwiCD#TFk<_VZOd z^4)~WouEWjV>3QH#MClw*!F|xX_^?dm^pKX(>h4S%o|YO69bfkw~C;??s4&DrLOq0 z(u30Fk-hj@!-5msPS-jP1_vFQM_=utbB}jKs_HeI=t{GxLb%xpPV{I6xR+VyBE4~Q zC;CGOj;E`PJSUp`7OHkUHu@T8XYM#Pmw(@E@(Pyp*h`s{uvHN{ZYL^2$LvJKYxa1Z zqhhGFBpg%ebybVDPIQZ9Nmm8+o#=-a_Eq&lCt6;fv^-TLVXNXM%c51>W?`-3V+-qo zBw<^SFD*;D6yzHV`%;k7t3tVGq`vij!@Ga_TVw*O?4JX3o5j>tAA9?N8Er8Mwch&( zn8_AXTfO6b2F&9YlfWw6CSc}SOl>TPy${T*7L!m5vFG4K-?W(8SRh^x%r=Wjs5#zJ zV0K$fZS}mj0+>SMyve|vYcUD+TVy;ioh_!Jy4#xqOkayhV3q&Zh!Y)XF%8xC zkzwE&Wibi7Uu++ECRt2Fe4B-sr!5AS$9jQ1U`m zyMYr6&PXIuLD!~@Sq$Wl!Jp#G&tR+oNF;r z9vPAIc1|>O)Ju+lInm_lsUB*!`>ZR+t6-%*K~59EtVUVFm}PO-?j)q)84m z!2S7RGho>Z(x@VuMp6;vv$U=p!M?ctYJe64^=~ z-l&bUEYpAq9oA5#I42ey)4(_8aU^3MIL@+qluFN%a~f);y9Jcsm;h5u)KYDh!Ne)J zJk{oGxHh}9{(vi|0_0496Ad=5m2)#T)8BGsE8U5Pc5!8Q*NG;#M!Tu2`f%eELzmfG zDwdQ`zR$g06p5eJcFHA!uU`p}Z2`Une-PBgS$h}FW8 z$W&-G5KDoR(U6i$08LfPHtJN&%7;d#Mb!N0wy4aTooI4GTvOF)q)t2)6>q0}m#L*V z!GsUEO=2mYK`9nlno_YeHFyLnaGMQf=A*O=gK;_X}0!&mr65kb9@8Z#0 z^>X@K7#A4x~D(XJdzAPV{_>$x=_mUIyk8i%F>Iv6p}; zvzRPMtp?@_i%HdUzznsRbT!kT z56n1=$yOu%slZIKm~=JNp9IV!7E`WneaXf9XI@h33x82e?Tw8=VEM1xgTmBTE!wE| zh$>GwH$ZtRk#M5VS@=0uEx|+t-Tb_OC84TyS6AKTL_e^oJk@AcME!)<&!l48O|BB# z!HJ%FexOdNEIhfF0wZYN&^e%cDhfF3f&k7{7xY&DobIZzIa70-=n_k4s!m^kj1Igo z;B2Eh(A5vOh&rm_13;{{h^RW{957rINZ>R!+W7(tV{G`V>N`*k{@F!v^E@0&3hhLU zPZtNWdeX4M!qwHt^n23P()3rMa>6A6TTB(b6j7^iBn-`HIy5e|BrFd;5SdNlH)y`? zE(=5)l~db^USr|Ls%fbc{kkH2XTaY{T`*Y9OkbF;wpBZvq2}a{DNs`j<`<~NwYSw) zyITCxLXBztIc7Y?_N~^<)#PgM3Ja<&$WXhgud1Oo)!17@9Vnb!TRq(3#TIH+tH;29 z)zBb`p{|YKZ(d#Y#N^A`*LmQkqJmB2y;e^UzPyHU78CRPN=bwz$8QI>^s_^8?FafmUh_zSOHe&;BjjiH^1A#emvaJ)OM-$mc9Fu5#-ApU$oY zN~+>a7g+7U48y!Y1|)HK1YLy*5EacaC-a6`m|@P$ATh39db%$&9i|`Y2TZ%V0gZrw z8%U197w-6q_&7=;Q6myz(L_(yg(E=`G0PfUOgwHd8VD=OepU5Xb@iRT#NB%iUH5+V z|9|~ex9(s6eeez6Giv`R7C2!*%((gdcVG|T|2^SujFm;*%}IMPRejvCLl^gzh0Do-!ugCLk6L#Z9=RO0^#WL|aQuqmPO<+ZuvKuMmTCImA4GOwO z+-;Xt@ri%OA1dCC`0$=FbYwWcr}*h&ex&42C47D9j#B262su%M$6Yc`I*?>j7 zY9fEKcqdHWXTWp#OO-EGf`N2!EZ+)(()>CLe#xlJ;B#8}3nhn3_R7<<4deU99!0}8tPqPu796s_f{eu;i!-+yh{YNU&e(%MEVfv1#qI}^<6B+C ze-DCJbkaCn2FBFGKrDV$Fr~f;#Nt(j%po8apDJVy0I?`dC7~%uMfYNAtRn2!5?}K9&eW5!sp4BFZJmUl=O!U% zFjCUrA6MN|#rIXcgF7HkjRJ2p;?n8gjy#GWbf*DJ_$wn10(sCN)A@%r>n8DsCq0A4 z_8M6BWy_?;0RGv4(&Xo()+0T?;Cs4*xM#VFKU2D=lpm@&RKp*e^!6maY1;kMSdk`v z#ESO=Evw<>ZAZ3p{C7y=s2C;x^>4I}B1HDG*s;hPlEvjNk`K)|K+d%U&+yd+`TH z`5+c{T$-yY`1*>|=kZnJ?!+Z9+b9&{@h)#}Oki=_@6b^imzVy8pi z^BittEmk^k(mf5tVx!}$0~>)@EOdNTU_B6veGd2htASXobKsm?1w`}BaaP1fU4e(> zERg%#eRA&q2Uw_(60O%0cO2h4>c5cVSZrvL3ylR{GBOSP{!vek;?LvnoAAwL50&u` zKq%gC|8(?P+&_3~6ll?)NfI;`u;|Yu`56n8Z_v(3kKZgm z3Xi{Sz;XQJl6COdq70LSVYtCFG9CPZlBY^AIe$4Cnc*?$-)`!V4pi~?!TiLxjD7&; zr$7zvaV+t}APZvwizZBxgyDwC$V}%)!9>iTsMv)OIcZ?&{>SAj0a`3xlEVuRj&9ez zoXzhqd9noLc00@Xf0o@_&WbdV7t(?|v=oLH57I4?E=kda=OxBYv83i=fgF>SqU2%$ zi@^%~RRwDohDuxkU0*v4F);CHbjXz+$G7yi_cZW1Xt!Ew1E@ z!i+bj%E0dQ1e&vWoxt7n2oQ_UNwPWN8Zawr3B^*);KaoPnyJXgHtON&j*zicm?6h3E%0lvx@K?9()7g&k!CUJ9iPjk?dCy zzMb%d2j5G09ofIj`dA!(^=e@(z?jge0 zdhla}uk!fw3E=}C`C(WfWZWQzEPYt|=m7vC_5I#uwe6n*D;l~LdL)X{!glk%@TS@+V z+Rk+f&~fiBEq{GJ{w(1u3BQ}{93Z^LQGmw(LijGiZzuUOObi(hmnh&d%zLp-BbO*hF|ouabX@@Skb>5rtnx_77+L9|ut~~Svt1O=@y1ndkCUB))ULMw8!dlO$yMEk9+Xp#Y%oA|@vXk)GSuEwN*hY`Mpa09Hd?g#$o^M|q73%NzWxHi;-yQk#>!h7( zHb~c(uH7v0v24)e&meHdD%eYpYDrZ-O?HmZIOy6JB|eU^eHu|^CF0F+{Cy6lPZU)j z092kYDv$o?ga5?`$47Mq?Ns~VGkowXeeg~ndDGpr<8)*PoW^WRCKgIZ;xVV!O*`Ms1p8ybs9U(Uw?Ez!>`xW04E4uT znWT?qC>}0QlTHSgyUCQONx+w$NXiYR9U<$)d%lBxpQeJbSUepRPWuRiBcU{T*^zB? z(|z%<)9$V)?0Dh+HU|6qmF7^bq>DRW44>1~+}PRNLIR<9BI~3QZpcZ;ooGCq>DL`g zWO3+(l5Q~VvS=_8b0V>{n@l8K{5p|v?M#>uBM=?h*3}q>crpZUoP|Sc#W@Sd^~r3F zCgRC-Z3yF%P9)=roZS?L%XQTGbHqVJ>oiKQy3)x=thYPZQy&Yr#v*BTEJjzjwahU) z^WAJuJeY(KTu){aVwjakmuR9b80w3}+;(-kRfRL#$T*jq-C(jeXFiz9#zK)ePJJ?- zNy9*{D%6idjF*GS5^{Tjp=HKI*iEIA@vIZGTMI{0!JdBC3H1e2sYuRFM2?Noji8fx z2a#ZZ zU9L7^Ihn>Fp{67MT2H#+Oh{jm9ogn&(wQ4s?#7x2LT*A_SZ%>{sLxGxXA*K2d(^E- z*;3!t-B`b1fiu7Pn#Bt{o4STJb~b6Jt+{*N!ltt-wJ)sioLj)IIEPNyT^h{v`$dXn zE6!f;Uz^IiveXcL!O;<_XAMz8pm5X?HU2SJ`sCYRQG2%jO6^==v?70~-wh(5c_&HO zMbt6DWv-iU$VB>ab++dg2nT4J40Utm+F(^#_C=J6Od!nMFG4AS+X=X*jNz|1k22loQMhuuwdT z@Sb*60#ZQ2S&A6z1e3{N)^TI$WR@*W;^KG0nP^ljXx0&yXhdUM)Nxum>)V>0=JqE1 z$3|%iD&bVz=?lh?hcc(>n)dp()<&Rn+ZQ>_^GIP{QzxMAwnnWwcfrDj`UTFymX@yO zZl}AxVL`LQa>1b`8IQKalhI%r-~x1A<$5`RPB$3Nq7L!f>B?egqAJRCWShiA-Q}iR zfvKDaVhW7h;3^fhAPT8mj4)ZHxN@1(+TDhQNRK-_7o(1B3Y|1Tu2BTp#cps}r@Is< zwIkczhtw-9(>Ho7UwoPO|Iyjs>W$WV&nF+r=RZy>?X%pzL+KJ0OOrA((QhK^dEJQLsL>sJjI#r0D_1NoaPYlhD&{ z<${3)%1Ii_s}k3W>aw26(hHm#ny*4Ygoa2@CT(WBb%lv2p<)KPOF>OLLf*@H*_!Ig z^rS_o%{kiS%7+SS4w&#S8W0myJEg7VeAh9~gd`dU6~%pGxCp}q^0=HgjqzAWu0PZn z7!{p|zm4Vr3-w4`$ZhI6cAU^aP^^qH#(AzdH90#()Pfc9Py}aNMBt8iYGJHDTQBaQ zF?rC`)haEu6jKq9)uyu1bg&0yI;qM&y@$stZf$QYQ!AbxxJg*3HIT?j z!!sgbCIxVJ-N$Of*%*we5}lPblw9QS z2@No}C({d+V5}Dp9q2F;TN>Bi@$+3mm>3g$-lI0{FqQPVimn}U{#T>M z)~_KwUE=?j=WXS5q{~en{qoC{fGP8|bI;7RzWDAcuYJ<5q4LPzX#YWvzW$z6m#>Kl zVr{xz4T;Yk?Dq9{6uQJ~%)HIx4tt99_4#LmBu?dSn*W5d8ofj1vnWOTT3>&Eq05Iv zrL}q6e;IYQe&6FtSeIiw?d$ocP42}GULneBP+aQEtAequjB!^EN8*%FO8N z?_%!!g8IjxE9NeR4f9>fAnEU-{)_8RY`R^29>r%bLPYB?5go#|1wgeO(?$ zjjeCKXW6Ax*6I^O7POu&PkHq9_cnw7sub$Xg{h8fRAGL_2j#++_FsQzbL15zQtfHK zM#1Kn!+GKVOoON$t$&FJ7qVj0Whv<^H1}Kbs@mU}gXEsp)9^$e{d-9Nj+0tam0tae zeDr7TR+1C`M*P3rNB{5fzxKse+^gEvzY5hyj5UzHcl^4)ss?_}temXa)B3t>^U+_w zMCsq+Ie%JDm)DVgek-^pLrQV{&+}`vo<^fS`WK21t+8D_QA?`Qt1pf{E=s|bmn!{1 wTF<5e&ElV)_j>&n;YH6~sYpLHtqLvme5B!RAFnwJ>d&}V>EGm0@Eo%L1!NN@XaE2J literal 0 HcmV?d00001 diff --git a/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.py b/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.py new file mode 100644 index 0000000..854f071 --- /dev/null +++ b/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.py @@ -0,0 +1,19 @@ +# main.py + +import rclpy +from rmp220_middleware import StateMachineNode + +def main(args=None): + rclpy.init(args=args) + node = StateMachineNode() + try: + rclpy.spin(node) + except KeyboardInterrupt: + pass + finally: + node.disable_chassis() + node.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main() diff --git a/build/rmp220_middleware/build/lib/rmp220_middleware/__init__.py b/build/rmp220_middleware/build/lib/rmp220_middleware/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/rmp220_middleware/rmp220_middleware copy.py b/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py similarity index 55% rename from rmp220_middleware/rmp220_middleware copy.py rename to build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py index 7f0d883..fff87c5 100644 --- a/rmp220_middleware/rmp220_middleware copy.py +++ b/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py @@ -1,13 +1,18 @@ #!/usr/bin/env python3 import rclpy -from enum import Enum from rclpy.node import Node from std_msgs.msg import Bool from geometry_msgs.msg import Twist -#from sensor_msgs.msg import Joy +from sensor_msgs.msg import Joy +from enum import Enum from segway_msgs.srv import RosSetChassisEnableCmd + +import atexit +import signal +import sys + class State(Enum): DISABLED = 0 ENABLED = 1 @@ -18,68 +23,73 @@ class StateMachineNode(Node): # Initialize state and other variables self.state = State.DISABLED - self.timeout = 2.0 # Timeout in seconds + self.timeout = 20.0 # Timeout in seconds + #self.limit = 0.5 # Limit for linear and angular velocity - # Create publishers, subscribers, timers, and service clients here + # Create publishers, subscribers, timers, and service clients self.cmd_vel_pub = self.create_publisher(Twist, '/cmd_vel_out', 10) self.cmd_vel_sub = self.create_subscription(Twist, '/cmd_vel_mux', self.cmd_vel_callback, 10) - #self.joy_sub = self.create_subscription(Joy, '/joy', self.joy_callback, 10) - self.timer = self.create_timer(0.1, self.timer_callback) + self.joy_sub = self.create_subscription(Joy, '/joy', self.joy_callback, 10) + self.timer = self.create_timer(0.01, self.timer_callback) + + # Create twist class for publishing velocities + self.twist = Twist() + + self.latest_cmd_vel = Twist() # Create service clients for chassis enable and disable self.chassis_enable_client = self.create_client(RosSetChassisEnableCmd, 'set_chassis_enable') while not self.chassis_enable_client.wait_for_service(timeout_sec=1.0): self.get_logger().info('Service not available, waiting for chassis enable service...') - self.chassis_disable_client = self.create_client(RosSetChassisEnableCmd, 'set_chassis_enable') - while not self.chassis_disable_client.wait_for_service(timeout_sec=1.0): - self.get_logger().info('Service not available, waiting for chassis disable service...') - - def joy_callback(self, msg): - # Implement logic to detect joystick button presses (start/select) and update state - # ... - if msg.buttons[7] == 1: # Joystick button 'start' - self.state = State.ENABLED - self.get_logger().info("State: ENABLED (Button 'start')") - self.enable_chassis() - if msg.buttons[6] == 1: # Joystick button 'select' - self.state = State.DISABLED - self.get_logger().info("State: DISABLED (Button 'select')") - self.disable_chassis() + self.get_logger().info('Chassis enable service available.') def enable_chassis(self): req = RosSetChassisEnableCmd.Request() req.ros_set_chassis_enable_cmd = True self.chassis_enable_client.call_async(req) + self.get_logger().info('Enabling chassis...') def disable_chassis(self): req = RosSetChassisEnableCmd.Request() req.ros_set_chassis_enable_cmd = False - self.chassis_disable_client.call_async(req) + self.chassis_enable_client.call_async(req) + self.get_logger().info('Disabling chassis...') + + def joy_callback(self, msg): + start_button = msg.buttons[7] # Joystick button 'start' + select_button = msg.buttons[6] # Joystick button 'select' + + if start_button == 1: + self.state = State.ENABLED + self.get_logger().info("State: ENABLED (Button 'start')") + self.enable_chassis() + elif select_button == 1: + self.state = State.DISABLED + self.get_logger().info("State: DISABLED (Button 'select')") + self.disable_chassis() def cmd_vel_callback(self, msg): - # Update state to ENABLED upon receiving a command on /cmd_vel_mux - # ... - if self.state == State.ENABLED: - self.cmd_vel_pub.publish(msg) - self.timeout = 2.0 # Reset timeout when receiving commands + # This method shall only update the latest_cmd_vel attribute so it can be republished by the timer_callback with 100 HZ. Should have a look at performance though. + self.latest_cmd_vel = msg + self.linear_abs = abs(self.latest_cmd_vel.linear) + self.angular_abs = abs(self.latest_cmd_vel.angular) + self.timeout = 20.0 # Reset timeout when receiving commands def timer_callback(self): - # Republish the cmd_vel_mux command to cmd_vel_out topic - # ... - - # Reset the timeout counter - # ... - - # Check if the timeout has been exceeded, and if so, switch to DISABLED - # ... - if self.state == State.ENABLED: if self.timeout <= 0: self.state = State.DISABLED self.get_logger().info("State: DISABLED (Timeout)") self.disable_chassis() else: - self.timeout -= 0.1 + self.timeout -= 0.01 + self.cmd_vel_pub.publish(self.latest_cmd_vel) + if self.state == State.DISABLED and (self.linear_abs > 0.1 or self.angular_abs > 0.1): # This is a hack to enable the chassis when receiving commands e.g. from Nav2 + self.state = State.ENABLED + self.get_logger().info("State: ENABLED (cmd_vel)") + self.enable_chassis() + else: + self.cmd_vel_pub.publish(self.twist) def main(args=None): rclpy.init(args=args) @@ -89,6 +99,7 @@ def main(args=None): except KeyboardInterrupt: pass finally: + node.disable_chassis() node.destroy_node() rclpy.shutdown() diff --git a/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py b/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py new file mode 100644 index 0000000..854f071 --- /dev/null +++ b/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py @@ -0,0 +1,19 @@ +# main.py + +import rclpy +from rmp220_middleware import StateMachineNode + +def main(args=None): + rclpy.init(args=args) + node = StateMachineNode() + try: + rclpy.spin(node) + except KeyboardInterrupt: + pass + finally: + node.disable_chassis() + node.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main() diff --git a/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o b/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o new file mode 100644 index 0000000000000000000000000000000000000000..d52ab058c2e8f55277ef254f3c11997a26e2a720 GIT binary patch literal 388376 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%0AU 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

NZEm{(ixy1yHmk4dlT~8w$3luiw2zLw{#I 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%0A)gDs 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 T^Sj8{1-dtCAcIB@xtWKf+qyFN39er1MF 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%0AU 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
NZEm{(ixy1yHmk4dlT~8w$3luiw2zLw{#I zQ}6;~Qsj1y^w~3D~h&L6>n~y0RY*y&4g@gD%Y6_`~sJx7G9cFTGgR`O1vBO87%~B9BqIC%%yK z<;1SwjFQ&~5Nc9Qa@XfBdtdXnxg)R{Q#mOjH8Jd%q`KyHc1yCJ!q%?jH1y#nXU$RH zs(N{$(7!F;hi{80KKl{5d4;YptE_$HBe2W4E<$I5x(a<&WCMl1KmVqJLlgS4$Ws*h zKl2Y_q@GUb8X>*VC+1I8^O76$-{62Usq>-G?U*z|UlrcM;Z0H+3Vl7Uw^VlC)j6sR zA0cDb!IbjbYp8>2SMjSgW|eh&`HaM;_a1V#;$QD5K1rt;)=*nM&Hj-ich6uY{jhss z`5I;?1}pghlVri&$T!Ati>+f)eArlJ;(u1EeHd(=bT-g$;@K^{nDQ3xQeGKfrzeR^ z_Nsk)%gUZn)2oXcJi>AH&PG2p0`j)j=luRGZ?F4%T>ZQ1 zJK;0xFK~YUzepUCqeSqcFz})r@S+ItV(D!UNK{h=T=GZ4UV?IgZRkb0-5Yu#8*QF*kIUwVmHdQ~o%X8MRT zU7O>t$J04x=UU6+kF!ikT{8y~55^y1Op@JWA-~NTfmdo8bmuug;dABWG@NkxXU={s zMkS|VzwuShUdHed0;9A3VBq0EdZ%$g-~q;@Ni#ZdbA~h{0;4jd`Nz53-u!3r}P;2HCgh-)cFo?v0urI-fPoHKb5xb$HyB%R( zIZ5{wf&_cr*Z7@Fojf0fX@3z@C(nloQaqnDjo?_+_NMF)c`fog#(^eEjA1j@>=f#{t&(ZL$C3f;zD8u`rCG0gEtNji-`N;UmCGLGv-9)A?e2ADkeRIr+N z|1@_WCw=zi{+v)&QHVUm<>BKG)L|M8-5=ovdRD8}!Y>d6gm?UAc8`~Ir13H_WhK68W zYzt$O(s142+1RV(EhQg(6%^adn51@dF}%@rv8^0hFve4&i`C}Lb+HXG6m0{L)ZWY_ z0_Ul%gCwD5Gm>I2M*S-CdX`6six=~);(4Aa!taj)K1OC!`sqp(a2Yn|p%^Jeud-&x z=4BA^J^Z#Rt%&c5VF@y=h^NKoY7x6Fx|x!z3*zf2h}i{;)2VPDrNS#h>qAiC^`W0b z=~NgC`*42;Ipr&uO^;8y>c}ZvuuSrj#&g z-??7LM`UsYDr#ovlMqUgMz2)~((3iCp_$AwMc;5wLg;SBq*N4UjYEs{O}-uuXkhOS z&0|bTn!eUNd}#;XQu66*&EgI4Df4q!qTqIcunlw8`OoW^x zH}lAF-GRHsItSa`lFP*-cN(9gHbNwE4?|$Za`dqeInG@L9z|4#d=UeuJpsdUV?|@( zSxt(@*$RWpPcApSB;4Z$a0KO{uclfH6$dIx{}JSyfyHLM&>(y9bbTCn^_$-U_^rOd z!A>I3+rzDBug~GPesc!+P1;6anO9*Us!a#;N-R4WewR~rx*jl1Nikb)<(-6im6JTj z>WkdDpDFJ&RN!gEzIKXyOr zEc`jEHwgB|#bTHkG$)e!L~~YJ>Rc*6syF^9JbRanWWNGKOknUYQ8?gCJc3QkQ(JlU zkW;;h%=Se;P8X}h>0&!jM3q3`^0q65;ORO!CefV<@dbKyDZhh!R04r2C@0OD z)ME*lHc;!q1JRmzSjK@ZB4 zAx%$v%!U8mZaY?CE7_JCR=3eW4 zq*xjnL6s{HD{=LC>Wmeq)0X4PY{ZD+4ptx`QMX0o6gALuK^%reuEis=;s?6r&7mC4 z&qPtqbUKAg0bJ_dS1c~H^6&}I#LDUeE7*tWFktC>Ie^Rc702oGD}@e}o`C_y8B79) zw(p++{7K(h>?RQmDqF};yjya0r_Bk<8oFiE!$1#HSSPfK%B9OFsPSCD;wC6_6JmJE zAb*tdl|>?bR)AOaKS2f44+a~qHKClVM+(xSFmSRa{c^(e(X?`OEb zCD-b=pop%(^7DXf#nqFz>c+T}_uAcQ;23QEEdkSuhWR zO9!x{*LZ==Pd);>5~@;Jg#uUMX81wYbY4)6trf=0l+w$_8%eVXdLOzcKX!f>U!xSl z$wSa*?_3|dgRLSSE^w29D=)Dj!+_z2`bF%< ziOFs}X}*S=1kU936QX5uFA8AK`T!0Ew;ti-Nk&PD8-=YV>aMnvwH}^a32rOj*0%^d zB~ou8hsG#&<0e`Kk-F0A#MID7q^`76LmQJu7>!x7CUmz1T|pJg2)N8a6KdHNK-b5$ zo?1`(SCS#m*w&M#x_@rs>IzSdD2@swM@MKj z94}7L<1u(~;<`)_7deZua1E~6KiTNMH+HkprMPCdGxBreYrY<)-|1Qk*-HYe5?EjH zWp5r|shm`Z+ZA~R*9>W^bXs>mxJvtLxMqI=KkIpy4mPvXy-eep{RO!z6l`WEN*dQJ zl}d_hmP+OSs%zE@vi`vM9wMhQNhRq;|AtZ8Y@-j_nNv4( z%Wu)cNpa2eX7*NI*Q`~ouGyJn{i5mVJhL;=Fc5=wk;XBLbDq#@(n7s18meC7jERPt zKBOrUt(fzE7b$z56u~LOi>5kuTcijodY4|Vs3o~%p17p0li1rosYLS06!&m!XVE7CE zyX;Hk?=qj^IbhG2&)Nacny;Bae9gpd^Zjt!{HJ#Kr{)ygl4eb@?!|@={8_EqrJ#>oq3`SDav91~bMP_RP3aXPoHs zgbd1qSNPOH*E@|L4d?f0|8&3edzSf-Y5#V)7U@faLv;Eb#B6TDm! zBK`SJNq#i$cT2Schlo4j2mSZdR6SF5=kmUP)|8`xXV(T9B0h2*1%{Td$G-QixhlR#=cNzYF6kALD zTm5`*^}kCZl}(GSX%IVumYc8e4I-}S`Pmj9!B9O&uwIFOvQ`lhfup;ve2i9f*DI5# zEh5~9+4DrZ)rn;Fo!al%!>M~Qgu;zsihcYYw%H&E52!?=}wD*Y6%MMsY50l;#OoQ_Uw$;6174-K<%fHH3d|J%bf7{P`vTo)GX& z-~a;-1pYtrz5_h2;%a+$XYSQXt1h`4EEhU%K)?wyVBF<`;{q}m*0Qv+6{{hwTu3p< zU5!F*bu-8*aiX##RLeDfJuM=A^-cHnY(-MN-p`n?|+`}`G0|T z?>%?QnbYUY+}ZPpBmn2RZ*YIg8wP6|)%mc>g6GJR5g|n{UOr)N2rA^V)Wxx{frD(wb8lHXmslg+-R^yp*7ZbWSMh zKkc5k8Abf>)v^!mX*u{A~K<2UFiAS@(TM9%*Cx;_Ey zIDtjsx}J?}r_b6By8=ac%T%=SzOTw8_PsIkvh;0Q^gSJqzBfjmH)-9MBHjG9Vt__t z(BYU#rvHtR&Fp`3TAUjt4~p({DShSQVCzIBjE*c43;_3l)<_3ER(igzEUwr zaqJ9;&%5el?#KUD{k|J1;@cJfi2MtqK_4k8!pmj;TWDgYh>YW)ey?tlL1l;!-}K_6 zt{JRxV1PXFF!tdqWak?LoA~1&U8I#{-=_ZR&HsEAnHG~FbWxGH@JP>wFNl~uq<#|4 z(C%^4#f*mKGI>)647;vl6+4r_?IC z-v^bMuXp;I9tdIB+dm)H@{{OGjS?(9m(#~{!_Ol=*3Tm}FyPO^H&7{Vh}=vSxjAw- z@9vJ=W24S{B3lUG68VVmk0R}KaqaqT9IbZM3VdBm4|lP<4sVs=ew}+O?{9S*RTrZ(4Q+{Rr{~jF51h6>>lF)$tQy26RioIREe9) zPRdSa_$ezpPa)0*`0wE_3I8(OP8n&BthBPTGIAYd=Q=DK0{*MWON^IZQui9!xz~A< zKicvpLJ%Vx&R4wu$~o7_%DL`Ml%1R0C(Qj5?$aC_+=f5e@R4{Tb}US)!pBoYq!Rt& z2mLDbZz5MJ+3R+$dl_0v?R85N!q*00?jCUr*mTUXhK|Qh1!St6SMXK%QknKR+e!QP zoKL;*B;AsC=u z*_~m`!f?iA_(4v_Uf}Bs_{9PTr(YW<;8pk4#R8M=0~4wr(ofOXJf+`-ch&#U-|+4m z{qJr9A^s#JV(cz&dT?j{=!qG9u}@!rWgu7?exXetbeIrK&qxB2+`!rK2K6@Q3((n% z^*T-zaCNKx1c9%Icyk8!gd-FOd(u6NDOyz2+_qgo0-s-H{& zpVZG8;B!F3mP{cK=)00VR_f%_VNuct&`7sRYHItc4u+5qJ^)gEfb0Y!r6Kz>>H)5Y z{=-W}NF#V9VlEekMt}&7;Fp9(__aSqG5EumuY+9hEEg+2I1o7U6;%_Qx>?<0x%Y%x zO`b_jTisU|iw<~UD*RPMSi)Lz@q~K8T)bccvyah;Fe#0I!6XBb**dpLXx#Kw#G^YK z^{&~jcm0CerljmP^@kMj59%EQd%2X(QB zc{Ad9xp)Ve7`gZtkH(*Yqw#MuLou!3a~BQatj{x7SiAo|n!wHF>RQyr#V?W5k&BHA zTQX+o$JOU@@3kpS`o@GE*}C^*5N5nZ@EF#ibD@Lo;X}}rI|v7hB5@vsaBdQWydPPK z9`MqE#nw-;VI|J z=BZ3;05HKy3M{mqHqIlt`Cb;h4bAaJYT;8doTYKL5S*34 zg-%QUaAu`0?kP?zb$`GiyT2cDVDNb~rt?buppcH8;J?Gem+RwB2|no4Uk@0f%g5+>^Yr{5`ky&EJ6q=#_(7)sdhTC3x_;7vr(SB%54<4)!814tTdf$EZpo9IOAL*;GDZ>w0sxQSN zsULEbZeAS#^g)2-FAzf{;=gxw$zcC|w+Lr8(KmpXt9$JCKi))EfNNPgwvRq&q`#M# z?lr)F@9N^d{`-*rA84W*=KZI%$Qqwt zzo`BcfaD-6_(A~E4+*-L1CShjFV;Z(gz1Nb_2vL1N8h3z3PAelJJq8BNRFhtgYDd) z?#(E3iMl=j=_mPZf2|zsn7cBg%!TTj0Hi>lrPc-@Ir^K(ngC>=ZdaECAURld_&Vb6 zYoPu#a#lu}*CKz(DD!3p1e8bq%HPgD$P8Q@&?;9qFY}k^tNWGN-w6ee_xCA$M?`Om z{4sz;5g=Ow9efqWLjR^fp$o#Yl~Fb_`g^Lz#QmIz?EmwFhsu^TKcrIM6uvzy+r9kY z96+87j3o!#s)CRL*=QB4#SK{0N;Td=tQY*?1|{orz0Irc+l>G?HW$o0cqUDFc0UmUp4#WJe@c@~yW z{r4fA-OGRfa#-((d=tU?#p?<`-g~C@KP=NnPx0S7@LRg1#1HB#O96gJ2+75u_>I;d zVeaQIGaPxL^Avu5ZH=Ql@UD?w=lsISEU-C(EX;08;Vq3%fU@q;Zv>hjr(Z>C)ZbnX zvX|!s7&aHF$+ZFT+Fu_$LVpigf-@smMf6?HD~`4oUimfh>rDhSl{(O z!oo*D^m`)YyE4#QzAm~atp65ySLt8p?2PGqa(Cw9RngD$^yT>v=lk1&*N9!6tAB-8 zPyOJ&n3{eVXwuO?i@p`rzsIYk* zZ3sYebZ6H60Z0LAJsE)H;8np#1CRp!k$X-6lB3^q&kR70*LOtjiy$-hP5`L_J@RNh zdAc8~!{B6|Rr-DPk)w~8Kge1g2rLKagGT5h0#T*XIXV7O-4WIgVq)Y6<>=fK_52lnP^lhtT||G5 z<8Xq|!`5~S{f@ts)&=HGLL2DdJ`gl3?F8;i^u*Kjk2=HpyrRpC{0;4|%kK^#IzoRZ zXzKgxfmZ}dIQqL|{7vB9m4KYXH_X+ECY}5ujNs{ZQ;z zfhM!`;QJ%`32ae=7Q?e$Z3@ zt?$}?`s#!3IY>V-^qN5VGsF5W_iXf17n}RB!3K zJ}{E&BYHi4Pd-rMoPPS^e!*f|A23Xhn&j_D>-uK@Jx!#}KUj}CUjHk6VSs!`=|}N1 zW_pYBrlVi%{YGzpwPM}x0Gt`~h@&5OwmAB+-p>afug}qE=iOJVFXK;V2hv%kHe`YHT!u-;MlO`#tQhdM;xT=-xB7}Z7l>L+tw%Jr9oR87%; z#AycluYIo$&?-lN5j!_fHb=h^`#2z6F&qf>QUEek-`3}uKKib{PXs196X7O)j}X4^ zt9{cUXb_LAKm}-JiSB=p{zcAx0sHV~ME@-3-W>gA>~ArBLEa;I`d=jv_tJmp)!tiQ z()Txg^|yVm>!-K(+tgpbGi1kp`tk#>IZ(fM@NW*$zdz)&L-d7*UU{hg_n|)>sy7dP zX{aB8X?ji0F9Ka149J=QBnRhee-`kJhw2CVywpcu-}l}O>|+P(bNl`@0L;=Q{q>zW zzX~*|^i#!872`zIYkTNhaA2w*CDlE6s6J}4-WYp5raOx}i}7(&vA%imIYYW9Y>v(w z}wf0Og`0Lyapr$wI@>3);KUnK`8n0yw%x={0QYJZuS97^qn z6v$!Jen^fSLhXkX=<{*-v>%eA&%vS7eh3059yBedKg%K0{)Y{Sf**{?+01_MQF2_c zA2Ln+WwVrrUEa2|$k1??u0e;z-VQh5C(NZ}h^)`+<1}LgPIBdBN&{64Dut^TR)z&C4g8=-<$Jf0CJrEGJAE7zPRL`68&Du-%Io@ z18*6KkB0{OTN2c+DEV25-cs^LUlGJ%5h%h@{uMkuB?Wxo=D9I8JqJAa_Qao__P zoq_Dv47@D>lqSE;y&w>tW6n~pAIN($Prp|7TA99W;2#F+wfkSUfA=;9s0J)uRQK3d z^CXnuNLOPADc1X5)i~JV<}7_5PSVil7GF`UpD2BzRR4XSmHX;P20SuA-&gjlGQD%q zS%dZa`+XS5+G)MZHl)%Q-BrqwBP9K(;5SSM;Iv3gieAvKYwVdj*VVtwdMHcIhLn>b zGCYS+ zhKMTJ@r|=t_r9?4$`}N{A4}- z?ucGhbZwE|Q1p3`exUftV*P5*F9JF50-UY)cmSguoT>Ln08$`l>G?6rku&uCkV2fD z_wT^8FNQPoz6wAJ5cfP3n8xPlTb+9YkOIBR=?Fk_^jXdY0Z0Mn{Hp>GL@Frd$0tkY zjzW^$4-!586HdkQ1AFNgbN`$XJ9k46@6vFFADUBIO0lo6kQsy zo|vZ<>y3F&TR|n<~@+1=&lSA43-Q>t&Y<`GfyuENo2F9Po&JW<1BPX2sE6&i@ z$9@@ua6X!k$nd>DeS`xg`hA>4rLW1qKER*U6Ms`VIK%9NfLY6tL(BYS4%ItwGO}J@ z^mu?Gg8pZPX9j>da;BKS_F?+E*qt#Pw)d+7{Z_%x3%j>4AYveq9@9KB%-;@TGaMD> zhnOS6{E!0uLf$I@ql7#vPQLP&DU|cG{E(QOo8^ZT$az_QNRFJ7<%f*X6B2TUl^!M9 zyhsj?Qo1Xn43ALqw~QzbM<@9q1LVLYKct5oh2)0}=mO~>2Os&%6n25cB(ySGGBPN};1 z)C$K@v9MF@hAT85sP_hiov>Tts>3V%C107>rDW$|Q*xRuXPVqH56##n*PAA9vIPg5 zf=)ktk3w^yh}JHC96@WT$_urL)#Zva0frk^Z!jSaK+%aA&uXE0&{Xe zh-ih=%RR*@bUU3qw@rq-DbSoVvdHOG;dVH=J)H3Hva(@L!c|YHq~ny7;Ihz(9^)hq zb)qB6oda2Mm@|}L<-)RXg}ci|PTpjc7z)|RsX*}_l}`9%XV8ypooTMxe8w;ogVZ_&^4(VAMCIaCk>b}*NsFA7 z;-3!@*>t9HEu3YBSL$6e)h(x_xh&Il4 zilEjoF3tdAQ;U|PGoWzlps-V znMxw>PAEEe%YBuy*LYCq9Ij?oIK^s2EfAZo6>2^; z2Mv`%$FKVjGjrA%oF1zEC|EcEmkdOiJHM zTuv9!0oo$?yKbh;r8MQKys#8}#@8Qx7V!P$AUeu$uQI37RV(vJ!xEUjEWvrIQy6w) zu#P<-0ugt;Q^;=^8e?C|lVD7KWjV>Vq+M)awmT0!m8d7bk1?0v@#*AGuTr#9hz@hr zQ^P7mNYwq`?~o^MSm3`NMs(JKqjgdR2s1df3~)2LTvz3Ekad4qQZ7A0 z&kqM9SHQHZ7eZ;7yeU&AUo$d!3rePiQiSn!bm)`DJV9Jty8@2KitDyiiGbiaP9M+( z$XvIgoj5&XfLD z4`xxLRu{?;zyVZSb#Ry^)mL+{BaB7VXJ$MX+wpjs^$+6U_Hy#agT|s=z_47z;9O{i zH=@7!M&yk>&+Y3JsAcq3s3=3Lb=B$>wH({qGPX|t*uKEn)a5Ipw3sqHV;!1l9g5SO zcsr95od)w7)au?k^bYXDNZ4s&48jYobvRL&gKot*2peIa%}7RON3U>P>048y#= zv6J?ac-u1W^-7K_%ehzF4RVA;&>8)Bh$Trd5Uv+iF55o~N%IrgTWJ*2K zwbYY?jr#vu9uspH;h?e%Ymkz5$t?cawO!@{TGz=?J|4hkWdOxtl2 zS?=0^BZwRZ8@@Ab!#7YgUxHNt?O|0qE7jIS*y-V(b}~rbDFDO%ZsK&lob@-E2hwD=60Enj!{}PJqMjdk1ZyCqfK|FHmrt~20$AfHz zSl$~(9PZZ6J-Uu!&EAaSUVwj879rKdb<^U278%a5D&*(ial2Tb_ zWaXK86)u7?%l|)yA$P)cestk~f$;y?fwUrP5y2w5M9_rrNcG-?Z}GJl!>Qel;cVX+ zcG@vqlo|sd-WdL}XKDXaU<|kX=VSOFa}417&sU@d!GIw;6$9dIHmv?4mOK@ZM%Bfr z?kV$|zHwb)$Mu(ao<9J@6P>5`%$t=yEk4^59anvVc$<PHqsCA!WG`*_!NOFw6q@~s)QeM)m=N!@41~{>`gnr z-E%uP?oB(-?YW(s_NJX@_uS6Sd(+P5J-2hq-n6r6&+Xj0H|;#L=XP$}59WzX@8t;Z z>1}w6po{q{mAYSPrAetP8Nu-x!W^$i7Y8Mxg>1-vP;eA7X~Xp?iTu@`F+)|ho|ee& z+S$10cJAMsb{^StI}hwlI~#Vy3G>L37othP5=|e%Ju)X4-;zqdOuXB z7oY_~4r??-Ax|+U=S9J7j+!W#Ch1JsAUh$UL>O_%29`}=P<@>;g;RwBf6H!-;UMNe5zsvO4t@9op={35E>fd%BVic+KUkrNyR z+!tcG0ijj?s){7Sba%9yblXRJ0ku&74obgW<>8zW37x*-_OfBakUds&Ympzw#Y7rS z7O(;2e$ikFGZ*2}T*k;9TIoy=sN_b(++_9?h{1GB7Gl>q$Uq zOwUT315N?~Wu``UjTTNrv4slH+RCU0BCj7}=IAehfhwHhWG6@+J_3zla|WoJVWxnm zwDz*EwWMjSGu7Hn%G)z{|Nv72DaJL52Ce zKVUpjvIwhIQPo6}d!s>P#)3j>da~(7QAiXrk+jUJ2UCn)jVdj8SEFje>i<`bYDX%m zEdFYDMs6ET? zMn#7@-(ktVJ9nZ;8LW961x_w^zJu6y6F(8ZJ*zgsa&akP%lu(9)Me_f0Um&y;XT7R zu1tj0^YbZ}v~_T!1Mn2iDenX)ItfeoiVNl#5STomR!ZL_rArt~lCx}t^ZGRo8<7x9 z!P1jw>;#6GeL0J)0{B9Q4|`#G}L6 zSAFpls2$BR5-L%`4A+Rc^yIjA2;RACQScEUSE~L}4VUlR00ISG(?9I& zbD~oMMCO6Kuc2i+GoUJt*pliJGyy6YbWA9?-C~2@acYw^|9Lek+uSzex3JpKA3+#; znY><@0Ui9bM7)8t3t8n-2BJu|p3d)f4N$QMLo_STI3n2A=)T;3ArZ{o^%Rk?N;8-N z#x6K}De2=P!XNFhY{Q(TN`F z6h2}XWNxfs008Res#p7kcVa021W&WwPiTyGI{Th#BxkN0?Q|7{9fWurV=YvjKcP^+ zZ9+xf4y#0d+rK9NLX3f6zv%VOX%o=>XC<6LLfEMt#qI^*J)%2VP?xop-jzW8B%)5C z7W;4r(VA0%MLTr}mc4nsjRY&g6a!KRUB)_xKbX6OSkv@+(H-^L3)dc;i%qQ*{LTB* z8I2Ypym@X~2pO-1)rISM8oo4AzaBfGHYeQQY_9@OmbLcR<`12d)A7KGN7>wnsfmGaLwdyo6Qz=NP`r4Kw zt!csV=<9*ux#A-@1?L_q_?R;)!2IaUa?YwMMGhPcjH2(jQIobl^ECE|_!&CB3Hz#O z)=ONqb09JeSc2Tf@n)Nt{ae{=XF_chNA7}h425`Le`8?o_3@T*4<0?fe>i$C1&7O> z>W&|V*AcTmbpF734VlHD!UQreatIIsD(R`Xz|Mf9twllMeC&b&PS61~Jr-*KijgwJ zaxDDHKGAbvA|Cz;c%+^QV}G2Bm0T>|m9lUbVbE0|`+E;;~y>Y8F`7Ckx|7D9r`VFW|?k0#Pu)eaDTnV3@emg6=# zqp{+;vK)ecriuVJfdS*g)@?Ja-DS%MrW=*(MSckP5z+2 z*AIfOV}U&!X4h03aJ1gCc<$)4Mc4jhR?lS(%RkWvd4J@RcWCHsY!0CB`Qt9jV&{!o zR&I3l!-Kw)FTH|s*e$tUO-9f zCN)HDMvpIJqztXI-K&848%(&tr&xx~>6T$;&NL+>5fzv-{r8z>_vv;!amo}1mc>xs zz)gxLP|FUGNLu4gEt=@%jVZdUJ5b}{Jg9Wos zjXeV9j5h*Iw6SisJD>SFdYLWOh<%c(ggWbB)lyaub=tXW*jMRyw$k7Hl{RNo8VA$o zL_4B(T{dqK2sa z3c8F^%116N-G1MVax)6(|FaVryHsK~v|EV{0GP@#-<1V3k8UBN2t=}=%XIEkZcYfx zJ6Toz^+Zm;%GD(Y(RVHs3jR^NhVkqeI$~^$0_?$i^|Vm2|2w+D}I+Q59r-YJa3bU3FVclzW*AQ~{#n!WJME z-JDLf7jk39DcI85*5M3VPd4RNlsLuF;j*2xV2snB+vw&x#n^S(qogm{hS-=BR9W1$ zTldisbK#)W5PtVDw`j+I$7`;vnLQtJ_22(68{bPzhuFBm_I)32RJJQ%)_*$UENh`i zC=lj$OeDSs|Afj+tg1gmNu?W?Vn%_j+?+JRrgC{F`)HGGl_VP`U*nNFT1qaW(tD>f z%$=lun%@rZur`%<<_eRIr>Nfjp%;>smT>z}M9;&)6H@_14}&RXz-c8XhYy0d1!{Av z%pmU1HF$8UmbUG?oFaBG1@$CU*5<#r`0${k1RmE39wLJ;c71w%`l+mv*)h=HpzaNP z3M%7I8o2-T2(mF5bbTC!##_3UFt906pEaTsG##zD>ii-OMa81U7%e368QiV4p`vlA z7ckomPlVzFu+I~zZHMiE+`krbV>Xm8)&}>)EXsS}x7L&^Rd@RaM)L2A7(O4dCP<73 zIty}8vJ$T8UwI&|!Y<-4S8KQz6OM8Nwh@+#u{a2?Kx}uWP6mG1nCmJm`OsQPRL^`lWtZKgloa?amZzH1=fuI#3n*6n3VoKjkx* zhMbBCTswU9rr{gps<+TzHeyHN|6^(X=c-4+|Cr%_FYv#|Gq~GM8`p^oBLLgko)Lik zTy-;=idg};$ipFD?F0^kfP*|LRsZ6efH#E!4nth^cj0-q%au}0H+==D3qbO7w44Rn z$@5LpsYFc~z8WT$VutYeOn9O!Gv;S@SDfvm_*v=VPw%OCA6MPV;#_csq(7R4d7b(- zHY0;W8?$z8jZVUDU2G3O83MU4sFCH-`~%KJjLzk#%P{jpOg&JhiX0uiTMWf1&@sE5 zb%PMdcrZ#0nDkPCq0RMOAH7_VG6Q$}C`&>C{oi0HJ;2?PXK*J|deAtkHZ)TodZ?!h z7{wUJd6uC}mkA!j^}+DTXo+HmC4y#Jgj}@=Nob$&-R$d~p$7Q+Yyp)$%QF5(Ujd>A zg8o)0oh_)Y6H32jD1FUtD2?}m-UOvj%B1wOeoEiFH-*sO0Vqt=(9AXFUc4R zD7~Y5O8?AK`duHT-)8MyOpHM3Kc^`DQ%mXhf|OqE>)lfNg8-#h`3hJ{e`qP~xr~pS z{4RrH#?Y`Z>>LC6g>4pB{4GdaqS}$<2d} z|Jjtb3q%?%eo34>J-Nlty{*DM@l7e|HA<3gP1EB-L-9=@*`q0veSvPG?Pxz&ornFu zKKcB!4*_c&FDUfO=MG;18V+E1AqWCe>h=OXi04xL*gNhp*_t-$YspZ z6>O{&PoTYjDzv1zzNy?lB`_i5eb`uuav=X}d3Z--nAy*O{jO+LVm13B*12A=*C!Rh zl{h_l?aEd^^WGM+RRl#3l+R84lovXa&S)vB{@m(|%LvN6b&A^>qUJJRG7=# zu-k{st&Ct+B|)e}P+6F=WZTt3x^o2G?}F(v>b7=COTzrFia~PV)sbQ_6aGu&yN`Pt z6M}uBJt=0$hGt(PLAw}8FYISFDi3cx;6=#_((-Rf^L9mV84ZGE`9@?f-<8f`=ANIj zjZrd2c!R0MPD(&&xc0}ea=urQ1cD=sdSZG;vl9)BQ&;3$j^5FNxq5nL2#(5Ye9vJ5 zlL1CO2+5tueq$Jj>lL$+xeR(mJ&e4#)Qq@#QC`JD$M>|X&uEA0>}v=0yKSd~6J2aY z!Q>C3j7crlI6+Db2derE0@E3w>q1VYQS5`$cbXX++g2Cnhoc>QrwKv%Xnf7?V24+# zP9na27yZeo*&X&Hv}3}_JS<5CTJP*BY{#wvrLI{T-aw8-(I<@l`J9%T0o_60uKkTcJuB5PB_m3kNY8yj6NJ#J|PO|C+ZQSN+`87j(5P?veU z{D@=#XawdUc=HGAuNCrc!PiOfELU9z@pce&qcOQo^TzZRuV=2-A;^4g9%xE9Mk zbGAAAU?Jy%uv&*2kf)8Y&fRwh%UZnCS>*l$lTG{wMkD>gn( zYjhg3q%MBmw6#-YE~+j%y`6GE8(AQpW*|NxW5R7rAuq_1mwx^~+oZ_-G_|rxF}Le2T#wn>rE10?NI@N^K?J2Bfs+=MuypZZN6cCUcJ@P=6F2jYB> zli%DX05c%_0+<6gFs|#tgl3x;%$~@ch^8`<^gHMiMOW`*?C9frQT9Ar_A!6iZubUJ z1t9a^q-EO(Jxy2I&!JEP(Tmb`sc3*Kn{#``~bY47-=|k?md@!qBJk_&M{{Jp} zK?H8~>7&kp?o;Er@uCNkIUoxV@2y%YcN#nKAnin2yRiZWPVFMlG{L%YQ|j%!aC8G& zMP6kRzT$SB`1R9wz+AwqVHDZp++8>|?nJ|fHw&Rl)q39}dQ&`lR&142d_P2XWGZY=E2n=l|o*(mjG zKE@|*U?ql}mP&~wP{hUyjJ|diHF5mV+slV{yG<8#y%Sc5f}7?37Hh+>(`n6q?ti^z z2i85TG+<0OKsHL%$KY5NtP;fIs=P`#q4!%lVVuAlq|J{&%!@z}C9t~H1Z0;8$dj)OBR@QN!spxreVv)6)UjCFju_? zBxIQ!q?Lt9ptrIGlAylemJbi$altY)mFBl`>*h4*FvIv`YlSP>8s{5CRop~s4=Iu6Z z`Hy-~)TGdI)oRQlMTJeuY>M!oFB5Zh2D>wbo4=%8@L5X)jnBv=yj0!kdqlS4(WXM$ z7peFwc?ykyevn{@^dH6?B9$Or$8Kn4)YDC@-AipixE{0C@s;FB4PTd>D|5pYzc|A$I+6!S*mUq;%+s>y>&OlJrOJJATBpd1c-EiUr>|zEdW~Mk{3{Y1jJ|Yrce(XL!pEe7hBtMoCO``!`>i)Mv zESZ#mHuo6XFy!w?gW5jWF@kN6JP9c?u4VjGs{Y5~S{vVV8`pMc4l(IGkJ}MVY<`DBa_nIX%K!B} zLv{?o?I%zr%*US+EyHVQO%gt4#5hj&O*ZmGjC2Fo6o`>rtYXueartw1mh+#@T`cFn zY@GRJ*GGuCJPkS57iU__`8V`s#j_W-oS)>=@NCs_Is#^6LO;n*n^3dl)YXJ?bem)? z9sz**J)#X}B5+*Rhz{f)8r9bb3gLBc%)$aL1IKoTgdYb3$EUgv9Iq+BURkd9NF0m& z_ZYNX+2Nom1m+8msb%Q+AU4aT^HZD-_#;>Jb@6hN0)NIoV2u>y3Pz!llQKEL=p$XS zR^G;$d!UeJQ6oKWT%dGi*%lC++1-~y(o8M35DO$I&A1v4^*oD-* zC%ruMPqDr|)Vau@d&@&6;oco%uz6E*CGF_(5OoonY*nQ=KMgAxA#7zpE-Ga#Uin{S zEGVRqn7uX@h()ioNlNj^Ui_E2H3(bhZB7TpF?0$cXY|IT8Z3&*e$xUt3;Bckdg~ApU&$6+lcP+)M9K;bFdT=eFbWQq~F)b zCJ#}c#yar=1RnJB_Rd^Wiw!WHm}NsakP_zZ*2*2`ma}gvvwsTiy(lTWdDZK6sF$ja z@-n#wI)kySQ*Nj6|88PKw%8^%h60fJyCH(RaEm5FlQgMh$63p~teM8lv;)z2ong7* z-&+eZrU%`mUf#FS@|$~6_5)k?PkSo67;h?LIQRZXQ?Q>?(Au{R4-S%tCaaJXvea870; zz^KR0G(zAu#BX;F?XMEUq|GHl($!WEKK4Dbfh@uS{0SMpk*CI7T8H+PM>Ou0NKXaM zvBB!szNvtTzq&P-H-R6ZOr3fg&4DN#9#If+{&jg6+XJ!4el28M1k-+?LRfub)`e6@ zi(zFXii3Wgz?rtUVm$$y?C?VVCcNj(?a(*^4+h_n1v9J!$og2PxdmA64>h;P@EI2j z4nwjJ``)wNW1ZY}oNzCl=oBD7<4(bOhTJt@Sl%%VQwcNs#>v2&RW~}1_WPaGdr?5->rnyyhq1gMvB-MqFBegEO0(!U*B}DP<;qR z@bU@Rv^7wMNPuKjS33Djq>eW4UpRPy&ZO4NOHvMAh?8xfQEu(W0w%~1-R1RqgtzWU zk%&JL4NgF0zk66+TY~+hFvAb$$jW#Lw~XMn8T8r2v3r~Q=W(%s=PQz|lzjDBm2BYY zsV>}?dNEd-|Deiip5no09OJm2U}i~eg>xh}^R$#9sfpcfc=b1O8=|XRb@Ko$PDw6< zuKHwGEyiHVB?!XV1cvoIT9&C6dz@M&2+c!iu^@XiU}8P^j`s+_WP|KTvK*(^;>Z~w zpzyK@1<1kb4|l%0*!PRYTE`s$U|2mfACb_7k;o7PK8T|7u^tsxElJ=Q9o`e>6MsD% zSL%E0kfVgm-WTPbhp~fb?=0qeT1;Jo$U)id%-b;*vR!5|81r4FcC4{V=Ri!bxW1$0 zAhJ^Rq%DiK!rWhr;`f$v$Y^wfQ;yPD&r6klqHF2>+y!2?9`W|@bJd?r=ZhlcZ0i5R=*t_GnDO)w$E*lP z93CReU(s=R{8QmoA9p;~%drCv>Je+FSo6(~Br|Hcd42@LvZb$ti+p_9LsSAw za_SYB?JTu%#Rj~a`f}+oJi1d|xy;1a?Z~ov>TdT+|Gf-S;HrKQ0JG&UI$E}F(!g-3 z)4|F#h16IKc!iJWQ=YJRIDm)1sTv%h(G!wZqSjE$e20#Ta7EQWp=?aas-vrb2)?-NG*-kzvzMm|x7Vpew-SZ-4|vfXzb~EiRKs zZZOY`w>FB^3Fr&HpElA_Czw0lE9tzYIco`Hl|D$*@ ztmmJ%lr&H6xh}-(DtwRK919`h#}H29xlgc6LuTxQ4bO6x?!Fby0#~)S!CYjkZ*wS! zH{$suyiy3;m95^&sU)lC%4;jxcx#z{iEYE~kY3)apWJrf<1I@-1G#?hl>oD;OJsz4 zZa!x!Me2UMFpi)_)bBTjzi`&{rhLYZj+19krJmK|AvO!(#dA*XpG?8o9&~6UDq(!v zAWWaaU>&E<#4#D5)$c>l5HmCQ*AGOFY)}BTIje_h>>KmI$m(1Z^Wkwj_+s3lIp#DA zmdlBr<3B1(LNqzYZ5ULTYaSE>tjaLJ$&H>YYE~*cB^F?nMUJ^yjeXo{LYvL>#zCb8 z3Rc*P6=e5iL{J54eLZ(lsNa=f_Xo5g8$khX|M^2$H!KDbcScJldRph~FZYP9_{KX! zCn}XB_P{M%m|eqLcrci7Zs`kS!?%kku0S}sPjst9C$1_JkO(>5G(uG$N0-IeqN5Ve<7nA4a$ z@bo5l0c=C&EB;f|F<5F+-xNThhN)O&e|c43{Xs#P5jdRft6_MKbI0vl_b}{FprKys zu@Y3qikwjA+>_9okFb!)J0X!NUt>&9Urd5T3ZrK8AgkgYg&+L^hR;iBLtreaNNH|Y zM3D#4-gkLvAll_`Nkn9OVkF8RYM@xL0E`El=dCq?l&1>p^uaDQ`U`^$UOmU1hsj$-$En`~n=CbFgELzVP2y_S2BbcR^XmH>obhTTuTI$D9HemSdX^f8 zP*y!2;^lE0oKw^ja`_lyt}69wxqcMahp4CInz7g*EZ4I5jkunI^c{Z2KrPu&=^TLb zpK#f<0h4gNwAe>g0ys(?LEuzeJ`+}(LzT6-dvHZ*Wen0@@>e(d&W|Vovu@VKoB`YRyM|{A3zdN?l5i{ELFZ@Vb$3Kit^x(BL_oH zrZCWnF?%i_(o@sUThG&CP}*ob&TT}@4WVrf-NBHmC{ z*BEMuFHKY}Zb{VE*R>{X`Nnu_ysCA1V|86qyt=8SsV!O8m}m`EC6g`j#;S%yC_ZEP z2@8IZKt~f3jfs}J>WPWu7(6|xF1ctN`VY-m9#6JZRVQlO8mn)FG8CQiPqMtg^5soqEX5=FRw||R<+e9TTyLVQ%zfa0(~T<(dy;NMNN(I zmbS)ZT|*+yfeI$g)m3PV-7Kq)n>y2*k`tQR8f(yTQwyHVUf!IDPpWF2kf=(wwIo7y z4b4q0$wW=OLAnS@V~Z2ZTbpE9pu-H%ZS3+1z@O;GTN6ps;f&?Pg*Z)4CK_fXTk0AY zhLX+kg^48TW3ga=rtj9%<8>$)s&0x`wJfX#Qlv6lPtkBfRcmr=Reik-vMpIVD%7|j zUR6_ra&2{u$x-oSsH(NPuFlp&*Hf0BSXJMah))TWS7R15AYP5~9wl#xj z(-TWW=)0=5)$~7O`SDe)3ClI2N7BW|jUPL6{DcsB#c>eX#^!o34$U=#R$U2kBDmhv zQVn!dy~n4FpL@~?Gsn$}Pa8jb(h1{2iz9WT%bL*@ShS$3wXV9g?u-OW)weFHt4;b5t!`?p2BHmB@wV1P z4ZE#tjW4Vw!E5VUT9fsV-Nq)?ZEjkcXaO!%iDZ1_i1g*i^yOjc%fmx;3mcmtE!|6l zC#O{n@v6qevSg^HsWB0%ZE0#SN&;e9B347>Aeu|aGuznibRu5cLM7u!AUQJfMOCef zMuzxF{4!({q8CqT4SKZ{q3n!262fCfyf_|8G=juXy1K@?WOGYXwSCgi3eio(7uGi| zsHzXiP-ZNLl+A+PC2ENWSRlIEP~FfR0-590q-qF+ZfmToZmLO;{MP2glT`~t)%A(0 zM)1{i-3ZBVwbxURh$loTsqSP|%D{kQjY-gv4TYd@RHr5}3blrGK(l%=n&I%F@YRds ztq@wsItH3(X>Lj2li1cIAe|VUN0T_@k+vd}2N~*J)!5jCPND6I{{z!1nrT}>PoXlYYRjr6|j zemqJZ6~~B-IgKx>YJ^#*$)I%C)-~3Eur-Oe9YbrfrKNh2C;ZLJVfNzHEl_X{hc#Lg z^|i(#SmMoCKF6>&KJxgvv&YA$OrAb2Bs}xesUgu&-MrkQI#wDSi*C)(Cp5LprW05| zwu$h!8fw%emXS~J8;h!&8k*sYLXZ%8me$ZxpbDo{+mc9xj6}AEs^cPVFl~#_Ma?XV ztJi1HM4#SPRWBY2RBuVp!PTTxo?fk{uC;0bB&Hgw)LKWG%+MvDc^gX+8$-!mQrBt~ zCdE2qL4|ZieL}{Qr2J!ic1v3V?xBrNN_t7zd)j)>PFo?Nz%Gq9(tvb9iRzsi*No*p z45yEoIdK+R8cQNpCoRKlldyk&&)(S9028|`v=l}eHlnq@u9_}$TB2b=qJ?T6uQp~! zl&KLSNu8o&p(+3?N(t4-({quQO3#5b8;*&kKw(i;PP1AB^eBO7B_>}T?3vVgk4as zl9UMEG{R_9)psKlh#?vHTT17AA^OZCRsqsy2r5cAIknmy4rQg=J1!i<42^}L4 zq&2V{GPuLbfxm4H@VIc1P|n4W__zcJmOzHo#==nql64+;d~T^h{Demk(=Egh18zcq zjIg4G9n{qT1tW+Q$?0aCBq15yNcU_y74?;1xh5kR@fnpsG-{%WBzV}3S}-OSqQbJ6 zFuI|tWwF>>LqrO$FH#l}v0<_ib#Q5Bq80IEVshgwYt@N21c~&5W?IZC#vmvs1%}RS zmNO1mSlSYCB@NBOpti)&+e!lh2Qdg7)MCT|bx9I|d}ykz z1^s;E84Hg=JrbQWMt8>Y>1{O6CR_l+>Cvq#G%y-MGzfo>_yJbZYR*#YZO!cxgMEW> z@|XxLPbOO96A-8x>WyivnZ?Qt20;>0<~+jNl;?r@5UfT@97Qv57|EC>VJ+rBjl_n* zUkfGy774azgG*0{Z1kH*&TeXMXlhNS)DiTUz~EOxBRiOQOLaYB465jnMPLT_GH82fg(vnzG*91Fi3W7Ya*su`^E9+#gxX>k4Ej}s7 zlyy-$j%{AvB-2x`6$&U=DKaIpRc%a^MMiWI<^qQ52lyZQBSAmRmUz@OX%0(Ac<^oM zU|LjC6nLB`wxTHMC=AwLBJo5GD8Vv_E*h$un@PjPNHRcUZ6q(M*==kiG&LwMM*S{n zhb0K?P52m+2_0N9jVstN6)6jmlm(D~Yo2WvsUUPLa|7cs@kvFg!ACv`8Phsv_JmQP zB&6C1k3ou5jvoo_sKK0~F|ky_C{A%X6{BJ=AvzvU5)IAC<*8}W0xCsvL0fID32Dw~ zYFJR0Fo9Mr6BK9^gG(7Ep^_Lo#w4f;pW7lpgsW#jtrnUans^9sq9G1XFOwarC*4RQ z#DczAUohyQ#04QCj3JIOi-IxN0CBBu0oN?YI6{&@rhKpvMzF=;ky17uuo02@GQMbP zVo9RjvxD(^IQcr@Eb47+y>x^z`Z}6AawOVc9#0@p@(d0&WAW0a#`@(LzDc0?=2Xm+ zNU-0UXjzh)01;tHZy|M4lc>kcP~tAI9w_)`5fpB4k!C$*R>p#$)0@UHJQMb^Erccu znyOlAL^)d8;4o+`Igc@>j4|za-gwrA5rMJSMrA`t1sFy`n%i0$;}YqUwqn#x2Fp`| zuD!J$#;J0foot(OfjEI~0@<{t8lN^9QCvW4&sag|nVOFw`7>wiEG9lUcvPeT5pKro zBuyiT$q+&i5b{X;L1GzZ8YE)N^5fyEFdt754zwHx`#1wpV6&${Y}|+FEJ-OyeoxX= zmc)!e#U#TK#2LSs@C`Vk%@YH;%m&6k-DNXJ3co#GqJi!+j;33*%w&qFiRV`gRi}8m&OeRoqTZI|==w+jh9D3vtWkVPG{y*WcvZ4G}3;nKMJQPMeDF$OGLz707tXMF?73s+rEhd>v@lgQ`|-k=$#gF@jNtLZ{J20LZLk7bHyVLtkEB zmGTLTIgK$zgNjC#lPQgn9F#kfswD|rNWKXz%mffNp*0|82+0#Irn;BqX`pT9OgO<5 zEb^U3~BC;?KMEhmkgG-jsBRRL*{ zT#0oW>N6Mu-;<8(5x2mvhidKOfX&}FU|JGK+OHl<6hOr|HAaiGC_D@!y%e=S$43cD zX9{WH=|5;(F>kLsLxM{~892e}#gn-iqLdr-MEm9L?ELQ|_Ira3c@F=aw zm3I|EGR4cBSq+qAsR@!&=^GoNhNNGHGxRV?ie6gGt-y^Hr)_(JWu1_~;!SYI<~dvl zI;aVk%Zy&DX%3Mx-OECMii}||8YF$D9%+@*AUhePlAx_7J;@@2(z9A=H6H&Cvdm4b zT+Oi+TW7T`5H;nrnL-N%2!su$T!#Gm8s;E^!4XrF)p1x{CJ-b}F)?ndod8fyZu1o8IdAF~v?Ws^&TO&vGdT5!b68MS zL()oqo5~TC0TXRQ1fk|-x91JsTt5d&2 z-)JN^Aq!GQNSl}LHoEi-`YiHj8s?S=3#W5h5r^U>1 zQz<2Ck@Q5WU990lw?Q&2tr{kRxFS-N5Xn&aXDSe(^gKFl(`$8&r?=H%>Ms^pA}ywo z4nGV^E+!Y3mMVa%&NN9#271qlg;`cGFOnAnx-~R{!Ny{%7N$Usut9FAvDH|WD8ox%+Jz? z7MH3R$ewkPRGP2G8suF~^gxMT&{l_4_r`9fxiglJVMZox=)4JTI%41;I1EVyLWnNd+y(8&V?Ux7?&^5r-hBXG|-` zT~+J3!^I{oo050C)?l;Nl*BPLH4<&4ps($ed`hMF2CIm>XO6qzlRE60%VFKs!a$#9xIg=VNDFw^9uocUkf(mtYqU?8Q zm0cB_T*N2OiqD=qV?2tmB6f(RuDncNGJbdp=DDXN0#UEVk*TYrQdgr=SKq}I2kPUY zXZh?Cj1_xyWP?;yJ!X8|3}BYTy@k?Rc(9C}T3+e|5yx*d(PFsagV@+K{ zNG8~bGC+H4+(oUY)25@Rw80LUWK|9G>xN2VAjgR<^eACmh}1JtEw`FLe`dv78=J8X zl&nRtE`f~*06&b$_F@o|_?F1qglyC4R=IMLnx=*%B#@Ms?81RW89^5O5kf<~O#aq7 zQidU_3>7SocxJ_JUvVy>71n<+rmO>5dx5OWLT)PlYg9mqsg-yhx z))UG02g?;E0QJ4?M$_Y7bRNKiQjwHCfB7F6PA2e=KPLzK-WwL`X2n*kME*B>hfIcq7~~?RjPz zUaL+v%OK5x>7kKuAMv}{6y>vQL?z`>Q`*I(UfQKml!1jMA2|n85s%Zd(oRy=QZ+%+ z2AOSmgl#c90lkGbhHyTegJ6$C62dUX*cPMMU?_shR#-AD%~%g$O8JmC>|t|bW{sUZ z*~Sm1m?Q~gMKXbzhH-Bx1z@~rmXNXX(}INu_*R<)@K2)6YHf>&_qs+z>1n%>3>!{a zuEW^a)Q^uDDWME>DmDvS54?;5EWh7F`|77ROTpkwO&}i6nC8ivA7?F|tjofqp{&m# zO&w)7rP-VgX4bM-!Anu5EV1DR_bz$c#XxNs`1IBcZ;LQ}0{je?@w{CNz`JTeYg0XD z(Oyo8%V>6GC2=}h;?kgH8-fIr22F(~n06rxVpg)u#tczFqyfY($TSTs3MLDnyb@?r zH>Y}Q1YI=HmxMmSig8e`5T^Q*R^5*|m|J6V4$@jDxfOq|5q8obP}hh>1n3Ou*X=%Q z8aS#{N>HI%HZ4KLvJ?2!)0xqAofdKW_bByRc%vLVnE>0-wHlVyZOW?_Itq(u|* znu_ekj2!g#JoS{c5wST;&ko44n{PK)T;|L&eS*fwhHP&wB!lSQK3&_bq%YB>nFpi; z4MvPY)JnTL(S-yeS*dNwG&S6tWip*cnNthHivbR90R*;YiA~>5@A2Q!WfO$%5 ztgl>3Y#38uOQ&qzF-ZDtiznvQsZFYI!mU{TKvURKj=_hFf*2b%eSGC?yJJV(H=ZMH zYD5LL%WQL(q)w+2Q_Uszo|9Bbn7Baax0 z2(N9~(1nd{!$*$v+6*?-rQm`(#CiU{x{?e8>Vh_4Mz)773L(%C+knf~WDOh%E~rke z22j^zzZ;W7A$pDJJI*I~+q|67GcHn18h4wzMf>m*m}Mi8hhm}}sfTvU$1d;bb(k0Sd^jm{dcicTDE6ySlb6QG?Ru;)lW0V?v>cW5<54?7%q-Fne#a z+c$=eY?IrOKRN8MVIz(>$bv&59SVgC@z23O?Dz;pLZQbAQ~1ZfQu7rGpD{BOURD_H zmzx#s2%9?n?Xx`l&2~m~0~_ai&P$f7w6G!edlbIw?e%GBKQtk~@S@1^`Mobx$LE)= z(c|(DT;+_*AF#{>v*Ys%kI#=vd$-uS&GwskZ?xCP@q1o=SvATM{xa|J zH<}-S&$n%S#C!bpHecqOxZv+7e$34;Tp2kPr9+|P@UOpp_H%xZ$uC?LnV8>urJ9&O zVqs2x?}_<^V{o)etOnQPvU9;62~A(FaZNkF-fzSPy}OLZr=V3tL7Q z#(hy_JZUqDv>8L%j3I3z^YRZI=O>NSeahCI!|x2bN?p)Z9Sy1mtA@(h7X*TTZ}4MM ze&Ojk`B98x9KOcI0HO>Gv1O*QjL@iB9!~|OjsR$!eLjWHf%}ETeT@PSSCOwPiF;Cd zACuzgfhhVTTkoMP+z5T~ob-J>s&32j2x(|`i!JMy#f=uWh5h1>yx(GBwFE@Km#X|I z;qP1cDuLGsT;$s-!dAjD{w9oUa_mPkzH)%d?DNz49AjG(u{f5Y4EYWL9T%INx*ij& z@W4Xf`L_OC)(3Ca0H?A!Ir)X-4S~x5K6?*ki2p6NjL`T;`GwO#`w@UYZsDcmz0e+d zBeY)$+K*_?$uCP09U>_*|94yG98}?$BS0Ta7hV_AIN(q8EJcqd(FxLP#BQFGr!(yH ztJ%nS>dZLu6oZan)V;xFC=Db__`jEB+3zj3?1gMMjTaCf6FU^3P4@Y1#qP4ZgJHhq67vlh(uNVkwO!{*Gi@qKjgu#;0@Htik;R zVK(lk#3GaOqfb8l+exrsdX-uep=>R)ZMIPsg~qV07b>B#_yW+0G@k0Sc2i>b#T0`h zkVhr7K0X$CIs-H&7Wp#&z{$Rf=;BBC_mRI($jHT{!A0~x7wYl(2d*JKSGnWzN3F~n zmw#axA5^X%G?&)$JSijWQ_56ju8#6a>sCt6Z7wisG&OlA&}wm$b|e& z__qb-?G^lc6aU`FzfbV*%gEULGu3pKu8DSs(L8iDiOPe&fAz!1F8dYQ!oG*qM^65x z@TB}L;ko#p0LYSVX-bo2{J(9#ke%%2kK(OEpZ>eMA}YkEUH??b8pMo8N}{JAkUl%& zYsd3Phg-OZp9iP@uzVT5`R6@vz%}6`1PUFq-{)HRe0wjk60Wba@W<^Cn(gyPEPRCZ zZ^v2q>lWT@;Svi0_PK@MW#L{dgx`l1d_4at@sMpxN%UxMd|xVL70L%2Y}+ZcB$e0+ z&yTh6yR6;y;vvQ?q{9{q_hKS8sX|tmeeKVe@@crlOL%^Ug?slB3juy1;9(zstr&%F z5V#I~f^YtL@Y|)GaOe|@kHkfIzS+XJSUWmRYK1~?3p^|IylrQSg@29vFy!ZPd*9nW z?+Lm`Fs|N~{u2A3%=d5~4#h$%Y&rWlG}gj9Y&*sF`&0|R%ib5+?XV`X2?Du^ZJ|YADqJ?7+^5@C_4h!F6%NN@3Z!EmbmZzTcF9x|G z9Zt`{r?-WFVv2?G?e|a%e=`GqyoE2a?PS~MCs=r&jP_5n@XCzxi!J>78ReH*_#qbV zX~HTCZ?^q;{JPe{EjV<5z1VEwg&F<6X5o`E;O|-Zm<)Uv(~)kYGRlV`$6|jhf*xP` zSojDF_xN+1g?p-3Yw>Kf@Mf!et1SEmue?{Ec(a8|{EH%|S$KyPsB=uU&R;7?*je6O|eE!Ln)+z0qQUi-aR+QxMF-s-h)4YR~$fd9*De;<|( zg*L9XS@?_$_(lt#lmXvn;m2jbKeX^s8E~97 zEaM%K0slXg-37c9)f+ePrMtW2(%mH`Eg&ICOCu7}DIFq>N-9W5gHlog1`P%vA}Jvt zA*IrxDDQdp{GNLselY*{edqJpd+&bt+21*HW_EUV@6K#`cy99I@Cfpn@U-M_ggsuU zqI-PE)XDz}|BMlGH`3Gx_4BbDE8_M^@N;k-k0qM#o=;?Yh~Hbo9y2sQtf9!|z9045 z(I1^}DU0E@pU<0Ogs^d-8)HO13q5^9j8KxN0oP)L^jY-jn`4CRUQg6*F+zBdMp5{$ z7?JN_Mcwe5n=k(^UzEvTzlR+wzq#oK>UDk7n{L5%xvSqt&I=0o{SSO9d9?6$IacT# zc^tSt-|5YX;QIWfo&v6qbMU&asbJU-u`nK>cG`}6;Z;*F`>wA+L z*9V@9>IcGgzftRlhdoxPCmvtwqv4y~^S_-YB1iX2^|mRfKS%W+!F7A0^>g8Asoh2J z5n71f%flW!{QjlAX%)P*MfdkQcvbREaNRG_o4y^IAZCw*Vg+;1dFTPJpir z@XY~!Ai#eK@S6c1%RMzdZyeGGc#!}vAKRi8J`5dmH@z$*uMy#Q|;;JpHTSb$Fm z@EHNVIKa0A_}&2jIlwOj_}u`H6z(;051^WF9rCk0p2FSdk46@@AJHVP7UxC0lwRL za`$H4lGJ{dHSCY5Xu6$TWKeZTj zwoLco8-Jz<|2fX*9X;{femwgrS!zx`l!NBzc*N&)+RhMKISRL+9+WNz22&5sM{5H<%q@ol`n&m0triR)Ti`xd*E1?N{0S%= zYaqva_%r>5oBDq^hSZ(5S3ha{>}i4YmIlurjodT*>FDrzNARZ}oaRol74_NQ=bmv( zW1n-%C%wsiN-gUA8IedItyT9Q--?`%&T@QG9g0RrDQG3m@8jntyd?FoJa;6e ze1uaA%^457;N)?7(=#9Si@eh_x6p@jBMT#s$iCGvRtXXYr}r@;Al1M*4z=hT_Gl`VVZk=DMU=N#lL&saDj#6OheIYm!gQ&1oEVYJ5u71RTE z|L3VMd}36e!XNDqe?Z>fqKCZ(ZEgRrCm@pz)KeWUqFdhQ^jMD_e)XJ=`l@zpGM~!>P>XC_he3UPXYzT+86|7yQaLD~ADnE+Jk0SD;c=)dp z;h!bLKTCywz9>J7hVN0NbolS^9gBwVR5X15qT%}%4d1tD_`XHM_buw{!wJR03B`O< z;aiJ`D~tPE!9VbVZ$s^hw1`|GqmK+X)BaHo_XZB&!!vD;0+FYInpNd)bmAL5BwUVz@m+OAb;3uJ$bG8H)6vs&>7E4qEcl&SoRPub z#h%SG>Rvb_cN9dO06vn5(O^%HAXGL^bvIN6R-yO|m&W0x|sXg(BIZv+K)G+FM38EHTczAK5hse2j z?opsPONmR;{R4kkoH?4z9|8ExX{21+&pCgT)8`y+?Cu;sR?V%tZpmWSadf-C#f`0= z9x)PdSX-T_^S4B9Hr)9p8fkJKB70hD*SDun`4(B( zAo7frIyN|^aMS^5)xwA5`>wcw3!ehbFKev2y14NWj5>z`w-Whal~ur^>CdG+Jw7(H<5ehYvNhF$9-``{Nr_#|dg^U4R` zJsas-3CFpC(`6UAeUf$G-L50)P6il0;b!D8;M5iNx-6G2?mqrtT3rpJ68u+<=)!;I z%pc+9;7?Zh^mz&bkJ8lbX;pVtNI8(xy(N?j?}X)bzgN4<<0pQq72vPo|JU+<-5OIr zHNfv0Uu)_Y;s1bgbARKj;L@LU#y7#G-Sx(InfeXJe=zy-KTw^opH0q2+jJZn;Q!#< z&o*$GFWc^0aL#`xAZL=vvE%b$K+d9ooK+@gu<5^i{!S+D&)>#(x!ZMqQ{W>myq=#k z{)4Hn?mqt|6OT`QxQvhOPjfi;=XgNQ`GB130Xfax=d)zu{&a%#^>AKZ{_{S59G==<#Safpczmq4fy+49 z{Cw{J)iR0ia~ExQAY9u0!T4OkC)#d&xb(+vm)aY* z`F-HhPn$3Q-(>Hl!!W#Q7#1I9ZWx8pMc&f_x{F8L!&&IcyP_WyH}WBdQDaod0SKekMg zKhj-vzD}9^1IFVec30fQ;~xR%{^x>A{yXlX`Gri5?f<*R?f6U!$p6^nk23iSO^(f9 zACU8<$$8i0>LzEs@%qM(8*gQN zpYczO+x2i|fFFlTKYuVeiBh^NZqjl7+FuPNhs!vea2K85i~;pEO}!nTHE?P77n5^^ za$4Z?aDSMblcqj-DtE+x7?)%C)YqnUSKK81kz>--cfloRwefqV{#WC1)43~dl6t#bk{h?{PjNVpLsjGQ z*<>FAnfG(z_xzNq^3}i{^BLOS``r{}3+g=NRL&P5lMq8;oBxzSHG^#xI(jjmGa9zhwNS4DO1Xxc^n)GQYO}t&H3LPc%7lpBobDrrB^F&qNvh z?b5E)%VR*MOvdeaW`%Qq${V-+=?j;3e{dIFjynSK_nI6#zZZ?$$5A>Qe-HF zZ91N{Bit1?NxjW)8{xoBGQaEGMeDmpxGQdw`5osj>ir|!6*o!FdUsJD6XCA7N&LFI zs85S-H@7--$A3uw` z;wGuL+y7*6eO$=CzD#M!FGlm;*yQ}-Nb|c=eL`Oz8cHth%k&;x=JywO(VSVvPZ?hZ zm;3)|{AbEP9nIb7rUY62Z=J8N{nb!fxa9ohF4}HB<2Q|$F>cqlVaC5P^%LPdUsK`H zU9Gg8AN`y|uH(M|F15Ez{(Y*~<&q?uD{_p1i@KEd6t^E<@&MB^jj((WeXGmPIh zzQXt&<1b`)SKOri(SDX9*M4>-*W=v2B-i?sIedOh_sh21#kgHw9|ZWO0KWs*{%d~{ z=8S6huKQERGb>!{wV!#&bsUP5YkotMZ~OmNfR79C*_5yA)k1Pz55F-v_VINd&g=6P zcsw@-_Hi0BSJe2}{-+G^>;YaRz^lM@oVEY;P5lY8T)I-dtS>UXO|ILkF(&7#tJCE> zpXzlvE+g0FeiqK-cFW}3@ky0C+^uJxN3t8Y+nF+O$+zQQ$++FFb}?@ElSjaHJTqdu zbe3GVpO?v7_-=a{;_nR+=UOP9+~s@MIx>Bh&n zHne`0$+=*BgYk>TFPI$ZtB%7p^4jh;nf@WK>N%8D7L=RhR~*y-4sgk~&&#{vI&RwT zKJs!B>Za4=#XX1alCQ-0m(1r2KDN|KWBlb>vg^g zkmK&5m&mjGyN4Q+&q2FW;N0#%a2aR&xXV&7sy~z5pSqspHvXRRlE&XRUdi|e#+$&U zKX$*gwW*(M>N^;pV!S6@`fvAFhnf1RrhbC)X~r)Ymn?mJwJ+qZxQWN7Z-CDU@Rb4n zb%0-l%lc#cf77__f0n}GZie?OY<)iCw*F-}&sQtsmtCYT_jirk^<;X0FM{j(|1Q?U z&&YLqxR$(ypPkTQ<95DI8n^Rx7tZq)uZRz1&mQ3Jqh#Sp>W{mNj)VKqTzKO7>SXHe z_>4C7w*Ma(xBdSnAm>PcUkvb=MSVYcelr$}^0;o9=zNtnZeK6Yh0FX-b{DN*Y<#-$ z6>xrBZ#4PqP5oix*NopaZpX6%HsCy8wFA6afcJ;%ay)|db7KkD2{&>6PXT_?_&#?( z9iPl4!!h9;JI+;&+xe;=;H?7uJ-GHiCi*{}ysGa;Xf}Cm_^yEb;{krjxLr@~!DYE` za2Fki$8hQASmQBExhrmxao*@ITAu>W^VQwd+i@F2^}3xINsh%G8b_}C30sZZ$LSv9 z(@Z~)!=?YnjbAqPa+~(&UO;`87hRE?WPWYC`Hb6ko4{q9e{dHax7BcI^N8`nrQH=b ziOad%wEi{Y@r_@D>-g(_PVzG0m}mCWK7wn#?&oX^sIObr=V-m|=QJYE=*vPK$Wy|H zk?VfW=WrPxyZ^Qk3tGluv%Baxlq~N9*htF}b$~|%cwXb*yGY&cl`?L}^Gg{3H^p?9 z&)r4q_XxO2er<9W_4CGU&Zo(w+Sea)zqS5GsxXIh4jXTqDa!5ZyMbAw+~y-DoU_H` zWbx(U{ejiS@iZH*|I&DM)XQwkWk2Sp9$cOmzH%4se+#&jeQo?r(iTyo^1 z{fsT4ZjxU%zl3qgxhq9(lJo4!B)_`5i=Myi9ph5}*j;3L-?-Gvdu=j(Y+UMNqJK+` zOZ`eIcGEiJQlAj@JB&;HK)9aIS#Fm4l<>1u|2F(j<5I8hk9C#@kDKIX$?uJNIS;N( znx7p$*0|Ky4p)Uj9~zhZ{HR}ITfeQbV_fQU!S@@N`bqFp#-+ZiyU29SxYSQa{UhU2uiJsRapYc6>+>Ac|6^S0 z6T;)i4VOo*|BK=2j7xo0cy8m;pOtVqkE~2Op5@^$8<+YG@J7ZZzc{>SJW277^|kJ| z&euredyJ1WzSsCvR}&$PSH)cf;p`gZRdZ(-`Cjot1d zQxD^d+;yF=zNSAmXRxW49NjLxPp7`D*aK6)+W14`{yda^e3lqL zZt5QyFP6Yvag!{srS78h8~)-3_%h>iK1G?NKQ^ba@dNHQ%^73-lJWOUyOMRpU1XYT z`~!DgbC#JLyFRZr^^&98)g7kZJ}$na`is)2n@$*C?yhUQXH1S=?thzlY4?hRxG7OW z|69hhle_5aBRQX>hUsC`>*jFsF!THO`osxllR5;(;i0?ZWsO{ z>cwuE{AMP{J|5ef`u|LQPg5^hG7mEKGcJ8ynJmnqA;zWt2>SCrxo($c!KK!|e*BW^ zb^l=pc}CNx9mBN6#&UlvMD-W53+$*02$!ezcf&a^+J zseV7|tHEVGS?w-b-_YdP`D#u%yOGm{{9Sk-lM~JKXAIRZM*aK7!|OTT7?^Ex?Bi~k zsh4?fh@3UXZO%6K@IblmErQE9oHFBZ#`rJB@51HoXN~Kr*QL#HyU0(J!~x8DssPUj zm%ATz7hNtnjoWdkVshj@I{vSa%eG9W*G!K6JWo4QZ~NKR)SqD;so!oqc2al6P12VY?xOV>;nJ>s-pOg) zj(zJ=Iv zfJ@))<1Rm3*0=5MqWvjma%?}#njHIjp|YvB+uzq60uk*40xmmZfV zW__}$m;UJf!$;)$d@+w)`?G{xAMg77ENx1DSB(E!)QiP(rsH|cuK(>&7KV$N4sSS0594Lf#&p3@@ytP07*anA*4PaF1h zzN3A~bsUBS_(-_)agDp^<8ivFm)kaA{AZKvcrG$IcD>c(Or`H~(f%AVIo3Z&?TXwa zZQA#RR>GxLwkPs^UNWsU^$A@cwf|}T&9X}!-o^V|w@bz)OU|n-Q&aydTraNQJ2-;8 zXC@Du$=l%ic5>ZMy<%MYKOf_Hll&Z9-eZwTu1bAH>6DxFdvL_V{e)|txIE=fMb2{k z*7^u+_p}|YpNl$eM_un<1MO&zey?FYa{b=5PR6A_Ymwj6xcsR(1IRUJvT@1Tf}EMg z!#TJ}?HpV4KZj)(* zaj{3JA7|Xw>-SMhnbgOU8{PCd)klQYEeGRLpB(ikj0QO)YqeWeP6pNxqdHTPvg?h3dqs#snLFF&InT-Q#JF)le>P=C|7kbduACv1;( zJoW!aBaF*k=evtc`hO*joAGRdp}R%pLm*z^qjaYJ$_4mZ+D5G(SzPD-p5n; zXFmKbF6~A`gQdwo$?BmZdHXOU%&dAir|B9Ti;^A0b@N!ddWNX{li9;k@>Zx{N1hk^jeE$qXY+7`d~a?K=g7-q zf8a0jK7~BoC10M)gX|;8q~ov>3pP19Ms@O)93>Q5K+ z^$o~#VBFf0zlZgt6L~F+kNzK9+wG12TMVQ6YIuB3B!3I_`u%;Ha|92RB~<@fG2j1n z9#+@aHJ2%8HlD}tkdMQ5FZ^WVA~okjjB_H~u6`wp zZ#O-8>kQs=kq?%QtDB0GSHK3N5_tk?$W3+02f%fEul@NA>vJcnPld;0Kk_l?r+$t_ zb0!z|?S4S@&GGn}L!Jif&!^?A}1O78MK?3ya|@0d>^$;nv)atWy$Ab`&pA6kH;qD^8G^f$oFBK<@>Q^()yOzKGY)r4EqmF z$Sc9$AkT*W_aMK4e$FC)i06x~3wE%`A#?z)pF%jx?un0!TE@8ihNVf#FT zymA3wznuIhEcXrMujcag7s#JrKQm@Lf4h#)daPHK$@P8gSIG+(@%L{*-YSpx&g8MN zocfc0hUGYlJPo$vlgWqUh16W~j##fgBfo&{_9k-qen6Raljp{E?-2PZtk1uaU&3;{ zPCg6QACgbS_CJ;kyqk3VKg0TyoO~3PuYR6Q>+j(4o1g0=!m**!d0#wV+$5ie?YRHG;;3=hi1j2Po>%2=(*IHz=M3cg zupd&G{5<+up8N?O7q5_yhc_Yr0Q)EH$uncS(2G0)`ag{P3g&+zc^y1Y%_P5soF(Mt z;OoiT;dw+qFQ?;H9LxPE)py0~g5SvXb5ZjB!!l{kDy(mh$&X_@Sse4B^;_Zkxj6Od z=ucg$?}hPiPF@%9GwA2yG^cJ>-@jp0{~or(6UoQs^YydH_oel|mHZOct9|6nuzfp0 zo<5t;k?$pzN&A@!>%X4QS^YKS#6mmj`LSLlCohcs^UUO}<&JLB&#h_BVa#u7s^5Ue zk$yf+>#JeEr32M#yC0KZM}O9lm%!s?6Zt``5AuD*GHJWt!Vi+?O6lwLJkMG`B!%~z zRG$RTr;o{#<@fb*vA%20E$k?nkbeqaNv`kjY$5*{{rr~vRvh1d`QBrhbUbHcdwZMwYrJlK zOuiSM8T%2Mqy5iMz6Q^OWyq^wJ$#wGc46PYX5@G9cyCQ!9pn5ac^3TAW>SJTQ{g^y6*3U1<<6=L2C;7WrF2~8W-HYT+q+@Q1j``DmE<;Wl za?Qz3t~o`>#}xMY706>2@Lr4j5XP+yxwhMlT;Eq3MBX3Uv9aX0u^%~|d@J@FmyzrL zJJyr;EA0Efjr==o=l7Avjqvry$(LgMW8?Ws$A1ad&obotd?eq8ER)vj__QEDk=NJh z=c%+l9Uh1Msb0VTU=(>F9~08gO=(VgY-blyeID#@ZzkV?$NL`g@kM+Cdj50GFBIYZ zEY;`6dVGUi$Kerq8O(2N?7wS%M?8vefJf)e$MYZ@>1CD9VOTElK)2jE|%k8A7d+0f+xzek=B z;~x$0uju&i#Ot!eQPCz6ImZg8VR^_dAp4 z#{OY{@|DOLMgCV_-~Y+vWAMB)mwX_eUp^zBf$iNU@}hX%x10Ppwqu9LYvQ_o|AH=; zA=p2>PW7)yft#L?pTzby9p3-boJ@EeNbRq|R`KkJk0=f7K# z*T(CVF68NvGl0AS)`!vLGcgWR$qz*M<@gEtmsoGNkhjd`>%SvEf%Wzm^3lFL6c^iR z9sd`xy-h`48p|as`G@clXxxSC|7x_HwPyR#xA0A(E(7ulIBaD9v@~`l`m6`mJ+|f<>$R|aF zIaG>#IQFlqkn8vM)hGWN+wFnmQ?VS!kaxj)IE{P}*0=fO6*11M$*Wp^}0MsucN zyIqg!<70hmN&X%7E8Zf%S=2B0x5=mA`TAY*R9L=K$bW**BiH?m734o-95$2d`RMnM z>-(`klh4EU`7C*SJl=1Rr^I^lh`a@!_hVyRb)5C{tSQL{V?D`3uE)2OB-i(6Ymz^~ z>)giV>G6Emp8Pu2t6tBffOH-wXQj*W+xoJ{{@@Qhi^%4jM!K(c@$mQ~e8g zK3Gfj;R69&(+8LC&`p;3{f$H^rmOfNJ8TCV`{ueyX$5VYz)Gwp@FOvEjHc)*%)PF^I({dX$Ia;rUa?vksoWQj=GMXCto=;gbrJC&GSvdGeTee7!4m2F$f9rCbh{tIn@(tL2r6+%ae&!f+64vKW$-7~EHk0f35q?X) zK5r;I9VhRC<#>^Nega>A3ohF$*+tmyE;9Wc5&jkV|DF8Ue@KY=)8+dM9!KfmlG91< z8r$Dr-)GYLh7sN?n0kqx?>W?z@{gdOZ<>0^*W-q|Q+u2SB&L-I@K4$`mliO zqxc7MDO$=;br7S$2zC4r=uH!iuj~D&C zr1~*zXLUbO{ZHhVrJQnj{;Em-CYJA8&dTTyZ0k` zw7h;G{v+x&F$h%`ZP?LNs_LsVo|APIZ_sPp*|7Q*P>v$X; zB>x-lw_GM)jd6QGo-MbZuSD7XZ=K&3*bmP`eh=$m1@fv`?)rIr&C&DG459kZ(T{25 z?R_^wTgcC2+>VmB!~9++kAe3kYGZq;{aKCm_6_pg*nSQoKO}c_(|qy$M#LX z|4!={#`67aMfE*&zl;1P`k~)vr#btueOpQOm9YKP&xL9I*I14hsD5f*-=F`;bK!bA zEKkju>dQm=xk&YjSP#omeKYi@K6xKp??v7k+vlO={qVS(MV=UsqmATqF>WWxv*K}j znY=UR_cr-e^d~O%n{<97BK$z)Cf|$gdkyl|@`UK7H^{dY_TGbhJJz?!Jh#kHq|^zck|QNU1ni@NJ@S&nV;cYJ5Fffvj;EJU zOg!#oJf*&*Z#EQ{yf{1&T>IGx{me!6FQZ;R@2~k);l(MZ8**L>@YgB7F>+dwH-vW# z$mtc}6Da3RXp zZ@~4qDD`V_{eLg_zY+4;yHmUWAg4F^Bluu)`K~OPhLgvIk0aOjGbfR!LH!K4_H#PM ze>K(X@&D_{b0X&}a(y3o8+irPe-GDozeBs1slFcSuaVb<-!k~0qdZ)RNT=b^qO zxqiU_;Y&S+CF`9t9oj7!eT$eCeW z>QlvZKio8nT#xsjXIygT;&u9`#wDjVa`ZSM?WZ2sz0TB2PGjsBePdj5Mj>Yhc@Owr z-j@sU_VaA zp|`u#jOTv1DTQ&#-;A6zx#)4JLj!yk6 zrQ~12KO^4^Ur+ucd=vS8_;&J(@ZIF+;6ECd<=zMD+bOt?L+xDQVGdoQ`U$ANZCuuq zzmb2R{2}}ac|5#ch*8A1qw7N)cwFPsPi;4uacMUr>Qj-YhNp+?d^N&+D@8!H2@@tcqg*Sq0yN7c6{MM#k@;4*Dhw)y{hajg9d4ITmURd+*VZO$o zUj3b{zTIi$E6|_$(roQr<`LOu)r8~G;qW%Bj#zsQfm z?~osaKPG<+4;A&}q3hd2cr4?xTy(w?8}H>jHRd-td2)CL@}ls}0?~-r^DYS*YgVu zfopzutZyHXA4R*fOipi?A6FKfn?5xz?XE_-MAz`CiobgG;xi|N1>Zqm4`d zQ)9lylk52%-ZyS@J~A#j1(7qGT$jsY@(QS5PF@zi7Ou-h|6ll3fFGwEJznw@xqk1_ zdCIwnaf?;l&5WD0-3Yu+$wyuY>q!Z?bX&%!Bl=&>xQtIHcujKs|Hx|r`7KPn&F^en z@<$-Q8~G4;Z_0lO{hvTS6h4<+>z4)iF1R!&{rM2>eoLwBW@}~o*G_- zye_;tc@21dxX$lenBV56UglSqOBdrZzkQI?gS-oT0Qmy=5b}@UqsjGi4&%x9qkby6 ze!k^Ha{Yd(*~aaBEjBLmRXw5m;il!}rQvJIKY(u}9|_+D*Kyv2aXw(`r9Zl!oG~u_ zIe?t=s2(okuFyy|1adkBEJrg57++3#eQ#g@-{hKn41a)_$!nj z2e0evlIwXlngryu4e&vflN$NM$Wy{cQBDu^e-`;@EU(qZle+ml8=hPDU9`rNIO`e1 z-*CuybVsw0bCp~_4-u!7zn_kCTJ)y?`CjCdg3EH0<$E5>x4LmzzWFe}waBx<8ue-EERz6bs>`33kq z^0V+|a9v(Euw2%fdg=ciESDX|rT_mTXAk)!_>Yu-3;8EZz2wKj_VAK%$xoBm{czJ& z@)YntDZd0B*U?_|_tW|M2kj<+>-v@k?Pf48?G{0PX7U2?+>{^6?%OMB>Sez2Aisif z$*+Z+D&*DSH7Gwf=Bpif0<_!JB7d@}m;5@&pKDz5 z^?a}k$Oj{TDdnfdeC;I9fOhwr9BH>T+C6Pt+MSF1bL2DNSIPBr@_&%;MEz~!w%vb> zOS}J~{t5YC@VKR2k(*?Fllqrr=g6r| zz8c=xxQxSajQ<%&I@zMk?AB7YP40r(EeiJ4nQ zKNLDi^=DE4EBP7t@01fCIky5lei`46F84o?lbHMlJOy0GM?Y7TmAodF@5|&9Fm7$h zd*b=GOMs7sYd`-*e$hX7W2KZ3QuY`6-l2?FF zpd9@ia=w z{?Fw9#qxfUT-&`xuI(l$@9!s%3mH%SJYQuK{dhO?n#%24j-=|oPye-y~ zO2(z#>lr28{a@F(-Vx$kC@QQRR6HB zZ@3Y8(G=c0lIwBeBgyB#;Ojpj*W;;IlD~@my)EQ=9?QMtvtID|hspP0J9dt|Zc1PO zhDv{T)(fP1zfiq`hW92RImLRW?UX$^{}45 zLtYg=*0`+yr?KBP)wty7`Qtt$e+N0UjZ2QcFR|3P$cxo)`Wbd4Kq2@=oyk9|*Wt%$HU1XYFG5jm?{{ru!ehFO0NBVQxmxVULHGetk50mTXNq&dx_UB4! zA9S1QL&%9&$=|N^x_wA#T*l!`%x_w9J#Sqm)*p%xQ@w5R()U|ibO?ZY%;R^52p3 z5nRV%IL2W?fPX_dxzhRh+CiQJ{sZ~T@E^(b{J_V_+oJvyc}w^uxc2{J^#8tbc?+_s z?`9}kRsV<9e}($w#_jentMTaWuF+ASKfr6i^>Hx>{j5zs0R9@~bVvRh#-;yw`4Z}G za%BBKTgcDPKvOUM4B>_DWUANg;cVlwp3FjjJ|Q0qUu<03)$QRLQ9k3gr74mIl4W(Zd`J9qy8`Qb?_(T z=`*-HxhY09|6A9Gr0}@LrCr?~rZ6t;)<%6A^2+dx#wAC$hq;VP&V1D8BcB5=4%f#; z8mvDrnR?mI{N*k()io~pJCXAm`387%^0;{4tTnlwkE|2Ol zs2@hY9X=MW<1iNEFeSiOQBEk6jE?(Wbn^d@|0Q{5)Nduv0RNV}416DXN%&E?_J1Mz zf7!U*9^Nu8+l^hQkN$FaHlEo(Om1B2lcPRkfWHXW^}hl7S&qCuyfWpKMt&o5{aktn z<1$}5^)mVLxF~@A$x-C`c%MwJkH@*>x}DiXo;90q`FnER-X0^@?dMv?=mJ#y{;+vNT8`uca^y1pfi;e8g>YtCZh z@_5wq!7V3mgY{vRal3unY+Q17qyB61&*A&Y3*vp$pU4x#&yw$hUm#xtzeV04vmb|h z5R+x{EhldNRUxu7A#w91Wj}5&7 z*X_V>h5ZeUOugiPj-39cUY1L~2wy*lJO_L@<$RBv$;M^eu=(0aGvisT1LEI7D6@e$2S!zlMQ0Z(MSEqy7?kSNJ{hkKm8Ur@;S%>-sq?Qg+$t8~Uq=Zs6c-I0Hh{4MxZ%Abq;zfHZJ zuUK`$%|yO0s^|ZVM?MPqiQy6}>&ZgoXEF7Xug8JsqWTfZe0$YRz0B9g$gf2{72c3? z^!rI$nR?j|{1?yr-Hl8B4&?ME{|f##<>wIO!d|fy7(rzEL`_Q=LPeIOO^7r7;UUfxo()>%9ucUBUZzX>;^3xf& z^OfDWw7UZNxyhHoi@>$r@=4sC+*H=oOS>PT-5SOve-CnMlkb4nhim>l%vT#zFZrJ$ zzq4^WUww^ByJwLJvPp_NE}T3G{19B*?UTgUpEC8*?pd^Z#kk}bK+X;FJn&m^ z%}<5-3f1%N=z4ey`SFa~`ATVA+O3ZKwB%LbS>W34`$>Fz`AogcR}4H)y=YwW+ajkN zc}sXD%FluMs%PpYU(ZL>%($Je_Qs{%!N~7K{x-Z9T<7ak%-3L3FYV^Se2p_M`7@9+ ziF^ut3gwr;e9brYl3yD68;nc79+$V7dRmXTQ=V`LLA8x8oo&w$&uKA6U`T93az2r|res|+` zz6KiatxyE}ruZ5fip{=5~r zey+Op|8tMo*m;~2(IgY;po1;o~f7hIU4dClK+eOZDzc$tJnE$Z(MTH zBc~I2YIrx}lB55}8DLy;N}zrSc@g+%xXxEa%-08|zPHQ4zq>=97?=Dy$XP^Q6aFdX zH%9&@Q{UI+WRK;3xalbQF+47QBiC{JkGyg`pA)Z<|E=@Y2A&tL`wv~v&w}J_;l+$g zKegSLjLSIa|3@m5Peo33owz&qsQenCf|dc)^MFKJ?~cM03S^`e<5c)`5*8P zC`Zp=)z44l{gA1b`HGv<`%&`8X!oRX$=Bt6$++Z{L(Wz5lJGx` z+vWAhxa71#{lDam;n5rW{_6Afe5|*rjZ4mW)TbvO4bKMG<#h|=Q^3^A<7++g%NUpZ z1;}}cT+iEIo$~J^zrLxL{9VXzWnA*NAio{?MtDccPn6i*$xVaF^*j=zO^&oX8STz6 zF6|yf{w(qX@I{oL6z#4G@b4+-SL7TZKMg-duHPSVlKfB9Umy?R|MI_+>-RqY0oUcO z;}gA!jGll0M_yv(#`q*NE>sNjo7K3~Ka@Z>6@csW+Ic(=zG&(tXFIlg%}l+Fe@67b zC3$jqJLC3o)Xli$)IohOa{WG!{>CLow|gUvOU^Llj3)07e;=;nc?|P4Gr%`c&V1x- zCZ7l2N;!I7yCbGv`riQKe3t4%c--j+Q}y{}3-V*)1FPz*;PH%0zHawY8kh0;1NCXi ze}`u>ZkJbXYE`!gU3zr9Wd)pM`uBJTF|= zhYlE@;-+5m?<2pGamoJ#In~H#!|PIh7vwiJ_2KOX_M_f3F8P~~)0uodygTKOL;gGD zb>Nc%d^zPGK>kYdeejLsXW?7O&%k$*{{`Pm{s;UgxGtC1(f^aCUdHV(mdiEcGH&{P zU4N2C%ja%%(_PA6iu`yj{q54OJkRRuwG_ss$-Su0Zd~fOqd$e<@tw(fJ_j3!GNxWi zb$_q9sh9qzL_b@T>-UYdH*OzCJ&a3E0p#={&jTL<*Kr<-{*N*BGS2zkMWzppOMVUH zd`w;yKA-YGME+`1Fa5s~ThiU}E9APJ`Gs7!8~4b!$MHESTKV5P{#u`fyjenDSAksH ztxc{uoyap}@Hu_pI-Wmaey5vy8MjUtpPA(C;B$@J<-6Rta^+TDiyG~{2w zGa8qCU0%72OU|#T&qsa?Uf8%D=d#8nCq{nv!%Y>)pCG5IaT!nj9;>FtCFcd?v>;Cp ze-p0Ds|3cUhp7)QFDY=-5aW_x5;-Hti^9iKei`IXGxd`HD)Q$Wm;AcOSxo*4{8P%; z^O=7`o(JuIYjULB)M)pJacQ?b@=uVrgP%1n%dt7uw|~j?|2_%YxFR=6H>AEmLb(|B_sf+xnKgd%;k6Izq1d z35nYJ+jSiDag?5XnLN3Ka_UB`A9f#%QZ86T9$u(yWxz5+m z9NLrXIP@adaTr6c<1mAK z0-mQ9k?S~oPOjtd4Y`iPF>>wy1#<2GO>*u3zvSBg1Rb7UE??pCm5yBdpOaksUyNM) zUz=RpeVu$BUSD@5*LDYzYtC5mMc6*iBG>({rR2KbwVpf&wj0~Y$K!SV0dn0>yF~sw zp5GskYky*Pe0uz~Kgq~7{{?dGPd@T-cz%D8T;K1lNB#)U7wyQkpF_y?xcl+sn*SmB zZ}Px*(_->zalC&)uI-*C*ZiyG$MHV-1M;T$zec=Hz8&5E==MJ~xvz5HXG?wv+wH>S z+Mg=q3$VXepFDmp-$E<$)+xPrA&@KVd()zP|W{{EOH==Q4Q*Jn!5g{|NP=&i;P7yryG36OmWKb|WXbZhtC}>vFG6 zej1PKX5=OCIO;}T6Z_Tu$T!6D{T@o5Ip#n za(&*9+0}Pg$5Zz=l9B7Ez4t z|IMZ3+RyFey1WjMe~Y!+lw-cttFP5)B8=EUvhZzPF2L zhwW#3*43fiATN~o}7FqJT>`tcxLjS z;n~Q4f)|8q|9`;pdNIHoQqE=MG$p?XZ%h6V{wDc-cz5zR1^sySCXWRl0@wZ@M*qhI z_(IA_i=3t8so`tjoWCW&f2N#V$T>!y1AdmgH2ea2DfkWYn(&+C)#3lZwf~neKCycE zab?c}*Y&e0a&nM2h8HA%3tp7G6TB?>KzIf6x8XJ6+Rs1H{|2UBwkKnxz)f!$m+i?U zqW* z-U7bR=xvmp}Uz@i`gDtH2|S zOOAg3Y(C@iXZfN&rx1B5cyZ&BQ$LljuV7sMY=inLu^* z6XDwKD>5T)ni1e@DQ7TpHj)p7Z-Z-oXXJk$;Fl<80&=dBkAvTVYyLRo{~O@x`uh2k zG8vy)$jL5od?(PsRiF=Jc+A+i1$T*HlEaZD!HSZE*MYguD_0) z=>5Vshaacn>oERF$WOuZ8JGMd$ggHxa*iVZRk++;=Ic9nYvZ!Kh7@-{-1G+dAb8h+ z{Qjn1@_$ACDC3g<5pu?oPk~P|ZgXZBmz*Q0pGE#7d?ERL_)_wl@HON)OSnedw4OXU zdL^K}>Fb1}gGFfQ{utc3I?6uLz|2>v%*`x6KKiP_)Zk39k| z>x1M^M^1L~sqnm%a~}OKYh2dD+*l858BgiFCi>IJb|+r|f17*< zd@%VI_`Bo};N!^uf=?mOP||hEO*6>Tz~{kroOOPen|hhwl$hUd0_wjFs6S#{#-~V0 z=}jnfg1iv?Jb4xPCGtw}YsPIq?--YMUqk%^@_O(ma22gmI}KfcjUAOZ^elHw^Hea9z*eKtKDEw}lU*oPE-Wo5q=X8K3NEccyU} zpP|T^Lp~6`fbx$be+~Hy$Ui_{6n>pt|G)E)d=2VjVaHgP%T{GU%fbSyL{QcwuvH$-o`6l=kxIRDDL4WQB_BeO}*LLR` zmv#@JegXL&_-Ak(2c54C0sa%^+(yn3@|*B8TlP_Z)tc;@?!8ra2*FduV5Ne zFXOx)%Qu&C8RtgG$w%G*UYPRV#kkcZ9}8~~;5{h61M>Tjw}TI$oThfv~PfOkzUXpwuycYRAtmjS1BT(Pj zxKK&yfSZOJmzN4(pniOSFM;d&IT7RbDfxK#YRb|5=Whf2kjatt_B7Vp^TuVpornBO zklXE*8if1b==PXyQP{2jEL$+)z;6Zu)lzlP@}k5d01ydU)= z$-je7fa`MHjO94p)JuM1ylz@-T=IWM&T{he@U`SQ%ep(cX(M?Ad@H%u?+xnIL_&mG`ZDW@}XYLIt?*QcDnkl#GO`%=yT#4|Nz_Y+LzZ%}p%opI*DJLazYLO?0H=~^P$e&1_ zO*-tR`Nn0JYbO35_nC2t(DOg+B5#JA6UJqIyXG!3{bpQp2B7|dajCx}#cql=3cuYi zsb7Nn)W)Sgx(uM3B8*G@1pJ?+6!{8xL-IZFUgYJl-VP&gjQ!FN$vePTllO%0A)gDs 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 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/install/_local_setup_util_sh.py b/install/_local_setup_util_sh.py new file mode 100644 index 0000000..35c017b --- /dev/null +++ b/install/_local_setup_util_sh.py @@ -0,0 +1,404 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"' +FORMAT_STR_USE_ENV_VAR = '${name}' +FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' +FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi' +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi' + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/install/local_setup.bash b/install/local_setup.bash new file mode 100644 index 0000000..efd5f8c --- /dev/null +++ b/install/local_setup.bash @@ -0,0 +1,107 @@ +# generated from colcon_bash/shell/template/prefix.bash.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +else + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_bash_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_bash_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + # restore the field separator + IFS="$_colcon_prefix_bash_prepend_unique_value_IFS" + unset _colcon_prefix_bash_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_bash_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo ". \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "Execute generated script:" + echo "<<<" + echo "${_colcon_ordered_commands}" + echo ">>>" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX diff --git a/install/local_setup.ps1 b/install/local_setup.ps1 new file mode 100644 index 0000000..6f68c8d --- /dev/null +++ b/install/local_setup.ps1 @@ -0,0 +1,55 @@ +# generated from colcon_powershell/shell/template/prefix.ps1.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# check environment variable for custom Python executable +if ($env:COLCON_PYTHON_EXECUTABLE) { + if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) { + echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist" + exit 1 + } + $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE" +} else { + # use the Python executable known at configure time + $_colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) { + if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) { + echo "error: unable to find python3 executable" + exit 1 + } + $_colcon_python_executable="python3" + } +} + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_powershell_source_script { + param ( + $_colcon_prefix_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_powershell_source_script_param'" + } + . "$_colcon_prefix_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'" + } +} + +# get all commands in topological order +$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1 + +# execute all commands in topological order +if ($env:COLCON_TRACE) { + echo "Execute generated script:" + echo "<<<" + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output + echo ">>>" +} +if ($_colcon_ordered_commands) { + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression +} diff --git a/install/local_setup.sh b/install/local_setup.sh new file mode 100644 index 0000000..0dde41c --- /dev/null +++ b/install/local_setup.sh @@ -0,0 +1,137 @@ +# generated from colcon_core/shell/template/prefix.sh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/bjorn/Documents/ros_projects/rmp220_middleware/install" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX + return 1 + fi +else + _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_sh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_sh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_sh_prepend_unique_value_IFS" + unset _colcon_prefix_sh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_sh_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "_colcon_prefix_sh_source_script() { + if [ -f \"\$1\" ]; then + if [ -n \"\$COLCON_TRACE\" ]; then + echo \"# . \\\"\$1\\\"\" + fi + . \"\$1\" + else + echo \"not found: \\\"\$1\\\"\" 1>&2 + fi + }" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX diff --git a/install/local_setup.zsh b/install/local_setup.zsh new file mode 100644 index 0000000..f7a8d90 --- /dev/null +++ b/install/local_setup.zsh @@ -0,0 +1,120 @@ +# generated from colcon_zsh/shell/template/prefix.zsh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +else + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +_colcon_prefix_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_zsh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + # workaround SH_WORD_SPLIT not being set + _colcon_prefix_zsh_convert_to_array _values + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + # restore the field separator + IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS" + unset _colcon_prefix_zsh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_zsh_prepend_unique_value +unset _colcon_prefix_zsh_convert_to_array + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo ". \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "Execute generated script:" + echo "<<<" + echo "${_colcon_ordered_commands}" + echo ">>>" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/PKG-INFO b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/PKG-INFO new file mode 100644 index 0000000..9d00f97 --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 2.1 +Name: rmp220-middleware +Version: 0.0.0 +Summary: TODO: Package description +Home-page: UNKNOWN +Maintainer: bjorn +Maintainer-email: bjoern.ellensohn@gmail.com +License: TODO: License declaration +Platform: UNKNOWN + +UNKNOWN + diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/SOURCES.txt b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/SOURCES.txt new file mode 100644 index 0000000..5d04694 --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/SOURCES.txt @@ -0,0 +1,16 @@ +package.xml +setup.cfg +setup.py +build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt +build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +build/rmp220_middleware/rmp220_middleware.egg-info/zip-safe +resource/rmp220_middleware +rmp220_middleware/rmp220_middleware.c +rmp220_middleware/rmp220_middleware.py +test/test_copyright.py +test/test_flake8.py +test/test_pep257.py \ No newline at end of file diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/dependency_links.txt b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/entry_points.txt b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/entry_points.txt new file mode 100644 index 0000000..aa75c7b --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +rmp220_middleware = rmp220_middleware.rmp220_middleware:main + diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/requires.txt b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/requires.txt new file mode 100644 index 0000000..05e8e65 --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/requires.txt @@ -0,0 +1,3 @@ +setuptools +wheel +Cython diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/top_level.txt b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/top_level.txt new file mode 100644 index 0000000..35d8524 --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/top_level.txt @@ -0,0 +1 @@ +rmp220_middleware diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/zip-safe b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info/zip-safe @@ -0,0 +1 @@ + diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware.cpython-310-x86_64-linux-gnu.so b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..39892ea23d09a25ec7b7fad86ced35ec6f5326a5 GIT binary patch literal 222768 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

YrEwg1{Wp9D*b#_SqQlUK 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

1KQ8AGW%K1 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�I`Q%6uO3#|I;Fmr=;f%#vucvefD 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 literal 0 HcmV?d00001 diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__init__.py b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__pycache__/__init__.cpython-310.pyc b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed2761d1e828931e974a171c7c933fe888dcdaeb GIT binary patch literal 230 zcmd1j<>g`kf+Zr?Qb6=$5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;x_#enx(7s(w;d zeo>yjOMY@`Zfaghv3^m0aeP5hepYHSh?84jWMmMZo0*c5lUklwl&YVZS6q^qlY>Pj zCo@UEpt2+*KhIdt&_KU9vm{lwATc>RF+CNVLGkgKd6^~g@p=W7w>WHa^HWN5Qtd!a KEM@`{EDQkLXh0GG literal 0 HcmV?d00001 diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__pycache__/rmp220_middleware.bak.cpython-310.pyc b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__pycache__/rmp220_middleware.bak.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c480a51f011b2f97faa6fd9830f5fef381a0ba9 GIT binary patch literal 3732 zcmaJ^&2JmW72nxia+jZ?KI~df1JgiJchQ7QT%$;gAa-r3uHBRS8cILg` zdvBOD8dVL?KbQZ;|GcDW|Dev|W1@2(ulyqj*EkEcKDBztBE7FO;*HRV%)Y63Gb}~r zep&IQ(2DH7t@v_SiK_jo;;pb2)%$hDv#`-`D80>oQ?*O|rAHdKdF4>!6~B65^jqjx zc@6!VucN=rmw25w4q1Q2U**jmT|D(y4m9XvTk3UMC)lmlb695f67Ey`AW1^BrDwZ= zOu-mWl0A}d#?uJx)u)Nv^3#Xgo|J*yjJ-kVKaBX0^ejFMo%?v@8i=p;8Q1zcXMKa~ zeUlqonqy|At<+0>K~qnN^qf*=yKd}7zUyXH*NqZB4T-P2?u)4x79;k?ZFf6~{O(|!h`76v45yJFr?M*&=}ts4_J`DoCbw_D<3<7Jp}*@1 zzZ=9d^}_ILM#5mwo$RICN&JJ(yYF;mkos>=yy1>F^1n{eCDomQx6_&I2^%|X;gw|& zTQix>l-{8*T@&Pre?K#pe(4v@80u{3}SR9cV}R-Z5iZs*jC*%{93WTH4o+ z%Be*=I3}r$eg%EV$5qHo$ZASf=Vizmg{%qL61N~}9h08r)H=}6t`zMm#@Es-+*YGk zG4Ja5TXde!nfwLDt{rPf>%2z$SsW9OPRHsr#x*)^FI#~#Q{Rp9^SUt(`~{AM=g$3E zy*rG!`_d2HWSX8(TrY^C=_fO@J5Kh#`1RVK9{qiGcn`|_)E(xCcYOumEX) zmIjdzO|JBZvk$g>@iG|t?Knx>-b*hCDMH?A?|MNR#H04}M6?T4?Oat`<|{g#&g^Cp zR~LrP6m^{ISxHVOzMx16;vjWh1tQVFjxa>W&a7fbS!*bKvcqIL2m`t83qg4*tIf|3 zdA3^2k<)=3ieQokNsNVsg@%ZU0l%hIp^x?;vZiXzrj>GW zDW&w1HAC!9!npa@vPQ9X7zT)0VbN!qfS+JH$6cmSI9pnmL`E8IovyC!qnQLr~wZPkY(`YjMUa#o0^^4Kd znH&FH80pYMA@mUMmv4cj2%=-{Qv}jJa{>FYab)hRpaN`5fOMJbr?548&t|JCqY_Yx zQv(&RtlSXRQ~$*j*2=C^D!YtHvZ8SC)vQWhaXq;g55@N(5VV(9y6DiLA^aC-*;0@t zvStp&Iml_=mz1t-R%Ug!!e%!v8Q}biZ#08=7it`%_v6{xMj#Oj=g%f?V_5u<$Y}!4 zx3t97bbr35J2dBgkXifEUM@@>k{{*|0e8lB=kI6qdZ( zE-F|1dk>~*n#Ao}2wjoha%MNx@$RJ7*q;gy8^vQEKYWraHy3TNkHYCMO1 zs-&lI`vW?3FoG38<4^+NY=?42z#Amwa&}_`1d8)5T`U;?`dsva_7SZ=CuWpW@R5|+n@96o< zz1g(_rl&YA%;GppITXo?LLrk3pF{Bso`fm!CP-!##Yy>85HQ3h5e4Ay68AQd^XWl+ z2eKYsc@3maxK!?H!fovWnaJCh)7JTN~uhFsujh#aag#y`0g~M;aq}mv8=j?O%CDjj5 zI%eIOg)(B~W#eNlu9#YC?pEkbupiG`&!f4kkmPzq4FVJONWezw6!!BuiHR3j-5>0U^S3hN@DFc+z{H-)Ft|{65)^Mni%&e)L@~fsh|Dxort1uhIQW43bEw z$SfkQpr$hlMD}GO*=Lv~ipky?b&pkYL6C>(&a=T!tR#~Ry8USoLA@8{LK`))Qk6LI z#weaR`WtkAi6M|BY_P`{021g0`2^?r`5=(1WCPd8eIVumBZ0L~0OtYuNX-5k*$rIv zt}#dKN5qOjL`kOqx&2q=nq)LCz=S*X8Si?oteUoC+UVfoyF2C^ZMuVZs-0WmnNqb^F_u}FU-F2&^6*L-1XmCu*f znf%0-t6G`hb7y_gIJ;D3OzP(7=&-1@l$BZwr*dt45LI>0O{M2~(}smLFUHRgbFYJX z)`;>i1KEBRB#gIZD80 0.1 or self.angular_abs > 0.1): # This is a hack to enable the chassis when receiving commands e.g. from Nav2 + self.state = State.ENABLED + self.get_logger().info("State: ENABLED (cmd_vel)") + self.enable_chassis() + else: + self.cmd_vel_pub.publish(self.twist) + +def main(args=None): + rclpy.init(args=args) + node = StateMachineNode() + try: + rclpy.spin(node) + except KeyboardInterrupt: + pass + finally: + node.disable_chassis() + node.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main() diff --git a/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py new file mode 100644 index 0000000..854f071 --- /dev/null +++ b/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py @@ -0,0 +1,19 @@ +# main.py + +import rclpy +from rmp220_middleware import StateMachineNode + +def main(args=None): + rclpy.init(args=args) + node = StateMachineNode() + try: + rclpy.spin(node) + except KeyboardInterrupt: + pass + finally: + node.disable_chassis() + node.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main() diff --git a/install/rmp220_middleware/lib/rmp220_middleware/rmp220_middleware b/install/rmp220_middleware/lib/rmp220_middleware/rmp220_middleware new file mode 100755 index 0000000..c437e70 --- /dev/null +++ b/install/rmp220_middleware/lib/rmp220_middleware/rmp220_middleware @@ -0,0 +1,33 @@ +#!/usr/bin/python3 +# EASY-INSTALL-ENTRY-SCRIPT: 'rmp220-middleware==0.0.0','console_scripts','rmp220_middleware' +import re +import sys + +# for compatibility with easy_install; see #2198 +__requires__ = 'rmp220-middleware==0.0.0' + +try: + from importlib.metadata import distribution +except ImportError: + try: + from importlib_metadata import distribution + except ImportError: + from pkg_resources import load_entry_point + + +def importlib_load_entry_point(spec, group, name): + dist_name, _, _ = spec.partition('==') + matches = ( + entry_point + for entry_point in distribution(dist_name).entry_points + if entry_point.group == group and entry_point.name == name + ) + return next(matches).load() + + +globals().setdefault('load_entry_point', importlib_load_entry_point) + + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(load_entry_point('rmp220-middleware==0.0.0', 'console_scripts', 'rmp220_middleware')()) diff --git a/install/rmp220_middleware/share/ament_index/resource_index/packages/rmp220_middleware b/install/rmp220_middleware/share/ament_index/resource_index/packages/rmp220_middleware new file mode 100644 index 0000000..e69de29 diff --git a/install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware b/install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware new file mode 100644 index 0000000..e69de29 diff --git a/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv b/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv new file mode 100644 index 0000000..79d4c95 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv @@ -0,0 +1 @@ +prepend-non-duplicate;AMENT_PREFIX_PATH; diff --git a/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1 b/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1 new file mode 100644 index 0000000..26b9997 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1 @@ -0,0 +1,3 @@ +# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em + +colcon_prepend_unique_value AMENT_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX" diff --git a/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh b/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh new file mode 100644 index 0000000..f3041f6 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh @@ -0,0 +1,3 @@ +# generated from colcon_core/shell/template/hook_prepend_value.sh.em + +_colcon_prepend_unique_value AMENT_PREFIX_PATH "$COLCON_CURRENT_PREFIX" diff --git a/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv b/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv new file mode 100644 index 0000000..257067d --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv @@ -0,0 +1 @@ +prepend-non-duplicate;PYTHONPATH;lib/python3.10/site-packages diff --git a/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1 b/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1 new file mode 100644 index 0000000..caffe83 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1 @@ -0,0 +1,3 @@ +# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em + +colcon_prepend_unique_value PYTHONPATH "$env:COLCON_CURRENT_PREFIX\lib/python3.10/site-packages" diff --git a/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh b/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh new file mode 100644 index 0000000..660c348 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh @@ -0,0 +1,3 @@ +# generated from colcon_core/shell/template/hook_prepend_value.sh.em + +_colcon_prepend_unique_value PYTHONPATH "$COLCON_CURRENT_PREFIX/lib/python3.10/site-packages" diff --git a/install/rmp220_middleware/share/rmp220_middleware/package.bash b/install/rmp220_middleware/share/rmp220_middleware/package.bash new file mode 100644 index 0000000..8baa858 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/package.bash @@ -0,0 +1,31 @@ +# generated from colcon_bash/shell/template/package.bash.em + +# This script extends the environment for this package. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)" +else + _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo ". \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh script of this package +_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/rmp220_middleware/package.sh" + +unset _colcon_package_bash_source_script +unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/install/rmp220_middleware/share/rmp220_middleware/package.dsv b/install/rmp220_middleware/share/rmp220_middleware/package.dsv new file mode 100644 index 0000000..b5bba22 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/package.dsv @@ -0,0 +1,6 @@ +source;share/rmp220_middleware/hook/pythonpath.ps1 +source;share/rmp220_middleware/hook/pythonpath.dsv +source;share/rmp220_middleware/hook/pythonpath.sh +source;share/rmp220_middleware/hook/ament_prefix_path.ps1 +source;share/rmp220_middleware/hook/ament_prefix_path.dsv +source;share/rmp220_middleware/hook/ament_prefix_path.sh diff --git a/install/rmp220_middleware/share/rmp220_middleware/package.ps1 b/install/rmp220_middleware/share/rmp220_middleware/package.ps1 new file mode 100644 index 0000000..448ea59 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/package.ps1 @@ -0,0 +1,116 @@ +# generated from colcon_powershell/shell/template/package.ps1.em + +# function to append a value to a variable +# which uses colons as separators +# duplicates as well as leading separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_append_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + $_duplicate="" + # start with no values + $_all_values="" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -eq $_value) { + $_duplicate="1" + } + if ($_all_values) { + $_all_values="${_all_values};$_" + } else { + $_all_values="$_" + } + } + } + } + # append only non-duplicates + if (!$_duplicate) { + # avoid leading separator + if ($_all_values) { + $_all_values="${_all_values};${_value}" + } else { + $_all_values="${_value}" + } + } + + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_prepend_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + # start with the new value + $_all_values="$_value" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -ne $_value) { + # keep non-duplicate values + $_all_values="${_all_values};$_" + } + } + } + } + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +function colcon_package_source_powershell_script { + param ( + $_colcon_package_source_powershell_script + ) + # source script with conditional trace output + if (Test-Path $_colcon_package_source_powershell_script) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_package_source_powershell_script'" + } + . "$_colcon_package_source_powershell_script" + } else { + Write-Error "not found: '$_colcon_package_source_powershell_script'" + } +} + + +# a powershell script is able to determine its own path +# the prefix is two levels up from the package specific share directory +$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName + +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/rmp220_middleware/hook/pythonpath.ps1" +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/rmp220_middleware/hook/ament_prefix_path.ps1" + +Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/install/rmp220_middleware/share/rmp220_middleware/package.sh b/install/rmp220_middleware/share/rmp220_middleware/package.sh new file mode 100644 index 0000000..535338d --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/package.sh @@ -0,0 +1,87 @@ +# generated from colcon_core/shell/template/package.sh.em + +# This script extends the environment for this package. + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prepend_unique_value_IFS=$IFS + IFS=":" + # start with the new value + _all_values="$_value" + # workaround SH_WORD_SPLIT not being set in zsh + if [ "$(command -v colcon_zsh_convert_to_array)" ]; then + colcon_zsh_convert_to_array _values + fi + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + # restore the field separator + IFS=$_colcon_prepend_unique_value_IFS + unset _colcon_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_package_sh_COLCON_CURRENT_PREFIX + return 1 + fi + COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" +fi +unset _colcon_package_sh_COLCON_CURRENT_PREFIX + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh hooks +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/rmp220_middleware/hook/pythonpath.sh" +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/rmp220_middleware/hook/ament_prefix_path.sh" + +unset _colcon_package_sh_source_script +unset COLCON_CURRENT_PREFIX + +# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/install/rmp220_middleware/share/rmp220_middleware/package.xml b/install/rmp220_middleware/share/rmp220_middleware/package.xml new file mode 100644 index 0000000..cb21106 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/package.xml @@ -0,0 +1,18 @@ + + + + rmp220_middleware + 0.0.0 + TODO: Package description + bjorn + TODO: License declaration + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/install/rmp220_middleware/share/rmp220_middleware/package.zsh b/install/rmp220_middleware/share/rmp220_middleware/package.zsh new file mode 100644 index 0000000..16e1bc6 --- /dev/null +++ b/install/rmp220_middleware/share/rmp220_middleware/package.zsh @@ -0,0 +1,42 @@ +# generated from colcon_zsh/shell/template/package.zsh.em + +# This script extends the environment for this package. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" +else + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo ". \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +colcon_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# source sh script of this package +_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/rmp220_middleware/package.sh" +unset convert_zsh_to_array + +unset _colcon_package_zsh_source_script +unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/install/setup.bash b/install/setup.bash new file mode 100644 index 0000000..4c55244 --- /dev/null +++ b/install/setup.bash @@ -0,0 +1,31 @@ +# generated from colcon_bash/shell/template/prefix_chain.bash.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo ". \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_bash_source_script diff --git a/install/setup.ps1 b/install/setup.ps1 new file mode 100644 index 0000000..558e9b9 --- /dev/null +++ b/install/setup.ps1 @@ -0,0 +1,29 @@ +# generated from colcon_powershell/shell/template/prefix_chain.ps1.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_chain_powershell_source_script { + param ( + $_colcon_prefix_chain_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_chain_powershell_source_script_param'" + } + . "$_colcon_prefix_chain_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'" + } +} + +# source chained prefixes +_colcon_prefix_chain_powershell_source_script "/opt/ros/humble\local_setup.ps1" + +# source this prefix +$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent) +_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1" diff --git a/install/setup.sh b/install/setup.sh new file mode 100644 index 0000000..f4ccb41 --- /dev/null +++ b/install/setup.sh @@ -0,0 +1,45 @@ +# generated from colcon_core/shell/template/prefix_chain.sh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/home/bjorn/Documents/ros_projects/rmp220_middleware/install +if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX + return 1 +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_sh_source_script +unset COLCON_CURRENT_PREFIX diff --git a/install/setup.zsh b/install/setup.zsh new file mode 100644 index 0000000..990d171 --- /dev/null +++ b/install/setup.zsh @@ -0,0 +1,31 @@ +# generated from colcon_zsh/shell/template/prefix_chain.zsh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo ". \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_zsh_source_script diff --git a/install/spawn_shell.bash b/install/spawn_shell.bash new file mode 100644 index 0000000..32a153e --- /dev/null +++ b/install/spawn_shell.bash @@ -0,0 +1,82 @@ +#!/bin/bash +# Copyright 2018 Shane Loretz +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if [ "${COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO}" = "workspace_name" ] ; +then + # script is being sourced to get info and should not spawn a shell + COLCON_SPAWN_SHELL_WORKSPACE_NAME='rmp220_middleware' + unset COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO + return +fi + +# Get absolute path to install root ( directory this script is in) +_CCSSB_dir=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd) +# Append workspace to list of workspaces (for chaining workspaces) +_CCSSB_workspaces=$COLCON_SPAWN_SHELL_BASH:$_CCSSB_dir + +# Need to source user's rcfiles first because --rcfile causes them to be ignored +if [ -f /etc/bash.bashrc ] +then + _CCSSB_rcfile="$_CCSSB_rcfile . /etc/bash.bashrc ;" +fi +if [ -f ~/.bashrc ] +then + _CCSSB_rcfile="$_CCSSB_rcfile . ~/.bashrc ;" +fi + +# Build a prompt prefix showing the order workspaces have been chained +_CCSSB_ps1_prefix="" + +# Make code to source all colcon workspaces +while read -d ':' _CCSSB_ws_dir; do + if [ -z "$_CCSSB_ws_dir" ] + then + # No text before first ':' so ignore it + continue + fi + # make sure shell sources the workspace on startup + _CCSSB_rcfile="$_CCSSB_rcfile . $_CCSSB_ws_dir/local_setup.bash ;" + + # Source the workspace here to get the workspace name + COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO=workspace_name + . $_CCSSB_ws_dir/spawn_shell.bash + unset COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO + + if [ -z "$_CCSSB_ps1_prefix" ] + then + # First workspace is separated from PS1 by "|" + _CCSSB_ps1_prefix="${COLCON_SPAWN_SHELL_WORKSPACE_NAME}|" + else + # Chained workspaces are separated with "<-" + _CCSSB_ps1_prefix="${COLCON_SPAWN_SHELL_WORKSPACE_NAME}<-$_CCSSB_ps1_prefix" + fi + unset COLCON_SPAWN_SHELL_WORKSPACE_NAME +done <<< "$_CCSSB_workspaces:" + +# Support chaining by setting a variable with the list of spawned workspaces +_CCSSB_rcfile="$_CCSSB_rcfile COLCON_SPAWN_SHELL_BASH=\"$_CCSSB_workspaces\" ;" + +# Set prompt to indicate sourced workspaces +_CCSSB_rcfile="$_CCSSB_rcfile export PS1=\"$_CCSSB_ps1_prefix\$PS1\" ;" + +# Spawn a child shell using custom startup commands +$SHELL --rcfile <(echo "$_CCSSB_rcfile") + +# Cleanup the variables used +unset _CCSSB_workspaces +unset _CCSSB_rcfile +unset _CCSSB_ps1_prefix +unset _CCSSB_ws_dir +unset _CCSSB_dir diff --git a/log/COLCON_IGNORE b/log/COLCON_IGNORE new file mode 100644 index 0000000..e69de29 diff --git a/log/build_2023-08-18_08-51-11/events.log b/log/build_2023-08-18_08-51-11/events.log new file mode 100644 index 0000000..7f4b6b7 --- /dev/null +++ b/log/build_2023-08-18_08-51-11/events.log @@ -0,0 +1,8 @@ +[0.000000] (-) TimerEvent: {} +[0.000467] (rmp220_middleware) JobQueued: {'identifier': 'rmp220_middleware', 'dependencies': OrderedDict()} +[0.000493] (rmp220_middleware) JobStarted: {'identifier': 'rmp220_middleware'} +[0.099684] (-) TimerEvent: {} +[0.199898] (-) TimerEvent: {} +[0.265930] (rmp220_middleware) StderrLine: {'line': b'Traceback (most recent call last):\n File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__\n rc = await self.task(*args, **kwargs)\n File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__\n return await task_method(*args, **kwargs)\n File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build\n setup_py_data = get_setup_data(self.context.pkg, env)\n File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data\n return dict(pkg.metadata[key](env))\n File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter\n return get_setup_information(\n File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information\n _setup_information_cache[hashable_env] = _get_setup_information(\n File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information\n result = subprocess.run(\n File "/usr/lib/python3.10/subprocess.py", line 526, in run\n raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command \'[\'/usr/bin/python3\', \'-c\', \'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \\\'setup.py\\\', script_args=(\\\'--dry-run\\\',), stop_after=\\\'config\\\');skip_keys = (\\\'cmdclass\\\', \\\'distclass\\\', \\\'ext_modules\\\', \\\'metadata\\\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\\\'_\\\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\\\'metadata\\\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\\\'license_files\\\', \\\'provides_extras\\\')};sys.stdout.buffer.write(repr(data).encode(\\\'utf-8\\\'))\']\' returned non-zero exit status 1.\n'} +[0.266264] (rmp220_middleware) JobEnded: {'identifier': 'rmp220_middleware', 'rc': 1} +[0.276265] (-) EventReactorShutdown: {} diff --git a/log/build_2023-08-18_08-51-11/logger_all.log b/log/build_2023-08-18_08-51-11/logger_all.log new file mode 100644 index 0000000..4755389 --- /dev/null +++ b/log/build_2023-08-18_08-51-11/logger_all.log @@ -0,0 +1,67 @@ +[0.434s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.434s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.454s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.455s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.455s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.455s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.455s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.455s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.455s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.455s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.468s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_python' and name 'rmp220_middleware' +[0.468s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.468s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.468s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.468s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.468s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.490s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.490s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.495s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 458 installed packages in /opt/ros/humble +[0.497s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_args' from command line to 'None' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target' from command line to 'None' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_cache' from command line to 'False' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_first' from command line to 'False' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_force_configure' from command line to 'False' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'ament_cmake_args' from command line to 'None' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_cmake_args' from command line to 'None' +[0.564s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.564s] DEBUG:colcon.colcon_core.verb:Building package 'rmp220_middleware' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware', 'merge_install': False, 'path': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'symlink_install': False, 'test_result_base': None} +[0.565s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.567s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.567s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' with build type 'ament_python' +[0.567s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'ament_prefix_path') +[0.576s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.576s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1' +[0.577s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv' +[0.577s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh' +[0.579s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.579s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[0.843s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[0.844s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[0.844s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with 'Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1.' +[0.844s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[0.851s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[0.851s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[0.851s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[0.860s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[0.861s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.ps1' +[0.862s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_ps1.py' +[0.863s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.ps1' +[0.864s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.sh' +[0.864s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_sh.py' +[0.865s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.sh' +[0.866s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.bash' +[0.866s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.bash' +[0.867s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.zsh' +[0.867s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.zsh' +[0.868s] INFO:colcon.colcon_core.shell:Creating '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/spawn_shell.bash' diff --git a/log/build_2023-08-18_08-51-11/rmp220_middleware/command.log b/log/build_2023-08-18_08-51-11/rmp220_middleware/command.log new file mode 100644 index 0000000..e69de29 diff --git a/log/build_2023-08-18_08-51-11/rmp220_middleware/stderr.log b/log/build_2023-08-18_08-51-11/rmp220_middleware/stderr.log new file mode 100644 index 0000000..68e86e5 --- /dev/null +++ b/log/build_2023-08-18_08-51-11/rmp220_middleware/stderr.log @@ -0,0 +1,18 @@ +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__ + rc = await self.task(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__ + return await task_method(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build + setup_py_data = get_setup_data(self.context.pkg, env) + File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data + return dict(pkg.metadata[key](env)) + File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter + return get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information + _setup_information_cache[hashable_env] = _get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information + result = subprocess.run( + File "/usr/lib/python3.10/subprocess.py", line 526, in run + raise CalledProcessError(retcode, process.args, +subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1. diff --git a/log/build_2023-08-18_08-51-11/rmp220_middleware/stdout.log b/log/build_2023-08-18_08-51-11/rmp220_middleware/stdout.log new file mode 100644 index 0000000..e69de29 diff --git a/log/build_2023-08-18_08-51-11/rmp220_middleware/stdout_stderr.log b/log/build_2023-08-18_08-51-11/rmp220_middleware/stdout_stderr.log new file mode 100644 index 0000000..68e86e5 --- /dev/null +++ b/log/build_2023-08-18_08-51-11/rmp220_middleware/stdout_stderr.log @@ -0,0 +1,18 @@ +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__ + rc = await self.task(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__ + return await task_method(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build + setup_py_data = get_setup_data(self.context.pkg, env) + File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data + return dict(pkg.metadata[key](env)) + File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter + return get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information + _setup_information_cache[hashable_env] = _get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information + result = subprocess.run( + File "/usr/lib/python3.10/subprocess.py", line 526, in run + raise CalledProcessError(retcode, process.args, +subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1. diff --git a/log/build_2023-08-18_08-51-11/rmp220_middleware/streams.log b/log/build_2023-08-18_08-51-11/rmp220_middleware/streams.log new file mode 100644 index 0000000..ff278d4 --- /dev/null +++ b/log/build_2023-08-18_08-51-11/rmp220_middleware/streams.log @@ -0,0 +1,18 @@ +[0.266s] Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__ + rc = await self.task(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__ + return await task_method(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build + setup_py_data = get_setup_data(self.context.pkg, env) + File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data + return dict(pkg.metadata[key](env)) + File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter + return get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information + _setup_information_cache[hashable_env] = _get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information + result = subprocess.run( + File "/usr/lib/python3.10/subprocess.py", line 526, in run + raise CalledProcessError(retcode, process.args, +subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1. diff --git a/log/build_2023-08-18_08-51-47/events.log b/log/build_2023-08-18_08-51-47/events.log new file mode 100644 index 0000000..72d67b2 --- /dev/null +++ b/log/build_2023-08-18_08-51-47/events.log @@ -0,0 +1,77 @@ +[0.000000] (-) TimerEvent: {} +[0.000085] (rmp220_middleware) JobQueued: {'identifier': 'rmp220_middleware', 'dependencies': OrderedDict()} +[0.000108] (rmp220_middleware) JobStarted: {'identifier': 'rmp220_middleware'} +[0.099321] (-) TimerEvent: {} +[0.199512] (-) TimerEvent: {} +[0.299729] (-) TimerEvent: {} +[0.399918] (-) TimerEvent: {} +[0.500160] (-) TimerEvent: {} +[0.600388] (-) TimerEvent: {} +[0.700626] (-) TimerEvent: {} +[0.800865] (-) TimerEvent: {} +[0.901089] (-) TimerEvent: {} +[1.001343] (-) TimerEvent: {} +[1.101588] (-) TimerEvent: {} +[1.201802] (-) TimerEvent: {} +[1.302047] (-) TimerEvent: {} +[1.402311] (-) TimerEvent: {} +[1.502636] (-) TimerEvent: {} +[1.602849] (-) TimerEvent: {} +[1.703120] (-) TimerEvent: {} +[1.803453] (-) TimerEvent: {} +[1.903725] (-) TimerEvent: {} +[2.004039] (-) TimerEvent: {} +[2.048683] (rmp220_middleware) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', 'build/rmp220_middleware', 'build', '--build-base', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build', 'install', '--record', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log', '--single-version-externally-managed'], 'cwd': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'env': {'GJS_DEBUG_TOPICS': 'JS ERROR;JS LOG', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'bjorn', 'GIO_MODULE_DIR': '/home/bjorn/snap/code/common/.cache/gio-modules', 'XDG_SESSION_TYPE': 'x11', 'GIT_ASKPASS': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass.sh', 'GTK_EXE_PREFIX_VSCODE_SNAP_ORIG': '', 'GDK_BACKEND_VSCODE_SNAP_ORIG': '', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/usr/lib/x86_64-linux-gnu/gazebo-11/plugins:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib', 'HOME': '/home/bjorn', 'CHROME_DESKTOP': 'code-url-handler.desktop', 'LOCPATH_VSCODE_SNAP_ORIG': '', 'TERM_PROGRAM_VERSION': '1.81.1', 'DESKTOP_SESSION': 'ubuntu', 'GTK_PATH': '/snap/code/137/usr/lib/x86_64-linux-gnu/gtk-3.0', 'GTK_IM_MODULE_FILE': '/home/bjorn/snap/code/common/.cache/immodules/immodules.cache', 'GIO_LAUNCHED_DESKTOP_FILE': '/var/lib/snapd/desktop/applications/code_code.desktop', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'GSETTINGS_SCHEMA_DIR_VSCODE_SNAP_ORIG': '', 'VSCODE_GIT_ASKPASS_MAIN': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/snap/code/137/usr/share/code/code', 'MANAGERPID': '2405', 'SYSTEMD_EXEC_PID': '2742', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1003/bus', 'COLORTERM': 'truecolor', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '8368', 'IM_CONFIG_PHASE': '1', 'ROS_DISTRO': 'humble', 'GTK_IM_MODULE': 'ibus', 'LOGNAME': 'bjorn', 'ONSHAPE_SECRET_KEY': 'XpUhDOxw7Gp7LV3wT3xDFGXeOGmk2nQmeLlysM7cQU7zv6Bz', 'JOURNAL_STREAM': '8:32520', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_CONFIG_DIRS_VSCODE_SNAP_ORIG': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_SESSION_CLASS': 'user', 'XDG_DATA_DIRS_VSCODE_SNAP_ORIG': '/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'USERNAME': 'bjorn', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'ROS_LOCALHOST_ONLY': '0', 'WINDOWPATH': '2', 'PATH': '/home/bjorn/.local/bin:/opt/ros/humble/bin:/home/bjorn/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/NUC01:@/tmp/.ICE-unix/2719,unix/NUC01:/tmp/.ICE-unix/2719', 'GTK_EXE_PREFIX': '/snap/code/137/usr', 'INVOCATION_ID': 'fb79c4fd3c1d4f7d9652c6b79482739c', 'XDG_MENU_PREFIX': 'gnome-', 'BAMF_DESKTOP_FILE_HINT': '/var/lib/snapd/desktop/applications/code_code.desktop', 'XDG_RUNTIME_DIR': '/run/user/1003', 'GDK_BACKEND': 'x11', 'DISPLAY': ':1', 'LOCPATH': '/snap/code/137/usr/lib/locale', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'Unity', 'GIO_MODULE_DIR_VSCODE_SNAP_ORIG': '', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1003/gdm/Xauthority', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'VSCODE_GIT_IPC_HANDLE': '/run/user/1003/vscode-git-c5b06e67ef.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1003/keyring/ssh', 'GSETTINGS_SCHEMA_DIR': '/home/bjorn/snap/code/137/.local/share/glib-2.0/schemas', 'AMENT_PREFIX_PATH': '/opt/ros/humble', 'ORIGINAL_XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GTK_PATH_VSCODE_SNAP_ORIG': '', 'GTK_IM_MODULE_FILE_VSCODE_SNAP_ORIG': '', 'GPG_AGENT_INFO': '/run/user/1003/gnupg/S.gpg-agent:0:1', 'GJS_DEBUG_OUTPUT': 'stderr', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '--ms-enable-electron-run-as-node', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'ONSHAPE_ACCESS_KEY': 'twfpigMHe11VE7ZCq2NOANj7', 'XDG_DATA_DIRS': '/home/bjorn/snap/code/137/.local/share:/home/bjorn/snap/code/137:/snap/code/137/usr/share:/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages', 'ONSHAPE_API': 'https://cad.onshape.com', 'COLCON': '1'}, 'shell': False} +[2.104128] (-) TimerEvent: {} +[2.204412] (-) TimerEvent: {} +[2.304642] (-) TimerEvent: {} +[2.404895] (-) TimerEvent: {} +[2.505154] (-) TimerEvent: {} +[2.605411] (-) TimerEvent: {} +[2.705638] (-) TimerEvent: {} +[2.711079] (rmp220_middleware) StderrLine: {'line': b"warning: rmp220_middleware/rmp220_middleware.bak.py:1:0: Dotted filenames ('rmp220_middleware.bak.py') are deprecated. Please use the normal Python package directory layout.\n"} +[2.779169] (rmp220_middleware) StderrLine: {'line': b"/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules'\n"} +[2.779285] (rmp220_middleware) StderrLine: {'line': b' warnings.warn(msg)\n'} +[2.795886] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning egg_info\x1b[0m\n'} +[2.796211] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating build/rmp220_middleware/rmp220_middleware.egg-info\x1b[0m\n'} +[2.796357] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO\x1b[0m\n'} +[2.796496] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt\x1b[0m\n'} +[2.796705] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt\x1b[0m\n'} +[2.796769] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt\x1b[0m\n'} +[2.796818] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt\x1b[0m\n'} +[2.800698] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.801744] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mreading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.802225] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.802321] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build\x1b[0m\n'} +[2.802387] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build_py\x1b[0m\n'} +[2.802454] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build\x1b[0m\n'} +[2.802516] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib\x1b[0m\n'} +[2.802575] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware\x1b[0m\n'} +[2.802620] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware\x1b[0m\n'} +[2.802678] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware\x1b[0m\n'} +[2.802723] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware\x1b[0m\n'} +[2.802781] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install\x1b[0m\n'} +[2.802957] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_lib\x1b[0m\n'} +[2.803472] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware\x1b[0m\n'} +[2.803548] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware\x1b[0m\n'} +[2.803635] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware\x1b[0m\n'} +[2.803702] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware\x1b[0m\n'} +[2.803989] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mbyte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__init__.py to __init__.cpython-310.pyc\x1b[0m\n'} +[2.804141] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mbyte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.bak.py to rmp220_middleware.bak.cpython-310.pyc\x1b[0m\n'} +[2.804701] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mbyte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc\x1b[0m\n'} +[2.804873] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_data\x1b[0m\n'} +[2.805153] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index\x1b[0m\n'} +[2.805200] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index\x1b[0m\n'} +[2.805279] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages\x1b[0m\n'} +[2.805356] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying resource/rmp220_middleware -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages\x1b[0m\n'} +[2.805418] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying package.xml -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware\x1b[0m\n'} +[2.805461] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_egg_info\x1b[0m\n'} +[2.805639] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mCopying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info\x1b[0m\n'} +[2.805684] (-) TimerEvent: {} +[2.806166] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_scripts\x1b[0m\n'} +[2.807306] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mInstalling rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware\x1b[0m\n'} +[2.807505] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log'\x1b[0m\n"} +[2.905815] (-) TimerEvent: {} +[2.917656] (rmp220_middleware) CommandEnded: {'returncode': 0} +[2.934573] (rmp220_middleware) JobEnded: {'identifier': 'rmp220_middleware', 'rc': 0} +[2.935065] (-) EventReactorShutdown: {} diff --git a/log/build_2023-08-18_08-51-47/logger_all.log b/log/build_2023-08-18_08-51-47/logger_all.log new file mode 100644 index 0000000..5148016 --- /dev/null +++ b/log/build_2023-08-18_08-51-47/logger_all.log @@ -0,0 +1,90 @@ +[0.355s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.355s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.376s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.376s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.376s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.376s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.376s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.376s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.376s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[0.376s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.376s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.376s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.376s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.376s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.376s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.376s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.377s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.377s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.390s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_python' and name 'rmp220_middleware' +[0.390s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.390s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.390s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.390s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.390s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.408s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.408s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.412s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 458 installed packages in /opt/ros/humble +[0.414s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_args' from command line to 'None' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target' from command line to 'None' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_cache' from command line to 'False' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_first' from command line to 'False' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_force_configure' from command line to 'False' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'ament_cmake_args' from command line to 'None' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_cmake_args' from command line to 'None' +[0.478s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.478s] DEBUG:colcon.colcon_core.verb:Building package 'rmp220_middleware' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware', 'merge_install': False, 'path': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'symlink_install': False, 'test_result_base': None} +[0.479s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.481s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.481s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' with build type 'ament_python' +[0.481s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'ament_prefix_path') +[0.488s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.488s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1' +[0.488s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv' +[0.489s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh' +[0.490s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.490s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[1.422s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[1.424s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[1.424s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[2.531s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.400s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.408s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake module files +[3.408s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake config files +[3.409s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib' +[3.409s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.409s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/pkgconfig/rmp220_middleware.pc' +[3.409s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages' +[3.409s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'pythonpath') +[3.411s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1' +[3.411s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv' +[3.411s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh' +[3.411s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.411s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(rmp220_middleware) +[3.413s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.ps1' +[3.414s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.dsv' +[3.414s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.sh' +[3.415s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.bash' +[3.415s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.zsh' +[3.416s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware) +[3.416s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[3.416s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[3.416s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[3.416s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[3.423s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[3.423s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[3.423s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[3.432s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[3.434s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.ps1' +[3.435s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_ps1.py' +[3.437s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.ps1' +[3.439s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.sh' +[3.440s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_sh.py' +[3.440s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.sh' +[3.442s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.bash' +[3.443s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.bash' +[3.444s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.zsh' +[3.445s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.zsh' +[3.446s] INFO:colcon.colcon_core.shell:Creating '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/spawn_shell.bash' diff --git a/log/build_2023-08-18_08-51-47/rmp220_middleware/command.log b/log/build_2023-08-18_08-51-47/rmp220_middleware/command.log new file mode 100644 index 0000000..c62a331 --- /dev/null +++ b/log/build_2023-08-18_08-51-47/rmp220_middleware/command.log @@ -0,0 +1,2 @@ +Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_08-51-47/rmp220_middleware/stderr.log b/log/build_2023-08-18_08-51-47/rmp220_middleware/stderr.log new file mode 100644 index 0000000..aa64c1b --- /dev/null +++ b/log/build_2023-08-18_08-51-47/rmp220_middleware/stderr.log @@ -0,0 +1,3 @@ +warning: rmp220_middleware/rmp220_middleware.bak.py:1:0: Dotted filenames ('rmp220_middleware.bak.py') are deprecated. Please use the normal Python package directory layout. +/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' + warnings.warn(msg) diff --git a/log/build_2023-08-18_08-51-47/rmp220_middleware/stdout.log b/log/build_2023-08-18_08-51-47/rmp220_middleware/stdout.log new file mode 100644 index 0000000..717a792 --- /dev/null +++ b/log/build_2023-08-18_08-51-47/rmp220_middleware/stdout.log @@ -0,0 +1,38 @@ +running egg_info +creating build/rmp220_middleware/rmp220_middleware.egg-info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +copying rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +copying rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +running install +running install_lib +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__init__.py to __init__.cpython-310.pyc +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.bak.py to rmp220_middleware.bak.cpython-310.pyc +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +running install_data +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages +copying resource/rmp220_middleware -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages +copying package.xml -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware +running install_egg_info +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_08-51-47/rmp220_middleware/stdout_stderr.log b/log/build_2023-08-18_08-51-47/rmp220_middleware/stdout_stderr.log new file mode 100644 index 0000000..57e58f1 --- /dev/null +++ b/log/build_2023-08-18_08-51-47/rmp220_middleware/stdout_stderr.log @@ -0,0 +1,41 @@ +warning: rmp220_middleware/rmp220_middleware.bak.py:1:0: Dotted filenames ('rmp220_middleware.bak.py') are deprecated. Please use the normal Python package directory layout. +/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' + warnings.warn(msg) +running egg_info +creating build/rmp220_middleware/rmp220_middleware.egg-info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +copying rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +copying rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +running install +running install_lib +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__init__.py to __init__.cpython-310.pyc +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.bak.py to rmp220_middleware.bak.cpython-310.pyc +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +running install_data +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages +copying resource/rmp220_middleware -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages +copying package.xml -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware +running install_egg_info +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_08-51-47/rmp220_middleware/streams.log b/log/build_2023-08-18_08-51-47/rmp220_middleware/streams.log new file mode 100644 index 0000000..5bddbf0 --- /dev/null +++ b/log/build_2023-08-18_08-51-47/rmp220_middleware/streams.log @@ -0,0 +1,43 @@ +[2.049s] Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[2.711s] warning: rmp220_middleware/rmp220_middleware.bak.py:1:0: Dotted filenames ('rmp220_middleware.bak.py') are deprecated. Please use the normal Python package directory layout. +[2.779s] /usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' +[2.779s] warnings.warn(msg) +[2.796s] running egg_info +[2.796s] creating build/rmp220_middleware/rmp220_middleware.egg-info +[2.796s] writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +[2.797s] writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +[2.797s] writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +[2.797s] writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +[2.797s] writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +[2.801s] writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.802s] reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.802s] writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.802s] running build +[2.802s] running build_py +[2.802s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build +[2.802s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib +[2.802s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +[2.803s] copying rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +[2.803s] copying rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +[2.803s] copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +[2.803s] running install +[2.803s] running install_lib +[2.803s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +[2.803s] copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/__init__.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +[2.804s] copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.bak.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +[2.804s] copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +[2.804s] byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/__init__.py to __init__.cpython-310.pyc +[2.804s] byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.bak.py to rmp220_middleware.bak.cpython-310.pyc +[2.805s] byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +[2.805s] running install_data +[2.805s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index +[2.805s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index +[2.805s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages +[2.805s] copying resource/rmp220_middleware -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/ament_index/resource_index/packages +[2.805s] copying package.xml -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware +[2.805s] running install_egg_info +[2.806s] Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +[2.806s] running install_scripts +[2.807s] Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +[2.807s] writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' +[2.918s] Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_08-53-55/events.log b/log/build_2023-08-18_08-53-55/events.log new file mode 100644 index 0000000..de9238d --- /dev/null +++ b/log/build_2023-08-18_08-53-55/events.log @@ -0,0 +1,57 @@ +[0.000000] (-) TimerEvent: {} +[0.000085] (rmp220_middleware) JobQueued: {'identifier': 'rmp220_middleware', 'dependencies': OrderedDict()} +[0.000108] (rmp220_middleware) JobStarted: {'identifier': 'rmp220_middleware'} +[0.099377] (-) TimerEvent: {} +[0.199562] (-) TimerEvent: {} +[0.299753] (-) TimerEvent: {} +[0.399966] (-) TimerEvent: {} +[0.500234] (-) TimerEvent: {} +[0.600473] (-) TimerEvent: {} +[0.700711] (-) TimerEvent: {} +[0.800939] (-) TimerEvent: {} +[0.901181] (-) TimerEvent: {} +[1.001435] (-) TimerEvent: {} +[1.101632] (-) TimerEvent: {} +[1.201852] (-) TimerEvent: {} +[1.302081] (-) TimerEvent: {} +[1.402284] (-) TimerEvent: {} +[1.502495] (-) TimerEvent: {} +[1.602672] (-) TimerEvent: {} +[1.702891] (-) TimerEvent: {} +[1.767985] (rmp220_middleware) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', 'build/rmp220_middleware', 'build', '--build-base', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build', 'install', '--record', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log', '--single-version-externally-managed'], 'cwd': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'env': {'GJS_DEBUG_TOPICS': 'JS ERROR;JS LOG', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'bjorn', 'GIO_MODULE_DIR': '/home/bjorn/snap/code/common/.cache/gio-modules', 'XDG_SESSION_TYPE': 'x11', 'GIT_ASKPASS': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass.sh', 'GTK_EXE_PREFIX_VSCODE_SNAP_ORIG': '', 'GDK_BACKEND_VSCODE_SNAP_ORIG': '', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/usr/lib/x86_64-linux-gnu/gazebo-11/plugins:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib', 'HOME': '/home/bjorn', 'CHROME_DESKTOP': 'code-url-handler.desktop', 'LOCPATH_VSCODE_SNAP_ORIG': '', 'TERM_PROGRAM_VERSION': '1.81.1', 'DESKTOP_SESSION': 'ubuntu', 'GTK_PATH': '/snap/code/137/usr/lib/x86_64-linux-gnu/gtk-3.0', 'GTK_IM_MODULE_FILE': '/home/bjorn/snap/code/common/.cache/immodules/immodules.cache', 'GIO_LAUNCHED_DESKTOP_FILE': '/var/lib/snapd/desktop/applications/code_code.desktop', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'GSETTINGS_SCHEMA_DIR_VSCODE_SNAP_ORIG': '', 'VSCODE_GIT_ASKPASS_MAIN': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/snap/code/137/usr/share/code/code', 'MANAGERPID': '2405', 'SYSTEMD_EXEC_PID': '2742', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1003/bus', 'COLORTERM': 'truecolor', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '8368', 'IM_CONFIG_PHASE': '1', 'COLCON_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install', 'ROS_DISTRO': 'humble', 'GTK_IM_MODULE': 'ibus', 'LOGNAME': 'bjorn', 'ONSHAPE_SECRET_KEY': 'XpUhDOxw7Gp7LV3wT3xDFGXeOGmk2nQmeLlysM7cQU7zv6Bz', 'JOURNAL_STREAM': '8:32520', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_CONFIG_DIRS_VSCODE_SNAP_ORIG': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_SESSION_CLASS': 'user', 'XDG_DATA_DIRS_VSCODE_SNAP_ORIG': '/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'USERNAME': 'bjorn', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'ROS_LOCALHOST_ONLY': '0', 'WINDOWPATH': '2', 'PATH': '/home/bjorn/.local/bin:/opt/ros/humble/bin:/home/bjorn/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/NUC01:@/tmp/.ICE-unix/2719,unix/NUC01:/tmp/.ICE-unix/2719', 'GTK_EXE_PREFIX': '/snap/code/137/usr', 'INVOCATION_ID': 'fb79c4fd3c1d4f7d9652c6b79482739c', 'XDG_MENU_PREFIX': 'gnome-', 'BAMF_DESKTOP_FILE_HINT': '/var/lib/snapd/desktop/applications/code_code.desktop', 'XDG_RUNTIME_DIR': '/run/user/1003', 'GDK_BACKEND': 'x11', 'DISPLAY': ':1', 'LOCPATH': '/snap/code/137/usr/lib/locale', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'Unity', 'GIO_MODULE_DIR_VSCODE_SNAP_ORIG': '', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1003/gdm/Xauthority', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'VSCODE_GIT_IPC_HANDLE': '/run/user/1003/vscode-git-c5b06e67ef.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1003/keyring/ssh', 'GSETTINGS_SCHEMA_DIR': '/home/bjorn/snap/code/137/.local/share/glib-2.0/schemas', 'AMENT_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware:/opt/ros/humble', 'ORIGINAL_XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GTK_PATH_VSCODE_SNAP_ORIG': '', 'GTK_IM_MODULE_FILE_VSCODE_SNAP_ORIG': '', 'GPG_AGENT_INFO': '/run/user/1003/gnupg/S.gpg-agent:0:1', 'GJS_DEBUG_OUTPUT': 'stderr', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '--ms-enable-electron-run-as-node', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'ONSHAPE_ACCESS_KEY': 'twfpigMHe11VE7ZCq2NOANj7', 'XDG_DATA_DIRS': '/home/bjorn/snap/code/137/.local/share:/home/bjorn/snap/code/137:/snap/code/137/usr/share:/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages', 'ONSHAPE_API': 'https://cad.onshape.com', 'COLCON': '1'}, 'shell': False} +[1.802998] (-) TimerEvent: {} +[1.903222] (-) TimerEvent: {} +[2.003541] (-) TimerEvent: {} +[2.103732] (-) TimerEvent: {} +[2.203925] (-) TimerEvent: {} +[2.304126] (-) TimerEvent: {} +[2.404331] (-) TimerEvent: {} +[2.448475] (rmp220_middleware) StderrLine: {'line': b"/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules'\n"} +[2.448609] (rmp220_middleware) StderrLine: {'line': b' warnings.warn(msg)\n'} +[2.465012] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning egg_info\x1b[0m\n'} +[2.465414] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO\x1b[0m\n'} +[2.465550] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt\x1b[0m\n'} +[2.465688] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt\x1b[0m\n'} +[2.465763] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt\x1b[0m\n'} +[2.465877] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt\x1b[0m\n'} +[2.467325] (rmp220_middleware) StdoutLine: {'line': b"\x1b[31mpackage init file 'rmp220_middleware/__init__.py' not found (or not a regular file)\x1b[0m\n"} +[2.467634] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mreading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.468256] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.468415] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build\x1b[0m\n'} +[2.468547] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build_py\x1b[0m\n'} +[2.468602] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware\x1b[0m\n'} +[2.468729] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install\x1b[0m\n'} +[2.468799] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_lib\x1b[0m\n'} +[2.469267] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware\x1b[0m\n'} +[2.469637] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mbyte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc\x1b[0m\n'} +[2.469854] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_data\x1b[0m\n'} +[2.470220] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_egg_info\x1b[0m\n'} +[2.470395] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mremoving '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it)\x1b[0m\n"} +[2.470574] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mCopying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info\x1b[0m\n'} +[2.471243] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_scripts\x1b[0m\n'} +[2.472308] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mInstalling rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware\x1b[0m\n'} +[2.472471] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log'\x1b[0m\n"} +[2.504454] (-) TimerEvent: {} +[2.578160] (rmp220_middleware) CommandEnded: {'returncode': 0} +[2.590119] (rmp220_middleware) JobEnded: {'identifier': 'rmp220_middleware', 'rc': 0} +[2.590529] (-) EventReactorShutdown: {} diff --git a/log/build_2023-08-18_08-53-55/logger_all.log b/log/build_2023-08-18_08-53-55/logger_all.log new file mode 100644 index 0000000..41eeea3 --- /dev/null +++ b/log/build_2023-08-18_08-53-55/logger_all.log @@ -0,0 +1,91 @@ +[0.357s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.357s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.378s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.378s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.378s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.378s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.378s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.378s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.378s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[0.378s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.378s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.393s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_python' and name 'rmp220_middleware' +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.412s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.412s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.415s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 1 installed packages in /home/bjorn/Documents/ros_projects/rmp220_middleware/install +[0.416s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 458 installed packages in /opt/ros/humble +[0.418s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.481s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_args' from command line to 'None' +[0.481s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target' from command line to 'None' +[0.481s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.482s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_cache' from command line to 'False' +[0.482s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_first' from command line to 'False' +[0.482s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_force_configure' from command line to 'False' +[0.482s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'ament_cmake_args' from command line to 'None' +[0.482s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_cmake_args' from command line to 'None' +[0.482s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.482s] DEBUG:colcon.colcon_core.verb:Building package 'rmp220_middleware' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware', 'merge_install': False, 'path': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'symlink_install': False, 'test_result_base': None} +[0.482s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.485s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.485s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' with build type 'ament_python' +[0.485s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'ament_prefix_path') +[0.491s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.491s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1' +[0.492s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv' +[0.492s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh' +[0.494s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.494s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[1.315s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[1.317s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[1.317s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[2.254s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.064s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.068s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake module files +[3.068s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake config files +[3.069s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib' +[3.069s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.069s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/pkgconfig/rmp220_middleware.pc' +[3.069s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages' +[3.069s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'pythonpath') +[3.070s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1' +[3.071s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv' +[3.071s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh' +[3.071s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.071s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(rmp220_middleware) +[3.073s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.ps1' +[3.073s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.dsv' +[3.074s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.sh' +[3.074s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.bash' +[3.075s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.zsh' +[3.075s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware) +[3.075s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[3.075s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[3.075s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[3.075s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[3.081s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[3.081s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[3.081s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[3.087s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[3.089s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.ps1' +[3.090s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_ps1.py' +[3.091s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.ps1' +[3.092s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.sh' +[3.092s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_sh.py' +[3.093s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.sh' +[3.094s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.bash' +[3.094s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.bash' +[3.095s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.zsh' +[3.095s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.zsh' +[3.096s] INFO:colcon.colcon_core.shell:Creating '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/spawn_shell.bash' diff --git a/log/build_2023-08-18_08-53-55/rmp220_middleware/command.log b/log/build_2023-08-18_08-53-55/rmp220_middleware/command.log new file mode 100644 index 0000000..c62a331 --- /dev/null +++ b/log/build_2023-08-18_08-53-55/rmp220_middleware/command.log @@ -0,0 +1,2 @@ +Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_08-53-55/rmp220_middleware/stderr.log b/log/build_2023-08-18_08-53-55/rmp220_middleware/stderr.log new file mode 100644 index 0000000..fa7e64a --- /dev/null +++ b/log/build_2023-08-18_08-53-55/rmp220_middleware/stderr.log @@ -0,0 +1,2 @@ +/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' + warnings.warn(msg) diff --git a/log/build_2023-08-18_08-53-55/rmp220_middleware/stdout.log b/log/build_2023-08-18_08-53-55/rmp220_middleware/stdout.log new file mode 100644 index 0000000..0a05993 --- /dev/null +++ b/log/build_2023-08-18_08-53-55/rmp220_middleware/stdout.log @@ -0,0 +1,23 @@ +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_08-53-55/rmp220_middleware/stdout_stderr.log b/log/build_2023-08-18_08-53-55/rmp220_middleware/stdout_stderr.log new file mode 100644 index 0000000..1e2e301 --- /dev/null +++ b/log/build_2023-08-18_08-53-55/rmp220_middleware/stdout_stderr.log @@ -0,0 +1,25 @@ +/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' + warnings.warn(msg) +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_08-53-55/rmp220_middleware/streams.log b/log/build_2023-08-18_08-53-55/rmp220_middleware/streams.log new file mode 100644 index 0000000..ba324ad --- /dev/null +++ b/log/build_2023-08-18_08-53-55/rmp220_middleware/streams.log @@ -0,0 +1,27 @@ +[1.768s] Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[2.448s] /usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' +[2.449s] warnings.warn(msg) +[2.465s] running egg_info +[2.465s] writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +[2.465s] writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +[2.466s] writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +[2.466s] writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +[2.466s] writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +[2.467s] package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +[2.468s] reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.468s] writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.468s] running build +[2.468s] running build_py +[2.469s] copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +[2.469s] running install +[2.469s] running install_lib +[2.469s] copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +[2.470s] byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +[2.470s] running install_data +[2.470s] running install_egg_info +[2.470s] removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +[2.470s] Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +[2.471s] running install_scripts +[2.472s] Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +[2.472s] writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' +[2.579s] Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_08-57-01/events.log b/log/build_2023-08-18_08-57-01/events.log new file mode 100644 index 0000000..ff53e56 --- /dev/null +++ b/log/build_2023-08-18_08-57-01/events.log @@ -0,0 +1,58 @@ +[0.000000] (-) TimerEvent: {} +[0.000086] (rmp220_middleware) JobQueued: {'identifier': 'rmp220_middleware', 'dependencies': OrderedDict()} +[0.000150] (rmp220_middleware) JobStarted: {'identifier': 'rmp220_middleware'} +[0.098604] (-) TimerEvent: {} +[0.198805] (-) TimerEvent: {} +[0.299029] (-) TimerEvent: {} +[0.399247] (-) TimerEvent: {} +[0.499437] (-) TimerEvent: {} +[0.599658] (-) TimerEvent: {} +[0.699870] (-) TimerEvent: {} +[0.800134] (-) TimerEvent: {} +[0.900372] (-) TimerEvent: {} +[1.000595] (-) TimerEvent: {} +[1.100836] (-) TimerEvent: {} +[1.201064] (-) TimerEvent: {} +[1.301300] (-) TimerEvent: {} +[1.401537] (-) TimerEvent: {} +[1.501781] (-) TimerEvent: {} +[1.602025] (-) TimerEvent: {} +[1.702279] (-) TimerEvent: {} +[1.776592] (rmp220_middleware) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', 'build/rmp220_middleware', 'build', '--build-base', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build', 'install', '--record', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log', '--single-version-externally-managed'], 'cwd': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'env': {'GJS_DEBUG_TOPICS': 'JS ERROR;JS LOG', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'bjorn', 'GIO_MODULE_DIR': '/home/bjorn/snap/code/common/.cache/gio-modules', 'XDG_SESSION_TYPE': 'x11', 'GIT_ASKPASS': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass.sh', 'GTK_EXE_PREFIX_VSCODE_SNAP_ORIG': '', 'GDK_BACKEND_VSCODE_SNAP_ORIG': '', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/usr/lib/x86_64-linux-gnu/gazebo-11/plugins:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib', 'HOME': '/home/bjorn', 'CHROME_DESKTOP': 'code-url-handler.desktop', 'LOCPATH_VSCODE_SNAP_ORIG': '', 'TERM_PROGRAM_VERSION': '1.81.1', 'DESKTOP_SESSION': 'ubuntu', 'GTK_PATH': '/snap/code/137/usr/lib/x86_64-linux-gnu/gtk-3.0', 'GTK_IM_MODULE_FILE': '/home/bjorn/snap/code/common/.cache/immodules/immodules.cache', 'GIO_LAUNCHED_DESKTOP_FILE': '/var/lib/snapd/desktop/applications/code_code.desktop', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'GSETTINGS_SCHEMA_DIR_VSCODE_SNAP_ORIG': '', 'VSCODE_GIT_ASKPASS_MAIN': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/snap/code/137/usr/share/code/code', 'MANAGERPID': '2405', 'SYSTEMD_EXEC_PID': '2742', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1003/bus', 'COLORTERM': 'truecolor', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '8368', 'IM_CONFIG_PHASE': '1', 'COLCON_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install', 'ROS_DISTRO': 'humble', 'GTK_IM_MODULE': 'ibus', 'LOGNAME': 'bjorn', 'ONSHAPE_SECRET_KEY': 'XpUhDOxw7Gp7LV3wT3xDFGXeOGmk2nQmeLlysM7cQU7zv6Bz', 'JOURNAL_STREAM': '8:32520', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_CONFIG_DIRS_VSCODE_SNAP_ORIG': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_SESSION_CLASS': 'user', 'XDG_DATA_DIRS_VSCODE_SNAP_ORIG': '/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'USERNAME': 'bjorn', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'ROS_LOCALHOST_ONLY': '0', 'WINDOWPATH': '2', 'PATH': '/home/bjorn/.local/bin:/opt/ros/humble/bin:/home/bjorn/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/NUC01:@/tmp/.ICE-unix/2719,unix/NUC01:/tmp/.ICE-unix/2719', 'GTK_EXE_PREFIX': '/snap/code/137/usr', 'INVOCATION_ID': 'fb79c4fd3c1d4f7d9652c6b79482739c', 'XDG_MENU_PREFIX': 'gnome-', 'BAMF_DESKTOP_FILE_HINT': '/var/lib/snapd/desktop/applications/code_code.desktop', 'XDG_RUNTIME_DIR': '/run/user/1003', 'GDK_BACKEND': 'x11', 'DISPLAY': ':1', 'LOCPATH': '/snap/code/137/usr/lib/locale', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'Unity', 'GIO_MODULE_DIR_VSCODE_SNAP_ORIG': '', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1003/gdm/Xauthority', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'VSCODE_GIT_IPC_HANDLE': '/run/user/1003/vscode-git-c5b06e67ef.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1003/keyring/ssh', 'GSETTINGS_SCHEMA_DIR': '/home/bjorn/snap/code/137/.local/share/glib-2.0/schemas', 'AMENT_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware:/opt/ros/humble', 'ORIGINAL_XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GTK_PATH_VSCODE_SNAP_ORIG': '', 'GTK_IM_MODULE_FILE_VSCODE_SNAP_ORIG': '', 'GPG_AGENT_INFO': '/run/user/1003/gnupg/S.gpg-agent:0:1', 'GJS_DEBUG_OUTPUT': 'stderr', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '--ms-enable-electron-run-as-node', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'ONSHAPE_ACCESS_KEY': 'twfpigMHe11VE7ZCq2NOANj7', 'XDG_DATA_DIRS': '/home/bjorn/snap/code/137/.local/share:/home/bjorn/snap/code/137:/snap/code/137/usr/share:/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages', 'ONSHAPE_API': 'https://cad.onshape.com', 'COLCON': '1'}, 'shell': False} +[1.802376] (-) TimerEvent: {} +[1.902590] (-) TimerEvent: {} +[2.002786] (-) TimerEvent: {} +[2.102979] (-) TimerEvent: {} +[2.203221] (-) TimerEvent: {} +[2.303469] (-) TimerEvent: {} +[2.403702] (-) TimerEvent: {} +[2.479711] (rmp220_middleware) StderrLine: {'line': b"/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules'\n"} +[2.479846] (rmp220_middleware) StderrLine: {'line': b' warnings.warn(msg)\n'} +[2.496364] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning egg_info\x1b[0m\n'} +[2.496763] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO\x1b[0m\n'} +[2.496964] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt\x1b[0m\n'} +[2.497127] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt\x1b[0m\n'} +[2.497182] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt\x1b[0m\n'} +[2.497307] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt\x1b[0m\n'} +[2.498731] (rmp220_middleware) StdoutLine: {'line': b"\x1b[31mpackage init file 'rmp220_middleware/__init__.py' not found (or not a regular file)\x1b[0m\n"} +[2.499070] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mreading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.499726] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.499798] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build\x1b[0m\n'} +[2.499925] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build_py\x1b[0m\n'} +[2.499999] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware\x1b[0m\n'} +[2.500048] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install\x1b[0m\n'} +[2.500175] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_lib\x1b[0m\n'} +[2.500638] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware\x1b[0m\n'} +[2.501000] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mbyte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc\x1b[0m\n'} +[2.501224] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_data\x1b[0m\n'} +[2.501533] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_egg_info\x1b[0m\n'} +[2.501798] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mremoving '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it)\x1b[0m\n"} +[2.501979] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mCopying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info\x1b[0m\n'} +[2.502588] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_scripts\x1b[0m\n'} +[2.503751] (-) TimerEvent: {} +[2.503920] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mInstalling rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware\x1b[0m\n'} +[2.504185] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log'\x1b[0m\n"} +[2.603883] (-) TimerEvent: {} +[2.607436] (rmp220_middleware) CommandEnded: {'returncode': 0} +[2.620562] (rmp220_middleware) JobEnded: {'identifier': 'rmp220_middleware', 'rc': 0} +[2.621057] (-) EventReactorShutdown: {} diff --git a/log/build_2023-08-18_08-57-01/logger_all.log b/log/build_2023-08-18_08-57-01/logger_all.log new file mode 100644 index 0000000..67c9464 --- /dev/null +++ b/log/build_2023-08-18_08-57-01/logger_all.log @@ -0,0 +1,91 @@ +[0.359s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.359s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.379s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.379s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.379s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.379s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.379s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.379s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.379s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.379s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.392s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_python' and name 'rmp220_middleware' +[0.392s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.392s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.392s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.392s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.392s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.409s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.409s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.412s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 1 installed packages in /home/bjorn/Documents/ros_projects/rmp220_middleware/install +[0.414s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 458 installed packages in /opt/ros/humble +[0.415s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_args' from command line to 'None' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target' from command line to 'None' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_cache' from command line to 'False' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_first' from command line to 'False' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_force_configure' from command line to 'False' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'ament_cmake_args' from command line to 'None' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_cmake_args' from command line to 'None' +[0.477s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.477s] DEBUG:colcon.colcon_core.verb:Building package 'rmp220_middleware' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware', 'merge_install': False, 'path': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'symlink_install': False, 'test_result_base': None} +[0.478s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.480s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.480s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' with build type 'ament_python' +[0.481s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'ament_prefix_path') +[0.487s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.487s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1' +[0.487s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv' +[0.488s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh' +[0.489s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.489s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[1.310s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[1.312s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[1.312s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[2.259s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.089s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.094s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake module files +[3.095s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake config files +[3.095s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib' +[3.095s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.095s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/pkgconfig/rmp220_middleware.pc' +[3.096s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages' +[3.096s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'pythonpath') +[3.097s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1' +[3.097s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv' +[3.097s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh' +[3.098s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.098s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(rmp220_middleware) +[3.099s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.ps1' +[3.100s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.dsv' +[3.100s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.sh' +[3.101s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.bash' +[3.101s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.zsh' +[3.102s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware) +[3.102s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[3.102s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[3.102s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[3.102s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[3.111s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[3.111s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[3.111s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[3.117s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[3.118s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.ps1' +[3.119s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_ps1.py' +[3.121s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.ps1' +[3.122s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.sh' +[3.122s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_sh.py' +[3.123s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.sh' +[3.125s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.bash' +[3.125s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.bash' +[3.126s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.zsh' +[3.127s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.zsh' +[3.128s] INFO:colcon.colcon_core.shell:Creating '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/spawn_shell.bash' diff --git a/log/build_2023-08-18_08-57-01/rmp220_middleware/command.log b/log/build_2023-08-18_08-57-01/rmp220_middleware/command.log new file mode 100644 index 0000000..c62a331 --- /dev/null +++ b/log/build_2023-08-18_08-57-01/rmp220_middleware/command.log @@ -0,0 +1,2 @@ +Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_08-57-01/rmp220_middleware/stderr.log b/log/build_2023-08-18_08-57-01/rmp220_middleware/stderr.log new file mode 100644 index 0000000..fa7e64a --- /dev/null +++ b/log/build_2023-08-18_08-57-01/rmp220_middleware/stderr.log @@ -0,0 +1,2 @@ +/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' + warnings.warn(msg) diff --git a/log/build_2023-08-18_08-57-01/rmp220_middleware/stdout.log b/log/build_2023-08-18_08-57-01/rmp220_middleware/stdout.log new file mode 100644 index 0000000..0a05993 --- /dev/null +++ b/log/build_2023-08-18_08-57-01/rmp220_middleware/stdout.log @@ -0,0 +1,23 @@ +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_08-57-01/rmp220_middleware/stdout_stderr.log b/log/build_2023-08-18_08-57-01/rmp220_middleware/stdout_stderr.log new file mode 100644 index 0000000..1e2e301 --- /dev/null +++ b/log/build_2023-08-18_08-57-01/rmp220_middleware/stdout_stderr.log @@ -0,0 +1,25 @@ +/usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' + warnings.warn(msg) +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_08-57-01/rmp220_middleware/streams.log b/log/build_2023-08-18_08-57-01/rmp220_middleware/streams.log new file mode 100644 index 0000000..18ef1e0 --- /dev/null +++ b/log/build_2023-08-18_08-57-01/rmp220_middleware/streams.log @@ -0,0 +1,27 @@ +[1.777s] Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[2.480s] /usr/lib/python3.10/distutils/dist.py:274: UserWarning: Unknown distribution option: 'xt_modules' +[2.480s] warnings.warn(msg) +[2.496s] running egg_info +[2.497s] writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +[2.497s] writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +[2.497s] writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +[2.497s] writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +[2.497s] writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +[2.499s] package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +[2.499s] reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.500s] writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.500s] running build +[2.500s] running build_py +[2.500s] copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware +[2.500s] running install +[2.500s] running install_lib +[2.501s] copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib/rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware +[2.501s] byte-compiling /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware/rmp220_middleware.py to rmp220_middleware.cpython-310.pyc +[2.501s] running install_data +[2.501s] running install_egg_info +[2.502s] removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +[2.502s] Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +[2.502s] running install_scripts +[2.504s] Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +[2.504s] writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' +[2.607s] Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_09-00-01/events.log b/log/build_2023-08-18_09-00-01/events.log new file mode 100644 index 0000000..b8d6e3a --- /dev/null +++ b/log/build_2023-08-18_09-00-01/events.log @@ -0,0 +1,72 @@ +[0.000000] (-) TimerEvent: {} +[0.000084] (rmp220_middleware) JobQueued: {'identifier': 'rmp220_middleware', 'dependencies': OrderedDict()} +[0.000107] (rmp220_middleware) JobStarted: {'identifier': 'rmp220_middleware'} +[0.099387] (-) TimerEvent: {} +[0.199613] (-) TimerEvent: {} +[0.299813] (-) TimerEvent: {} +[0.400012] (-) TimerEvent: {} +[0.500205] (-) TimerEvent: {} +[0.600403] (-) TimerEvent: {} +[0.700611] (-) TimerEvent: {} +[0.800811] (-) TimerEvent: {} +[0.901033] (-) TimerEvent: {} +[1.001265] (-) TimerEvent: {} +[1.101472] (-) TimerEvent: {} +[1.201719] (-) TimerEvent: {} +[1.301947] (-) TimerEvent: {} +[1.402188] (-) TimerEvent: {} +[1.502443] (-) TimerEvent: {} +[1.602669] (-) TimerEvent: {} +[1.702911] (-) TimerEvent: {} +[1.739955] (rmp220_middleware) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', 'build/rmp220_middleware', 'build', '--build-base', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build', 'install', '--record', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log', '--single-version-externally-managed'], 'cwd': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'env': {'GJS_DEBUG_TOPICS': 'JS ERROR;JS LOG', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'bjorn', 'GIO_MODULE_DIR': '/home/bjorn/snap/code/common/.cache/gio-modules', 'XDG_SESSION_TYPE': 'x11', 'GIT_ASKPASS': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass.sh', 'GTK_EXE_PREFIX_VSCODE_SNAP_ORIG': '', 'GDK_BACKEND_VSCODE_SNAP_ORIG': '', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/usr/lib/x86_64-linux-gnu/gazebo-11/plugins:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib', 'HOME': '/home/bjorn', 'CHROME_DESKTOP': 'code-url-handler.desktop', 'LOCPATH_VSCODE_SNAP_ORIG': '', 'TERM_PROGRAM_VERSION': '1.81.1', 'DESKTOP_SESSION': 'ubuntu', 'GTK_PATH': '/snap/code/137/usr/lib/x86_64-linux-gnu/gtk-3.0', 'GTK_IM_MODULE_FILE': '/home/bjorn/snap/code/common/.cache/immodules/immodules.cache', 'GIO_LAUNCHED_DESKTOP_FILE': '/var/lib/snapd/desktop/applications/code_code.desktop', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'GSETTINGS_SCHEMA_DIR_VSCODE_SNAP_ORIG': '', 'VSCODE_GIT_ASKPASS_MAIN': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/snap/code/137/usr/share/code/code', 'MANAGERPID': '2405', 'SYSTEMD_EXEC_PID': '2742', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1003/bus', 'COLORTERM': 'truecolor', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '8368', 'IM_CONFIG_PHASE': '1', 'COLCON_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install', 'ROS_DISTRO': 'humble', 'GTK_IM_MODULE': 'ibus', 'LOGNAME': 'bjorn', 'ONSHAPE_SECRET_KEY': 'XpUhDOxw7Gp7LV3wT3xDFGXeOGmk2nQmeLlysM7cQU7zv6Bz', 'JOURNAL_STREAM': '8:32520', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_CONFIG_DIRS_VSCODE_SNAP_ORIG': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_SESSION_CLASS': 'user', 'XDG_DATA_DIRS_VSCODE_SNAP_ORIG': '/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'USERNAME': 'bjorn', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'ROS_LOCALHOST_ONLY': '0', 'WINDOWPATH': '2', 'PATH': '/home/bjorn/.local/bin:/opt/ros/humble/bin:/home/bjorn/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/NUC01:@/tmp/.ICE-unix/2719,unix/NUC01:/tmp/.ICE-unix/2719', 'GTK_EXE_PREFIX': '/snap/code/137/usr', 'INVOCATION_ID': 'fb79c4fd3c1d4f7d9652c6b79482739c', 'XDG_MENU_PREFIX': 'gnome-', 'BAMF_DESKTOP_FILE_HINT': '/var/lib/snapd/desktop/applications/code_code.desktop', 'XDG_RUNTIME_DIR': '/run/user/1003', 'GDK_BACKEND': 'x11', 'DISPLAY': ':1', 'LOCPATH': '/snap/code/137/usr/lib/locale', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'Unity', 'GIO_MODULE_DIR_VSCODE_SNAP_ORIG': '', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1003/gdm/Xauthority', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'VSCODE_GIT_IPC_HANDLE': '/run/user/1003/vscode-git-c5b06e67ef.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1003/keyring/ssh', 'GSETTINGS_SCHEMA_DIR': '/home/bjorn/snap/code/137/.local/share/glib-2.0/schemas', 'AMENT_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware:/opt/ros/humble', 'ORIGINAL_XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GTK_PATH_VSCODE_SNAP_ORIG': '', 'GTK_IM_MODULE_FILE_VSCODE_SNAP_ORIG': '', 'GPG_AGENT_INFO': '/run/user/1003/gnupg/S.gpg-agent:0:1', 'GJS_DEBUG_OUTPUT': 'stderr', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '--ms-enable-electron-run-as-node', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'ONSHAPE_ACCESS_KEY': 'twfpigMHe11VE7ZCq2NOANj7', 'XDG_DATA_DIRS': '/home/bjorn/snap/code/137/.local/share:/home/bjorn/snap/code/137:/snap/code/137/usr/share:/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages', 'ONSHAPE_API': 'https://cad.onshape.com', 'COLCON': '1'}, 'shell': False} +[1.803020] (-) TimerEvent: {} +[1.903244] (-) TimerEvent: {} +[2.003442] (-) TimerEvent: {} +[2.103663] (-) TimerEvent: {} +[2.203857] (-) TimerEvent: {} +[2.304058] (-) TimerEvent: {} +[2.404303] (-) TimerEvent: {} +[2.446710] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning egg_info\x1b[0m\n'} +[2.447065] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO\x1b[0m\n'} +[2.447167] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt\x1b[0m\n'} +[2.447315] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt\x1b[0m\n'} +[2.447506] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt\x1b[0m\n'} +[2.447594] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt\x1b[0m\n'} +[2.449104] (rmp220_middleware) StdoutLine: {'line': b"\x1b[31mpackage init file 'rmp220_middleware/__init__.py' not found (or not a regular file)\x1b[0m\n"} +[2.450020] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mreading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.450588] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.450662] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build\x1b[0m\n'} +[2.450711] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build_py\x1b[0m\n'} +[2.450769] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10\x1b[0m\n'} +[2.450841] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware\x1b[0m\n'} +[2.450889] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware\x1b[0m\n'} +[2.450948] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build_ext\x1b[0m\n'} +[2.451727] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mbuilding 'rmp220_middleware' extension\x1b[0m\n"} +[2.453386] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mC compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC\n'} +[2.453462] (rmp220_middleware) StdoutLine: {'line': b'\x1b[0m\n'} +[2.453510] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10\x1b[0m\n'} +[2.453557] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcreating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware\x1b[0m\n'} +[2.453634] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mcompile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c'\x1b[0m\n"} +[2.453681] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mx86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c\x1b[0m\n'} +[2.504418] (-) TimerEvent: {} +[2.604673] (-) TimerEvent: {} +[2.704920] (-) TimerEvent: {} +[2.805168] (-) TimerEvent: {} +[2.905415] (-) TimerEvent: {} +[3.005681] (-) TimerEvent: {} +[3.072823] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mx86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so\x1b[0m\n'} +[3.088275] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install\x1b[0m\n'} +[3.088520] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_lib\x1b[0m\n'} +[3.089075] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages\x1b[0m\n'} +[3.089634] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_data\x1b[0m\n'} +[3.090030] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_egg_info\x1b[0m\n'} +[3.090325] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mremoving '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it)\x1b[0m\n"} +[3.090508] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mCopying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info\x1b[0m\n'} +[3.091077] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_scripts\x1b[0m\n'} +[3.092361] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mInstalling rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware\x1b[0m\n'} +[3.092613] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log'\x1b[0m\n"} +[3.105804] (-) TimerEvent: {} +[3.206043] (-) TimerEvent: {} +[3.207307] (rmp220_middleware) CommandEnded: {'returncode': 0} +[3.227475] (rmp220_middleware) JobEnded: {'identifier': 'rmp220_middleware', 'rc': 0} +[3.227990] (-) EventReactorShutdown: {} diff --git a/log/build_2023-08-18_09-00-01/logger_all.log b/log/build_2023-08-18_09-00-01/logger_all.log new file mode 100644 index 0000000..e5affc9 --- /dev/null +++ b/log/build_2023-08-18_09-00-01/logger_all.log @@ -0,0 +1,91 @@ +[0.354s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.354s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.374s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.374s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.374s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.374s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.374s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.374s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.374s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[0.374s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.375s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.388s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_python' and name 'rmp220_middleware' +[0.388s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.388s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.388s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.388s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.388s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.406s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.406s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.409s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 1 installed packages in /home/bjorn/Documents/ros_projects/rmp220_middleware/install +[0.411s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 458 installed packages in /opt/ros/humble +[0.413s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_args' from command line to 'None' +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target' from command line to 'None' +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_cache' from command line to 'False' +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_first' from command line to 'False' +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_force_configure' from command line to 'False' +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'ament_cmake_args' from command line to 'None' +[0.473s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_cmake_args' from command line to 'None' +[0.474s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.474s] DEBUG:colcon.colcon_core.verb:Building package 'rmp220_middleware' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware', 'merge_install': False, 'path': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'symlink_install': False, 'test_result_base': None} +[0.474s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.476s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.476s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' with build type 'ament_python' +[0.477s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'ament_prefix_path') +[0.483s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.483s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1' +[0.483s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv' +[0.484s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh' +[0.485s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.485s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[1.290s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[1.292s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[1.292s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[2.218s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.684s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.692s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake module files +[3.692s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake config files +[3.693s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib' +[3.693s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.693s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/pkgconfig/rmp220_middleware.pc' +[3.693s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages' +[3.693s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'pythonpath') +[3.696s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1' +[3.696s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv' +[3.697s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh' +[3.697s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.697s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(rmp220_middleware) +[3.700s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.ps1' +[3.701s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.dsv' +[3.702s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.sh' +[3.702s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.bash' +[3.703s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.zsh' +[3.704s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware) +[3.704s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[3.705s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[3.705s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[3.705s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[3.711s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[3.711s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[3.711s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[3.717s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[3.719s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.ps1' +[3.720s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_ps1.py' +[3.720s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.ps1' +[3.722s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.sh' +[3.722s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_sh.py' +[3.722s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.sh' +[3.723s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.bash' +[3.724s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.bash' +[3.725s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.zsh' +[3.725s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.zsh' +[3.726s] INFO:colcon.colcon_core.shell:Creating '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/spawn_shell.bash' diff --git a/log/build_2023-08-18_09-00-01/rmp220_middleware/command.log b/log/build_2023-08-18_09-00-01/rmp220_middleware/command.log new file mode 100644 index 0000000..c62a331 --- /dev/null +++ b/log/build_2023-08-18_09-00-01/rmp220_middleware/command.log @@ -0,0 +1,2 @@ +Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_09-00-01/rmp220_middleware/stderr.log b/log/build_2023-08-18_09-00-01/rmp220_middleware/stderr.log new file mode 100644 index 0000000..e69de29 diff --git a/log/build_2023-08-18_09-00-01/rmp220_middleware/stdout.log b/log/build_2023-08-18_09-00-01/rmp220_middleware/stdout.log new file mode 100644 index 0000000..a5b3037 --- /dev/null +++ b/log/build_2023-08-18_09-00-01/rmp220_middleware/stdout.log @@ -0,0 +1,33 @@ +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10 +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware +running build_ext +building 'rmp220_middleware' extension +C compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC + +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10 +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware +compile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c' +x86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c +x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_09-00-01/rmp220_middleware/stdout_stderr.log b/log/build_2023-08-18_09-00-01/rmp220_middleware/stdout_stderr.log new file mode 100644 index 0000000..a5b3037 --- /dev/null +++ b/log/build_2023-08-18_09-00-01/rmp220_middleware/stdout_stderr.log @@ -0,0 +1,33 @@ +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10 +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware +copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware +running build_ext +building 'rmp220_middleware' extension +C compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC + +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10 +creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware +compile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c' +x86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c +x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_09-00-01/rmp220_middleware/streams.log b/log/build_2023-08-18_09-00-01/rmp220_middleware/streams.log new file mode 100644 index 0000000..7ec7ecc --- /dev/null +++ b/log/build_2023-08-18_09-00-01/rmp220_middleware/streams.log @@ -0,0 +1,35 @@ +[1.740s] Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[2.447s] running egg_info +[2.447s] writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +[2.447s] writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +[2.447s] writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +[2.447s] writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +[2.448s] writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +[2.449s] package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +[2.450s] reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.451s] writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.451s] running build +[2.451s] running build_py +[2.451s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10 +[2.451s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware +[2.451s] copying rmp220_middleware/rmp220_middleware.py -> /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware +[2.451s] running build_ext +[2.452s] building 'rmp220_middleware' extension +[2.453s] C compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC +[2.453s]  +[2.453s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10 +[2.453s] creating /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware +[2.454s] compile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c' +[2.454s] x86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c +[3.073s] x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so +[3.088s] running install +[3.088s] running install_lib +[3.089s] copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages +[3.090s] running install_data +[3.090s] running install_egg_info +[3.090s] removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +[3.090s] Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +[3.091s] running install_scripts +[3.092s] Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +[3.093s] writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' +[3.207s] Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_09-00-46/events.log b/log/build_2023-08-18_09-00-46/events.log new file mode 100644 index 0000000..15887f2 --- /dev/null +++ b/log/build_2023-08-18_09-00-46/events.log @@ -0,0 +1,8 @@ +[0.000000] (-) TimerEvent: {} +[0.000082] (rmp220_middleware) JobQueued: {'identifier': 'rmp220_middleware', 'dependencies': OrderedDict()} +[0.000104] (rmp220_middleware) JobStarted: {'identifier': 'rmp220_middleware'} +[0.098112] (-) TimerEvent: {} +[0.198405] (-) TimerEvent: {} +[0.270818] (rmp220_middleware) StderrLine: {'line': b'Traceback (most recent call last):\n File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__\n rc = await self.task(*args, **kwargs)\n File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__\n return await task_method(*args, **kwargs)\n File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build\n setup_py_data = get_setup_data(self.context.pkg, env)\n File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data\n return dict(pkg.metadata[key](env))\n File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter\n return get_setup_information(\n File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information\n _setup_information_cache[hashable_env] = _get_setup_information(\n File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information\n result = subprocess.run(\n File "/usr/lib/python3.10/subprocess.py", line 526, in run\n raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command \'[\'/usr/bin/python3\', \'-c\', \'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \\\'setup.py\\\', script_args=(\\\'--dry-run\\\',), stop_after=\\\'config\\\');skip_keys = (\\\'cmdclass\\\', \\\'distclass\\\', \\\'ext_modules\\\', \\\'metadata\\\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\\\'_\\\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\\\'metadata\\\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\\\'license_files\\\', \\\'provides_extras\\\')};sys.stdout.buffer.write(repr(data).encode(\\\'utf-8\\\'))\']\' returned non-zero exit status 1.\n'} +[0.271265] (rmp220_middleware) JobEnded: {'identifier': 'rmp220_middleware', 'rc': 1} +[0.281276] (-) EventReactorShutdown: {} diff --git a/log/build_2023-08-18_09-00-46/logger_all.log b/log/build_2023-08-18_09-00-46/logger_all.log new file mode 100644 index 0000000..ee5eea6 --- /dev/null +++ b/log/build_2023-08-18_09-00-46/logger_all.log @@ -0,0 +1,68 @@ +[0.360s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.360s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.380s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.380s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.380s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.380s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.380s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.380s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.380s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[0.380s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.380s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.380s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.380s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.380s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.380s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.380s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.381s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.381s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.393s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_python' and name 'rmp220_middleware' +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.393s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.394s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.394s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.411s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.411s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.414s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 1 installed packages in /home/bjorn/Documents/ros_projects/rmp220_middleware/install +[0.416s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 458 installed packages in /opt/ros/humble +[0.418s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_args' from command line to 'None' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target' from command line to 'None' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_cache' from command line to 'False' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_first' from command line to 'False' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_force_configure' from command line to 'False' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'ament_cmake_args' from command line to 'None' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_cmake_args' from command line to 'None' +[0.480s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.480s] DEBUG:colcon.colcon_core.verb:Building package 'rmp220_middleware' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware', 'merge_install': False, 'path': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'symlink_install': False, 'test_result_base': None} +[0.480s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.483s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.483s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' with build type 'ament_python' +[0.483s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'ament_prefix_path') +[0.489s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.489s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1' +[0.489s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv' +[0.490s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh' +[0.492s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.492s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[0.765s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[0.766s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[0.766s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with 'Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1.' +[0.766s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[0.772s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[0.772s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[0.772s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[0.778s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[0.779s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.ps1' +[0.780s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_ps1.py' +[0.781s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.ps1' +[0.782s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.sh' +[0.782s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_sh.py' +[0.782s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.sh' +[0.783s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.bash' +[0.783s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.bash' +[0.784s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.zsh' +[0.785s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.zsh' +[0.786s] INFO:colcon.colcon_core.shell:Creating '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/spawn_shell.bash' diff --git a/log/build_2023-08-18_09-00-46/rmp220_middleware/command.log b/log/build_2023-08-18_09-00-46/rmp220_middleware/command.log new file mode 100644 index 0000000..e69de29 diff --git a/log/build_2023-08-18_09-00-46/rmp220_middleware/stderr.log b/log/build_2023-08-18_09-00-46/rmp220_middleware/stderr.log new file mode 100644 index 0000000..68e86e5 --- /dev/null +++ b/log/build_2023-08-18_09-00-46/rmp220_middleware/stderr.log @@ -0,0 +1,18 @@ +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__ + rc = await self.task(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__ + return await task_method(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build + setup_py_data = get_setup_data(self.context.pkg, env) + File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data + return dict(pkg.metadata[key](env)) + File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter + return get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information + _setup_information_cache[hashable_env] = _get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information + result = subprocess.run( + File "/usr/lib/python3.10/subprocess.py", line 526, in run + raise CalledProcessError(retcode, process.args, +subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1. diff --git a/log/build_2023-08-18_09-00-46/rmp220_middleware/stdout.log b/log/build_2023-08-18_09-00-46/rmp220_middleware/stdout.log new file mode 100644 index 0000000..e69de29 diff --git a/log/build_2023-08-18_09-00-46/rmp220_middleware/stdout_stderr.log b/log/build_2023-08-18_09-00-46/rmp220_middleware/stdout_stderr.log new file mode 100644 index 0000000..68e86e5 --- /dev/null +++ b/log/build_2023-08-18_09-00-46/rmp220_middleware/stdout_stderr.log @@ -0,0 +1,18 @@ +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__ + rc = await self.task(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__ + return await task_method(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build + setup_py_data = get_setup_data(self.context.pkg, env) + File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data + return dict(pkg.metadata[key](env)) + File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter + return get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information + _setup_information_cache[hashable_env] = _get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information + result = subprocess.run( + File "/usr/lib/python3.10/subprocess.py", line 526, in run + raise CalledProcessError(retcode, process.args, +subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1. diff --git a/log/build_2023-08-18_09-00-46/rmp220_middleware/streams.log b/log/build_2023-08-18_09-00-46/rmp220_middleware/streams.log new file mode 100644 index 0000000..05f6cfb --- /dev/null +++ b/log/build_2023-08-18_09-00-46/rmp220_middleware/streams.log @@ -0,0 +1,18 @@ +[0.271s] Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/colcon_core/executor/__init__.py", line 91, in __call__ + rc = await self.task(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_core/task/__init__.py", line 93, in __call__ + return await task_method(*args, **kwargs) + File "/usr/lib/python3/dist-packages/colcon_ros/task/ament_python/build.py", line 51, in build + setup_py_data = get_setup_data(self.context.pkg, env) + File "/usr/lib/python3/dist-packages/colcon_core/task/python/__init__.py", line 20, in get_setup_data + return dict(pkg.metadata[key](env)) + File "/usr/lib/python3/dist-packages/colcon_ros/package_augmentation/ros_ament_python.py", line 57, in getter + return get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 241, in get_setup_information + _setup_information_cache[hashable_env] = _get_setup_information( + File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 288, in _get_setup_information + result = subprocess.run( + File "/usr/lib/python3.10/subprocess.py", line 526, in run + raise CalledProcessError(retcode, process.args, +subprocess.CalledProcessError: Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError): from setuptools.extern.packaging.specifiers import SpecifierSet");exec("with suppress(ImportError): from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup( \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = { key: value for key, value in dist.__dict__.items() if ( not key.startswith(\'_\') and not callable(value) and key not in skip_keys and key not in dist.display_option_names )};data[\'metadata\'] = { k: v for k, v in dist.metadata.__dict__.items() if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1. diff --git a/log/build_2023-08-18_09-01-39/events.log b/log/build_2023-08-18_09-01-39/events.log new file mode 100644 index 0000000..ab7392f --- /dev/null +++ b/log/build_2023-08-18_09-01-39/events.log @@ -0,0 +1,69 @@ +[0.000000] (-) TimerEvent: {} +[0.000413] (rmp220_middleware) JobQueued: {'identifier': 'rmp220_middleware', 'dependencies': OrderedDict()} +[0.000439] (rmp220_middleware) JobStarted: {'identifier': 'rmp220_middleware'} +[0.099652] (-) TimerEvent: {} +[0.199886] (-) TimerEvent: {} +[0.300116] (-) TimerEvent: {} +[0.400352] (-) TimerEvent: {} +[0.500575] (-) TimerEvent: {} +[0.600806] (-) TimerEvent: {} +[0.701023] (-) TimerEvent: {} +[0.801235] (-) TimerEvent: {} +[0.901466] (-) TimerEvent: {} +[1.001719] (-) TimerEvent: {} +[1.101977] (-) TimerEvent: {} +[1.202222] (-) TimerEvent: {} +[1.302471] (-) TimerEvent: {} +[1.402737] (-) TimerEvent: {} +[1.503005] (-) TimerEvent: {} +[1.603263] (-) TimerEvent: {} +[1.703546] (-) TimerEvent: {} +[1.766621] (rmp220_middleware) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', 'build/rmp220_middleware', 'build', '--build-base', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build', 'install', '--record', '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log', '--single-version-externally-managed'], 'cwd': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'env': {'GJS_DEBUG_TOPICS': 'JS ERROR;JS LOG', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'bjorn', 'GIO_MODULE_DIR': '/home/bjorn/snap/code/common/.cache/gio-modules', 'XDG_SESSION_TYPE': 'x11', 'GIT_ASKPASS': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass.sh', 'GTK_EXE_PREFIX_VSCODE_SNAP_ORIG': '', 'GDK_BACKEND_VSCODE_SNAP_ORIG': '', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/usr/lib/x86_64-linux-gnu/gazebo-11/plugins:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib', 'HOME': '/home/bjorn', 'CHROME_DESKTOP': 'code-url-handler.desktop', 'LOCPATH_VSCODE_SNAP_ORIG': '', 'TERM_PROGRAM_VERSION': '1.81.1', 'DESKTOP_SESSION': 'ubuntu', 'GTK_PATH': '/snap/code/137/usr/lib/x86_64-linux-gnu/gtk-3.0', 'GTK_IM_MODULE_FILE': '/home/bjorn/snap/code/common/.cache/immodules/immodules.cache', 'GIO_LAUNCHED_DESKTOP_FILE': '/var/lib/snapd/desktop/applications/code_code.desktop', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'GSETTINGS_SCHEMA_DIR_VSCODE_SNAP_ORIG': '', 'VSCODE_GIT_ASKPASS_MAIN': '/snap/code/137/usr/share/code/resources/app/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/snap/code/137/usr/share/code/code', 'MANAGERPID': '2405', 'SYSTEMD_EXEC_PID': '2742', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1003/bus', 'COLORTERM': 'truecolor', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '8368', 'IM_CONFIG_PHASE': '1', 'COLCON_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install', 'ROS_DISTRO': 'humble', 'GTK_IM_MODULE': 'ibus', 'LOGNAME': 'bjorn', 'ONSHAPE_SECRET_KEY': 'XpUhDOxw7Gp7LV3wT3xDFGXeOGmk2nQmeLlysM7cQU7zv6Bz', 'JOURNAL_STREAM': '8:32520', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_CONFIG_DIRS_VSCODE_SNAP_ORIG': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_SESSION_CLASS': 'user', 'XDG_DATA_DIRS_VSCODE_SNAP_ORIG': '/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'USERNAME': 'bjorn', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'ROS_LOCALHOST_ONLY': '0', 'WINDOWPATH': '2', 'PATH': '/home/bjorn/.local/bin:/opt/ros/humble/bin:/home/bjorn/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/NUC01:@/tmp/.ICE-unix/2719,unix/NUC01:/tmp/.ICE-unix/2719', 'GTK_EXE_PREFIX': '/snap/code/137/usr', 'INVOCATION_ID': 'fb79c4fd3c1d4f7d9652c6b79482739c', 'XDG_MENU_PREFIX': 'gnome-', 'BAMF_DESKTOP_FILE_HINT': '/var/lib/snapd/desktop/applications/code_code.desktop', 'XDG_RUNTIME_DIR': '/run/user/1003', 'GDK_BACKEND': 'x11', 'DISPLAY': ':1', 'LOCPATH': '/snap/code/137/usr/lib/locale', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'Unity', 'GIO_MODULE_DIR_VSCODE_SNAP_ORIG': '', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1003/gdm/Xauthority', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'VSCODE_GIT_IPC_HANDLE': '/run/user/1003/vscode-git-c5b06e67ef.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1003/keyring/ssh', 'GSETTINGS_SCHEMA_DIR': '/home/bjorn/snap/code/137/.local/share/glib-2.0/schemas', 'AMENT_PREFIX_PATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware:/opt/ros/humble', 'ORIGINAL_XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'GTK_PATH_VSCODE_SNAP_ORIG': '', 'GTK_IM_MODULE_FILE_VSCODE_SNAP_ORIG': '', 'GPG_AGENT_INFO': '/run/user/1003/gnupg/S.gpg-agent:0:1', 'GJS_DEBUG_OUTPUT': 'stderr', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '--ms-enable-electron-run-as-node', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'ONSHAPE_ACCESS_KEY': 'twfpigMHe11VE7ZCq2NOANj7', 'XDG_DATA_DIRS': '/home/bjorn/snap/code/137/.local/share:/home/bjorn/snap/code/137:/snap/code/137/usr/share:/usr/share/ubuntu:/usr/share/gnome:/home/bjorn/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages', 'ONSHAPE_API': 'https://cad.onshape.com', 'COLCON': '1'}, 'shell': False} +[1.803654] (-) TimerEvent: {} +[1.903893] (-) TimerEvent: {} +[2.004122] (-) TimerEvent: {} +[2.104350] (-) TimerEvent: {} +[2.204607] (-) TimerEvent: {} +[2.304838] (-) TimerEvent: {} +[2.405089] (-) TimerEvent: {} +[2.427737] (rmp220_middleware) StderrLine: {'line': b"/home/bjorn/.local/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /home/bjorn/Documents/ros_projects/rmp220_middleware/rmp220_middleware/rmp220_middleware.py\n"} +[2.427884] (rmp220_middleware) StderrLine: {'line': b' tree = Parsing.p_module(s, pxd, full_module_name)\n'} +[2.485761] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning egg_info\x1b[0m\n'} +[2.486157] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO\x1b[0m\n'} +[2.486311] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt\x1b[0m\n'} +[2.486434] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt\x1b[0m\n'} +[2.486490] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt\x1b[0m\n'} +[2.486538] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mwriting top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt\x1b[0m\n'} +[2.488139] (rmp220_middleware) StdoutLine: {'line': b"\x1b[31mpackage init file 'rmp220_middleware/__init__.py' not found (or not a regular file)\x1b[0m\n"} +[2.489031] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mreading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.489634] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt'\x1b[0m\n"} +[2.489783] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build\x1b[0m\n'} +[2.489848] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build_py\x1b[0m\n'} +[2.489923] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning build_ext\x1b[0m\n'} +[2.490591] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mbuilding 'rmp220_middleware' extension\x1b[0m\n"} +[2.491877] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mC compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC\n'} +[2.491972] (rmp220_middleware) StdoutLine: {'line': b'\x1b[0m\n'} +[2.492025] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mcompile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c'\x1b[0m\n"} +[2.492075] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mx86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c\x1b[0m\n'} +[2.505156] (-) TimerEvent: {} +[2.605379] (-) TimerEvent: {} +[2.705600] (-) TimerEvent: {} +[2.805852] (-) TimerEvent: {} +[2.906105] (-) TimerEvent: {} +[3.006321] (-) TimerEvent: {} +[3.091795] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mx86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so\x1b[0m\n'} +[3.104184] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install\x1b[0m\n'} +[3.104450] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_lib\x1b[0m\n'} +[3.105015] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mcopying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages\x1b[0m\n'} +[3.105594] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_data\x1b[0m\n'} +[3.106057] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_egg_info\x1b[0m\n'} +[3.106353] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mremoving '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it)\x1b[0m\n"} +[3.106408] (-) TimerEvent: {} +[3.106610] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mCopying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info\x1b[0m\n'} +[3.107195] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mrunning install_scripts\x1b[0m\n'} +[3.108446] (rmp220_middleware) StdoutLine: {'line': b'\x1b[39mInstalling rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware\x1b[0m\n'} +[3.108651] (rmp220_middleware) StdoutLine: {'line': b"\x1b[39mwriting list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log'\x1b[0m\n"} +[3.206548] (-) TimerEvent: {} +[3.216056] (rmp220_middleware) CommandEnded: {'returncode': 0} +[3.228328] (rmp220_middleware) JobEnded: {'identifier': 'rmp220_middleware', 'rc': 0} +[3.228756] (-) EventReactorShutdown: {} diff --git a/log/build_2023-08-18_09-01-39/logger_all.log b/log/build_2023-08-18_09-01-39/logger_all.log new file mode 100644 index 0000000..301eb16 --- /dev/null +++ b/log/build_2023-08-18_09-01-39/logger_all.log @@ -0,0 +1,91 @@ +[0.363s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.364s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.383s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.383s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.383s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.383s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.383s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.384s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.384s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.384s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.397s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_python' and name 'rmp220_middleware' +[0.397s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.397s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.397s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.397s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.397s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.415s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.415s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.418s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 1 installed packages in /home/bjorn/Documents/ros_projects/rmp220_middleware/install +[0.420s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 458 installed packages in /opt/ros/humble +[0.422s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.485s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_args' from command line to 'None' +[0.485s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target' from command line to 'None' +[0.485s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.485s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_cache' from command line to 'False' +[0.486s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_clean_first' from command line to 'False' +[0.486s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'cmake_force_configure' from command line to 'False' +[0.486s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'ament_cmake_args' from command line to 'None' +[0.486s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_cmake_args' from command line to 'None' +[0.486s] Level 5:colcon.colcon_core.verb:set package 'rmp220_middleware' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.486s] DEBUG:colcon.colcon_core.verb:Building package 'rmp220_middleware' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware', 'merge_install': False, 'path': '/home/bjorn/Documents/ros_projects/rmp220_middleware', 'symlink_install': False, 'test_result_base': None} +[0.486s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.489s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.489s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' with build type 'ament_python' +[0.489s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'ament_prefix_path') +[0.495s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.495s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.ps1' +[0.496s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.dsv' +[0.496s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/ament_prefix_path.sh' +[0.498s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.498s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[1.316s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/bjorn/Documents/ros_projects/rmp220_middleware' +[1.318s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[1.318s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[2.256s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.706s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[3.710s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake module files +[3.710s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware' for CMake config files +[3.710s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib' +[3.711s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.711s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/pkgconfig/rmp220_middleware.pc' +[3.711s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages' +[3.711s] Level 1:colcon.colcon_core.shell:create_environment_hook('rmp220_middleware', 'pythonpath') +[3.712s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.ps1' +[3.713s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.dsv' +[3.713s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/hook/pythonpath.sh' +[3.713s] Level 1:colcon.colcon_core.environment:checking '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/bin' +[3.713s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(rmp220_middleware) +[3.714s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.ps1' +[3.715s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.dsv' +[3.715s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.sh' +[3.716s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.bash' +[3.716s] INFO:colcon.colcon_core.shell:Creating package script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/rmp220_middleware/package.zsh' +[3.717s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/share/colcon-core/packages/rmp220_middleware) +[3.717s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[3.717s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[3.717s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[3.717s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[3.724s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[3.724s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[3.724s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[3.731s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[3.732s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.ps1' +[3.733s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_ps1.py' +[3.734s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.ps1' +[3.735s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.sh' +[3.736s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/_local_setup_util_sh.py' +[3.736s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.sh' +[3.737s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.bash' +[3.737s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.bash' +[3.738s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/local_setup.zsh' +[3.739s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/setup.zsh' +[3.739s] INFO:colcon.colcon_core.shell:Creating '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/spawn_shell.bash' diff --git a/log/build_2023-08-18_09-01-39/rmp220_middleware/command.log b/log/build_2023-08-18_09-01-39/rmp220_middleware/command.log new file mode 100644 index 0000000..c62a331 --- /dev/null +++ b/log/build_2023-08-18_09-01-39/rmp220_middleware/command.log @@ -0,0 +1,2 @@ +Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/build_2023-08-18_09-01-39/rmp220_middleware/stderr.log b/log/build_2023-08-18_09-01-39/rmp220_middleware/stderr.log new file mode 100644 index 0000000..14f680a --- /dev/null +++ b/log/build_2023-08-18_09-01-39/rmp220_middleware/stderr.log @@ -0,0 +1,2 @@ +/home/bjorn/.local/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /home/bjorn/Documents/ros_projects/rmp220_middleware/rmp220_middleware/rmp220_middleware.py + tree = Parsing.p_module(s, pxd, full_module_name) diff --git a/log/build_2023-08-18_09-01-39/rmp220_middleware/stdout.log b/log/build_2023-08-18_09-01-39/rmp220_middleware/stdout.log new file mode 100644 index 0000000..fa88ffe --- /dev/null +++ b/log/build_2023-08-18_09-01-39/rmp220_middleware/stdout.log @@ -0,0 +1,28 @@ +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +running build_ext +building 'rmp220_middleware' extension +C compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC + +compile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c' +x86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c +x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_09-01-39/rmp220_middleware/stdout_stderr.log b/log/build_2023-08-18_09-01-39/rmp220_middleware/stdout_stderr.log new file mode 100644 index 0000000..4ce2ea2 --- /dev/null +++ b/log/build_2023-08-18_09-01-39/rmp220_middleware/stdout_stderr.log @@ -0,0 +1,30 @@ +/home/bjorn/.local/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /home/bjorn/Documents/ros_projects/rmp220_middleware/rmp220_middleware/rmp220_middleware.py + tree = Parsing.p_module(s, pxd, full_module_name) +running egg_info +writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +running build +running build_py +running build_ext +building 'rmp220_middleware' extension +C compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC + +compile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c' +x86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c +x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so +running install +running install_lib +copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages +running install_data +running install_egg_info +removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +running install_scripts +Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' diff --git a/log/build_2023-08-18_09-01-39/rmp220_middleware/streams.log b/log/build_2023-08-18_09-01-39/rmp220_middleware/streams.log new file mode 100644 index 0000000..dce4c51 --- /dev/null +++ b/log/build_2023-08-18_09-01-39/rmp220_middleware/streams.log @@ -0,0 +1,32 @@ +[1.767s] Invoking command in '/home/bjorn/Documents/ros_projects/rmp220_middleware': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed +[2.427s] /home/bjorn/.local/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /home/bjorn/Documents/ros_projects/rmp220_middleware/rmp220_middleware/rmp220_middleware.py +[2.427s] tree = Parsing.p_module(s, pxd, full_module_name) +[2.485s] running egg_info +[2.486s] writing build/rmp220_middleware/rmp220_middleware.egg-info/PKG-INFO +[2.486s] writing dependency_links to build/rmp220_middleware/rmp220_middleware.egg-info/dependency_links.txt +[2.486s] writing entry points to build/rmp220_middleware/rmp220_middleware.egg-info/entry_points.txt +[2.486s] writing requirements to build/rmp220_middleware/rmp220_middleware.egg-info/requires.txt +[2.486s] writing top-level names to build/rmp220_middleware/rmp220_middleware.egg-info/top_level.txt +[2.488s] package init file 'rmp220_middleware/__init__.py' not found (or not a regular file) +[2.489s] reading manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.489s] writing manifest file 'build/rmp220_middleware/rmp220_middleware.egg-info/SOURCES.txt' +[2.489s] running build +[2.489s] running build_py +[2.490s] running build_ext +[2.490s] building 'rmp220_middleware' extension +[2.491s] C compiler: x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC +[2.492s]  +[2.492s] compile options: '-I/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/include -I/usr/include/python3.10 -c' +[2.492s] x86_64-linux-gnu-gcc: rmp220_middleware/rmp220_middleware.c +[3.091s] x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/temp.linux-x86_64-3.10/rmp220_middleware/rmp220_middleware.o -o /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so +[3.104s] running install +[3.104s] running install_lib +[3.105s] copying /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build/lib.linux-x86_64-3.10/rmp220_middleware.cpython-310-x86_64-linux-gnu.so -> /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages +[3.105s] running install_data +[3.106s] running install_egg_info +[3.106s] removing '/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info' (and everything under it) +[3.106s] Copying build/rmp220_middleware/rmp220_middleware.egg-info to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages/rmp220_middleware-0.0.0-py3.10.egg-info +[3.107s] running install_scripts +[3.108s] Installing rmp220_middleware script to /home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/rmp220_middleware +[3.108s] writing list of installed files to '/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log' +[3.216s] Invoked command in '/home/bjorn/Documents/ros_projects/rmp220_middleware' returned '0': PYTHONPATH=/home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/prefix_override:/home/bjorn/Documents/ros_projects/rmp220_middleware/install/rmp220_middleware/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base build/rmp220_middleware build --build-base /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/build install --record /home/bjorn/Documents/ros_projects/rmp220_middleware/build/rmp220_middleware/install.log --single-version-externally-managed diff --git a/log/latest b/log/latest new file mode 120000 index 0000000..b57d247 --- /dev/null +++ b/log/latest @@ -0,0 +1 @@ +latest_build \ No newline at end of file diff --git a/log/latest_build b/log/latest_build new file mode 120000 index 0000000..9da5ed2 --- /dev/null +++ b/log/latest_build @@ -0,0 +1 @@ +build_2023-08-18_09-01-39 \ No newline at end of file diff --git a/rmp220_middleware/__pycache__/__init__.cpython-310.pyc b/rmp220_middleware/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e09dd6603f25d8e020c26b8aaba47c5af4e18eda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmd1j<>g`kf+Zr?Qb6=$5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;x_kenx(7s(w;d zeo>yjOMY@`Zfaghv3^m0aeP5hepYHSh?84jWMmMZo0*c5lUklw1XNy{nUjJ=98+a{ gd}dx|NqoFsLFFwDo80`A(wtN~kQ<7bfCLKz08$w=!vFvP diff --git a/rmp220_middleware/__pycache__/rmp220_middleware.cpython-310.pyc b/rmp220_middleware/__pycache__/rmp220_middleware.cpython-310.pyc deleted file mode 100644 index 2ba5da2ca496dd6d1e476f017fdb56494fd0bb59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 zcmaJ^&2JmW6`$E%l1p+)Q6E-qrGaT6t+QxKwQk_LMi8sE95?;o!Ezgvhb}12np$eP zE6*$~i%?E7kW2FiwCF(sdZ=%`7U+M`+g@`BbSscs(Zv0|*(F7aPM4TBGw;pkd++z& zFs{`q4BuZ1sd#*au`j4I`&sC0p{T!s2qt*QI#e4W9~vElQ`-#9q1CZ;+X@TAVyCFv zg|IZVJGO2Y!}74wspxhotPY)yquV^Jb!vLudZ(`IrOwhLCTvlD$wb+&oS2;k`V~<{ zzv>(4FN-DNh}uiuS@BmzeczCe{go4j_4tl1ZsQ!MWo?(IRy!6x)%W8#L|u4t7^nmd z^Ox}v@gGK`A?o$VvD)#I2YX$m0`)NJ?uPz@q3F>%vmZxi3q`Gg_^iVP>llJ}Oks2^ zVeT;3N((zlH}NG6Jtxw33#sjSQFrKjURv?IVJt==wH?oUHtL4C#NPgR=jZo-{ct-i zJ#6d7D<+q)fF}P@n|txl-`pLcyVeQFzIqL|OvQ!cnLUfNKQDXfVhZ<8+B2XMFn+9RE2}u{)}0yQ-&gIX+taWH{IS|5cy=t9;tKkQJYRhJF9xOJzC-uB;{(TSrUQL3bkCi;-_r@RW`0{zs^P5qeG`r8cK}hcZUh}XUBtg_~ zK8k%Q)v=whLkyO9>u=)ji*gCGhL&(lsMYd8@^bnUd1pD1ng zq)&P{8106E+ViEPAe2@o_Xj^+&Bv(GuIkC)APM3K6LSsqx?#B6?d@O8!8lo*Tt?TMySRrE<5{eyZJ;do0l$-6A*7CW%FaRKBiMF{iuX!(%r47=k z2X#X2TH|S@4>N^vzmILLAbJ|VLQGPA_!M>7!#uHR z*7zE4aNDwtx>@J=y})q5ZbKy=1F1(1%p2e%)Xr`E9s z72LJ}mo5rp>b7S4$#_+VOLCO_*6@l~rA!f}$NsYsw3Tj9oLclr(xP;+Yg!?zcwKcA z_2du0kaU(;hHR10l>W1eP$)?gX+3kriIcw%-d7Z^Y+mFJU*Y5H3ksN@@vUl*KgKey z+5Tv}wjC&7Vg7FN7R2&4k!f_!j+>tZ;i_o|T2D)7g0zMn2K= z3i-U>(Fx}EE9Udcv>%1BNpVZ<-2d)2^IX<^7a3P2L2utZCydB4NN%HV5=YIO z2nsT}>7G-BAK%d0yW5;3$mYA#VSb3jchhw%a)TBn2hd?fHmOx7GW8~T2i>%^tG7^+ ztm94`Y^eH|tSN6mzJ;P_<#lAfI?Bde4FG;UetW^Tvq5IgumrRT*wkOpnK9B&$*>cs z0eqCV_@Fo_2{QZl$P|Ne)=nxX?9&M}H5enxTNkq_%Tac_%*ocX_L+K+uZOn$#WC$x zCF9Y`leSxE%T=5)&l}UmJ6rvq=vlhXaTg`Bh#t>fAvLq;l1$aL34e^KA0;mqML++2qpGK9QGgmf&wPvnP0=3|z8 z2RwnIU$l-{(f(cGby6&%sP*~{adbXE0(uCb(UNda8BF~VBw+(MwBVoXhajNB z$D894@|v0Du}@f3wpd~vZE(ab&VJ9L#v%KJ9dnAKh@AYiNHu0?>ynlJzx3N?9wNZ# zzad@OSFW8FWG_58qD&to`XWg72SJoB|H?nwjk{8O9O0jX933QDbEzYcJ0%_|^cYNS zwKqycd>A2WeS~|a7O^iGG_{7^Ad;jDGA+TxLgaEljn~F&JQC10{%adl+uzu{!X?3q z-exq@^IYC`*W@GORrGmVdK*%6>Zn8zI8}=fO1Mdv`#%1cB=YEjuODnn%8wMDI@8hm z0cQF5!zC%Irx?&b?B>&ye4f1+ig;bU2$Hm@f_~HuQ&SzOEUc5^^-(i-yYOS((r*I$ igY3W6hlFa?1hEYY6_cNB+VJm&(Xc9iu$vWl_x}LMdZ#P^ diff --git a/rmp220_middleware/rmp220_middleware.c b/rmp220_middleware/rmp220_middleware.c new file mode 100644 index 0000000..9993e1c --- /dev/null +++ b/rmp220_middleware/rmp220_middleware.c @@ -0,0 +1,7046 @@ +/* Generated by Cython 3.0.0 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "name": "rmp220_middleware", + "sources": [ + "rmp220_middleware/rmp220_middleware.py" + ] + }, + "module_name": "rmp220_middleware" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +#if defined(CYTHON_LIMITED_API) && 0 + #ifndef Py_LIMITED_API + #if CYTHON_LIMITED_API+0 > 0x03030000 + #define Py_LIMITED_API CYTHON_LIMITED_API + #else + #define Py_LIMITED_API 0x03030000 + #endif + #endif +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.7+ or Python 3.3+. +#else +#define CYTHON_ABI "3_0_0" +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." +#define CYTHON_HEX_VERSION 0x030000F0 +#define CYTHON_FUTURE_DIVISION 1 +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif +#elif defined(CYTHON_LIMITED_API) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 1 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif +#elif defined(PY_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03050000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #if PY_VERSION_HEX < 0x030400a1 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #elif !defined(CYTHON_USE_TP_FINALIZE) + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #if PY_VERSION_HEX < 0x030600B1 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) + #endif + #if PY_VERSION_HEX < 0x030700A3 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if !defined(CYTHON_VECTORCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_DefaultClassType PyClass_Type + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_DefaultClassType PyType_Type +#if PY_VERSION_HEX >= 0x030B00A1 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; + PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *empty=NULL; + const char *fn_cstr=NULL; + const char *name_cstr=NULL; + PyCodeObject *co=NULL, *result=NULL; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + if (!(kwds=PyDict_New())) goto end; + if (!(argcount=PyLong_FromLong(a))) goto end; + if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; + if (!(posonlyargcount=PyLong_FromLong(p))) goto end; + if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; + if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; + if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; + if (!(nlocals=PyLong_FromLong(l))) goto end; + if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; + if (!(stacksize=PyLong_FromLong(s))) goto end; + if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; + if (!(flags=PyLong_FromLong(f))) goto end; + if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; + if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; + if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; + if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; + if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto end; + if (!(empty = PyTuple_New(0))) goto end; + result = (PyCodeObject*) PyObject_Call(replace, empty, kwds); + end: + Py_XDECREF((PyObject*) co); + Py_XDECREF(kwds); + Py_XDECREF(argcount); + Py_XDECREF(posonlyargcount); + Py_XDECREF(kwonlyargcount); + Py_XDECREF(nlocals); + Py_XDECREF(stacksize); + Py_XDECREF(replace); + Py_XDECREF(empty); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +#endif +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 +#endif +#ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_VERSION_HEX < 0x030900B1 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x03060000 + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#elif PY_VERSION_HEX >= 0x03000000 + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_Current +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) +#endif +#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) +#include "pythread.h" +#define Py_tss_NEEDS_INIT 0 +typedef int Py_tss_t; +static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { + *key = PyThread_create_key(); + return 0; +} +static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { + Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); + *key = Py_tss_NEEDS_INIT; + return key; +} +static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { + PyObject_Free(key); +} +static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { + return *key != Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { + PyThread_delete_key(*key); + *key = Py_tss_NEEDS_INIT; +} +static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { + return PyThread_set_key_value(*key, value); +} +static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { + return PyThread_get_key_value(*key); +} +#endif +#if PY_MAJOR_VERSION < 3 + #if CYTHON_COMPILING_IN_PYPY + #if PYPY_VERSION_NUM < 0x07030600 + #if defined(__cplusplus) && __cplusplus >= 201402L + [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] + #elif defined(__GNUC__) || defined(__clang__) + __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) + #elif defined(_MSC_VER) + __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) + #endif + static CYTHON_INLINE int PyGILState_Check(void) { + return 0; + } + #else // PYPY_VERSION_NUM < 0x07030600 + #endif // PYPY_VERSION_NUM < 0x07030600 + #else + static CYTHON_INLINE int PyGILState_Check(void) { + PyThreadState * tstate = _PyThreadState_Current; + return tstate && (tstate == PyGILState_GetThisThreadState()); + } + #endif +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) + #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) + #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next +#endif +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE(obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) + #undef PyUnicode_Contains + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode + #define PyObject_Unicode PyObject_Str +#endif +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) +#else + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define __Pyx_Py3Int_Check(op) PyLong_Check(op) + #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#else + #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) + #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef __Pyx_PyAsyncMethodsStruct + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; +#endif + +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__rmp220_middleware +#define __PYX_HAVE_API__rmp220_middleware +/* Early includes */ +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const wchar_t *u) +{ + const wchar_t *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#else +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) +{ + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#endif +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else // Py < 3.12 + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = (char) c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char *__pyx_f[] = { + "rmp220_middleware/rmp220_middleware.py", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) + #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() +#endif + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_Arg_FASTCALL(args, i) args[i] + #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) +#else + #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) +#else +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, + const char* function_name); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +#endif + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* IncludeStructmemberH.proto */ +#include + +/* FixUpExtensionType.proto */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); +#endif + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* FetchCommonType.proto */ +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); +#else +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); +#endif + +/* PyMethodNew.proto */ +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#else + #define __Pyx_PyMethod_New PyMethod_New +#endif + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL + __pyx_vectorcallfunc func_vectorcall; +#endif +#if PY_VERSION_HEX < 0x030500A0 + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 + PyObject *func_classobj; +#endif + void *defaults; + int defaults_pyobjects; + size_t defaults_size; // used by FusedFunction for copying defaults + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) +#define __Pyx_IsCyOrPyCFunction(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* StrEquals.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals +#else +#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals +#endif + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* CLineInTraceback.proto */ +#ifdef CYTHON_CLINE_IN_TRACEBACK +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#else +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#endif + +/* CodeObjectCache.proto */ +#if !CYTHON_COMPILING_IN_LIMITED_API +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); +#endif + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#else +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + +/* #### Code section: module_declarations ### */ + +/* Module declarations from "rmp220_middleware" */ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "rmp220_middleware" +extern int __pyx_module_is_main_rmp220_middleware; +int __pyx_module_is_main_rmp220_middleware = 0; + +/* Implementation of "rmp220_middleware" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_KeyboardInterrupt; +/* #### Code section: string_decls ### */ +static const char __pyx_k_[] = "*"; +static const char __pyx_k__2[] = "."; +static const char __pyx_k__6[] = "?"; +static const char __pyx_k_args[] = "args"; +static const char __pyx_k_init[] = "init"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_node[] = "node"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_spin[] = "spin"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_rclpy[] = "rclpy"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_main_2[] = "main"; +static const char __pyx_k_shutdown[] = "shutdown"; +static const char __pyx_k_destroy_node[] = "destroy_node"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_disable_chassis[] = "disable_chassis"; +static const char __pyx_k_StateMachineNode[] = "StateMachineNode"; +static const char __pyx_k_KeyboardInterrupt[] = "KeyboardInterrupt"; +static const char __pyx_k_rmp220_middleware[] = "rmp220_middleware"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_rmp220_middleware_rmp220_middlew[] = "rmp220_middleware/rmp220_middleware.py"; +/* #### Code section: decls ### */ +static PyObject *__pyx_pf_17rmp220_middleware_main(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + #if CYTHON_USE_MODULE_STATE + #endif + PyObject *__pyx_n_s_; + PyObject *__pyx_n_s_KeyboardInterrupt; + PyObject *__pyx_n_s_StateMachineNode; + PyObject *__pyx_kp_u__2; + PyObject *__pyx_n_s__6; + PyObject *__pyx_n_s_args; + PyObject *__pyx_n_s_asyncio_coroutines; + PyObject *__pyx_n_s_cline_in_traceback; + PyObject *__pyx_n_s_destroy_node; + PyObject *__pyx_n_s_disable_chassis; + PyObject *__pyx_n_s_import; + PyObject *__pyx_n_s_init; + PyObject *__pyx_n_s_initializing; + PyObject *__pyx_n_s_is_coroutine; + PyObject *__pyx_n_s_main; + PyObject *__pyx_n_s_main_2; + PyObject *__pyx_n_s_name; + PyObject *__pyx_n_s_node; + PyObject *__pyx_n_s_rclpy; + PyObject *__pyx_n_s_rmp220_middleware; + PyObject *__pyx_kp_s_rmp220_middleware_rmp220_middlew; + PyObject *__pyx_n_s_shutdown; + PyObject *__pyx_n_s_spec; + PyObject *__pyx_n_s_spin; + PyObject *__pyx_n_s_test; + PyObject *__pyx_tuple__3; + PyObject *__pyx_tuple__5; + PyObject *__pyx_codeobj__4; +} __pyx_mstate; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { + extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) + +#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) + +#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstate __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_clear(PyObject *m) { + __pyx_mstate *clear_module_state = __pyx_mstate(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + Py_CLEAR(clear_module_state->__pyx_n_s_); + Py_CLEAR(clear_module_state->__pyx_n_s_KeyboardInterrupt); + Py_CLEAR(clear_module_state->__pyx_n_s_StateMachineNode); + Py_CLEAR(clear_module_state->__pyx_kp_u__2); + Py_CLEAR(clear_module_state->__pyx_n_s__6); + Py_CLEAR(clear_module_state->__pyx_n_s_args); + Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); + Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); + Py_CLEAR(clear_module_state->__pyx_n_s_destroy_node); + Py_CLEAR(clear_module_state->__pyx_n_s_disable_chassis); + Py_CLEAR(clear_module_state->__pyx_n_s_import); + Py_CLEAR(clear_module_state->__pyx_n_s_init); + Py_CLEAR(clear_module_state->__pyx_n_s_initializing); + Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); + Py_CLEAR(clear_module_state->__pyx_n_s_main); + Py_CLEAR(clear_module_state->__pyx_n_s_main_2); + Py_CLEAR(clear_module_state->__pyx_n_s_name); + Py_CLEAR(clear_module_state->__pyx_n_s_node); + Py_CLEAR(clear_module_state->__pyx_n_s_rclpy); + Py_CLEAR(clear_module_state->__pyx_n_s_rmp220_middleware); + Py_CLEAR(clear_module_state->__pyx_kp_s_rmp220_middleware_rmp220_middlew); + Py_CLEAR(clear_module_state->__pyx_n_s_shutdown); + Py_CLEAR(clear_module_state->__pyx_n_s_spec); + Py_CLEAR(clear_module_state->__pyx_n_s_spin); + Py_CLEAR(clear_module_state->__pyx_n_s_test); + Py_CLEAR(clear_module_state->__pyx_tuple__3); + Py_CLEAR(clear_module_state->__pyx_tuple__5); + Py_CLEAR(clear_module_state->__pyx_codeobj__4); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstate *traverse_module_state = __pyx_mstate(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + Py_VISIT(traverse_module_state->__pyx_empty_tuple); + Py_VISIT(traverse_module_state->__pyx_empty_bytes); + Py_VISIT(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_n_s_); + Py_VISIT(traverse_module_state->__pyx_n_s_KeyboardInterrupt); + Py_VISIT(traverse_module_state->__pyx_n_s_StateMachineNode); + Py_VISIT(traverse_module_state->__pyx_kp_u__2); + Py_VISIT(traverse_module_state->__pyx_n_s__6); + Py_VISIT(traverse_module_state->__pyx_n_s_args); + Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); + Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); + Py_VISIT(traverse_module_state->__pyx_n_s_destroy_node); + Py_VISIT(traverse_module_state->__pyx_n_s_disable_chassis); + Py_VISIT(traverse_module_state->__pyx_n_s_import); + Py_VISIT(traverse_module_state->__pyx_n_s_init); + Py_VISIT(traverse_module_state->__pyx_n_s_initializing); + Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); + Py_VISIT(traverse_module_state->__pyx_n_s_main); + Py_VISIT(traverse_module_state->__pyx_n_s_main_2); + Py_VISIT(traverse_module_state->__pyx_n_s_name); + Py_VISIT(traverse_module_state->__pyx_n_s_node); + Py_VISIT(traverse_module_state->__pyx_n_s_rclpy); + Py_VISIT(traverse_module_state->__pyx_n_s_rmp220_middleware); + Py_VISIT(traverse_module_state->__pyx_kp_s_rmp220_middleware_rmp220_middlew); + Py_VISIT(traverse_module_state->__pyx_n_s_shutdown); + Py_VISIT(traverse_module_state->__pyx_n_s_spec); + Py_VISIT(traverse_module_state->__pyx_n_s_spin); + Py_VISIT(traverse_module_state->__pyx_n_s_test); + Py_VISIT(traverse_module_state->__pyx_tuple__3); + Py_VISIT(traverse_module_state->__pyx_tuple__5); + Py_VISIT(traverse_module_state->__pyx_codeobj__4); + return 0; +} +#endif +/* #### Code section: module_state_defines ### */ +#define __pyx_d __pyx_mstate_global->__pyx_d +#define __pyx_b __pyx_mstate_global->__pyx_b +#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime +#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple +#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes +#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode +#ifdef __Pyx_CyFunction_USED +#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType +#endif +#ifdef __Pyx_FusedFunction_USED +#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType +#endif +#ifdef __Pyx_Generator_USED +#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType +#endif +#ifdef __Pyx_IterableCoroutine_USED +#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType +#endif +#ifdef __Pyx_Coroutine_USED +#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType +#endif +#if CYTHON_USE_MODULE_STATE +#endif +#define __pyx_n_s_ __pyx_mstate_global->__pyx_n_s_ +#define __pyx_n_s_KeyboardInterrupt __pyx_mstate_global->__pyx_n_s_KeyboardInterrupt +#define __pyx_n_s_StateMachineNode __pyx_mstate_global->__pyx_n_s_StateMachineNode +#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 +#define __pyx_n_s__6 __pyx_mstate_global->__pyx_n_s__6 +#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args +#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines +#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback +#define __pyx_n_s_destroy_node __pyx_mstate_global->__pyx_n_s_destroy_node +#define __pyx_n_s_disable_chassis __pyx_mstate_global->__pyx_n_s_disable_chassis +#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import +#define __pyx_n_s_init __pyx_mstate_global->__pyx_n_s_init +#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing +#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine +#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main +#define __pyx_n_s_main_2 __pyx_mstate_global->__pyx_n_s_main_2 +#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name +#define __pyx_n_s_node __pyx_mstate_global->__pyx_n_s_node +#define __pyx_n_s_rclpy __pyx_mstate_global->__pyx_n_s_rclpy +#define __pyx_n_s_rmp220_middleware __pyx_mstate_global->__pyx_n_s_rmp220_middleware +#define __pyx_kp_s_rmp220_middleware_rmp220_middlew __pyx_mstate_global->__pyx_kp_s_rmp220_middleware_rmp220_middlew +#define __pyx_n_s_shutdown __pyx_mstate_global->__pyx_n_s_shutdown +#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec +#define __pyx_n_s_spin __pyx_mstate_global->__pyx_n_s_spin +#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test +#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3 +#define __pyx_tuple__5 __pyx_mstate_global->__pyx_tuple__5 +#define __pyx_codeobj__4 __pyx_mstate_global->__pyx_codeobj__4 +/* #### Code section: module_code ### */ + +/* "rmp220_middleware.py":6 + * from rmp220_middleware import StateMachineNode + * + * def main(args=None): # <<<<<<<<<<<<<< + * rclpy.init(args=args) + * node = StateMachineNode() + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_17rmp220_middleware_1main(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyMethodDef __pyx_mdef_17rmp220_middleware_1main = {"main", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_17rmp220_middleware_1main, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_17rmp220_middleware_1main(PyObject *__pyx_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + PyObject *__pyx_v_args = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("main (wrapper)", 0); + { + PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,0}; + PyObject* values[1] = {0}; + values[0] = ((PyObject *)((PyObject *)Py_None)); + if (__pyx_kwds) { + Py_ssize_t kw_args; + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); + switch (__pyx_nargs) { + case 0: + if (kw_args > 0) { + PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args); + if (value) { values[0] = value; kw_args--; } + else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "main") < 0)) __PYX_ERR(0, 6, __pyx_L3_error) + } + } else { + switch (__pyx_nargs) { + case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_args = values[0]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("main", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 6, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("rmp220_middleware.main", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_17rmp220_middleware_main(__pyx_self, __pyx_v_args); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_17rmp220_middleware_main(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_args) { + PyObject *__pyx_v_node = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + char const *__pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_t_13; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("main", 0); + + /* "rmp220_middleware.py":7 + * + * def main(args=None): + * rclpy.init(args=args) # <<<<<<<<<<<<<< + * node = StateMachineNode() + * try: + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_rclpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_args, __pyx_v_args) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":8 + * def main(args=None): + * rclpy.init(args=args) + * node = StateMachineNode() # <<<<<<<<<<<<<< + * try: + * rclpy.spin(node) + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StateMachineNode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + { + PyObject *__pyx_callargs[1] = {__pyx_t_2, }; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __pyx_v_node = __pyx_t_3; + __pyx_t_3 = 0; + + /* "rmp220_middleware.py":9 + * rclpy.init(args=args) + * node = StateMachineNode() + * try: # <<<<<<<<<<<<<< + * rclpy.spin(node) + * except KeyboardInterrupt: + */ + /*try:*/ { + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + /*try:*/ { + + /* "rmp220_middleware.py":10 + * node = StateMachineNode() + * try: + * rclpy.spin(node) # <<<<<<<<<<<<<< + * except KeyboardInterrupt: + * pass + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_rclpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_spin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_node}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":9 + * rclpy.init(args=args) + * node = StateMachineNode() + * try: # <<<<<<<<<<<<<< + * rclpy.spin(node) + * except KeyboardInterrupt: + */ + } + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + goto __pyx_L11_try_end; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":11 + * try: + * rclpy.spin(node) + * except KeyboardInterrupt: # <<<<<<<<<<<<<< + * pass + * finally: + */ + __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyboardInterrupt); + if (__pyx_t_4) { + __Pyx_ErrRestore(0,0,0); + goto __pyx_L7_exception_handled; + } + goto __pyx_L8_except_error; + + /* "rmp220_middleware.py":9 + * rclpy.init(args=args) + * node = StateMachineNode() + * try: # <<<<<<<<<<<<<< + * rclpy.spin(node) + * except KeyboardInterrupt: + */ + __pyx_L8_except_error:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + goto __pyx_L4_error; + __pyx_L7_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7); + __pyx_L11_try_end:; + } + } + + /* "rmp220_middleware.py":14 + * pass + * finally: + * node.disable_chassis() # <<<<<<<<<<<<<< + * node.destroy_node() + * rclpy.shutdown() + */ + /*finally:*/ { + /*normal exit:*/{ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_disable_chassis); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + { + PyObject *__pyx_callargs[1] = {__pyx_t_1, }; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":15 + * finally: + * node.disable_chassis() + * node.destroy_node() # <<<<<<<<<<<<<< + * rclpy.shutdown() + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_destroy_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_4 = 1; + } + } + { + PyObject *__pyx_callargs[1] = {__pyx_t_1, }; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":16 + * node.disable_chassis() + * node.destroy_node() + * rclpy.shutdown() # <<<<<<<<<<<<<< + * + * if __name__ == '__main__': + */ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_rclpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_4 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_4 = 1; + } + } + { + PyObject *__pyx_callargs[1] = {__pyx_t_2, }; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L5; + } + __pyx_L4_error:; + /*exception exit:*/{ + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + __pyx_t_4 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename; + { + + /* "rmp220_middleware.py":14 + * pass + * finally: + * node.disable_chassis() # <<<<<<<<<<<<<< + * node.destroy_node() + * rclpy.shutdown() + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_disable_chassis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L13_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + __pyx_t_13 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_13 = 1; + } + } + { + PyObject *__pyx_callargs[1] = {__pyx_t_2, }; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_13, 0+__pyx_t_13); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L13_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":15 + * finally: + * node.disable_chassis() + * node.destroy_node() # <<<<<<<<<<<<<< + * rclpy.shutdown() + * + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_destroy_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L13_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + __pyx_t_13 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_13 = 1; + } + } + { + PyObject *__pyx_callargs[1] = {__pyx_t_2, }; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_13, 0+__pyx_t_13); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 15, __pyx_L13_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":16 + * node.disable_chassis() + * node.destroy_node() + * rclpy.shutdown() # <<<<<<<<<<<<<< + * + * if __name__ == '__main__': + */ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_rclpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L13_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L13_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + __pyx_t_13 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_13 = 1; + } + } + { + PyObject *__pyx_callargs[1] = {__pyx_t_1, }; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_13, 0+__pyx_t_13); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L13_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + } + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_5); + __Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5); + __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; + __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9; + goto __pyx_L1_error; + __pyx_L13_error:; + if (PY_MAJOR_VERSION >= 3) { + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); + } + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; + goto __pyx_L1_error; + } + __pyx_L5:; + } + + /* "rmp220_middleware.py":6 + * from rmp220_middleware import StateMachineNode + * + * def main(args=None): # <<<<<<<<<<<<<< + * rclpy.init(args=args) + * node = StateMachineNode() + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("rmp220_middleware.main", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_node); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif +/* #### Code section: pystring_table ### */ + +static int __Pyx_CreateStringTabAndInitStrings(void) { + __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_n_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 1}, + {&__pyx_n_s_KeyboardInterrupt, __pyx_k_KeyboardInterrupt, sizeof(__pyx_k_KeyboardInterrupt), 0, 0, 1, 1}, + {&__pyx_n_s_StateMachineNode, __pyx_k_StateMachineNode, sizeof(__pyx_k_StateMachineNode), 0, 0, 1, 1}, + {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, + {&__pyx_n_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 1}, + {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, + {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_destroy_node, __pyx_k_destroy_node, sizeof(__pyx_k_destroy_node), 0, 0, 1, 1}, + {&__pyx_n_s_disable_chassis, __pyx_k_disable_chassis, sizeof(__pyx_k_disable_chassis), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, + {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, + {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1}, + {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, + {&__pyx_n_s_node, __pyx_k_node, sizeof(__pyx_k_node), 0, 0, 1, 1}, + {&__pyx_n_s_rclpy, __pyx_k_rclpy, sizeof(__pyx_k_rclpy), 0, 0, 1, 1}, + {&__pyx_n_s_rmp220_middleware, __pyx_k_rmp220_middleware, sizeof(__pyx_k_rmp220_middleware), 0, 0, 1, 1}, + {&__pyx_kp_s_rmp220_middleware_rmp220_middlew, __pyx_k_rmp220_middleware_rmp220_middlew, sizeof(__pyx_k_rmp220_middleware_rmp220_middlew), 0, 0, 1, 0}, + {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1}, + {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, + {&__pyx_n_s_spin, __pyx_k_spin, sizeof(__pyx_k_spin), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} + }; + return __Pyx_InitStrings(__pyx_string_tab); +} +/* #### Code section: cached_builtins ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_KeyboardInterrupt = __Pyx_GetBuiltinName(__pyx_n_s_KeyboardInterrupt); if (!__pyx_builtin_KeyboardInterrupt) __PYX_ERR(0, 11, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "rmp220_middleware.py":6 + * from rmp220_middleware import StateMachineNode + * + * def main(args=None): # <<<<<<<<<<<<<< + * rclpy.init(args=args) + * node = StateMachineNode() + */ + __pyx_tuple__3 = PyTuple_Pack(2, __pyx_n_s_args, __pyx_n_s_node); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); + __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_rmp220_middleware_rmp220_middlew, __pyx_n_s_main_2, 6, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 6, __pyx_L1_error) + __pyx_tuple__5 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { + if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_globals ### */ + +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { + return 0; +} +/* #### Code section: init_module ### */ + +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ + +static int __Pyx_modinit_global_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_init_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_type_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + + +#if PY_MAJOR_VERSION >= 3 +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_rmp220_middleware(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_rmp220_middleware}, + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "rmp220_middleware", + 0, /* m_doc */ + #if CYTHON_PEP489_MULTI_PHASE_INIT + 0, /* m_size */ + #elif CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstate), /* m_size */ + #else + -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif +#endif + +#ifndef CYTHON_NO_PYINIT_EXPORT +#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void +#endif +#else +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * +#else +#define __Pyx_PyMODINIT_FUNC PyObject * +#endif +#endif + + +#if PY_MAJOR_VERSION < 3 +__Pyx_PyMODINIT_FUNC initrmp220_middleware(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC initrmp220_middleware(void) +#else +__Pyx_PyMODINIT_FUNC PyInit_rmp220_middleware(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_rmp220_middleware(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + #if PY_VERSION_HEX >= 0x030700A1 + static PY_INT64_T main_interpreter_id = -1; + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return (unlikely(current_id == -1)) ? -1 : 0; + } else if (unlikely(main_interpreter_id != current_id)) + #else + static PyInterpreterState *main_interpreter = NULL; + PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; + if (!main_interpreter) { + main_interpreter = current_interpreter; + } else if (unlikely(main_interpreter != current_interpreter)) + #endif + { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) +#else +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +#endif +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { +#if CYTHON_COMPILING_IN_LIMITED_API + result = PyModule_AddObject(module, to_name, value); +#else + result = PyDict_SetItemString(moddict, to_name, value); +#endif + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + if (__Pyx_check_single_interpreter()) + return NULL; + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + moddict = module; +#else + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; +#endif + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_rmp220_middleware(PyObject *__pyx_pyinit_module) +#endif +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'rmp220_middleware' has already been imported. Re-initialisation is not supported."); + return -1; + } + #elif PY_MAJOR_VERSION >= 3 + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; + Py_INCREF(__pyx_m); + #else + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("rmp220_middleware", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #elif CYTHON_USE_MODULE_STATE + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to rmp220_middleware pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #endif + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_b); + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_cython_runtime); + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_rmp220_middleware(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_rmp220_middleware) { + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "rmp220_middleware")) { + if (unlikely((PyDict_SetItemString(modules, "rmp220_middleware", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(); + (void)__Pyx_modinit_variable_export_code(); + (void)__Pyx_modinit_function_export_code(); + (void)__Pyx_modinit_type_init_code(); + (void)__Pyx_modinit_type_import_code(); + (void)__Pyx_modinit_variable_import_code(); + (void)__Pyx_modinit_function_import_code(); + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "rmp220_middleware.py":3 + * # main.py + * + * import rclpy # <<<<<<<<<<<<<< + * from rmp220_middleware import StateMachineNode + * + */ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_rclpy, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_rclpy, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "rmp220_middleware.py":4 + * + * import rclpy + * from rmp220_middleware import StateMachineNode # <<<<<<<<<<<<<< + * + * def main(args=None): + */ + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_n_s_StateMachineNode); + __Pyx_GIVEREF(__pyx_n_s_StateMachineNode); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_StateMachineNode); + __pyx_t_3 = __Pyx_Import(__pyx_n_s_rmp220_middleware, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_StateMachineNode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_StateMachineNode, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":6 + * from rmp220_middleware import StateMachineNode + * + * def main(args=None): # <<<<<<<<<<<<<< + * rclpy.init(args=args) + * node = StateMachineNode() + */ + __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_17rmp220_middleware_1main, 0, __pyx_n_s_main_2, NULL, __pyx_n_s_rmp220_middleware, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__5); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_main_2, __pyx_t_3) < 0) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "rmp220_middleware.py":18 + * rclpy.shutdown() + * + * if __name__ == '__main__': # <<<<<<<<<<<<<< + * main() + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_main, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_4) { + + /* "rmp220_middleware.py":19 + * + * if __name__ == '__main__': + * main() # <<<<<<<<<<<<<< + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_main_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "rmp220_middleware.py":18 + * rclpy.shutdown() + * + * if __name__ == '__main__': # <<<<<<<<<<<<<< + * main() + */ + } + + /* "rmp220_middleware.py":1 + * # main.py # <<<<<<<<<<<<<< + * + * import rclpy + */ + __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + if (__pyx_m) { + if (__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init rmp220_middleware", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init rmp220_middleware"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #elif PY_MAJOR_VERSION >= 3 + return __pyx_m; + #else + return; + #endif +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* TupleAndListFromArray */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + Py_INCREF(__pyx_empty_tuple); + return __pyx_empty_tuple; + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); + for (i = 0; i < n; i++) + { + if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; // error + return kwvalues[i]; + } + } + return NULL; // not found (no exception set) +} +#endif + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject *const *kwvalues, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); + while (1) { + if (kwds_is_tuple) { + if (pos >= PyTuple_GET_SIZE(kwds)) break; + key = PyTuple_GET_ITEM(kwds, pos); + value = kwvalues[pos]; + pos++; + } + else + { + if (!PyDict_Next(kwds, &pos, &key, &value)) break; + } + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + continue; + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = ( + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key) + ); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + #if PY_MAJOR_VERSION < 3 + PyErr_Format(PyExc_TypeError, + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 + result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } else if (unlikely(PyErr_Occurred())) { + return NULL; + } +#elif CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } +#else + result = PyDict_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } +#endif +#else + result = PyObject_GetItem(__pyx_d, name); + __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]); + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + Py_DECREF(argstuple); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { +#if defined(__Pyx_CyFunction_USED) && defined(NDEBUG) + if (__Pyx_IsCyOrPyCFunction(func)) +#else + if (PyCFunction_Check(func)) +#endif + { + if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { + return __Pyx_PyObject_CallMethO(func, NULL); + } + } + } + else if (nargs == 1 && kwargs == NULL) { + if (PyCFunction_Check(func)) + { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, args[0]); + } + } + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + #if PY_VERSION_HEX >= 0x030700A1 + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + #if CYTHON_VECTORCALL + vectorcallfunc f = _PyVectorcall_Function(func); + if (f) { + return f(func, args, (size_t)nargs, kwargs); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, (size_t)nargs, kwargs); + } + #endif + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); + } + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); +} + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* GetException */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C00A6 + local_value = tstate->current_exception; + tstate->current_exception = 0; + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 + if (unlikely(tstate->current_exception)) +#elif CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* Import */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + #if PY_MAJOR_VERSION < 3 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (unlikely(!py_import)) + goto bad; + if (!from_list) { + empty_list = PyList_New(0); + if (unlikely(!empty_list)) + goto bad; + from_list = empty_list; + } + #endif + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { + #if CYTHON_COMPILING_IN_LIMITED_API + module = PyImport_ImportModuleLevelObject( + name, empty_dict, empty_dict, from_list, 1); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, 1); + #endif + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_MAJOR_VERSION < 3 + PyObject *py_level = PyInt_FromLong(level); + if (unlikely(!py_level)) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); + Py_DECREF(py_level); + #else + #if CYTHON_COMPILING_IN_LIMITED_API + module = PyImport_ImportModuleLevelObject( + name, empty_dict, empty_dict, from_list, level); + #else + module = PyImport_ImportModuleLevelObject( + name, __pyx_d, empty_dict, from_list, level); + #endif + #endif + } + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_import); + #endif + return module; +} + +/* ImportDottedModule */ +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } + if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( +#if PY_MAJOR_VERSION < 3 + PyExc_ImportError, + "No module named '%s'", PyString_AS_STRING(partial_name)); +#else +#if PY_VERSION_HEX >= 0x030600B1 + PyExc_ModuleNotFoundError, +#else + PyExc_ImportError, +#endif + "No module named '%U'", partial_name); +#endif +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +#endif +#if PY_MAJOR_VERSION >= 3 +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; + nparts = PyTuple_GET_SIZE(parts_tuple); + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = PySequence_ITEM(parts_tuple, i); +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +#endif +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if PY_MAJOR_VERSION < 3 + PyObject *module, *from_list, *star = __pyx_n_s_; + CYTHON_UNUSED_VAR(parts_tuple); + from_list = PyList_New(1); + if (unlikely(!from_list)) + return NULL; + Py_INCREF(star); + PyList_SET_ITEM(from_list, 0, star); + module = __Pyx_Import(name, from_list, 0); + Py_DECREF(from_list); + return module; +#else + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +#endif +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__2); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +/* FixUpExtensionType */ +#if CYTHON_USE_TYPE_SPECS +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); +#else + const PyType_Slot *slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + int changed = 0; +#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) + const +#endif + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { +#if PY_VERSION_HEX < 0x030900b1 + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif +#else + if ((0)); +#endif +#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { + Py_DECREF(descr); + return -1; + } + Py_DECREF(descr); + changed = 1; + } +#endif + } + memb++; + } + if (changed) + PyType_Modified(type); + } +#endif + return 0; +} +#endif + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + PyObject *abi_module = PyImport_AddModule((char*) __PYX_ABI_MODULE_NAME); + if (unlikely(!abi_module)) return NULL; + Py_INCREF(abi_module); + return abi_module; +} + +/* FetchCommonType */ +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t basicsize, + Py_ssize_t expected_basicsize) { + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +#if !CYTHON_USE_TYPE_SPECS +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* abi_module; + const char* object_name; + PyTypeObject *cached_type = NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + object_name = strrchr(type->tp_name, '.'); + object_name = object_name ? object_name+1 : type->tp_name; + cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + if (__Pyx_VerifyCachedType( + (PyObject *)cached_type, + object_name, + cached_type->tp_basicsize, + type->tp_basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; +done: + Py_DECREF(abi_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#else +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module, *cached_type = NULL; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) return NULL; + cached_type = PyObject_GetAttrString(abi_module, object_name); + if (cached_type) { + Py_ssize_t basicsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; +#else + basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; +#endif + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + basicsize, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; +done: + Py_DECREF(abi_module); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} +#endif + +/* PyVectorcallFastCallDict */ +#if CYTHON_METH_FASTCALL +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= Py_TYPE(key)->tp_flags; + Py_INCREF(key); + Py_INCREF(value); + PyTuple_SET_ITEM(kwnames, i, key); + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { + return vc(func, args, nargs, NULL); + } + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) +{ + CYTHON_UNUSED_VAR(closure); + if (unlikely(op->func_doc == NULL)) { + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_name == NULL)) { +#if PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_name, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) +#else + if (unlikely(value == NULL || !PyString_Check(value))) +#endif + { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_tuple; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->defaults_kwdict; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = op->func_annotations; + CYTHON_UNUSED_VAR(context); + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + int is_coroutine; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; +#if PY_VERSION_HEX >= 0x03050000 + if (is_coroutine) { + PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); + PyList_SET_ITEM(fromlist, 0, marker); + module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(op->func_is_coroutine)) { + return __Pyx_NewRef(op->func_is_coroutine); + } +ignore: + PyErr_Clear(); + } +#endif + op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); + return __Pyx_NewRef(op->func_is_coroutine); +} +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { + {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#if CYTHON_USE_TYPE_SPECS + {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else + {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#endif +#if PY_VERSION_HEX < 0x030500A0 + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + CYTHON_UNUSED_VAR(args); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(m->func_qualname); + return m->func_qualname; +#else + return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyCFunctionObject *cf = (PyCFunctionObject*) op; + if (unlikely(op == NULL)) + return NULL; + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; + cf->m_ml = ml; + cf->m_self = (PyObject *) op; + Py_XINCREF(closure); + op->func_closure = closure; + Py_XINCREF(module); + cf->m_module = module; + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults_size = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); + Py_CLEAR(((PyCFunctionObject*)m)->m_module); + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); + Py_VISIT(((PyCFunctionObject*)m)->m_module); + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + Py_ssize_t size; + switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 0)) + return (*meth)(self, NULL); + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; + argc = PyTuple_GET_SIZE(args); + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", + ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + def->ml_name, nargs); + return NULL; + } + return def->ml_meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + self = ((PyCFunctionObject*)cyfunc)->m_self; + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +#else +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, +#if !CYTHON_METH_FASTCALL + 0, +#elif CYTHON_BACKPORT_VECTORCALL + (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), +#else + offsetof(PyCFunctionObject, vectorcall), +#endif + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#ifdef _Py_TPFLAGS_HAVE_VECTORCALL + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_PyMethod_New, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, +#endif +#if __PYX_NEED_TP_PRINT_SLOT + 0, +#endif +#if PY_VERSION_HEX >= 0x030C0000 + 0, +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, +#endif +}; +#endif +static int __pyx_CyFunction_init(PyObject *module) { +#if CYTHON_USE_TYPE_SPECS + __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); +#else + CYTHON_UNUSED_VAR(module); + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +#endif + if (unlikely(__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (unlikely(!m->defaults)) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + m->defaults_size = size; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg = NULL; + return __Pyx_PyObject_FastCall(func, (&arg)+1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* CLineInTraceback */ +#ifndef CYTHON_CLINE_IN_TRACEBACK +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ +#if !CYTHON_COMPILING_IN_LIMITED_API +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} +#endif + +/* AddTraceback */ +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + _PyTraceback_Add(funcname, filename, py_line); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); + if (!py_srcfile) goto bad; + #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + if (!py_funcname) goto bad; + #endif + } + #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline + return py_code; +bad: + Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* FormatTypeName */ +#if CYTHON_COMPILING_IN_LIMITED_API +static __Pyx_TypeName +__Pyx_PyType_GetName(PyTypeObject* tp) +{ + PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_n_s_name); + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { + PyErr_Clear(); + Py_XSETREF(name, __Pyx_NewRef(__pyx_n_s__6)); + } + return name; +} +#endif + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(long) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); +#if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } +#endif + if (likely(v)) { + int ret = -1; +#if !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + long idigit; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (unlikely(!PyLong_CheckExact(v))) { + PyObject *tmp = v; + v = PyNumber_Long(v); + assert(PyLong_CheckExact(v)); + Py_DECREF(tmp); + if (unlikely(!v)) return (long) -1; + } +#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 + if (Py_SIZE(x) == 0) + return (long) 0; + is_negative = Py_SIZE(x) < 0; +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + is_negative = result == 1; + } +#endif + if (is_unsigned && unlikely(is_negative)) { + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = __Pyx_NewRef(v); + } + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + val |= ((long) idigit) << bits; + #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 + if (Py_SIZE(stepval) == 0) + goto unpacking_done; + #endif + } + idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 + unpacking_done: + #endif + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + Py_DECREF(v); + if (likely(!ret)) + return val; + } + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if ((sizeof(int) < sizeof(long))) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); +#if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } +#endif + if (likely(v)) { + int ret = -1; +#if !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + long idigit; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (unlikely(!PyLong_CheckExact(v))) { + PyObject *tmp = v; + v = PyNumber_Long(v); + assert(PyLong_CheckExact(v)); + Py_DECREF(tmp); + if (unlikely(!v)) return (int) -1; + } +#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 + if (Py_SIZE(x) == 0) + return (int) 0; + is_negative = Py_SIZE(x) < 0; +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + is_negative = result == 1; + } +#endif + if (is_unsigned && unlikely(is_negative)) { + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = __Pyx_NewRef(v); + } + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + val |= ((int) idigit) << bits; + #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 + if (Py_SIZE(stepval) == 0) + goto unpacking_done; + #endif + } + idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 + unpacking_done: + #endif + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + Py_DECREF(v); + if (likely(!ret)) + return val; + } + return (int) -1; + } + } else { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* FastTypeChecks */ +#if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +#if PY_MAJOR_VERSION == 2 +static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { + PyObject *exception, *value, *tb; + int res; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&exception, &value, &tb); + res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + if (!res) { + res = PyObject_IsSubclass(err, exc_type2); + if (unlikely(res == -1)) { + PyErr_WriteUnraisable(err); + res = 0; + } + } + __Pyx_ErrRestore(exception, value, tb); + return res; +} +#else +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +#endif +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; i '9'); + break; + } + if (rt_from_call[i] != ctversion[i]) { + same = 0; + break; + } + } + if (!same) { + char rtversion[5] = {'\0'}; + char message[200]; + for (i=0; i<4; ++i) { + if (rt_from_call[i] == '.') { + if (found_dot) break; + found_dot = 1; + } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') { + break; + } + rtversion[i] = rt_from_call[i]; + } + PyOS_snprintf(message, sizeof(message), + "compile time version %s of module '%.100s' " + "does not match runtime version %s", + ctversion, __Pyx_MODULE_NAME, rtversion); + return PyErr_WarnEx(NULL, message, 1); + } + return 0; +} + +/* InitStrings */ +#if PY_MAJOR_VERSION >= 3 +static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { + if (t.is_unicode | t.is_str) { + if (t.intern) { + *str = PyUnicode_InternFromString(t.s); + } else if (t.encoding) { + *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); + } else { + *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); + } + } else { + *str = PyBytes_FromStringAndSize(t.s, t.n - 1); + } + if (!*str) + return -1; + if (PyObject_Hash(*str) == -1) + return -1; + return 0; +} +#endif +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION >= 3 + __Pyx_InitString(*t, t->p); + #else + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + return -1; + #endif + ++t; + } + return 0; +} + +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +#if !CYTHON_PEP393_ENABLED +static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +} +#else +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +} +#endif +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); +#if PY_MAJOR_VERSION >= 3 + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", + type_name, type_name, result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x) || PyLong_Check(x))) +#else + if (likely(PyLong_Check(x))) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = m->nb_int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = m->nb_long(x); + } + #else + if (likely(m && m->nb_int)) { + name = "int"; + res = m->nb_int(x); + } + #endif +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Int(x); + } +#endif + if (likely(res)) { +#if PY_MAJOR_VERSION < 3 + if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { +#else + if (unlikely(!PyLong_CheckExact(res))) { +#endif + return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(b); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/rmp220_middleware/rmp220_middleware.py b/rmp220_middleware/rmp220_middleware.py index 595c6ce..854f071 100644 --- a/rmp220_middleware/rmp220_middleware.py +++ b/rmp220_middleware/rmp220_middleware.py @@ -1,92 +1,7 @@ -#!/usr/bin/env python3 +# main.py import rclpy -from rclpy.node import Node -from std_msgs.msg import Bool -from geometry_msgs.msg import Twist -from sensor_msgs.msg import Joy -from enum import Enum -from segway_msgs.srv import RosSetChassisEnableCmd - - -import atexit -import signal -import sys - -class State(Enum): - DISABLED = 0 - ENABLED = 1 - -class StateMachineNode(Node): - def __init__(self): - super().__init__('state_machine_node') - - # Initialize state and other variables - self.state = State.DISABLED - self.timeout = 20.0 # Timeout in seconds - #self.limit = 0.5 # Limit for linear and angular velocity - - # Create publishers, subscribers, timers, and service clients - self.cmd_vel_pub = self.create_publisher(Twist, '/cmd_vel_out', 10) - self.cmd_vel_sub = self.create_subscription(Twist, '/cmd_vel_mux', self.cmd_vel_callback, 10) - self.joy_sub = self.create_subscription(Joy, '/joy', self.joy_callback, 10) - self.timer = self.create_timer(0.01, self.timer_callback) - - # Create twist class for publishing velocities - self.twist = Twist() - - self.latest_cmd_vel = Twist() - - # Create service clients for chassis enable and disable - self.chassis_enable_client = self.create_client(RosSetChassisEnableCmd, 'set_chassis_enable') - while not self.chassis_enable_client.wait_for_service(timeout_sec=1.0): - self.get_logger().info('Service not available, waiting for chassis enable service...') - self.get_logger().info('Chassis enable service available.') - - def enable_chassis(self): - req = RosSetChassisEnableCmd.Request() - req.ros_set_chassis_enable_cmd = True - self.chassis_enable_client.call_async(req) - self.get_logger().info('Enabling chassis...') - - def disable_chassis(self): - req = RosSetChassisEnableCmd.Request() - req.ros_set_chassis_enable_cmd = False - self.chassis_enable_client.call_async(req) - self.get_logger().info('Disabling chassis...') - - def joy_callback(self, msg): - # if self.state == State.DISABLED and msg.buttons[7] == 1: # Joystick button 'start' - if msg.buttons[7] == 1: # Joystick button 'start' - self.state = State.ENABLED - self.get_logger().info("State: ENABLED (Button 'start')") - self.enable_chassis() - # if self.state == State.ENABLED and msg.buttons[6] == 1: # Joystick button 'select' - if msg.buttons[6] == 1: # Joystick button 'select' - self.state = State.DISABLED - self.get_logger().info("State: DISABLED (Button 'select')") - self.disable_chassis() - - def cmd_vel_callback(self, msg): - # This method shall only update the latest_cmd_vel attribute so it can be republished by the timer_callback with 100 HZ. Should have a look at performance though. - self.latest_cmd_vel = msg - self.timeout = 20.0 # Reset timeout when receiving commands - - def timer_callback(self): - if self.state == State.ENABLED: - if self.timeout <= 0: - self.state = State.DISABLED - self.get_logger().info("State: DISABLED (Timeout)") - self.disable_chassis() - else: - self.timeout -= 0.01 - self.cmd_vel_pub.publish(self.latest_cmd_vel) - if self.state == State.DISABLED and (abs(self.latest_cmd_vel.linear) > 0.1 or abs(self.latest_cmd_vel.angular > 0.1)): # This is a hack to enable the chassis when receiving commands e.g. from Nav2 - self.state = State.ENABLED - self.get_logger().info("State: ENABLED (cmd_vel)") - self.enable_chassis() - else: - self.cmd_vel_pub.publish(self.twist) +from rmp220_middleware import StateMachineNode def main(args=None): rclpy.init(args=args) diff --git a/rmp220_middleware/rmp220_middleware.py.bak b/rmp220_middleware/rmp220_middleware.py.bak new file mode 100644 index 0000000..fff87c5 --- /dev/null +++ b/rmp220_middleware/rmp220_middleware.py.bak @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 + +import rclpy +from rclpy.node import Node +from std_msgs.msg import Bool +from geometry_msgs.msg import Twist +from sensor_msgs.msg import Joy +from enum import Enum +from segway_msgs.srv import RosSetChassisEnableCmd + + +import atexit +import signal +import sys + +class State(Enum): + DISABLED = 0 + ENABLED = 1 + +class StateMachineNode(Node): + def __init__(self): + super().__init__('state_machine_node') + + # Initialize state and other variables + self.state = State.DISABLED + self.timeout = 20.0 # Timeout in seconds + #self.limit = 0.5 # Limit for linear and angular velocity + + # Create publishers, subscribers, timers, and service clients + self.cmd_vel_pub = self.create_publisher(Twist, '/cmd_vel_out', 10) + self.cmd_vel_sub = self.create_subscription(Twist, '/cmd_vel_mux', self.cmd_vel_callback, 10) + self.joy_sub = self.create_subscription(Joy, '/joy', self.joy_callback, 10) + self.timer = self.create_timer(0.01, self.timer_callback) + + # Create twist class for publishing velocities + self.twist = Twist() + + self.latest_cmd_vel = Twist() + + # Create service clients for chassis enable and disable + self.chassis_enable_client = self.create_client(RosSetChassisEnableCmd, 'set_chassis_enable') + while not self.chassis_enable_client.wait_for_service(timeout_sec=1.0): + self.get_logger().info('Service not available, waiting for chassis enable service...') + self.get_logger().info('Chassis enable service available.') + + def enable_chassis(self): + req = RosSetChassisEnableCmd.Request() + req.ros_set_chassis_enable_cmd = True + self.chassis_enable_client.call_async(req) + self.get_logger().info('Enabling chassis...') + + def disable_chassis(self): + req = RosSetChassisEnableCmd.Request() + req.ros_set_chassis_enable_cmd = False + self.chassis_enable_client.call_async(req) + self.get_logger().info('Disabling chassis...') + + def joy_callback(self, msg): + start_button = msg.buttons[7] # Joystick button 'start' + select_button = msg.buttons[6] # Joystick button 'select' + + if start_button == 1: + self.state = State.ENABLED + self.get_logger().info("State: ENABLED (Button 'start')") + self.enable_chassis() + elif select_button == 1: + self.state = State.DISABLED + self.get_logger().info("State: DISABLED (Button 'select')") + self.disable_chassis() + + def cmd_vel_callback(self, msg): + # This method shall only update the latest_cmd_vel attribute so it can be republished by the timer_callback with 100 HZ. Should have a look at performance though. + self.latest_cmd_vel = msg + self.linear_abs = abs(self.latest_cmd_vel.linear) + self.angular_abs = abs(self.latest_cmd_vel.angular) + self.timeout = 20.0 # Reset timeout when receiving commands + + def timer_callback(self): + if self.state == State.ENABLED: + if self.timeout <= 0: + self.state = State.DISABLED + self.get_logger().info("State: DISABLED (Timeout)") + self.disable_chassis() + else: + self.timeout -= 0.01 + self.cmd_vel_pub.publish(self.latest_cmd_vel) + if self.state == State.DISABLED and (self.linear_abs > 0.1 or self.angular_abs > 0.1): # This is a hack to enable the chassis when receiving commands e.g. from Nav2 + self.state = State.ENABLED + self.get_logger().info("State: ENABLED (cmd_vel)") + self.enable_chassis() + else: + self.cmd_vel_pub.publish(self.twist) + +def main(args=None): + rclpy.init(args=args) + node = StateMachineNode() + try: + rclpy.spin(node) + except KeyboardInterrupt: + pass + finally: + node.disable_chassis() + node.destroy_node() + rclpy.shutdown() + +if __name__ == '__main__': + main() diff --git a/rmp220_middleware/rmp220_middleware_cython.pyx b/rmp220_middleware/rmp220_middleware_cython.pyx new file mode 100644 index 0000000..623f64e --- /dev/null +++ b/rmp220_middleware/rmp220_middleware_cython.pyx @@ -0,0 +1,98 @@ +# state_machine_cython.pyx + +cimport cython +from libcpp.vector cimport vector +from rclpy.node cimport Node +from std_msgs.msg cimport Bool, Twist +from geometry_msgs.msg cimport Joy +from enum import Enum +from segway_msgs.srv cimport RosSetChassisEnableCmd + +cdef extern from "Python.h": + void Py_INCREF(object obj) + void Py_DECREF(object obj) + +# Enum definition +cdef enum State: + DISABLED = 0 + ENABLED = 1 + +# Cythonized StateMachineNode class +@cython.cclass +cdef class StateMachineNode(Node): + cdef State state + cdef float timeout + cdef float linear_abs + cdef float angular_abs + + def __init__(self): + super().__init__('state_machine_node') + + # Initialize state and other variables + self.state = State.DISABLED + self.timeout = 20.0 + + # Create publishers, subscribers, timers, and service clients + self.cmd_vel_pub = self.create_publisher(Twist, '/cmd_vel_out', 10) + self.cmd_vel_sub = self.create_subscription(Twist, '/cmd_vel_mux', self.cmd_vel_callback, 10) + self.joy_sub = self.create_subscription(Joy, '/joy', self.joy_callback, 10) + self.timer = self.create_timer(0.01, self.timer_callback) + + # Create twist class for publishing velocities + self.twist = Twist() + + self.latest_cmd_vel = Twist() + + # Create service clients for chassis enable and disable + self.chassis_enable_client = self.create_client(RosSetChassisEnableCmd, 'set_chassis_enable') + while not self.chassis_enable_client.wait_for_service(timeout_sec=1.0): + self.get_logger().info('Service not available, waiting for chassis enable service...') + self.get_logger().info('Chassis enable service available.') + + def enable_chassis(self): + req = RosSetChassisEnableCmd.Request() + req.ros_set_chassis_enable_cmd = True + self.chassis_enable_client.call_async(req) + self.get_logger().info('Enabling chassis...') + + def disable_chassis(self): + req = RosSetChassisEnableCmd.Request() + req.ros_set_chassis_enable_cmd = False + self.chassis_enable_client.call_async(req) + self.get_logger().info('Disabling chassis...') + + def joy_callback(self, msg): + start_button = msg.buttons[7] # Joystick button 'start' + select_button = msg.buttons[6] # Joystick button 'select' + + if start_button == 1: + self.state = State.ENABLED + self.get_logger().info("State: ENABLED (Button 'start')") + self.enable_chassis() + elif select_button == 1: + self.state = State.DISABLED + self.get_logger().info("State: DISABLED (Button 'select')") + self.disable_chassis() + + def cmd_vel_callback(self, msg): + # This method shall only update the latest_cmd_vel attribute so it can be republished by the timer_callback with 100 HZ. Should have a look at performance though. + self.latest_cmd_vel = msg + self.linear_abs = abs(self.latest_cmd_vel.linear) + self.angular_abs = abs(self.latest_cmd_vel.angular) + self.timeout = 20.0 # Reset timeout when receiving commands + + def timer_callback(self): + if self.state == State.ENABLED: + if self.timeout <= 0: + self.state = State.DISABLED + self.get_logger().info("State: DISABLED (Timeout)") + self.disable_chassis() + else: + self.timeout -= 0.01 + self.cmd_vel_pub.publish(self.latest_cmd_vel) + if self.state == State.DISABLED and (self.linear_abs > 0.1 or self.angular_abs > 0.1): # This is a hack to enable the chassis when receiving commands e.g. from Nav2 + self.state = State.ENABLED + self.get_logger().info("State: ENABLED (cmd_vel)") + self.enable_chassis() + else: + self.cmd_vel_pub.publish(self.twist) diff --git a/setup.py b/setup.py index d1e0099..d85b380 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,13 @@ from setuptools import setup +from Cython.Build import cythonize package_name = 'rmp220_middleware' +files = package_name + "/*.py" + setup( + #ext_modules=cythonize(files,compiler_directives={'language_level' : "3"},force=True,quiet=True), + ext_modules = cythonize(files,force=True,quiet=True), name=package_name, version='0.0.0', packages=[package_name], @@ -11,7 +16,7 @@ setup( ['resource/' + package_name]), ('share/' + package_name, ['package.xml']), ], - install_requires=['setuptools'], + install_requires=['setuptools', "wheel", "Cython"], zip_safe=True, maintainer='bjorn', maintainer_email='bjoern.ellensohn@gmail.com',