Path Workbench Code restructuring - heads up

For a while we’ve been struggling with an ever growing python module incorporating all of Path in a flat structure. This makes it hard for newcomers to “get into” the code base and figure out how this is supposed to work. It also makes it quite easy to introduce cyclic dependencies in the modules which then cause problems later on. We’ve restructured the entire code base into sub modules and pulled all elements of the Path code into a single namespace in PR-7440.

Why would any none developer care?

Due to how FreeCAD stores its objects in the “.FCStd” file the data file is inherently tied to the implementation. If the implementation changes and FreeCAD can’t find the class which was used to create an element before it got saved then FreeCAD cannot process that data. In other words, once the change is merged it will break all existing Path files.

This is also the reason why we have to make this change now, before version 1.0 is released. With version 1.0 backwards compatibility becomes a priority and a cleanup like this will become much more complicated.

ToolBit’s are not affected by this change. Any created and existing ToolBit files will still work after the merge.

Mod edit: The proposed PR: 7440

My hot take: ambitious but this makes sense for a pre-1.0 release. If I may, can you consider to also put 6835 on your radar as well ?

Yep, this is going to break a lot of stuff, make a lot of people mad, and affect both users and other developers.
Let’s do it!!






and any other power users. If you’re able to build from the PR, please do so and start keeping notes so we can write a migration guide or other instructions to users. Migration pain is going to affect us for a long time so we should probably get good at answering it.

Sadly I can’t build from PR, So I will wait when changes are incorporated in the “conda install” I use for “0.21.dev”

Let’s see how this affects, my test code and some of my other code around.

Thanks for the information, I will eventually made or correct some code I’ve posted (I have to find the relevant topics, as I’ve not noted them down).

Best Regards

Carlo D.

I am on Windows, so building from a PR is not trivial, but I will try.

I can say already, “Let’s do it!!”

If stuff breaks for me I will fix it.

Gene

I had started to take those out, but then ppl have added it back in - for a developer it’s really handy to change a single line and turn on/off internal debugging. I’ll keep in mind though if I come across a better pattern.

PR is not integrated yet in development version?

Regards

Carlo D.

As pointed out above the change is rather dramatic. No sense in adding to master until it is quite thoroughly debugged at the PR level.

I have taken a first look. In general it seems to work pretty well for new Path WB jobs, but completely fails to handle existing jobs. They are not even recognized. I do not know if that can be fixed in any way or if some sort of converter might be possible, but that is why the testing period on the PR exists.

Gene

Ok thanks.

I don’t know how to do this “test at PR level” and for now it is only an informative questions, as I can’t compile FC with my limited power (Intel i3-2100) machine.

I was thinking that it will be as easy as making a git pull and a recompile, but in this case the PR has to be merged in “main branch”.

Probably I’m lacking ability to make a goo use of GitHub in complex projects.

There is maybe a dedicated “branch”?

Could you kindly explain me “how to do eventually” such thing, to keep note maybe in future when I could afford a more powerful machine.?

TIA and Regards.

Carlo D.

Until now Path workbench was written in Python. Is this still so? Then I could replace the whole Mod/Path directory to get the new stuff?

I actually tried that first. I simply replaced everything in Mod/Path. It did not work because there are some hooks back into the FreeCAD core that need to be recompiled.

Most of the Path WB source is python, but there are some important C++ portions as well.

I don’t know if a more intelligent approach would work.

Gene

The issue was that I could not move the C++ and the Python backed classes into a single namespace without moving the C++ somewhere else first. So unfortunately a recompile is required.

For nerds:
The C++ classes now publish their python bindings in the module “PathApp”. The “Path” namespace is now a pure python module which, upon it being imported, imports everything from the “PathApp” module which puts the C++ objects back where they were.

https://forum.freecadweb.org/viewtopic.php?f=29&t=67953&sid=d0eb85e4d29e99b30a60d6ddd7db8fad

I found a couple small bugs and mlampert fixed them immediately. Gene found some issues with surface and those were fixed too. Otherwise this has not gotten much comment. So I’m assuming it’s all good.

I’ll be merging this as soon as mlampert gives me the final go-ahead.

If anyone has concerns, speak now or forever hold your peace.

So far I have found a couple of trivial bugs that were easily fixed.

Go for it!

PR is merged - once it makes it through the pipeline the code structure hopefully makes more sense.

Updated FreeCAD via the in program updater and am assuming this includes the recent merge of the code restructuring.
On opening my most recent project the result is as referenced in Gene’s earlier post.
.

The directory tree structure has exploded, most branch links are broken although some Operations still have some members.
Access to items in Gui is mostly non existent , but using Python Console via Python dot scope shows contents still valid.

ReportView on initial opening of file:

07:45:09  Recent macros : keyboard shortcut 1 disabled because conflicting with Std_ViewFront
07:45:09  Recent macros : keyboard shortcut 2 disabled because conflicting with Std_ViewTop
07:45:09  Recent macros : keyboard shortcut 3 disabled because conflicting with Std_ViewRight
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJob'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheet'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathStock'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathCustom'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupHoldingTags'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupHoldingTags'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathCustom'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheet'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJob'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDrilling'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathStock'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJob'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheet'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathStock'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathCustom'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupHoldingTags'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJob'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheet'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathStock'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathPocketShape'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSurface'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathCustom'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJob'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheet'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathStock'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBit'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolController'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathPocketShape'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSurface'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathCustom'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathProfile'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupHoldingTags'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathProfile'
07:45:15  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupHoldingTags'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJobGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheetGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupTagGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupTagGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheetGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJobGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJobGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheetGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupTagGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJobGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheetGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathJobGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathSetupSheetGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathIconViewProvider'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolBitGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathToolControllerGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupTagGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathOpGui'
07:45:16  Traceback (most recent call last):
  File "/tmp/.mount_FreeCA0EhgPR/usr/lib/python3.10/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 139, in _import
    return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'PathScripts.PathDressupTagGui'

This Version:

OS: Ubuntu 20.04.5 LTS (ubuntu:GNOME/ubuntu)
Word size of FreeCAD: 64-bit
Version: 0.21.30669 (Git) AppImage
Build type: Release
Branch: master
Hash: 48b4eed55c05452d2cbabb9a8ba4c75e1a54481e
Python 3.10.6, Qt 5.15.4, Coin 4.0.0, Vtk 9.1.0, OCC 7.6.3
Locale: English/Australia (en_AU)
Installed mods: 
  * fcgear 1.0.0
  * Curves 0.4.4
  * Lithophane
  * CurvedShapes 1.0.3

Version in which file last modified and valid:

OS: Ubuntu 20.04.5 LTS (ubuntu:GNOME/ubuntu)
Word size of FreeCAD: 64-bit
Version: 0.21.30492 (Git) AppImage
Build type: Release
Branch: master
Hash: b4578fb3eae842eb510a1bc055d07d369a67ce94
Python 3.10.6, Qt 5.15.4, Coin 4.0.0, Vtk 9.1.0, OCC 7.6.3
Locale: English/Australia (en_AU)
Installed mods: 
  * fcgear 1.0.0
  * Curves 0.4.4
  * Lithophane
  * CurvedShapes 1.0.3

As mentioned earlier, the refactor breaks all existing Jobs. You’ll have to delete all Jobs, their operations and associated objects and create the anew.

Or retain working copy of a pre-change AppImage. (My intention)
This covers historical projects for those of us with an archive of jobs.

Please post link to the previous mention of this. TIA!