#rb Jamie.Dale
#jira UE-149707 - Change Python glue generation error into a warning when a make or a break function signature doesn't comply with Python requirements.
#preflight 62601f824617dd44291097f0
[CL 19830811 by Patrick Laflamme in ue5-main branch]
- Fixed the Python method declaration by adding "=..." when a default value was missing. This is legal in a Python stub to not specify the default value.
#rb Jamie.Dale
#preflight 625f25e3db15ac92dba883ee
[CL 19818316 by Patrick Laflamme in ue5-main branch]
- Added corresponding tests to test_wrapper_type
#jira UE-147015 - Missing Python wrapper for TFieldPath property for Python
#rb Jamie.Dale
#preflight 625eefb7d412434587fbf459
[CL 19812431 by Patrick Laflamme in ue5-main branch]
Since UK2Node_ExecutePythonScript uses wildcards for its pins, it's dependent on its linked inputs. During node reconstruction, we were updating the python node's pins based on incorrect data. For example, one of the input nodes needed to change its pin type from real/double to real/float during reconstruction. However, this reconstruction occurred after the linked python node was reconstructed. As a result, the python node assumed that its linked input node was using a real/double type.
We can fix this by simply changing the priority of UK2Node_ExecutePythonScript to Low_UsesDependentWildcard. Additionally, this change reverts 19482561.
#rb jamie.dale
#preflight 625882d8010ebc5d4e8a5cc7
#jira UE-146987
[CL 19810564 by dave jones2 in ue5-main branch]
This exposes UObjectBaseUtility's IsPackageExternal() and GetPackage() as
is_package_external() and get_package(), respectively, for UObject instances
that are wrapped to Python. GetOutermost() simply calls through to GetPackage(),
so the newly added get_package() is equivalent to the existing get_outermost(),
but the former is preferred according to the docstring for GetOutermost().
get_outermost() was left in place so as not to break existing Python code.
#rb jamie.dale
#preflight 6258b018010ebc5d4e92afdc
[CL 19772809 by matt johnson in ue5-main branch]
- Class parameters using short paths now parse correctly.
- Default values are now validated to avoid false positives (eg, LatentInfo, WorldContext, etc).
#jira
#preflight 62559d3a69015afc27ac0569
#rb Patrick.Laflamme
#rnx
#ROBOMERGE-AUTHOR: jamie.dale
#ROBOMERGE-SOURCE: CL 19724916 via CL 19727708 via CL 19729028 via CL 19729517
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v938-19570697)
[CL 19733237 by jamie dale in ue5-main branch]
The latter is used by BP functions, as well as C++ functions that have default arguments that UHT can't parse (eg, a default TMap argument).
#jira
#preflight 62470f9d470aff98e97e71db
#rb Patrick.Laflamme
#rnx
#ROBOMERGE-AUTHOR: jamie.dale
#ROBOMERGE-SOURCE: CL 19590554 via CL 19591745 via CL 19591775 via CL 19591795
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v938-19570697)
[CL 19593534 by jamie dale in ue5-main branch]
The BP compiler erroneously reports that python nodes might be missing implicit casts. However, UK2Node_ExecutePythonScript nodes handle argument slightly differently than conventional function nodes. The pins don't actually correspond to actual arguments on ExecutePythonScript. Instead, they more or less serve as references to their linked inputs, which ExecutePythonScript will pop from the stack and perform a direct conversion to a Python type. As a result, there's nothing to cast, and we can safely remove the entries from the ImplicitCastMap on the current content.
#rb jamie.dale
#jira UE-146778
#preflight 623b4fbeca34ffd7bf7db3e8
[CL 19482561 by dave jones2 in ue5-main branch]
- Released the GIL in Finalize() - rename class, get default object and refresh BlueprintActionDatabase
#jira FORT-444807 - Python Load_Asset is causing the editor to hang if it has to load certain assets
#rb Jamie.Dale, Patrick.Laflamme
#ushell-cherrypick of 19292501 by Max.Chen
#preflight 6226843d1938e4deaa7916fc
[CL 19293291 by Patrick Laflamme in ue5-main branch]
Setters and getters are native functions called by FProperties when setting property values with *_InContainer functions.
Setters and getter function names can be manually specified with Setter = Func and Getter = Func keywords inside of UPROEPRTY macro but they will also be automatically parsed if the name is not explicitly specified if the setter or getter function name matches SetPropertyName and GetPropertyName pattern.
The latter behavior can be disabled in UHT's DefaultEngine.ini by setting AutomaticSettersAndGetters=False.
ImportText and ExportTextItem functions have been deprecated and should be replaced with *_InContainer or *_Direct variants.
#rb Steve.Robb
#preflight 6210a377a83e0bcefd03d9e1
#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 19070318 via CL 19098059 via CL 19104650 via CL 19104661 via CL 19110012
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19147839 by marc audy in ue5-main branch]
#rb Andrew.Scheidecker
#preflight 620f3a108863746a104d6c36
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 19047989 via CL 19048186 via CL 19048197 via CL 19048203 via CL 19049414
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v918-19018356)
[CL 19065767 by robert manuszewski in ue5-main branch]
#jira UE-92057 - Investigate deferring the function resolution for Make/Break meta-data in Python
#rb Jamie.Dale
#preflight 61f84aa35a026d2d19b62c70
#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18796649 in //UE5/Release-5.0/... via CL 18797780 via CL 18798499
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)
[CL 18798615 by patrick laflamme in ue5-main branch]
- Released the GIL while loading or finding an asset.
- Released the GIL while loading or finding an object.
- Released the GIL while loading or finding packages.
- Released the GIL while logging/flushing stdout/stderr from Python.
#rb Jamie.Dale
#preflight 61f2fb1d1f12674afbbf9933
#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18764878 via CL 18764883 via CL 18764890 via CL 18765457 via CL 18765586
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18765591 by patrick laflamme in ue5-main branch]
- Removed the meta=(MakeStructureDefaultValue= "1,1,1") from the FTransform struct because Unreal Header Tool is already capable to deduce that from the MakeTransform() default C++ prameter.
- Removed the meta=(Scale = "1,1,1") from MakeTransform UFUNCTION because that can be deduced by Unread Header Toold from the default C++ parameter.
Fixed Python code not invoking the a 'Make' function (declared with meta HasNativeMake on a USTRUCT) if no parameters were supplied to Python (ex. unreal.Transform() would not call the MakeTransform(...)).
- In most case, not calling the Make function worked as expected, but the Make function could implement side effects, so always honor it.
Resaved BP macro assets using MakeTransform() with the default values. The default values saved as string with the asset changed from "1,1,1" to "1.000000,1.000000,1.000000" and this triggered a BP Compiler warning.
The following tests were performed:
- In the Blueprint Editor, added a Make Transform node and ensured the default values for scale were (1, 1, 1)
- In the Blueprint Editor, created a User Defined Struct, added as a member a Transform, ensured the default values for the transform scale were (1, 1, 1)
- Added a Python regression unit tests to ensure unreal.Transform() takes the default scale value as (1, 1, 1) if the scale parameter is not provided.
- Created a Blueprint Macro Libraries with a Macro calling MakeTransform() with default parameters, saved it, applied the fix, got the warning, refreshed the node, resaved the macro and ensured the macro used the correct default scale.
#jira UE-133741 - MakeStructureDefaultValue is not used in Python
#rb Jamie.Dale
#ROBOMERGE-OWNER: patrick.laflamme
#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18337929 via CL 18338143 via CL 18338146 via CL 18338492 via CL 18338517
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
[CL 18338531 by patrick laflamme in ue5-release-engine-test branch]
- This makes Python a bit faster at startup (according to my benchmark) and reduce noise looking at the sys.path.
#jira UE-135129 - Avoid adding non-existing directory to Python 'sys.path'
#rb Jamie.Dale
#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18324422 in //UE5/Release-5.0/... via CL 18324431
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
[CL 18324435 by patrick laflamme in ue5-release-engine-test branch]