I have written a DEP about planned ORM expressions API changes. See https://github.com/django/deps/pull/5 for the proposed DEP.
The plan is to throw away sql.expressions.SQLEvaluator, rewrite how expressions work and make aggregates subclasses of expressions. Short summary of the goals and problems of the DEP: - The aim is to allow writing custom expressions through public API, allow usage of F() expressions in annotations and doing arithmetic operations on aggregates - Simplify coding of the ORM - The DEP is based on work done by Josh Smeaton in pull request https://github.com/django/django/pull/2496. While the patch will solve multiple issues, the main ticket tracking these changes is #14030. - The main problem is backwards compatibility - writing custom expressions or non-SQL backends requires usage of private APIs. The DEP aims to change those private APIs. I am planning to actually include the DEP as a draft in the django/deps repository once the most problematic pats of the draft have been rewritten. Once committed into the django/deps repository collaboration on the DEP will be much easier. As there isn't currently any process for actually accepting DEPs it might be possible that we need to move on with Josh Smeaton's work before the DEP is formally accepted. Of course, I hope that we get the DEP process going on, so we can first accept the DEP, then commit the actual implementation. Comments on the ORM epressions API changes should go to the pull request for now. Comments on the DEP process itself are welcome here. - Anssi -- You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/1410271601.11410.752.camel%40TTY32. For more options, visit https://groups.google.com/d/optout.
