Skip to content

Commit b30392e

Browse files
authored
Improve typing to mypy mostly-strict (#437)
Mostly mechanical fixes to type annotations. A lot of adding -> None , or *args: Any. Some code logic cleanup that does not affect output. Two checks are currently ignored, which may be fixed in future PRs: - explicit export (module-level `__all__`) - default Any in Generics, allowing the usage of things like Port in type signatures
1 parent c510ae1 commit b30392e

File tree

278 files changed

+1163
-1087
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

278 files changed

+1163
-1087
lines changed

edg/BoardTop.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class BaseBoardTop(DesignTop):
55
"""Design top with refinements for intermediate-level (0603+ SMD), hand-solderable components."""
6-
def __init__(self):
6+
def __init__(self) -> None:
77
super().__init__()
88
self.refdes_prefix = self.Parameter(StringExpr())
99
self.assign(self.refdes_prefix, "") # override with refinements
@@ -52,7 +52,7 @@ class BoardTop(BaseBoardTop):
5252

5353

5454
class JlcToolingHole(InternalSubcircuit, FootprintBlock):
55-
def contents(self):
55+
def contents(self) -> None:
5656
super().contents()
5757
self.footprint(
5858
'H', 'edg:JlcToolingHole_1.152mm',
@@ -62,7 +62,7 @@ def contents(self):
6262

6363

6464
class JlcToolingHoles(InternalSubcircuit, Block):
65-
def contents(self):
65+
def contents(self) -> None:
6666
super().contents()
6767
self.th1 = self.Block(JlcToolingHole())
6868
self.th2 = self.Block(JlcToolingHole())
@@ -111,7 +111,7 @@ def refinements(self) -> Refinements:
111111

112112
class JlcBoardTop(JlcTopRefinements):
113113
"""Design top with refinements to use parts from JLC's assembly service and including the tooling holes"""
114-
def contents(self):
114+
def contents(self) -> None:
115115
super().contents()
116116
self.jlc_th = self.Block(JlcToolingHoles())
117117

edg/abstract_parts/AbstractAnalogSwitch.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def __init__(self, switch_size: IntLike = 0):
4343
self.switch_size = self.ArgParameter(switch_size)
4444
self.generator_param(self.switch_size, self.inputs.requested(), self.control_gnd.is_connected())
4545

46-
def generate(self):
46+
def generate(self) -> None:
4747
import math
4848
super().generate()
4949

@@ -132,7 +132,7 @@ def __init__(self) -> None:
132132

133133
self.generator_param(self.inputs.requested(), self.control_gnd.is_connected())
134134

135-
def generate(self):
135+
def generate(self) -> None:
136136
super().generate()
137137
self.inputs.defined()
138138
for elt in self.get(self.inputs.requested()):
@@ -175,7 +175,7 @@ def __init__(self) -> None:
175175

176176
self.generator_param(self.outputs.requested())
177177

178-
def generate(self):
178+
def generate(self) -> None:
179179
super().generate()
180180
self.outputs.defined()
181181
for elt in self.get(self.outputs.requested()):

edg/abstract_parts/AbstractAntenna.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Any
2+
13
from ..electronics_model import *
24
from .Categories import *
35
from .PartsTable import PartsTableColumn, PartsTableRow
@@ -30,7 +32,7 @@ class TableAntenna(Antenna, PartsTableSelector, GeneratorBlock):
3032
IMPEDANCE = PartsTableColumn(Range)
3133
POWER_RATING = PartsTableColumn(Range)
3234

33-
def __init__(self, *args, **kwargs):
35+
def __init__(self, *args: Any, **kwargs: Any) -> None:
3436
super().__init__(*args, **kwargs)
3537
self.generator_param(self.frequency, self.power, self.impedance)
3638

edg/abstract_parts/AbstractBjt.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Dict
1+
from typing import Dict, Any
22

33
from ..electronics_model import *
44
from .Categories import *
@@ -41,11 +41,11 @@ def symbol_pinning(self, symbol_name: str) -> Dict[str, BasePort]:
4141
return {'B': self.base, 'C': self.collector, 'E': self.emitter}
4242

4343
@staticmethod
44-
def Npn(*args, **kwargs) -> 'Bjt':
44+
def Npn(*args: Any, **kwargs: Any) -> 'Bjt':
4545
return Bjt(*args, **kwargs, channel='NPN')
4646

4747
@staticmethod
48-
def Pnp(*args, **kwargs) -> 'Bjt':
48+
def Pnp(*args: Any, **kwargs: Any) -> 'Bjt':
4949
return Bjt(*args, **kwargs, channel='PNP')
5050

5151
def __init__(self, collector_voltage: RangeLike, collector_current: RangeLike, *,
@@ -68,7 +68,7 @@ def __init__(self, collector_voltage: RangeLike, collector_current: RangeLike, *
6868
self.actual_power_rating = self.Parameter(RangeExpr())
6969
self.actual_gain = self.Parameter(RangeExpr())
7070

71-
def contents(self):
71+
def contents(self) -> None:
7272
super().contents()
7373

7474
self.description = DescriptionString(
@@ -90,7 +90,7 @@ class TableBjt(PartsTableSelector, Bjt):
9090
POWER_RATING = PartsTableColumn(Range)
9191
CHANNEL = PartsTableColumn(str) # either 'PNP' or 'NPN'
9292

93-
def __init__(self, *args, **kwargs):
93+
def __init__(self, *args: Any, **kwargs: Any) -> None:
9494
super().__init__(*args, **kwargs)
9595
self.generator_param(self.collector_voltage, self.collector_current, self.gain, self.power, self.channel)
9696

edg/abstract_parts/AbstractCapacitor.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def __init__(self, capacitance: RangeLike, voltage: RangeLike, *,
106106
self.actual_capacitance = self.Parameter(RangeExpr())
107107
self.actual_voltage_rating = self.Parameter(RangeExpr())
108108

109-
def contents(self):
109+
def contents(self) -> None:
110110
super().contents()
111111

112112
self.description = DescriptionString(
@@ -149,7 +149,7 @@ def parse_capacitor(cls, value: str) -> Tuple[Range, Range]:
149149
def block_from_symbol(cls, symbol_name: str, properties: Mapping[str, str]) -> 'Capacitor':
150150
return Capacitor(*cls.parse_capacitor(properties['Value']))
151151

152-
def __init__(self, *args, **kwargs) -> None:
152+
def __init__(self, *args: Any, **kwargs: Any) -> None:
153153
super().__init__(*args, **kwargs)
154154

155155
self.pos = self.Port(Passive.empty())
@@ -176,7 +176,7 @@ class TableCapacitor(PartsTableSelector, Capacitor):
176176
NOMINAL_CAPACITANCE = PartsTableColumn(float) # nominal capacitance, even with asymmetrical tolerances
177177
VOLTAGE_RATING = PartsTableColumn(Range)
178178

179-
def __init__(self, *args, **kwargs):
179+
def __init__(self, *args: Any, **kwargs: Any) -> None:
180180
super().__init__(*args, **kwargs)
181181
self.generator_param(self.capacitance, self.voltage, self.voltage_rating_derating, self.exact_capacitance)
182182

@@ -217,7 +217,7 @@ class TableDeratingCapacitor(TableCapacitor):
217217
DERATE_LOWEST = 0.2 # floor for maximum derating factor
218218
# LOOSELY approximated from https://www.maximintegrated.com/en/design/technical-documents/tutorials/5/5527.html
219219

220-
def __init__(self, *args, single_nominal_capacitance: RangeLike = (0, 22)*uFarad, **kwargs):
220+
def __init__(self, *args: Any, single_nominal_capacitance: RangeLike = (0, 22)*uFarad, **kwargs: Any):
221221
super().__init__(*args, **kwargs)
222222
self.single_nominal_capacitance = self.ArgParameter(single_nominal_capacitance)
223223
self.generator_param(self.single_nominal_capacitance)
@@ -290,7 +290,7 @@ class DummyCapacitorFootprint(DummyDevice, Capacitor, FootprintBlock):
290290
"""
291291
def __init__(self, footprint: StringLike = "", manufacturer: StringLike = "", part_number: StringLike = "",
292292
value: StringLike = "",
293-
*args, **kwargs):
293+
*args: Any, **kwargs: Any):
294294
super().__init__(*args, **kwargs)
295295

296296
self.footprint(
@@ -363,7 +363,7 @@ def connected(self, gnd: Optional[Port[GroundLink]] = None, io: Optional[Port[An
363363

364364

365365
class CombinedCapacitorElement(Capacitor): # to avoid an abstract part error
366-
def contents(self):
366+
def contents(self) -> None:
367367
super().contents()
368368
self.assign(self.actual_capacitance, self.capacitance) # fake it, since a combined capacitance is handwavey
369369

@@ -391,7 +391,7 @@ def __init__(self, *, extend_upper: BoolLike = False) -> None:
391391
self.generator_param(self.pos.requested(), self.neg.requested(), self.extend_upper)
392392

393393

394-
def generate(self):
394+
def generate(self) -> None:
395395
super().generate()
396396
capacitance = self.capacitances.sum()
397397
if self.get(self.extend_upper):

edg/abstract_parts/AbstractComparator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def __init__(self, trip_voltage: RangeLike, *, invert: BoolLike = False,
5555

5656
self.actual_trip_voltage = self.Parameter(RangeExpr())
5757

58-
def generate(self):
58+
def generate(self) -> None:
5959
super().generate()
6060

6161
if self.get(self.ref.is_connected()):

edg/abstract_parts/AbstractConnector.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Any
2+
13
from ..electronics_model import *
24
from .Categories import Connector
35
from .AbstractAntenna import Antenna
@@ -35,7 +37,7 @@ def __init__(self, name: StringLike):
3537

3638
class RfConnectorAntenna(Antenna):
3739
"""RF connector used as an antenna"""
38-
def __init__(self, *args, **kwargs):
40+
def __init__(self, *args: Any, **kwargs: Any) -> None:
3941
super().__init__(*args, **kwargs)
4042
self.conn = self.Block(RfConnector())
4143
self.connect(self.conn.sig, self.a)

edg/abstract_parts/AbstractCrystal.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Any
2+
13
from ..electronics_model import *
24
from . import PartsTableSelector, PartsTableColumn, Capacitor, PartsTableRow
35
from .Categories import *
@@ -44,7 +46,7 @@ def __init__(self, frequency: RangeLike) -> None:
4446
self.crystal = self.Port(CrystalPort(self.actual_frequency), [InOut]) # set by subclass
4547
self.gnd = self.Port(Ground(), [Common])
4648

47-
def contents(self):
49+
def contents(self) -> None:
4850
super().contents()
4951

5052
self.description = DescriptionString(
@@ -59,7 +61,7 @@ class TableCrystal(PartsTableSelector, Crystal):
5961
FREQUENCY = PartsTableColumn(Range)
6062
CAPACITANCE = PartsTableColumn(float)
6163

62-
def __init__(self, *args, **kwargs) -> None:
64+
def __init__(self, *args: Any, **kwargs: Any) -> None:
6365
"""Discrete crystal component."""
6466
super().__init__(*args, **kwargs)
6567
self.generator_param(self.frequency)

edg/abstract_parts/AbstractDebugHeaders.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Any
2+
13
from .Categories import ProgrammingConnector
24
from ..electronics_model import *
35

@@ -15,20 +17,20 @@ def __init__(self) -> None:
1517

1618
class SwdCortexTargetConnectorReset(BlockInterfaceMixin[SwdCortexTargetConnector]):
1719
"""Mixin for SWD connectors with adding the optional reset pin"""
18-
def __init__(self, *args, **kwargs) -> None:
20+
def __init__(self, *args: Any, **kwargs: Any) -> None:
1921
super().__init__(*args, **kwargs)
2022
self.reset = self.Port(DigitalSource.empty(), optional=True) # as open-drain
2123

2224

2325
class SwdCortexTargetConnectorSwo(BlockInterfaceMixin[SwdCortexTargetConnector]):
2426
"""Mixin for SWD connectors with adding the optional SWO pin"""
25-
def __init__(self, *args, **kwargs) -> None:
27+
def __init__(self, *args: Any, **kwargs: Any) -> None:
2628
super().__init__(*args, **kwargs)
2729
self.swo = self.Port(DigitalBidir.empty(), optional=True)
2830

2931

3032
class SwdCortexTargetConnectorTdi(BlockInterfaceMixin[SwdCortexTargetConnector]):
3133
"""Mixin for SWD connectors with adding the NONSTANDARD TDI pin (where pins are shared with JTAG)"""
32-
def __init__(self, *args, **kwargs) -> None:
34+
def __init__(self, *args: Any, **kwargs: Any) -> None:
3335
super().__init__(*args, **kwargs)
3436
self.tdi = self.Port(DigitalBidir.empty(), optional=True)

edg/abstract_parts/AbstractDiodes.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Dict
1+
from typing import Dict, Any
22
from deprecated import deprecated
33

44
from ..electronics_model import *
@@ -73,7 +73,7 @@ def __init__(self, reverse_voltage: RangeLike, current: RangeLike, *,
7373
self.actual_voltage_drop = self.Parameter(RangeExpr())
7474
self.actual_reverse_recovery_time = self.Parameter(RangeExpr())
7575

76-
def contents(self):
76+
def contents(self) -> None:
7777
super().contents()
7878

7979
self.description = DescriptionString(
@@ -93,7 +93,7 @@ class TableDiode(PartsTableSelector, Diode):
9393
FORWARD_VOLTAGE = PartsTableColumn(Range) # possible forward voltage range
9494
REVERSE_RECOVERY = PartsTableColumn(Range) # possible reverse recovery time
9595

96-
def __init__(self, *args, **kwargs):
96+
def __init__(self, *args: Any, **kwargs: Any) -> None:
9797
super().__init__(*args, **kwargs)
9898
self.generator_param(self.reverse_voltage, self.current, self.voltage_drop, self.reverse_recovery_time)
9999

@@ -130,7 +130,7 @@ def __init__(self, zener_voltage: RangeLike) -> None:
130130
self.actual_zener_voltage = self.Parameter(RangeExpr())
131131
self.actual_power_rating = self.Parameter(RangeExpr())
132132

133-
def contents(self):
133+
def contents(self) -> None:
134134
super().contents()
135135

136136
self.description = DescriptionString(
@@ -145,7 +145,7 @@ class TableZenerDiode(PartsTableSelector, ZenerDiode):
145145
ZENER_VOLTAGE = PartsTableColumn(Range)
146146
POWER_RATING = PartsTableColumn(Range) # tolerable power
147147

148-
def __init__(self, *args, **kwargs):
148+
def __init__(self, *args: Any, **kwargs: Any) -> None:
149149
super().__init__(*args, **kwargs)
150150
self.generator_param(self.zener_voltage)
151151

@@ -170,7 +170,7 @@ def __init__(self, voltage: RangeLike):
170170

171171
self.voltage = self.ArgParameter(voltage)
172172

173-
def contents(self):
173+
def contents(self) -> None:
174174
super().contents()
175175
self.diode = self.Block(ZenerDiode(zener_voltage=self.voltage))
176176
self.connect(self.diode.cathode.adapt_to(VoltageSink(
@@ -191,7 +191,7 @@ def __init__(self, voltage: RangeLike):
191191

192192
self.voltage = self.ArgParameter(voltage)
193193

194-
def contents(self):
194+
def contents(self) -> None:
195195
super().contents()
196196

197197
self.diode = self.Block(ZenerDiode(zener_voltage=self.voltage))

0 commit comments

Comments
 (0)