Title: Use real copy instead of converting to string for when calling addObject or addChild by bakpaul · Pull Request #511 · sofa-framework/SofaPython3 · GitHub
Open Graph Title: Use real copy instead of converting to string for when calling addObject or addChild by bakpaul · Pull Request #511 · sofa-framework/SofaPython3
X Title: Use real copy instead of converting to string for when calling addObject or addChild by bakpaul · Pull Request #511 · sofa-framework/SofaPython3
Description: This supersede PR #45 This takes the work in #45 , update it with master, remove unrelated changes to PrefabLinks, fix it compilation and execution. This will solve the issue of incompatibility with numpy 2. But at the cost of being way more strict on data structures of lists. Until now, because each input value passed to addObject was processed by the method toSofaParsableString we didn't have to make sure the list was correctly formated. Indeed, the method toSofaParsableString used a recursive pattern for list object, removing any sort of shape of the list, such as what it is expected in xml: one contiguous chunk of stringed values that will be reshaped in a row major fashion. This allowed to pass position=[0, 0, 0] for vector, or even worst [0, 0, 0, [0, 1, 0], [0, 2, 0]]. Now only list of list of three elems (or numpy arrays) will be accepted. So even if only one point is in the mstate we need to put position=[[0,0,0]]. This, of course brakes a lot of scenes in a lot of repository. We need to decide what to do. I suggest to make a huge refactoring, by testing this PR on the SOFA CI with a ci-depend-on and only merge everything when all scenes are passing. --> 🦸 To make it less breaking, I've added a compat' layer that translate data to string when an error is thrown. To complete the explanations: The main difficulty here comes from the factory that takes a structure of type BaseObjectDescription as input of creation of the object. The method that actually creates the object does multiple checks on this description to know if the object can be created regarding the context and tries to fix wrong parametrization as much as possible + it will set the data that are already inside the struc. The issue is that this description object can only store string representation the the datas, which is breaking with numpy 2 because its string representation contains numpy type names which makes no sens in C++. To solve this, the idea of this work is to, before creating the object, sort the input kwargs to 'createObject' to transform the list into vectors of real data in C++ instead of transforming them to string. But because they are not string anymore, they need to be passed to the object after its creation, so they cannot be used for the factory check and parsing. This is ok for most of the data, but for some such as template, linkslist of link (for multimapping), src and more, this is breaking. Plus there are also some data field that are not real data but only parsed by the object itself. That is the reason of the apparent complexity of the fix.
Open Graph Description: This supersede PR #45 This takes the work in #45 , update it with master, remove unrelated changes to PrefabLinks, fix it compilation and execution. This will solve the issue of incompatibility wit...
X Description: This supersede PR #45 This takes the work in #45 , update it with master, remove unrelated changes to PrefabLinks, fix it compilation and execution. This will solve the issue of incompatibility wit...
Opengraph URL: https://github.com/sofa-framework/SofaPython3/pull/511
X: @github
Domain: patch-diff.githubusercontent.com
| route-pattern | /:user_id/:repository/pull/:id/checks(.:format) |
| route-controller | pull_requests |
| route-action | checks |
| fetch-nonce | v2:afdb1140-7b78-9647-4bdc-8d02842fcaf4 |
| current-catalog-service-hash | 87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a |
| request-id | A5EA:38069C:72DFD8:92DFC0:697EF4DE |
| html-safe-nonce | 061ab151f36faefef18b10898bb287533760ce1ef494f72d5f24ec292daa3b44 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNUVBOjM4MDY5Qzo3MkRGRDg6OTJERkMwOjY5N0VGNERFIiwidmlzaXRvcl9pZCI6IjI1NDU0NTg0ODA1MTMyMTc3NTgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 5d9aa8aaf3fb0146a138479d05e264a3c7f6b1e58efb71aae60715446e7ae9ec |
| hovercard-subject-tag | pull_request:2647226343 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/sofa-framework/SofaPython3/pull/511/checks |
| twitter:image | https://avatars.githubusercontent.com/u/30337881?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/30337881?s=400&v=4 |
| og:image:alt | This supersede PR #45 This takes the work in #45 , update it with master, remove unrelated changes to PrefabLinks, fix it compilation and execution. This will solve the issue of incompatibility wit... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 60279d4097367e16897439d16d6bbe4180663db828c666eeed2656988ffe59f6 |
| turbo-cache-control | no-cache |
| go-import | github.com/sofa-framework/SofaPython3 git https://github.com/sofa-framework/SofaPython3.git |
| octolytics-dimension-user_id | 11028508 |
| octolytics-dimension-user_login | sofa-framework |
| octolytics-dimension-repository_id | 260159147 |
| octolytics-dimension-repository_nwo | sofa-framework/SofaPython3 |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 260159147 |
| octolytics-dimension-repository_network_root_nwo | sofa-framework/SofaPython3 |
| turbo-body-classes | logged-out env-production page-responsive full-width full-width-p-0 |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7c85641c598ad130c74f7bcc27f58575cac69551 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width