Default-Style, but Smooth, Detailed, & Pretty. Manage, install and update your addons/mods free with the Twitch Desktop App for windows & macOS! Spark Release 1.6.1. Spark 1.6.1 is a maintenance release containing stability fixes. This release is based on the branch-1.6 maintenance branch of Spark. We strongly recommend all 1.6.x users to upgrade to this stable release. You can consult JIRA for the detailed changes.
Python VISA bindings for GPIB, RS232, TCPIP and USB instruments
A Python package for support of the “Virtual Instrument SoftwareArchitecture” (VISA), in order to control measurement devices andtest equipment via GPIB, RS232, Ethernet or USB.
The programming of measurement instruments can be real pain. There are manydifferent protocols, sent over many different interfaces and bus systems(GPIB, RS232, USB). For every programming language you want to use, you have tofind libraries that support both your device and its bus system.
In order to ease this unfortunate situation, the Virtual Instrument SoftwareArchitecture (VISA) specification was defined in the middle of the 90’. TodayVISA is implemented on all significant operating systems. A couple of vendorsoffer VISA libraries, partly with free download. These libraries work togetherwith arbitrary peripheral devices, although they may be limited to certaininterface devices, such as the vendor’s GPIB card.
The VISA specification has explicit bindings to Visual Basic, C, and G(LabVIEW’s graphical language). Python can be used to call functions from aVISA shared library (.dll, .so, .dylib) allowing to directly leverage thestandard implementations. In addition, Python can be used to directly accessmost bus systems used by instruments which is why one can envision to implementthe VISA standard directly in Python (see the PyVISA-Py project for moredetails). PyVISA is both a Python wrapper for VISA shared libraries butcan also serve as a front-end for other VISA implementation such asPyVISA-Py.
VISA and Python
Python has a couple of features that make it very interesting for measurementcontrolling:
- Python is an easy-to-learn scripting language with short development cycles.
- It represents a high abstraction level , which perfectly blends with theabstraction level of measurement programs.
- It has a very rich set of native libraries, including numerical and plottingmodules for data analysis and visualisation.
- A large set of books (in many languages) and on-line publications isavailable.
- Python (tested with 2.7 and 3.4+)
- VISA (tested with NI-VISA 17.5, Win7, from www.ni.com/visa)
Python 2 support
Python 2 EOL is now near (January 1st 2020), and given the limited timemaintainers have, the next release of PyVISA (1.10) to be released around July2019 will be the last version of PyVISA supporting Python 2.
$ pip install pyvisa
$ easy_install pyvisa
or download and unzip the source distribution file and:
$ python setup.py install
The documentation can be read online at https://pyvisa.readthedocs.org
PyVISA was originally programmed by Torsten Bronger and Gregor Thalhammer, Innsbruck, Austria. It is based on earlier experiences by Thalhammer.
It was maintained from March 2012 to August 2013 by Florian Bauer.It is currently maintained by Hernan E. Grecco <email@example.com>.
Other contributors, listed alphabetically, are:
- bauflo3 <bauflo3@516c0664-e049-0410-bc6e-8f9a6051a51d>
- bkstein <Bernd.Krietenstein@rohde-schwarz.com>
- Christian Lupien <firstname.lastname@example.org>
- Colin Marquardt <email@example.com>
- crazyfermions <firstname.lastname@example.org>
- gnbl <email@example.com>
- Gregor Thalhammer <firstname.lastname@example.org>
- Neil J. Jansen <email@example.com>
- Laurent P. René de Cotret <firstname.lastname@example.org>
- Martin Ritter <email@example.com>
- Matthew94 <firstname.lastname@example.org>
- Matthieu Dartiailh <email@example.com>
- mordoror <firstname.lastname@example.org>
- Tobias Müller <Tobias_Mueller@twam.info>
- Yves Delley <email@example.com>
If you think your name should be here, please let me know.
- Fix reading binary values with an empty header PR #454
- Allow to use different headers in write_binary_values PR #454
- Remove delay kwarg from read_ascii_values which should never have been there PR #454
- Clarify the documentation about open_timeout PR #451
- Change the returned data_length for IEEE block of undefined size to 0 PR #435
- Add chunk_size and data_length keyword argument to read/query_binary_values PR #435
- Make the ordering of the visa library deterministic PR #399
- Properly close pipes when looking for a shared library path on linux #380
- Fixing missing argument for USBInstrument.usb_control_out PR #353
- avoid attempting to close already closed resources in del PR #424
- add a list_opened_resources method to the ResourceManager PR #415
- use privately stored resource name in Resource class rather than relying onVisaLibrary PR #415
- keep track of resources created by the ResourceManager to properly close them PR #357
- replace time.clock by time.perf_counter under Python 3 PR #441
- make the ordering of the visa library deterministic PR #399
- properly close pipes when looking for a shared library path on linux #380
- fixing missing argument for USBInstrument.usb_control_out PR #353
- usb_control_out -> control_out. warnings for deprecated usb_control_out PR #353
- Added new function log_to_stream() PR #363
- Made all enumerations of the constants module unique.Fixed duplicate enums in StatusCode PR #371
- Use ni backend when specifying a file in open_visa_library PR #373
- Add flush() method to all resource classes that support viFlush()(with the exception of VXIInstrument class) PR #390
- Add expect_termination argument to read_binary_values andquery_binary_values. This allows to retain the behavior of these methods frompyvisa 1.8, where the length of the block of values that is being read didnot include the very final read termination. For instruments omitting thetermination character when transferring binary data, visa library raises atimeout exception in case pyvisa 1.9.0 is used. Note that the behavior is notreverted completely to its pyvisa 1.8 state because for other instruments(for example, Keysight PNA on Ethernet) the termination character is indeedadded at the end of the message, and is not counted in the declared length inthe header. Prior to 1.9, if the last character of the binary block is alsothe termination character, the actual termination could be missed, whichleads to hard to debug bugs hence the choice to preserve 1.9 behavior bydefault. PR #349
- fix an encoding handling issue in setup.py PR #343
- if installed use pyvisa-py backend if a binary VISA implementation is notinstalled. PR #341
- make custom exception hashable by removing __eq__. This should not impactuser code. PR #340
- fix an issue with the default value for GPIB secondary address in rname.pyPR #336
- ensure docstrings exist before manipulating them (attributes.py) PR #318
- documentation improvements PR #320 #323
- Drop support for Python 2.6, 3.2 and 3.3 PR #300
- add the missing read_binary_values and read_ascii_values (PR #301)
- deprecate old methods in MessageBased (ask, read_values, query_values,write_values, ask_delay) (PR #301)
- add support for hp headers in binary data (PR #301)
- fix encoding issue in write_ascii_values (PR #301)
- use import to load backend rather than pkgutil.iter_modules. This allowsPyVISA to support PyInstaller PR #307
- improvements to the visa shell: attributes type conversion (PR #299),termchar command (PR #285), timeout command (PR #284),support for non-default backend (PR #283), console script pyvisa-shell(PR #286)
- improve speed for large data transfer by using bytearray instead of bytes(PR #282)
- make Resource a context manager closing it. (PR #255)
- add 64 bits version of registry based functions (PR #278)
- make exceptions pickable (PR #249)
- add resource_name to the output of parse_resource_extended (PR #238)
- fix wait_on_event behavior in case of timeout (PR #234)
- allow selecting the backend using the PYVISA_LIBRARY env var (PR #195)
- Fixed error reporting with Unicode filenames.(Issue #136)
- Improved documentation.
- Clarify timeout getter and setter.(Issue #167)
- In open_resource, return a Resource object and warns if resource class not registered.
- Register resource class for empty resource class.
- Allow registering parent resource classes.
- Changed types in wrapper to be platform independent (viStatus is always 32 bit).(Issue #134)
- Fix a not a invalid EventType bug.(Thanks lupien)
- Added optional resource_pyclass to open_resource.
- Fixed bug in serial flush.(Thanks bkstein)
- Implemented resource name parsing in pure python.
- Removed find_next and find_resources from VisaLibraryBase.(Issue also #135, thanks)
- Implemented parse_resource and parse_resource_extended.
- Created rname module to parse Resource Names.
- Properly cleanup visa handlers upon resource close.(thanks lupien)
- Improved gpib classes(thanks lupien)
- Fixed bug in binary data writing.(Issue #140, thanks burnpack)
- Fix reseting of line termination for serial.(Issue #147, thanks lupien)
- Added property to resource name returning the InterfaceType value.
- Added backend information to logging.
- Added the flow_control attribute to ASRL resources.(Issue #144, thanks lupien)
- Remove empty entry in resources caused by attribute registration.(Issue #144, thanks lupien)
- Make container=numpy.array work consistently.(Issue #142, thanks Martin Ritter)
- Create compact/struct.py for python2/3 compatibility.(thanks Martin Ritter)
- Improve install and uninstall handlers(Issue #138, #139, #151 thanks lupien)
- Prevents cygwin segfaults.(Issue #131)
- Better error reporting when a resource cannot be found.(Issue #129)
- Suppress VI_SUCCESS_MAX_CNT warning on read raw.(Issue #116)
- Implemented smarter query values based on looking how many bytes are expected.(Issue #118)
- Fix UnicodeDecodeError on wrong file for library load(Issue #136, thanks lupien)
- Added support to Rhode and Schwartz Passport driver.(Issue #115)
- Fixed access to the interface_type property.(Issue #114, thanks mordoror)
- Imported constants module in visa module.(Issue #72)
- Proper handling of VI_ERROR_RSRC_NFOUND.
- Added conditional dependency for unittest2 in Python2.6(Issue #107)
- Fixed Shell on Windows.(Issue #101)
- Moved Lantz Shell to PyVISA.
- Easier way to get debug information.
- Better debug info for backends.
- Add ignore_warning methods to Resource and ResourceManager.
- Added more formats to binary values.(Issue #92)
- Fixed exception raising in legacy read_values.(Issue #91)
- Provide a backend hook to display debug info.
- Better debug info for binary libraries.
- Fixed exceptions formatting(thanks Matthew94)
- 13 Resource Classes covering all resource types.
- Attributes classes provided introspection to VISA attributes.
- Many VISA attributes added to Resource Classes.
- Use of IntEnum for common constants.
- Better documentation.
- Implementation of discoverable backends.
- New functions to encode and decode of IEEE blocks.
- New functions to encode and decode of ASCII blocks.
- New API to transfer values from the instrument.
- Renamed ask/ask_delay/ask_for_values to ask/query_delay/query_values.Old names still available for backwards compatibility.
- Implemented Group Execute Trigger for GPIBInterface.(Issue #67)
- Make setuptools a requirement.(Issue #64 and 68)
- Simplified testing.
- Removed legacy subpackage.
- Removed string handling wrappers.
- Removed Instrument class in favour of Resource.
- Removed status and implemented thread-safe, per instrument, last_status.
- Refactored warning ignoring mechanisms to a thread-safe one.
- Added enum34 requirement for Python < 3.4.
- Removed deprecated term_chars.
- Python 3.2+ compatibility.(Issue #32)
- Change source encoding to utf-8.
- Reorganized package structure.(Issue #13)
- Improved installation.
- Moved tests inside the package.
- Added CI using Travis.
- Created new wrapper for the underlying library.
- Moved vpp43 code to legacy subpackage.
- Moved documentation to readthedocs.
- Make documentation mobile-friendly.(Issue #2)
- Removed latex documentation.
- ResourceManager is no longer a singleton.(Issue #8)
- VisaLibrary is no longer a singleton.(Issue #7)
- VISA functions are VisaLibrary methods.(Issue #11)
- Improved detection of VISA library path in all OS.
- Added diagnostics functions to help debugging.
- Added extensive logging to help debugging.(Issue #12)
- Improved error messages.
- Added encoding parameter to read and write.(Issue #38)
- Added termination parameter to read and write.(Issue #38)
- Added size to read_raw.(Issue #37)
- Removed delay parameter in favor of ask_delay(Issue #34)
- Added 64 bits VISA library methods.
- Cleaned up code.
- Changed licence to MIT.
- Made determination of resource class even more careful.
- Changed some __getattr__ to getattr in order to have working exceptions again(e.g. timeouts) in vpp43
- Softened the test for “INSTR” even further. Introduced the “stb” property forGPIB instruments.
- Changed “is not an INSTR” error to a warning.
- Added correct prefix for RPM in setup.cfg.
- Mentioned possible AttributeError with viParseRsrcEx.
- Made secure against missing viParseRsrcEx.
- Removed superfluous calls to parse_resource_extended.
- setup.py Script can now handle installation with or without setuptools.
- setup.py: Switched to new distutils version.
- New properties of SerialInstrument explained.
- Added many further properties to SerialInstrument.
- Renamed timeout parameter in open() to open_timeout.
- Renamed Timeout parameter in open() to open_timeout.
- Added section about SerialInstrument.
- Added class SerialInstrument. Made termination characters even more robust.
- Renamed TypeError to VisaTypeError.
- Added InvalidBinaryFormat. Renamed TypeError to VisaTypeError.
- Added a lot of docstrings. Fixed bug with ValueError exception raising.
- Eliminated string exceptions. A little bit of code clean-up.
- Added old distutils inclusion for RPM that cause trouble with my setuptoolsinstallation.
- Set default for term_chars to None and implemented it in write() method.
- Described new default for term_chars.
- Added instrument(). Fixed bugs in __repr()__.
- Improved documentation.
- Switched from distutils to setuptools.
- Changed package name to “PyVISA”.
- visa_attributes.py: 0xFFFFFFFF -> 0xFFFFFFFFL.
- Switched from distutils to setuptools.
- Added filename selection for VISA DLL with Windows in vpp43.py.
- Added code to skip over header before binary data.
- Cleaned up whitespace.
- Added support for endianess in case of binary transfers.
- Improved binary reading; now it also accepts things like “#267…”.
- Changed default termination characters to “” for GPIB instruments. LF and CRare completely stripped from the end of read string, no matter how thetermination characters are set.
- Added remaining keyword arguments for Instrument constructor. Added CR and LF.Added working support for reading binary data.
- Added ask() and ask_for_values().
- Partially implemented binary reading.
- Split the old term_chars in term_chars, delay, and send_end.
- Implemented warning system for invalid keyword arguments. Added test for validfloat values in read_floats(). Added full term_char string in __get_term_char().
- Standard timeout increased from 2 to 5 seconds.
- read_floats() returns always a list.
- Moved trigger() method to Instrument class.
- Fixed bug in regular expression for termination characters.
- Fixed bug with ignored term_char attribute for GPIB instruments.
- Increased chunk_size’s default value and added it to the keyword arguments of the constructor.
- Added properties resource_name and resource_class to ResourceTemplate. Usedboth to simplify code.
- First usable release. See ChangeLog for more information.
Release historyRelease notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size PyVISA-1.10.1.tar.gz (6.8 MB)||File type Source||Python version None||Upload date||Hashes|
Hashes for PyVISA-1.10.1.tar.gz
Note: See thedownload pagesfor more recent releases.
Python 1.6 was the last of the versionsdeveloped at CNRI and the only version issued by CNRI with an opensource license. Following the release of Python 1.6, and after Guidovan Rossum left CNRI to work with commercial software developers, itbecame clear that the ability to use Python with software availableunder the GNU General Public License (GPL) was verydesirable. CNRI and the Free Software Foundation (FSF) interacted to develop enablingwording changes to the Python license. Python 1.6.1 is essentiallythe same as Python 1.6, with a few minor bug fixes, and with aGPL-compatible license.
Note: according to CNRI, Python 1.6.1 is GPL-compatible, butthe FSF's lawyer, has said that Python 1.6.1 is not compatible with the GPL. CNRI disagrees, and states the FSF's lawyer has told CNRI's lawyer that 1.6.1 is 'not incompatible' with the GPL.
Python 1.6.1 is available for download now. It is released underthe CNRI Open Source GPL-Compatible License.
Notes for Windows users: Some browsers remove the '.exe'suffix of the downloaded installer file. If this happens to you,simply rename the downloaded file to 'python16.exe' before youdouble-click it to run the installer. Also, if you have everinstalled an older Python version (especially distributions fromPythonWare), you may have to remove references to it from yourautoexec.bat. Incompatibility warning: Norton Antivirus 2000can cause blue screen crashes on Windows 98 when a function in theos.popen*() family is invoked. To prevent this problem, disableNorton Antivirus when using Python. (Confirmed on Windows 98 SecondEdition with Norton Antivirus version 6.10.20. The same NortonAntivirus version doesn't have this problem on Windows 2000. NortonAntivirus version 5 on Windows 98SE doesn't have this problem either.)
To report a bug, always use the SourceForge Bug Tracker. Ifyou have a patch, please use the SourceForge Patch Manager.Be sure to indicate that this is a bug report or patch for Python1.6.1!
- A new license (see above).
- A core dump in the C API function PyList_Reverse() has been fixed.
- The 1.6 release accidentally contained a number of .pyc files; these have been removed.
Here is a list of all relevant changes since release 1.5.2.
Several small incompatible library changes may trip you up:
- The append() method for lists can no longer be invoked with more than one argument. This used to append a single tuple made out of all arguments, but was undocumented. To append a tuple, use e.g. l.append((a, b, c)).
- The connect(), connect_ex() and bind() methods for sockets require exactly one argument. Previously, you could call s.connect(host, port), but this was undocumented. You must now write s.connect((host, port)).
- The str() and repr() functions are now different more often. For long integers, str() no longer appends a 'L'. Thus, str(1L) '1', which used to be '1L'; repr(1L) is unchanged and still returns '1L'. For floats, repr() now gives 17 digits of precision, to ensure no precision is lost (on all current hardware).
- The -X option is gone. Built-in exceptions are now always classes. Many more library modules also have been converted to class-based exceptions.
Third party extensions built for Python 1.5.x cannot be used withPython 1.6; these extensions will have to be rebuilt for Python 1.6.
On Windows, attempting to import a third party extension built forPython 1.5.x results in an immediate crash; there's not much we can doabout this. Check your PYTHONPATH environment variable!
For this overview, I have borrowed from the document 'What's New inPython 2.0' by Andrew Kuchling and Moshe Zadka:http://starship.python.net/crew/amk/python/writing/new-python/.
There are lots of new modules and lots of bugs have been fixed. Alist of all new modules is included below.
Probably the most pervasive change is the addition of Unicode support.We've added a new fundamental datatype, the Unicode string, a newbuild-in function unicode(), an numerous C APIs to deal with Unicodeand encodings. See the file Misc/unicode.txt for details, orhttp://starship.python.net/crew/lemburg/unicode-proposal.txt.
Two other big changes, related to the Unicode support, are theaddition of string methods and a new regular expression engine:
- String methods mean that you can now say s.lower() etc. instead of importing the string module and saying string.lower(s) etc. One peculiarity is that the equivalent of string.join(sequence, delimiter) is delimiter.join(sequence). Use ' '.join(sequence) for the effect of string.join(sequence); to make this more readable, try space=' ' first. Note that the maxsplit argument defaults in split() and replace() have changed from 0 to -1.
- The new regular expression engine, SRE by Fredrik Lundh, is fully backwards compatible with the old engine, and is in fact invoked using the same interface (the 're' module). You can explicitly invoke the old engine by import pre, or the SRE engine by importing sre. SRE is faster than pre, and supports Unicode (which was the main reason to put effort in yet another new regular expression engine -- this is at least the fourth!).
Other changes that won't break code but are nice to know about:
Deleting objects is now safe even for deeply nested data structures.
Long/int unifications: long integers can be used in seek() calls, asslice indexes.
String formatting (s % args) has a new formatting option, '%r', whichacts like '%s' but inserts repr(arg) instead of str(arg). (Not yet inalpha 1.)
Greg Ward's 'distutils' package is included: this will makeinstalling, building and distributing third party packages muchsimpler.
There's now special syntax that you can use instead of the apply()function. f(*args, **kwds) is equivalent to apply(f, args, kwds).You can also use variations f(a1, a2, *args, **kwds) and you can leaveone or the other out: f(*args), f(**kwds).
The built-ins int() and long() take an optional second argument toindicate the conversion base -- of course only if the first argumentis a string. This makes string.atoi() and string.atol() obsolete.(string.atof() was already obsolete).
When a local variable is known to the compiler but undefined whenused, a new exception UnboundLocalError is raised. This is a classderived from NameError so code catching NameError should still work.The purpose is to provide better diagnostics in the following example:
This used to raise a NameError on the print statement, which confusedeven experienced Python programmers (especially if there are severalhundreds of lines of code between the reference and the assignment tox :-).
You can now override the 'in' operator by defining a __contains__method. Note that it has its arguments backwards: x in a causesa.__contains__(x) to be called. That's why the name isn't __in__.
The exception AttributeError will have a more friendly error message,e.g.: 'Spam' instance has no attribute 'eggs'. This maybreak code that expects the message to be exactly the attributename.
Vladimir Marangozov designed more rational C APIs for allocatingmemory. See mymalloc.h.
UserString - base class for deriving from the string type.
distutils - tools for distributing Python modules.
robotparser - parse a robots.txt file, for writing web spiders.(Moved from Tools/webchecker/.)
linuxaudiodev - audio for Linux.
mmap - treat a file as a memory buffer. (Windows and Unix.)
sre - regular expressions (fast, supports unicode). Currently, thiscode is very rough. Eventually, the re module will be reimplementedusing sre (without changes to the re API).
filecmp - supersedes the old cmp.py and dircmp.py modules.
DiskCatalogMaker Security NoteSoft-Go doesn't provide any form of technical support regarding DiskCatalogMaker, however, you may find answer to your problem by reading user reviews or directly contacting Fujiwara Software which's the publisher/developer of this software.Although we scan all the software within our database, for your protection, we strongly advise you to verify all downloaded files with your own antivirus/anti-spyware software.Soft-Go will not accept any responsability for the software products you are downloading.
tabnanny - check Python sources for tab-width dependance. (Moved fromTools/scripts/.)
urllib2 - new and improved but incompatible version of urllib (stillexperimental).
Liquibid video fisheye removal 1.0.11 download free. zipfile - read and write zip archives.
codecs - support for Unicode encoders/decoders.
unicodedata - provides access to the Unicode 3.0 database.
_winreg - Windows registry access.
encodings - package which provides a large set of standard codecs --currently only for the new Unicode support. It has a drop-in extensionmechanism which allows you to add new codecs by simply copying theminto the encodings package directory. Asian codec support willprobably be made available as separate distribution package built uponthis technique and the new distutils package.
readline, ConfigParser, cgi, calendar, posix, readline, xmllib, aifc,chunk, wave, random, shelve, nntplib - minor enhancements.
socket, httplib, urllib - optional OpenSSL support (Unix only).
_tkinter - support for 8.0 up to 8.3. Support for versions older than8.0 has been dropped.
string - most of this module is deprecated now that strings havemethods. This no longer uses the built-in strop module, but takesadvantage of the new string methods to provide transparent support forboth Unicode and ordinary strings.
The installer no longer runs a separate Tcl/Tk installer; instead, itinstalls the needed Tcl/Tk files directly in the Python directory. Ifyou already have a Tcl/Tk installation, this wastes some disk space(about 4 Megs) but avoids problems with conflicting Tcl/Tkinstallations, and makes it much easier for Python to ensure thatTcl/Tk can find all its files. Note: the alpha installers don'tinclude the documentation.
The Windows installer now installs by default in Python16on thedefault volume, instead of Program FilesPython-1.6.
IDLE - complete overhaul. See the IDLE home page for more information. (Python 1.6 alpha 1 will come withIDLE 0.6.)
Tools/i18n/pygettext.py - Python equivalent of xgettext(1). A messagetext extraction tool used for internationalizing applications writtenin Python.
stdwin and everything that uses it. (Get Python 1.5.2 if you needit. :-)
soundex. (Skip Montanaro has a version in Python but it won't beincluded in the Python release.)
cmp, cmpcache, dircmp. (Replaced by filecmp.)
dump. (Use pickle.)
find. (Easily coded using os.walk().)
grep. (Not very useful as a library module.)
packmail. (No longer has any use.)
poly, zmod. (These were poor examples at best.)
strop. (No longer needed by the string module.)
util. (This functionality was long ago built in elsewhere).
whatsound. (Use sndhdr.)
Slight changes to the CNRI license. A copyright notice has beenadded; the requirement to indicate the nature of modifications nowapplies when making a derivative work available 'to others' instead ofjust 'to the public'; the version and date are updated. The newlicense has a new handle.
Added the Tools/compiler package. This is a project led by JeremyHylton to write the Python bytecode generator in Python.
The function math.rint() is removed.
In Python.h, '#define _GNU_SOURCE 1' was added.
Version 0.9.1 of Greg Ward's distutils is included (instead ofversion 0.9).
A new version of SRE is included. It is more stable, and morecompatible with the old RE module. Non-matching ranges are indicatedby -1, not None. (The documentation said None, but the PREimplementation used -1; changing to None would break existing code.)
The winreg module has been renamed to _winreg. (There are plans fora higher-level API called winreg, but this has not yet materialized ina form that is acceptable to the experts.)
The _locale module is enabled by default.
Fixed the configuration line for the _curses module.
A few crashes have been fixed, notably <file>.writelines() with alist containing non-string objects would crash, and there weresituations where a lost SyntaxError could dump core.
The <list>.extend() method now accepts an arbitrary sequenceargument.
If __str__() or __repr__() returns a Unicode object, this isconverted to an 8-bit string.
Unicode string comparisons is no longer aware of UTF-16encoding peculiarities; it's a straight 16-bit compare.
The Windows installer now installs the LICENSE file and no longerregisters the Python DLL version in the registry (this is no longerneeded). It now uses Tcl/Tk 8.3.2.
A few portability problems have been fixed, in particular acompilation error involving socklen_t.
The PC configuration is slightly friendlier to non-Microsoftcompilers.