What's New in Version 1.20.1
Version 1.20.1 of the relationalai Python package is now available!
To upgrade, activate your virtual environment and run the following command:
pip install --upgrade relationalaiNew Features and Enhancements
Section titled “New Features and Enhancements”- Deployed Cortex tools now start returning results faster. Before this release, a deployed tool could spend noticeable time re-checking Snowflake schema information on every call before it ran the actual query. Now PyRel reuses that information across calls, which reduces startup delay for repeated requests.
Bug Fixes
Section titled “Bug Fixes”-
Fixed a bug where
ReasonersClient.ensure()andReasonersClientSync.ensure()could silently reuse an existing prescriptive reasoner even after your configured settings had changed. Before this release, callingensure("PRESCRIPTIVE")after changing your reasoner size or settings could return the old, mismatched reasoner without any warning. Now PyRel compares your configured settings against the existing reasoner before reusing it, and raisesReasonerConflictErrorwhen they do not match so you can resolve the conflict explicitly. -
Fixed a bug where querying certain Snowflake columns returned
NULLor a SQL error instead of your data. This affected columns whose names use capital letters, special characters such as., or a word that SQL reserves for its own use, such asORDER. Before this release, PyRel changed a name likePrimaryAssetIdto all uppercase (PRIMARYASSETID) under the hood. Snowflake treats those as two different columns, so it looked for a column that didn’t exist and returnedNULL. Now PyRel uses the column name exactly as it is stored, so these queries return the correct values. -
Fixed a bug where a negated comparison could silently apply a different condition than the one you wrote. Before this release, an expression such as
not_(Person.age > 18)could be stored and re-evaluated asnot_(Person.age)instead. That selects entities with no recorded age, not entities under 18, and PyRel gave no indication that the condition had changed. Now the comparison is always preserved exactly as written. -
Fixed a
NameErrorthat could occur when usingModel.union()to collect values from multiple properties. Before this release, a union such asm.union(Employee.email, Employee.phone)could fail withNameError: name 'Any' is not defined. Now this expression executes correctly and returns the combined values.