Skip to content

Commit

Permalink
PonyORM release 0.7.14 (2020-11-23)
Browse files Browse the repository at this point in the history
# 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()
  • Loading branch information
kozlovsky committed Nov 23, 2020
2 parents f86dfb6 + d3310f9 commit 580fdf5
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 54 deletions.
24 changes: 22 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
# PonyORM release 0.7.14 (2020-11-23)

## 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()


# PonyORM release 0.7.13 (2020-03-03)

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


# PonyORM release 0.7.12 (2020-02-04)

## Features
Expand All @@ -15,7 +35,7 @@ This release contains no new features or bugfixes. The only reason for this rele
* 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 casting json to double 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
Expand Down Expand Up @@ -105,7 +125,7 @@ This release contains no new features or bugfixes. The only reason for this rele
* #385: test fails with python3.6
* #386: release unlocked lock error in SQLite
* #390: TypeError: writable buffers are not hashable
* #398: add auto coversion of numpy numeric types
* #398: add auto conversion of numpy numeric types
* #404: GAE local run detection
* Fix Flask compatibility: add support of LocalProxy object
* db_session(sql_debug=True) should log SQL commands also during db_session.__exit__()
Expand Down
104 changes: 52 additions & 52 deletions pony/__init__.py
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
from __future__ import absolute_import, print_function

import os, sys
from os.path import dirname

__version__ = '0.7.14-dev'

def detect_mode():
try: import google.appengine
except ImportError: pass
else:
if os.getenv('SERVER_SOFTWARE', '').startswith('Development'):
return 'GAE-LOCAL'
return 'GAE-SERVER'

try: from mod_wsgi import version
except: pass
else: return 'MOD_WSGI'

main = sys.modules['__main__']

if not hasattr(main, '__file__'): # console
return 'INTERACTIVE'

if os.getenv('IPYTHONENABLE', '') == 'True':
return 'INTERACTIVE'

if getattr(main, 'INTERACTIVE_MODE_AVAILABLE', False): # pycharm console
return 'INTERACTIVE'

if 'flup.server.fcgi' in sys.modules: return 'FCGI-FLUP'
if 'uwsgi' in sys.modules: return 'UWSGI'
if 'flask' in sys.modules: return 'FLASK'
if 'cherrypy' in sys.modules: return 'CHERRYPY'
if 'bottle' in sys.modules: return 'BOTTLE'
return 'UNKNOWN'

MODE = detect_mode()

MAIN_FILE = None
if MODE == 'MOD_WSGI':
for module_name, module in sys.modules.items():
if module_name.startswith('_mod_wsgi_'):
MAIN_FILE = module.__file__
break
elif MODE != 'INTERACTIVE':
MAIN_FILE = sys.modules['__main__'].__file__

if MAIN_FILE is not None: MAIN_DIR = dirname(MAIN_FILE)
else: MAIN_DIR = None

PONY_DIR = dirname(__file__)
from __future__ import absolute_import, print_function

import os, sys
from os.path import dirname

__version__ = '0.7.14'

def detect_mode():
try: import google.appengine
except ImportError: pass
else:
if os.getenv('SERVER_SOFTWARE', '').startswith('Development'):
return 'GAE-LOCAL'
return 'GAE-SERVER'

try: from mod_wsgi import version
except: pass
else: return 'MOD_WSGI'

main = sys.modules['__main__']

if not hasattr(main, '__file__'): # console
return 'INTERACTIVE'

if os.getenv('IPYTHONENABLE', '') == 'True':
return 'INTERACTIVE'

if getattr(main, 'INTERACTIVE_MODE_AVAILABLE', False): # pycharm console
return 'INTERACTIVE'

if 'flup.server.fcgi' in sys.modules: return 'FCGI-FLUP'
if 'uwsgi' in sys.modules: return 'UWSGI'
if 'flask' in sys.modules: return 'FLASK'
if 'cherrypy' in sys.modules: return 'CHERRYPY'
if 'bottle' in sys.modules: return 'BOTTLE'
return 'UNKNOWN'

MODE = detect_mode()

MAIN_FILE = None
if MODE == 'MOD_WSGI':
for module_name, module in sys.modules.items():
if module_name.startswith('_mod_wsgi_'):
MAIN_FILE = module.__file__
break
elif MODE != 'INTERACTIVE':
MAIN_FILE = sys.modules['__main__'].__file__

if MAIN_FILE is not None: MAIN_DIR = dirname(MAIN_FILE)
else: MAIN_DIR = None

PONY_DIR = dirname(__file__)

0 comments on commit 580fdf5

Please sign in to comment.