All Versions
Latest Version
Avg Release Cycle
149 days
Latest Release
1240 days ago

Changelog History
Page 2

  • v0.7.5 Changes

    July 24, 2018

    πŸ›  Bugfixes

    • πŸ›  query.where and query.filter method bug introduced in 0.7.4 was fixed
  • v0.7.4 Changes

    July 23, 2018

    Major features

    • πŸ“„ Hybrid methods and properties added:
    • πŸ‘ Allow to base queries on another queries: select(x.a for x in prev_query if x.b)
    • βž• Added support of Python 3.7
    • βž• Added support of PyPy
    • group_concat() aggregate function added
    • πŸ“¦ pony.flask subpackage added for integration with Flask

    Other features

    • distinct option added to aggregate functions
    • πŸ‘Œ Support of explicit casting to float and bool in queries

    πŸ‘Œ Improvements

    • Apply @cut_traceback decorator only when pony.MODE is 'INTERACTIVE'

    πŸ›  Bugfixes

    • In SQLite3 LIKE is case sensitive now
    • #249: Fix incorrect mixin used for Timedelta
    • #251: correct dealing with qualified table names
    • #301: Fix aggregation over JSON Column
    • πŸ‘ #306: Support of frozenset constants added
    • #308: Fixed an error when assigning JSON attribute value to the same attribute: obj.json_attr = obj.json_attr
    • #313: Fix missed retry on exception raised during db_session. __exit__
    • πŸ‘€ #314: Fix AttributeError: 'NoneType' object has no attribute 'seeds'
    • #315: Fix attribute lifting for JSON attributes
    • #321: Fix KeyError on obj.delete()
    • #325: duplicating percentage sign in raw SQL queries without parameters
    • #331: Overriding __len__ in entity fails
    • #336: entity declaration serialization
    • #357: reconnect after PostgreSQL server closed the connection unexpectedly
    • πŸ›  Fix Python implementation of between() function and rename arguments: between(a, x, y) ->
      between(x, a, b)
    • πŸ›  Fix retry handling: in PostgreSQL and Oracle an error can be raised during commit
    • πŸ›  Fix optimistic update checks for composite foreign keys
    • Don't raise OptimisticCheckError if db_session is not optimistic
    • Handling incorrect datetime values in MySQL
    • πŸ‘Œ Improved ImportError exception messages when MySQLdb, pymysql, psycopg2 or psycopg2cffi driver was not found
    • πŸ›  desc() function fixed to allow reverse its effect by calling desc(desc(x))
    • __contains__ method should check if objects belong to the same db_session
    • πŸ›  Fix pony.MODE detection; mod_wsgi detection according to official doc
    • πŸ›  A lot of inner fixes
  • v0.7.3 Changes

    October 23, 2017

    πŸ†• New features

    • where() method added to query
    • coalesce() function added
    • between(x, a, b) function added
    • #295: Add _table_options_ for entity class to specify engine, tablespace, etc.
    • πŸ‘‰ Make debug flag thread-local
    • sql_debugging context manager added
    • sql_debug and show_values arguments to db_session added
    • set_sql_debug function added as alias to (to be deprecated) sql_debug function
    • πŸ‘ Allow db_session to accept ddl parameter when used as context manager
    • βž• Add optimistic=True option to db_session
    • Skip optimistic checks for queries in db_session with serializable=True
    • fk_name option added for attributes in order to specify foreign key name
    • ⏱ #280: Now it's possible to specify timeout option, as well as pass other keyword arguments for sqlite3.connect function
    • βž• Add support of explicit casting to int in queries using int() function
    • βž• Added modulo division % native support in queries

    πŸ›  Bugfixes

    • πŸ›  Fix bugs with composite table names
    • πŸ›  Fix invalid foreign key & index names for tables which names include schema name
    • For queries like select(x for x in MyObject if not x.description) add "OR IS NULL" for nullable string columns
    • βž• Add optimistic checking for delete() method
    • ⚑️ Show updated attributes when OptimisticCheckError is being raised
    • πŸ›  Fix incorrect aliases in nested queries
    • πŸ‘» Correctly pass exception from user-defined functions in SQLite
    • More clear error messages for UnrepeatableReadError
    • πŸ›  Fix db_session(strict=True) which was broken in 2d3afb2
    • πŸ›  Fixes #170: Problem with a primary key column used as a part of another key
    • πŸ›  Fixes #223: incorrect result of getattr(entity, attrname) when the same lambda applies to different entities
    • πŸ›  Fixes #266: Add handler to "pony.orm" logger does not work
    • πŸ›  Fixes #278: Cascade delete error: FOREIGN KEY constraint failed, with complex entity relationships
    • πŸ›  Fixes #283: Lost Json update immediately after object creation
    • πŸ›  Fixes #284: query.order_by() orders Json numbers like strings
    • πŸ›  Fixes #288: Expression text parsing issue in Python 3
    • πŸ›  Fixes #293: translation of if-expressions in expression
    • πŸ›  Fixes #294: Real stack traces swallowed within IPython shell
    • Collection.count() method should check if session is alive
    • Set obj._session_cache_ to None after exiting from db session for better garbage collection
    • πŸ‘ Unload collections which are not fully loaded after exiting from db session for better garbage collection
    • Raise on unknown options for attributes that are part of relationship
  • v0.6.rc3 Changes

    October 30, 2014

    πŸ›  Bugfixes

    • πŸ›  Fixed #18: Allow to specify size and unsigned for int type
    • πŸ›  Fixed #77: Discriminate Pony-generated fields in entities: Attribute.is_implicit field added
    • πŸ›  Fixed #83: Entity.get() should issue LIMIT 2 when non-unique criteria used for search
    • πŸ›  Fixed #84: executing db.insert() should turn off autocommit and begin transaction
    • Fixed #88: composite_index(*attrs) added to support non-unique composite indexes
    • πŸ›  Fixed #89: IN / NOT IN clauses works different with empty sequence
    • πŸ›  Fixed #90: Do not automatically add "distinct" if query.first() used
    • πŸ›  Fixed #91: document automatic "distinct" behaviour and also .without_distinct()
    • πŸ›  Fixed #92: without_distinct() and first() do not work together correctly

    πŸ†• New features

    • size and unsigned options for int attributes link

    πŸ—„ Since the long type has gone in Python 3, the long type is deprecated in Pony now. Instead of long you should use the int type and specify the size option:

        class MyEntity(db.Entity):
            attr1 = Required(long) # deprecated
            attr2 = Required(int, size=64) # new way for using BIGINT type in the database
  • v0.6.rc2 Changes

    October 10, 2014

    πŸ›  Bugfixes

    • πŸ›  Fixes #81: python3.3: syntax error during installation in ubuntu 14.04
  • v0.6.rc1 Changes

    October 08, 2014

    πŸ†• New features:

    • πŸ‘ Python 3 support
    • πŸ‘ pymysql adapter support for MySQL databases

    Backward incompatible changes

    Now Pony treats both str and unicode attribute types as they are unicode strings in both Python 2 and 3. So, the attribute declaration attr = Required(str) is equal to attr = Required(unicode) in Python 2 and 3. The same thing is with LongStr and LongUnicode - both of them are represented as unicode strings now.

    For the sake of backward compatibility Pony adds unicode as an alias to str and buffer as an alias to bytes in Python 3.

    πŸ›  Other changes and bug fixes

    • πŸ›  Fixes #74: Wrong FK column type when using sql_type on foreign ID column
    • πŸ›  Fixes #75: MappingError for self-referenced entities in a many-to-many relationship
    • πŸ›  Fixes #80: β€œEntity NoneType does not belong to database” when using to_dict