git: c46f669958ee - main - zope: Remove leaf zope ports that have no sense in absence of zope itself
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 11 Jan 2025 13:22:10 UTC
The branch main has been updated by rm:
URL: https://cgit.FreeBSD.org/ports/commit/?id=c46f669958eedea1755ce692fd664eeee2f7d720
commit c46f669958eedea1755ce692fd664eeee2f7d720
Author: Ruslan Makhmatkhanov <rm@FreeBSD.org>
AuthorDate: 2025-01-11 13:21:48 +0000
Commit: Ruslan Makhmatkhanov <rm@FreeBSD.org>
CommitDate: 2025-01-11 13:21:48 +0000
zope: Remove leaf zope ports that have no sense in absence of zope itself
---
MOVED | 5 +
devel/Makefile | 2 -
devel/py-ExtensionClass/Makefile | 18 -
devel/py-ExtensionClass/distinfo | 3 -
devel/py-ExtensionClass/pkg-descr | 2 -
devel/py-repoze.sphinx.autointerface/Makefile | 19 -
devel/py-repoze.sphinx.autointerface/distinfo | 2 -
devel/py-repoze.sphinx.autointerface/pkg-descr | 3 -
mail/Makefile | 1 -
mail/py-Products.SecureMailHost/Makefile | 18 -
mail/py-Products.SecureMailHost/distinfo | 2 -
mail/py-Products.SecureMailHost/files/patch-2to3 | 165 --------
mail/py-Products.SecureMailHost/pkg-descr | 2 -
security/Makefile | 1 -
security/py-RestrictedPython/Makefile | 18 -
security/py-RestrictedPython/distinfo | 2 -
security/py-RestrictedPython/files/patch-2to3 | 469 -----------------------
security/py-RestrictedPython/pkg-descr | 2 -
sysutils/Makefile | 1 -
sysutils/py-zdaemon/Makefile | 21 -
sysutils/py-zdaemon/distinfo | 2 -
sysutils/py-zdaemon/pkg-descr | 6 -
22 files changed, 5 insertions(+), 759 deletions(-)
diff --git a/MOVED b/MOVED
index aad3bb6a23a0..2d973f4a8cca 100644
--- a/MOVED
+++ b/MOVED
@@ -4006,3 +4006,8 @@ devel/py-Products.PloneLanguageTool||2025-01-11|Remove leaf zope ports that have
devel/py-collective.monkeypatcher||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
devel/py-diazo||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
devel/py-repoze.xmliter||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
+mail/py-Products.SecureMailHost||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
+devel/py-repoze.sphinx.autointerface||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
+devel/py-ExtensionClass||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
+security/py-RestrictedPython||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
+sysutils/py-zdaemon||2025-01-11|Remove leaf zope ports that have no sense in absence of zope itself
diff --git a/devel/Makefile b/devel/Makefile
index 86058c0787fd..c6abcdda0f61 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4342,7 +4342,6 @@
SUBDIR += py-BTrees
SUBDIR += py-DateTime
SUBDIR += py-Dumper
- SUBDIR += py-ExtensionClass
SUBDIR += py-Faker
SUBDIR += py-IBMQuantumExperience
SUBDIR += py-Jinja2
@@ -5805,7 +5804,6 @@
SUBDIR += py-regress
SUBDIR += py-remote-pdb
SUBDIR += py-repoze.lru
- SUBDIR += py-repoze.sphinx.autointerface
SUBDIR += py-repoze.tm2
SUBDIR += py-repoze.who
SUBDIR += py-represent
diff --git a/devel/py-ExtensionClass/Makefile b/devel/py-ExtensionClass/Makefile
deleted file mode 100644
index 45eb7235a4fd..000000000000
--- a/devel/py-ExtensionClass/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-PORTNAME= ExtensionClass
-PORTVERSION= 5.1
-CATEGORIES= devel python zope
-MASTER_SITES= PYPI
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-DIST_SUBDIR= zope
-
-MAINTAINER= zope@FreeBSD.org
-COMMENT= Metaclass for subclassable extension types
-WWW= https://pypi.org/project/ExtensionClass/
-
-LICENSE= ZPL21
-LICENSE_FILE= ${WRKSRC}/LICENSE.txt
-
-USES= python
-USE_PYTHON= autoplist distutils
-
-.include <bsd.port.mk>
diff --git a/devel/py-ExtensionClass/distinfo b/devel/py-ExtensionClass/distinfo
deleted file mode 100644
index ee3155cb6f7d..000000000000
--- a/devel/py-ExtensionClass/distinfo
+++ /dev/null
@@ -1,3 +0,0 @@
-TIMESTAMP = 1706485929
-SHA256 (zope/ExtensionClass-5.1.tar.gz) = 21121c5e12721ddf8fb7af90c4199ef46ea5045e9ffa98d9e20cd7c98025e3da
-SIZE (zope/ExtensionClass-5.1.tar.gz) = 36053
diff --git a/devel/py-ExtensionClass/pkg-descr b/devel/py-ExtensionClass/pkg-descr
deleted file mode 100644
index 71381879b73c..000000000000
--- a/devel/py-ExtensionClass/pkg-descr
+++ /dev/null
@@ -1,2 +0,0 @@
-This package provides a metaclass that allows classes implemented
-in extension modules to be subclassed in Python.
diff --git a/devel/py-repoze.sphinx.autointerface/Makefile b/devel/py-repoze.sphinx.autointerface/Makefile
deleted file mode 100644
index d3c0a4ed99ed..000000000000
--- a/devel/py-repoze.sphinx.autointerface/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-PORTNAME= repoze.sphinx.autointerface
-PORTVERSION= 0.8
-CATEGORIES= devel python
-MASTER_SITES= PYPI
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-
-MAINTAINER= zope@FreeBSD.org
-COMMENT= Auto-generates API docs from Zope interfaces
-WWW= http://www.repoze.org
-
-LICENSE= BSD4CLAUSE
-LICENSE_FILE= ${WRKSRC}/LICENSE.txt
-
-USES= python
-USE_PYTHON= autoplist distutils
-
-NO_ARCH= yes
-
-.include <bsd.port.mk>
diff --git a/devel/py-repoze.sphinx.autointerface/distinfo b/devel/py-repoze.sphinx.autointerface/distinfo
deleted file mode 100644
index 1646cae9bdb3..000000000000
--- a/devel/py-repoze.sphinx.autointerface/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (repoze.sphinx.autointerface-0.8.tar.gz) = 8ef0383276ab722efb1e4a6523726262058dfd82615ccf7e5004aee3fe8ecc23
-SIZE (repoze.sphinx.autointerface-0.8.tar.gz) = 8987
diff --git a/devel/py-repoze.sphinx.autointerface/pkg-descr b/devel/py-repoze.sphinx.autointerface/pkg-descr
deleted file mode 100644
index ff98eebe6368..000000000000
--- a/devel/py-repoze.sphinx.autointerface/pkg-descr
+++ /dev/null
@@ -1,3 +0,0 @@
-This package defines an extension for the Sphinx documentation system.
-The extension allows generation of API documentation by introspection of
-zope.interface instances in code.
diff --git a/mail/Makefile b/mail/Makefile
index ba7dfee1497d..7fc7b579932a 100644
--- a/mail/Makefile
+++ b/mail/Makefile
@@ -503,7 +503,6 @@
SUBDIR += procmail
SUBDIR += procmail-bgrb
SUBDIR += proxsmtp
- SUBDIR += py-Products.SecureMailHost
SUBDIR += py-afew
SUBDIR += py-aiosmtpd
SUBDIR += py-alot
diff --git a/mail/py-Products.SecureMailHost/Makefile b/mail/py-Products.SecureMailHost/Makefile
deleted file mode 100644
index 20f0f166c114..000000000000
--- a/mail/py-Products.SecureMailHost/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-PORTNAME= Products.SecureMailHost
-PORTVERSION= 1.1.2
-PORTREVISION= 1
-CATEGORIES= mail python zope
-MASTER_SITES= PYPI
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-DIST_SUBDIR= zope
-
-MAINTAINER= zope@FreeBSD.org
-COMMENT= Reimplementation of the standard Zope2 MailHost
-WWW= https://pypi.org/project/Products.SecureMailHost/
-
-LICENSE= ZPL21
-
-USES= python zip
-USE_PYTHON= distutils autoplist
-
-.include <bsd.port.mk>
diff --git a/mail/py-Products.SecureMailHost/distinfo b/mail/py-Products.SecureMailHost/distinfo
deleted file mode 100644
index 132791dc3bd2..000000000000
--- a/mail/py-Products.SecureMailHost/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (zope/Products.SecureMailHost-1.1.2.zip) = 5c46b81c06e6555cf4c3ee9facbbab1d5cc75bc7b435b7db9f5bc0862ca7dae7
-SIZE (zope/Products.SecureMailHost-1.1.2.zip) = 29352
diff --git a/mail/py-Products.SecureMailHost/files/patch-2to3 b/mail/py-Products.SecureMailHost/files/patch-2to3
deleted file mode 100644
index 8f5b763bd1e4..000000000000
--- a/mail/py-Products.SecureMailHost/files/patch-2to3
+++ /dev/null
@@ -1,165 +0,0 @@
---- Products/SecureMailHost/SecureMailHost.py.orig 2009-09-05 08:33:50 UTC
-+++ Products/SecureMailHost/SecureMailHost.py
-@@ -16,7 +16,7 @@
- $Id: SecureMailHost.py 96773 2009-09-05 14:33:50Z hannosch $
- """
-
--from config import BAD_HEADERS
-+from .config import BAD_HEADERS
- from copy import deepcopy
-
- import email.Message
-@@ -201,10 +201,10 @@ class SecureMailBase(MailBase):
- if addr:
- result = self.validateEmailAddresses(addr)
- if not result:
-- raise MailHostError, 'Invalid email address: %s' % addr
-+ raise MailHostError('Invalid email address: %s' % addr)
- result = self.validateSingleEmailAddress(mfrom)
- if not result:
-- raise MailHostError, 'Invalid email address: %s' % mfrom
-+ raise MailHostError('Invalid email address: %s' % mfrom)
-
- # create message
- if isinstance(message, email.Message.Message):
-@@ -212,7 +212,7 @@ class SecureMailBase(MailBase):
- # change the message
- msg = deepcopy(message)
- else:
-- if isinstance(message, unicode):
-+ if isinstance(message, str):
- message = message.encode(charset)
- msg = email.MIMEText.MIMEText(message, subtype, charset)
-
-@@ -228,7 +228,7 @@ class SecureMailBase(MailBase):
-
- for bad in BAD_HEADERS:
- if bad in kwargs:
-- raise MailHostError, 'Header %s is forbidden' % bad
-+ raise MailHostError('Header %s is forbidden' % bad)
- self.setHeaderOf(msg, **kwargs)
-
- # we have to pass *all* recipient email addresses to the
-@@ -251,7 +251,7 @@ class SecureMailBase(MailBase):
-
- All occurences of the key are deleted first!
- """
-- for key, val in kwargs.items():
-+ for key, val in list(kwargs.items()):
- del msg[key] # save - email.Message won't raise a KeyError
- if skipEmpty and not val:
- continue
-@@ -293,7 +293,7 @@ class SecureMailBase(MailBase):
- # stage 2: get a list of address strings using email.formataddr
- addresses = []
- for addr in addr_list:
-- if isinstance(addr, basestring):
-+ if isinstance(addr, str):
- addresses.append(email.Utils.formataddr(('', addr)))
- else:
- if len(addr) != 2:
-@@ -311,7 +311,7 @@ class SecureMailBase(MailBase):
- """Lower-level function to validate a single normalized email
- address, see validateEmailAddress
- """
-- if not isinstance(address, basestring):
-+ if not isinstance(address, str):
- return False
-
- sub = EMAIL_CUTOFF_RE.match(address);
-@@ -329,7 +329,7 @@ class SecureMailBase(MailBase):
- def validateSingleEmailAddress(self, address):
- """Validate a single email address, see also validateEmailAddresses
- """
-- if not isinstance(address, basestring):
-+ if not isinstance(address, str):
- return False
-
- sub = EMAIL_CUTOFF_RE.match(address);
-@@ -353,7 +353,7 @@ class SecureMailBase(MailBase):
- """Validate a list of possibly several email addresses, see
- also validateSingleEmailAddress
- """
-- if not isinstance(addresses, basestring):
-+ if not isinstance(addresses, str):
- return False
-
- sub = EMAIL_CUTOFF_RE.match(addresses);
---- Products/SecureMailHost/tests/common.py.orig 2004-07-18 15:21:52 UTC
-+++ Products/SecureMailHost/tests/common.py
-@@ -2,12 +2,6 @@ from Testing import ZopeTestCase
-
- from Products.SecureMailHost.SecureMailHost import SecureMailBase
-
--try:
-- True
--except NameError:
-- True=1
-- False=0
--
- ZopeTestCase.installProduct('MailHost', quiet=1)
- ZopeTestCase.installProduct('PageTemplates', quiet=1)
- ZopeTestCase.installProduct('PythonScripts', quiet=1)
---- Products/SecureMailHost/tests/framework.py.orig 2004-05-16 01:36:28 UTC
-+++ Products/SecureMailHost/tests/framework.py
-@@ -52,7 +52,7 @@ if __INSTANCE_HOME.endswith(os.sep):
-
- # Find and import the Testing package
- #
--if not sys.modules.has_key('Testing'):
-+if 'Testing' not in sys.modules:
- p0 = sys.path[0]
- if p0 and __name__ == '__main__':
- os.chdir(p0)
-@@ -66,12 +66,12 @@ if not sys.modules.has_key('Testing'):
- break
- p, d = s and ('','') or os.path.split(p)
- else:
-- print 'Unable to locate Testing package.',
-- print 'You might need to set SOFTWARE_HOME.'
-+ print('Unable to locate Testing package.', end=' ')
-+ print('You might need to set SOFTWARE_HOME.')
- sys.exit(1)
-
- import Testing, unittest
--execfile(os.path.join(os.path.dirname(Testing.__file__), 'common.py'))
-+exec(compile(open(os.path.join(os.path.dirname(Testing.__file__), 'common.py'), "rb").read(), os.path.join(os.path.dirname(Testing.__file__), 'common.py'), 'exec'))
-
- # Include ZopeTestCase support
- #
-@@ -80,8 +80,8 @@ if 1: # Create a new scope
- p = os.path.join(os.path.dirname(Testing.__file__), 'ZopeTestCase')
-
- if not os.path.isdir(p):
-- print 'Unable to locate ZopeTestCase package.',
-- print 'You might need to install ZopeTestCase.'
-+ print('Unable to locate ZopeTestCase package.', end=' ')
-+ print('You might need to install ZopeTestCase.')
- sys.exit(1)
-
- ztc_common = 'ztc_common.py'
-@@ -89,19 +89,19 @@ if 1: # Create a new scope
-
- f = 0
- if os.path.exists(ztc_common_global):
-- execfile(ztc_common_global)
-+ exec(compile(open(ztc_common_global, "rb").read(), ztc_common_global, 'exec'))
- f = 1
- if os.path.exists(ztc_common):
-- execfile(ztc_common)
-+ exec(compile(open(ztc_common, "rb").read(), ztc_common, 'exec'))
- f = 1
-
- if not f:
-- print 'Unable to locate %s.' % ztc_common
-+ print('Unable to locate %s.' % ztc_common)
- sys.exit(1)
-
- # Debug
- #
--print 'SOFTWARE_HOME: %s' % os.environ.get('SOFTWARE_HOME', 'Not set')
--print 'INSTANCE_HOME: %s' % os.environ.get('INSTANCE_HOME', 'Not set')
-+print('SOFTWARE_HOME: %s' % os.environ.get('SOFTWARE_HOME', 'Not set'))
-+print('INSTANCE_HOME: %s' % os.environ.get('INSTANCE_HOME', 'Not set'))
- sys.stdout.flush()
-
diff --git a/mail/py-Products.SecureMailHost/pkg-descr b/mail/py-Products.SecureMailHost/pkg-descr
deleted file mode 100644
index 9d648d27f1f4..000000000000
--- a/mail/py-Products.SecureMailHost/pkg-descr
+++ /dev/null
@@ -1,2 +0,0 @@
-SecureMailHost is a reimplementation of the standard Zope2 MailHost
-with some security and usability enhancements.
diff --git a/security/Makefile b/security/Makefile
index 5b4e83c4d4cd..1e190d10e886 100644
--- a/security/Makefile
+++ b/security/Makefile
@@ -873,7 +873,6 @@
SUBDIR += pwauth
SUBDIR += pwman
SUBDIR += pwned-check
- SUBDIR += py-RestrictedPython
SUBDIR += py-SecretStorage
SUBDIR += py-YubiOTP
SUBDIR += py-acme
diff --git a/security/py-RestrictedPython/Makefile b/security/py-RestrictedPython/Makefile
deleted file mode 100644
index beca681e7a2c..000000000000
--- a/security/py-RestrictedPython/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-PORTNAME= RestrictedPython
-PORTVERSION= 3.6.0
-PORTREVISION= 2
-CATEGORIES= security python zope
-MASTER_SITES= PYPI
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-DIST_SUBDIR= zope
-
-MAINTAINER= zope@FreeBSD.org
-COMMENT= Restricted execution environment for Python
-WWW= https://pypi.org/project/RestrictedPython/
-
-LICENSE= ZPL21
-
-USES= python zip
-USE_PYTHON= distutils autoplist
-
-.include <bsd.port.mk>
diff --git a/security/py-RestrictedPython/distinfo b/security/py-RestrictedPython/distinfo
deleted file mode 100644
index 83054ff824c1..000000000000
--- a/security/py-RestrictedPython/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (zope/RestrictedPython-3.6.0.zip) = 0edb2579b4174282bee3997abc6316d122c7ca6dcd02f4423352213cde571434
-SIZE (zope/RestrictedPython-3.6.0.zip) = 56739
diff --git a/security/py-RestrictedPython/files/patch-2to3 b/security/py-RestrictedPython/files/patch-2to3
deleted file mode 100644
index 931d63b3254c..000000000000
--- a/security/py-RestrictedPython/files/patch-2to3
+++ /dev/null
@@ -1,469 +0,0 @@
---- src/RestrictedPython/Eval.py.orig 2010-07-09 04:28:54 UTC
-+++ src/RestrictedPython/Eval.py
-@@ -60,10 +60,10 @@ class RestrictionCapableEval:
- self.expr, '<string>')
- if PROFILE:
- end = clock()
-- print 'prepRestrictedCode: %d ms for %s' % (
-- (end - start) * 1000, `self.expr`)
-+ print('prepRestrictedCode: %d ms for %s' % (
-+ (end - start) * 1000, repr(self.expr)))
- if err:
-- raise SyntaxError, err[0]
-+ raise SyntaxError(err[0])
- self.used = tuple(used.keys())
- self.rcode = co
-
---- src/RestrictedPython/Guards.py.orig 2010-07-09 04:07:16 UTC
-+++ src/RestrictedPython/Guards.py
-@@ -98,7 +98,7 @@ def _write_wrapper():
- try:
- f = getattr(self.ob, secattr)
- except AttributeError:
-- raise TypeError, error_msg
-+ raise TypeError(error_msg)
- f(*args)
- return handler
- class Wrapper:
---- src/RestrictedPython/Limits.py.orig 2010-07-07 14:42:56 UTC
-+++ src/RestrictedPython/Limits.py
-@@ -25,22 +25,22 @@ def limited_range(iFirst, *args):
- elif len(args) == 2:
- iStart, iEnd, iStep = iFirst, args[0], args[1]
- else:
-- raise AttributeError, 'range() requires 1-3 int arguments'
-- if iStep == 0: raise ValueError, 'zero step for range()'
-+ raise AttributeError('range() requires 1-3 int arguments')
-+ if iStep == 0: raise ValueError('zero step for range()')
- iLen = int((iEnd - iStart) / iStep)
- if iLen < 0: iLen = 0
-- if iLen >= RANGELIMIT: raise ValueError, 'range() too large'
-- return range(iStart, iEnd, iStep)
-+ if iLen >= RANGELIMIT: raise ValueError('range() too large')
-+ return list(range(iStart, iEnd, iStep))
- limited_builtins['range'] = limited_range
-
- def limited_list(seq):
- if isinstance(seq, str):
-- raise TypeError, 'cannot convert string to list'
-+ raise TypeError('cannot convert string to list')
- return list(seq)
- limited_builtins['list'] = limited_list
-
- def limited_tuple(seq):
- if isinstance(seq, str):
-- raise TypeError, 'cannot convert string to tuple'
-+ raise TypeError('cannot convert string to tuple')
- return tuple(seq)
- limited_builtins['tuple'] = limited_tuple
---- src/RestrictedPython/RCompile.py.orig 2010-07-07 14:42:56 UTC
-+++ src/RestrictedPython/RCompile.py
-@@ -20,12 +20,12 @@ from compiler import ast, parse, misc, syntax, pycodeg
- from compiler.pycodegen import AbstractCompileMode, Expression, \
- Interactive, Module, ModuleCodeGenerator, FunctionCodeGenerator, findOp
-
--import MutatingWalker
--from RestrictionMutator import RestrictionMutator
-+from . import MutatingWalker
-+from .RestrictionMutator import RestrictionMutator
-
-
- def niceParse(source, filename, mode):
-- if isinstance(source, unicode):
-+ if isinstance(source, str):
- # Use the utf-8-sig BOM so the compiler
- # detects this as a UTF-8 encoded string.
- source = '\xef\xbb\xbf' + source.encode('utf-8')
-@@ -58,7 +58,7 @@ class RestrictedCompileMode(AbstractCompileMode):
- tree = self.parse()
- MutatingWalker.walk(tree, self.rm)
- if self.rm.errors:
-- raise SyntaxError, self.rm.errors[0]
-+ raise SyntaxError(self.rm.errors[0])
- misc.set_filename(self.filename, tree)
- syntax.check(tree)
- return tree
-@@ -72,7 +72,7 @@ class RestrictedCompileMode(AbstractCompileMode):
- def compileAndTuplize(gen):
- try:
- gen.compile()
-- except SyntaxError, v:
-+ except SyntaxError as v:
- return None, (str(v),), gen.rm.warnings, gen.rm.used_names
- return gen.getCode(), (), gen.rm.warnings, gen.rm.used_names
-
---- src/RestrictedPython/tests/before_and_after.py.orig 2010-07-09 04:29:10 UTC
-+++ src/RestrictedPython/tests/before_and_after.py
-@@ -77,11 +77,11 @@ def nested_list_comprehension_after():
- # print
-
- def simple_print_before():
-- print "foo"
-+ print("foo")
-
- def simple_print_after():
- _print = _print_()
-- print >> _print, "foo"
-+ print("foo", file=_print)
-
- # getitem
-
-@@ -117,13 +117,13 @@ def simple_delitem_after():
-
- def function_with_print_before():
- def foo():
-- print "foo"
-+ print("foo")
- return printed
-
- def function_with_print_after():
- def foo():
- _print = _print_()
-- print >> _print, "foo"
-+ print("foo", file=_print)
- return _print()
-
- def function_with_getattr_before():
---- src/RestrictedPython/tests/class.py.orig 2010-07-07 14:42:56 UTC
-+++ src/RestrictedPython/tests/class.py
-@@ -10,4 +10,4 @@ x = MyClass()
- x.set(12)
- x.set(x.get() + 1)
- if x.get() != 13:
-- raise AssertionError, "expected 13, got %d" % x.get()
-+ raise AssertionError("expected 13, got %d" % x.get())
---- src/RestrictedPython/tests/restricted_module.py.orig 2010-07-07 14:42:56 UTC
-+++ src/RestrictedPython/tests/restricted_module.py
-@@ -1,42 +1,43 @@
- import sys
-+from functools import reduce
-
- def print0():
-- print 'Hello, world!',
-+ print('Hello, world!', end=' ')
- return printed
-
- def print1():
-- print 'Hello,',
-- print 'world!',
-+ print('Hello,', end=' ')
-+ print('world!', end=' ')
- return printed
-
- def printStuff():
-- print 'a', 'b', 'c',
-+ print('a', 'b', 'c', end=' ')
- return printed
-
- def printToNone():
- x = None
-- print >>x, 'Hello, world!',
-+ print('Hello, world!', end=' ', file=x)
- return printed
-
- def printLines():
- # This failed before Zope 2.4.0a2
-- r = range(3)
-+ r = list(range(3))
- for n in r:
- for m in r:
-- print m + n * len(r),
-- print
-+ print(m + n * len(r), end=' ')
-+ print()
- return printed
-
- def try_map():
- inc = lambda i: i+1
- x = [1, 2, 3]
-- print map(inc, x),
-+ print(list(map(inc, x)), end=' ')
- return printed
-
- def try_apply():
- def f(x, y, z):
- return x + y + z
-- print f(*(300, 20), **{'z': 1}),
-+ print(f(*(300, 20), **{'z': 1}), end=' ')
- return printed
-
- def try_inplace():
-@@ -45,17 +46,17 @@ def try_inplace():
-
- def primes():
- # Somewhat obfuscated code on purpose
-- print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
-- map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,20))),
-+ print([_f for _f in [y*reduce(lambda x,y:x*y!=0,
-+ list(map(lambda x,y=y:y%x,list(range(2,int(pow(y,0.5)+1))))),1) for y in range(2,20)] if _f], end=' ')
- return printed
-
- def allowed_read(ob):
-- print ob.allowed
-- print ob.s
-- print ob[0]
-- print ob[2]
-- print ob[3:-1]
-- print len(ob)
-+ print(ob.allowed)
-+ print(ob.s)
-+ print(ob[0])
-+ print(ob[2])
-+ print(ob[3:-1])
-+ print(len(ob))
- return printed
-
- def allowed_default_args(ob):
-@@ -83,13 +84,13 @@ def allowed_simple():
- def allowed_write(ob):
- ob.writeable = 1
- #ob.writeable += 1
-- [1 for ob.writeable in 1,2]
-+ [1 for ob.writeable in [1,2]]
- ob['safe'] = 2
- #ob['safe'] += 2
-- [1 for ob['safe'] in 1,2]
-+ [1 for ob['safe'] in [1,2]]
-
- def denied_print(ob):
-- print >> ob, 'Hello, world!',
-+ print('Hello, world!', end=' ', file=ob)
-
- def denied_getattr(ob):
- #ob.disallowed += 1
-@@ -108,7 +109,7 @@ def denied_setattr2(ob):
- ob.allowed = -1
-
- def denied_setattr3(ob):
-- [1 for ob.allowed in 1,2]
-+ [1 for ob.allowed in [1,2]]
-
- def denied_getitem(ob):
- ob[1]
-@@ -125,7 +126,7 @@ def denied_setitem2(ob):
- ob['x'] = 2
-
- def denied_setitem3(ob):
-- [1 for ob['x'] in 1,2]
-+ [1 for ob['x'] in [1,2]]
-
- def denied_setslice(ob):
- ob[0:1] = 'a'
-@@ -135,7 +136,7 @@ def denied_setslice2(ob):
- ob[0:1] = 'a'
-
- def denied_setslice3(ob):
-- [1 for ob[0:1] in 1,2]
-+ [1 for ob[0:1] in [1,2]]
-
- ##def strange_attribute():
- ## # If a guard has attributes with names that don't start with an
---- src/RestrictedPython/tests/security_in_syntax.py.orig 2010-07-09 04:07:16 UTC
-+++ src/RestrictedPython/tests/security_in_syntax.py
-@@ -29,7 +29,7 @@ def bad_attr():
- some_ob._some_attr = 15
-
- def no_exec():
-- exec 'q = 1'
-+ exec('q = 1')
-
- def no_yield():
- yield 42
-@@ -47,7 +47,7 @@ def from_import_as_bad_name():
- def except_using_bad_name():
- try:
- foo
-- except NameError, _leading_underscore:
-+ except NameError as _leading_underscore:
- # The name of choice (say, _write) is now assigned to an exception
- # object. Hard to exploit, but conceivable.
- pass
---- src/RestrictedPython/tests/testRestrictions.py.orig 2010-07-09 04:07:16 UTC
-+++ src/RestrictedPython/tests/testRestrictions.py
-@@ -52,10 +52,10 @@ def find_source(fn, func):
-
- def get_source(func):
- """Less silly interface to find_source"""
-- file = func.func_globals['__file__']
-+ file = func.__globals__['__file__']
- if file.endswith('.pyc'):
- file = file[:-1]
-- source = find_source(file, func.func_code)[1]
-+ source = find_source(file, func.__code__)[1]
- assert source.strip(), "Source should not be empty!"
- return source
-
-@@ -76,7 +76,7 @@ def create_rmodule():
- 'len', 'chr', 'ord',
- ):
- rmodule[name] = builtins[name]
-- exec code in rmodule
-+ exec(code, rmodule)
-
- class AccessDenied (Exception): pass
-
-@@ -145,7 +145,7 @@ def guarded_getitem(ob, index):
-
- def minimal_import(name, _globals, _locals, names):
- if name != "__future__":
-- raise ValueError, "Only future imports are allowed"
-+ raise ValueError("Only future imports are allowed")
- import __future__
- return __future__
-
-@@ -185,14 +185,14 @@ def inplacevar_wrapper(op, x, y):
- inplacevar_wrapper_called[op] = x, y
- # This is really lame. But it's just a test. :)
- globs = {'x': x, 'y': y}
-- exec 'x'+op+'y' in globs
-+ exec('x'+op+'y', globs)
- return globs['x']
-
- class RestrictionTests(unittest.TestCase):
- def execFunc(self, name, *args, **kw):
- func = rmodule[name]
-- verify.verify(func.func_code)
-- func.func_globals.update({'_getattr_': guarded_getattr,
-+ verify.verify(func.__code__)
-+ func.__globals__.update({'_getattr_': guarded_getattr,
- '_getitem_': guarded_getitem,
- '_write_': TestGuard,
- '_print_': PrintCollector,
-@@ -263,7 +263,7 @@ class RestrictionTests(unittest.TestCase):
- self.assertEqual(inplacevar_wrapper_called['+='], (1, 3))
-
- def checkDenied(self):
-- for k in rmodule.keys():
-+ for k in list(rmodule.keys()):
- if k[:6] == 'denied':
- try:
- self.execFunc(k, RestrictedObject())
-@@ -290,10 +290,10 @@ class RestrictionTests(unittest.TestCase):
- # Unrestricted compile.
- code = compile(source, fn, 'exec')
- m = {'__builtins__': {'__import__':minimal_import}}
-- exec code in m
-- for k, v in m.items():
-+ exec(code, m)
-+ for k, v in list(m.items()):
- if hasattr(v, 'func_code'):
-- filename, source = find_source(fn, v.func_code)
-+ filename, source = find_source(fn, v.__code__)
- # Now compile it with restrictions
- try:
- code = compile_restricted(source, filename, 'exec')
-@@ -327,11 +327,11 @@ class RestrictionTests(unittest.TestCase):
- self.assertEqual(res, expect)
-
- def checkStackSize(self):
-- for k, rfunc in rmodule.items():
-+ for k, rfunc in list(rmodule.items()):
- if not k.startswith('_') and hasattr(rfunc, 'func_code'):
-- rss = rfunc.func_code.co_stacksize
-- ss = getattr(restricted_module, k).func_code.co_stacksize
-- self.failUnless(
-+ rss = rfunc.__code__.co_stacksize
-+ ss = getattr(restricted_module, k).__code__.co_stacksize
-+ self.assertTrue(
- rss >= ss, 'The stack size estimate for %s() '
- 'should have been at least %d, but was only %d'
- % (k, ss, rss))
-@@ -427,7 +427,7 @@ class RestrictionTests(unittest.TestCase):
- calls.append(seq)
- return list(seq)
- globals = {"_getiter_": getiter, '_inplacevar_': inplacevar_wrapper}
-- exec co in globals, {}
-+ exec(co, globals, {})
- # The comparison here depends on the exact code that is
- # contained in unpack.py.
- # The test doing implicit unpacking in an "except:" clause is
-@@ -454,7 +454,7 @@ class RestrictionTests(unittest.TestCase):
- [[[3, 4]]], [[3, 4]], [3, 4],
- ]
- i = expected.index(ineffable)
-- self.assert_(isinstance(calls[i], TypeError))
-+ self.assertTrue(isinstance(calls[i], TypeError))
- expected[i] = calls[i]
- self.assertEqual(calls, expected)
-
-@@ -466,7 +466,7 @@ class RestrictionTests(unittest.TestCase):
- calls.append(s)
- return list(s)
- globals = {"_getiter_": getiter}
-- exec co in globals, {}
-+ exec(co, globals, {})
- self.assertEqual(calls, [[(1,2)], (1, 2)])
-
- def checkUnpackSequenceSingle(self):
-@@ -477,7 +477,7 @@ class RestrictionTests(unittest.TestCase):
- calls.append(s)
- return list(s)
- globals = {"_getiter_": getiter}
-- exec co in globals, {}
-+ exec(co, globals, {})
- self.assertEqual(calls, [(1, 2)])
-
- def checkClass(self):
-@@ -496,7 +496,7 @@ class RestrictionTests(unittest.TestCase):
- globals = {"_getattr_": test_getattr,
- "_write_": test_setattr,
- }
-- exec co in globals, {}
-+ exec(co, globals, {})
- # Note that the getattr calls don't correspond to the method call
- # order, because the x.set method is fetched before its arguments
- # are evaluated.
-@@ -506,7 +506,7 @@ class RestrictionTests(unittest.TestCase):
-
- def checkLambda(self):
- co = self._compile_file("lambda.py")
-- exec co in {}, {}
-+ exec(co, {}, {})
-
- def checkEmpty(self):
- rf = RFunction("", "", "issue945", "empty.py", {})
---- src/RestrictedPython/tests/unpack.py.orig 2010-07-07 14:42:56 UTC
-+++ src/RestrictedPython/tests/unpack.py
-@@ -20,7 +20,7 @@ try:
- except ValueError:
- pass
- else:
-- raise AssertionError, "expected 'unpack list of wrong size'"
-+ raise AssertionError("expected 'unpack list of wrong size'")
-
- def u2(L):
- x, (a, b), y = L
-@@ -37,9 +37,10 @@ try:
- except TypeError:
- pass
- else:
-- raise AssertionError, "expected 'iteration over non-sequence'"
-+ raise AssertionError("expected 'iteration over non-sequence'")
-
--def u3((x, y)):
-+def u3(xxx_todo_changeme):
-+ (x, y) = xxx_todo_changeme
- assert x == 'a'
- assert y == 'b'
- return x, y
-@@ -58,7 +59,8 @@ def u5(x):
- raise TypeError(x)
- # This one is tricky to test, because the first level of unpacking
- # has a TypeError instance. That's a headache for the test driver.
-- except TypeError, [(a, b)]:
-+ except TypeError as xxx_todo_changeme1:
-+ [(a, b)] = xxx_todo_changeme1.args
- assert a == 42
- assert b == 666
-
---- src/RestrictedPython/tests/verify.py.orig 2010-07-07 14:42:56 UTC
-+++ src/RestrictedPython/tests/verify.py
-@@ -83,7 +83,7 @@ def _verifycode(code):
- window[2].arg == "_write_"):
- # check that arg is appropriately wrapped
- for i, op in enumerate(window):
-- print i, op.opname, op.arg
-+ print(i, op.opname, op.arg)
- raise ValueError("unguard attribute set/del at %s:%d"
- % (code.co_filename, line))
- if op.opname.startswith("UNPACK"):
diff --git a/security/py-RestrictedPython/pkg-descr b/security/py-RestrictedPython/pkg-descr
deleted file mode 100644
index 30006591d683..000000000000
--- a/security/py-RestrictedPython/pkg-descr
+++ /dev/null
@@ -1,2 +0,0 @@
-RestrictedPython provides a restricted execution environment for Python,
-e.g. for running untrusted code.
diff --git a/sysutils/Makefile b/sysutils/Makefile
index de1f795f61f0..64919ddd5cd0 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1093,7 +1093,6 @@
SUBDIR += py-upt-pypi
SUBDIR += py-upt-rubygems
SUBDIR += py-uptime
- SUBDIR += py-zdaemon
SUBDIR += qchroot
SUBDIR += qdirstat
SUBDIR += qflipper
diff --git a/sysutils/py-zdaemon/Makefile b/sysutils/py-zdaemon/Makefile
deleted file mode 100644
index c78007cb7ddb..000000000000
--- a/sysutils/py-zdaemon/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-PORTNAME= zdaemon
-PORTVERSION= 4.1.0
-PORTREVISION= 1
-CATEGORIES= sysutils python
-MASTER_SITES= PYPI
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-
-MAINTAINER= zope@FreeBSD.org
-COMMENT= Daemon Process Control Library and Tools for Unix-bases Systems
-WWW= https://pypi.org/project/zdaemon/
-
-LICENSE= ZPL21
-LICENSE_FILE= ${WRKSRC}/LICENSE.txt
-
-RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}ZConfig>0:devel/py-zconfig@${PY_FLAVOR}
-
-NO_ARCH= yes
-USES= python zip
-USE_PYTHON= autoplist distutils
-
-.include <bsd.port.mk>
diff --git a/sysutils/py-zdaemon/distinfo b/sysutils/py-zdaemon/distinfo
deleted file mode 100644
index fd551639ad44..000000000000
--- a/sysutils/py-zdaemon/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (zdaemon-4.1.0.zip) = 185b374ab49f928bbcdb7572c5cd7c3a9e75324a005ce73dfee4208ce10ab1f9
-SIZE (zdaemon-4.1.0.zip) = 74287
diff --git a/sysutils/py-zdaemon/pkg-descr b/sysutils/py-zdaemon/pkg-descr
deleted file mode 100644
index fc970314c73b..000000000000
--- a/sysutils/py-zdaemon/pkg-descr
+++ /dev/null
@@ -1,6 +0,0 @@
-zdaemon is a Python package which provides APIs for managing
-applications run as daemons. Its principal use to date has
-been to manage the application server and storage server daemons
-for Zope / ZEO, although it is not limited to running Python-based
-applications (for instance, it has been used to manage the
-'spread' daemon).