Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-txtorcon for openSUSE:Factory checked in at 2024-09-23 15:23:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-txtorcon (Old) and /work/SRC/openSUSE:Factory/.python-txtorcon.new.29891 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-txtorcon" Mon Sep 23 15:23:47 2024 rev:16 rq:1202567 version:24.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-txtorcon/python-txtorcon.changes 2024-01-03 12:23:34.792390100 +0100 +++ /work/SRC/openSUSE:Factory/.python-txtorcon.new.29891/python-txtorcon.changes 2024-09-23 15:24:42.651630171 +0200 @@ -1,0 +2,7 @@ +Mon Sep 23 08:49:42 UTC 2024 - Dirk Müller <dmuel...@suse.com> + +- update to 24.8.0: + * Fix (test) issues with Twisted 24.7.0 + * Remove usage of "six" + +------------------------------------------------------------------- Old: ---- txtorcon-23.11.0.tar.gz New: ---- txtorcon-24.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-txtorcon.spec ++++++ --- /var/tmp/diff_new_pack.4L69ai/_old 2024-09-23 15:24:43.087648197 +0200 +++ /var/tmp/diff_new_pack.4L69ai/_new 2024-09-23 15:24:43.091648363 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-txtorcon # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,19 +17,20 @@ Name: python-txtorcon -Version: 23.11.0 +Version: 24.8.0 Release: 0 Summary: Twisted-based asynchronous Tor control protocol implementation License: MIT URL: https://txtorcon.readthedocs.org Source: https://files.pythonhosted.org/packages/source/t/txtorcon/txtorcon-%{version}.tar.gz +BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools >= 36.2} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-Automat Requires: python-Twisted-tls >= 15.5.0 Requires: python-cryptography -Requires: python-six Requires: python-zope.interface >= 3.6.1 BuildArch: noarch # SECTION test requirements @@ -37,7 +38,6 @@ BuildRequires: %{python_module Automat} BuildRequires: %{python_module Twisted-tls >= 15.5.0} BuildRequires: %{python_module cryptography} -BuildRequires: %{python_module six} BuildRequires: %{python_module zope.interface >= 3.6.1} %python_subpackages @@ -51,10 +51,10 @@ sed -i '/data_files/,/\]\,/s/^/#/' setup.py %build -%python_build +%pyproject_wheel %install -%python_install +%pyproject_install # remove the tests from distribution %python_expand rm -rf %{buildroot}%{$python_sitelib}/test/ %python_expand %fdupes %{buildroot}%{$python_sitelib} @@ -69,6 +69,6 @@ %files %{python_files} %license LICENSE docs/*.rst %{python_sitelib}/txtorcon -%{python_sitelib}/txtorcon-%{version}*-info +%{python_sitelib}/txtorcon-%{version}.dist-info %{python_sitelib}/twisted/plugins/* ++++++ txtorcon-23.11.0.tar.gz -> txtorcon-24.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/Makefile new/txtorcon-24.8.0/Makefile --- old/txtorcon-23.11.0/Makefile 2023-11-20 08:48:37.000000000 +0100 +++ new/txtorcon-24.8.0/Makefile 2024-08-20 21:05:01.000000000 +0200 @@ -1,6 +1,6 @@ .PHONY: test html counts coverage sdist clean install doc integration diagrams default: test -VERSION = 23.11.0 +VERSION = 24.8.0 test: PYTHONPATH=. trial --reporter=text test @@ -119,8 +119,8 @@ gpg --verify dist/txtorcon-${VERSION}.tar.gz.asc || gpg --pinentry loopback --no-version --detach-sign --armor --local-user mee...@meejah.ca dist/txtorcon-${VERSION}.tar.gz release: - twine upload -r pypi -c "txtorcon v${VERSION} tarball" dist/txtorcon-${VERSION}.tar.gz dist/txtorcon-${VERSION}.tar.gz.asc - twine upload -r pypi -c "txtorcon v${VERSION} wheel" dist/txtorcon-${VERSION}-py3-none-any.whl dist/txtorcon-${VERSION}-py3-none-any.whl.asc + twine upload --username __token__ --password `cat PRIVATE-release-token` -r pypi -c "txtorcon v${VERSION} tarball" dist/txtorcon-${VERSION}.tar.gz dist/txtorcon-${VERSION}.tar.gz.asc + twine upload --username __token__ --password `cat PRIVATE-release-token` -r pypi -c "txtorcon v${VERSION} wheel" dist/txtorcon-${VERSION}-py3-none-any.whl dist/txtorcon-${VERSION}-py3-none-any.whl.asc venv: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/PKG-INFO new/txtorcon-24.8.0/PKG-INFO --- old/txtorcon-23.11.0/PKG-INFO 2023-11-20 08:48:41.153334100 +0100 +++ new/txtorcon-24.8.0/PKG-INFO 2024-08-20 21:53:55.427759000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: txtorcon -Version: 23.11.0 +Version: 24.8.0 Summary: Twisted-based Tor controller client, with state-tracking and configuration abstractions. https://txtorcon.readthedocs.org https://github.com/meejah/txtorcon Home-page: https://github.com/meejah/txtorcon Author: meejah diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/docs/releases.rst new/txtorcon-24.8.0/docs/releases.rst --- old/txtorcon-23.11.0/docs/releases.rst 2023-11-20 08:34:46.000000000 +0100 +++ new/txtorcon-24.8.0/docs/releases.rst 2024-08-20 21:35:46.000000000 +0200 @@ -15,7 +15,19 @@ See also :ref:`api_stability`. -`git main <https://github.com/meejah/txtorcon>`_ *will likely become v24.1.0* +`git main <https://github.com/meejah/txtorcon>`_ *will likely become v24.9.0* + + +v24.8.0 +------- + +August 20, 2024 + + * `txtorcon-24.8.0.tar.gz <http://fjblvrw2jrxnhtg67qpbzi45r7ofojaoo3orzykesly2j3c2m3htapid.onion/txtorcon-24.8.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/24.8.0>`_ (:download:`local-sig </../signatues/txtorcon-24.8.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/main/signatues/txtorcon-24.8.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v24.8.0.tar.gz>`_) + * Fix (test) issues with Twisted 24.7.0 (`#400 <https://github.com/meejah/txtorcon/pull/400>`_) + * Remove usage of "six" (`#395 <https://github.com/meejah/txtorcon/issues/395>`_, + from `a-dieste <https://github.com/a-detiste>`_ + v23.11.0 -------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/connect.py new/txtorcon-24.8.0/examples/connect.py --- old/txtorcon-23.11.0/examples/connect.py 2019-05-19 14:35:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/connect.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function from twisted.internet.task import react from twisted.internet.defer import inlineCallbacks from twisted.internet.endpoints import TCP4ClientEndpoint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/disallow_streams_by_port.py new/txtorcon-24.8.0/examples/disallow_streams_by_port.py --- old/txtorcon-23.11.0/examples/disallow_streams_by_port.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/disallow_streams_by_port.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,4 +1,3 @@ -from __future__ import print_function # # This uses a very simple custom txtorcon.IStreamAttacher to disallow # certain streams based solely on their port; by default it closes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/dns_lookups.py new/txtorcon-24.8.0/examples/dns_lookups.py --- old/txtorcon-23.11.0/examples/dns_lookups.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/dns_lookups.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - from twisted.internet.task import react from twisted.internet.defer import inlineCallbacks from twisted.internet.endpoints import clientFromString diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/hidden_echo.py new/txtorcon-24.8.0/examples/hidden_echo.py --- old/txtorcon-23.11.0/examples/hidden_echo.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/hidden_echo.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,4 +1,3 @@ -from __future__ import print_function from twisted.internet import protocol, reactor, endpoints # like the echo-server example on the front page of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/launch_tor.py new/txtorcon-24.8.0/examples/launch_tor.py --- old/txtorcon-23.11.0/examples/launch_tor.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/launch_tor.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - """ Launch a private Tor instance. """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/launch_tor2web.py new/txtorcon-24.8.0/examples/launch_tor2web.py --- old/txtorcon-23.11.0/examples/launch_tor2web.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/launch_tor2web.py 2024-03-13 23:34:03.000000000 +0100 @@ -5,8 +5,6 @@ # running tor supports, *without* resorting to looking at version # numbers. -from __future__ import print_function - import sys from twisted.internet.task import react from twisted.internet.defer import inlineCallbacks, Deferred diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/launch_tor_endpoint.py new/txtorcon-24.8.0/examples/launch_tor_endpoint.py --- old/txtorcon-23.11.0/examples/launch_tor_endpoint.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/launch_tor_endpoint.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - # Here we set up a Twisted Web server and then launch our own tor with # a configured hidden service directed at the Web server we set # up. This uses serverFromString to translate the "onion" endpoint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/launch_tor_endpoint2.py new/txtorcon-24.8.0/examples/launch_tor_endpoint2.py --- old/txtorcon-23.11.0/examples/launch_tor_endpoint2.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/launch_tor_endpoint2.py 2024-03-13 23:34:03.000000000 +0100 @@ -5,8 +5,6 @@ # up. This uses serverFromString to translate the "onion" endpoint descriptor # into a TCPHiddenServiceEndpoint object... -from __future__ import print_function - from twisted.internet import reactor from twisted.web import server, resource from twisted.internet.endpoints import serverFromString diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/launch_tor_unix_sockets.py new/txtorcon-24.8.0/examples/launch_tor_unix_sockets.py --- old/txtorcon-23.11.0/examples/launch_tor_unix_sockets.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/launch_tor_unix_sockets.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - """ Use the 'global_tor' instance from txtorcon; this is a Tor instance that either doesn't exist or is unique to this process' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/launch_tor_with_simplehttpd.py new/txtorcon-24.8.0/examples/launch_tor_with_simplehttpd.py --- old/txtorcon-23.11.0/examples/launch_tor_with_simplehttpd.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/launch_tor_with_simplehttpd.py 2024-03-13 23:34:03.000000000 +0100 @@ -11,8 +11,6 @@ ./launch_tor_with_simplehttpd.py -p 8080 -d /opt/files/ ''' -from __future__ import print_function - import SimpleHTTPServer import SocketServer import functools diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/minimal_endpoint.py new/txtorcon-24.8.0/examples/minimal_endpoint.py --- old/txtorcon-23.11.0/examples/minimal_endpoint.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/minimal_endpoint.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function from twisted.internet import reactor from twisted.internet.endpoints import serverFromString from twisted.web import server, static diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/monitor.py new/txtorcon-24.8.0/examples/monitor.py --- old/txtorcon-23.11.0/examples/monitor.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/monitor.py 2024-03-13 23:34:03.000000000 +0100 @@ -3,8 +3,6 @@ # Just listens for a few EVENTs from Tor (INFO NOTICE WARN ERR) and # prints out the contents, so functions like a log monitor. -from __future__ import print_function - from twisted.internet import task, defer from twisted.internet.endpoints import UNIXClientEndpoint import txtorcon diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/stem_relay_descriptor.py new/txtorcon-24.8.0/examples/stem_relay_descriptor.py --- old/txtorcon-23.11.0/examples/stem_relay_descriptor.py 2023-06-09 09:50:36.000000000 +0200 +++ new/txtorcon-24.8.0/examples/stem_relay_descriptor.py 2024-03-13 23:34:03.000000000 +0100 @@ -13,7 +13,6 @@ # descriptors -- by default Tor only downloads "microdescriptors" # (whose information is already available live via txtorcon.Router # instances). Set "UseMicrodescriptors 0" to download "full" descriptors -from __future__ import print_function from twisted.internet.task import react from twisted.internet.defer import inlineCallbacks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/stream_circuit_logger.py new/txtorcon-24.8.0/examples/stream_circuit_logger.py --- old/txtorcon-23.11.0/examples/stream_circuit_logger.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/stream_circuit_logger.py 2024-03-13 23:34:03.000000000 +0100 @@ -3,8 +3,6 @@ # This uses an IStreamListener and an ICircuitListener to log all # built circuits and all streams that succeed. -from __future__ import print_function - import sys from twisted.python import log from twisted.internet.task import react diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/tor_info.py new/txtorcon-24.8.0/examples/tor_info.py --- old/txtorcon-23.11.0/examples/tor_info.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/tor_info.py 2024-03-13 23:34:03.000000000 +0100 @@ -15,8 +15,6 @@ # transaction, you'll have to use TorControlProtocol's get_info # instead. -from __future__ import print_function - import sys from twisted.internet import reactor, defer from txtorcon import TorInfo, build_local_tor_connection diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_client.py new/txtorcon-24.8.0/examples/web_client.py --- old/txtorcon-23.11.0/examples/web_client.py 2023-08-11 09:41:38.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_client.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,8 +1,6 @@ # this example shows how to use Twisted's web client with Tor via # txtorcon -from __future__ import print_function - from twisted.internet.defer import inlineCallbacks from twisted.internet.task import react from twisted.internet.endpoints import TCP4ClientEndpoint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_client_authenticated.py new/txtorcon-24.8.0/examples/web_client_authenticated.py --- old/txtorcon-23.11.0/examples/web_client_authenticated.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_client_authenticated.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,8 +1,6 @@ # this example shows how to use Twisted's web client with Tor via # txtorcon -from __future__ import print_function - from twisted.internet.defer import inlineCallbacks from twisted.internet.task import react from twisted.internet.endpoints import TCP4ClientEndpoint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_client_custom_circuit.py new/txtorcon-24.8.0/examples/web_client_custom_circuit.py --- old/txtorcon-23.11.0/examples/web_client_custom_circuit.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_client_custom_circuit.py 2024-03-13 23:34:03.000000000 +0100 @@ -5,8 +5,6 @@ # do anything "special" to select your circuit hops you risk making it # easy to de-anonymize this (and all other) Tor circuits. -from __future__ import print_function - from twisted.internet.protocol import Protocol, Factory from twisted.internet.defer import inlineCallbacks, Deferred from twisted.internet.task import react diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_client_treq.py new/txtorcon-24.8.0/examples/web_client_treq.py --- old/txtorcon-23.11.0/examples/web_client_treq.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_client_treq.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,8 +1,6 @@ # just copying over most of "carml checkpypi" because it's a good # example of "I want a stream over *this* circuit". -from __future__ import print_function - from twisted.internet.defer import inlineCallbacks from twisted.internet.task import react from twisted.internet.endpoints import TCP4ClientEndpoint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_onion_service_endpoints.py new/txtorcon-24.8.0/examples/web_onion_service_endpoints.py --- old/txtorcon-23.11.0/examples/web_onion_service_endpoints.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_onion_service_endpoints.py 2024-03-13 23:34:03.000000000 +0100 @@ -11,7 +11,6 @@ # parser plugin but code without knowledge of txtorcon can still # launch a Tor instance using it. cool! -from __future__ import print_function from twisted.internet import defer, task, endpoints, error from twisted.web import server, resource diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_onion_service_ephemeral_auth.py new/txtorcon-24.8.0/examples/web_onion_service_ephemeral_auth.py --- old/txtorcon-23.11.0/examples/web_onion_service_ephemeral_auth.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_onion_service_ephemeral_auth.py 2024-03-13 23:34:03.000000000 +0100 @@ -11,7 +11,6 @@ # parser plugin but code without knowledge of txtorcon can still # launch a Tor instance using it. cool! -from __future__ import print_function from twisted.internet import defer, task, endpoints from twisted.web import server, resource diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_onion_service_ephemeral_nonanon.py new/txtorcon-24.8.0/examples/web_onion_service_ephemeral_nonanon.py --- old/txtorcon-23.11.0/examples/web_onion_service_ephemeral_nonanon.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_onion_service_ephemeral_nonanon.py 2024-03-13 23:34:03.000000000 +0100 @@ -6,7 +6,6 @@ # services. Once you publish a service like this, there's no going # back to location-hidden. -from __future__ import print_function from twisted.internet import defer, task, endpoints from twisted.web import server, resource diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_onion_service_ephemeral_unix.py new/txtorcon-24.8.0/examples/web_onion_service_ephemeral_unix.py --- old/txtorcon-23.11.0/examples/web_onion_service_ephemeral_unix.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_onion_service_ephemeral_unix.py 2024-03-13 23:34:03.000000000 +0100 @@ -11,7 +11,6 @@ # parser plugin but code without knowledge of txtorcon can still # launch a Tor instance using it. cool! -from __future__ import print_function from os.path import abspath from twisted.internet import defer, task, endpoints diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_onion_service_filesystem.py new/txtorcon-24.8.0/examples/web_onion_service_filesystem.py --- old/txtorcon-23.11.0/examples/web_onion_service_filesystem.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_onion_service_filesystem.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,6 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function import os from twisted.internet import defer, task, endpoints diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_onion_service_prop224.py new/txtorcon-24.8.0/examples/web_onion_service_prop224.py --- old/txtorcon-23.11.0/examples/web_onion_service_prop224.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_onion_service_prop224.py 2024-03-13 23:34:03.000000000 +0100 @@ -11,7 +11,6 @@ # parser plugin but code without knowledge of txtorcon can still # launch a Tor instance using it. cool! -from __future__ import print_function from twisted.internet import defer, task, endpoints from twisted.web import server, resource diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/web_onion_service_prop224_endpoints_file.py new/txtorcon-24.8.0/examples/web_onion_service_prop224_endpoints_file.py --- old/txtorcon-23.11.0/examples/web_onion_service_prop224_endpoints_file.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/web_onion_service_prop224_endpoints_file.py 2024-03-13 23:34:03.000000000 +0100 @@ -11,7 +11,6 @@ # parser plugin but code without knowledge of txtorcon can still # launch a Tor instance using it. cool! -from __future__ import print_function from twisted.internet import defer, task, endpoints from twisted.web import server, resource diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/examples/webui_server.py new/txtorcon-24.8.0/examples/webui_server.py --- old/txtorcon-23.11.0/examples/webui_server.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/examples/webui_server.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,7 +1,5 @@ #!/usr/bin/env python -from __future__ import print_function - from twisted.internet import reactor from nevow.appserver import NevowSite from nevow import loaders, tags, livepage diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/setup.py new/txtorcon-24.8.0/setup.py --- old/txtorcon-23.11.0/setup.py 2023-05-19 03:11:14.000000000 +0200 +++ new/txtorcon-24.8.0/setup.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,8 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function - from os.path import join from os import listdir from setuptools import setup diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_controller.py new/txtorcon-24.8.0/test/test_controller.py --- old/txtorcon-23.11.0/test/test_controller.py 2023-11-20 07:11:22.000000000 +0100 +++ new/txtorcon-24.8.0/test/test_controller.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,4 @@ import os -import six import functools from os.path import join from unittest.mock import Mock, patch @@ -1504,12 +1503,6 @@ yield self.tor.remove_onion_authentication("non_existing.onion") self.assertEqual(0, len(self.cfg.HidServAuth)) - def test_context_manager_py2(self): - if not six.PY2: - return - with self.assertRaises(RuntimeError): - self.tor.onion_authentication("foo.onion", "token") - @defer.inlineCallbacks def test_add_and_remove(self): yield self.tor.add_onion_authentication("foo.onion", "a_token") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_endpoints.py new/txtorcon-24.8.0/test/test_endpoints.py --- old/txtorcon-23.11.0/test/test_endpoints.py 2023-11-20 07:11:22.000000000 +0100 +++ new/txtorcon-24.8.0/test/test_endpoints.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - import os import sys from unittest.mock import patch @@ -1331,7 +1329,6 @@ def port_generator(): - # XXX six has xrange/range stuff? for x in range(65535, 0, -1): yield x diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_fsm.py new/txtorcon-24.8.0/test/test_fsm.py --- old/txtorcon-23.11.0/test/test_fsm.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/test/test_fsm.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - import txtorcon.spaghetti from txtorcon.spaghetti import State from txtorcon.spaghetti import Transition diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_onion.py new/txtorcon-24.8.0/test/test_onion.py --- old/txtorcon-23.11.0/test/test_onion.py 2023-11-20 07:11:22.000000000 +0100 +++ new/txtorcon-24.8.0/test/test_onion.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - import os import sys from unittest.mock import Mock diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_socks.py new/txtorcon-24.8.0/test/test_socks.py --- old/txtorcon-23.11.0/test/test_socks.py 2023-11-20 07:11:22.000000000 +0100 +++ new/txtorcon-24.8.0/test/test_socks.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,4 +1,4 @@ -from six import BytesIO, text_type +from io import BytesIO from unittest.mock import Mock, patch from twisted.trial import unittest @@ -768,7 +768,7 @@ d = socks.resolve_ptr(socks_ep, 'meejah.ca') self.assertEqual(1, len(fac.mock_calls)) self.assertTrue( - isinstance(fac.mock_calls[0][1][0], text_type) + isinstance(fac.mock_calls[0][1][0], str) ) return d @@ -778,7 +778,7 @@ d = socks.resolve(socks_ep, 'meejah.ca') self.assertEqual(1, len(fac.mock_calls)) self.assertTrue( - isinstance(fac.mock_calls[0][1][0], text_type) + isinstance(fac.mock_calls[0][1][0], str) ) return d @@ -788,7 +788,7 @@ d = socks.resolve_ptr(socks_ep, b'meejah.ca') self.assertEqual(1, len(fac.mock_calls)) self.assertTrue( - isinstance(fac.mock_calls[0][1][0], text_type) + isinstance(fac.mock_calls[0][1][0], str) ) return d @@ -798,7 +798,7 @@ d = socks.resolve(socks_ep, b'meejah.ca') self.assertEqual(1, len(fac.mock_calls)) self.assertTrue( - isinstance(fac.mock_calls[0][1][0], text_type) + isinstance(fac.mock_calls[0][1][0], str) ) return d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_stream.py new/txtorcon-24.8.0/test/test_stream.py --- old/txtorcon-23.11.0/test/test_stream.py 2023-08-11 09:41:38.000000000 +0200 +++ new/txtorcon-24.8.0/test/test_stream.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - from txtorcon.util import maybe_ip_addr from twisted.trial import unittest from twisted.internet import defer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_torconfig.py new/txtorcon-24.8.0/test/test_torconfig.py --- old/txtorcon-23.11.0/test/test_torconfig.py 2023-11-20 07:11:22.000000000 +0100 +++ new/txtorcon-24.8.0/test/test_torconfig.py 2024-08-20 21:04:14.000000000 +0200 @@ -1,11 +1,9 @@ -from __future__ import print_function - import os import shutil import tempfile import functools import warnings -from six import StringIO +from io import StringIO from unittest.mock import Mock, patch from os.path import join @@ -1459,8 +1457,11 @@ ) self.assertIs(tpp, fake_tor.process) calls = warn.mock_calls - self.assertEqual(1, len(calls)) - self.assertEqual(calls[0][1][1], DeprecationWarning) + # on Twisted 24.7.0 and higher, there's an extra deprecation + # warning due to returnValue being deprecated + self.assertTrue(len(calls) >= 1) + for call in calls: + self.assertEqual(call[1][1], DeprecationWarning) class ErrorTests(unittest.TestCase): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_torcontrolprotocol.py new/txtorcon-24.8.0/test/test_torcontrolprotocol.py --- old/txtorcon-23.11.0/test/test_torcontrolprotocol.py 2023-10-04 21:25:18.000000000 +0200 +++ new/txtorcon-24.8.0/test/test_torcontrolprotocol.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,6 +1,3 @@ -from __future__ import print_function -from __future__ import with_statement - from os.path import exists from twisted.python import log, failure diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_torstate.py new/txtorcon-24.8.0/test/test_torstate.py --- old/txtorcon-23.11.0/test/test_torstate.py 2023-11-20 07:11:22.000000000 +0100 +++ new/txtorcon-24.8.0/test/test_torstate.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,5 +1,3 @@ -from __future__ import print_function - from zope.interface import implementer, directlyProvides from zope.interface.verify import verifyClass from twisted.trial import unittest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/test/test_util_imports.py new/txtorcon-24.8.0/test/test_util_imports.py --- old/txtorcon-23.11.0/test/test_util_imports.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/test/test_util_imports.py 2024-03-13 23:34:03.000000000 +0100 @@ -3,7 +3,6 @@ import sys import functools from unittest import skipUnless -import six def fake_import(orig, name, *args, **kw): @@ -14,7 +13,7 @@ class TestImports(unittest.TestCase): - @skipUnless(six.PY2 and 'pypy' not in sys.version.lower(), "Doesn't work in PYPY, Py3") + @skipUnless(False and 'pypy' not in sys.version.lower(), "Doesn't work in PYPY, Py3") def test_no_GeoIP(self): """ Make sure we don't explode if there's no GeoIP module diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/__init__.py new/txtorcon-24.8.0/txtorcon/__init__.py --- old/txtorcon-23.11.0/txtorcon/__init__.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/__init__.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,10 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - from txtorcon._metadata import __version__, __author__, __contact__ from txtorcon._metadata import __license__, __copyright__, __url__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/_metadata.py new/txtorcon-24.8.0/txtorcon/_metadata.py --- old/txtorcon-23.11.0/txtorcon/_metadata.py 2023-11-20 07:12:18.000000000 +0100 +++ new/txtorcon-24.8.0/txtorcon/_metadata.py 2024-08-20 21:05:12.000000000 +0200 @@ -1,6 +1,6 @@ -__version__ = '23.11.0' +__version__ = '24.8.0' __author__ = 'meejah' __contact__ = 'mee...@meejah.ca' __url__ = 'https://github.com/meejah/txtorcon' __license__ = 'MIT' -__copyright__ = 'Copyright 2012-2023' +__copyright__ = 'Copyright 2012-2024' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/addrmap.py new/txtorcon-24.8.0/txtorcon/addrmap.py --- old/txtorcon-23.11.0/txtorcon/addrmap.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/addrmap.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,10 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - from txtorcon.interface import IAddrListener from txtorcon.util import maybe_ip_addr @@ -15,7 +10,7 @@ import shlex -class Addr(object): +class Addr: """ One address mapping (e.g. example.com -> 127.0.0.1) """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/circuit.py new/txtorcon-24.8.0/txtorcon/circuit.py --- old/txtorcon-23.11.0/txtorcon/circuit.py 2023-05-19 03:11:14.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/circuit.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,11 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - -import six import time from datetime import datetime @@ -69,7 +63,7 @@ def _add_real_target(self, real_addr, circuit, d): # joy oh joy, ipaddress wants unicode, Twisted gives us bytes... - real_host = maybe_ip_addr(six.text_type(real_addr.host)) + real_host = maybe_ip_addr(str(real_addr.host)) real_port = real_addr.port self._circuit_targets[(real_host, real_port)] = (circuit, d) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/controller.py new/txtorcon-24.8.0/txtorcon/controller.py --- old/txtorcon-23.11.0/txtorcon/controller.py 2023-08-30 01:34:05.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/controller.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,12 +1,7 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - import os import sys -import six import shlex import tempfile import functools @@ -1039,7 +1034,7 @@ raise ValueError( "The only valid Onion service versions are 2 or 3" ) - if not isinstance(ports, Sequence) or isinstance(ports, six.string_types): + if not isinstance(ports, Sequence) or isinstance(ports, str): raise ValueError("'ports' must be a sequence (list, tuple, ..)") processed_ports = yield _validate_ports(self._reactor, ports) @@ -1097,7 +1092,7 @@ been made. """ - if not isinstance(ports, Sequence) or isinstance(ports, six.string_types): + if not isinstance(ports, Sequence) or isinstance(ports, str): raise ValueError("'ports' must be a sequence (list, tuple, ..)") processed_ports = yield _validate_ports(self._reactor, ports) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/endpoints.py new/txtorcon-24.8.0/txtorcon/endpoints.py --- old/txtorcon-23.11.0/txtorcon/endpoints.py 2023-08-11 09:41:38.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/endpoints.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,9 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - import os import shutil import weakref diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/interface.py new/txtorcon-24.8.0/txtorcon/interface.py --- old/txtorcon-23.11.0/txtorcon/interface.py 2023-05-19 03:11:14.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/interface.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,10 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - from zope.interface import implementer from zope.interface import Interface, Attribute diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/log.py new/txtorcon-24.8.0/txtorcon/log.py --- old/txtorcon-23.11.0/txtorcon/log.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/log.py 2024-03-13 23:34:03.000000000 +0100 @@ -4,11 +4,6 @@ This module handles txtorcon debug messages. """ -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - from twisted.python import log as twlog __all__ = ['txtorlog'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/onion.py new/txtorcon-24.8.0/txtorcon/onion.py --- old/txtorcon-23.11.0/txtorcon/onion.py 2019-05-19 14:35:02.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/onion.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,6 +1,5 @@ import os import re -import six import base64 import hashlib import functools @@ -20,7 +19,7 @@ from cryptography.hazmat.primitives import serialization -class HiddenServiceClientAuth(object): +class HiddenServiceClientAuth: """ Encapsulates a single client-authorization, as parsed from a HiddenServiceDir's "client_keys" file if you have stealth or basic @@ -1375,7 +1374,7 @@ "{} 127.0.0.1:{}".format(remote, local) ) - elif isinstance(port, (six.text_type, str)): + elif isinstance(port, str): _validate_single_port_string(port) processed_ports.append(port) @@ -1407,7 +1406,7 @@ """ if not isinstance(ports, (list, tuple)): raise ValueError("'ports' must be a list of strings") - if any([not isinstance(x, (six.text_type, str)) for x in ports]): + if any([not isinstance(x, str) for x in ports]): raise ValueError("'ports' must be a list of strings") for port in ports: _validate_single_port_string(port) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/router.py new/txtorcon-24.8.0/txtorcon/router.py --- old/txtorcon-23.11.0/txtorcon/router.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/router.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,15 +1,9 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - import json from datetime import datetime from .util import NetLocation from .util import _Version -import six from base64 import b64encode, b64decode from binascii import b2a_hex, a2b_hex @@ -38,7 +32,7 @@ return b64encode(a2b_hex(hexid))[:-1].decode('ascii') -class PortRange(object): +class PortRange: """ Represents a range of ports for Router policies. """ @@ -53,7 +47,7 @@ return "%d-%d" % (self.min, self.max) -class Router(object): +class Router: """ Represents a Tor Router, including location. @@ -179,7 +173,7 @@ There is some current work in Twisted for open-ended constants (enums) support however, it seems. """ - if isinstance(flags, (six.text_type, bytes)): + if isinstance(flags, (str, bytes)): flags = flags.split() self._flags = [x.lower() for x in flags] self.name_is_unique = 'named' in self._flags diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/socks.py new/txtorcon-24.8.0/txtorcon/socks.py --- old/txtorcon-23.11.0/txtorcon/socks.py 2020-06-10 00:27:42.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/socks.py 2024-03-13 23:34:03.000000000 +0100 @@ -4,9 +4,6 @@ # Python3. Also, Tor's SOCKS5 implementation is especially simple, # since it doesn't do BIND or UDP ASSOCIATE. -from __future__ import print_function - -import six import struct from socket import inet_pton, inet_ntoa, inet_aton, AF_INET6, AF_INET @@ -41,9 +38,9 @@ def _create_ip_address(host, port): - if not isinstance(host, six.text_type): + if not isinstance(host, str): raise ValueError( - "'host' must be {}, not {}".format(six.text_type, type(host)) + "'host' must be str, not {}".format(type(host)) ) try: a = ipaddress.ip_address(host) @@ -87,13 +84,13 @@ req_type ) ) - if not isinstance(host, (bytes, str, six.text_type)): + if not isinstance(host, (bytes, str)): raise ValueError( "'host' must be text (not {})".format(type(host)) ) # XXX what if addr is None? self._req_type = req_type - self._addr = _create_ip_address(six.text_type(host), port) + self._addr = _create_ip_address(str(host), port) self._data = b'' self._on_disconnect = on_disconnect self._create_connection = create_connection @@ -646,9 +643,7 @@ :param hostname: the hostname to look up. """ - if six.PY2 and isinstance(hostname, str): - hostname = unicode(hostname) # noqa - elif six.PY3 and isinstance(hostname, bytes): + if isinstance(hostname, bytes): hostname = hostname.decode('ascii') factory = _TorSocksFactory( hostname, 0, 'RESOLVE', None, @@ -667,9 +662,7 @@ :param ip: the IP address to look up. """ - if six.PY2 and isinstance(ip, str): - ip = unicode(ip) # noqa - elif six.PY3 and isinstance(ip, bytes): + if isinstance(ip, bytes): ip = ip.decode('ascii') factory = _TorSocksFactory( ip, 0, 'RESOLVE_PTR', None, @@ -692,9 +685,7 @@ def __init__(self, socks_endpoint, host, port, tls=False): self._proxy_ep = socks_endpoint # can be Deferred assert self._proxy_ep is not None - if six.PY2 and isinstance(host, str): - host = unicode(host) # noqa - if six.PY3 and isinstance(host, bytes): + if isinstance(host, bytes): host = host.decode('ascii') self._host = host self._port = port diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/spaghetti.py new/txtorcon-24.8.0/txtorcon/spaghetti.py --- old/txtorcon-23.11.0/txtorcon/spaghetti.py 2018-05-31 20:59:02.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/spaghetti.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,13 +1,9 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - import warnings -class FSM(object): +class FSM: """ Pass callables for matcher and handler to add_handler to create transitions between states. A "matcher" is a predicate, and if a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/stream.py new/txtorcon-24.8.0/txtorcon/stream.py --- old/txtorcon-23.11.0/txtorcon/stream.py 2023-02-16 06:25:43.000000000 +0100 +++ new/txtorcon-24.8.0/txtorcon/stream.py 2024-03-13 23:34:03.000000000 +0100 @@ -11,18 +11,13 @@ """ -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - from twisted.python import log from twisted.internet import defer from txtorcon.interface import ICircuitContainer, IStreamListener from txtorcon.util import find_keywords, maybe_ip_addr -class Stream(object): +class Stream: """ Represents an active stream in Tor's state (:class:`txtorcon.TorState`). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/torconfig.py new/txtorcon-24.8.0/txtorcon/torconfig.py --- old/txtorcon-23.11.0/txtorcon/torconfig.py 2023-11-20 07:07:30.000000000 +0100 +++ new/txtorcon-24.8.0/txtorcon/torconfig.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,12 +1,7 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - import os import re -import six import functools import warnings from io import StringIO @@ -67,7 +62,7 @@ defer.returnValue(tor.process) -class TorConfigType(object): +class TorConfigType: """ Base class for all configuration types, which function as parsers and un-parsers. @@ -253,11 +248,7 @@ return '_ListWrapper' + super(_ListWrapper, self).__repr__() -if six.PY2: - setattr(_ListWrapper, '__setslice__', _wrapture(list.__setslice__)) - - -class HiddenService(object): +class HiddenService: """ Because hidden service configuration is handled specially by Tor, we wrap the config in this class. This corresponds to the @@ -424,7 +415,7 @@ # resulting class in isinstance() things and the like, because Twisted # makes it into a function instead :( so we @deprecate __init__ for now # @deprecated(_Version("txtorcon", 18, 0, 0)) -class EphemeralHiddenService(object): +class EphemeralHiddenService: ''' Deprecated as of 18.0.0. Please instead use :class:`txtorcon.EphemeralOnionService` @@ -448,7 +439,7 @@ raise ValueError( 'key_blob_or_type must be a string in the formats ' '"NEW:<ALGORITHM>" or "<ALGORITHM>:<KEY>"') - if isinstance(ports, (six.text_type, str)): + if isinstance(ports, str): ports = [ports] self._ports = [x.replace(' ', ',') for x in ports] self._keyblob = key_blob_or_type @@ -523,7 +514,7 @@ return TCP4ClientEndpoint(reactor, host, port) -class TorConfig(object): +class TorConfig: """This class abstracts out Tor's config, and can be used both to create torrc files from nothing and track live configuration of a Tor instance. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/torcontrolprotocol.py new/txtorcon-24.8.0/txtorcon/torcontrolprotocol.py --- old/txtorcon-23.11.0/txtorcon/torcontrolprotocol.py 2023-10-04 21:25:18.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/torcontrolprotocol.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,9 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - import os import re import base64 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/torinfo.py new/txtorcon-24.8.0/txtorcon/torinfo.py --- old/txtorcon-23.11.0/txtorcon/torinfo.py 2021-08-06 21:20:26.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/torinfo.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,17 +1,12 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals -from __future__ import with_statement - import functools from twisted.internet import defer from txtorcon.interface import ITorControlProtocol -class MagicContainer(object): +class MagicContainer: """ This merely contains 1 or more methods or further MagicContainer instances; see _do_setup in TorInfo. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/torstate.py new/txtorcon-24.8.0/txtorcon/torstate.py --- old/txtorcon-23.11.0/txtorcon/torstate.py 2023-08-11 09:41:38.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/torstate.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,9 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - import os import stat import warnings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/util.py new/txtorcon-24.8.0/txtorcon/util.py --- old/txtorcon-23.11.0/txtorcon/util.py 2023-10-04 21:25:18.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/util.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,9 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - +import asyncio import glob import os import hmac @@ -12,7 +9,6 @@ import subprocess import ipaddress import re -import six from twisted.internet import defer from twisted.internet.interfaces import IProtocolFactory @@ -22,9 +18,6 @@ from zope.interface import implementer from zope.interface import Interface -if six.PY3: - import asyncio - try: import GeoIP as _GeoIP GeoIP = _GeoIP @@ -148,8 +141,6 @@ TODO consider explicitly checking for .exit or .onion at the end? """ - if six.PY2 and isinstance(addr, str): - addr = unicode(addr) # noqa try: return ipaddress.ip_address(addr) except ValueError: @@ -337,10 +328,7 @@ # handeled as escape codes by string.decode('string-escape'). # This is needed so e.g. '\x00' is not unescaped as '\0' string = re.sub(r'((?:^|[^\\])(?:\\\\)*)\\([^ntr0-7\\])', r'\1\2', string) - if six.PY3: - # XXX hmmm? - return bytes(string, 'ascii').decode('unicode-escape') - return string.decode('string-escape') + return bytes(string, 'ascii').decode('unicode-escape') def default_control_port(): @@ -385,7 +373,7 @@ (This is to insert in all callback chains from user code, in case that user code is Python3 and used 'async def') """ - if six.PY3 and asyncio.iscoroutine(obj): + if asyncio.iscoroutine(obj): return defer.ensureDeferred(obj) return obj @@ -532,7 +520,7 @@ # for numeric hostnames, skip RFC1918 addresses, since no Tor exit # node will be able to reach those. Likewise ignore IPv6 addresses. try: - a = ipaddress.ip_address(six.text_type(host)) + a = ipaddress.ip_address(str(host)) except ValueError: return False # non-numeric, let Tor try it if a.is_loopback or a.is_multicast or a.is_private or a.is_reserved \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon/web.py new/txtorcon-24.8.0/txtorcon/web.py --- old/txtorcon-23.11.0/txtorcon/web.py 2023-05-19 03:11:14.000000000 +0200 +++ new/txtorcon-24.8.0/txtorcon/web.py 2024-03-13 23:34:03.000000000 +0100 @@ -1,9 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import -from __future__ import print_function -from __future__ import with_statement - from twisted.web.iweb import IAgentEndpointFactory from twisted.web.client import Agent, BrowserLikePolicyForHTTPS from twisted.internet.defer import inlineCallbacks, returnValue, Deferred @@ -17,7 +13,7 @@ @implementer(IAgentEndpointFactory) -class _AgentEndpointFactoryUsingTor(object): +class _AgentEndpointFactoryUsingTor: def __init__(self, reactor, tor_socks_endpoint, tls_context_factory): self._reactor = reactor self._proxy_ep = SingleObserver() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/txtorcon-23.11.0/txtorcon.egg-info/PKG-INFO new/txtorcon-24.8.0/txtorcon.egg-info/PKG-INFO --- old/txtorcon-23.11.0/txtorcon.egg-info/PKG-INFO 2023-11-20 08:48:41.000000000 +0100 +++ new/txtorcon-24.8.0/txtorcon.egg-info/PKG-INFO 2024-08-20 21:53:55.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: txtorcon -Version: 23.11.0 +Version: 24.8.0 Summary: Twisted-based Tor controller client, with state-tracking and configuration abstractions. https://txtorcon.readthedocs.org https://github.com/meejah/txtorcon Home-page: https://github.com/meejah/txtorcon Author: meejah