Releases: piccolo-orm/piccolo
1.3.0
Added the piccolo user list command - a quick and convenient way of listing Piccolo Admin users from the command line.
ModelBuilder now creates timezone aware datetime objects for Timestamptz columns.
Updated the ASGI templates.
SQLite auto migrations are now allowed. We used to raise an exception, but now we output a warning instead. While SQLite auto migrations aren't as feature rich as Postgres, they work fine for simple use cases.
1.2.0
There's now an alternative syntax for joins, which works really well with static type checkers like Mypy and Pylance.
The traditional syntax (which continues to work as before):
# Get the band name, and the manager's name from a related table
await Band.select(Band.name, Band.manager.name)The alternative syntax is as follows:
await Band.select(Band.name, Band.manager._.name)Note how we use ._. instead of . after a ForeignKey.
This offers a considerably better static typing experience. In the above example, type checkers know that Band.manager._.name refers to the name column on the Manager table. This means typos can be detected, and code navigation is easier.
Other changes
- Improve static typing for
get_related. - Added support for the
esmeraldASGI framework.
1.1.1
Piccolo allows the user to specify savepoint names which are used in transactions. For example:
async with DB.transaction() as transaction:
await Band.insert(Band(name='Pythonistas'))
# Passing in a savepoint name is optional:
savepoint_1 = await transaction.savepoint('savepoint_1')
await Band.insert(Band(name='Terrible band'))
# Oops, I made a mistake!
await savepoint_1.rollback_to()Postgres doesn't allow us to parameterise savepoint names, which means there's a small chance of SQL injection, if for some reason the savepoint names were generated from end-user input. Even though the likelihood is very low, it's best to be safe. We now validate the savepoint name, to make sure it can only contain certain safe characters. Thanks to @Skelmis for making this change.
1.1.0
Added support for Python 3.12.
Modified create_pydantic_model, so additional information is returned in the JSON schema to distinguish between Timestamp and Timestamptz columns. This will be used for future Piccolo Admin enhancements.
1.0.0
Piccolo v1 is now available!
We migrated to Pydantic v2, and also migrated Piccolo Admin to Vue 3, which puts the project in a good place moving forward.
We don't anticipate any major issues for people who are upgrading. If you encounter any bugs let us know.
Make sure you have v1 of Piccolo, Piccolo API, and Piccolo Admin.
1.0a3
Namespaced all custom values we add to Pydantic's JSON schema for easier maintenance.
0.121.0
1.0a2
All of the changes from 0.120.0 merged into the v1 branch.
0.120.0
Highlights
Improved how ModelBuilder generates JSON data.
The number of password hash iterations used in BaseUser has been increased to keep pace with the latest guidance from OWASP - thanks to @Skelmis for this.
Fixed a bug with auto migrations when the table is in a schema (thanks to @lherrman for reporting this).
PRs
- Improve assertions by @dantownsend in #872
- omit
graphlibfrom test coverage by @sinisaos in #874 - change
ModelBuilderJSON values by @dantownsend in #880 - feat: bring password hashing inline with industry best practices by @Skelmis in #881
- 883 Auto migrations fail when the table is in a schema by @dantownsend in #884
New Contributors
Full Changelog: 0.119.0...0.120.0