-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ryven udates #18
base: main
Are you sure you want to change the base?
Ryven udates #18
Conversation
had top upgrade pythonocc-core
# TODO: Edge import causes crash | ||
# from OCCUtils.edge import Edge |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This import crashes, even when I just import that in an empty python shell:
> python
Python 3.9.9 | packaged by conda-forge | (main, Dec 20 2021, 02:41:03)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from OCCUtils.edge import Edge
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<frozen zipimport>", line 259, in load_module
File "/home/leon/apps/anaconda3/envs/pyoccenv_test/lib/python3.9/site-packages/OCCUtils-0.1.dev0-py3.9.egg/OCCUtils/edge.py", line 26, in <module>
File "/home/leon/apps/anaconda3/envs/pyoccenv_test/lib/python3.9/site-packages/OCC/Core/GeomLib.py", line 18, in <module>
from . import _GeomLib
ImportError: /home/leon/apps/anaconda3/envs/pyoccenv_test/lib/python3.9/site-packages/OCC/Core/_GeomLib.so: undefined symbol: _ZN7GeomLib13FuseIntervalsERK18NCollection_Array1IdES3_R20NCollection_SequenceIdEd
pythonocc-core version: 7.5.1
Wow it seems to be some interesting features here, thanks! I can't make the dev branch running on my computer though, I tried to reinstall using
|
Yeah, you need to install ryvencore and ryvencore-qt from the corresponding dev branches as well. You can clone Ryven, ryvencore, and ryvencore-qt, and in each checkout the |
Ok thank you.
when commenting the line (line 41 in
When I comment the line and rerun I get:
It's too specific for my knowledge of Qt framework unfortunately. One comment on your startup dialog : we can save config file but we can't load one, what is the use of it? It will be loaded when loading a |
This seems to be a PyQt error, but PyQt shouldn't be used at all, it's not supported. Do you have PyQt installed? If so can you uninstall it and try again?
So this is clearly a contradiction, or the two types come from different libraries. Maybe try creating a fresh virtual environment and installing the dependencies again (the Ryven libs from sources and
You can certainly load config files, the default config file |
Hmm, interesting. Sorry for the struggle, there's a few things to consider, I should probably figure out a better way to make everything work together.
Please let me know if it still doesn't work. |
Yes, I've uninstalled and repull the dev branch, it still doesn't work.
to
as the env is a new one and I've installed the packages in the correct order it doesn't change anything in our problem. |
It does. If it doesn't for you then your pull was not successful. |
My bad, VsCode displayed "dev" even after repulling but without success, deleting the dir and cloning/checkout dev had make it appeared. I still can't add nodes with inputs unfortunately |
What's the error? Starting Ryven as |
I don't get any messages drag/droping these inputs nodes (ex: For Point0 I get: When I right click and choose one by double clicking on it I get:
|
true, that's a bug I still need to fix, I remember. Regarding your error: it still doesn't seem to have |
Hey, sorry for the pulling trouble that I had! As you can see we have a result, thank you! Some notes :
I have tried to reload the saved file in the |
Great!
Thanks, fixing it now.
Thanks.
Autosave would be neat but the implementation is a bit more difficult than it sounds. In any case there shouldn't be crashes, or the nodes package is malfunctional (which renders autosave useless anyway). The nodes cannot crash the application on update by raising an exception, exceptions should be catched by Ryven. When does this happen for you, and what is the output? (run
The way I did this now implies that all output values will be The default approach would be to define de-/serialization. I saw that PythonOCC doesn't support any serialization by itself, and it might be some work. Do you know anything about this? |
Ok thank you very much! |
Quick update: I finished all major Ryven adaptions and the new versions (Ryven v3.4, ryvencore-qt v0.4, ryvencore v0.4) are available as pre-release on PyPI. In a fresh virtual environment, you can run:
|
Hey, any progress on this? We will need to define serialization and de-serialization for all the PythonOCC types passed between nodes. Is there anything I can help with that doesn't require PythonOCC knowledge? Or is there anyone who has experience with this task and could maybe help out? |
not sure how your PR solves the serialization issue described here. there is no point as long as that's not solved I think |
Hey, I'm currently trying to move towards a pre-release of a new Ryven version (see Ryven dev) to integrate a largely reworked ryvencore (docs here) which I wrote throughout last year. There are many breaking API changes.
Data
object which defines how the data can be de-/serialized (i.e. when the object sent is notpickle
serializable by default - like pythonocc types - then the package developer has to define de-/serialization manually). This finally enables Ryven to efficiently and correctly re-establish the old graph state when loading a project, even when stateful nodes are used, which was not the case before!I thought I might use this package to 1. find the pain points of upgrading, and 2. working out the details of the API changes. So I just did that. Some important points:
Node
subclass class can now reference a customNodeGUI
subclass which implements everything UI related now (color, display title, widgets, right-click actions, etc.).dtypes
don't doesn't exist anymore. I added another system for frequently used input widgets in Ryven. Normally you would now write something likeSomeInputWidgetClass
could be either manually defined, or one of the default provided ones by Ryven (replacingdtypes
). Because there is little variation of input widgets in this package, I implemented a decorator function which automatically adds this here, so we don't have to write it for every node explicitly.OCCData(Data)
class which currently does nothing - so it does not implement de-/serialization, but that might be fine here, after loading the user just needs to update the nodes that have no input connections and provide everything else with data. But that is just an idea, we might also provide proper de-/serialization. See comment in the code.Basic node functionality is already working again. I will also try to write some sort of script that translates old project files so they can be loaded with the new version. I'll try to wrap this up soon.