SIP Changelog

What's new in SIP 4.19.2

Mar 31, 2017
  • Minor bug-fix release.

New in SIP 4.19.1 (Feb 16, 2017)

  • Added the %PreMethodCode directive.
  • Added sipEnableGC() to the C API.
  • Added the -D command line option so that the generated code is aware of Python debug builds.

New in SIP 4.19 (Jan 9, 2017)

  • added the assign() function to the sip module
  • added support for the final keyword
  • added the use_limited_api argument to the %Module directive
  • added the %HideNamespace directive.

New in SIP 4.18.1 (Jul 26, 2016)

  • Bug fixes.

New in SIP 4.18 (May 7, 2016)

  • This implements the automatic generation of PEP 484 type hint files. The sip extension module is available as a wheel from PyPi:
  • Added the /TypeHint/ argument, class, mapped type, function, typedef and variable annotations.
  • Added the /TypeHintIn/ and /TypeHintOut/ argument, class, mapped type and typedef annotations.
  • Added the /TypeHintValue/ argument, class and mapped type annotations.
  • Added the /NoTypeHint/ class, enum, function and variable annotations.
  • Added the %ExportedTypeHintCode and %TypeHintCode directives.
  • Added the -f command line option to treat warnings as errors.
  • Added the -y command line option to generated PEP 484 compatible type hint stub files.
  • Deprecated the /DocType/ and /DocValue/ annotations.

New in SIP 4.17 (Nov 21, 2015)

  • This version adds support for PEP 465, PEP 492 and MSVC 2015.

New in SIP 4.16.9 (Aug 18, 2015)

  • Bug fixes.

New in SIP 4.16.7 (Mar 26, 2015)

  • This is a minor functional and bug-fix release.

New in SIP 4.16.6 (Feb 28, 2015)

  • Added the /FileExtension/ class annotation.
  • Installing into a virtual env should now work.
  • Timestamps are no longer included in generated code. The -T command line option is now ignored and deprecated.
  • The @file method of passing additional command line options is now supported. The -z command line option is now deprecated.

New in SIP 4.16.5 (Dec 27, 2014)

  • This is a minor functional and bug-fix release.

New in SIP 4.16.2 (Jul 4, 2014)

  • This is a minor bug-fix release.

New in SIP 4.16.1 (Jun 9, 2014)

  • This is a minor bug-fix release for regressions introduced in v4.16.

New in SIP 4.15.4 (Jan 8, 2014)

  • This is a minor bug fix release required by PyQt v5.2.

New in SIP 4.15.3 (Oct 25, 2013)

  • This is a bug fix release for a regression that affects PyQtChart.

New in SIP 4.15.2 (Sep 16, 2013)

  • Minor functional release that will be needed by PyQt v5.1. It also contains bug fixes needed by PyKDE4.

New in SIP 4.15.1 (Sep 4, 2013)

  • This fixes a regression in v4.15 related to the handling of hidden virtual methods. The regression does not affect PyQt.

New in SIP 4.14.7 (Jun 17, 2013)

  • The internal API version is increased to 10.0 requiring the regeneration of all modules.
  • Added the /Sequence/ function annotation.
  • %ConvertFromTypeCode can now be specified for classes.
  • Added sipEnableAutoconversion() to the C API.
  • Added sipSetDestroyOnExit() to the C API.

New in SIP 4.14.6 (Apr 22, 2013)

  • This is a minor bug fix release.

New in SIP 4.14.5 (Mar 27, 2013)

  • This is a minor bug fix release, specifically for QGIS.

New in SIP 4.14.4 (Mar 4, 2013)

  • The handwritten code provided to the %VirtualErrorHandler directive is now called with the GIL held and from the thread that raised the error. This is, potentially, an incompatible change.
  • Bug fixes.

New in SIP 4.14.3 (Mar 4, 2013)

  • The /KeepReference/ argument annotation, when applied to factories, will now keep the reference with the object created by the factory.
  • Any object that supports the buffer protocol can now be passed when a sip.voidptr is expected.
  • Bug fixes.

New in SIP 4.14.2 (Mar 4, 2013)

  • Added sip.setdestroyonexit().
  • sip.voidptr() will now accept any object that implements the buffer protocol.
  • Bug fixes.

New in SIP 4.14.1 (Oct 29, 2012)

  • SIP_PYBUFFER can now be used to define objects that implement the Python buffer protocol.
  • Added the /Capsule/ typedef annotation.
  • Added the 'z' format character to sipBuildResult().
  • Added the 'z', '!' and '$' format characters to sipParseResult().
  • The C prototype foo(void) is now accepted.
  • sipdistutils.py will now include swig_opts if no sip_opts have been defined.

New in SIP 4.13.3 (Jun 22, 2012)

  • The /NoRaisesPyException/ and /RaisesPyException/ function annotations can now be applied to constructors.
  • Added support for the Python v3.3 handling of Unicode.

New in SIP 4.13.3 Dev (Apr 19, 2012)

  • Fixed the support for keeping an extra reference to a containing class when referring to a member variable.

New in SIP 4.12.1 (Jan 25, 2011)

  • Added support for the __getattribute__, __getattr__, __setattr__ and __delattr__ methods.
  • Added the /RaisesPyException/ function annotation.
  • Added SIP_SSIZE_T as a predefined type.
  • PyObject * can now be used as a synonym for SIP_PYOBJECT.
  • Added sip.ispycreated() to the sip module.
  • Added the --deployment-target flag to configure.py for MacOS/X.

New in SIP 4.11.2 (Oct 23, 2010)

  • /KeepReference/ can now be applied to global functions and static methods.
  • %TypeCode can now be specified in a %MappedType directive.
  • Mapped types for templates no longer require the template arguments to be fully defined.
  • Build system changes required by PyQt v4.8 and Qt v4.7.

New in SIP 4.10 Dev (Dec 17, 2009)

  • Fixed a NULL dereference when instantiating an unscoped class template.

New in SIP 4.9.2 (Nov 13, 2009)

  • Added a missing "sip" prefix to an argument that could be mixed with handwritten code.

New in SIP 4.7.9 (Dec 22, 2008)

  • This is a bug fix release needed to build PyKDE v3.16.2

New in SIP 4.7.8 (Nov 10, 2008)

  • Fixed a minor code generating bug that caused too many blank lines to be generated with consolidated modules.
  • Fixed a bug in the detection of reimplemented methods when the method is a Python special method (ie. when the attribute is a method wrapper).
  • Updated the NEWS file.
  • Changed the PyQt example in the docs to use PyQt4.
  • Fixes for Qt classes that doesn't have a public QMetaObject.
  • Fixed a silly typo in the updated converting of constrained enums.
  • Fixed problems with the type name handling when the type is a pointer.
  • A simple int object can now be passed whenever an enum is expected. The /Constrained/ annotation can be used to suppress this behaviour. (This has been done in anticipation of QVariant being removed from PyQt. When an enum is wrapped in a QVariant it can only be retrieved as an int, so this will avoid the need for unexpected casting by an application.)
  • The build system now adds #!/bin/sh for scripts on UNIX.
  • Made sure that the types used by virtual handlers don't use type names as they are shared.
  • Typedef type names are now used where possible in generated code instead of the type definitions. This means that the string representation of types (eg. in mapped type names) now reflect what the programmer sees, not what the compiler sees.
  • Typedefs are no looked up and expanded as soon as possible which helps to disambiguate template signatures.
  • Added the /NoTypeName/ typedef annotation.
  • Fixed the calls to PyErr_WarnEx() for Python v2.4 and earlier.
  • Consolidated the internal API for raising deprecation warnings.
  • Added a deprecation warning for sip.transfer().
  • Added the /Deprecated/ class and function annotation (based on a patch from Lorenzo Berni).
  • The C/C++ names of enums and types are now always defined in the relevant structures rather than defaulting to the Python names.
  • Added sipWrappedTypeName() to the private Qt support API.
  • The wrapping of instance variables now uses sipConvertFromNew() if possible.
  • Fixed the handling of instance variables so that a copy is taken by the getter, rather than wrapping the variable itself.
  • Removed the special handing of some Qt classes related to metatype registration.
  • Changed the handling of the registration of Qt meta-types to for PyQt's improved QVariant support.
  • Added support for variables in templates.
  • Simplified the handling of a wrapper slots (maybe the original code was a hangover from SIP v3).
  • Enum slots should now work.
  • Reverted the removal of the support in the build systen for QMAKE_LFLAGS_CONSOLE* and QMAKE_LFLAGS_WINDOWS* as they are required when building PyQt3 with MinGW.
  • Added support for class templates containing enums.
  • Allow (non-pointer and non-reference) base types as template arguments.
  • Fixed a bug in the handling of signal arguments that were typedefs of a template.