[arch-commits] Commit in python-daemon/trunk (4 files)
Evangelos Foutras
foutrelis at gemini.archlinux.org
Wed Dec 8 02:28:47 UTC 2021
Date: Wednesday, December 8, 2021 @ 02:28:46
Author: foutrelis
Revision: 1065584
Fix tests for Python 3.10
Added:
python-daemon/trunk/python310.patch
python-daemon/trunk/testtools-2.5.0.patch
Modified:
python-daemon/trunk/PKGBUILD
Deleted:
python-daemon/trunk/python-daemon-2.3.0-fix-py3.10.patch
--------------------------------------+
PKGBUILD | 15 -
python-daemon-2.3.0-fix-py3.10.patch | 285 ---------------------------------
python310.patch | 31 +++
testtools-2.5.0.patch | 22 ++
4 files changed, 60 insertions(+), 293 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2021-12-08 02:20:23 UTC (rev 1065583)
+++ PKGBUILD 2021-12-08 02:28:46 UTC (rev 1065584)
@@ -13,13 +13,16 @@
makedepends=('python-setuptools' 'python-docutils' 'python-lockfile' 'python-pip')
checkdepends=('python-mock' 'python-testscenarios' 'python-wheel')
source=(https://files.pythonhosted.org/packages/source/p/$pkgname/$pkgname-$pkgver.tar.gz
- python-daemon-2.3.0-fix-py3.10.patch)
+ testtools-2.5.0.patch
+ python310.patch)
sha256sums=('bda993f1623b1197699716d68d983bb580043cf2b8a66a01274d9b8297b0aeaf'
- '3e6091f4eea62ec738c424867766e2755155b807fb58622e07e565ae7b97c1b6')
+ '7f8dfbe9e01edcb19ebede5580d448a995b721ee3b56ca1d353f58c36416c980'
+ '1777e34936ed5d45001e9994f563fdf8c9e2045b667223f1eebf896031627ddc')
-build() {
+prepare() {
cd "${srcdir}"/python-daemon-$pkgver
- patch -Np1 -i ${srcdir}/python-daemon-2.3.0-fix-py3.10.patch
+ patch -Np1 -i ../testtools-2.5.0.patch
+ patch -Np1 -i ../python310.patch
}
build() {
@@ -29,10 +32,6 @@
check() {
cd python-daemon-$pkgver
- # fix for >=testtools-2.5.0
- sed -e 's/testtools.helpers.safe_hasattr/hasattr/' \
- -i test/test_metadata.py || die
-
python setup.py test
}
Deleted: python-daemon-2.3.0-fix-py3.10.patch
===================================================================
--- python-daemon-2.3.0-fix-py3.10.patch 2021-12-08 02:20:23 UTC (rev 1065583)
+++ python-daemon-2.3.0-fix-py3.10.patch 2021-12-08 02:28:46 UTC (rev 1065584)
@@ -1,285 +0,0 @@
-<!DOCTYPE html>
-<html lang='en'>
-<head>
-<title>python-daemon-2.3.0-fix-py3.10.patch « files « python-daemon « dev-python - repo/gentoo.git - Official Gentoo ebuild repository</title>
-<meta name='generator' content='cgit v1.2.3-18-g5258'/>
-<meta name='robots' content='index,follow'/>
-<link rel='stylesheet' type='text/css' href='/cgit.css'/>
-<link rel='shortcut icon' href='//www.gentoo.org/favicon.ico'/>
-<link rel='alternate' title='Atom feed' href='https://gitweb.gentoo.org/repo/gentoo.git/atom/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch?h=master' type='application/atom+xml'/>
-<link rel='vcs-git' href='https://anongit.gentoo.org/git/repo/gentoo.git' title='repo/gentoo.git Git repository'/>
-<link rel='vcs-git' href='git+ssh://git@git.gentoo.org/repo/gentoo.git' title='repo/gentoo.git Git repository'/>
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="theme-color" content="#54487a">
-<meta name="description" content="Browse the Gentoo Git repositories">
-<link href="https://assets.gentoo.org/tyrian/v2/tyrian.min.css" rel="stylesheet" media="screen">
-</head>
-<body>
-<header>
- <div class="site-title">
- <div class="container">
- <div class="row justify-content-between">
- <div class="logo">
- <a href="/" title="Back to the homepage" class="site-logo">
- <img src="https://assets.gentoo.org/tyrian/v2/site-logo.png" alt="Gentoo" srcset="https://assets.gentoo.org/tyrian/v2/site-logo.svg">
- </a>
- <span class="site-label">GitWeb</span>
- </div>
- <div class="site-title-buttons">
- <div class="btn-group btn-group-sm">
- <a href="https://get.gentoo.org/" role="button" class="btn get-gentoo"><span class="fa fa-fw fa-download"></span>
- <strong>Get Gentoo!</strong></a>
- <div class="btn-group btn-group-sm">
- <a class="btn gentoo-org-sites dropdown-toggle" data-toggle="dropdown" data-target="#" href="#">
- <span class="fa fa-fw fa-map-o"></span> <span class="d-none d-sm-inline">gentoo.org sites</span>
- <span class="caret"></span>
- </a>
- <div class="dropdown-menu dropdown-menu-right">
- <a class="dropdown-item" href="https://www.gentoo.org/" title="Main Gentoo website"><span class="fa fa-home fa-fw"></span>
- gentoo.org</a>
- <a class="dropdown-item" href="https://wiki.gentoo.org/" title="Find and contribute documentation"><span class="fa fa-file-text-o fa-fw"></span>
- Wiki</a>
- <a class="dropdown-item" href="https://bugs.gentoo.org/" title="Report issues and find common issues"><span class="fa fa-bug fa-fw"></span>
- Bugs</a>
- <a class="dropdown-item" href="https://forums.gentoo.org/" title="Discuss with the community"><span class="fa fa-comments-o fa-fw"></span>
- Forums</a>
- <a class="dropdown-item" href="https://packages.gentoo.org/" title="Find software for your Gentoo"><span class="fa fa-hdd-o fa-fw"></span>
- Packages</a>
- <div class="dropdown-divider"></div>
- <a class="dropdown-item" href="https://planet.gentoo.org/" title="Find out what's going on in the developer community"><span class="fa fa-rss fa-fw"></span>
- Planet</a>
- <a class="dropdown-item" href="https://archives.gentoo.org/" title="Read up on past discussions"><span class="fa fa-archive fa-fw"></span>
- Archives</a>
- <a class="dropdown-item" href="https://sources.gentoo.org/" title="Browse our source code"><span class="fa fa-code fa-fw"></span>
- Sources</a>
- <div class="dropdown-divider"></div>
- <a class="dropdown-item" href="https://infra-status.gentoo.org/" title="Get updates on the services provided by Gentoo"><span class="fa fa-server fa-fw"></span>
- Infra Status</a>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <nav class="tyrian-navbar navbar navbar-dark navbar-expand-lg bg-primary" role="navigation">
- <div class="container">
- <div class="navbar-header">
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-main-collapse" aria-controls="navbar-main-collapse" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- </div>
- <div class="collapse navbar-collapse navbar-main-collapse" id="navbar-main-collapse">
- <ul class="navbar-nav mr-auto">
- <li class="nav-item"><a class="nav-link" href="/">Home</a></li>
- <li class="nav-item"><a class="nav-link" href="/repo/gentoo.git">Gentoo Repository</a></li>
- <li class="nav-item"><a class="nav-link" href="/repo/">Repositories</a></li>
- <li class="nav-item"><a class="nav-link" href="/proj/">Projects</a></li>
- <li class="nav-item"><a class="nav-link" href="/dev/">Developer Overlays</a></li>
- <li class="nav-item"><a class="nav-link" href="/user/">User Overlays</a></li>
- <li class="nav-item"><a class="nav-link" href="/data/">Data</a></li>
- <li class="nav-item"><a class="nav-link" href="/sites/">Websites</a></li>
- </ul>
- </div>
- </div>
- </nav>
-</header>
-
-<div class="container pb-5">
- <div class="row">
- <div class="col-md-12">
-<div id='cgit'><table id='header'>
-<tr>
-<td class='logo' rowspan='2'><a href='/'><img src='/cgit.png' alt='cgit logo'/></a></td>
-<td class='main'><a href='/'>index</a> : <a title='repo/gentoo.git' href='/repo/gentoo.git/'>repo/gentoo.git</a></td><td class='form'><form method='get'>
-<select name='h' onchange='this.form.submit();'>
-<option value='master' selected='selected'>master</option>
-</select> <input type='submit' value='switch'/></form></td></tr>
-<tr><td class='sub'>Official Gentoo ebuild repository</td><td class='sub right'>Infrastructure team <infrastructure at gentoo.org></td></tr></table>
-<table class='tabs'><tr><td>
-<a href='/repo/gentoo.git/'>summary</a><a href='/repo/gentoo.git/refs/'>refs</a><a href='/repo/gentoo.git/log/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch'>log</a><a class='active' href='/repo/gentoo.git/tree/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch'>tree</a><a href='/repo/gentoo.git/commit/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch'>commit</a><a href='/repo/gentoo.git/diff/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch'>diff</a></td><td class='form'><form class='right' method='get' action='/repo/gentoo.git/log/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch'>
-<select name='qt'>
-<option value='grep'>log msg</option>
-<option value='author'>author</option>
-<option value='committer'>committer</option>
-<option value='range'>range</option>
-</select>
-<input class='txt' type='search' size='10' name='q' value=''/>
-<input type='submit' value='search'/>
-</form>
-</td></tr></table>
-<div class='path'>path: <a href='/repo/gentoo.git/tree/'>root</a>/<a href='/repo/gentoo.git/tree/dev-python'>dev-python</a>/<a href='/repo/gentoo.git/tree/dev-python/python-daemon'>python-daemon</a>/<a href='/repo/gentoo.git/tree/dev-python/python-daemon/files'>files</a>/<a href='/repo/gentoo.git/tree/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch'>python-daemon-2.3.0-fix-py3.10.patch</a></div><div class='content'>blob: 4fd082dc8f775219daebd98c0fcc76ec8e553478 (<a href='/repo/gentoo.git/plain/dev-python/python-daemon/files/python-daemon-2.3.0-fix-py3.10.patch'>plain</a>)
-<table summary='blob content' class='blob'>
-<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
-<a id='n2' href='#n2'>2</a>
-<a id='n3' href='#n3'>3</a>
-<a id='n4' href='#n4'>4</a>
-<a id='n5' href='#n5'>5</a>
-<a id='n6' href='#n6'>6</a>
-<a id='n7' href='#n7'>7</a>
-<a id='n8' href='#n8'>8</a>
-<a id='n9' href='#n9'>9</a>
-<a id='n10' href='#n10'>10</a>
-<a id='n11' href='#n11'>11</a>
-<a id='n12' href='#n12'>12</a>
-<a id='n13' href='#n13'>13</a>
-<a id='n14' href='#n14'>14</a>
-<a id='n15' href='#n15'>15</a>
-<a id='n16' href='#n16'>16</a>
-<a id='n17' href='#n17'>17</a>
-<a id='n18' href='#n18'>18</a>
-<a id='n19' href='#n19'>19</a>
-<a id='n20' href='#n20'>20</a>
-<a id='n21' href='#n21'>21</a>
-<a id='n22' href='#n22'>22</a>
-<a id='n23' href='#n23'>23</a>
-<a id='n24' href='#n24'>24</a>
-<a id='n25' href='#n25'>25</a>
-<a id='n26' href='#n26'>26</a>
-<a id='n27' href='#n27'>27</a>
-<a id='n28' href='#n28'>28</a>
-</pre></td>
-<td class='lines'><pre><code><style>pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.highlight .hll { background-color: #ffffcc }
-.highlight .c { color: #888888 } /* Comment */
-.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
-.highlight .k { color: #008800; font-weight: bold } /* Keyword */
-.highlight .ch { color: #888888 } /* Comment.Hashbang */
-.highlight .cm { color: #888888 } /* Comment.Multiline */
-.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
-.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
-.highlight .c1 { color: #888888 } /* Comment.Single */
-.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
-.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #aa0000 } /* Generic.Error */
-.highlight .gh { color: #333333 } /* Generic.Heading */
-.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #555555 } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #666666 } /* Generic.Subheading */
-.highlight .gt { color: #aa0000 } /* Generic.Traceback */
-.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #008800 } /* Keyword.Pseudo */
-.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
-.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
-.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
-.highlight .na { color: #336699 } /* Name.Attribute */
-.highlight .nb { color: #003388 } /* Name.Builtin */
-.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
-.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
-.highlight .nd { color: #555555 } /* Name.Decorator */
-.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
-.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
-.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
-.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
-.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #336699 } /* Name.Variable */
-.highlight .ow { color: #008800 } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
-.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
-.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
-.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
-.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
-.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
-.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
-.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
-.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
-.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
-.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
-.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
-.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
-.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
-.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
-.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
-.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
-.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
-.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
-.highlight .vc { color: #336699 } /* Name.Variable.Class */
-.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
-.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
-.highlight .vm { color: #336699 } /* Name.Variable.Magic */
-.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span>https://pagure.io/python-daemon/c/0c67a3c6407fbf4483ccfc94a7a0d78cf3379296
-
-From: Miro Hrončok <miro at hroncok.cz>
-Date: Sep 29 2021 10:05:27 +0000
-Subject: Remove incorrect double-patch of objects in test cases.
-
-The specific test cases relying on the patches, already are decorated
-to patch the specific attributes needed. We don't need a general patch
-of the attributes in the test case setup.
-
-Signed-off-by: Ben Finney <ben+python at benfinney.id.au>
-
-<span class="gd">--- a/test/test_pidfile.py</span>
-<span class="gi">+++ b/test/test_pidfile.py</span>
-<span class="gu">@@ -367,12 +367,6 @@ class TimeoutPIDLockFile_TestCase(scaffold.TestCase):</span>
- pidlockfile_scenarios = make_pidlockfile_scenarios()
- self.pidlockfile_scenario = pidlockfile_scenarios['simple']
-
-<span class="gd">- for func_name in ['__init__', 'acquire']:</span>
-<span class="gd">- func_patcher = unittest.mock.patch.object(</span>
-<span class="gd">- lockfile.pidlockfile.PIDLockFile, func_name)</span>
-<span class="gd">- func_patcher.start()</span>
-<span class="gd">- self.addCleanup(func_patcher.stop)</span>
-<span class="gd">-</span>
- self.scenario = {
- 'pidfile_path': self.pidlockfile_scenario['pidfile_path'],
- 'acquire_timeout': self.getUniqueInteger(),
-</pre></div>
-</code></pre></td></tr></table>
-</div> <!-- class=content -->
- </div>
- </div>
- </div>
- </div>
-
- <footer>
- <div class="container">
- <div class="row">
- <div class="col-12 offset-md-2 col-md-7">
-
- </div>
- <div class="col-12 col-md-3">
- <h3 class="footerhead">Questions or comments?</h3>
- Please feel free to <a href="https://www.gentoo.org/inside-gentoo/contact/">contact us</a>.
- </div>
- </div>
- <div class="row">
- <div class="col-2 col-sm-3 col-md-2">
- <ul class="footerlinks three-icons">
- <li><a href="https://twitter.com/gentoo" title="@Gentoo on Twitter"><span class="fa fa-twitter fa-fw"></span></a></li>
- <li><a href="https://www.facebook.com/gentoo.org" title="Gentoo on Facebook"><span class="fa fa-facebook fa-fw"></span></a></li>
- <li></li>
- </ul>
- </div>
- <div class="col-10 col-sm-9 col-md-10">
- <strong>© 2001–2021 Gentoo Foundation, Inc.</strong><br>
- <small>
- Gentoo is a trademark of the Gentoo Foundation, Inc.
- The contents of this document, unless otherwise expressly stated, are licensed under the
- <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="license">CC-BY-SA-4.0</a> license.
- The <a href="https://www.gentoo.org/inside-gentoo/foundation/name-logo-guidelines.html">Gentoo Name and Logo Usage Guidelines</a> apply.
- </small>
- </div>
- </div>
- </div>
- </footer>
-
- <script src="https://assets.gentoo.org/tyrian/v2/jquery-3.3.slim.js"></script>
- <script src="https://assets.gentoo.org/tyrian/v2/popper.min.js"></script>
- <script src="https://assets.gentoo.org/tyrian/v2/bootstrap.min.js"></script>
-</div> <!-- id=cgit -->
-</body>
-</html>
Added: python310.patch
===================================================================
--- python310.patch (rev 0)
+++ python310.patch 2021-12-08 02:28:46 UTC (rev 1065584)
@@ -0,0 +1,31 @@
+From 0c67a3c6407fbf4483ccfc94a7a0d78cf3379296 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro at hroncok.cz>
+Date: Wed, 29 Sep 2021 19:59:30 +1000
+Subject: [PATCH] Remove incorrect double-patch of objects in test cases.
+
+The specific test cases relying on the patches, already are decorated
+to patch the specific attributes needed. We don't need a general patch
+of the attributes in the test case setup.
+
+Signed-off-by: Ben Finney <ben+python at benfinney.id.au>
+---
+ test/test_pidfile.py | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/test/test_pidfile.py b/test/test_pidfile.py
+index 2448855..1d0dd93 100644
+--- a/test/test_pidfile.py
++++ b/test/test_pidfile.py
+@@ -367,12 +367,6 @@ class TimeoutPIDLockFile_TestCase(scaffold.TestCase):
+ pidlockfile_scenarios = make_pidlockfile_scenarios()
+ self.pidlockfile_scenario = pidlockfile_scenarios['simple']
+
+- for func_name in ['__init__', 'acquire']:
+- func_patcher = unittest.mock.patch.object(
+- lockfile.pidlockfile.PIDLockFile, func_name)
+- func_patcher.start()
+- self.addCleanup(func_patcher.stop)
+-
+ self.scenario = {
+ 'pidfile_path': self.pidlockfile_scenario['pidfile_path'],
+ 'acquire_timeout': self.getUniqueInteger(),
Added: testtools-2.5.0.patch
===================================================================
--- testtools-2.5.0.patch (rev 0)
+++ testtools-2.5.0.patch 2021-12-08 02:28:46 UTC (rev 1065584)
@@ -0,0 +1,22 @@
+From bacc1774e8ff7504092a0612197c36153731cd70 Mon Sep 17 00:00:00 2001
+From: Ben Finney <ben+python at benfinney.id.au>
+Date: Mon, 27 Sep 2021 21:17:57 +1000
+Subject: [PATCH] Drop a helper for obsolete bugs in `hasattr`.
+
+---
+ test/test_metadata.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/test_metadata.py b/test/test_metadata.py
+index 3bb1e3a..77e6464 100644
+--- a/test/test_metadata.py
++++ b/test/test_metadata.py
+@@ -39,7 +39,7 @@ class HasAttribute(testtools.matchers.Matcher):
+ def match(self, instance):
+ """ Assert the object `instance` has an attribute named `name`. """
+ result = None
+- if not testtools.helpers.safe_hasattr(instance, self.attribute_name):
++ if not hasattr(instance, self.attribute_name):
+ result = AttributeNotFoundMismatch(instance, self.attribute_name)
+ return result
+
More information about the arch-commits
mailing list