aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/PySide2/support/signature/loader.py
Commit message (Collapse)AuthorAgeFilesLines
* Split The Signature Module After The Project SplitChristian Tismer2018-11-241-89/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The PySide project has been split into three pieces, including Shiboken. This had far-reaching consequences for the signature project. Shiboken can be run together with PySide or alone, with tests or without. In every configuration, the signature module has to work correctly. During tests, the shiboken binary also hides the shiboken module, and we had to use extra efforts to always guarantee the accessibility of all signature modules. This commit is the preparation for typeerrors implemented with the signature module. It has been split off because the splitting is not directly related, besides these unawaited consequences. I re-added and corrected voidptr_test and simplified the calls. Remark.. We should rename shiboken to Shiboken in all imports. I also simplified initialization. After "from PySide2 import QtCore", now a simple access like "type.__signature__" triggers initialization. Further, I removed all traces of "signature_loader" and allowed loading everything from PySide2.support.signature, again. The loader is now needed internally, only. Also, moved the type patching into FinishSignatureInitialization to support modules with no classes at all. The "testbinding" problem was finally identified as a name clash when the same function is also a signal. A further investigation showed that there exists also a regular PySide method with that problem. The test was extended to all methods, and it maps now all these cases to "{name}.overload". Updated the included typing27.py from https://pypi.org/project/typing/ from version 3.6.2 to version 3.6.6 . Task-number: PYSIDE-749 Change-Id: Ie33b8c6b0df5640212f8991539088593a041a05c Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Implement Different Signature LayoutsChristian Tismer2018-10-111-27/+2
| | | | | | | | | | | | | | With the extended signature API, it is now possible to create different layouts, depending on the usecase. The "layout" module defines the layouts which we will need and also implements the variable signature generation. Task-number: PYSIDE-510 Task-number: PYSIDE-795 Change-Id: I5b9f88d9feb92cc4c8dc0e212860b6eb4fc16484 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Prepare the Signature Module For More ApplicationsChristian Tismer2018-10-111-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the preparation for a number of planned applications and extensions using the signature module. This general overhaul contains: - Extraction of signature enumerations into enum_sigs.py, - a list of current keyword errors in arguments which are unsolved in shiboken, but temporarily fixed in parser.py (too many for XML), - fix spurious duplications in multiple signatures - corrections for keyword errors in function names which cannot be fixed by Python (quite few), - fixing "..." arguments into "*args", - supporting the "slot wrapper" type. This is necessary for methods like "__add__", "__mul__" etc. - Create an extra function "get_signature" that has a parameter to modify the appearance, i.e. without self, without returntype, etc. Task-number: PYSIDE-510 Change-Id: If16f7bf02c6e7cbbdc970058bb630ea4db2b854a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix help display of backport_inspect (python 2.7)Christian Tismer2018-08-281-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Python 2.7 has no signatures in its inspect module. We therefore add the missing stuff for the signature package using 'backport_inspect.py'. The resulting module is a bit unusual because it is assembled from different modules at runtime. When trying the code >>> from PySide2.support.signature import inspect >>> help(inspect) in Python2, we got only very little information because of some heuristics in the pydoc module that checks the module identity and finds only objects from the new one. It turned out that this heuristics can be circumvented when the "__all__" property is provided. pydoc then believes everything. We now have complete help info if the above module is used. The original inspect module is not changed at all. Change-Id: I3f24ada3b9ae9c79ec69a6280ddf3ea78735467b Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Make signature module unconditionalChristian Tismer2018-08-271-4/+9
| | | | | | | | | | | | | After the signature module has been around for quite a while, there is no longer a reason to leave it optional. At the same time, we set the minimum Python 3 version to 3.5 . Some comments are reworked as well, but nothing real changed. Task-number: PYSIDE-510 Change-Id: I9e960f390d507d24bb45f7028838755fe23e751d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix Limited API and Signature Glitches in Python 3.7Christian Tismer2018-07-091-1/+1
| | | | | | | | | | | | | | | | | When the homebrew version of Python 3.7 appeared so unforeseen early, I felt inclined to fix these glitches, immediately: In Python 3.7, the typing module was more changed than expected. Since we don't support versions below 3.5, it was easy to fix by avoiding to copy typing.py for version 3.x, altogether. It stays there for Python 2.7 . Furthermore, the Python issue 33738 will later be solved than the code expected, so I fixed that one for all by a macro definition. Task-number: PYSIDE-741 Change-Id: Ia56ccd1ef20cb9536b1d39f190e011e5dccf1f22 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Change license from all the filesCristian Maureira-Fredes2018-05-031-1/+1
| | | | | | | | | | | | | | | | | Removing the word 'project' from all the headers, and changing the PySide reference from the examples to Qt for Python: The following line was used inside the source/ and build_scripts/ directory: for i in $(grep -r "the Qt for Python project" * |grep -v "pyside2-tools" | awk '{print $1}' | sed 's/:.*//g');do sed -i 's/the\ Qt\ for\ Python\ project/Qt\ for\ Python/g' $i;done and the following line was used inside the examples/ directory: for i in $(grep -r "of the PySide" * |grep -v "pyside2-tools" | awk '{print $1}' | sed 's/:.*//g');do sed -i 's/of\ the\ PySide/of\ the\ Qt\ for\ Python/g' $i;done Change-Id: Ic480714686ad62ac4d81c670f87f1c2033d4ffa1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Rename PySide references to Qt for PythonCristian Maureira-Fredes2018-04-271-1/+1
| | | | | | | | | When referring to the project one should use "Qt for Python" and for the module "PySide2" Change-Id: I36497df245c9f6dd60d6e160e2fc805e48cefcae Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Create a function existence registrymaya1Christian Tismer2017-11-191-1/+0
| | | | | | | | | | | | | | | | | | | | | With the signature module, it is now a straight forward task to generate a registry of all known function signatures. We check that these signatures all exist. One file contains all signatures for one platform and version. The test is only activated when run in the CI system. An initial call creates the expected file as output and raises an error. The result can then be picked up from the error log and added to the repository. Done: linux2 5.6.4 Done: darwin 5.6.4 Done: win32 5.6.4 Task-number: PYSIDE-510 Change-Id: I4f406cf72d25fdd2336814f6f20129079b8be54f Reviewed-by: Christian Tismer <tismer@stackless.com>
* Signature: Simplify parser by not reloading mappingChristian Tismer2017-09-251-27/+13
| | | | | | | | | | | | | | The mapping had been reloading on demand. This is overkill, since we only want to initialize the new constants. This patch replaces reloading by explicit init functions. This simplifies the parser and even the loader, because sys.path is no longer relevant and no context manager is needed for a single sys.path patch. Task-number: PYSIDE-510 Change-Id: I9e3a45cb10570211183952bd517abb0084b94f47 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Implement introspection with __signature__ packageChristian Tismer2017-09-201-0/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The signature module was turned into a package under 'PySide2/support/signature'. The package is completely isolated so that nothing is leaking into the normal import machinery. The package is also not initialized unless a __signature__ attribute is accessed. The only change to Python during a PySide run is the existence of the __signature__ attribute. As a side effect, all tests run at the same speed as before this extension. The module does not actively import PySide modules. Instead, it inspects sys.modules and reloads its mapping.py if needed. Example usage: >>> PySide2.QtWidgets.QGraphicsAnchorLayout.addAnchors.__signature__ >>> PySide2.QtWidgets.QGraphicsAnchorLayout.__signature__ The module has been thoroughly tested on macOS. I consider this ready. Task-number: PYSIDE-510 Change-Id: Ibb231a7fbb4ccc1a7249df55e3881a4e21a19c0d Reviewed-by: Christian Tismer <tismer@stackless.com>
* remove pyside2 and shiboken2 submodulesOswald Buddenhagen2017-05-221-15/+0
| | | | to be replaced by a subtree merge.
* update: bring repositories back in syncChristian Tismer2017-02-151-6/+12
| | | | | | | From time to time, it is good to update the master project. Change-Id: I50c45caf7c37ebb4ea865b4e4f5896e5cd8915fd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Update the pyside-setup submodulesChristian Tismer2016-12-121-10/+6
| | | | | | | | | | From time to time, submodules need to be updated. Actually, I would even like to update the master module after every submodule checkin, but this seems to be not easy to do all the time. Change-Id: I52f266c58086186df05ddcc85085f35e2e28ead7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Accept more errors in "testrunner.py"Christian Tismer2016-11-031-25/+10
| | | | | | | | Testrunner has even more variable texts to recognize. We change the regex slightly so that it always succeeds. Change-Id: Iac156592aac48afb5aea522540ae63c92ca2572a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix OS/X inclusion of framework headers.Alexandru Croitor2016-06-161-6/+25
| | | | | | | | | | | | | | | | | | | | | The recent change that made use of framework headers on OS/X did not work with homebrew Qt, and it didn't work with official builds either, because neither of the chosen include folders contained all the necessary headers to lead to a successful build. Fortunately shiboken actually supports being passed multiple include locations, separated by a colon on OS/X, and a semicolon on Windows. This patch makes sure to always pass the Qt include folder, and in case if the Qt build is a framework build, also passes the root frameworks location, with headers found by shiboken under frameworkName.framewework/Headers. This works for homebrew builds, official builds and custom non-installed prefix / in-source builds of Qt. Change-Id: I47b24e197839883de2ab873461efc1f4d4d33743 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Add option to link with libc++ on older OSX versions.Alexandru Croitor2016-05-111-5/+8
| | | | | | | | | | | | | | Versions of OSX lower than 10.9 link libstdc++ by default. Also libstdc++ is linked when the osx minimum deployment target is lower than 10.9. The new option allows explicitly linking libc++ in the cases mentioned above. It is not enabled by default, because most libraries and executables on versions lower than 10.9 are compiled with libstdc++, and mixing standard library versions can lead to crashes. Change-Id: I7397d2bbce2cfceaeb848f25e0bbf1a24ac9bde8 Reviewed-by: Christian Tismer <tismer@stackless.com>
* fix the name pyside2uicChristian Tismer2016-04-191-8/+5
| | | | This was modified, but not corrected in setup.py
* updateChristian Tismer2016-03-011-7/+7
|
* updateChristian Tismer2015-12-291-5/+8
|
* move other readme files from pyside2 into the wikiChristian Tismer2015-12-131-8/+5
|
* merge all PRs unto #44 with updated wiki statusChristian Tismer2015-12-131-5/+8
|
* add project status to the wikiChristian Tismer2015-11-241-8/+5
|
* merge all until #33 inclusiveChristian Tismer2015-11-231-6/+8
|
* merge #21 #22Christian Tismer2015-11-151-8/+6
|
* Merge pull request #20 from empyrical/ws_fix_2Christian Tismer2015-11-141-7/+7
| | | | Add forgotten files to WebSockets module
* Merge pull request #19 from empyrical/ws_fixChristian Tismer2015-11-141-7/+7
| | | | Fix up the QtWebSockets module
* merged PR #15 #16 #17 from empyricalChristian Tismer2015-11-141-5/+8
|
* Merge pull request #16 from empyrical/qmlChristian Tismer2015-11-131-5/+5
| | | | Add Qt5 QML modules
* some tests correctedChristian Tismer2015-11-121-10/+5
|
* Fix pysidetest. We are at 74% good tests.Christian Tismer2015-11-101-7/+9
| | | | | | | As Romain correctly told me, QtCore is needed to be included. The other small bug with huge effects was a forgotten rename of pyside2_global.h. The tests now run without segfaults!
* after signals were fixed, we have the first working alpha that is able to ↵Christian Tismer2015-11-071-7/+8
| | | | show windows!
* merge the new signal supportChristian Tismer2015-11-071-0/+8
|
* updateChristian Tismer2015-10-241-6/+0
|
* suppress another sys info warning on OS XChristian Tismer2015-10-021-5/+5
|
* enforce the minimum supported Qt5 version to be 5.3.0Christian Tismer2015-10-021-8/+5
|
* fixing the fix ;-)Christian Tismer2015-09-281-7/+7
| | | | | CMAKE is a nightmare. And if you don't read the meaning of every variable (like UNIX or CMAKE_HOST_UNIX, which _includes_ APPLE), then the empire strikes back. :-)
* updateChristian Tismer2015-09-281-7/+7
|
* sub-reposChristian Tismer2015-09-281-8/+7
|
* )small fixes (right wiki, name changesChristian Tismer2015-09-251-8/+8
|
* fix a problem with QSysInfo::WinVersionChristian Tismer2015-09-241-7/+8
| | | | | | This always refused to link on OS X. To circumvent this, I have split the QSysInfo entry in Mac and Win version files. The "other" file is always giving a warning, that I suppressed.
* finally, pyside needs to be renamed in the XML filesChristian Tismer2015-09-221-6/+8
| | | | | The XML names like "PySide.QtCore" go into the binaries for import, so it is necessary to change them all. There are also hundreds of Python files which must bechanged, as well.
* change all scripts to respect the new PySide2 module name.Christian Tismer2015-09-211-9/+6
| | | | still, there seem to be errors....
* not-so-small fix to the huge change.Christian Tismer2015-09-211-13/+8
| | | | | | I just understood what is needed to define a package: The files PySide2Config(...).cmake are crucial, the project names have little to do with that.
* huge change on project layout.Christian Tismer2015-09-211-7/+13
| | | | | | | | | | | The intention is to have PySide2 and Shiboken2 as project names, to allow for co-existence of PySide and PySide2. This is the first version that builds with these settings on OS X: $ python3 setup.py build --debug --no-examples --ignore-git --qmake=/usr/local/Cellar/qt5/5.5.0/bin/qmake --jobs=9 This is not yet tested.
* fix the repos names in setup.pyChristian Tismer2015-09-201-7/+7
|
* fix the sub-repos structure after renamingChristian Tismer2015-09-191-5/+8
|
* update sub-reposChristian Tismer2015-09-181-5/+5
|
* update sub-reposChristian Tismer2015-09-171-6/+5
|
* simplify the project structure. "qt5" is replaced by "master".Christian Tismer2015-09-171-7/+6
|\ | | | | | | For the old qt4 version, the old repository should be used.