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


Reply via email to