-
Notifications
You must be signed in to change notification settings - Fork 20
/
CHANGES.txt
371 lines (295 loc) · 14.2 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
v0.19 - 2024-04-27
Enhancements:
- Added `scalex` and `scaley` for asymmetric zooming/scaling of Elements
- Added ElementImage for placing PNG and SVG images as an Element
- Added pictorial elements
- Load Fritzing Part files (breadboard view)
- Added `.pin` and `.side` methods to Ic Element
- Added `mathfont` parameter to drawing config method
Fixes:
- Fixed `tox` and `toy` methods when the Elemnet defines a theta
- Fixed vertical offset of labels below an Element
- Fixed reversing of CurrentLabel.
- Update Ic Element to respect `pinspacing` when `size` is also provided
- SVG backend accepts color tuples (r, g, b) in the range 0-1, mirroring Matplotlib
- Tighten bounding box around text elements (when using ziamath)
v0.18 - 2023-12-29
Enhancements:
- Automatically increase size of flowchart boxes to fit the text
- Added Container element to automatically draw a box around a group of elements
- Internally track drawing state so that `d.add` or `d +=` is no longer necessary when adding elements inside a context manager
- Default element attributes may be set using `Element.defaults` dictionary. For example, to fill all Diodes, set `elm.Diode.defaults['fill'] = True`.
New Elements:
- Lamp2
- Terminal
Other changes:
- BREAKING: Subclasses of ElementCompound must add Segments inside a `setup` method instead of in `__init__`. The `inner_element` and `outer_element` parameters of `TwoPort` now accept classes instead of instances of those classes.
v0.17 - 2023-06-03
New Elements:
- Tristate inverter (credit: Jan Genoe)
- NMos and PMos elements (credit: dtmaidenmueller)
- AnalogNFet, AnalogPFet, AnalogBiasedFet
- DataBusLine
- CurrentMirror, VoltageMirror
- Nullator, Norator, VMCMPair
- Compound twoport elements (ElementTwoport base class):
- TwoPort
- VoltageTransactor
- TransimpedanceTransactor
- CurrentTransactor
- TransadmittanceTransactor
- Nullor
Enhancements:
- Added arguments for length/width of CurrentLabel arrows (credit: Christian Seigel)
- Added config option for setting whitespace margins
Bug fixes:
- Fixed regression bug in logicparse where labels were not drawn on inputs/outputs
- Fix timing diagrams when async times are longer than the wave
- Fixed default style hierarchy on segments
- Fixed CurrentLabel placement with transistor elements, now follows biasing current
- Fixed CurrentLabel positioning for elements with no center anchor
Other changes:
- Deprecated positional direction parameter to Element class.
- Add nonglobal rotation mode attribute to SegmentText
v0.16 - 25-Mar-2023
- Added `canvas` parameter to Drawing and draw method, and deprecated `backend` parameter.
- Removed `elements` argument from Drawing. Use Drawing.add_elements.
- Added `Drawing.set_anchor` to define anchor points, useful for ElementDrawing instances.
- Added shunt resistor symbol Rshunt
- Fixed lead length of XOR gates to align with OR gates
- Fixed greater and less than symbols in SVG backend
- Fixed some anchor positions on flowchart symbols
- Allow font parameter to be the path of a TTF file
- Removed old deprecations
- Replaced setup.py with setup.cfg
v0.15 - 20-Jun-2022
- Added DSP elements Circulator, Isolator, VGA
- Added ZLabel element for right-angle impedance arrow labels
- Changed DSP anchor names from 'in' to 'input' to avoid conflict with 'in' keyword
- Fixed styles with nested ElementDrawing elements
- Fixed zorder of filled elements in Matplotlib backend
- Added mathfont parameter to labels for specifying different font on math labels
- Added padx and pady parameters to Encircle elements
- Moved SVG backend configuration to svgconfig object and deprecated 'settextmode'.
- Added 'visible' parameter to Segment objects
v0.14 - 09-Jan-2022
- Added context manager to Drawing class.
- Added Wire element for quick 90-degree connections
- Added Encircle, EncircleBox, and Annotate elements
- Added Wheatstone, Rectifier, SparkGap elements
- Added "2T" version of transistor elements for placement as as two-terminal elements
- `tox` and `toy` methods automatically change drawing direction, removing need to specify `right()` and `tox()`, for example.
- Added `istart` and `iend` anchors to 2-Terminal elements for defining inner start and end points before lead extensions
- Added `dot` and `idot` methods to two-terminal elements
- Added '-o' and '-\|' arrow types to draw dot or endcap instead of arrow at the end of lines
- Added `leads` parameter to OpAmp for adding lead extensions
- Added `lead` parameter to Grounds, Vss, and Vdd
- Added optional `dx` and `dy` parameters to `to` and `at` methods for quick fine-tuning of placement
- Added optional `length` parameter to `up`, `down`, `left`, and `right` on two-terminal elements
- Improved placement of CurrentLabel arrows
- Fix default label position on Vss element
- Fix positioning of switch contact bubbles
- Fix text rotation in svg backend and path mode
- The `scale` method now maintains the length of two-terminal elements
v0.13 - 19-Dec-2021
- Added Digital Timing Diagram elements
- Added Table and Kmap elements
- Added Arc2, Arc3, ArcN, ArcZ, ArcLoop elements, useful for state machine diagrams
- Added drop method to Element class to specify where to leave the drawing position
- Added move_from method to Drawing class to move relative to another element anchor
- Added more anchors to all flowchart elements
- Improved layout of flowchart elements. **May affect layout of some existing flowchart diagrams.**
- Added SegmentBezier for creating elements with curves
- Deprecated SegmentArrow in favor of Segment with arrow parameter
v0.12 - 05-Nov-2021
- Fixed Arrow and LineDot element placement when placed with anchor
- Fixed copy/pickle of Element class
- Fixed importing * from schemdraw.elements
v0.11 - 10-Jul-2021
- Fixed placing elements by anchor when anchors were defined using a tuple rather than Point
- SVG backend adds option for SVG1.x format for better compatibility with SVG renderers
- Restore compabitliiby with Python 3.7 via conditional import of typing_extensions.
v0.10 - 30-Apr-2021
- Added options to place labels inside Mixer elements
- Fixed arrowhead overshoot
- Fixed get_imagedata function
- Update pip install to include optional dependencies
- Added ziamath optional dependency for rendering math in SVG backend
- Added LoopArrow as superclass of LoopCurrent, for placing a loop anywhere
v0.9.1 - 30-Jan-2021
- Fixed missing module in setup.py.
v0.9 - 30-Jan-2021
- Added optional SVG backend for drawing directly to an SVG image
- Implemented method-chaining "fluent" interface for building elements
- Added `elements.style` method for setting U.S. or European/IEC resistor style
- Added parameter for drawing schematic on existing matplotlib axis
- Added string parser for creating logic diagrams from expressions like "A or B"
- Fixed zooming of arc segments
- Added type annotations
- Added `Drawing.move` method for moving cursor by dx and dy.
- Drawing class implements += operator, so elements can be added by `Drawing += Element()`
- Removed dependency on Numpy
- Added Drawing.interactive` to allow element-by-element drawing with Matplotlib's plt.ion().
- Now requires Python 3.8+
- New Elements:
- CPE (Constant Phase Element)
- Varactor
- FuseIEEE
- FuseIEC
- SwitchRotary
- SwitchReed
- Jack
- Plug
- Ic555
- IcDIP
- SevenSegment
- Outlet Elements
- Deprecations:
- `Element.add_label` is deprecated (use `Element.label`)
- `Drawing.loopI` is deprecated (add a `LoopCurrent` element)
- `Drawing.labelI` is deprecated (add a `CurrentLabel` element)
- `Drawing.labelI_inline` is deprecated (add a `CurrentLabelInline` element)
v0.8 - 15-Aug-2020
- Changed Header anchors to `pinN` for consistency with Ic.
- Improved label placement with respect to anchor positions.
- Prevent duplicate figures from showing in Jupyter Element representation
- Improvements for headless server operation to prevent popup window
- Added some undocumented features to documentation
- Added `Drawing.get_imagedata` function for returning raw image bytes
- Fixed pip installation issue with module capitalization. Must import lowercase `schemdraw`.
v0.7.1 - 26-Jun-2020
- Bug fix: restore usage outside of Jupyter, so that Matplotlib window is shown when calling Drawing.draw().
v0.7 - 21-Jun-2020
- Dropped support for Python 2. Now requires 3.7+.
- Elements are now subclasses of Element. Previous (dict) element names are translated into
new class names. Any user-defined elements will need to be converted to classes.
The `group_elements` function is replaced with `ElementDrawing` class.
- Allow `fontsize` or `size` keyword arguments interchangeably in Drawing and add_label
- Updated flow.Decision to use keyword arguments for labeling decision branches
- The Ic element label offset parameter changed from `lblofst` to `lofst`
to avoid conflict with the main element label.
- Direct access to Drawing.fig and Drawing.ax are no longer available. Instead, Drawing.draw()
returns a schemdraw.Figure instance with fig and ax attributes.
- Implemented Jupyter representation functions for both Drawing and Element classes.
- New Elements:
- Coax
- Triax
- SwitchDpst
- SwitchDpdt
- Relay
- Optocoupler
- Arrow
- LineDot
- Breaker
- OrthoLines
- RightLines
- BusConnect
- BusLine
- Tag
- Photoresistor
- PhotoresistorBox
- Thermistor
- DiodeShockley
- PotBox
- RBoxVar
- Solar
- Neon
- SourceSquare
- AntennaLoop
- AntennaLoop2
- AudioJack
- Tgate
- Schmitt
- SchmittNot
- SchmittAnd
- SchmittNand
v0.6.0, 11-Feb-2020
- Refactored internals to allow more control over individual components of drawing.
Should have no effect unless the user is accessing internal attributes of the Element object.
This also adds the `segments` list to the Element object, which allows finer control over
individual bits of the drawing.
- Updated add_label so that "top" labels should always appear on top, regardless of flip/reverse
- Swapped the direction of current sources, so that a current source with direction "up" has the
arrow pointing up.
- Added "zorder" parameter in the element definition dictionary and `add` method
- Added `elements.ic` and `elements.multiplexer` functions as replacements to `blackbox` and `mux`.
These include more functionality such as adjusting indiviudal pin rotation, color, and inverter bubbles.
- Labels can be placed relative to an anchor position using the `add_label` method. This could be
useful, for example, in labeling pin numbers on a logic gate or opamp.
- Added new anchors to OPAMPs for power supply and offset nulls.
- New Elements:
- MIC
- MOTOR
- Documentation:
- Upgraded documentation to Sphinx and moved to readthedocs.org at https://schemdraw.readthedocs.io/en/latest/.
- Changed preferred import to `import SchemDraw.elements as elm`. Apparently some people still
use import * with pylab; this suggestion will help avoid conflicts.
v0.5.0, 21-Jul-2019
- Added flowcharting symbol methods to SchemDraw.flow module
- Added signal processing symbols to SchemDraw.dsp module
- Implemented fill parameter on Drawing.add to fill shapes and closed paths with a solid color
- New elements:
- Fuse
- CapacitorVar,
- DiodeTunnel
- Jfet
- Diac
- Triac
- SCR
v0.4.0, 03-Nov-2018
- Fixed drawing of NOT and related gates to property extend the path
- Fixed arrow translation when grouping elements
- Fixed sidelabels and plabels of blackbox when empty
- Fixed arc drawing due to change in Matplotlib 2.2 on asymmetric partial arcs
v0.3.0, 03-Jul-2017
- Added function for drawing multiplexers/demultiplexers
- Updates to labelI() method to allow reversing arrow and changing length
- Add CSS to documentation
- New elements:
- PHOTODIODE
- NFET4
- PFET4
- VSS
- VDD
v0.2.2, 06-Mar-2016
- Documentation updates
- New elements:
- Transformer
- Josephson Junction (JJ)
v0.2.1, 03-May-2015
- Fixed anchor names when element overwrites base anchor, such as BJT_PNP.
- Added showplot keyword to draw() for non-interactive mode.
- Added 2-collector BJT.
- Documentation: added gallery of schematics.
v0.2.0, 29-Apr-2015
- Added default line width argument to drawing() class. Default width is now 1.5.
- Converted documentation to use all vector-based images
- Added XKCD-mode example
- New elements:
- BATTERY
- BAT_CELL
- SPEAKER
- BUTTON
- BUTTON_NC
- XTAL
- MEMRISTOR,
- SCHOTTKY
- ZENER
- LED2
v0.1.4, 30-Sep-2014
- Add function to group several elements into one
- Add blackbox() function to generate box elements with arbitrary inputs
- Allow element definition to specify label alignment
- Added linestyle to element kwargs and definition
- New elements:
- LED
- OPAMP_NOSIGN
- GAP_LABEL
- ELLIPSIS
v0.1.3, 21-Sep-2014
- Added logic gate elements
- Added transparent and dpi options to save() function
- Fixed issues with zooming and rotating elements with arcs
- LaTeX typesetting uses sans-serif, regular fonts for consistency
v0.1.0, 25-Aug-2014
- Initial Release