Gramex 1.76 has Python 3.9 support, schedulers that run every second, and more tutorial videos.
Gramex only worked on Python 3.7 so far. This was mainly Tornado 6, SQLAlchemy 1.4 and Pandas 1.0 had breaking changes.
Rather than break backward compatibility, Gramex has been re-written to work with the older and newer versions of all of these libraries. Specifically, it works with:
In future releases, the Gramex Conda package will migrate to Python 3.9, allowing you to use:
if n := len(a):
=
like f'{value=}'
{'x':1} | {'y':2}
asyncio.run()
Earlier, schedulers and alerts could run every minute, at most.
But it wasn’t possible to run a scheduler every second, or 90 seconds.
Now, schedulers and alerts support an every:
kwarg that specifies the frequency of runs.
For example, this schedule runs every 1 minute 30 seconds:
schedule:
run-at-specific-interval:
function: print(time.time())
every: 1m 30s
The Gramex Guide now has video tutorials explaining most features in several pages:
table:
parametergramex.cache.open(excel_file)
accepts the name=
for named range (not the incorrect defined_name=
)gramex.data.insert()
converts empty ?args=
to None instead of empty strings, making FormHandler insert operations work across numbers and stringsGramex 1.76 is backward compatible with previous releases unless the release notes say otherwise. Automated builds test this.
Every Gramex release is tested for security vulnerabilities using the following tools.
The Gramex code base has:
See the Gramex installation and upgrade instructions.
Note: Gramex 1.76 works with Python 3.7+ but has been fully tested only with Python 3.7.