View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004534 | FreeCAD | Bug | public | 2021-01-15 06:47 | 2021-01-30 15:30 |
Reporter | ickby | Assigned To | ickby | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Summary | 0004534: Multiple python extensions added lead to proxy problems | ||||
Description | Adding a python extension creates the ExtensionProxy property, which is set to the default value passed in the addExtension method. This property belongs to the extension (defined here), and is exposed as an property for the object. The problem arises when a second python extension is added to the same object. In FC the extension itself gets the ExtensionProxy setup correctly in the addExtension method, as this method directly accesses the extension to get the property (see). However, now there are two ExtensionProxy' properties in the object, one for each extension. Accessing it from python will return only one, the first one that is found (see here). This leads to the FreeCAD bug, that you cannot change the ExtensionProxy correctly for more than one extension. Note that neither in 0.18 or 0.19 this ever occured as bug, as no one seem to use more than 1 extension and also not the ExtensionProxy and just rely on addExtension. However, it could lead to all kind of unexpected behaviour later. | ||||
Steps To Reproduce | class Proxy1(): def init(self): pass class Proxy2(): def init(self): pass p1 = Proxy1() p2 = Proxy2() obj = App.ActiveDocument.addObject("App::DocumentObject", "MyObject") obj.addExtension("App::GroupExtensionPython", p1) obj.addExtension("Part::AttachExtensionPython", p2) print(f"ExtensionProxy is Proxy1: {isinstance(obj.ExtensionProxy, Proxy1)}") print(f"ExtensionProxy is Proxy2: {isinstance(obj.ExtensionProxy, Proxy2)}") | ||||
Tags | No tags attached. | ||||
FreeCAD Information | OS: Manjaro Linux (KDE//usr/share/xsessions/plasma) Word size of OS: 64-bit Word size of FreeCAD: 64-bit Version: 0.19.23700 (Git) Build type: Release Branch: master Hash: 83cfffd1bab7161e05b36d4e7607f7f5f3cfd202 Python version: 3.9.1 Qt version: 5.15.2 Coin version: 4.0.1 OCC version: 7.4.0 Locale: English/Germany (en_DE) | ||||
|
Forum discussion: https://forum.freecadweb.org/viewtopic.php?f=10&t=54370 |
|
Fix committed to master branch. |
FreeCAD: master 446ce215 2021-01-17 09:45:50 Committer: wwmayer Details Diff |
Remove ExtensionProxy and rely on default Python proxy for extensions. fixes 0004534 |
Affected Issues 0004534 |
|
mod - src/App/Extension.h | Diff File | ||
mod - src/App/ExtensionContainerPy.xml | Diff File | ||
mod - src/App/ExtensionContainerPyImp.cpp | Diff File | ||
mod - src/Gui/ViewProviderExtension.h | Diff File | ||
mod - src/Mod/Arch/ArchBuildingPart.py | Diff File | ||
mod - src/Mod/Arch/ArchProject.py | Diff File | ||
mod - src/Mod/Arch/ArchSite.py | Diff File | ||
mod - src/Mod/Draft/draftmake/make_clone.py | Diff File | ||
mod - src/Mod/Draft/draftobjects/draftlink.py | Diff File | ||
mod - src/Mod/Fem/femsolver/solverbase.py | Diff File | ||
mod - src/Mod/Part/BasicShapes/Shapes.py | Diff File | ||
mod - src/Mod/Part/BasicShapes/ViewProviderShapes.py | Diff File | ||
mod - src/Mod/Test/Document.py | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2021-01-15 06:47 | ickby | New Issue | |
2021-01-17 10:06 | ickby | Note Added: 0015210 | |
2021-01-30 15:30 | ickby | Changeset attached | => FreeCAD master 446ce215 |
2021-01-30 15:30 | ickby | Note Added: 0015228 | |
2021-01-30 15:30 | ickby | Assigned To | => ickby |
2021-01-30 15:30 | ickby | Status | new => closed |
2021-01-30 15:30 | ickby | Resolution | open => fixed |