Hello community, here is the log from the commit of package python-Pyro4 for openSUSE:Factory checked in at 2019-09-30 15:55:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-Pyro4 (Old) and /work/SRC/openSUSE:Factory/.python-Pyro4.new.2352 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Pyro4" Mon Sep 30 15:55:17 2019 rev:5 rq:732901 version:4.76 Changes: -------- --- /work/SRC/openSUSE:Factory/python-Pyro4/python-Pyro4.changes 2019-03-19 09:58:11.808107676 +0100 +++ /work/SRC/openSUSE:Factory/.python-Pyro4.new.2352/python-Pyro4.changes 2019-09-30 15:55:17.305872978 +0200 @@ -1,0 +2,10 @@ +Tue Sep 24 09:56:04 UTC 2019 - Tomáš Chvátal <[email protected]> + +- Update to 4.76: + * corrected bogus space in worker thread name + * thread server can now be cleanly stopped with SIGINT / Ctrl-C on Windows + * the behavior of the NATPORT config item has been corrected to be in line with the API behavior of the Daemon + * certs are now included in sdist archive so the ssl unit tests also run as intended + * now correctly checks for write access to the correct logfile location, instead of assuming the current directory + +------------------------------------------------------------------- Old: ---- Pyro4-4.75.tar.gz New: ---- Pyro4-4.76.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-Pyro4.spec ++++++ --- /var/tmp/diff_new_pack.FCjzqe/_old 2019-09-30 15:55:17.793871680 +0200 +++ /var/tmp/diff_new_pack.FCjzqe/_new 2019-09-30 15:55:17.797871669 +0200 @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-Pyro4 -Version: 4.75 +Version: 4.76 Release: 0 Summary: Distributed object middleware for Python (RPC) License: MIT ++++++ Pyro4-4.75.tar.gz -> Pyro4-4.76.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/MANIFEST.in new/Pyro4-4.76/MANIFEST.in --- old/Pyro4-4.75/MANIFEST.in 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/MANIFEST.in 2019-03-08 23:17:15.000000000 +0100 @@ -6,6 +6,7 @@ recursive-include examples * recursive-include docs * recursive-include contrib * +recursive-include certs * global-exclude */.svn/* global-exclude */.idea/* global-exclude *.class diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/PKG-INFO new/Pyro4-4.76/PKG-INFO --- old/Pyro4-4.75/PKG-INFO 2019-01-19 13:16:41.000000000 +0100 +++ new/Pyro4-4.76/PKG-INFO 2019-06-05 23:31:58.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: Pyro4 -Version: 4.75 +Version: 4.76 Summary: distributed object middleware for Python (RPC) Home-page: http://pyro4.readthedocs.io Author: Irmen de Jong diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/certs/client_cert.pem new/Pyro4-4.76/certs/client_cert.pem --- old/Pyro4-4.75/certs/client_cert.pem 1970-01-01 01:00:00.000000000 +0100 +++ new/Pyro4-4.76/certs/client_cert.pem 2018-08-16 09:50:01.000000000 +0200 @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDjzCCAnegAwIBAgIJAJv9mHLZbwZsMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV +BAYTAk5MMRMwEQYDVQQIDApTb21lLVN0YXRlMRYwFAYDVQQKDA1SYXpvcnZpbmUu +bmV0MQ4wDAYDVQQLDAVQeXJvNDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTE3MDgw +MzE0MDc0MloXDTIxMDkxMTE0MDc0MlowXjELMAkGA1UEBhMCTkwxEzARBgNVBAgM +ClNvbWUtU3RhdGUxFjAUBgNVBAoMDVJhem9ydmluZS5uZXQxDjAMBgNVBAsMBVB5 +cm80MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDnlY+rpRE61q8uCOONDFPYJZjcW+IRjIjq/Aone84CUFv0kl0UR2VO +Cihq4offI3A/ILZHnYUw4xb/ThXM00y+7z4691i0qYn1rac02Un/r5UgqJbo/JQP +OGRwxVhwfltC9aDMoJbNgJ/1z04P3ENvPClXVF2mPtcscPG+Ot1v+Ov1yeBzCkuO +7CIB0TKIL0ShmscPKccxbKnSpEqeJp+2xGlasKZGSCs67+grMg0H+Y3aoDmjB65o +6JH5aFeqndZHbzsxQuKCSxy4Y+o75Xm1QgleP8UYHHMBIbPkf0TYvDfrnSw7dXdI +rNbgW9xhbJwG42/kIA+TO2XrlPfEsfD1AgMBAAGjUDBOMB0GA1UdDgQWBBQJb0wj +f8O5fNvWScUYFjOHFPLmgzAfBgNVHSMEGDAWgBQJb0wjf8O5fNvWScUYFjOHFPLm +gzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAfJBJVu21tbfTv8Ucs +qKf8qoOZUHa+fyhLOdzXSISesh5nUsAjkwh7jCqx93Q7EJB7SHWss8PDEQQ3orcM +W+kjSpuxWIxP/C2F4Gn/RGM9w1aorD34DkLrGV2Ej7tKak2BrL5rUHkdvTzoIi8j +70RqV5yeWV6WpclqWWbXrJXquB0u6O5nR2gs3IwDbbmGpcDBHIBeyZc0syCzC0t1 +RtmGYXoLXxUYHnTVYBAF6Th6hEXO4SXKSf3F01HThVL2VWuKhGv+6UdmPW5wDDs8 +nvf8IgvIqGJhzWXk8REeT05iIC3t+8iEHAHTilN1lFFitSKBP0U5xqTbJFUFjkoF +mb4c +-----END CERTIFICATE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/certs/client_key.pem new/Pyro4-4.76/certs/client_key.pem --- old/Pyro4-4.75/certs/client_key.pem 1970-01-01 01:00:00.000000000 +0100 +++ new/Pyro4-4.76/certs/client_key.pem 2018-08-16 09:50:01.000000000 +0200 @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDnlY+rpRE61q8u +COONDFPYJZjcW+IRjIjq/Aone84CUFv0kl0UR2VOCihq4offI3A/ILZHnYUw4xb/ +ThXM00y+7z4691i0qYn1rac02Un/r5UgqJbo/JQPOGRwxVhwfltC9aDMoJbNgJ/1 +z04P3ENvPClXVF2mPtcscPG+Ot1v+Ov1yeBzCkuO7CIB0TKIL0ShmscPKccxbKnS +pEqeJp+2xGlasKZGSCs67+grMg0H+Y3aoDmjB65o6JH5aFeqndZHbzsxQuKCSxy4 +Y+o75Xm1QgleP8UYHHMBIbPkf0TYvDfrnSw7dXdIrNbgW9xhbJwG42/kIA+TO2Xr +lPfEsfD1AgMBAAECggEAG37JWQK3Ifo9QETz51owVjhYhskt9RFvbB7Sgc+ULPgn +gskh3feAEpzoIZCVuyt09znGCoisOJqtr1AxDGmF8iFrjQqy8Hg0lgOxF3g47e+F +0CPUDwN1/LygSDdWAb0uzqtlFQZ4ARwlYcTkKsPnCbzl16V/nO5XE8KxIPnSMqns +T712i2WmOm+AZf5C4vOBlBYwJpv7cYWuT0Mow5rUMS2tkT3yD3MnVDGJfhTGVyrf +M5V6ijGaPS1xLuEv9tWkAo1CMyQCG6/YIaf6zIzc56rsPiNFvCE7C+vw6nu3er2l +IH6GT2I2w1DbSvQ13eLMcLhkod+x2jHWT+dPdz8lnQKBgQD/aiLZbb89WrcVzz40 +HTCN4ovxhE144k24rPCkSpPCrS8NdRRJZAGM9ReuZVLpQlsNsqtMz/l5Hzgf2kO0 +UYO/Qj352+nX83vOEzXFHtmZjgCV4jf5xNRNLSHr4XheMxi4d84+0h2cGFYBiPrL +zjXxt9MQuvtv48OVF3klfGxJqwKBgQDoHXFS/i4l7CnmWHQ8VHpet7IlKy5bv7Pr +82oEZa60PYmwBspp7rSL74z1lRqkpU3AESrHhp9ib04gc56r96FZgZS42SyEul8w +EGZbcqo+j45xDD/+JMLtXZcQWK3wVnFUJolAD5sZrsGLBmTjGmnQp2hej0nxLxmS +U2nqWOZP3wKBgQCXWJsB3+g8QO7QO5eOZeWJjb6DBHSrtt17Gu8VSyO3bcu926yD +uIC6t9iqfFve4HT37vFWeL5JKVimdz07MjoxMN1smwU784lfGT75aUhjlyN9rSii +FiH/AUlibp5Wo0x4snVCAFuPTVRZYIPMFIseimDFPycSrBIO3HPq5Il+NQKBgCyP +AmNBQlCrXnvGvUGbogYu03cJLBQW4A5Koy6G6pvVOGpfU1o0pdo7OV8nqX6z8RIO ++Zxl/pDh9yiJqYsvtXy+QHOf1UkBkiZi75Nclsv9uQWAqYQ7QGRa1BYiP/nkTksu +Pqjalha/Eo6CwrlKJ8gTaxjD/xjaxtjtRGblfAkXAoGAfsn7EyKe/iaRASLeypML +chsPlFiVm32F/IkJZmuor5jCBSgekahYWw5eJGvhybW8juNmvC61Wq+dmYTDf7YW +Uy1e252KWguFABFdax66o3hy/pXrfF/xk3oQMGST3PwqhCHIgp4jjWnWQffBDcTz +TUducolvUDE0xfqqLlgUBKA= +-----END PRIVATE KEY----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/certs/readme.txt new/Pyro4-4.76/certs/readme.txt --- old/Pyro4-4.75/certs/readme.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/Pyro4-4.76/certs/readme.txt 2018-08-16 09:50:01.000000000 +0200 @@ -0,0 +1,12 @@ +These SSL/TLS certificates are self-signed and have no CA trust chain. +They contain some info to see that they're for Pyro4 (O=Razorvine.net, OU=Pyro4, CN=localhost) +They're meant to be used for testing purposes. There is no key password. + +It's easy to make your own certs by the way, it's mentioned in the docs of the ssl module: +https://docs.python.org/3/library/ssl.html#self-signed-certificates + +$ openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem + + +It's also possible to make your own CA certs and sign your client and server certs +with them, but that is a lot more elaborate. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/certs/server_cert.pem new/Pyro4-4.76/certs/server_cert.pem --- old/Pyro4-4.75/certs/server_cert.pem 1970-01-01 01:00:00.000000000 +0100 +++ new/Pyro4-4.76/certs/server_cert.pem 2018-08-16 09:50:01.000000000 +0200 @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDjzCCAnegAwIBAgIJANFjq4K4t03mMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV +BAYTAk5MMRMwEQYDVQQIDApTb21lLVN0YXRlMRYwFAYDVQQKDA1SYXpvcnZpbmUu +bmV0MQ4wDAYDVQQLDAVQeXJvNDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTE3MDgw +MzE0MDcxNFoXDTIxMDkxMTE0MDcxNFowXjELMAkGA1UEBhMCTkwxEzARBgNVBAgM +ClNvbWUtU3RhdGUxFjAUBgNVBAoMDVJhem9ydmluZS5uZXQxDjAMBgNVBAsMBVB5 +cm80MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDpXbWk/AkfiR0Dqs9S84CLQ8sNmpgj7IYDmNgUFuj+a7JQOpHjtfMK +JS7WtWXbWDY0CvzSWE1bxmVru0uOBywd1eUH8BHfYR+AQzEJ3IFU9K2yxZyT1nZ3 +DPY3gmsT9D2J1NMvy+drsDL/qH/MRcMRmhBmw7QSuGrViox2Vu5dFhxx+3cEMPTj +OU+dXtOYmsWQp94lE7LvOWdstTQmAqR/eKj8+qmewi9dFsozkSfaI541s9OHMNVF +ECx0qpKiTyeDA9CLcHe8WCHL0TvIFXTXjUUJQUUiCueZ6ub1ZqhRhWz7hm9iz6NI +aV4GIicfEfr0+ocZO7peidwpTVKdBWfTAgMBAAGjUDBOMB0GA1UdDgQWBBTo4uUt +4+xM4sXDBqmw7Js3IGk5czAfBgNVHSMEGDAWgBTo4uUt4+xM4sXDBqmw7Js3IGk5 +czAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBlB7wPTI9EAWKoigEW +zkXMMBGSn7wqdCquaU2CgEi+N2LlaitfD1/sH36Xj8AuyEujT7frrs6q/P6RkRlE +PRuHlAV07GUWPOiqskT86hYMbxIl5ygvkCYSwcvrBkFGvVN2hUPTqtwqckQRUyzK ++w1m2nfldlG9/kto7lyV3MuCc8f0WUYgS3e74uwnl3Qr1Sjrr74+pdK39uMm1dXw +ho8rfaDH+fEqBymwI+3DA9QVoi1vTUTLPbP4SK8nvLa1CiV2DaRmmw+eOv87qDGl +fh3llz7+UJFNco6uquuXHeDtKvcNCVlj3mUfAhP1SzGG4mSvAQeEjwSjTEZQTBOc +XAue +-----END CERTIFICATE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/certs/server_key.pem new/Pyro4-4.76/certs/server_key.pem --- old/Pyro4-4.75/certs/server_key.pem 1970-01-01 01:00:00.000000000 +0100 +++ new/Pyro4-4.76/certs/server_key.pem 2018-08-16 09:50:01.000000000 +0200 @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDpXbWk/AkfiR0D +qs9S84CLQ8sNmpgj7IYDmNgUFuj+a7JQOpHjtfMKJS7WtWXbWDY0CvzSWE1bxmVr +u0uOBywd1eUH8BHfYR+AQzEJ3IFU9K2yxZyT1nZ3DPY3gmsT9D2J1NMvy+drsDL/ +qH/MRcMRmhBmw7QSuGrViox2Vu5dFhxx+3cEMPTjOU+dXtOYmsWQp94lE7LvOWds +tTQmAqR/eKj8+qmewi9dFsozkSfaI541s9OHMNVFECx0qpKiTyeDA9CLcHe8WCHL +0TvIFXTXjUUJQUUiCueZ6ub1ZqhRhWz7hm9iz6NIaV4GIicfEfr0+ocZO7peidwp +TVKdBWfTAgMBAAECggEAH3s1yuj5LhjoIhuD1nPk7mSZ2t71ETuSJKAU3jjs+415 +w5rzHV3pSIAVnn9gG0P+I+0riBDDdtL/0ZW1rpZHHEtDl1uKfbDzd/EYh3UIuXY8 +jHZeFg+DcbH88SYV3d5AAv0D9Fm0gXGGn7iSbPMoSpKXDdXuz+uy9dW39yrpAwN7 +piW/4M4QVYtl6yAoqzemwf7QQi9T1fe+K0y4EknX825JfO0rYhK0RYA4XQPTh/Fs +jaH10c5IfcBW7LEbJCooemXdR4qFUxgKP3C2R2GgcocgAaZKqVL+TT5/lfeR1KN2 +nv8GR+JJvNbKLLRE598S6VOoLVTdTE3wuqc64DD28QKBgQD2R0Ygr9a9GjusjryK +tnnta8I+SzVrL3nnvX9pAjMyg9lWk3Wpq8U2EVHxoow7yG3FQCO5HMezz72z/CYq +u5L1uGubN/QHjokdeItn0YAN/lAWPMgj2q3TRuCErht45v16RWFLsQzX5xgZ4APN +NbSJSo2fxrSbAs3KoXBiQpw0CwKBgQDyk/OtwrSV50lX7h01eM5ZcWHWm11AcYzS +YatQr0s5p9EZgekQEhWa+veq7M3j0spOFakFbelPcH3MU5GHG6h09AVLfqLlScUE +ZfNXKP+s3BbM9oI2kpKDmGzIBDK5J1+iQihYdHHQwyT9+WXMBeqNieuZuHsO/klm +2MvW6ufwWQKBgQDrnwM0EKdlYqzHCgTOvYhnoxpDGRdxhgmesoksgSNUaBrOnuQK +wcE7WlTI1thN9hM3jYbf+u4BVXbMtSga6DzRBHFHHsBFXpRGcucFG8XlHXOn4t0k +mHqH0Z7KsfysrmrCyZAtp6V/BqTjVJSuh3xDgeV/gM+YIpWbENuB1vK1QwKBgCf0 +3N+TQcGrXjZgn2kOZBbxiScbYknaKlMBCYH5zc9KaDPmZShjgjGMAz2hUeyj7PTd +toCRcSvHoMEGRuNVV/MjureLvXM9Knml/WYu96ZWfl72f85TaFTKx6hOoLhE1wjY +EuM3EwRLEI3RBcaMdu0neapRa9u1YQvSzAizms7JAoGBALI4qL+MFsaumjDDUWzU +8Wvqj+NTId4/SNypLr3iG2FHLeGtBTro9aHx/H/OWMZNgghGOZAimZKnSXNHd1f8 +tJzBsFbqEden93kw9PMR3uvzjoVVj6HjHWkJhqWQMRvNU1QSzTHAFfsrDjNF1MVw +0lNd6vPevCXhdZ7dS/qCcJAJ +-----END PRIVATE KEY----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/docs/source/changelog.rst new/Pyro4-4.76/docs/source/changelog.rst --- old/Pyro4-4.75/docs/source/changelog.rst 2019-01-19 13:14:23.000000000 +0100 +++ new/Pyro4-4.76/docs/source/changelog.rst 2019-06-05 23:14:48.000000000 +0200 @@ -2,6 +2,18 @@ Change Log ********** +**Pyro 4.76** + +- corrected bogus space in worker thread name +- thread server can now be cleanly stopped with SIGINT / Ctrl-C on Windows + (if the selectors module is available which is also used by the multiplex server) +- the behavior of the NATPORT config item has been corrected to be in line with the API behavior of the Daemon: + if you leave this at 0 (the default), it will now correctly replicate the internal port number as NAT port + (instead of crashing with a configuration error) +- certs are now included in sdist archive so the ssl unit tests also run as intended +- now correctly checks for write access to the correct logfile location, instead of assuming the current directory + + **Pyro 4.75** - fixed distributed-mandelbrot example to actually run multiple concurrent calculations. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/docs/source/config.rst new/Pyro4-4.76/docs/source/config.rst --- old/Pyro4-4.75/docs/source/config.rst 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/docs/source/config.rst 2019-03-07 21:42:38.000000000 +0100 @@ -91,7 +91,7 @@ NS_BCHOST str None Hostname for the broadcast responder of the name server. Used by the server only. NS_AUTOCLEAN float 0.0 Specify a recurring period in seconds where the Name server checks its registrations and removes the ones that are not available anymore. (0=disabled, otherwise should be >=3) NATHOST str None External hostname in case of NAT (used by the server) -NATPORT int None External port in case of NAT (used by the server) +NATPORT int 0 External port in case of NAT (used by the server) 0=replicate internal port number as NAT port BROADCAST_ADDRS str <broadcast>, 0.0.0.0 List of comma separated addresses that Pyro should send broadcasts to (for NS locating in clients) ONEWAY_THREADED bool True Enable to make oneway calls be processed in their own separate thread POLLTIMEOUT float 2.0 For the multiplexing server only: the timeout of the select or poll calls diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/examples/eventloop/Readme.txt new/Pyro4-4.76/examples/eventloop/Readme.txt --- old/Pyro4-4.75/examples/eventloop/Readme.txt 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/examples/eventloop/Readme.txt 2019-03-07 21:34:54.000000000 +0100 @@ -4,7 +4,7 @@ Pyro objects. This particular example uses select to wait for the set of objects (sockets, really) and calls the correct event handler. You can add your own application's sockets easily this way. -See the 'sever_threads.py' how this is done. +See the 'server_threads.py' how this is done. Since Pyro 4.44 it is possible to easily merge/combine the event loops of different daemons. This way you don't have to write your own event diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/setup.py new/Pyro4-4.76/setup.py --- old/Pyro4-4.75/setup.py 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/setup.py 2019-03-08 23:14:45.000000000 +0100 @@ -1,6 +1,7 @@ from __future__ import print_function import sys import re +import unittest try: # try setuptools first, to get access to build_sphinx and test commands @@ -12,6 +13,13 @@ using_setuptools = False + +def pyro_test_suite(): + testloader = unittest.TestLoader() + testsuite = testloader.discover("tests/PyroTests", pattern="test*.py") + return testsuite + + if __name__ == '__main__': with open("src/Pyro4/constants.py") as constants_file: # extract the VERSION definition from the Pyro4.constants module without importing it @@ -19,12 +27,12 @@ pyro4_version = re.match("VERSION ?= ?['\"](.+)['\"]", version_line).group(1) print('Pyro version = %s' % pyro4_version) - setupargs = { - "name": "Pyro4", - "version": pyro4_version, - "license": "MIT", - "description": "distributed object middleware for Python (RPC)", - "long_description": """Pyro means PYthon Remote Objects. + setup( + name="Pyro4", + version=pyro4_version, + license="MIT", + description="distributed object middleware for Python (RPC)", + long_description="""Pyro means PYthon Remote Objects. It is a library that enables you to build applications in which objects can talk to eachother over the network, with minimal programming effort. You can just use normal Python method calls, with almost every possible parameter @@ -38,20 +46,21 @@ The documentation can be found here: http://pyro4.readthedocs.io """, - "author": "Irmen de Jong", - "author_email": "[email protected]", - "keywords": ["distributed objects", "RPC", "remote method call", "IPC"], - "url": "http://pyro4.readthedocs.io", - "package_dir": {'': 'src'}, - "packages": ['Pyro4', 'Pyro4.socketserver', 'Pyro4.test', 'Pyro4.utils'], - "scripts": [], - "platforms": "any", - "install_requires": ["serpent>=1.27"], - "extras_require": { + author="Irmen de Jong", + author_email="[email protected]", + keywords=["distributed objects", "RPC", "remote method call", "IPC"], + url="http://pyro4.readthedocs.io", + package_dir={'': 'src'}, + packages=['Pyro4', 'Pyro4.socketserver', 'Pyro4.test', 'Pyro4.utils'], + scripts=[], + platforms="any", + test_suite="setup.pyro_test_suite", + install_requires=["serpent>=1.27"], + extras_require={ ":python_version<'3.4'": ["selectors34"] }, - "requires": ["serpent"], - "classifiers": [ + requires=["serpent"], + classifiers=[ "Development Status :: 5 - Production/Stable", "Development Status :: 6 - Mature", "Intended Audience :: Developers", @@ -69,20 +78,18 @@ "Topic :: System :: Distributed Computing", "Topic :: System :: Networking" ], - "entry_points": { + entry_points={ 'console_scripts': [ - 'pyro4-ns = Pyro4.naming:main', - 'pyro4-nsc = Pyro4.nsc:main', - 'pyro4-test-echoserver = Pyro4.test.echoserver:main', - 'pyro4-check-config = Pyro4.configuration:main', - 'pyro4-flameserver = Pyro4.utils.flameserver:main', - 'pyro4-httpgateway = Pyro4.utils.httpgateway:main' + 'pyro4-ns=Pyro4.naming:main', + 'pyro4-nsc=Pyro4.nsc:main', + 'pyro4-test-echoserver=Pyro4.test.echoserver:main', + 'pyro4-check-config=Pyro4.configuration:main', + 'pyro4-flameserver=Pyro4.utils.flameserver:main', + 'pyro4-httpgateway=Pyro4.utils.httpgateway:main' ] }, - "options": {"install": {"optimize": 0}} - } - - setup(**setupargs) + options={"install": {"optimize": 0}} + ) if len(sys.argv) >= 2 and sys.argv[1].startswith("install"): print("\nOnly the Pyro library has been installed (version %s)." % pyro4_version) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4/__init__.py new/Pyro4-4.76/src/Pyro4/__init__.py --- old/Pyro4-4.75/src/Pyro4/__init__.py 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/src/Pyro4/__init__.py 2019-06-05 23:24:03.000000000 +0200 @@ -32,12 +32,15 @@ if len(logging.root.handlers) == 0: # configure the logging with some sensible defaults. try: - import tempfile - tempfile = tempfile.TemporaryFile(dir=".") - tempfile.close() + if logfilename: + import tempfile + logfile_dir = os.path.dirname(os.path.expanduser(logfilename)) + tempfile = tempfile.TemporaryFile(dir=logfile_dir) + tempfile.close() except OSError: - # cannot write in current directory, use the default console logger + # cannot write in the desired logfile directory, use the default console logger logging.basicConfig(level=levelvalue) + logging.getLogger("Pyro4").warn("unable to write to the desired logfile (access rights?), falling back to console logger") else: # set up a basic logfile in current directory logging.basicConfig( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4/constants.py new/Pyro4-4.76/src/Pyro4/constants.py --- old/Pyro4-4.75/src/Pyro4/constants.py 2019-01-19 13:07:28.000000000 +0100 +++ new/Pyro4-4.76/src/Pyro4/constants.py 2019-06-05 23:15:54.000000000 +0200 @@ -5,7 +5,7 @@ """ # Pyro version -VERSION = "4.75" +VERSION = "4.76" # standard object name for the Daemon object DAEMON_NAME = "Pyro.Daemon" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4/core.py new/Pyro4-4.76/src/Pyro4/core.py --- old/Pyro4-4.75/src/Pyro4/core.py 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/src/Pyro4/core.py 2019-03-07 21:34:54.000000000 +0100 @@ -1113,8 +1113,8 @@ host = config.HOST if nathost is None: nathost = config.NATHOST - if natport is None: - natport = config.NATPORT or None + if natport is None and nathost is not None: + natport = config.NATPORT if nathost and unixsocket: raise ValueError("cannot use nathost together with unixsocket") if (nathost is None) ^ (natport is None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4/socketserver/threadpool.py new/Pyro4-4.76/src/Pyro4/socketserver/threadpool.py --- old/Pyro4-4.75/src/Pyro4/socketserver/threadpool.py 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/src/Pyro4/socketserver/threadpool.py 2019-02-07 22:29:05.000000000 +0100 @@ -25,7 +25,7 @@ def __init__(self, pool): super(Worker, self).__init__() self.daemon = True - self.name = "Pyro-Worker-%d " % id(self) + self.name = "Pyro-Worker-%d" % id(self) self.job_available = threading.Event() self.job = None self.pool = pool diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4/socketserver/threadpoolserver.py new/Pyro4-4.76/src/Pyro4/socketserver/threadpoolserver.py --- old/Pyro4-4.75/src/Pyro4/socketserver/threadpoolserver.py 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/src/Pyro4/socketserver/threadpoolserver.py 2019-03-02 23:07:48.000000000 +0100 @@ -7,15 +7,19 @@ """ from __future__ import print_function + import socket import logging import sys import time import threading import os + from Pyro4 import socketutil, errors, util from Pyro4.configuration import config from .threadpool import Pool, NoFreeWorkersError +from .multiplexserver import selectors + log = logging.getLogger("Pyro4.threadpoolserver") _client_disconnect_lock = threading.Lock() @@ -106,6 +110,7 @@ self.daemon = self.sock = self._socketaddr = self.locationStr = self.pool = None self.shutting_down = False self.housekeeper = None + self._selector = selectors.DefaultSelector() if selectors else None def init(self, daemon, host, port, unixsocket=None): log.info("starting thread pool socketserver") @@ -143,6 +148,8 @@ self.pool = Pool() self.housekeeper = Housekeeper(daemon) self.housekeeper.start() + if self._selector: + self._selector.register(self.sock, selectors.EVENT_READ, self) def __del__(self): if self.sock is not None: @@ -186,6 +193,10 @@ # all other (client) sockets are owned by their individual threads. assert self.sock in eventsockets try: + if self._selector: + events = self._selector.select(config.POLLTIMEOUT) + if not events: + return csock, caddr = self.sock.accept() if self.shutting_down: csock.close() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4/util.py new/Pyro4-4.76/src/Pyro4/util.py --- old/Pyro4-4.75/src/Pyro4/util.py 2018-09-03 12:27:25.000000000 +0200 +++ new/Pyro4-4.76/src/Pyro4/util.py 2019-04-16 22:14:53.000000000 +0200 @@ -929,7 +929,7 @@ if is_private_attribute(m): continue v = getattr(obj, m) - if inspect.ismethod(v) or inspect.isfunction(v): + if inspect.ismethod(v) or inspect.isfunction(v) or inspect.ismethoddescriptor(v): if getattr(v, "_pyroExposed", not only_exposed): methods.add(m) # check if the method is marked with the 'oneway' decorator: @@ -987,7 +987,8 @@ _private_dunder_methods = frozenset([ - "__init__", "__call__", "__new__", "__del__", "__repr__", "__unicode__", + "__init__", "__init_subclass__", "__class__", "__module__", "__weakref__", + "__call__", "__new__", "__del__", "__repr__", "__unicode__", "__str__", "__format__", "__nonzero__", "__bool__", "__coerce__", "__cmp__", "__eq__", "__ne__", "__hash__", "__ge__", "__gt__", "__le__", "__lt__", "__dir__", "__enter__", "__exit__", "__copy__", "__deepcopy__", "__sizeof__", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4.egg-info/PKG-INFO new/Pyro4-4.76/src/Pyro4.egg-info/PKG-INFO --- old/Pyro4-4.75/src/Pyro4.egg-info/PKG-INFO 2019-01-19 13:16:41.000000000 +0100 +++ new/Pyro4-4.76/src/Pyro4.egg-info/PKG-INFO 2019-06-05 23:31:58.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: Pyro4 -Version: 4.75 +Version: 4.76 Summary: distributed object middleware for Python (RPC) Home-page: http://pyro4.readthedocs.io Author: Irmen de Jong diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/src/Pyro4.egg-info/SOURCES.txt new/Pyro4-4.76/src/Pyro4.egg-info/SOURCES.txt --- old/Pyro4-4.75/src/Pyro4.egg-info/SOURCES.txt 2019-01-19 13:16:41.000000000 +0100 +++ new/Pyro4-4.76/src/Pyro4.egg-info/SOURCES.txt 2019-06-05 23:31:58.000000000 +0200 @@ -4,6 +4,11 @@ setup.cfg setup.py tox.ini +certs/client_cert.pem +certs/client_key.pem +certs/readme.txt +certs/server_cert.pem +certs/server_key.pem contrib/init.d/pyro4-nsd docs/Makefile docs/make.bat diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/tests/PyroTests/test_daemon.py new/Pyro4-4.76/tests/PyroTests/test_daemon.py --- old/Pyro4-4.75/tests/PyroTests/test_daemon.py 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/tests/PyroTests/test_daemon.py 2019-03-07 21:41:38.000000000 +0100 @@ -471,11 +471,8 @@ self.assertEqual("nathosttest:12345", uri.location) uri = d.uriFor("object", nat=False) self.assertNotEqual("nathosttest:12345", uri.location) - try: - _ = Pyro4.core.Daemon(nathost="bla") - self.fail("expected error") - except ValueError: - pass + d = Pyro4.core.Daemon(nathost="bla") + self.assertTrue(d.natLocationStr.startswith("bla:")) try: _ = Pyro4.core.Daemon(natport=5555) self.fail("expected error") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Pyro4-4.75/tests/PyroTests/test_socket.py new/Pyro4-4.76/tests/PyroTests/test_socket.py --- old/Pyro4-4.75/tests/PyroTests/test_socket.py 2018-08-16 09:50:01.000000000 +0200 +++ new/Pyro4-4.76/tests/PyroTests/test_socket.py 2019-03-08 23:28:42.000000000 +0100 @@ -565,7 +565,9 @@ if not os.path.isdir(cert_dir): cert_dir = "../certs" if not os.path.isdir(cert_dir): - self.fail("cannot locate test certs directory") + cert_dir = "./certs" + if not os.path.isdir(cert_dir): + self.fail("cannot locate test certs directory") try: config.SSL = True config.SSL_REQUIRECLIENTCERT = True
