Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-rpyc for openSUSE:Factory checked in at 2025-07-24 18:54:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-rpyc (Old) and /work/SRC/openSUSE:Factory/.python-rpyc.new.13279 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-rpyc" Thu Jul 24 18:54:14 2025 rev:16 rq:1295533 version:6.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-rpyc/python-rpyc.changes 2024-11-15 15:44:17.773070288 +0100 +++ /work/SRC/openSUSE:Factory/.python-rpyc.new.13279/python-rpyc.changes 2025-07-24 18:54:23.983799593 +0200 @@ -1,0 +2,23 @@ +Wed Jul 23 12:13:46 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaub...@suse.com> + +- Update to 6.0.2 + * Add support to current numpy __array__ ndarray method + * Allow DeployServer to execute any service and script + * Updated owner path segment for GitHub links in CHANGELOG.rst + * Removed references to EOL Python2 to shorten the read + and keep it relevant to today + * Removed broken link to Travis CI as it was deprecated + in favor of GitHub Actions + * Switched dead link to internet archive for the write up + by David Mertz. + * Corrected link to pull request docs by GitHub + * Mass update of moved links to reduce sphinx linkcheck noise + * Fixed linkcheck for sourceforge by setting user agent; + changed sourceforge links to https + * Removed reference to IronPython 2.7 since latest RPyC + dropped EOL python versions like 2.7 + * Updated location to context manager docs + * Updated owner path segment for GitHub links in docs/install.rst + and CONTRIBUTORS.rst + +------------------------------------------------------------------- Old: ---- 6.0.1.tar.gz New: ---- 6.0.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-rpyc.spec ++++++ --- /var/tmp/diff_new_pack.0gEHDU/_old 2025-07-24 18:54:24.567823805 +0200 +++ /var/tmp/diff_new_pack.0gEHDU/_new 2025-07-24 18:54:24.571823971 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-rpyc # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,7 +26,7 @@ %endif %{?sle15_python_module_pythons} Name: python-rpyc%{psuffix} -Version: 6.0.1 +Version: 6.0.2 Release: 0 Summary: Remote Python Call (RPyC), a RPC library License: MIT ++++++ 6.0.1.tar.gz -> 6.0.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/CHANGELOG.rst new/rpyc-6.0.2/CHANGELOG.rst --- old/rpyc-6.0.1/CHANGELOG.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/CHANGELOG.rst 2025-04-18 18:45:58.000000000 +0200 @@ -1,3 +1,9 @@ +6.0.2 +===== +Date: 2024-04-18 + +- Maintenance release + 6.0.1 ===== Date: 2024-09-24 @@ -120,8 +126,8 @@ - Fixed unexpected behavior when using inspect.isfunction `#426`_ - Now prevents installation of RPyC on unsupported versions of python `#429`_ -.. _#426: https://github.com/tomerfiliba/rpyc/issues/426 -.. _#429: https://github.com/tomerfiliba/rpyc/pull/429 +.. _#426: https://github.com/tomerfiliba-org/rpyc/issues/426 +.. _#429: https://github.com/tomerfiliba-org/rpyc/pull/429 5.0.0 ----- @@ -156,9 +162,9 @@ - Corrections to teleport example `#374`_ - Lowered GIL-lock acquires for <64kb within channel sends to address slowness `#280`_ -.. _#376: https://github.com/tomerfiliba/rpyc/pull/376 -.. _#374: https://github.com/tomerfiliba/rpyc/pull/374 -.. _#280: https://github.com/tomerfiliba/rpyc/issues/280 +.. _#376: https://github.com/tomerfiliba-org/rpyc/pull/376 +.. _#374: https://github.com/tomerfiliba-org/rpyc/pull/374 +.. _#280: https://github.com/tomerfiliba-org/rpyc/issues/280 4.1.4 ----- @@ -168,8 +174,8 @@ - Fixed connection hanging due to namepack cursor `#369`_ - Fixed test dependencies and is_py_* for 3.9 -.. _#371: https://github.com/tomerfiliba/rpyc/issues/371 -.. _#369: https://github.com/tomerfiliba/rpyc/issues/369 +.. _#371: https://github.com/tomerfiliba-org/rpyc/issues/371 +.. _#369: https://github.com/tomerfiliba-org/rpyc/issues/369 4.1.3 ----- @@ -180,11 +186,11 @@ - Fixed handling of exceptions for request callbacks `#365`_ - Partially fixed return value for netref.__class__ `#355`_ -.. _#366: https://github.com/tomerfiliba/rpyc/issues/366 -.. _#351: https://github.com/tomerfiliba/rpyc/pull/351 -.. _#364: https://github.com/tomerfiliba/rpyc/pull/364 -.. _#365: https://github.com/tomerfiliba/rpyc/issues/365 -.. _#355: https://github.com/tomerfiliba/rpyc/issues/355 +.. _#366: https://github.com/tomerfiliba-org/rpyc/issues/366 +.. _#351: https://github.com/tomerfiliba-org/rpyc/pull/351 +.. _#364: https://github.com/tomerfiliba-org/rpyc/pull/364 +.. _#365: https://github.com/tomerfiliba-org/rpyc/issues/365 +.. _#355: https://github.com/tomerfiliba-org/rpyc/issues/355 4.1.2 @@ -195,7 +201,7 @@ - Fixed RPyC over RPyC for mutable parameters and extended unit testing for `#346`_ .. _CVE-2019-16328: https://rpyc.readthedocs.io/en/latest/docs/security.html -.. _#346: https://github.com/tomerfiliba/rpyc/issues/346 +.. _#346: https://github.com/tomerfiliba-org/rpyc/issues/346 4.1.1 @@ -235,7 +241,7 @@ - fix ValueError during install due to absolute PATH in SOURCES.txt (`#276`_) -.. _#276: https://github.com/tomerfiliba/rpyc/issues/276 +.. _#276: https://github.com/tomerfiliba-org/rpyc/issues/276 4.0.0 @@ -294,13 +300,13 @@ * Exposed attributes no longer hide plain attributes if one otherwise has the required permissions to access the plain attribute. (`#165`_) -.. _#165: https://github.com/tomerfiliba/rpyc/issues/165 -.. _#172: https://github.com/tomerfiliba/rpyc/issues/172 -.. _#173: https://github.com/tomerfiliba/rpyc/issues/173 -.. _#198: https://github.com/tomerfiliba/rpyc/issues/198 -.. _#232: https://github.com/tomerfiliba/rpyc/issues/232 -.. _#238: https://github.com/tomerfiliba/rpyc/issues/238 -.. _#248: https://github.com/tomerfiliba/rpyc/issues/248 +.. _#165: https://github.com/tomerfiliba-org/rpyc/issues/165 +.. _#172: https://github.com/tomerfiliba-org/rpyc/issues/172 +.. _#173: https://github.com/tomerfiliba-org/rpyc/issues/173 +.. _#198: https://github.com/tomerfiliba-org/rpyc/issues/198 +.. _#232: https://github.com/tomerfiliba-org/rpyc/issues/232 +.. _#238: https://github.com/tomerfiliba-org/rpyc/issues/238 +.. _#248: https://github.com/tomerfiliba-org/rpyc/issues/248 What else is new ^^^^^^^^^^^^^^^^ @@ -374,25 +380,25 @@ * fix logger issue on jython -.. _#137: https://github.com/tomerfiliba/rpyc/issues/137 -.. _#146: https://github.com/tomerfiliba/rpyc/issues/146 -.. _#153: https://github.com/tomerfiliba/rpyc/issues/153 -.. _#165: https://github.com/tomerfiliba/rpyc/issues/165 -.. _#228: https://github.com/tomerfiliba/rpyc/issues/228 -.. _#231: https://github.com/tomerfiliba/rpyc/issues/231 -.. _#236: https://github.com/tomerfiliba/rpyc/issues/236 -.. _#237: https://github.com/tomerfiliba/rpyc/issues/237 -.. _#239: https://github.com/tomerfiliba/rpyc/issues/239 -.. _#244: https://github.com/tomerfiliba/rpyc/issues/244 -.. _#247: https://github.com/tomerfiliba/rpyc/issues/247 -.. _#251: https://github.com/tomerfiliba/rpyc/issues/251 -.. _#253: https://github.com/tomerfiliba/rpyc/issues/253 -.. _#264: https://github.com/tomerfiliba/rpyc/issues/264 -.. _#265: https://github.com/tomerfiliba/rpyc/issues/265 -.. _#267: https://github.com/tomerfiliba/rpyc/issues/267 -.. _#268: https://github.com/tomerfiliba/rpyc/issues/268 -.. _#269: https://github.com/tomerfiliba/rpyc/issues/269 -.. _#270: https://github.com/tomerfiliba/rpyc/issues/270 +.. _#137: https://github.com/tomerfiliba-org/rpyc/issues/137 +.. _#146: https://github.com/tomerfiliba-org/rpyc/issues/146 +.. _#153: https://github.com/tomerfiliba-org/rpyc/issues/153 +.. _#165: https://github.com/tomerfiliba-org/rpyc/issues/165 +.. _#228: https://github.com/tomerfiliba-org/rpyc/issues/228 +.. _#231: https://github.com/tomerfiliba-org/rpyc/issues/231 +.. _#236: https://github.com/tomerfiliba-org/rpyc/issues/236 +.. _#237: https://github.com/tomerfiliba-org/rpyc/issues/237 +.. _#239: https://github.com/tomerfiliba-org/rpyc/issues/239 +.. _#244: https://github.com/tomerfiliba-org/rpyc/issues/244 +.. _#247: https://github.com/tomerfiliba-org/rpyc/issues/247 +.. _#251: https://github.com/tomerfiliba-org/rpyc/issues/251 +.. _#253: https://github.com/tomerfiliba-org/rpyc/issues/253 +.. _#264: https://github.com/tomerfiliba-org/rpyc/issues/264 +.. _#265: https://github.com/tomerfiliba-org/rpyc/issues/265 +.. _#267: https://github.com/tomerfiliba-org/rpyc/issues/267 +.. _#268: https://github.com/tomerfiliba-org/rpyc/issues/268 +.. _#269: https://github.com/tomerfiliba-org/rpyc/issues/269 +.. _#270: https://github.com/tomerfiliba-org/rpyc/issues/270 .. _gevent: http://www.gevent.org/ @@ -408,14 +414,14 @@ * Fix deadlock problem with logging (`#207`_, `#212`_) * Fix timeout problem for long commands (`#169`_) -.. _#100: https://github.com/tomerfiliba/rpyc/issues/100 -.. _#169: https://github.com/tomerfiliba/rpyc/issues/169 -.. _#196: https://github.com/tomerfiliba/rpyc/issues/196 -.. _#202: https://github.com/tomerfiliba/rpyc/issues/202 -.. _#207: https://github.com/tomerfiliba/rpyc/issues/207 -.. _#208: https://github.com/tomerfiliba/rpyc/issues/208 -.. _#212: https://github.com/tomerfiliba/rpyc/issues/212 -.. _#220: https://github.com/tomerfiliba/rpyc/issues/220 +.. _#100: https://github.com/tomerfiliba-org/rpyc/issues/100 +.. _#169: https://github.com/tomerfiliba-org/rpyc/issues/169 +.. _#196: https://github.com/tomerfiliba-org/rpyc/issues/196 +.. _#202: https://github.com/tomerfiliba-org/rpyc/issues/202 +.. _#207: https://github.com/tomerfiliba-org/rpyc/issues/207 +.. _#208: https://github.com/tomerfiliba-org/rpyc/issues/208 +.. _#212: https://github.com/tomerfiliba-org/rpyc/issues/212 +.. _#220: https://github.com/tomerfiliba-org/rpyc/issues/220 3.4.3 ----- @@ -425,13 +431,13 @@ * Fix jython support (`#156`_, `#171`_) * Improve documentation (`#158`_, `#185`_, `#189`_, `#198`_ and more) -.. _#156: https://github.com/tomerfiliba/rpyc/issues/156 -.. _#158: https://github.com/tomerfiliba/rpyc/issues/158 -.. _#171: https://github.com/tomerfiliba/rpyc/issues/171 -.. _#185: https://github.com/tomerfiliba/rpyc/issues/185 -.. _#189: https://github.com/tomerfiliba/rpyc/issues/189 -.. _#198: https://github.com/tomerfiliba/rpyc/issues/198 -.. _#222: https://github.com/tomerfiliba/rpyc/issues/222 +.. _#156: https://github.com/tomerfiliba-org/rpyc/issues/156 +.. _#158: https://github.com/tomerfiliba-org/rpyc/issues/158 +.. _#171: https://github.com/tomerfiliba-org/rpyc/issues/171 +.. _#185: https://github.com/tomerfiliba-org/rpyc/issues/185 +.. _#189: https://github.com/tomerfiliba-org/rpyc/issues/189 +.. _#198: https://github.com/tomerfiliba-org/rpyc/issues/198 +.. _#222: https://github.com/tomerfiliba-org/rpyc/issues/222 3.4.2 ----- @@ -448,10 +454,10 @@ * Improved log messages (`#191`_, `#204`_) * Drop support for python 3.2 and py 2.5 -.. _#191: https://github.com/tomerfiliba/rpyc/issues/191 -.. _#197: https://github.com/tomerfiliba/rpyc/issues/197 -.. _#204: https://github.com/tomerfiliba/rpyc/issues/204 -.. _#218: https://github.com/tomerfiliba/rpyc/issues/218 +.. _#191: https://github.com/tomerfiliba-org/rpyc/issues/191 +.. _#197: https://github.com/tomerfiliba-org/rpyc/issues/197 +.. _#204: https://github.com/tomerfiliba-org/rpyc/issues/204 +.. _#218: https://github.com/tomerfiliba-org/rpyc/issues/218 3.4.0 ----- @@ -463,21 +469,21 @@ * Various fixes: `#136`_, `#140`_, `#143`_, `#147`_, `#149`_, `#151`_, `#159`_, `#160`_, `#166`_, `#173`_, `#176`_, `#179`_, `#174`_, `#182`_, `#183`_ and others. -.. _#136: https://github.com/tomerfiliba/rpyc/issues/136 -.. _#140: https://github.com/tomerfiliba/rpyc/issues/140 -.. _#143: https://github.com/tomerfiliba/rpyc/issues/143 -.. _#147: https://github.com/tomerfiliba/rpyc/issues/147 -.. _#149: https://github.com/tomerfiliba/rpyc/issues/149 -.. _#151: https://github.com/tomerfiliba/rpyc/issues/151 -.. _#159: https://github.com/tomerfiliba/rpyc/issues/159 -.. _#160: https://github.com/tomerfiliba/rpyc/issues/160 -.. _#166: https://github.com/tomerfiliba/rpyc/issues/166 -.. _#173: https://github.com/tomerfiliba/rpyc/issues/173 -.. _#174: https://github.com/tomerfiliba/rpyc/issues/174 -.. _#176: https://github.com/tomerfiliba/rpyc/issues/176 -.. _#179: https://github.com/tomerfiliba/rpyc/issues/179 -.. _#182: https://github.com/tomerfiliba/rpyc/issues/182 -.. _#183: https://github.com/tomerfiliba/rpyc/issues/183 +.. _#136: https://github.com/tomerfiliba-org/rpyc/issues/136 +.. _#140: https://github.com/tomerfiliba-org/rpyc/issues/140 +.. _#143: https://github.com/tomerfiliba-org/rpyc/issues/143 +.. _#147: https://github.com/tomerfiliba-org/rpyc/issues/147 +.. _#149: https://github.com/tomerfiliba-org/rpyc/issues/149 +.. _#151: https://github.com/tomerfiliba-org/rpyc/issues/151 +.. _#159: https://github.com/tomerfiliba-org/rpyc/issues/159 +.. _#160: https://github.com/tomerfiliba-org/rpyc/issues/160 +.. _#166: https://github.com/tomerfiliba-org/rpyc/issues/166 +.. _#173: https://github.com/tomerfiliba-org/rpyc/issues/173 +.. _#174: https://github.com/tomerfiliba-org/rpyc/issues/174 +.. _#176: https://github.com/tomerfiliba-org/rpyc/issues/176 +.. _#179: https://github.com/tomerfiliba-org/rpyc/issues/179 +.. _#182: https://github.com/tomerfiliba-org/rpyc/issues/182 +.. _#183: https://github.com/tomerfiliba-org/rpyc/issues/183 3.3.0 ----- @@ -530,10 +536,10 @@ * Add UNIX domain sockets (`#100`_) -.. _#76: https://github.com/tomerfiliba/rpyc/issues/76 -.. _#89: https://github.com/tomerfiliba/rpyc/issues/89 -.. _#91: https://github.com/tomerfiliba/rpyc/issues/91 -.. _#100: https://github.com/tomerfiliba/rpyc/issues/100 +.. _#76: https://github.com/tomerfiliba-org/rpyc/issues/76 +.. _#89: https://github.com/tomerfiliba-org/rpyc/issues/89 +.. _#91: https://github.com/tomerfiliba-org/rpyc/issues/91 +.. _#100: https://github.com/tomerfiliba-org/rpyc/issues/100 3.2.2 ----- @@ -549,13 +555,13 @@ * Shutting down the old wikidot site -* Adding `Travis CI <http://travis-ci.org/#!/tomerfiliba/rpyc>`_ integration +* Adding Travis CI integration -.. _#68: https://github.com/tomerfiliba/rpyc/issues/68 -.. _#71: https://github.com/tomerfiliba/rpyc/issues/71 -.. _#72: https://github.com/tomerfiliba/rpyc/issues/72 -.. _#73: https://github.com/tomerfiliba/rpyc/issues/73 -.. _#76: https://github.com/tomerfiliba/rpyc/issues/76 +.. _#68: https://github.com/tomerfiliba-org/rpyc/issues/68 +.. _#71: https://github.com/tomerfiliba-org/rpyc/issues/71 +.. _#72: https://github.com/tomerfiliba-org/rpyc/issues/72 +.. _#73: https://github.com/tomerfiliba-org/rpyc/issues/73 +.. _#76: https://github.com/tomerfiliba-org/rpyc/issues/76 3.2.1 ----- @@ -569,14 +575,14 @@ * Added the ``endpoints`` parameter to the config dict of connection (only on the server side) -.. _#52: https://github.com/tomerfiliba/rpyc/issues/52 -.. _#54: https://github.com/tomerfiliba/rpyc/issues/54 -.. _#58: https://github.com/tomerfiliba/rpyc/issues/58 -.. _#59: https://github.com/tomerfiliba/rpyc/issues/59 -.. _#60: https://github.com/tomerfiliba/rpyc/issues/60 -.. _#61: https://github.com/tomerfiliba/rpyc/issues/61 -.. _#62: https://github.com/tomerfiliba/rpyc/issues/62 -.. _#66: https://github.com/tomerfiliba/rpyc/issues/66 +.. _#52: https://github.com/tomerfiliba-org/rpyc/issues/52 +.. _#54: https://github.com/tomerfiliba-org/rpyc/issues/54 +.. _#58: https://github.com/tomerfiliba-org/rpyc/issues/58 +.. _#59: https://github.com/tomerfiliba-org/rpyc/issues/59 +.. _#60: https://github.com/tomerfiliba-org/rpyc/issues/60 +.. _#61: https://github.com/tomerfiliba-org/rpyc/issues/61 +.. _#62: https://github.com/tomerfiliba-org/rpyc/issues/62 +.. _#66: https://github.com/tomerfiliba-org/rpyc/issues/66 3.2.0 ----- @@ -602,7 +608,7 @@ * **New documentation** (both the website and docstrings) written in **Sphinx** - * The site has moved to `sourceforge <http://rpyc.sourceforge.net>`_. Wikidot + * The site has moved to `sourceforge <https://rpyc.sourceforge.net>`_. Wikidot had served us well over the past three years, but they began displaying way too many ads and didn't support uploading files over ``rsync``, which made my life hard. @@ -611,15 +617,15 @@ * **Python 3.0-3.2** support -.. _#8: https://github.com/tomerfiliba/rpyc/issues/8 -.. _#28: https://github.com/tomerfiliba/rpyc/issues/28 -.. _#40: https://github.com/tomerfiliba/rpyc/issues/40 -.. _#41: https://github.com/tomerfiliba/rpyc/issues/41 -.. _#42: https://github.com/tomerfiliba/rpyc/issues/42 -.. _#43: https://github.com/tomerfiliba/rpyc/issues/43 -.. _#45: https://github.com/tomerfiliba/rpyc/issues/45 -.. _#46: https://github.com/tomerfiliba/rpyc/issues/46 -.. _#49: https://github.com/tomerfiliba/rpyc/issues/49 +.. _#8: https://github.com/tomerfiliba-org/rpyc/issues/8 +.. _#28: https://github.com/tomerfiliba-org/rpyc/issues/28 +.. _#40: https://github.com/tomerfiliba-org/rpyc/issues/40 +.. _#41: https://github.com/tomerfiliba-org/rpyc/issues/41 +.. _#42: https://github.com/tomerfiliba-org/rpyc/issues/42 +.. _#43: https://github.com/tomerfiliba-org/rpyc/issues/43 +.. _#45: https://github.com/tomerfiliba-org/rpyc/issues/45 +.. _#46: https://github.com/tomerfiliba-org/rpyc/issues/46 +.. _#49: https://github.com/tomerfiliba-org/rpyc/issues/49 3.1.0 ------ @@ -651,13 +657,13 @@ * Fixes typos, running pylint, etc. -.. _#3: https://github.com/tomerfiliba/rpyc/issues/3 -.. _#4: https://github.com/tomerfiliba/rpyc/issues/4 -.. _#7: https://github.com/tomerfiliba/rpyc/issues/7 -.. _#13: https://github.com/tomerfiliba/rpyc/issues/13 -.. _#15: https://github.com/tomerfiliba/rpyc/issues/15 -.. _#16: https://github.com/tomerfiliba/rpyc/issues/16 -.. _#32: https://github.com/tomerfiliba/rpyc/issues/32 +.. _#3: https://github.com/tomerfiliba-org/rpyc/issues/3 +.. _#4: https://github.com/tomerfiliba-org/rpyc/issues/4 +.. _#7: https://github.com/tomerfiliba-org/rpyc/issues/7 +.. _#13: https://github.com/tomerfiliba-org/rpyc/issues/13 +.. _#15: https://github.com/tomerfiliba-org/rpyc/issues/15 +.. _#16: https://github.com/tomerfiliba-org/rpyc/issues/16 +.. _#32: https://github.com/tomerfiliba-org/rpyc/issues/32 Breakage from 3.0.7 ^^^^^^^^^^^^^^^^^^^ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/CONTRIBUTORS.rst new/rpyc-6.0.2/CONTRIBUTORS.rst --- old/rpyc-6.0.1/CONTRIBUTORS.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/CONTRIBUTORS.rst 2025-04-18 18:45:58.000000000 +0200 @@ -23,7 +23,7 @@ * Sponce - added the ``ThreadPoolServer``, several fixes to weak-references and ``AsyncResult`` * Sagiv Malihi - Bug fix in classic server -* Miguel Alarcos - issue `#8 <https://github.com/tomerfiliba/rpyc/issues/8>`_ +* Miguel Alarcos - issue `#8 <https://github.com/tomerfiliba-org/rpyc/issues/8>`_ * Pola Abram - Discovered several races when server threads trerminate * Chris - Several bug fixes (#46, #49, #50) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/conf.py new/rpyc-6.0.2/docs/conf.py --- old/rpyc-6.0.1/docs/conf.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/conf.py 2025-04-18 18:45:58.000000000 +0200 @@ -70,6 +70,7 @@ # directories to ignore when looking for source files. exclude_patterns = ['_build'] +user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/docs/about.rst new/rpyc-6.0.2/docs/docs/about.rst --- old/rpyc-6.0.1/docs/docs/about.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/docs/about.rst 2025-04-18 18:45:58.000000000 +0200 @@ -3,10 +3,10 @@ About RPyC ========== RPyC was inspired by the work of **Eyal Lotem** on -`pyinvoke <http://pybuild.sourceforge.net/pyinvoke.html>`_, which pioneered in +`pyinvoke <https://pybuild.sourceforge.net/pyinvoke.html>`_, which pioneered in the field of "dynamic RPC" (where there's no predefined contract between the two sides). The two projects, however, are completely unrelated in any other -way. RPyC is developed and maintained by `Tomer Filiba <http://tomerfiliba.com>`_ +way. RPyC is developed and maintained by `Tomer Filiba <https://tomerfiliba.com/>`_ (tomerfil...@gmail.com). .. note:: @@ -19,7 +19,7 @@ Logo ---- -The logo is derived from the `Python logo <http://www.python.org/community/logos/>`_, +The logo is derived from the `Python logo <https://www.python.org/community/logos/>`_, with explicit permission. I created it using *Power Point* (sorry, I'm no graphic designer :), and all the files are made available here: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/docs/async.rst new/rpyc-6.0.2/docs/docs/async.rst --- old/rpyc-6.0.1/docs/docs/async.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/docs/async.rst 2025-04-18 18:45:58.000000000 +0200 @@ -42,7 +42,7 @@ Notes ^^^^^ -The returns async proxies are cached by a `weak-reference <http://docs.python.org/library/weakref.html>`_. +The returns async proxies are cached by a `weak-reference <https://docs.python.org/3/library/weakref.html>`_. Therefore, you must hold a strong reference to the returned proxy. Particularly, this means that instead of doing :: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/docs/howto.rst new/rpyc-6.0.2/docs/docs/howto.rst --- old/rpyc-6.0.1/docs/docs/howto.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/docs/howto.rst 2025-04-18 18:45:58.000000000 +0200 @@ -20,7 +20,7 @@ hi here Also note that if you are using classic mode RPyC, you can use the -`context manager <http://www.python.org/doc/2.5.2/lib/typecontextmanager.html>`_ +`context manager <https://docs.python.org/3/library/stdtypes.html#typecontextmanager>`_ ``rpyc.classic.redirected_stdio``:: >>> c.execute("print('hi there')") # printed on the server @@ -131,7 +131,7 @@ machine_c = rpyc.classic.connect("machine-c") telnetlib.socket = rpyc.modules.socket -This is called `monkey-patching <http://en.wikipedia.org/wiki/Monkey_patch>`_, it's a very +This is called `monkey-patching <https://en.wikipedia.org/wiki/Monkey_patch>`_, it's a very handy technique which you can use in other places as well, to override functions, classes and entire modules. For instance :: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/docs/secure-connection.rst new/rpyc-6.0.2/docs/docs/secure-connection.rst --- old/rpyc-6.0.1/docs/docs/secure-connection.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/docs/secure-connection.rst 2025-04-18 18:45:58.000000000 +0200 @@ -24,4 +24,4 @@ conn = rpyc.ssl_connect("hostname", port = 12345, keyfile="client.key", certfile="client.cert") -For more info, see the documentation of `ssl module <http://docs.python.org/library/ssl.html>`_. +For more info, see the documentation of `ssl module <https://docs.python.org/3/library/ssl.html>`_. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/docs/theory.rst new/rpyc-6.0.2/docs/docs/theory.rst --- old/rpyc-6.0.1/docs/docs/theory.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/docs/theory.rst 2025-04-18 18:45:58.000000000 +0200 @@ -9,9 +9,9 @@ Theory ------ The most fundamental concept of computer programming, which almost all operating systems -share, is the `process <http://en.wikipedia.org/wiki/Process_(computing)>`_. +share, is the `process <https://en.wikipedia.org/wiki/Process_(computing)>`_. A process is a unit of code and data, contained within an `address space -<http://en.wikipedia.org/wiki/address_space>`_ -- a region of (virtual) memory, +<https://en.wikipedia.org/wiki/Address_space>`_ -- a region of (virtual) memory, owned solely by that process. This ensures that all processes are isolated from one another, so that they could run on the same hardware without interfering to each other. While this isolation is essential to operating systems and the programming model we normally use, @@ -20,11 +20,11 @@ programs which forces programs to resort to monolithic structuring. Several mechanism exist to overcome these boundaries, most notably -`remote procedure calls <http://en.wikipedia.org/wiki/Remote_procedure_call>`_. +`remote procedure calls <https://en.wikipedia.org/wiki/Remote_procedure_call>`_. Largely speaking, RPCs enable one process to execute code ("call procedures") that reside outside of its address space (in another process) and be aware of their results. Many such RPC frameworks exist, which all share some basic traits: they provide a way to -describe what functions are exposed, define a `serialization <http://en.wikipedia.org/wiki/serialization>`_ +describe what functions are exposed, define a `serialization <https://en.wikipedia.org/wiki/Serialization>`_ format, transport abstraction, and a client-side library/code-generator that allows clients utilize these remote functions. @@ -34,14 +34,14 @@ configure name servers, set up transport (HTTP) servers, or even use special invocation syntax -- RPyC fits the python programming model like a glove. For instance, a function that works on a local file object will work seamlessly on a remote file object -- it's -`duck-typing <http://en.wikipedia.org/wiki/Duck_typing>`_ to the extreme. +`duck-typing <https://en.wikipedia.org/wiki/Duck_typing>`_ to the extreme. An interesting consequence of being transparent is **symmetry** -- there's no longer a strict notion of what's a *server* as opposed to what's a *client* -- both the parties may serve requests and dispatch replies; the server is simply the party that accepts incoming connections -- but other than that, servers and clients are identical. Being symmetrical opens the doors to lots of previously unheard-of features, like -`callback functions <http://en.wikipedia.org/wiki/Callback_(computer_science)>`_. +`callback functions <https://en.wikipedia.org/wiki/Callback_(computer_science)>`_. The result of these two properties is that local and remote objects are "equal in front of the code": your program shouldn't even be aware of the "proximity" of object it is dealing with. @@ -57,8 +57,8 @@ In many situations, RPyC is employed in a master-slave relation, where the "client" takes full control over the "server". This mainly allows the client to access remote resources and perform operations on behalf of the server. However, RPyC can also be used as the basis -for `clustering <http://en.wikipedia.org/wiki/Cluster_(computing)>`_ and -`distributed computing <http://en.wikipedia.org/wiki/Distributed_computing>`_: +for `clustering <https://en.wikipedia.org/wiki/Cluster_(computing)>`_ and +`distributed computing <https://en.wikipedia.org/wiki/Distributed_computing>`_: an array of RPyC servers on multiple machines can form a "huge computer" in terms of computation power. @@ -75,12 +75,12 @@ (encoding) that transfers objects between the two ends of the connection. Boxing relies on two methods of serialization: -* `By Value <http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_value By>`_ - +* `By Value <https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_value>`_ - simple, immutable python objects (like strings, integers, tuples, etc.) are passed **by value**, meaning the value itself is passed to the other side. Since their value cannot change, there is no restriction on duplicating them on both sides. -* `By Reference <http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference>`_ - +* `By Reference <https://en.wikipedia.org/wiki/Evaluation_strategy>`_ - all other objects are passed **by reference**, meaning a "reference" to the object is passed to the other side. This allows changes applied on the referencing (proxy) object to be reflected on the actual object. Passing objects by reference also allows passing @@ -92,7 +92,7 @@ Object Proxying ^^^^^^^^^^^^^^^ -`Object proxying <http://en.wikipedia.org/wiki/Proxy_pattern>`_ is a technique of referencing +`Object proxying <https://en.wikipedia.org/wiki/Proxy_pattern>`_ is a technique of referencing a remote object transparently: since the remote object cannot be transferred by-value, a reference to it is passed. This reference is then wrapped by a special object, called a *proxy* that "looks and behaves" just like the actual object (the *target*). @@ -119,7 +119,7 @@ operations on the other, and there was no way to restrict it. RPyC 3.0 introduced the concept of *services*. RPyC itself is only a "sophisticated -transport layer" -- it is a `mechanism <http://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy>`_, +transport layer" -- it is a `mechanism <https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy>`_, it does not set policies. RPyC allows each end of the connection to expose a (potentially different) *service* that is responsible for the "policy", i.e., the set of supported operations. For instance, *classic RPyC* is implemented by the ``SlaveService``, which grants arbitrary diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/docs/usecases.rst new/rpyc-6.0.2/docs/docs/usecases.rst --- old/rpyc-6.0.1/docs/docs/usecases.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/docs/usecases.rst 2025-04-18 18:45:58.000000000 +0200 @@ -22,7 +22,7 @@ all but "allowed attributes", and the rest of the security model is based on passing *capabilities*. Passing capabilities is explicit and fine grained -- for instance, instead of allowing the other party call ``open()`` and attempting to block disallowed calls -at the file-name level (which is `weak <http://en.wikipedia.org/wiki/Directory_traversal>`_), +at the file-name level (which is `weak <https://en.wikipedia.org/wiki/Directory_traversal>`_), you can pass an open file object to the other party. The other party could manipulate the file (calling read/write/seek on it), but it would have no access to the rest of the file system. @@ -49,14 +49,14 @@ machine from another. For instance, some testgear or device can only connect to Solaris SPARC machines, but you're comfortable with developing on your Windows workstation. Assuming your device comes with C bindings, some command-line tool, or accepts commands -via ``ioctl`` to some `device node <http://en.wikipedia.org/wiki/Device_file>`_ -- +via ``ioctl`` to some `device node <https://en.wikipedia.org/wiki/Device_file>`_ -- you can just run an RPyC server on that machine, connect to it from your workstation, and access the device programmatically with ease (using ``ctypes`` or ``popen`` remotely). Parallel Execution ------------------ -In CPython, the `GIL <http://wiki.python.org/moin/GlobalInterpreterLock>`_ prevents multiple +In CPython, the `GIL <https://wiki.python.org/moin/GlobalInterpreterLock>`_ prevents multiple threads from executing python bytecode at once. This simplifies the design of the python interpreter, but the consequence of which is that CPython cannot utilize multiple/multicore CPUs. The only way to achieve scalable, CPU-bound python programs is to use multiple processes, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/docs/zerodeploy.rst new/rpyc-6.0.2/docs/docs/zerodeploy.rst --- old/rpyc-6.0.1/docs/docs/zerodeploy.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/docs/zerodeploy.rst 2025-04-18 18:45:58.000000000 +0200 @@ -15,7 +15,7 @@ How It Works ------------ -Zero-deploy only requires that you have `Plumbum <http://plumbum.readthedocs.org>`_ (1.2 and later) installed on +Zero-deploy only requires that you have `Plumbum <https://plumbum.readthedocs.io/en/latest/>`_ (1.2 and later) installed on your client machine and that you can connect to the remote machine over SSH. It takes care of the rest: 1. Create a temporary directory on the remote machine diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/index.rst new/rpyc-6.0.2/docs/index.rst --- old/rpyc-6.0.1/docs/index.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/index.rst 2025-04-18 18:45:58.000000000 +0200 @@ -24,9 +24,9 @@ .. _release: https://pypi.python.org/pypi/rpyc/ **RPyC** (pronounced as *are-pie-see*), or *Remote Python Call*, is a **transparent** -`python <http://www.python.org>`_ library for **symmetrical** -`remote procedure calls <http://en.wikipedia.org/wiki/Remote_procedure_calls>`_, -`clustering <http://en.wikipedia.org/wiki/Clustering>`_ and +`python <https://www.python.org/>`_ library for **symmetrical** +`remote procedure calls <https://en.wikipedia.org/wiki/Remote_procedure_calls>`_, +`clustering <https://en.wikipedia.org/wiki/Clustering>`_ and `distributed-computing <http://en.wikipedia.org/wiki/Distributed_computing>`_. RPyC makes use of `object-proxying <http://en.wikipedia.org/wiki/Proxy_pattern>`_, a technique that employs python's dynamic nature, to overcome the physical boundaries @@ -48,8 +48,8 @@ as well as the :ref:`mailing-list`. For an introductory reading (that may or may not be slightly outdated), -`David Mertz <http://gnosis.cx/dW/>`_ wrote a very thorough -`Charming Python <http://www.ibm.com/developerworks/linux/library/l-rpyc/>`_ installment +David Mertz wrote a very thorough +`Charming Python <https://web.archive.org/web/20160928013509/http://www.ibm.com/developerworks/linux/library/l-rpyc/>`_ installment about RPyC, explaining how it's different from existing alternatives (Pyro, XMLRPC, etc.), what roles it can play, and even show-cases some key features of RPyC (like the security model, remote monkey-patching, or remote resource utilization). @@ -73,13 +73,13 @@ * **Low Overhead** - RpyC takes an *all-in-one* approach, using a compact binary protocol, and requiring no complex setup (name servers, HTTP, URL-mapping, etc.) -* **Secure** - employs a `Capability based <http://en.wikipedia.org/wiki/Capability-based_security>`_ +* **Secure** - employs a `Capability based <https://en.wikipedia.org/wiki/Capability-based_security>`_ security model; integrates easily with SSH * **Zero-Deploy Enabled** -- Read more about :ref:`Zero-Deploy RPyC <zerodeploy>` -* **Integrates** with `TLS/SSL <http://en.wikipedia.org/wiki/Transport_Layer_Security>`_, - `SSH <http://en.wikipedia.org/wiki/Secure_Shell>`_ and `inetd <http://en.wikipedia.org/wiki/inetd>`_. +* **Integrates** with `TLS/SSL <https://en.wikipedia.org/wiki/Transport_Layer_Security>`_, + `SSH <https://en.wikipedia.org/wiki/Secure_Shell>`_ and `inetd <https://en.wikipedia.org/wiki/Inetd>`_. Use Cases --------- @@ -103,8 +103,8 @@ * Distributing workload among multiple machines with ease -* Implement remote services (like `WSDL <http://en.wikipedia.org/wiki/WSDL>`_ - or `RMI <http://en.wikipedia.org/wiki/Java_remote_method_invocation>`_) +* Implement remote services (like `WSDL <https://en.wikipedia.org/wiki/WSDL>`_ + or `RMI <https://en.wikipedia.org/wiki/Java_remote_method_invocation>`_) quickly and concisely (without the overhead and limitations of these technologies) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/install.rst new/rpyc-6.0.2/docs/install.rst --- old/rpyc-6.0.1/docs/install.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/install.rst 2025-04-18 18:45:58.000000000 +0200 @@ -4,8 +4,8 @@ ==================== You can always download the latest releases of RPyC from the project's -`github page <https://github.com/tomerfiliba/rpyc/releases>`_ or -its `PyPI page <http://pypi.python.org/pypi/rpyc>`_. The easiest way to +`github page <https://github.com/tomerfiliba-org/rpyc/releases>`_ or +its `PyPI page <https://pypi.org/project/rpyc/>`_. The easiest way to install RPyC, however, is using:: pip install rpyc @@ -36,7 +36,7 @@ Note that you **cannot** connect from a **Python 2.x** interpreter to a **3.x** one, or vice versa. Trying to do so will results in all kinds of `strange exceptions -<https://github.com/tomerfiliba/rpyc/issues/54>`_, so beware. This is because Python 3 introduces major changes to +<https://github.com/tomerfiliba-org/rpyc/issues/54>`_, so beware. This is because Python 3 introduces major changes to the object model used by Python 2.x: some types were removed, added or unified into others. Byte- and Unicode- strings gave me a nightmare (and they still account for many bugs in the core interpreter). On top of that, @@ -45,15 +45,8 @@ of Python incompatible with one another, and sadly, this cannot be bridged automatically by RPyC at the serialization layer. -It's not that I didn't try -- it's just too hard a feat. It's basically like -writing a 100% working `2to3 <http://docs.python.org/library/2to3.html>`_ tool, -alongside with a matching ``3to2`` one; and that, I reckon, is comparable to -the *halting problem* (of course I might be wrong here, but it still doesn't -make it feasible). - -Big words aside -- you can connect from **Python 2.x to Python 2.y**, as -long as you only use types/modules/features supported by both; and you can -connect from **Python 3.x to Python 3.y**, under the same assumption. +Big words aside -- you can connect from **Python 3.x to Python 3.y**, as +long as you only use types/modules/features supported by both. .. note:: As a side note, do not try to mix different versions of RPyC (e.g., connecting @@ -68,23 +61,23 @@ Mailing List ------------ -There is an old `mailing list <http://groups.google.com/group/rpyc>`_ that may +There is an old `mailing list <https://groups.google.com/g/rpyc>`_ that may contain useful information and that you should search before asking questions. Nowadays however, do not count on getting any answers for new questions there. Repository ---------- -RPyC is developed on `github <http://github.com/tomerfiliba/rpyc>`_, where you +RPyC is developed on `github <https://github.com/tomerfiliba-org/rpyc>`_, where you can always find the latest code or fork the project. .. _bugs: Bugs and Patches ---------------- -We're using github's `issue tracker <http://github.com/tomerfiliba/rpyc/issues>`_ +We're using github's `issue tracker <https://github.com/tomerfiliba-org/rpyc/issues>`_ for bug reports, feature requests, and overall status. -Patches are accepted through github `pull requests <http://help.github.com/pull-requests/>`_. +Patches are accepted through github `pull requests <https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request>`_. .. _dependencies: @@ -95,8 +88,5 @@ provide more features, and if you wish to use any of those, you must install them: -* `PyWin32 <http://sourceforge.net/projects/pywin32/files/pywin32/>`_ - Required +* `PyWin32 <https://sourceforge.net/projects/pywin32/files/pywin32/>`_ - Required for ``PipeStream`` on Windows - -* `zlib for IronPython <https://bitbucket.org/jdhardy/ironpythonzlib>`_ - Required - for IronPython prior to v2.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/tutorial/tut4.rst new/rpyc-6.0.2/docs/tutorial/tut4.rst --- old/rpyc-6.0.1/docs/tutorial/tut4.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/tutorial/tut4.rst 2025-04-18 18:45:58.000000000 +0200 @@ -5,9 +5,9 @@ Before we dive into asynchronous invocation, we have to cover once last topic: `callbacks <http://en.wikipedia.org/wiki/Callback_(computer_science)>`_. Passing a "callback function" means treating functions (or any callable objects in our case) as -`first-class objects <http://en.wikipedia.org/wiki/First-class_object>`_, i.e., like any +`first-class objects <https://en.wikipedia.org/wiki/First-class_object>`_, i.e., like any other value in the language. In ``C`` and ``C++`` this is done with -`function pointers <http://en.wikipedia.org/wiki/Function_pointer>`_, but in python, +`function pointers <https://en.wikipedia.org/wiki/Function_pointer>`_, but in python, there's no special machinery for it. Surely you've seen callbacks before:: >>> def f(x): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/docs/tutorial/tut5.rst new/rpyc-6.0.2/docs/tutorial/tut5.rst --- old/rpyc-6.0.1/docs/tutorial/tut5.rst 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/docs/tutorial/tut5.rst 2025-04-18 18:45:58.000000000 +0200 @@ -11,7 +11,7 @@ when you invoke a function, you block until the result arrives. Asynchronous invocation allows you to start the request and continue rather than waiting. Instead of getting the result of the call, you get an object known as an -``AsyncResult`` (also known as a `"future" or "promise" <http://en.wikipedia.org/wiki/Futures_and_promises>`_) +``AsyncResult`` (also known as a `"future" or "promise" <https://en.wikipedia.org/wiki/Futures_and_promises>`_) that will **eventually** hold the result. Note that there is no guarantee on execution order for async requests! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/rpyc/core/netref.py new/rpyc-6.0.2/rpyc/core/netref.py --- old/rpyc-6.0.1/rpyc/core/netref.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/rpyc/core/netref.py 2025-04-18 18:45:58.000000000 +0200 @@ -248,13 +248,14 @@ method.__doc__ = doc return method elif name == "__array__": - def __array__(self): + def __array__(self, *args, **kwargs): # Note that protocol=-1 will only work between python # interpreters of the same version. if not object.__getattribute__(self,'____conn__')._config["allow_pickle"]: # Security check that server side allows pickling per #551 raise ValueError("pickling is disabled") - return pickle.loads(syncreq(self, consts.HANDLE_PICKLE, -1)) + array = pickle.loads(syncreq(self, consts.HANDLE_PICKLE, -1)) + return array.__array__(*args, **kwargs) __array__.__doc__ = doc return __array__ else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/rpyc/utils/authenticators.py new/rpyc-6.0.2/rpyc/utils/authenticators.py --- old/rpyc-6.0.1/rpyc/utils/authenticators.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/rpyc/utils/authenticators.py 2025-04-18 18:45:58.000000000 +0200 @@ -48,7 +48,7 @@ to restrict the available ciphers. New in Python 2.7/3.2 :param ssl_version: the SSL version to use - Refer to `ssl.SSLContext <http://docs.python.org/dev/library/ssl.html#ssl.SSLContext>`_ + Refer to `ssl.SSLContext <https://docs.python.org/dev/library/ssl.html#ssl.SSLContext>`_ for more info. Clients can connect to this authenticator using diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/rpyc/utils/classic.py new/rpyc-6.0.2/rpyc/utils/classic.py --- old/rpyc-6.0.1/rpyc/utils/classic.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/rpyc/utils/classic.py 2025-04-18 18:45:58.000000000 +0200 @@ -98,7 +98,7 @@ :param ipv6: whether to create an IPv6 socket or an IPv4 one The following arguments are passed to - `ssl.SSLContext <http://docs.python.org/dev/library/ssl.html#ssl.SSLContext>`_ and + `ssl.SSLContext <https://docs.python.org/dev/library/ssl.html>`_ and its corresponding methods: :param keyfile: see ``ssl.SSLContext.load_cert_chain``. May be ``None`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/rpyc/utils/factory.py new/rpyc-6.0.2/rpyc/utils/factory.py --- old/rpyc-6.0.1/rpyc/utils/factory.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/rpyc/utils/factory.py 2025-04-18 18:45:58.000000000 +0200 @@ -183,7 +183,7 @@ def ssh_connect(remote_machine, remote_port, service=VoidService, config={}): """ Connects to an RPyC server over an SSH tunnel (created by plumbum). - See `Plumbum tunneling <http://plumbum.readthedocs.org/en/latest/remote.html#tunneling>`_ + See `Plumbum tunneling <https://plumbum.readthedocs.org/en/latest/remote.html#tunneling>`_ for further details. .. note:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/rpyc/utils/registry.py new/rpyc-6.0.2/rpyc/utils/registry.py --- old/rpyc-6.0.1/rpyc/utils/registry.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/rpyc/utils/registry.py 2025-04-18 18:45:58.000000000 +0200 @@ -1,8 +1,8 @@ """ RPyC Registry Server maintains service information on RPyC services for *Service Registry and Discovery patterns*. Service Registry and Discovery patterns solve the connectivity problem for communication between services and external consumers. RPyC services will register with the server when :code:`auto_register` is :code:`True`. -Service registries such as `Avahi <http://en.wikipedia.org/wiki/Avahi_(software)>`_ and -`Bonjour <http://en.wikipedia.org/wiki/Bonjour_(software)>`_ are alternatives to the RPyC Registry Server. These alternatives do no support Windows and have more restrictive licensing. +Service registries such as `Avahi <https://en.wikipedia.org/wiki/Avahi_(software)>`_ and +`Bonjour <https://en.wikipedia.org/wiki/Bonjour_(software)>`_ are alternatives to the RPyC Registry Server. These alternatives do no support Windows and have more restrictive licensing. Refer to :file:`rpyc/scripts/rpyc_registry.py` for more info. """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/rpyc/utils/zerodeploy.py new/rpyc-6.0.2/rpyc/utils/zerodeploy.py --- old/rpyc-6.0.1/rpyc/utils/zerodeploy.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/rpyc/utils/zerodeploy.py 2025-04-18 18:45:58.000000000 +0200 @@ -1,7 +1,7 @@ """ .. versionadded:: 3.3 -Requires [plumbum](http://plumbum.readthedocs.org/) +Requires [plumbum](https://plumbum.readthedocs.io/en/latest/) """ from __future__ import with_statement from subprocess import TimeoutExpired @@ -47,13 +47,13 @@ pass sys.path.insert(0, here) -from $MODULE$ import $SERVER$ as ServerCls -from rpyc.core.service import SlaveService +from $SERVER_MODULE$ import $SERVER_CLASS$ as ServerCls +from $SERVICE_MODULE$ import $SERVICE_CLASS$ as ServiceCls logger = None $EXTRA_SETUP$ -t = ServerCls(SlaveService, hostname = "localhost", port = 0, reuse_addr = True, logger = logger) +t = ServerCls(ServiceCls, hostname = "localhost", port = 0, reuse_addr = True, logger = logger) thd = t._start_in_thread() sys.stdout.write(f"{t.port}\n") @@ -85,11 +85,19 @@ :param remote_machine: a plumbum ``SshMachine`` or ``ParamikoMachine`` instance, representing an SSH connection to the desired remote machine :param server_class: the server to create (e.g., ``"ThreadedServer"``, ``"ForkingServer"``) + :param service_class: the service to serve (e.g., ``"SlaveService"``, ...) + :param server_script: the script that is executed by ``python_executable`` on the remote host + to run the server. :param extra_setup: any extra code to add to the script """ - def __init__(self, remote_machine, server_class="rpyc.utils.server.ThreadedServer", - extra_setup="", python_executable=None): + def __init__(self, + remote_machine, + server_class="rpyc.utils.server.ThreadedServer", + service_class="rpyc.core.service.SlaveService", + server_script=SERVER_SCRIPT, + extra_setup="", + python_executable=None): self.proc = None self.tun = None self.remote_machine = remote_machine @@ -101,9 +109,21 @@ copy(rpyc_root, tmp / "rpyc") script = (tmp / "deployed-rpyc.py") - modname, clsname = server_class.rsplit(".", 1) - script.write(SERVER_SCRIPT.replace("$MODULE$", modname).replace( - "$SERVER$", clsname).replace("$EXTRA_SETUP$", extra_setup)) + + server_modname, server_clsname = server_class.rsplit(".", 1) + service_modname, service_clsname = service_class.rsplit(".", 1) + + for source, target in ( + ("$SERVER_MODULE$", server_modname), + ("$SERVER_CLASS$", server_clsname), + ("$SERVICE_MODULE$", service_modname), + ("$SERVICE_CLASS$", service_clsname), + ("$EXTRA_SETUP$", extra_setup), + ): + server_script = server_script.replace(source, target) + + script.write(server_script) + if isinstance(python_executable, BoundCommand): cmd = python_executable elif python_executable: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/rpyc/version.py new/rpyc-6.0.2/rpyc/version.py --- old/rpyc-6.0.1/rpyc/version.py 2024-09-25 06:24:13.000000000 +0200 +++ new/rpyc-6.0.2/rpyc/version.py 2025-04-18 18:45:58.000000000 +0200 @@ -1,3 +1,3 @@ -__version__ = '6.0.1' +__version__ = '6.0.2' version = tuple(__version__.split('.')) -release_date = "2024-09-24" +release_date = "2024-04-18" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpyc-6.0.1/tests/test_numpy.py new/rpyc-6.0.2/tests/test_numpy.py --- old/rpyc-6.0.1/tests/test_numpy.py 1970-01-01 01:00:00.000000000 +0100 +++ new/rpyc-6.0.2/tests/test_numpy.py 2025-04-18 18:45:58.000000000 +0200 @@ -0,0 +1,35 @@ +from __future__ import with_statement +import rpyc +import unittest +try: + import numpy as np + _numpy_import_failed = False +except Exception: + _numpy_import_failed = True + + +class MyService(rpyc.Service): + + def exposed_create_array(self, array): + return np.array(array, dtype=np.int64, copy=True) + + +@unittest.skipIf(_numpy_import_failed, "Skipping since numpy cannot be imported") +class TestNumpy(unittest.TestCase): + def setUp(self): + self.server = rpyc.utils.server.OneShotServer(MyService, port=0, protocol_config={"allow_pickle":True}) + self.server.logger.quiet = False + self.server._start_in_thread() + self.conn = rpyc.connect("localhost", port=self.server.port, config={"allow_pickle":True}) + + def tearDown(self): + self.conn.close() + + def test_numpy(self): + remote_array = self.conn.root.create_array(np.array([0.])) + self.assertEqual(remote_array[0], 0) + self.assertIsInstance(remote_array[0], np.int64) + + +if __name__ == "__main__": + unittest.main()