Pony Versions Save

Pony Object Relational Mapper

v0.7.17

7 months ago

Features

  • Add Python 3.11 support; drop support for Python < 3.8

Bugfixes

  • Fix #636 nullable IntArray and StrArray
  • Fix quoting table alias in MySQL DELETE queries
  • Fix handling of default argument values in hybrid methods and functions

v0.7.16

2 years ago

This is a bugfix-only release.

Bugfixes

  • Fixes #628: DBAPIProvider.init() got multiple values for argument 'database'

v0.7.15

2 years ago

Hi all! We released Pony ORM 0.7.15. This release includes:

  • A long-awaited support of Python 3.10.
  • A possibility to create shared-in memory SQLite databases that can be accessed from multiple threads

Support of Python 3.10

Previous versions of PonyORM use Python parser module from Python 2.x to parse Python AST. The support of this module was dropped in Python 3.10. Because of this, Pony ORM switches to new ast module.

With this change, the support of Python 2.7 and old versions of Python 3 was dropped, and the supported versions now are Python 3.6-Python 3.10

Shared in-memory SQLite databases

Previously in-memory SQLite databases are created in Pony ORM by specifying ":memory:" string as a database filename. The database created this way cannot be used in multiple threads. Now it is possible to use ":sharedmemory:" string to create a database that can be accessed from multiple threads.

Other changes

  • Do not perform optimistic checks when deleting an object (it is OK if it was already deleted by concurrent transaction)
  • Validation of int fields should take into account field size and check that the value is fit into the range
  • More tests for hybrid methods added
  • Fix incorrect assertion check assert t is translator.
  • Fix aggregated query sum(x.field for x in previous_query)
  • #594: Use a clearly synthetic filename when compiling dynamic code to not confuse coverage.py
  • Use DecompileError exception instead of AssertionError when a function cannot be decompiled

v0.7.15rc1

2 years ago

In this release, PonyORM got the support of Python 3.10. The code was rewritten significantly to use the standard Python ast module which comes with Python 3. Now PonyORM works on Python versions 3.7-3.10, and support of Python 2 was ended.

Bugfixes

  • Do not perform optimistic checks when deleting an object (it is OK if it was already deleted by concurrent transaction)
  • Validation of int fields should take into account field size and check that the value is fit into the range
  • More tests for hybrid methods added
  • Fix incorrect assertion check assert t is translator.
  • Fix aggregated query sum(x.field for x in previous_query)
  • #594: Use a clearly synthetic filename when compiling dynamic code to not confuse coverage.py
  • Use DecompileError exception instead of AssertionError when a function cannot be decompiled.

v0.7.14

3 years ago

Features

  • Add Python 3.9 support
  • Allow to use kwargs in select: Entity.select(**kwargs) and obj.collection.select(**kwargs), a feature that was announced but actually missed from 0.7.7
  • Add support for volatile collection attributes that don't throw "Phantom object appeared/disappeared" exceptions

Bugfixes

  • Fix negative timedelta conversions
  • Pony should reconnect to PostgreSQL when receiving 57P01 error (AdminShutdown)
  • Allow mixing compatible types (like int and float) in coalesce() arguments
  • Support of subqueries in coalesce() arguments
  • Fix using aggregated subqueries in ORDER BY section
  • Fix queries with expressions like (x, y) in ((a, b), (c, d))
  • #451: KeyError for seeds with unique attributes in SessionCache.update_simple_index()

v0.7.13

4 years ago

This release contains no new features or bugfixes. The only reason for this release is to test our CI/CD process.

v0.7.12

4 years ago

Features

  • CockroachDB support added
  • CI testing for SQLite, PostgreSQL & CockroachDB

Bugfixes

  • Fix translation of getting array items with negative indexes
  • Fix string getitem translation for slices and negative indexes
  • PostgreSQL DISTINCT bug fixed for queries with ORDER BY clause
  • Fix date difference syntax in PostgreSQL
  • Fix casting json to dobule in PostgreSQL
  • Fix count by several columns in PostgreSQL
  • Fix PostgreSQL MIN and MAX expressions on boolean columns
  • Fix determination of interactive mode in PyCharm
  • Fix column definition when sql_default is specified: DEFAULT should be before NOT NULL
  • Relax checks on updating in-memory cache indexes (don't throw CacheIndexError on valid cases)
  • Fix deduplication logic for attribute values

v0.7.11

4 years ago

Features

  • #472: Python 3.8 support
  • Support of hybrid functions (inlining simple Python functions into query)
  • #438: support datetime-datetime, datetime-timedelta, datetime+timedelta in queries

Bugfixes

  • #430: add ON DELETE CASCADE for many-to-many relationships
  • #465: Should reconnect to MySQL on OperationalError 2013 'Lost connection to MySQL server during query'
  • #468: Tuple-value comparisons generate incorrect queries
  • #470 fix PendingDeprecationWarning of imp module
  • Fix incorrect unpickling of objects with Json attributes
  • Check value of discriminator column on object creation if set explicitly
  • Correctly handle Flask current_user proxy when adding new items to collections
  • Some bugs in syntax of aggregated queries were fixed
  • Fix syntax of bulk delete queries
  • Bulk delete queries should clear query results cache so next select will get correct result from the database
  • Fix error message when hybrid method is too complex to decompile

v0.7.10

5 years ago

Bugfixes

  • Python3.7 and PyPy decompiling fixes
  • Fix reading NULL from Optional nullable array column
  • Fix handling of empty arrays in queries
  • #415: error message typo
  • #432: PonyFlask - request object can trigger teardown_request without real request
  • Fix GROUP CONCAT separator for MySQL

v0.7.9

5 years ago

Bugfixes

  • Fix handling of empty arrays and empty lists in queries
  • Fix reading optional nullable array columns from database