File: CHANGES.rst

package info (click to toggle)
pyserial 3.5~b0-1
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 848 kB
  • sloc: python: 7,979; makefile: 107; sh: 32
file content (803 lines) | stat: -rw-r--r-- 27,725 bytes parent folder | download
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
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
========================
 pySerial Release Notes
========================

Version 1.0     13 Feb 2002
---------------------------
- First public release.
- Split from the pybsl application (see http://mspgcc.sourceforge.net)

New Features:

- Added Jython support


Version 1.1     14 Feb 2002
---------------------------
Bugfixes:

- Win32, when not specifying a timeout
- Typos in the Docs

New Features:

- added ``serialutil`` which provides a base class for the ``Serial``
  objects.

- ``readline``, ``readlines``, ``writelines`` and ``flush`` are now supported
  see README.txt for deatils.


Version 1.11    14 Feb 2002
---------------------------
Same as 1.1 but added missing files.


Version 1.12    18 Feb 2002
---------------------------
Removed unneded constants to fix RH7.x problems.


Version 1.13    09 Apr 2002
---------------------------
Added alternate way for enabling rtscts (CNEW_RTSCTS is tried too)
If port opening fails, a ``SerialException`` is raised on all platforms


Version 1.14    29 May 2002
---------------------------
Added examples to archive
Added non-blocking mode for ``timeout=0`` (tnx Mat Martineau)

Bugfixes:

- win32 does now return the remaining characters on timeout


Version 1.15    04 Jun 2002
---------------------------
Bugfixes (win32):

- removed debug messages
- compatibility to win9x improved


Version 1.16    02 Jul 2002
---------------------------
Added implementation of RI and corrected RTS/CTS on Win32


Version 1.17    03 Jul 2002
---------------------------
Silly mix of two versions in win32 code corrected


Version 1.18    06 Dec 2002
---------------------------
Bugfixes (general):

- remove the mapping of flush to the destructive flushOutput as
  this is not the expected behaviour.
- readline: EOL character for lines can be chosen idea by 
  John Florian.

Bugfixes (posix):

- cygwin port numbering fixed
- test each and every constant for it's existence in termios module,
  use default if not existent (fix for Bug item #640214)
- wrong exception on nonexistent ports with /dev file. bug report
  by Louis Cordier

Bugfixes (win32):

- RTS/CTS handling as suggested in Bug #635072
- bugfix of timeouts brought up by Markus Hoffrogge


Version 1.19    19 Mar 2003
---------------------------
Bugfixes (posix):

- removed ``dgux`` entry which actually had a wrong comment and is
  probably not in use anywhere.

Bugfixes (win32):

- added ``int()`` conversion, [Bug 702120]
- remove code to set control lines in close method of win32
  version. [Bug 669625]


Version 1.20    28 Aug 2003
---------------------------
- Added ``serial.device()`` for all platforms

Bugfixes (win32):

- don't recreate overlapped structures and events on each
  read/write.
- don't set unneeded event masks.
- don't use DOS device names for ports > 9.
- remove send timeout (it's not used in the linux impl. anyway).


Version 1.21    30 Sep 2003
---------------------------
Bugfixes (win32):

- name for COM10 was not built correctly, found by Norm Davis.

Bugfixes (examples):

- small change in ``miniterm.py`` that should mage it run on cygwin,
  [Bug 809904] submitted by Rolf Campbell.


Version 2.0b1    1 Oct 2003
---------------------------
Transition to the Python 2.0 series:

- New implementation only supports Python 2.2+, backwards compatibility
  should be maintained almost everywhere.
  The OS handles (like the ``hComPort`` or ``fd`` attribute) were prefixed
  with an underscore. The different names stay, as anyone that uses one of
  these has to write platform specific code anyway.
- Common base class ``serialutil.SerialBase`` for all implementations.
- ``PARITY_NONE``, ``PARITY_EVEN``, ``PARITY_ODD`` constants changed and all
  these constants moved to ``serialutil.py`` (still available as
  ``serial.PARITY_NONE`` etc. and they should be used that way)
- Added ``serial.PARITY_NAMES`` (implemented in ``serialutil.PARITY_NAMES``).
  This dictionary can be used to convert parity constants to meaningful
  strings.
- Each Serial class and instance has a list of supported values:
  ``BAUDRATES``, ``BYTESIZES``, ``PARITIES``, ``STOPBITS``Ggg
  (i.e. ``serial.Serial.BAUDRATES or s = serial.Serial; s.BAUDRATES``)
  these values can be used to fill in value sin GUI dialogs etc.
- Creating a ``Serial()`` object without port spec returns an unconfigured,
  closed port. Useful if a GUI dialog should take a port and configure
  it.
- New methods for ``serial.Serial`` instances: ``open()``, ``isOpen()``
- A port can be opened and closed as many times as desired.
- Instances of ``serial.Serial`` have ``baudrate``, ``bytesize``, ``timeout``
  etc. attributes implemented as properties, all can be set while the port is
  opened. It will then be reconfigured.
- Improved ``__doc__``'s.
- New ``test_advanced.py`` for the property setting/getting testing.
- Small bugfix on posix with get* methods (return value should be true a
  boolean).
- added a ``__repr__`` that returns a meaningful string will all the serial
  setting, easy for debugging.
- The serialposix module does not throw an exception on unsupported
  platforms, the message is still printed. The idea that it may still
  work even if the platform itself s not known, it simply tries to do
  the posix stuff anyway (It's likely that opening ports by number
  fails, but by name it should work).


Version 2.0b2    4 Oct 2003
---------------------------
- Added serial port configuration dialog for wxPython to the examples.
- Added terminal application for wxPython with wxGlade design file
  to the examples.
- Jython support is currently broken as Jython does not have a Python 2.2
  compatible release out yet


Version 2.0      6 Nov 2003
---------------------------
- Fixes ``setup.py`` for older distutils


Version 2.1     28 Jul 2004
---------------------------
Bugfixes:

- Fix XON/XOFF values [Bug 975250]

Bugfixes (posix):

- ``fd == 0`` fix from Vsevolod Lobko
- netbsd fixes from Erik Lindgren
- Dynamically lookup baudrates and some cleanups

Bugfixes (examples):

- CRLF handling of ``miniterm.py`` should be more consistent on Win32
  and others. Added LF only command line option
- Multithreading fixes to ``wxTerminal.py`` (helps with wxGTK)
- Small change for wxPython 2.5 in ``wxSerialConfigDialog.py`` [Bug 994856]

New Features:

- Implement write timeouts (``writeTimeout`` parameter)


Version 2.2     31 Jul 2005
---------------------------
Bugfixes:

- [Bug 1014227]: property <del> broken
- [Bug 1105687]: ``serial_tcp_example.py``: ``--localport`` option
- [Bug 1106313]: device (port) strings cannot be unicode

Bugfixes (posix):

- [Patch 1043436] Fix for [Bug 1043420] (OSError: EAGAIN)
- [Patch 1102700] ``fileno()`` added
- ensure disabled PARMRK

Bugfixes (win32):

- [Patch 983106]: keep RTS/CTS state on port setting changes

New Features:

- ``dsrdtr`` setting to enable/disable DSR/DTR flow control independently
  from the ``rtscts`` setting. (Currently Win32 only, ignored on other
  platforms)


Version 2.3     19 Jun 2008
---------------------------
New Features:

- iterator interface. ``for line in Serial(...): ...`` is now possible
  Suggested by Bernhard Bender
- ``sendBreak()`` accepts a ``duration`` argument. Default duration increased.
- win32 handles \\.\COMx format automatically for com ports of higher number
  (COM10 is internally translated to \\.\COM10 etc.)
- miniterm.py has a new feature to send a file (upload) and configurable
  special characters for exit and upload. Refactored internals to class based
  structure (upload and class refactoring by Colin D Bennett)

Bugfixes:

- [Bug 1451535] TCP/serial redirect example "--help"
- update VERSION variable
- update wxSerialConfigDialog.py and wxTerminal.py compatibility with
  wxPython 2.8 (Peleg)
- Check for string in write function. Using unicode causes errors, this
  helps catching errors early (Tom Lynn)

Bugfixes (posix):

- [Bug 1554183] setRTS/setDTR reference to non existing local "on"
- [Bug 1513653] file descriptor not closed when exception is thrown
- FreeBSD now uses cuadX instead of cuaaX (Patrick Phalen)

Bugfixes (win32):

- [Bug 1520357] Handle leak
- [Bug 1679013] Ignore exception raised by SetCommTimeout() in close().
- [Bug 1938118] process hang forever under XP


Version 2.4      6 Jul 2008
---------------------------
New Features:

- [Patch 1616790] pyserial: Add inter-character timeout feature
- [Patch 1924805] add a setBreak function
- Add mark/space parity
- Add .NET/Mono backend (IronPython)

Bugfixes (posix):

- [Bug 1783159] Arbitrary baud rates (Linux/Posix)

Bugfixes (win32):

- [Patch 1561423] Add mark/space parity, Win32
- [Bug 2000771] serial port CANNOT be specified by number on windows
- examples/scanwin32.py does no longer return \\.\ names
- fix \\.\ handling for some cases

Bugfixes (jython):

 - The Jython backend tries javax.comm and gnu.io (Seo Sanghyeon)


Version 2.5-rc1  2009-07-30
---------------------------
New Features:

- Python 3.x support (through 2to3)
- compatible with Python io library (Python 2.6+)
- Support for Win32 is now written on the top of ctypes (bundled with
  Python 2.5+) instead of pywin32 (patch by Giovanni Bajo).
- 1.5 stop bits (STOPBITS_ONE_POINT_FIVE, implemented on all platforms)
- miniterm application extended (CTRL+T -> menu)
- miniterm.py is now installed as "script"
- add scanlinux.py example
- add port_publisher example
- experimental RFC-2217 server support (examples/rfc2217_server.py)
- add ``getSettingsDict`` and ``applySettingsDict`` serial object methods
- use a ``poll`` based implementation on Posix, instead of a ``select`` based,
  provides better error handling [removed again in later releases].

Bugfixes:

- Improve and fix tcp_serial_redirector example.
- [Bug 2603052] 5-bit mode (needs 1.5 stop bits in some cases)

Bugfixes (posix):

- [Bug 2810169] Propagate exceptions raised in serialposix _reconfigure
- [Bug 2562610] setting non standard baud rates on Darwin (Emmanuel Blot)

Bugfixes (win32):

- [Bug 2469098] parity PARITY_MARK, PARITY_SPACE isn't supported on win32
- [SF  2446218] outWaiting implemented
- [Bug 2392892] scanwin32.py better exception handling
- [Bug 2505422] scanwin32.py Vista 64bit compatibility


Version 2.5-rc2  2010-01-02
---------------------------
New Features:

- Documentation update, now written with Sphinx/ReST
- Updated miniterm.py example
- experimental RFC-2217 client support (serial.rfc2217.Serial, see docs)
- add ``loop://`` device for testing.
- add ``serial.serial_for_url`` factory function (support for native ports and
  ``rfc2217``, ``socket`` and ``loop`` URLs)
- add new example: ``rfc2217_server.py``
- tests live in their own directory now (no longer in examples)

Bugfixes:

- [Bug 2915810] Fix for suboption parsing in rfc2217
- Packaging bug (missed some files)

Bugfixes (posix):

- improve write timeout behavior
- [Bug 2836297] move Linux specific constants to not break other platforms
- ``poll`` based implementation for ``read`` is in a separate class
  ``PosixPollSerial``, as it is not supported well on all platforms (the
  default ``Serial`` class uses select).
- changed error handling in ``read`` so that disconnected devices are
  detected.


Bugfixes (win32):

- [Bug 2886763] hComPort doesn't get initialized for Serial(port=None)


Version 2.5      2010-07-22
---------------------------
New Features:

- [Bug 2976262] dsrdtr should default to False
  ``dsrdtr`` parameter default value changed from ``None`` (follow ``rtscts``
  setting) to ``False``. This means ``rtscts=True`` enables hardware flow
  control on RTS/CTS but no longer also on DTR/DSR. This change mostly
  affects Win32 as on other platforms, that setting was ignored anyway.
- Improved xreadlines, it is now a generator function that yields lines as they
  are received (previously it called readlines which would only return all
  lines read after a read-timeout). However xreadlines is deprecated and not
  available when the io module is used. Use ``for line in Serial(...):``
  instead.

Bugfixes:

- [Bug 2925854] test.py produces exception with python 3.1
- [Bug 3029812] 2.5rc2 readline(s) doesn't work

Bugfixes (posix):

- [BUG 3006606] Nonblocking error - Unix platform

Bugfixes (win32):

- [Bug 2998169] Memory corruption at faster transmission speeds.
  (bug introduced in 2.5-rc1)


Version 2.6      2011-11-02
---------------------------
New Features:

- Moved some of the examples to serial.tools so that they can be used
  with ``python -m``
- serial port enumeration now included as ``serial.tools.list_ports``
- URL handlers for ``serial_for_url`` are now imported dynamically. This allows
  to add protocols w/o editing files. The list
  ``serial.protocol_handler_packages`` can be used to add or remove user
  packages with protocol handlers (see docs for details).
- new URL type: hwgrep://<regexp> uses list_ports module to search for ports
  by their description
- several internal changes to improve Python 3.x compatibility (setup.py,
  use of absolute imports and more)

Bugfixes:

- [Bug 3093882] calling open() on an already open port now raises an exception
- [Bug 3245627] connection-lost let rfc2217 hangs in closed loop
- [Patch 3147043] readlines() to support multi-character eol

Bugfixes (posix):

- [Patch 3316943] Avoid unneeded termios.tcsetattr calls in serialposix.py
- [Patch 2912349] Serial Scan as a Module with Mac Support

Bugfixes (win32):

- [Bug 3057499] writeTimeoutError when write Timeout is 0
- [Bug 3414327] Character out of range in list_ports_windows
- [Patch 3036175] Windows 98 Support fix
- [Patch 3054352] RTS automatic toggle, for RS485 functionality.
- Fix type definitions for 64 bit Windows compatibility


Version 2.7      2013-10-17
---------------------------
- Win32: setRTS and setDTR can be called before the port is opened and it will
  set the initial state on port open.
- Posix: add platform specific method: outWaiting (already present for Win32)
- Posix: rename flowControl to setXON to match name on Win32, add
  flowControlOut function
- rfc2217: zero polls value (baudrate, data size, stop bits, parity) (Erik
  Lundh)
- Posix: [Patch pyserial:28] Accept any speed on Linux [update]
- Posix: [Patch pyserial:29] PosixSerial.read() should "ignore" errno.EINTR
- OSX: [Patch pyserial:27] Scan by VendorID/Product ID for USB Serial devices
- Ensure working with bytes in write() calls

Bugfixes:

- [Bug 3540332] SerialException not returned
- [Bug pyserial:145] Error in socket_connection.py
- [Bug pyserial:135] reading from socket with timeout=None causes TypeError
- [Bug pyserial:130] setup.py should not append py3k to package name
- [Bug pyserial:117] no error on lost conn w/socket://

Bugfixes (posix):

- [Patch 3462364] Fix: NameError: global name 'base' is not defined
- list_ports and device() for BSD updated (Anders Langworthy)
- [Bug 3518380] python3.2 -m serial.tools.list_ports error
- [Bug pyserial:137] Patch to add non-standard baudrates to Cygwin
- [Bug pyserial:141] open: Pass errno from IOError to SerialException
- [Bug pyserial:125] Undefined 'base' on list_ports_posix.py, function usb_lsusb
- [Bug pyserial:151] Serial.write() without a timeout uses 100% CPU on POSIX
- [Patch pyserial:30] [PATCH 1/1] serial.Serial() should not raise IOError.

Bugfixes (win32):

- [Bug 3444941] ctypes.WinError() unicode error
- [Bug 3550043] on Windows in tools global name 'GetLastError' is not defined
- [Bug pyserial:146] flush() does nothing in windows (despite docs)
- [Bug pyserial:144] com0com ports ignored due to missing "friendly name"
- [Bug pyserial:152] Cannot configure port, some setting was wrong. Can leave
  port handle open but port not accessible


Version 3.0a0   2015-09-22
--------------------------
- Starting from this release, only Python 2.7 and 3.2 (or newer) are supported.
  The source code is compatible to the 2.x and 3.x series without any changes.
  The support for earlier Python versions than 2.7 is removed, please refer to
  the pyserial-legacy (V2.x) series if older Python versions are a
  requirement).
- Development moved to github, update links in docs.
- API changes: properties for ``rts``, ``dtr``, ``cts``, ``dsr``, ``cd``, ``ri``,
  ``in_waiting`` (instead of get/set functions)
- remove file ``FileLike`` class, add ``read_until`` and ``iread_until`` to
  ``SerialBase``
- RS485 support changed (``rts_toggle`` removed, added ``serial.rs485`` module
  and ``rs485_mode`` property)
- ``socket://`` and ``rfc2217://`` handlers use the IPv6 compatible
  ``socket.create_connection``
- New URL handler: ``spy:://``.
- URL handlers now require the proper format (``?`` and ``&``) for arguments
  instead of ``/`` (e.g. ``rfc2217://localhost:7000?ign_set_control&timeout=5.5``)
- Remove obsolete examples.
- Finish update to BSD license.
- Use setuptools if available, fall back to distutils if unavailable.
- miniterm: changed command line options
- miniterm: support encodings on serial port
- miniterm: new transformations, by default escape/convert all control characters
- list_ports: improved, added USB location (Linux, Win32)
- refactored code
- [FTR pyserial:37] Support fileno() function in the socket protocol
- Posix: [Patch pyserial:31] Mark/space parity on Linux
- Linux: [Patch pyserial:32] Module list_ports for linux should include the
  product information as description.
- Java: fix 2 bugs (stop bits if/else and non-integer timeouts) (Torsten
  Roemer)
- Update wxSerialConfigDialog.py to use serial.tools.list_ports.
- [Patch pyserial:34] Improvements to port_publisher.py example
- [Feature pyserial:39] Support BlueTooth serial port discovery on Linux

Bugfixes:

- [Bug pyserial:157] Implement inWaiting in protocol_socket
- [Bug pyserial:166] RFC2217 connections always fail
- [Bug pyserial:172] applySettingsDict() throws an error if the settings dictionary is not complete
- [Bug pyserial:185] SocketSerial.read() never returns data when timeout==0

Bugfixes (posix):

- [Bug pyserial:156] PosixSerial.open raises OSError rather than
  SerialException when port open fails
- [Bug pyserial:163] serial.tools.list_ports.grep() fails if it encounters None type
- fix setXON
- [Patch pyserial:36 / 38] Make USB information work in python 3.4 and 2.7
- clear OCRNL/ONLCR flags (CR/LF translation settings)
- [Feature pyserial:38] RS485 Support
- [Bug pyserial:170] list_ports_posix not working properly for Cygwin
- [Bug pyserial:187] improve support for FreeBSD (list_ports_posix)

Bugfixes (win32):

- [Bug pyserial:169] missing "import time" in serialwin32.py

Bugfixes (cli):

- [Bug pyserial:159] write() in serialcli.py not working with IronPython 2.7.4


Version 3.0b1   2015-10-19
--------------------------
- list_ports: add ``vid``, ``pid``, ``serial_number``, ``product``,
  ``manufacturer`` and ``location`` attribute for USB devices.
- list_ports: update OSX implementation.
- list_ports: Raspberry Pi: internal port is found.
- serial_for_url: fix import (multiple packages in list)
- threaded: added new module implementing a reader thread
- tweak examples/wx*
- posix: add experimental implementation ``VTIMESerial``
- new URL handler ``alt://`` to select alternative implementations


Version 3.0   2015-12-28
------------------------
- minor fixes to setup.py (file list), inter_byte_timeout (not stored when
  passed to __init__), rfc2217 (behavior of close when open failed),
  list_ports (__str__), loop://, renamed ReaderThread
- hwgrep:// added options to pick n'th port, skip busy ports
- miniterm: --ask option added

Bugfixes (posix):

- [#26/#30] always call tcsettattr on open
- [#42] fix disregard read timeout if there is more data
- [#45] check for write timeout, even if EAGAIN was raised

Bugfixes (win32):

- [#27] fix race condition in ``read()``, fix minimal timeout issue
- race condition in nonblocking case
- [#49] change exception type in case SetCommState fails
- [#50] fixed issue with 0 timeout on windows 10


Version 3.0.1   2016-01-11
--------------------------
- special case for FDTIBUS in list_ports on win32 (#61)

Bugfixes:

- ``Serial`` keyword arguments, more on backward compatibility, fix #55
- list_ports: return name if product is None, fix for #54
- port_publisher: restore some sorting of ports


Version 3.1.0   2016-05-27
--------------------------
Improvements:

- improve error handling in ``alt://`` handler
- ``socket://`` internally used select, improves timeout behavior
- initial state of RTS/DTR: ignore error when setting on open posix
  (support connecting to pty's)
- code style updates
- posix: remove "number_to_device" which is not called anymore
- add cancel_read and cancel_write to win32 and posix implementations

Bugfixes:

- [#68] aio: catch errors and close connection
- [#87] hexlify: update codec for Python 2
- [#100] setPort not implemented
- [#101] bug in serial.threaded.Packetizer with easy fix
- [#104] rfc2217 and socket: set timeout in create_connection
- [#107] miniterm.py fails to exit on failed serial port

Bugfixes (posix):

- [#59] fixes for RTS/DTR handling on open
- [#77] list_ports_osx: add missing import
- [#85] serialposix.py _set_rs485_mode() tries to read non-existing
  rs485_settings.delay_rts_before_send
- [#96] patch: native RS485 is never enabled

Bugfixes (win32):

- fix bad super call and duplicate old-style __init__ call
- [#80] list_ports: Compatibility issue between Windows/Linux


Version 3.1.1   2016-06-12
--------------------------
Improvements:

- deprecate ``nonblocking()`` method on posix, the port is already in this
  mode.
- style: use .format() in various places instead of "%" formatting

Bugfixes:

- [#122] fix bug in FramedPacket
- [#127] The Serial class in the .NET/Mono (IronPython) backend does not
  implement the _reconfigure_port method
- [#123, #128] Avoid Python 3 syntax in aio module

Bugfixes (posix):

- [#126] PATCH: Check delay_before_tx/rx for None in serialposix.py
- posix: retry if interrupted in Serial.read

Bugfixes (win32):

- win32: handle errors of GetOverlappedResult in read(), fixes #121


Version 3.2.0   2016-10-14
--------------------------
See 3.2.1, this one missed a merge request related to removing aio.


Version 3.2.1   2016-10-14
--------------------------
Improvements:

- remove ``serial.aio`` in favor of separate package, ``pyserial-asyncio``
- add client mode to example ``tcp_serial_redirect.py``
- use of monotonic clock for timeouts, when available (Python 3.3 and up)
- [#169] arbitrary baud rate support for BSD family
- improve tests, improve ``loop://``

Bugfixes:

- [#137] Exception while cancel in miniterm (python3)
- [#143] Class Serial in protocol_loop.py references variable before assigning
  to it
- [#149] Python 3 fix for threaded.FramedPacket

Bugfixes (posix):

- [#133] _update_dtr_state throws Inappropriate ioctl for virtual serial
  port created by socat on OS X
- [#157] Broken handling of CMSPAR in serialposix.py

Bugfixes (win32):

- [#144] Use Unicode API for list_ports
- [#145] list_ports_windows: support devices with only VID
- [#162] Write in non-blocking mode returns incorrect value on windows


Version 3.3   2017-03-08
------------------------
Improvements:

- [#206] Exclusive access on POSIX. ``exclusive`` flag added.
- [#172] list_ports_windows: list_ports with 'manufacturer' info property
- [#174] miniterm: change cancel impl. for console
- [#182] serialutil: add overall timeout for read_until
- socket: use non-blocking socket and new Timeout class
- socket: implement a functional a reset_input_buffer
- rfc2217: improve read timeout implementation
- win32: include error message from system in ClearCommError exception
- and a few minor changes, docs

Bugfixes:

- [#183] rfc2217: Fix broken calls to to_bytes on Python3.
- [#188] rfc2217: fix auto-open use case when port is given as parameter

Bugfixes (posix):

- [#178] in read, count length of converted data
- [#189] fix return value of write

Bugfixes (win32):

- [#194] spurious write fails with ERROR_SUCCESS


Version 3.4   2017-07-22
------------------------
Improvements:

- miniterm: suspend function (temporarily release port, :kbd:`Ctrl-T s`)
- [#240] context manager automatically opens port on ``__enter__``
- [#141] list_ports: add interface number to location string
- [#225] protocol_socket: Retry if ``BlockingIOError`` occurs in
  ``reset_input_buffer``.

Bugfixes:

- [#153] list_ports: option to include symlinked devices
- [#237] list_ports: workaround for special characters in port names

Bugfixes (posix):

- allow calling cancel functions w/o error if port is closed
- [#220] protocol_socket: sync error handling with posix version
- [#227] posix: ignore more blocking errors and EINTR, timeout only
  applies to blocking I/O
- [#228] fix: port_publisher typo


Version 3.5b0 2020-09-21
------------------------
New Features:

- [#411] Add a backend for Silicon Labs CP2110/4 HID-to-UART bridge.
  (depends on `hid` module)

Improvements:

- [#315] Use absolute import everywhere
- [#351] win32: miniterm Working CMD.exe terminal using Windows 10 ANSI support
- [#354] Make ListPortInfo hashable
- [#372] threaded: "write" returns byte count
- [#400] Add bytesize and stopbits argument parser to tcp_serial_redirect
- [#408] loop: add out_waiting
- [#495] list_ports_linux: Correct "interface" property on Linux hosts
- [#500] Remove Python 3.2 and 3.3 from test
- [#261, #285, #296, #320, #333, #342, #356, #358, #389, #397, #510] doc updates
- miniterm: add :kbd:`CTRL+T Q` as alternative to exit
- miniterm: suspend function key changed to :kbd:`CTRL-T Z`
- add command line tool entries ``pyserial-miniterm`` (replaces ``miniterm.py``)
  and ``pyserial-ports`` (runs ``serial.tools.list_ports``).
- ``python -m serial`` opens miniterm (use w/o args and it will print port
  list too) [experimental]

Bugfixes:

- [#371] Don't open port if self.port is not set while entering context manager
- [#437, #502] refactor: raise new instances for PortNotOpenError and SerialTimeoutException
- [#261, #263] list_ports: set default `name` attribute
- [#286] fix: compare only of the same type in list_ports_common.ListPortInfo
- rfc2217/close(): fix race-condition
- [#305] return b'' when connection closes on rfc2217 connection
- [#386] rfc2217/close(): fix race condition
- Fixed flush_input_buffer() for situations where the remote end has closed the socket.
- [#441] reset_input_buffer() can hang on sockets
- examples: port_publisher python 3 fixes
- [#324] miniterm: Fix miniterm constructor exit_character and menu_character
- [#326] miniterm: use exclusive access for native serial ports by default
- [#497] miniterm: fix double use of CTRL-T + s use z for suspend instead
- [#443, #444] examples: refactor wx example, use Bind to avoid deprecated
  warnings, IsChecked, unichr

Bugfixes (posix):

- [#265] posix: fix PosixPollSerial with timeout=None and add cancel support
- [#290] option for low latency mode on linux
- [#335] Add support to xr-usb-serial ports
- [#494] posix: Don't catch the SerialException we just raised
- [#519] posix: Fix custom baud rate to not temporarily set 38400 baud rates on linux
- [#509 #518] list_ports: use hardcoded path to library on osx

Bugfixes (win32):

- [#481] win32: extend RS485 error messages
- [#303] win32: do not check for links in serial.tools.list_ports
- [#430] Add WaitCommEvent function to win32
- [#314, #433] tools/list_ports_windows: Scan both 'Ports' and 'Modem' device classes
- [#414] Serial number support for composite USB devices
- Added recursive search for device USB serial number to support composite devices

Bugfixes (MacOS):

- [#364] MacOS: rework list_ports to support unicode product descriptors.
- [#367] Mac and bsd fix _update_break_state