Blob Blame History Raw
From 86a4d7cdf9489f30c543b11ae7a8e8052abda266 Mon Sep 17 00:00:00 2001
From: Carl George <carl@george.computer>
Date: Mon, 3 Apr 2023 21:50:52 -0500
Subject: [PATCH 2/6] Use old import path for attrs classes and functions

Twisted claims to be compatible with attrs 19.2.0, however it uses the
attrs namespace, which wasn't introduced until attrs 21.3.0.

https://github.com/twisted/twisted/blob/twisted-22.10.0/setup.cfg#L35
https://www.attrs.org/en/21.3.0/changelog.html

This switches the imports to the older import path, to fix compatibility
with attrs 20.3.0 as shipped in RHEL 9.

https://bugzilla.redhat.com/show_bug.cgi?id=2182954
https://github.com/twisted/twisted/issues/11839
---
 src/twisted/python/systemd.py                  | 2 +-
 src/twisted/trial/_dist/disttrial.py           | 4 ++--
 src/twisted/trial/_dist/stream.py              | 2 +-
 src/twisted/trial/_dist/test/test_disttrial.py | 2 +-
 src/twisted/trial/_dist/worker.py              | 2 +-
 src/twisted/trial/_dist/workerreporter.py      | 2 +-
 src/twisted/trial/_synctest.py                 | 2 +-
 src/twisted/trial/runner.py                    | 2 +-
 8 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/twisted/python/systemd.py b/src/twisted/python/systemd.py
index 51911160eb..507d9a423f 100644
--- a/src/twisted/python/systemd.py
+++ b/src/twisted/python/systemd.py
@@ -15,7 +15,7 @@ __all__ = ["ListenFDs"]
 from os import getpid
 from typing import Dict, List, Mapping, Optional, Sequence
 
-from attrs import Factory, define
+from attr import Factory, define
 
 
 @define
diff --git a/src/twisted/trial/_dist/disttrial.py b/src/twisted/trial/_dist/disttrial.py
index a57a4bf37b..b0e8fe17c2 100644
--- a/src/twisted/trial/_dist/disttrial.py
+++ b/src/twisted/trial/_dist/disttrial.py
@@ -16,8 +16,8 @@ from os.path import isabs
 from typing import Awaitable, Callable, Iterable, List, Sequence, TextIO, Union, cast
 from unittest import TestCase, TestSuite
 
-from attrs import define, field, frozen
-from attrs.converters import default_if_none
+from attr import define, field, frozen
+from attr.converters import default_if_none
 
 from twisted.internet.defer import Deferred, DeferredList, gatherResults
 from twisted.internet.interfaces import IReactorCore, IReactorProcess
diff --git a/src/twisted/trial/_dist/stream.py b/src/twisted/trial/_dist/stream.py
index a53fd4ab21..32575092a0 100644
--- a/src/twisted/trial/_dist/stream.py
+++ b/src/twisted/trial/_dist/stream.py
@@ -5,7 +5,7 @@ Buffer byte streams.
 from itertools import count
 from typing import Dict, Iterator, List, TypeVar
 
-from attrs import Factory, define
+from attr import Factory, define
 
 from twisted.protocols.amp import AMP, Command, Integer, String as Bytes
 
diff --git a/src/twisted/trial/_dist/test/test_disttrial.py b/src/twisted/trial/_dist/test/test_disttrial.py
index dd2af5cca1..17447b14dc 100644
--- a/src/twisted/trial/_dist/test/test_disttrial.py
+++ b/src/twisted/trial/_dist/test/test_disttrial.py
@@ -15,7 +15,7 @@ from unittest import TestCase as PyUnitTestCase
 
 from zope.interface import implementer, verify
 
-from attrs import Factory, assoc, define, field
+from attr import Factory, assoc, define, field
 from hamcrest import (
     assert_that,
     contains,
diff --git a/src/twisted/trial/_dist/worker.py b/src/twisted/trial/_dist/worker.py
index 04c39fc855..32d2a80f4d 100644
--- a/src/twisted/trial/_dist/worker.py
+++ b/src/twisted/trial/_dist/worker.py
@@ -15,7 +15,7 @@ from unittest import TestCase
 
 from zope.interface import implementer
 
-from attrs import frozen
+from attr import frozen
 from typing_extensions import Protocol, TypedDict
 
 from twisted.internet.defer import Deferred, DeferredList
diff --git a/src/twisted/trial/_dist/workerreporter.py b/src/twisted/trial/_dist/workerreporter.py
index 436f6f496a..57dcc5fd65 100644
--- a/src/twisted/trial/_dist/workerreporter.py
+++ b/src/twisted/trial/_dist/workerreporter.py
@@ -13,7 +13,7 @@ from types import TracebackType
 from typing import Callable, List, Optional, Sequence, Type, TypeVar
 from unittest import TestCase as PyUnitTestCase
 
-from attrs import Factory, define
+from attr import Factory, define
 from typing_extensions import Literal
 
 from twisted.internet.defer import Deferred, maybeDeferred
diff --git a/src/twisted/trial/_synctest.py b/src/twisted/trial/_synctest.py
index 694e284753..9fefd7d052 100644
--- a/src/twisted/trial/_synctest.py
+++ b/src/twisted/trial/_synctest.py
@@ -34,7 +34,7 @@ from typing import (
 # Python 2.7 and higher has skip support built-in
 from unittest import SkipTest
 
-from attrs import frozen
+from attr import frozen
 
 from twisted.internet.defer import Deferred, ensureDeferred
 from twisted.python import failure, log, monkey
diff --git a/src/twisted/trial/runner.py b/src/twisted/trial/runner.py
index ffc554e25c..2b3f4c1ea0 100644
--- a/src/twisted/trial/runner.py
+++ b/src/twisted/trial/runner.py
@@ -41,7 +41,7 @@ from typing import Callable, Generator, List, Optional, TextIO, Type, Union
 
 from zope.interface import implementer
 
-from attrs import define
+from attr import define
 from typing_extensions import ParamSpec, Protocol, TypeAlias, TypeGuard
 
 from twisted.internet import defer
-- 
2.39.2