PySide2

From Qt Wiki
Revision as of 13:31, 17 November 2016 by AlexBlasche (talk | contribs) (17th nov Update)
Jump to navigation Jump to search

Pyside for Qt 5.x

The Pyside 2 project aims to provide a complete port of PySide to Qt 5.x. The development started on GitHub in May 2015. The project managed to port Pyside to Qt 5.3, 5.4 & 5.5. During April 2016 The Qt Company decided to properly support the port (see details ).

This wiki page tracks the progress of PySide for Qt 5.x development and provides further information concerning the effort.

Tools

The following tools are used to develop PySide:

Getting started

Getting started with PySide2

Backlog

The list below represents some short term targets and long term ideas for Pyside2 development. There is no guarantee that this will happen as written down. It is meant as a short reminder and idea collection for future development. In the long term this list is likely to move to https://bugreports.qt.io/browse/PYSIDE.

  1. First time with Pyside (Document how to get started on this wiki)
  2. Testing Infrastructure
    1. What has been done so far?
    2. Qt CI support (PYSIDE-431)
      1. make test
      2. cmake based build system (all repos)
      3. pip installable Pyside
        1. CI has to setup virtual Python environment
        2. Use pip to install/build Pyside
  3. Future changes to PySide
    1. Gaps (modules & API)
      1. Identify the extent of the gaps by porting existing examples from Qt4 to Qt5 (done)
      2. Plugin system (in what form or shape do we need it is uncertain - some failing tests exist already)
      3. Prepare a summary of gaps for other modules
    2. Fundamental Architecture changes
      1. Shiboken
        1. Clang support (PYSIDE-323)
      2. QtQML support (PYSIDE-355)
    3. MyPy (type annotation - fully typed Python API)
    4. General Python features and their adoption in PySide (e.g. Async I/O)
    5. Creator and tooling
      1. Fix QtC debugger to understand Python/C++ mixed internals

Pyside Development Progress Notes

The most current view of the progress can be found in Jira:

  1. Unresolved issues
  2. All issues (including resolved)

The second link is useful to monitor the progress of the backlog. The best way to achieve this is to sort the list by the "Updated" column. Larger backlog/feature items are filed as "User Stories" in Jira.

17 November 2016

- Pyside team suffering from sickness -> not much progress this week
- Pyside-79 fix had a lot of negative side effects (breaking existing tests)
  - internal object reference counting is the predominant issue at hand
  - continue to work on the bug (no resolution yet as delayed due to sickness)
- COIN some progress but still open discussions on branching policy required

11 November 2016

- PYSIDE-79 being fixed
- PYSIDE-315 to be addressed
- Shiboken and Clang
  - familiarizing with clang and its parser's inner working
  - added experimental qmake project definition for shiboken (makes work in Qt Creator easier)
- Qt QML on Pyside work progressing
- work on COIN did not progress due to conflicting priorities inside COIN development

3 November 2016

- working through the QML stack esnuring all required API's are exported (https://codereview.qt-project.org/#/c/175682/)
- small build system patches
- PYSIDE-79 work progressing
- OpenGL support fixed (PYSIDE-314)
- COIN issues
   - repo interdepencies not working yet, suggestion under discussion and to be implemented
   - most license checks have been fixed
   - Qt 5.6 based Pyside to skip check
   - after branching for C++11 work the dev branch should work from license check perspective
   - eventually the entire CI needs to run through (more hidden problems could be hidden)
- Started working on C++11 compliant parser for shiboken
   - libclang will be used
   - first target is to replace the AST tree implementation
   - requires clang setup in the CI

27 October 2016

- Work on WebKit/WebEngine support
- Further work on COIN support
- Planning meeting
- Workshop for C++11 support in Pyside (PYSIDE-323)

20 October 2016

- Qt Quick support submitted
- QtOpenGL support submitted
- Further work on COIN support, license headers

13 October 2016

- Qt CI update
  - Coin changes have merged but integration not yet working
  - Qt CI enables on Pyside side merged 
  => COIN integration fails with license issues
  => requires review of license conditions for all files, some files are not even relicensable
  => skipping license check for now, most likely to be done later again but requires changes to license check script
  - more issues of interworking between QtCI and Pyside expected (won't be visible until license problems resolved)
  Open issue: does a change in Pyside repo trigger a rebuild of everything?
- Qt QML support progressing and first patches merged
  - serious bugs have been fixed, more complex QML examples are now working

29 September 2016

- Coin integration close but not merged
- Bugfixing in particular on the shiboken parser side
- QML/Python binding and tests fixed -> general check all day-to-day aspects of QML are working
- QML examples porting 
   -> still some failing tests
   -> Check all QML/Quick class are exported

22 September 2016

- Refactored Shiboken, udnerstanding build sequences
- black list for unit tests defined and tested
- fixing of tests
- QML example fixing continued (QML bindings not working)
- Pyside side for COIN done (pending integration checks)
- COIN integration still wip due to long test and retest cycles
- pyside and shiboken repo to be relicensed similar to other Qt products
=> this should address any issues regarding the status of generated code too

16 September 2016

- Pyside side for CI testing ready for testing
- status of COIN side to be determined. Code exists need help from CI team to confirm status.
- build system infrastructure improvements in pyside setup
- Qt logging now working
- and more
- Update on bug handling
  - PYSIDE-88 continuing
  - PYSIDE-349 (Multimedia ported)
  - PYSIDE-344 fix pending on codereview
  - make debug builds of Pyside work (OSX works, Linux has work in progress patch, Windows side awaiting contribution)
- QML support work in progress
  - examples are slowly ported with aim to identify bugs

25 August 2016

- Properly implementing QML experience in Pyside
- Unit test fixing
- automated CI testing for Pyside
  - working locally but still failures occurring on various other test machines

4 August 2016

- Additional Pyside examples under review
- Fixed warnings coming from Shiboken

21 July 2016

- main Pyside 2 example port done
- additional examples to fill gaps are being ported (as per prio list)
- CI patches running, but still gaps (should be done by next week)
- about 86% of auto test working (failing count of test 80+ auto test)
- Project Test Status

14 July 2016

- Pyside 2 examples ported
- OpenGL & SVG not working
- QtQuick 2 is in strange situation (QtQml depends on QtQuick)
- Python 3 realed Unicode handling not working with Qt
- QMessageBox hangs
- no documentation for any example
- lots of warnings when building wrapper
- results: https://paste.kde.org/pgje2toyh/mlbqic
- COIN setup for pyside https://codereview.qt-project.org/#/c/158336/
- Qt 5.7 still blocked due to missing C++11 support in shiboken
   - food for ideas: https://steveire.wordpress.com/


7 July 2016

- automated CI testing
- patches for Pyside and Qt CI side required
- Testing somewhat more complicated due to closed nature of Qt CI 
- script to port examples to Qt 5 -> https://bugreports.qt.io/issues/?jql=labels%20%3D%20exampleport5
- all examples to remain BSD licensed