Known changes and backwards incompatibilities in 3.9.0
Deprecation LongIntProperty and removal of explicit long int
As a preparation to migrating to Python 3,
LongIntProperty
is deprecated. In Python 3, there will be no more difference between integer and long integer. Use aIntProperty
where possible (on Python 2, this is limited to 32 bits) or a genericDefinitionProperty
in the unlikely case that you need to store a long integer in Python 2.RESTRICT_LONG, ProcessorLongInt and processor_longint are removed. In the odd case that you used these, remove them from your code. If a regular Python 2 int is sufficient for your purposes, then replace with RESTRICT_INT, ProcessorInt and processor_int, respectively.
Deprecation of Python 2 division operator overloading (__div__
, __idiv__
and __rdiv__
)
In Python 3 __div__
, __idiv__
and __rdiv__
got removed in favor of __truediv__
, __itruediv__
and __rtruediv__
respectively.
As a result every __div__
, __idiv__
and __rdiv__
is now deprecated in order to prepare the migration to Python 3.
In Python 2 you can get the Python 3 division semantics by adding from __future__ import division
at the top of your script, which we recommend doing as much as possible in order to to ease the migration to Python 3.
Coord2
dividing by a scalar is deprecated when running in Python 2 withoutfrom __future__ import division
. Note that there will only be a change in behavior if the scalar is an integer andCoord2
contains an integer.Coord2
with integer coordinates might get deprecated in the future.AWG Designer:
SlabFieldProfile1D
andSlabFieldProfile2D
dividing by a scalar is deprecated when running in Python 2 withoutfrom __future__ import division
. Be aware that dividing by a scalar did not work correctly before this version, so differences in behavior will not be related to Python 3 division semantics.
IP Manager reference files
Regeneration of reference files (S-matrices, virtual fabrication snapshots, GDS files) led to slightly different files even when the underlying data did not change. Since the goal is to version control these files, it is important that changes don’t happen when the underlying data doesn’t change. To resolve this the following changes were made:
SVG reference files are removed from the virtual fabrication tests from
ip_manager.testing.VFab2DReferenceTest
: -> such files include data that is randomly generated (IDs of elements in an svg), which outputs slightly different files when regenerating the reference files.S matrices are exported to a touchstone instead of a binary format.
Fixed timestamp (1/1/1970, 0:00) is added to all newly generated GDS reference files instead of the time of the generation. Regenerating existing GDS files is optional, as the timestamp is not taken into account in LayoutToGds and GdsToGds tests.
The known good reference files will need to be (re)generated (see Generating the known-good reference files), while svg and smat files can be removed.
Picazzo containers netlist
The picazzo3 containers such as AutoTransitionPorts, FanoutPorts, IoFibcoup and RoutePortsAroundCorner now have a netlist with a deterministic order of terms across python2 and python3. As a result, XML netlist files for IP Manager may have a different order of nets and need to be checked and regenerated on IPKISS 3.9.
Removal of ObserverList and EventList
These classes were not fully implemented and have thus been removed in this release as part of a general code base cleanup.
Numpy 1.16
The Python 3 release of all Luceda software now uses numpy version 1.16. While numpy is mostly backward compatible, some behavior that was deprecated in 1.11 or between 1.11 and 1.16 was removed. Most often, this may reveal some programming errors which were still possible when using numpy 1.11, such as indexing an array with a non-integer index or with a too large index array. For details, see the detailed release notes of numpy.
Removed symbols from i3
The i3 namespace no longer includes certain symbols from internal libraries.
tkinter: Label, Tk, END, Y, RIGHT, VERTICAL, Scrollbar, Listbox, Checkbutton, IntVar, tkSimpleDialog