Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!goblin1!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed2a.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python.': 0.02; 'url:pypi': 0.03; 'enabling': 0.05; 'subject:Python': 0.06; 'cache': 0.07; 'report.': 0.07; 'see:': 0.07; 'subject:ANN': 0.07; 'attributes': 0.09; 'cleanup': 0.09; "django's": 0.09; 'executed': 0.09; 'fixed,': 0.09; 'indexes': 0.09; 'keys,': 0.09; 'prefix': 0.09; 'skip:# 30': 0.09; 'suffix': 0.09; 'url:github': 0.09; 'assume': 0.14; '(should': 0.16; 'columns': 0.16; 'improper': 0.16; 'intersection': 0.16; 'orm,': 0.16; 'prefix,': 0.16; 'prefixed': 0.16; 'query,': 0.16; 'skip:q 30': 0.16; 'sqlalchemy': 0.16; 'subject:mapper': 0.16; 'subject:object': 0.16; 'to:addr :python-announce-list': 0.16; 'hey': 0.18; 'trying': 0.19; 'basically': 0.19; 'everyone,': 0.19; 'filtering': 0.24; 'people,': 0.24; 'versions': 0.24; 'holds': 0.26; 'query': 0.26; 'primary': 0.26; 'defined': 0.27; 'to:2**1': 0.27; 'fixed': 0.29; 'skip:- 40': 0.29; 'feature': 0.29; 'to:no real name:2**1': 0.29; 'matching': 0.30; 'message-id:@mail.gmail.com': 0.30; 'disable': 0.31; 'enabled': 0.31; 'factor': 0.31; 'keys': 0.31; 'reduced': 0.31; 'skip:q 20': 0.31; 'interface': 0.32; 'skip:- 30': 0.32; 'url:python': 0.33; 'at:': 0.34; 'definition': 0.35; 'point.': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'version': 0.36; 'described': 0.36; 'replies': 0.36; 'method': 0.36; 'thanks': 0.36; 'similar': 0.36; 'url:org': 0.36; 'should': 0.36; 'error.': 0.37; 'skip:- 20': 0.37; 'performance': 0.37; 'being': 0.38; 'skip:& 10': 0.38; 'thank': 0.38; 'to:addr:python-list': 0.38; 'issue': 0.38; 'recent': 0.39; 'ability': 0.39; 'to:addr:python.org': 0.39; 'skip:p 20': 0.39; 'skip:u 10': 0.60; 'improved': 0.60; 'new': 0.61; 'numbers': 0.61; 'range': 0.61; 'simple': 0.61; 'name': 0.63; 'chance': 0.65; 'account': 0.65; 'temporary': 0.65; 'book,': 0.68; 'skip:r 40': 0.68; 'results': 0.69; 'sports': 0.69; 'estimation': 0.84; 'execution.': 0.84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=ujYZB7YHoA+kqSLpyNYNxTctOUK+dXihiwV/VCPifhw=; b=WhqW3zDQf1ixjLKChcHvhiKtGSSTx3wOwOY/qIoIXDvY4z9b+84oZCSwgSjokQAypF dqVubzwOLrUpheUm5gLTPaXEWel4/LHkZWNeOvY5a0Fen6HryJB34UKS2S+rKU1GKisY mrtWRaYB8+1IEJ/7OlHPJCbPlrTs43qb/Six+ooLS4Ufr8gVKbyPu4MWFdSdiE3oV5SM vh5Pp0L0VFr/sz4jQ8RHwradsbV4E73qgf1QqfhVDyGqv9LSwOc4/X4JFRcM6AiGw6Cp tk+G2hjPgIl0gTeYAEYQ7+3t3IHPwyWchjBgkTsMf+iNrAjQ2Cak+h0Go5+1y3k5Ay1Q do5g== MIME-Version: 1.0 X-Received: by 10.58.132.203 with SMTP id ow11mr14982631veb.1.1390319040098; Tue, 21 Jan 2014 07:44:00 -0800 (PST) Date: Tue, 21 Jan 2014 07:44:00 -0800 Subject: ANN: rom 0.25.0 - Redis object mapper for Python From: Josiah Carlson To: python-list@python.org, Python-announce-list@python.org Content-Type: multipart/alternative; boundary=047d7b66f00f8277ab04f07ce05a X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 172 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1390319049 news.xs4all.nl 2949 [2001:888:2000:d::a6]:49379 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:64425 --047d7b66f00f8277ab04f07ce05a Content-Type: text/plain; charset=ISO-8859-1 Hey everyone, Big change today: rom now supports fast prefix, suffix, and pattern match queries over your data. The method is based on the autocomplete process described in my book, Redis in Action The "rom" package is a Redis object mapper for Python. It sports an interface similar to Django's ORM, SQLAlchemy + Elixir, or Appengine's datastore. The changelog for recent releases can be seen below my signature. You can find the package at: https://www.github.com/josiahcarlson/rom https://pypi.python.org/pypi/rom And docs can be found at: http://pythonhosted.org/rom/ Please CC me on any replies if you have any questions or comments. Thank you, - Josiah #---------------------------------- 0.25.0 ----------------------------------- [changed] version numbers to account for bugfixes vs. feature updates. [added] columns can now be defined to allow for prefix and/or suffix queries. Enabling prefix queries also enables arbitrary pattern matching over your data. [fixed] in some cases, rom would allow the definition of multiple primary keys, of which only one would ever be used (inconsistently). This will now result in an error. [changed] defaulted to assume Lua is available on Redis, which has been released for over 15 months at this point. You can disable support via a call to rom._disable_lua_writes(). [added] the ability to cache and get the key that holds the result of a query, which can be used for pagination, etc. See: Query.cached_result() [warning] using rom versions of 0.23 with 0.25.0 when prefix and suffix indexes are enabled can result in improper results from prefix, suffix, and/or pattern queries, and can result in orphan data living in prefix or suffix indexes. Upgrade all of your clients! [changed] temporary keys for queries are now prefixed with the name of the model over which queries are being executed on. This should effect basically zero people, but can allow for query cleanup in the off chance of a failure during execution. #----------------------------- 0.23 (unreleased) ----------------------------- [changed] reduced number of round trips for single-filter queries by 1, thanks to https://github.com/MickeyKim for the report. #----------------------------------- 0.22 ------------------------------------ [fixed] size estimation for intersection ordering when filtering has now been fixed, thank you to https://github.com/MickeyKim for the report and the change (should improve performance). [fixed] an issue with some types when trying to update attributes has now been fixed, thank you to https://github.com/denisvolokh for the report. [changed] improved performance for simple numeric range queries of the form Model.get_by(attr=value) or Model.get_by(attr=(min, max)) by roughly a factor of 60x or better in some cases. Thank you to https://github.com/MickeyKim for the report on poor performance. #----------------------------------- 0.21 ------------------------------------ [fixed] upload for rom 0.20 was missing new columns.py, now fixed --047d7b66f00f8277ab04f07ce05a Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hey everyone,

Big cha= nge today: rom now supports fast prefix, suffix, and pattern match queries = over your data. The method is based on the autocomplete process described i= n my book, Redis in Action

The "rom" package is a Redis object mapper for Python. = It sports an interface similar to Django's ORM, SQLAlchemy + Elixir, or= Appengine's datastore.

The changelog for recent release= s can be seen below my signature.

Y= ou can find the package at:
https://= www.github.com/josiahcarlson/rom
= https://pypi.python.org/pypi/rom

And do= cs can be found at:
http://= pythonhosted.org/rom/

Please CC me on any replies if you have any questions or comments.
<= br>Thank you,
=A0-=A0J= osiah

#---------------------------------- 0.25.0 -----------------= ------------------
[changed] version numbers to account for bugfi= xes vs. feature updates.
[added] columns can now be defined to al= low for prefix and/or suffix queries.
=A0 =A0 Enabling prefix queries also enables arbitrary pattern matchin= g over your
=A0 =A0 data.
[fixed] in some cases, rom wo= uld allow the definition of multiple primary
=A0 =A0 keys, of whi= ch only one would ever be used (inconsistently). This will now
=A0 =A0 result in an error.
[changed] defaulted to assume Lu= a is available on Redis, which has been
=A0 =A0 released for over= 15 months at this point. You can disable support via
=A0 =A0 a c= all to rom._disable_lua_writes().
[added] the ability to cache and get the key that holds the result of = a query,
=A0 =A0 which can be used for pagination, etc. See: Quer= y.cached_result()
[warning] using rom versions of 0.23 with 0.25.= 0 when prefix and suffix
=A0 =A0 indexes are enabled can result in improper results from prefix= , suffix,
=A0 =A0 and/or pattern queries, and can result in orpha= n data living in prefix or
=A0 =A0 suffix indexes. Upgrade all of= your clients!
[changed] temporary keys for queries are now prefixed with the name of= the
=A0 =A0 model over which queries are being executed on. This= should effect
=A0 =A0 basically zero people, but can allow for q= uery cleanup in the off chance
=A0 =A0 of a failure during execution.
#--------------------= --------- 0.23 (unreleased) -----------------------------
[change= d] reduced number of round trips for single-filter queries by 1, thanks
=A0 =A0 to https://github.com= /MickeyKim for the report.
#----------------------= ------------- 0.22 ------------------------------------
[fixed] s= ize estimation for intersection ordering when filtering has now been
=A0 =A0 fixed, thank you to=A0https://github.com/MickeyKim=A0for the report and th= e
=A0 =A0 change (should improve performance).
[fixed] = an issue with some types when trying to update attributes has now been
=A0 =A0 fixed, thank you to=A0https://github.com/denisvolokh=A0for the report.
[changed] improved performance for simple numeric range queries of= the form
=A0 =A0 Model.get_by(attr=3Dvalue) or Model.get_by(attr=3D(min, max)) = by roughly a
=A0 =A0 factor of 60x or better in some cases. Thank= you to
=A0 =A0=A0https://github.com/MickeyKim=A0for the report on poor perfo= rmance.
#----------------------------------- 0.21 ----------------------= --------------
[fixed] upload for=A0rom= =A00.20 was missing new columns.py, now fixed

--047d7b66f00f8277ab04f07ce05a--