Wanda
8e6ae9e6e0
Implement RFC 38: Component signature immutability.
...
Fixes #996 .
2023-12-11 19:51:32 +00:00
Wanda
6ad0d21cc9
Implement RFC 37: Make `Signature
` immutable.
...
Fixes #995 .
2023-12-11 19:01:32 +00:00
Catherine
b9c2404f22
lib.wiring: make values of In
and Out
be strings "In" and "Out".
...
Their `str()` and `repr()` values are already that; and the 0 and 1
don't make sense. The RFC leaves it unspecified.
2023-12-11 18:04:37 +00:00
Wanda
422ba9ea51
lib.wiring: use tracer to obtain default Signature path and src_loc.
...
Fixes #987 .
2023-12-07 21:50:34 +00:00
Catherine
120375dabe
lib.wiring: fix __repr__
for PureInterface subclasses.
...
Fixes #988 .
2023-12-05 04:46:11 +00:00
Wanda
0cdcab0fbb
Implement RFC 34: Rename amaranth.lib.wiring.Interface
to PureInterface
.
2023-12-04 21:41:47 +00:00
Wanda
ab6503e352
lib.wiring: add __repr__
to Interface
.
2023-12-03 02:00:20 +00:00
Catherine
04f906965a
lib.wiring: in is_compliant(sig, obj)
, check that obj
is an interface object with that signature.
...
Fixes #935 .
2023-11-27 18:50:41 +00:00
Catherine
8b48af6de8
lib.wiring: make sig.members +=
actually work.
2023-11-27 15:42:24 +00:00
Catherine
02756f6ec7
lib.wiring: comment cleanup. NFC
2023-11-27 15:42:24 +00:00
Catherine
b2d8a18cbf
lib.wiring: fix _gettypeattr fallback path.
2023-11-27 15:42:24 +00:00
Catherine
a2e87b370e
lib.wiring: fix typo in Signature.flatten
.
2023-11-27 15:42:24 +00:00
Catherine
74e613b49d
lib.wiring: expand flipped object forwarding to respect @property
and del
.
...
Although `@property` is the most common case, any descriptors are now
properly supported.
The special casing of methods goes away as they work by having functions
implement the descriptor protocol. (`__get__` has some special behavior
to make this possible.)
This is some of the most cursed code I have ever written, yet it is
obviously necessary.
2023-11-26 12:53:59 +00:00
William D. Jones
abd74ead55
lib.wiring: flip sub-interfaces accessed via FlippedInterface.
2023-11-22 03:07:41 +00:00
Wanda
1802f7fddd
lib.wiring: fix search-and-replace accident. NFC
2023-11-21 16:16:59 +00:00
Wanda
470477a88f
lib.wiring: fix Component.signature
on subclasses without annotations.
...
On Python <3.10, classes without annotations do not get an
`__annotations__` member at all, so the `getattr` on a subclass falls
back to the parent class `__annotations__`, attempting to create
signature members twice. Fix that by looking at the `__dict__` instead.
2023-10-08 22:49:47 +00:00
Jean-François Nguyen
c7da6c1292
lib.wiring: add Interface to __all__.
2023-10-05 14:11:38 +00:00
Nelson Gauthier
8c56b2033f
lib.wiring: Remove superfluous method alias
2023-09-27 17:50:33 +00:00
Catherine
ec9da2d4d6
lib.wiring: Component.signature should not be a class method.
...
While the capability of providing signatures for components that are not
parametric is useful, most Amaranth gateware is heavily parameterized,
and the capability is not worth making most subclasses Liskov-incompatible
with the base class (where the derived class would not provide `signature`
as a class method anymore).
2023-09-27 11:32:06 +00:00
Catherine
a90bc7b91a
lib.wiring: create flipped interface from flipped signature.
...
Fixes #914 .
Co-authored-by: Nelson Gauthier <nelson.gauthier@gmail.com>
2023-09-27 11:17:29 +00:00
Catherine
87fbcedecf
lib.wiring: implement Signature.flatten
.
2023-09-04 19:05:49 +00:00
Catherine
f28b20fc84
lib.wiring: ensure flipped(flipped(intf)) is intf
.
2023-09-01 05:42:04 +00:00
Catherine
88cbf30128
lib.wiring: use is
for type comparison in Component
.
...
This avoids running custom `__eq__` implementations, which could
cause issues such as #882 .
2023-08-31 19:26:07 +00:00
Catherine
44d5fac01c
lib.wiring: fix equality of FlippedSignature
with other object.
...
Fixes #882 .
2023-08-31 19:26:07 +00:00
Catherine
4ffadff20d
lib.wiring: implement amaranth-lang/rfcs#2 .
...
Co-authored-by: Charlotte <charlotte@lottia.net>
2023-08-22 16:22:09 +00:00