Conversation
…sable -c as shortcut for --core, which inteferes with -cc).
Enable all IT again. This reverts commit 33af99f.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3580 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 403 403
Lines 56790 56790
=========================================
Hits 56790 56790 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@hiker The ITs of 3.13 succeeded but with 3.14 (my last commit) failed with: Is this something you want to explore? Or should we still keep it pinned to an older python? |
|
That is likely a regression, I am checking. |
|
Looks like a regression. I have simplified some code, which needs class variables, and they are not pickled and setup correctly in subprocesses anymore. |
|
@sergisiso , while I can fix Fab (see MetOffice/fab#603 for details, I basically keep track of all instances of a class, and copy a class variable into an attribute of each instance ... which then gets distributed properly to all child processes) ... the big problem is that then fparser fails. I don't get any clear indication of what the problem is, the errors I see are all like this (for any parsed file): I am not that deep into the classes of fparser, and if there are any class variable that are modified. @sergisiso , can you confirm if this is the case (which would explain the error: the child processes only get the value of class variables at import time, NOT any modified values that are set later). The other solution that works would be to switch Fab back to use fork (fork was deprecated as the default due to safety issues such as deadlocks when multi-threading or interacting with external C libraries/accelerators). With this small change, it all works for me. |
|
I've created a (temporary) branch on Fab that uses |
|
I think that modifying classes is fundamental to the way |
|
OK, I take that as additional argument that Fab should just switch to the old subprocess behaviour (i.e. fork) - since otherwise Fab will never work with Python 3.14. My suggestion would then be to switch this back to 3.14, and once we have the next Fab release (which should include a fix for this), we switch Fab to use this specific version, and bump up python to 3.14. |
|
We just had a Fab 2.3.0 release done. I've updated the PR to use this latest release, and brought it up to master. Ready for next review. The IT just passed (though I did only run the extraction one, since this PR does not touch anything else). |
|
Forgot to update to 3.14, so rerun IT - and just in case ran them all, so this is really ready :) |
Update the extraction integration test to:
I needed to include some additional scripts, and have put them in
.github/workflow/fab_scripts(I doubt that UKMO wants the extraction scripts in the main repo). I copy these scripts into the checked-out lfric core and apps repositories.I also believe the file
examples/lfric/scripts/extract_script.pyis not needed anymore (I've added a copy to the fab_scripts, so consistently all IT related Fab files are in one directory).I am not sure why lfric_test.yml does
git config ... insteadOf...- that line did not work for me at all (aborted with missing key), and it all works without this line.