diff --git a/VERSION b/VERSION index ece61c6..f9cbc01 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.6 \ No newline at end of file +1.0.7 \ No newline at end of file diff --git a/changelog.txt b/changelog.txt index 55d432f..c830185 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,6 @@ +#----------------------------------- 1.0.7 ----------------------------------- +[fixed] searching by unique indexonly columns; previously would try to use the + useless "to_redis" on the column type, which returns none. #----------------------------------- 1.0.6 ----------------------------------- [added] IndexOnly columns can now have unique indexes generated via keygen. #----------------------------------- 1.0.5 ----------------------------------- diff --git a/docs/.buildinfo b/docs/.buildinfo index a316ae2..3184569 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: b1734d745f1e685bf396d6435dc11550 +config: 0699c0e9fb1498ca1e44aa547f427644 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 44f03f2..a872429 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.0.6', + VERSION: '1.0.7', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/_static/jquery-1.11.1.js b/docs/_static/jquery-1.11.1.js index b552207..d4b67f7 100644 --- a/docs/_static/jquery-1.11.1.js +++ b/docs/_static/jquery-1.11.1.js @@ -3898,7 +3898,7 @@ jQuery.fn.extend({ elem = this[0], attrs = elem && elem.attributes; - // Special expectations of .data basically thwart jQuery.access, + // Special expections of .data basically thwart jQuery.access, // so implement the relevant behavior ourselves // Gets all values @@ -6011,7 +6011,7 @@ function actualDisplay( name, doc ) { // getDefaultComputedStyle might be reliably used only on attached element display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - // Use of this method is a temporary fix (more like optimization) until something better comes along, + // Use of this method is a temporary fix (more like optmization) until something better comes along, // since it was removed from specification and supported only in FF style.display : jQuery.css( elem[ 0 ], "display" ); @@ -6670,7 +6670,7 @@ jQuery.extend({ value += "px"; } - // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, // but it would mean to define eight (for every problematic property) identical functions if ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { style[ name ] = "inherit"; @@ -8135,7 +8135,7 @@ if ( !support.style ) { get: function( elem ) { // Return undefined in the case of empty string // Note: IE uppercases css property names, but if we were to .toLowerCase() - // .cssText, that would destroy case sensitivity in URL's, like in "background" + // .cssText, that would destroy case senstitivity in URL's, like in "background" return elem.style.cssText || undefined; }, set: function( elem, value ) { diff --git a/docs/columns.html b/docs/columns.html index ffbd4f7..0e35ebb 100644 --- a/docs/columns.html +++ b/docs/columns.html @@ -5,7 +5,7 @@ - columns Module — rom 1.0.6 documentation + columns Module — rom 1.0.7 documentation @@ -33,7 +33,7 @@

Navigation

  • previous |
  • - + @@ -140,7 +140,7 @@

    Navigation

    keygen will be used for both the regular index as well as the prefix and/or suffix searches

  • If prefix is set, you can perform pattern matches over your data. -See documention on Query.like() for details.

  • +See documentation on Query.like() for details.

  • Pattern matching over data is only guaranteed to be valid or correct for ANSI strings that do not include nulls, though we make an effort to support unicode strings and strings with embedded nulls

  • @@ -641,7 +641,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/exceptions.html b/docs/exceptions.html index 9b8a4b8..acdc802 100644 --- a/docs/exceptions.html +++ b/docs/exceptions.html @@ -5,7 +5,7 @@ - exceptions Module — rom 1.0.6 documentation + exceptions Module — rom 1.0.7 documentation @@ -33,7 +33,7 @@

    Navigation

  • previous |
  • - + @@ -197,7 +197,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/genindex.html b/docs/genindex.html index 5944a5c..9c9cfdc 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -4,7 +4,7 @@ - Index — rom 1.0.6 documentation + Index — rom 1.0.7 documentation @@ -24,7 +24,7 @@

    Navigation

  • modules |
  • - + @@ -553,7 +553,7 @@

    Navigation

  • modules |
  • - + diff --git a/docs/index.html b/docs/index.html index e36b4da..db6b48d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,7 +5,7 @@ - Welcome to the documentation for the Redis object Mapper — rom 1.0.6 documentation + Welcome to the documentation for the Redis object Mapper — rom 1.0.7 documentation @@ -29,7 +29,7 @@

    Navigation

  • next |
  • - + @@ -202,7 +202,7 @@

    Navigation

  • next |
  • - + diff --git a/docs/indexm.html b/docs/indexm.html index f728c93..2a3be00 100644 --- a/docs/indexm.html +++ b/docs/indexm.html @@ -5,7 +5,7 @@ - index Module — rom 1.0.6 documentation + index Module — rom 1.0.7 documentation @@ -33,7 +33,7 @@

    Navigation

  • previous |
  • - + @@ -343,7 +343,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/model.html b/docs/model.html index 56b5fa5..08b996c 100644 --- a/docs/model.html +++ b/docs/model.html @@ -5,7 +5,7 @@ - model Module — rom 1.0.6 documentation + model Module — rom 1.0.7 documentation @@ -33,7 +33,7 @@

    Navigation

  • previous |
  • - + @@ -105,7 +105,7 @@

    Navigation

    Note

    If one or more of the column values on an entity that is part of a -unique constrant is None in Python, the unique constraint won’t apply. +unique constraint is None in Python, the unique constraint won’t apply. This is the typical behavior of nulls in unique constraints inside both MySQL and Postgres.

    @@ -289,7 +289,7 @@

    Navigation

    the client on read + display. Or better yet; stick to integers.

  • refresh_entities - will refresh the entity data on transfer if True-ish

  • -
  • refresh_index - will refresh the update any relevant indexs after +

  • refresh_index - will refresh the update any relevant indexes after the transfer, if True-ish; implies refresh_entities

  • @@ -405,7 +405,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/objects.inv b/docs/objects.inv index 0058cb0..7a787fe 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/py-modindex.html b/docs/py-modindex.html index f207abc..65b6454 100644 --- a/docs/py-modindex.html +++ b/docs/py-modindex.html @@ -4,7 +4,7 @@ - Python Module Index — rom 1.0.6 documentation + Python Module Index — rom 1.0.7 documentation @@ -27,7 +27,7 @@

    Navigation

  • modules |
  • - + @@ -116,7 +116,7 @@

    Navigation

  • modules |
  • - + diff --git a/docs/query.html b/docs/query.html index 9f104b0..62c8843 100644 --- a/docs/query.html +++ b/docs/query.html @@ -5,7 +5,7 @@ - query Module — rom 1.0.6 documentation + query Module — rom 1.0.7 documentation @@ -33,7 +33,7 @@

    Navigation

  • previous |
  • - + @@ -348,7 +348,7 @@

    Navigation

    If you use the _namedtuple_data_factory, and your columns include underscore prefixes, they will be stripped. If this results in a name collision, you will get an exception. If you want -differerent behavior, write your own 20 line factory function that +different behavior, write your own 20 line factory function that does exactly what you want, and pass it; they are really easy!

    @@ -451,7 +451,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/rom.html b/docs/rom.html index 9f7231d..48b861d 100644 --- a/docs/rom.html +++ b/docs/rom.html @@ -5,7 +5,7 @@ - rom Package — rom 1.0.6 documentation + rom Package — rom 1.0.7 documentation @@ -33,7 +33,7 @@

    Navigation

  • previous |
  • - + @@ -198,7 +198,7 @@

    Expiring models/TTLsInstead, if you create a new expire_at float column with index=True, the column can store when the entity is to expire. Then to expire the data, you can use: Model.query.filter(expire_at=(0, time.time())).limit(10) to (for -example) get up to the 10 oldest entites that need to be expired.

    +example) get up to the 10 oldest entities that need to be expired.

    Now, I know what you are thinking. You are thinking, “but I wish the data would just go away on its own.” And I don’t disagree. But for that to happen, Redis needs to grow Lua-script triggers, or you need to run a separate daemon to @@ -311,7 +311,7 @@

    Expiring models/TTLsindex as well as the prefix and/or suffix searches

  • If prefix is set, you can perform pattern matches over your data. -See documention on Query.like() for details.

  • +See documentation on Query.like() for details.

  • Pattern matching over data is only guaranteed to be valid or correct for ANSI strings that do not include nulls, though we make an effort to support unicode strings and strings with embedded nulls

  • @@ -606,7 +606,7 @@

    Expiring models/TTLs

    Where FULL_TEXT would transform a sentence like “A Simple Sentence” into an inverted index searchable by the words “a”, “simple”, and/or “sentence”, -IDENTITY will only be searchable by the orginal full sentence with the +IDENTITY will only be searchable by the original full sentence with the same capitalization - “A Simple Sentence”. See IDENTITY_CI for the same function, only case-insensitive.

    @@ -794,7 +794,7 @@

    Expiring models/TTLs

    Note

    If one or more of the column values on an entity that is part of a -unique constrant is None in Python, the unique constraint won’t apply. +unique constraint is None in Python, the unique constraint won’t apply. This is the typical behavior of nulls in unique constraints inside both MySQL and Postgres.

    @@ -952,7 +952,7 @@

    Expiring models/TTLs
  • refresh_entities - will refresh the entity data on transfer if True-ish

  • -
  • refresh_index - will refresh the update any relevant indexs after +

  • refresh_index - will refresh the update any relevant indexes after the transfer, if True-ish; implies refresh_entities

  • @@ -1402,7 +1402,7 @@

    Expiring models/TTLsIf you use the _namedtuple_data_factory, and your columns include underscore prefixes, they will be stripped. If this results in a name collision, you will get an exception. If you want -differerent behavior, write your own 20 line factory function that +different behavior, write your own 20 line factory function that does exactly what you want, and pass it; they are really easy!

    @@ -1653,7 +1653,7 @@

    Navigation

  • previous |
  • - + diff --git a/docs/search.html b/docs/search.html index d23a786..db90063 100644 --- a/docs/search.html +++ b/docs/search.html @@ -4,7 +4,7 @@ - Search — rom 1.0.6 documentation + Search — rom 1.0.7 documentation @@ -30,7 +30,7 @@

    Navigation

  • modules |
  • - + @@ -90,7 +90,7 @@

    Navigation

  • modules |
  • - + diff --git a/docs/searchindex.js b/docs/searchindex.js index dbf8dc4..006296f 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["columns", "exceptions", "index", "indexm", "model", "query", "rom", "util"], "filenames": ["columns.rst", "exceptions.rst", "index.rst", "indexm.rst", "model.rst", "query.rst", "rom.rst", "util.rst"], "titles": ["columns Module", "exceptions Module", "Welcome to the documentation for the Redis object Mapper", "index Module", "model Module", "query Module", "rom Package", "util Module"], "terms": {"rom": [0, 1, 3, 4, 5, 7], "redi": [0, 1, 3, 4, 5, 6, 7], "object": [0, 1, 3, 4, 5, 6], "mapper": [0, 3, 4, 5, 6, 7], "python": [0, 3, 4, 5, 6, 7], "copyright": [0, 3, 4, 5, 6, 7], "2013": [0, 3, 4, 5, 6, 7], "2016": [0, 3, 5, 6], "josiah": [0, 3, 4, 5, 6, 7], "carlson": [0, 3, 4, 5, 6, 7], "releas": [0, 3, 4, 5, 6, 7], "under": [0, 3, 4, 5, 6, 7], "lgpl": [0, 3, 4, 5, 6, 7], "licens": [0, 3, 4, 5, 6, 7], "version": [0, 3, 4, 5, 6, 7], "2": [0, 3, 4, 5, 6, 7], "1": [0, 3, 4, 5, 6, 7], "3": [0, 3, 4, 5, 6, 7], "you": [0, 1, 3, 4, 5, 6, 7], "can": [0, 3, 4, 5, 6, 7], "choos": [0, 3, 4, 5, 6, 7], "which": [0, 3, 4, 5, 6, 7], "d": [0, 3, 4, 5, 6, 7], "like": [0, 3, 4, 5, 6, 7], "bound": [0, 3, 4, 5, 6, 7], "class": [0, 1, 3, 4, 5, 6, 7], "boolean": [0, 2, 4, 6], "requir": [0, 1, 4, 5, 6, 7], "fals": [0, 4, 5, 6, 7], "default": [0, 3, 4, 5, 6, 7], "uniqu": [0, 4, 6, 7], "index": [0, 2, 4, 5, 6], "keygen": [0, 6, 7], "none": [0, 3, 4, 5, 6, 7], "prefix": [0, 2, 3, 4, 5, 6, 7], "suffix": [0, 2, 3, 4, 5, 6], "keygen2": [0, 6], "base": [0, 1, 3, 4, 5, 6, 7], "us": [0, 1, 2, 3, 4, 5, 6], "all": [0, 1, 3, 4, 5, 6, 7], "standard": [0, 6, 7], "argument": [0, 1, 3, 4, 5, 6, 7], "support": [0, 2, 4], "see": [0, 3, 5, 6, 7], "detail": [0, 4, 5, 6], "valu": [0, 1, 4, 5, 6, 7], "pass": [0, 1, 3, 4, 5, 6, 7], "creation": [0, 1, 4, 6, 7], "ar": [0, 1, 3, 4, 5, 6, 7], "cast": [0, 6], "via": [0, 4, 6, 7], "bool": [0, 6], "except": [0, 2, 5, 6, 7], "behav": [0, 5, 6], "though": [0, 6], "wa": [0, 3, 4, 5, 6, 7], "miss": [0, 6], "ani": [0, 3, 4, 5, 6, 7], "exist": [0, 3, 4, 6], "data": [0, 1, 3, 4, 5, 6, 7], "i": [0, 1, 2, 3, 4, 5, 7], "consid": [0, 6], "empti": [0, 6], "true": [0, 1, 4, 5, 6, 7], "otherwis": [0, 4, 6], "mymodel": [0, 3, 4, 5, 6, 7], "model": [0, 1, 2, 3, 5, 7], "col": [0, 4, 5, 6, 7], "queri": [0, 1, 2, 3, 4, 6, 7], "get_bi": [0, 1, 4, 5, 6], "filter": [0, 1, 3, 4, 5, 6, 7], "work": [0, 3, 4, 6, 7], "expect": [0, 5, 6], "when": [0, 1, 4, 5, 6, 7], "sortabl": [0, 6], "handl": [0, 3, 4, 6, 7], "convers": [0, 6], "from": [0, 1, 3, 4, 5, 6, 7], "string": [0, 2, 3, 4, 5, 6, 7], "store": [0, 4, 5, 6, 7], "metadata": [0, 6], "about": [0, 3, 6, 7], "indic": [0, 3, 4, 6, 7], "etc": [0, 4, 5, 6], "note": [0, 3, 4, 5, 6, 7], "heavi": [0, 6], "whenev": [0, 6, 7], "read": [0, 3, 4, 6, 7], "written": [0, 6, 7], "must": [0, 4, 5, 6, 7], "go": [0, 4, 6], "through": [0, 5, 6, 7], "descriptor": [0, 6], "process": [0, 3, 4, 5, 6], "thi": [0, 3, 4, 5, 6, 7], "primarili": [0, 6, 7], "so": [0, 4, 5, 6, 7], "exampl": [0, 4, 5, 6, 7], "try": [0, 1, 5, 6], "write": [0, 4, 5, 6], "decim": [0, 2, 4, 5, 6], "float": [0, 2, 4, 5, 6, 7], "get": [0, 2, 4, 5, 7], "an": [0, 1, 3, 4, 5, 6, 7], "error": [0, 1, 6, 7], "moment": [0, 6], "do": [0, 5, 6, 7], "some": [0, 4, 5, 6, 7], "time": [0, 2, 4, 5, 6, 7], "later": [0, 4, 6, 7], "save": [0, 1, 4, 6, 7], "still": [0, 6], "caus": [0, 6, 7], "dure": [0, 3, 4, 5, 6, 7], "determin": [0, 6], "whether": [0, 5, 6], "either": [0, 4, 5, 6, 7], "callabl": [0, 6], "simpl": [0, 2, 4, 6, 7], "provid": [0, 1, 3, 4, 5, 6, 7], "enabl": [0, 4, 5, 6, 7], "unicod": [0, 6, 7], "integ": [0, 2, 4, 5, 6], "allow": [0, 5, 6], "distinct": [0, 1, 6], "email": [0, 5, 6], "address": [0, 5, 6], "user": [0, 4, 5, 6, 7], "numer": [0, 3, 4, 5, 6], "Will": [0, 4, 5, 6, 7], "creat": [0, 4, 5, 6, 7], "zset": [0, 3, 5, 6], "full": [0, 4, 6, 7], "word": [0, 3, 5, 6, 7], "search": [0, 2, 3, 5, 6, 7], "If": [0, 3, 4, 5, 6, 7], "other": [0, 1, 4, 5, 6], "custom": [0, 6], "rememb": [0, 6], "function": [0, 5, 6, 7], "take": [0, 5, 6, 7], "your": [0, 1, 3, 4, 5, 6, 7], "": [0, 4, 5, 6, 7], "return": [0, 3, 4, 5, 6, 7], "want": [0, 3, 4, 5, 6, 7], "doc": [0, 3, 6], "what": [0, 2, 3, 5, 7], "kind": [0, 6], "name": [0, 3, 4, 5, 6, 7], "dict": [0, 5, 6], "repres": [0, 4, 6], "current": [0, 4, 6], "entiti": [0, 1, 4, 5, 6, 7], "complet": [0, 4, 6], "multi": [0, 4, 6], "text": [0, 2, 3, 6, 7], "gener": [0, 3, 6, 7], "list": [0, 3, 4, 5, 6, 7], "result": [0, 3, 4, 5, 6], "match": [0, 3, 5, 6], "autocomplet": [0, 3, 6], "over": [0, 3, 4, 5, 6, 7], "startswith": [0, 5, 6], "same": [0, 1, 4, 6, 7], "context": [0, 6], "individu": [0, 4, 6], "revers": [0, 6], "need": [0, 4, 5, 6], "make": [0, 4, 5, 6], "sure": [0, 6], "conceptu": [0, 6], "sens": [0, 6], "befor": [0, 3, 5, 6, 7], "being": [0, 6, 7], "endswith": [0, 5, 6], "onli": [0, 4, 5, 6, 7], "defin": [0, 4, 5, 6], "non": [0, 2, 3, 6], "have": [0, 3, 4, 5, 6, 7], "disabl": [0, 6, 7], "lua": [0, 2, 3, 4], "most": [0, 5, 6], "one": [0, 1, 3, 4, 5, 6, 7], "each": [0, 3, 6, 7], "mutual": [0, 6], "exclus": [0, 6, 7], "The": [0, 3, 4, 5, 6, 7], "how": [0, 6], "reason": [0, 6, 7], "sensibl": [0, 6], "conveni": [0, 6], "option": [0, 4, 5, 6], "set": [0, 2, 3, 5, 6], "construct": [0, 1, 6], "val": [0, 4, 6, 7], "both": [0, 4, 5, 6, 7], "regular": [0, 6], "well": [0, 6], "perform": [0, 3, 4, 5, 6, 7], "pattern": [0, 2, 3, 5, 6], "document": [0, 3, 7], "guarante": [0, 6], "valid": [0, 1, 6], "correct": [0, 1, 6, 7], "ansi": [0, 6], "includ": [0, 5, 6], "null": [0, 4, 6], "we": [0, 3, 5, 6, 7], "effort": [0, 6], "embed": [0, 6], "within": [0, 6], "script": [0, 3, 6], "mai": [0, 4, 6, 7], "substanti": [0, 4, 6], "execut": [0, 4, 5, 6], "larg": [0, 6], "number": [0, 3, 4, 5, 6, 7], "entri": [0, 3, 6], "possibl": [0, 6], "attempt": [0, 1, 4, 6], "wildcard": [0, 5, 6], "limit": [0, 4, 5, 6, 7], "item": [0, 3, 4, 5, 6, 7], "scan": [0, 3, 6, 7], "A": [0, 3, 4, 6, 7], "start": [0, 2, 3, 4, 5, 7], "abl": [0, 4, 6], "entir": [0, 6], "aka": [0, 6], "expens": [0, 6], "There": [0, 6, 7], "type": [0, 1, 4, 5, 6], "simple_ci": [0, 2, 6, 7], "sort": [0, 3, 4, 5, 6, 7], "order_bi": [0, 3, 5, 6, 7], "x": [0, 4, 6], "http": [0, 6, 7], "josiahcarlson": [0, 6, 7], "github": [0, 6, 7], "io": [0, 6], "util": [0, 2, 6], "html": [0, 6], "ident": [0, 2, 6, 7], "identity_ci": [0, 2, 6, 7], "equal": [0, 5, 6, 7], "full_text": [0, 2, 6, 7], "bag": [0, 6], "invert": [0, 3, 6, 7], "To": [0, 4, 6, 7], "those": [0, 4, 5, 6, 7], "further": [0, 5, 6], "add": [0, 6, 7], "whose": [0, 5, 6, 7], "semant": [0, 5, 6, 7], "follow": [0, 3, 5, 6], "pfix": [0, 6], "stuff": [0, 6], "sfix": [0, 6], "whole": [0, 6], "case": [0, 5, 6, 7], "sensit": [0, 6, 7], "insensit": [0, 6, 7], "pars": [0, 6], "out": [0, 6, 7], "date": [0, 2, 6], "datetim": [0, 2, 6], "tzinfo": [0, 6], "convert": [0, 6], "int": [0, 6], "long": [0, 4, 6], "automat": [0, 4, 6, 7], "assign": [0, 1, 4, 6], "fail": [0, 6, 7], "turn": [0, 5, 6], "load": [0, 6, 7], "foreignmodel": [0, 2, 6], "fmodel": [0, 6], "refer": [0, 6], "instanc": [0, 6, 7], "anoth": [0, 1, 4, 6], "unrel": [0, 6], "orm": [0, 1, 6], "In": [0, 6], "order": [0, 3, 4, 5, 6, 7], "mechan": [0, 6], "foreign": [0, 6], "id": [0, 3, 4, 6], "attribut": [0, 4, 5, 6, 7], "properti": [0, 4, 6, 7], "its": [0, 6, 7], "primari": [0, 1, 3, 4, 5, 6, 7], "kei": [0, 1, 3, 4, 5, 6, 7], "classmethod": [0, 4, 6], "staticmethod": [0, 6], "proper": [0, 6], "databas": [0, 6], "djangomodel": [0, 6], "dm": [0, 6], "col1": [0, 6], "foo": [0, 6], "django": [0, 4, 6], "db": [0, 4, 6, 7], "transact": [0, 4, 6], "commit": [0, 1, 4, 6, 7], "indexonli": [0, 2, 6], "doesn": [0, 4, 5, 6, 7], "t": [0, 3, 4, 5, 6, 7], "actual": [0, 3, 4, 5, 6, 7], "sai": [0, 3, 5, 6], "field": [0, 3, 6], "look": [0, 4, 6], "up": [0, 4, 6, 7], "also": [0, 3, 4, 5, 6, 7], "book": [0, 6, 7], "normal": [0, 4, 5, 6], "would": [0, 4, 6, 7], "suck": [0, 6], "But": [0, 6], "rais": [0, 1, 6], "silent": [0, 6], "ignor": [0, 5, 6, 7], "potenti": [0, 6], "delet": [0, 1, 4, 5, 6, 7], "alreadi": [0, 6, 7], "import": [0, 6, 7], "re": [0, 1, 4, 6, 7], "def": [0, 5, 6, 7], "split_email": [0, 6], "split": [0, 6, 7], "w": [0, 6], "lower": [0, 6], "elookup": [0, 6], "host": [0, 5, 6, 7], "com": [0, 4, 5, 6, 7], "ve": [0, 6, 7], "been": [0, 4, 5, 6, 7], "variat": [0, 6], "intern": [0, 4, 5, 6], "my": [0, 6, 7], "own": [0, 5, 6, 7], "thought": [0, 6], "json": [0, 2, 4, 6], "more": [0, 1, 4, 5, 6], "complic": [0, 6], "nest": [0, 6], "structur": [0, 6], "manytoon": [0, 2, 5, 6, 7], "ftabl": [0, 6], "on_delet": [0, 4, 6, 7], "while": [0, 3, 6], "doe": [0, 4, 5, 6], "onetomani": [0, 2, 4, 5, 6], "seen": [0, 6], "side": [0, 5, 6], "relationship": [0, 4, 5, 6], "asid": [0, 6], "accept": [0, 6], "four": [0, 6, 7], "action": [0, 3, 6, 7], "restrict": [0, 6, 7], "cascad": [0, 6], "othermodelnam": [0, 6], "mean": [0, 3, 4, 6, 7], "find": [0, 5, 6], "referenc": [0, 1, 6], "specif": [0, 6, 7], "rang": [0, 3, 4, 5, 6], "even": [0, 4, 6, 7], "get_related_model": 0, "inform": [0, 3, 5, 6], "thei": [0, 3, 5, 6, 7], "reli": [0, 3, 6], "properli": [0, 4, 6, 7], "fetch": [0, 4, 5, 6, 7], "two": [0, 3, 6, 7], "ha": [0, 1, 4, 5, 6], "multipl": [0, 4, 6, 7], "onetoon": [0, 2, 5, 6], "ocol": [0, 6], "modelnam": [0, 6], "behavior": [0, 4, 5, 6, 7], "five": [0, 6], "primarykei": [0, 2, 4, 6], "someth": [0, 4, 5, 6], "than": [0, 1, 4, 5, 6, 7], "omit": [0, 3, 4, 6], "saferdatetim": [0, 2, 6], "safer": [0, 6], "issu": [0, 6], "109": [0, 6], "below": [0, 5, 6], "exactli": [0, 4, 5, 6], "here": [0, 6], "str": [0, 6], "second": [0, 5, 6], "sinc": [0, 6], "unix": [0, 6], "epoch": [0, 6], "plain": [0, 3, 5, 6], "byte": [0, 6, 7], "probabl": [0, 3, 6], "corrupt": [0, 6], "wai": [0, 6, 7], "7": [0, 4, 6, 7], "lowercas": [0, 4, 6, 7], "less": [0, 6], "utf": [0, 6], "8": [0, 4, 6], "encod": [0, 6, 7], "wire": [0, 6], "affect": [0, 6], "For": [0, 3, 4, 6], "becaus": [0, 6], "singl": [0, 4, 5, 6, 7], "charact": [0, 4, 5, 6, 7], "practic": [0, 6], "timezon": [0, 6], "bulkerror": [1, 2], "ormerror": [1, 2, 6], "session": [1, 2, 4, 5, 6], "fast": [1, 4, 6], "equival": 1, "least": 1, "columnerror": [1, 2, 6], "column": [1, 2, 3, 4, 5, 6, 7], "definit": [1, 4, 5, 6, 7], "dataraceerror": [1, 2, 6, 7], "invalidoper": [1, 2, 6], "writer": [1, 6, 7], "tri": [1, 6, 7], "updat": [1, 4, 5, 6, 7], "entitydeletederror": [1, 2, 6, 7], "forc": [1, 4, 6, 7], "invalidcolumnvalu": [1, 2, 6], "wrong": [1, 6], "modifi": [1, 6, 7], "cannot": [1, 6], "missingcolumn": [1, 2, 6], "relat": [1, 6, 7], "queryerror": [1, 2, 6], "restricterror": [1, 2, 6], "uniquekeyviol": [1, 2, 6], "without": [1, 6], "packag": [2, 3], "sponsorship": 2, "avail": [2, 4, 5, 7], "why": 2, "expir": [2, 5], "ttl": 2, "modul": 2, "generalindex": [2, 3, 6], "geoindex": [2, 3, 6, 7], "geofilt": [2, 3], "estimate_work_lua": [2, 3], "redis_prefix_lua": [2, 3], "redis_writer_lua": [2, 4], "chang": [2, 3, 4, 6], "connect": [2, 4, 6], "cach": [2, 5, 6], "geo": [2, 3, 4, 5, 6], "case_insensit": [2, 6, 7], "classproperti": [2, 6, 7], "entitylock": [2, 7], "lock": [2, 7], "clean_old_index": [2, 7], "get_connect": [2, 7], "refresh_all_index": [2, 7], "refresh_indic": [2, 7], "set_connection_set": [2, 6, 7], "show_progress": [2, 7], "use_null_sess": [2, 7], "use_rom_sess": [2, 7], "page": [2, 5, 6], "namespac": [3, 4, 6, 7], "implement": [3, 6], "don": [3, 4, 5, 6, 7], "call": [3, 4, 5, 6, 7], "directli": [3, 4, 6], "instead": [3, 5, 6], "should": [3, 4, 5, 6, 7], "pre": [3, 6], "speak": [3, 6], "built": [3, 6], "hello": [3, 5, 6], "world": [3, 5, 6], "c": [3, 6], "member": [3, 6], "ad": [3, 6, 7], "sequenc": [3, 6], "intersect": [3, 6], "remov": [3, 6], "outsid": [3, 4, 6], "request": [3, 6, 7], "after": [3, 4, 5, 6, 7], "smallest": [3, 4, 6], "largest": [3, 6], "prior": [3, 6, 7], "improv": [3, 6, 7], "oper": [3, 4, 5, 6], "given": [3, 4, 6, 7], "01": [3, 6], "score": [3, 4, 6], "0": [3, 4, 5, 6, 7], "On": [3, 6], "olleh": [3, 6], "suf": [3, 6], "excut": [3, 6], "variant": [3, 6], "method": [3, 4, 5, 6, 7], "describ": [3, 6], "These": [3, 6], "ensur": [3, 5, 6, 7], "runtim": [3, 6], "proport": [3, 6], "exploit": [3, 6], "count": [3, 4, 5, 6, 7], "conn": [3, 4, 5, 6, 7], "offset": [3, 4, 5, 6], "timeout": [3, 5, 6], "appli": [3, 4, 5, 6], "form": [3, 5, 6], "min": [3, 5, 6], "max": [3, 5, 6], "between": [3, 5, 6], "inclus": [3, 6], "open": [3, 5, 6], "end": [3, 4, 5, 6, 7], "string1": [3, 5, 6], "string2": [3, 5, 6], "descend": [3, 5, 6], "technic": [3, 6], "claus": [3, 5, 6], "basic": [3, 6, 7], "comparison": [3, 6, 7], "10": [3, 5, 6], "come": [3, 6], "last": [3, 4, 5, 6], "previou": [3, 6], "maximum": [3, 6, 7], "callback": [3, 6, 7], "tupl": [3, 4, 5, 6], "alia": [3, 5, 6, 7], "attr": [3, 4, 6], "estim": 3, "total": [3, 5, 6, 7], "necessari": [3, 7], "calcul": 3, "dest": 3, "is_first": 3, "2020": [4, 7], "kwarg": [4, 5, 6, 7], "subclass": [4, 6], "As": [4, 5, 6], "email_address": [4, 6], "salt": [4, 6], "hash": [4, 6], "created_at": [4, 5, 6], "email_addrss": [4, 6], "domain": [4, 6], "flush": [4, 6, 7], "too": [4, 6], "5": [4, 5, 6, 7], "6": [4, 6], "arbitrari": [4, 6], "involv": [4, 5, 6], "access": [4, 6, 7], "86400": [4, 5, 6], "chain": [4, 6], "against": [4, 6], "were": [4, 6], "composit": [4, 6], "constraint": [4, 6], "28": [4, 6, 7], "abil": [4, 6, 7], "specifi": [4, 5, 6], "alwai": [4, 6], "unique_togeth": [4, 6], "group": [4, 6], "taken": [4, 6], "togeth": [4, 6], "successfulli": [4, 6], "almost": [4, 6], "compar": [4, 6], "sqlalchemi": [4, 6], "uniqueconstraint": [4, 6], "usag": [4, 5, 6, 7], "uniqueposit": [4, 6], "y": [4, 6], "part": [4, 5, 6], "constrant": [4, 6], "won": [4, 5, 6, 7], "typic": [4, 6], "insid": [4, 6], "mysql": [4, 6], "postgr": [4, 6], "copi": [4, 5, 6], "shallow": [4, 6], "retriev": [4, 6], "immedi": [4, 6], "does_not_endwith": [4, 6], "blocksiz": [4, 5, 6], "100": [4, 5, 6, 7], "iter": [4, 5, 6, 7], "input": [4, 6], "arg": [4, 6, 7], "exclud": [4, 6], "auto": [4, 6], "forget": [4, 6, 7], "yield": [4, 6, 7], "them": [4, 5, 6], "ll": [4, 6], "round": [4, 6, 7], "trip": [4, 6, 7], "slower": [4, 6], "does_not_startwith": [4, 6], "4": [4, 5, 6], "offer": [4, 6, 7], "25": [4, 5, 6, 7], "24": [4, 5, 6], "hour": [4, 5, 6], "_limit": [4, 6], "keyword": [4, 5, 6, 7], "pagin": [4, 5, 6], "_numer": [4, 6], "criteria": [4, 6], "first": [4, 5, 6], "explicitli": [4, 6, 7], "tell": [4, 6], "refresh": [4, 5, 6, 7], "underli": [4, 6], "to_dict": [4, 6], "api": [4, 6, 7], "transfer": [4, 6], "txn_model": [4, 6], "txn_attr": [4, 6], "decimal_plac": [4, 6], "refresh_ent": [4, 6], "refresh_index": [4, 6], "monei": [4, 6], "game": [4, 6], "particip": [4, 6], "self": [4, 6], "place": [4, 6], "right": [4, 6], "introduc": [4, 6], "binari": [4, 6], "problem": [4, 6], "small": [4, 6], "epsilon": [4, 6], "credit": [4, 6], "awai": [4, 6, 7], "client": [4, 6, 7], "displai": [4, 6], "Or": [4, 6], "better": [4, 6], "yet": [4, 6], "stick": [4, 6], "ish": [4, 6], "relev": [4, 6], "impli": [4, 6], "warn": [4, 5, 6], "magic": [4, 6], "bit": [4, 6], "64": [4, 6], "doubl": [4, 6], "53": [4, 6], "precis": [4, 6], "15": [4, 6], "16": [4, 6], "digit": [4, 6], "19": [4, 6], "maxim": [4, 6], "gold": [4, 6], "point": [4, 6, 7], "experi": [4, 6], "denomin": [4, 6], "divmod": [4, 6], "_column": [4, 6], "until": [4, 6], "exhaust": [4, 6], "pkei": 4, "udelet": 4, "old_data": 4, "is_delet": 4, "pleas": 4, "me": [4, 6, 7], "select": [5, 6], "It": [5, 6], "lot": [5, 6], "everi": [5, 6], "new": [5, 6], "old": [5, 6, 7], "cached_result": [5, 6], "where": [5, 6, 7], "posit": [5, 6], "eventu": [5, 6], "unless": [5, 6], "explicit": [5, 6, 7], "step": [5, 6], "persist": [5, 6], "command": [5, 6], "ukei": [5, 6], "gmail": [5, 6], "30": [5, 6], "xrang": [5, 6, 7], "zcard": [5, 6], "zrang": [5, 6], "99": [5, 6], "earlier": [5, 6, 7], "respect": [5, 6, 7], "locat": [5, 6], "liter": [5, 6], "scol": [5, 6], "ncol": [5, 6], "endpoint": [5, 6], "itself": [5, 6], "similar": [5, 6], "iter_result": [5, 6], "pages": [5, 6], "no_hscan": [5, 6], "reflect": [5, 6], "appropri": [5, 6], "size": [5, 6], "onc": [5, 6], "imagin": [5, 6], "And": [5, 6, 7], "let": [5, 6], "everyon": [5, 6], "contain": [5, 6, 7], "frank": [5, 6], "sign": [5, 6], "discov": [5, 6], "implicitli": [5, 6], "begin": [5, 6], "check": [5, 6, 7], "did": [5, 6], "recent": [5, 6, 7], "lon": [5, 7], "lat": [5, 7], "distanc": 5, "measur": 5, "replac": [5, 6, 7], "mostli": [5, 6, 7], "column_nam": [5, 6], "just": [5, 6, 7], "raw": [5, 6], "include_pk": [5, 6], "anywai": [5, 6], "care": [5, 6], "namedtupl": [5, 6], "decod": [5, 6], "ff": [5, 6], "_dict_data_factori": [5, 6], "append": [5, 6], "factori": [5, 6], "_dict": [5, 6], "_zip": [5, 6], "zip": [5, 6], "whatev": [5, 6], "plu": [5, 6], "_list_data_factori": [5, 6], "lowest": [5, 6, 7], "overhead": [5, 6], "abov": [5, 6], "anyth": [5, 6, 7], "_tuple_data_factori": [5, 6], "_namedtuple_data_factori": [5, 6], "underscor": [5, 6], "strip": [5, 6, 7], "collis": [5, 6], "differer": [5, 6], "20": [5, 6], "line": [5, 6], "realli": [5, 6], "easi": [5, 6], "2021": [], "sponsor": 6, "project": 6, "partli": 6, "structd": 6, "histor": 6, "help": 6, "deliveri": 6, "million": 6, "food": 6, "chownow": 6, "backend": 6, "prototyp": 6, "sever": [6, 7], "startup": 6, "made": [6, 7], "seri": 6, "thank": 6, "our": 6, "who": 6, "consum": 6, "servic": 6, "welcom": 6, "good": 6, "compani": 6, "link": 6, "found": 6, "purpos": 6, "activ": 6, "record": 6, "style": 6, "googl": 6, "appengin": 6, "datastor": 6, "build": [6, 7], "person": 6, "didn": 6, "hack": 6, "poorli": 6, "featur": 6, "b": 6, "per": [6, 7], "thread": [6, 7], "minim": [6, 7], "instal": 6, "andi": 6, "mccurdi": 6, "librari": 6, "andymccurdi": 6, "py": [6, 7], "pypi": 6, "org": 6, "compat": 6, "six": 6, "hiredi": 6, "server": [6, 7], "remot": 6, "myhost": [6, 7], "localhost": 6, "6379": 6, "deriv": 6, "32768": 6, "gen_hash": 6, "password": 6, "o": 6, "urandom": 6, "comp": 6, "sha256": 6, "digest": 6, "at_gmail": 6, "assum": [6, 7], "annoi": 6, "race": 6, "condit": 6, "retri": 6, "certain": 6, "upgrad": [6, 7], "unabl": 6, "unwil": 6, "wish": 6, "_disable_lua_writ": 6, "prevent": 6, "bug": 6, "report": 6, "pull": 6, "januari": 6, "differ": [6, 7], "stori": 6, "short": 6, "bunch": 6, "secondari": 6, "run": [6, 7], "cleanup": 6, "had": [6, 7], "That": 6, "huge": 6, "wast": 6, "antithesi": 6, "design": 6, "expire_at": 6, "Then": 6, "oldest": 6, "entit": 6, "now": 6, "know": 6, "think": 6, "disagre": 6, "happen": 6, "grow": 6, "trigger": 6, "separ": 6, "daemon": 6, "period": 6, "clean": [6, 7], "left": [6, 7], "wouldn": 6, "faster": [6, 7], "keep": [6, 7], "effici": 6, "borrow": [6, 7], "gist": [6, 7], "1561563": [6, 7], "whitespac": [6, 7], "punctuat": [6, 7], "term": [6, 7], "meant": [6, 7], "thing": [6, 7], "transform": [6, 7], "sentenc": [6, 7], "searchabl": [6, 7], "orgin": [6, 7], "capit": [6, 7], "suitabl": [6, 7], "75": [6, 7], "depend": [6, 7], "length": [6, 7], "nativ": [6, 7], "especi": [6, 7], "past": [6, 7], "7th": [6, 7], "global": 7, "constructor": 7, "give": 7, "_conn": 7, "other_attribut": 7, "monkei": 7, "patch": 7, "my_connect": 7, "pool": 7, "instanti": 7, "real": 7, "stop": 7, "basi": 7, "addit": 7, "newli": 7, "switch": 7, "back": 7, "overrid": 7, "null_sess": 7, "uncach": 7, "del": 7, "geo_index": 7, "cb": 7, "act": 7, "dictionari": 7, "could": 7, "ye": 7, "pointofinterest": 7, "tag": 7, "avg_rat": 7, "2nd": 7, "degre": 7, "50": 7, "best": 7, "restaur": 7, "mile": 7, "highest": 7, "rate": 7, "mi": 7, "independ": 7, "rather": 7, "slightli": 7, "closest": 7, "getter": 7, "setter": 7, "acquire_timeout": 7, "lock_timeout": 7, "across": 7, "owner": 7, "change_own": 7, "new_own": 7, "90": 7, "locknam": 7, "blob": 7, "master": 7, "ch11_listing_sourc": 7, "intend": 7, "block": 7, "acquir": 7, "identifi": 7, "_local": 7, "veri": 7, "dumb": 7, "expos": 7, "variabl": 7, "simultan": 7, "obj": 7, "known": 7, "obj1": 7, "obj2": 7, "entitii": 7, "again": 7, "believ": 7, "_before_delet": 7, "_after_delet": 7, "drop": 7, "sake": 7, "coher": 7, "lose": 7, "local": 7, "pk": 7, "altern": 7, "mani": 7, "possibli": 7, "track": 7, "reload": 7, "refresh_al": 7, "rollback": 7, "noth": 7, "block_siz": 7, "accident": 7, "27": 7, "reindex": 7, "progress": 7, "200": 7, "print": 7, "renew": 7, "along": 7, "outstand": 7, "job": 7, "romtest": 7, "1000": 7, "manipul": 7, "2022": 6}, "objects": {"rom": [[0, 0, 0, "-", "columns"], [1, 0, 0, "-", "exceptions"], [3, 0, 0, "-", "index"], [4, 0, 0, "-", "model"], [5, 0, 0, "-", "query"], [7, 0, 0, "-", "util"]], "rom.columns": [[0, 1, 1, "", "Boolean"], [0, 1, 1, "", "Column"], [0, 1, 1, "", "Date"], [0, 1, 1, "", "DateTime"], [0, 1, 1, "", "Decimal"], [0, 1, 1, "", "Float"], [0, 1, 1, "", "ForeignModel"], [0, 1, 1, "", "IndexOnly"], [0, 1, 1, "", "Integer"], [0, 1, 1, "", "Json"], [0, 1, 1, "", "ManyToOne"], [0, 1, 1, "", "OneToMany"], [0, 1, 1, "", "OneToOne"], [0, 1, 1, "", "PrimaryKey"], [0, 1, 1, "", "SaferDateTime"], [0, 1, 1, "", "String"], [0, 1, 1, "", "Text"], [0, 1, 1, "", "Time"]], "rom.columns.ManyToOne": [[0, 2, 1, "", "get_related_model"]], "rom.columns.OneToMany": [[0, 2, 1, "", "get_related_model"]], "rom.exceptions": [[1, 3, 1, "", "BulkError"], [1, 3, 1, "", "ColumnError"], [1, 3, 1, "", "DataRaceError"], [1, 3, 1, "", "EntityDeletedError"], [1, 3, 1, "", "InvalidColumnValue"], [1, 3, 1, "", "InvalidOperation"], [1, 3, 1, "", "MissingColumn"], [1, 3, 1, "", "ORMError"], [1, 3, 1, "", "QueryError"], [1, 3, 1, "", "RestrictError"], [1, 3, 1, "", "UniqueKeyViolation"]], "rom.index": [[3, 1, 1, "", "GeneralIndex"], [3, 1, 1, "", "GeoIndex"], [3, 4, 1, "", "Geofilter"], [3, 1, 1, "", "Pattern"], [3, 1, 1, "", "Prefix"], [3, 1, 1, "", "Suffix"], [3, 5, 1, "", "estimate_work_lua"], [3, 5, 1, "", "redis_prefix_lua"]], "rom.index.GeneralIndex": [[3, 2, 1, "", "count"], [3, 2, 1, "", "search"]], "rom.index.GeoIndex": [[3, 4, 1, "", "callback"], [3, 4, 1, "", "name"]], "rom.index.Pattern": [[3, 4, 1, "", "attr"], [3, 4, 1, "", "pattern"]], "rom.index.Prefix": [[3, 4, 1, "", "attr"], [3, 4, 1, "", "prefix"]], "rom.index.Suffix": [[3, 4, 1, "", "attr"], [3, 4, 1, "", "suffix"]], "rom.model": [[4, 1, 1, "", "Model"], [4, 5, 1, "", "redis_writer_lua"]], "rom.model.Model": [[4, 2, 1, "", "copy"], [4, 2, 1, "", "delete"], [4, 2, 1, "", "does_not_endwith"], [4, 2, 1, "", "does_not_startwith"], [4, 2, 1, "", "get"], [4, 2, 1, "", "get_by"], [4, 4, 1, "", "id"], [4, 4, 1, "", "query"], [4, 2, 1, "", "refresh"], [4, 2, 1, "", "save"], [4, 2, 1, "", "to_dict"], [4, 2, 1, "", "transfer"], [4, 2, 1, "", "update"]], "rom.query": [[5, 1, 1, "", "Query"]], "rom.query.Query": [[5, 2, 1, "", "all"], [5, 2, 1, "", "cached_result"], [5, 2, 1, "", "count"], [5, 2, 1, "", "delete"], [5, 2, 1, "", "endswith"], [5, 2, 1, "", "execute"], [5, 2, 1, "", "filter"], [5, 2, 1, "", "first"], [5, 2, 1, "", "iter_result"], [5, 2, 1, "", "like"], [5, 2, 1, "", "limit"], [5, 2, 1, "", "near"], [5, 2, 1, "", "order_by"], [5, 2, 1, "", "replace"], [5, 2, 1, "", "select"], [5, 2, 1, "", "startswith"]], "rom.util": [[7, 5, 1, "", "CASE_INSENSITIVE"], [7, 1, 1, "", "ClassProperty"], [7, 5, 1, "", "EntityLock"], [7, 5, 1, "", "FULL_TEXT"], [7, 5, 1, "", "IDENTITY"], [7, 5, 1, "", "IDENTITY_CI"], [7, 1, 1, "", "Lock"], [7, 5, 1, "", "SIMPLE"], [7, 5, 1, "", "SIMPLE_CI"], [7, 1, 1, "", "Session"], [7, 5, 1, "", "clean_old_index"], [7, 5, 1, "", "get_connection"], [7, 5, 1, "", "refresh_all_indexes"], [7, 5, 1, "", "refresh_indices"], [7, 5, 1, "", "set_connection_settings"], [7, 5, 1, "", "show_progress"], [7, 5, 1, "", "use_null_session"], [7, 5, 1, "", "use_rom_session"]], "rom.util.ClassProperty": [[7, 2, 1, "", "deleter"], [7, 2, 1, "", "getter"], [7, 2, 1, "", "setter"]], "rom.util.Lock": [[7, 2, 1, "", "acquire"], [7, 4, 1, "", "acquire_timeout"], [7, 4, 1, "", "conn"], [7, 4, 1, "", "identifier"], [7, 4, 1, "", "lock_timeout"], [7, 4, 1, "", "lockname"], [7, 2, 1, "", "refresh"], [7, 2, 1, "", "release"]], "rom.util.Session": [[7, 2, 1, "", "add"], [7, 2, 1, "", "commit"], [7, 2, 1, "", "delete"], [7, 2, 1, "", "flush"], [7, 2, 1, "", "forget"], [7, 2, 1, "", "get"], [7, 6, 1, "", "null_session"], [7, 2, 1, "", "refresh"], [7, 2, 1, "", "refresh_all"], [7, 2, 1, "", "rollback"], [7, 2, 1, "", "save"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:exception", "4": "py:attribute", "5": "py:function", "6": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "exception", "Python exception"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "function", "Python function"], "6": ["py", "property", "Python property"]}, "titleterms": {"column": 0, "modul": [0, 1, 3, 4, 5, 7], "except": 1, "welcom": 2, "document": [2, 6], "redi": 2, "object": [2, 7], "mapper": 2, "rom": [2, 6], "indic": 2, "tabl": 2, "index": [3, 7], "model": [4, 6], "queri": 5, "packag": 6, "sponsorship": 6, "avail": 6, "what": 6, "why": 6, "i": 6, "get": 6, "start": 6, "lua": 6, "support": 6, "expir": 6, "ttl": 6, "util": 7, "chang": 7, "connect": 7, "set": 7, "us": 7, "non": 7, "cach": 7, "session": 7, "geo": 7}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"columns Module": [[0, "module-rom.columns"]], "exceptions Module": [[1, "module-rom.exceptions"]], "Welcome to the documentation for the Redis object Mapper": [[2, "welcome-to-the-documentation-for-the-redis-object-mapper"]], "rom": [[2, "rom"]], "Indices and tables": [[2, "indices-and-tables"]], "index Module": [[3, "module-rom.index"]], "model Module": [[4, "module-rom.model"]], "query Module": [[5, "module-rom.query"]], "rom Package": [[6, "rom-package"]], "Sponsorships Available": [[6, "sponsorships-available"]], "Documentation": [[6, "documentation"]], "What": [[6, "what"]], "Why": [[6, "why"]], "What is available": [[6, "what-is-available"]], "Getting started": [[6, "getting-started"]], "Lua support": [[6, "lua-support"]], "Expiring models/TTLs": [[6, "expiring-models-ttls"]], "util Module": [[7, "module-rom.util"]], "Changing connection settings": [[7, "changing-connection-settings"]], "Using a non-caching session object": [[7, "using-a-non-caching-session-object"]], "Using a geo index": [[7, "using-a-geo-index"]]}, "indexentries": {"boolean (class in rom.columns)": [[0, "rom.columns.Boolean"]], "column (class in rom.columns)": [[0, "rom.columns.Column"]], "date (class in rom.columns)": [[0, "rom.columns.Date"]], "datetime (class in rom.columns)": [[0, "rom.columns.DateTime"]], "decimal (class in rom.columns)": [[0, "rom.columns.Decimal"]], "float (class in rom.columns)": [[0, "rom.columns.Float"]], "foreignmodel (class in rom.columns)": [[0, "rom.columns.ForeignModel"]], "indexonly (class in rom.columns)": [[0, "rom.columns.IndexOnly"]], "integer (class in rom.columns)": [[0, "rom.columns.Integer"]], "json (class in rom.columns)": [[0, "rom.columns.Json"]], "manytoone (class in rom.columns)": [[0, "rom.columns.ManyToOne"]], "onetomany (class in rom.columns)": [[0, "rom.columns.OneToMany"]], "onetoone (class in rom.columns)": [[0, "rom.columns.OneToOne"]], "primarykey (class in rom.columns)": [[0, "rom.columns.PrimaryKey"]], "saferdatetime (class in rom.columns)": [[0, "rom.columns.SaferDateTime"]], "string (class in rom.columns)": [[0, "rom.columns.String"]], "text (class in rom.columns)": [[0, "rom.columns.Text"]], "time (class in rom.columns)": [[0, "rom.columns.Time"]], "get_related_model() (rom.columns.manytoone method)": [[0, "rom.columns.ManyToOne.get_related_model"]], "get_related_model() (rom.columns.onetomany method)": [[0, "rom.columns.OneToMany.get_related_model"]], "module": [[0, "module-rom.columns"], [1, "module-rom.exceptions"], [3, "module-rom.index"], [4, "module-rom.model"], [5, "module-rom.query"], [7, "module-rom.util"]], "rom.columns": [[0, "module-rom.columns"]], "bulkerror": [[1, "rom.exceptions.BulkError"]], "columnerror": [[1, "rom.exceptions.ColumnError"]], "dataraceerror": [[1, "rom.exceptions.DataRaceError"]], "entitydeletederror": [[1, "rom.exceptions.EntityDeletedError"]], "invalidcolumnvalue": [[1, "rom.exceptions.InvalidColumnValue"]], "invalidoperation": [[1, "rom.exceptions.InvalidOperation"]], "missingcolumn": [[1, "rom.exceptions.MissingColumn"]], "ormerror": [[1, "rom.exceptions.ORMError"]], "queryerror": [[1, "rom.exceptions.QueryError"]], "restricterror": [[1, "rom.exceptions.RestrictError"]], "uniquekeyviolation": [[1, "rom.exceptions.UniqueKeyViolation"]], "rom.exceptions": [[1, "module-rom.exceptions"]], "generalindex (class in rom.index)": [[3, "rom.index.GeneralIndex"]], "geoindex (class in rom.index)": [[3, "rom.index.GeoIndex"]], "geofilter (in module rom.index)": [[3, "rom.index.Geofilter"]], "pattern (class in rom.index)": [[3, "rom.index.Pattern"]], "prefix (class in rom.index)": [[3, "rom.index.Prefix"]], "suffix (class in rom.index)": [[3, "rom.index.Suffix"]], "attr (rom.index.pattern attribute)": [[3, "rom.index.Pattern.attr"]], "attr (rom.index.prefix attribute)": [[3, "rom.index.Prefix.attr"]], "attr (rom.index.suffix attribute)": [[3, "rom.index.Suffix.attr"]], "callback (rom.index.geoindex attribute)": [[3, "rom.index.GeoIndex.callback"]], "count() (rom.index.generalindex method)": [[3, "rom.index.GeneralIndex.count"]], "estimate_work_lua() (in module rom.index)": [[3, "rom.index.estimate_work_lua"]], "name (rom.index.geoindex attribute)": [[3, "rom.index.GeoIndex.name"]], "pattern (rom.index.pattern attribute)": [[3, "rom.index.Pattern.pattern"]], "prefix (rom.index.prefix attribute)": [[3, "rom.index.Prefix.prefix"]], "redis_prefix_lua() (in module rom.index)": [[3, "rom.index.redis_prefix_lua"]], "rom.index": [[3, "module-rom.index"]], "search() (rom.index.generalindex method)": [[3, "rom.index.GeneralIndex.search"]], "suffix (rom.index.suffix attribute)": [[3, "rom.index.Suffix.suffix"]], "model (class in rom.model)": [[4, "rom.model.Model"]], "copy() (rom.model.model method)": [[4, "rom.model.Model.copy"]], "delete() (rom.model.model method)": [[4, "rom.model.Model.delete"]], "does_not_endwith() (rom.model.model class method)": [[4, "rom.model.Model.does_not_endwith"]], "does_not_startwith() (rom.model.model class method)": [[4, "rom.model.Model.does_not_startwith"]], "get() (rom.model.model class method)": [[4, "rom.model.Model.get"]], "get_by() (rom.model.model class method)": [[4, "rom.model.Model.get_by"]], "id (rom.model.model attribute)": [[4, "rom.model.Model.id"]], "query (rom.model.model attribute)": [[4, "rom.model.Model.query"]], "redis_writer_lua() (in module rom.model)": [[4, "rom.model.redis_writer_lua"]], "refresh() (rom.model.model method)": [[4, "rom.model.Model.refresh"]], "rom.model": [[4, "module-rom.model"]], "save() (rom.model.model method)": [[4, "rom.model.Model.save"]], "to_dict() (rom.model.model method)": [[4, "rom.model.Model.to_dict"]], "transfer() (rom.model.model method)": [[4, "rom.model.Model.transfer"]], "update() (rom.model.model method)": [[4, "rom.model.Model.update"]], "query (class in rom.query)": [[5, "rom.query.Query"]], "all() (rom.query.query method)": [[5, "rom.query.Query.all"]], "cached_result() (rom.query.query method)": [[5, "rom.query.Query.cached_result"]], "count() (rom.query.query method)": [[5, "rom.query.Query.count"]], "delete() (rom.query.query method)": [[5, "rom.query.Query.delete"]], "endswith() (rom.query.query method)": [[5, "rom.query.Query.endswith"]], "execute() (rom.query.query method)": [[5, "rom.query.Query.execute"]], "filter() (rom.query.query method)": [[5, "rom.query.Query.filter"]], "first() (rom.query.query method)": [[5, "rom.query.Query.first"]], "iter_result() (rom.query.query method)": [[5, "rom.query.Query.iter_result"]], "like() (rom.query.query method)": [[5, "rom.query.Query.like"]], "limit() (rom.query.query method)": [[5, "rom.query.Query.limit"]], "near() (rom.query.query method)": [[5, "rom.query.Query.near"]], "order_by() (rom.query.query method)": [[5, "rom.query.Query.order_by"]], "replace() (rom.query.query method)": [[5, "rom.query.Query.replace"]], "rom.query": [[5, "module-rom.query"]], "select() (rom.query.query method)": [[5, "rom.query.Query.select"]], "startswith() (rom.query.query method)": [[5, "rom.query.Query.startswith"]], "case_insensitive() (in module rom.util)": [[7, "rom.util.CASE_INSENSITIVE"]], "classproperty (class in rom.util)": [[7, "rom.util.ClassProperty"]], "entitylock() (in module rom.util)": [[7, "rom.util.EntityLock"]], "full_text() (in module rom.util)": [[7, "rom.util.FULL_TEXT"]], "identity() (in module rom.util)": [[7, "rom.util.IDENTITY"]], "identity_ci() (in module rom.util)": [[7, "rom.util.IDENTITY_CI"]], "lock (class in rom.util)": [[7, "rom.util.Lock"]], "simple() (in module rom.util)": [[7, "rom.util.SIMPLE"]], "simple_ci() (in module rom.util)": [[7, "rom.util.SIMPLE_CI"]], "session (class in rom.util)": [[7, "rom.util.Session"]], "acquire() (rom.util.lock method)": [[7, "rom.util.Lock.acquire"]], "acquire_timeout (rom.util.lock attribute)": [[7, "rom.util.Lock.acquire_timeout"]], "add() (rom.util.session method)": [[7, "rom.util.Session.add"]], "clean_old_index() (in module rom.util)": [[7, "rom.util.clean_old_index"]], "commit() (rom.util.session method)": [[7, "rom.util.Session.commit"]], "conn (rom.util.lock attribute)": [[7, "rom.util.Lock.conn"]], "delete() (rom.util.session method)": [[7, "rom.util.Session.delete"]], "deleter() (rom.util.classproperty method)": [[7, "rom.util.ClassProperty.deleter"]], "flush() (rom.util.session method)": [[7, "rom.util.Session.flush"]], "forget() (rom.util.session method)": [[7, "rom.util.Session.forget"]], "get() (rom.util.session method)": [[7, "rom.util.Session.get"]], "get_connection() (in module rom.util)": [[7, "rom.util.get_connection"]], "getter() (rom.util.classproperty method)": [[7, "rom.util.ClassProperty.getter"]], "identifier (rom.util.lock attribute)": [[7, "rom.util.Lock.identifier"]], "lock_timeout (rom.util.lock attribute)": [[7, "rom.util.Lock.lock_timeout"]], "lockname (rom.util.lock attribute)": [[7, "rom.util.Lock.lockname"]], "null_session (rom.util.session property)": [[7, "rom.util.Session.null_session"]], "refresh() (rom.util.lock method)": [[7, "rom.util.Lock.refresh"]], "refresh() (rom.util.session method)": [[7, "rom.util.Session.refresh"]], "refresh_all() (rom.util.session method)": [[7, "rom.util.Session.refresh_all"]], "refresh_all_indexes() (in module rom.util)": [[7, "rom.util.refresh_all_indexes"]], "refresh_indices() (in module rom.util)": [[7, "rom.util.refresh_indices"]], "release() (rom.util.lock method)": [[7, "rom.util.Lock.release"]], "rollback() (rom.util.session method)": [[7, "rom.util.Session.rollback"]], "rom.util": [[7, "module-rom.util"]], "save() (rom.util.session method)": [[7, "rom.util.Session.save"]], "set_connection_settings() (in module rom.util)": [[7, "rom.util.set_connection_settings"]], "setter() (rom.util.classproperty method)": [[7, "rom.util.ClassProperty.setter"]], "show_progress() (in module rom.util)": [[7, "rom.util.show_progress"]], "use_null_session() (in module rom.util)": [[7, "rom.util.use_null_session"]], "use_rom_session() (in module rom.util)": [[7, "rom.util.use_rom_session"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["columns", "exceptions", "index", "indexm", "model", "query", "rom", "util"], "filenames": ["columns.rst", "exceptions.rst", "index.rst", "indexm.rst", "model.rst", "query.rst", "rom.rst", "util.rst"], "titles": ["columns Module", "exceptions Module", "Welcome to the documentation for the Redis object Mapper", "index Module", "model Module", "query Module", "rom Package", "util Module"], "terms": {"rom": [0, 1, 3, 4, 5, 7], "redi": [0, 1, 3, 4, 5, 6, 7], "object": [0, 1, 3, 4, 5, 6], "mapper": [0, 3, 4, 5, 6, 7], "python": [0, 3, 4, 5, 6, 7], "copyright": [0, 3, 4, 5, 6, 7], "2013": [0, 3, 4, 5, 6, 7], "2016": [0, 3, 5, 6], "josiah": [0, 3, 4, 5, 6, 7], "carlson": [0, 3, 4, 5, 6, 7], "releas": [0, 3, 4, 5, 6, 7], "under": [0, 3, 4, 5, 6, 7], "lgpl": [0, 3, 4, 5, 6, 7], "licens": [0, 3, 4, 5, 6, 7], "version": [0, 3, 4, 5, 6, 7], "2": [0, 3, 4, 5, 6, 7], "1": [0, 3, 4, 5, 6, 7], "3": [0, 3, 4, 5, 6, 7], "you": [0, 1, 3, 4, 5, 6, 7], "can": [0, 3, 4, 5, 6, 7], "choos": [0, 3, 4, 5, 6, 7], "which": [0, 3, 4, 5, 6, 7], "d": [0, 3, 4, 5, 6, 7], "like": [0, 3, 4, 5, 6, 7], "bound": [0, 3, 4, 5, 6, 7], "class": [0, 1, 3, 4, 5, 6, 7], "boolean": [0, 2, 4, 6], "requir": [0, 1, 4, 5, 6, 7], "fals": [0, 4, 5, 6, 7], "default": [0, 3, 4, 5, 6, 7], "uniqu": [0, 4, 6, 7], "index": [0, 2, 4, 5, 6], "keygen": [0, 6, 7], "none": [0, 3, 4, 5, 6, 7], "prefix": [0, 2, 3, 4, 5, 6, 7], "suffix": [0, 2, 3, 4, 5, 6], "keygen2": [0, 6], "base": [0, 1, 3, 4, 5, 6, 7], "us": [0, 1, 2, 3, 4, 5, 6], "all": [0, 1, 3, 4, 5, 6, 7], "standard": [0, 6, 7], "argument": [0, 1, 3, 4, 5, 6, 7], "support": [0, 2, 4], "see": [0, 3, 5, 6, 7], "detail": [0, 4, 5, 6], "valu": [0, 1, 4, 5, 6, 7], "pass": [0, 1, 3, 4, 5, 6, 7], "creation": [0, 1, 4, 6, 7], "ar": [0, 1, 3, 4, 5, 6, 7], "cast": [0, 6], "via": [0, 4, 6, 7], "bool": [0, 6], "except": [0, 2, 5, 6, 7], "behav": [0, 5, 6], "though": [0, 6], "wa": [0, 3, 4, 5, 6, 7], "miss": [0, 6], "ani": [0, 3, 4, 5, 6, 7], "exist": [0, 3, 4, 6], "data": [0, 1, 3, 4, 5, 6, 7], "i": [0, 1, 2, 3, 4, 5, 7], "consid": [0, 6], "empti": [0, 6], "true": [0, 1, 4, 5, 6, 7], "otherwis": [0, 4, 6], "mymodel": [0, 3, 4, 5, 6, 7], "model": [0, 1, 2, 3, 5, 7], "col": [0, 4, 5, 6, 7], "queri": [0, 1, 2, 3, 4, 6, 7], "get_bi": [0, 1, 4, 5, 6], "filter": [0, 1, 3, 4, 5, 6, 7], "work": [0, 3, 4, 6, 7], "expect": [0, 5, 6], "when": [0, 1, 4, 5, 6, 7], "sortabl": [0, 6], "handl": [0, 3, 4, 6, 7], "convers": [0, 6], "from": [0, 1, 3, 4, 5, 6, 7], "string": [0, 2, 3, 4, 5, 6, 7], "store": [0, 4, 5, 6, 7], "metadata": [0, 6], "about": [0, 3, 6, 7], "indic": [0, 3, 4, 6, 7], "etc": [0, 4, 5, 6], "note": [0, 3, 4, 5, 6, 7], "heavi": [0, 6], "whenev": [0, 6, 7], "read": [0, 3, 4, 6, 7], "written": [0, 6, 7], "must": [0, 4, 5, 6, 7], "go": [0, 4, 6], "through": [0, 5, 6, 7], "descriptor": [0, 6], "process": [0, 3, 4, 5, 6], "thi": [0, 3, 4, 5, 6, 7], "primarili": [0, 6, 7], "so": [0, 4, 5, 6, 7], "exampl": [0, 4, 5, 6, 7], "try": [0, 1, 5, 6], "write": [0, 4, 5, 6], "decim": [0, 2, 4, 5, 6], "float": [0, 2, 4, 5, 6, 7], "get": [0, 2, 4, 5, 7], "an": [0, 1, 3, 4, 5, 6, 7], "error": [0, 1, 6, 7], "moment": [0, 6], "do": [0, 5, 6, 7], "some": [0, 4, 5, 6, 7], "time": [0, 2, 4, 5, 6, 7], "later": [0, 4, 6, 7], "save": [0, 1, 4, 6, 7], "still": [0, 6], "caus": [0, 6, 7], "dure": [0, 3, 4, 5, 6, 7], "determin": [0, 6], "whether": [0, 5, 6], "either": [0, 4, 5, 6, 7], "callabl": [0, 6], "simpl": [0, 2, 4, 6, 7], "provid": [0, 1, 3, 4, 5, 6, 7], "enabl": [0, 4, 5, 6, 7], "unicod": [0, 6, 7], "integ": [0, 2, 4, 5, 6], "allow": [0, 5, 6], "distinct": [0, 1, 6], "email": [0, 5, 6], "address": [0, 5, 6], "user": [0, 4, 5, 6, 7], "numer": [0, 3, 4, 5, 6], "Will": [0, 4, 5, 6, 7], "creat": [0, 4, 5, 6, 7], "zset": [0, 3, 5, 6], "full": [0, 4, 6, 7], "word": [0, 3, 5, 6, 7], "search": [0, 2, 3, 5, 6, 7], "If": [0, 3, 4, 5, 6, 7], "other": [0, 1, 4, 5, 6], "custom": [0, 6], "rememb": [0, 6], "function": [0, 5, 6, 7], "take": [0, 5, 6, 7], "your": [0, 1, 3, 4, 5, 6, 7], "": [0, 4, 5, 6, 7], "return": [0, 3, 4, 5, 6, 7], "want": [0, 3, 4, 5, 6, 7], "doc": [0, 3, 6], "what": [0, 2, 3, 5, 7], "kind": [0, 6], "name": [0, 3, 4, 5, 6, 7], "dict": [0, 5, 6], "repres": [0, 4, 6], "current": [0, 4, 6], "entiti": [0, 1, 4, 5, 6, 7], "complet": [0, 4, 6], "multi": [0, 4, 6], "text": [0, 2, 3, 6, 7], "gener": [0, 3, 6, 7], "list": [0, 3, 4, 5, 6, 7], "result": [0, 3, 4, 5, 6], "match": [0, 3, 5, 6], "autocomplet": [0, 3, 6], "over": [0, 3, 4, 5, 6, 7], "startswith": [0, 5, 6], "same": [0, 1, 4, 6, 7], "context": [0, 6], "individu": [0, 4, 6], "revers": [0, 6], "need": [0, 4, 5, 6], "make": [0, 4, 5, 6], "sure": [0, 6], "conceptu": [0, 6], "sens": [0, 6], "befor": [0, 3, 5, 6, 7], "being": [0, 6, 7], "endswith": [0, 5, 6], "onli": [0, 4, 5, 6, 7], "defin": [0, 4, 5, 6], "non": [0, 2, 3, 6], "have": [0, 3, 4, 5, 6, 7], "disabl": [0, 6, 7], "lua": [0, 2, 3, 4], "most": [0, 5, 6], "one": [0, 1, 3, 4, 5, 6, 7], "each": [0, 3, 6, 7], "mutual": [0, 6], "exclus": [0, 6, 7], "The": [0, 3, 4, 5, 6, 7], "how": [0, 6], "reason": [0, 6, 7], "sensibl": [0, 6], "conveni": [0, 6], "option": [0, 4, 5, 6], "set": [0, 2, 3, 5, 6], "construct": [0, 1, 6], "val": [0, 4, 6, 7], "both": [0, 4, 5, 6, 7], "regular": [0, 6], "well": [0, 6], "perform": [0, 3, 4, 5, 6, 7], "pattern": [0, 2, 3, 5, 6], "document": [0, 3, 7], "guarante": [0, 6], "valid": [0, 1, 6], "correct": [0, 1, 6, 7], "ansi": [0, 6], "includ": [0, 5, 6], "null": [0, 4, 6], "we": [0, 3, 5, 6, 7], "effort": [0, 6], "embed": [0, 6], "within": [0, 6], "script": [0, 3, 6], "mai": [0, 4, 6, 7], "substanti": [0, 4, 6], "execut": [0, 4, 5, 6], "larg": [0, 6], "number": [0, 3, 4, 5, 6, 7], "entri": [0, 3, 6], "possibl": [0, 6], "attempt": [0, 1, 4, 6], "wildcard": [0, 5, 6], "limit": [0, 4, 5, 6, 7], "item": [0, 3, 4, 5, 6, 7], "scan": [0, 3, 6, 7], "A": [0, 3, 4, 6, 7], "start": [0, 2, 3, 4, 5, 7], "abl": [0, 4, 6], "entir": [0, 6], "aka": [0, 6], "expens": [0, 6], "There": [0, 6, 7], "type": [0, 1, 4, 5, 6], "simple_ci": [0, 2, 6, 7], "sort": [0, 3, 4, 5, 6, 7], "order_bi": [0, 3, 5, 6, 7], "x": [0, 4, 6], "http": [0, 6, 7], "josiahcarlson": [0, 6, 7], "github": [0, 6, 7], "io": [0, 6], "util": [0, 2, 6], "html": [0, 6], "ident": [0, 2, 6, 7], "identity_ci": [0, 2, 6, 7], "equal": [0, 5, 6, 7], "full_text": [0, 2, 6, 7], "bag": [0, 6], "invert": [0, 3, 6, 7], "To": [0, 4, 6, 7], "those": [0, 4, 5, 6, 7], "further": [0, 5, 6], "add": [0, 6, 7], "whose": [0, 5, 6, 7], "semant": [0, 5, 6, 7], "follow": [0, 3, 5, 6], "pfix": [0, 6], "stuff": [0, 6], "sfix": [0, 6], "whole": [0, 6], "case": [0, 5, 6, 7], "sensit": [0, 6, 7], "insensit": [0, 6, 7], "pars": [0, 6], "out": [0, 6, 7], "date": [0, 2, 6], "datetim": [0, 2, 6], "tzinfo": [0, 6], "convert": [0, 6], "int": [0, 6], "long": [0, 4, 6], "automat": [0, 4, 6, 7], "assign": [0, 1, 4, 6], "fail": [0, 6, 7], "turn": [0, 5, 6], "load": [0, 6, 7], "foreignmodel": [0, 2, 6], "fmodel": [0, 6], "refer": [0, 6], "instanc": [0, 6, 7], "anoth": [0, 1, 4, 6], "unrel": [0, 6], "orm": [0, 1, 6], "In": [0, 6], "order": [0, 3, 4, 5, 6, 7], "mechan": [0, 6], "foreign": [0, 6], "id": [0, 3, 4, 6], "attribut": [0, 4, 5, 6, 7], "properti": [0, 4, 6, 7], "its": [0, 6, 7], "primari": [0, 1, 3, 4, 5, 6, 7], "kei": [0, 1, 3, 4, 5, 6, 7], "classmethod": [0, 4, 6], "staticmethod": [0, 6], "proper": [0, 6], "databas": [0, 6], "djangomodel": [0, 6], "dm": [0, 6], "col1": [0, 6], "foo": [0, 6], "django": [0, 4, 6], "db": [0, 4, 6, 7], "transact": [0, 4, 6], "commit": [0, 1, 4, 6, 7], "indexonli": [0, 2, 6], "doesn": [0, 4, 5, 6, 7], "t": [0, 3, 4, 5, 6, 7], "actual": [0, 3, 4, 5, 6, 7], "sai": [0, 3, 5, 6], "field": [0, 3, 6], "look": [0, 4, 6], "up": [0, 4, 6, 7], "also": [0, 3, 4, 5, 6, 7], "book": [0, 6, 7], "normal": [0, 4, 5, 6], "would": [0, 4, 6, 7], "suck": [0, 6], "But": [0, 6], "rais": [0, 1, 6], "silent": [0, 6], "ignor": [0, 5, 6, 7], "potenti": [0, 6], "delet": [0, 1, 4, 5, 6, 7], "alreadi": [0, 6, 7], "import": [0, 6, 7], "re": [0, 1, 4, 6, 7], "def": [0, 5, 6, 7], "split_email": [0, 6], "split": [0, 6, 7], "w": [0, 6], "lower": [0, 6], "elookup": [0, 6], "host": [0, 5, 6, 7], "com": [0, 4, 5, 6, 7], "ve": [0, 6, 7], "been": [0, 4, 5, 6, 7], "variat": [0, 6], "intern": [0, 4, 5, 6], "my": [0, 6, 7], "own": [0, 5, 6, 7], "thought": [0, 6], "json": [0, 2, 4, 6], "more": [0, 1, 4, 5, 6], "complic": [0, 6], "nest": [0, 6], "structur": [0, 6], "manytoon": [0, 2, 5, 6, 7], "ftabl": [0, 6], "on_delet": [0, 4, 6, 7], "while": [0, 3, 6], "doe": [0, 4, 5, 6], "onetomani": [0, 2, 4, 5, 6], "seen": [0, 6], "side": [0, 5, 6], "relationship": [0, 4, 5, 6], "asid": [0, 6], "accept": [0, 6], "four": [0, 6, 7], "action": [0, 3, 6, 7], "restrict": [0, 6, 7], "cascad": [0, 6], "othermodelnam": [0, 6], "mean": [0, 3, 4, 6, 7], "find": [0, 5, 6], "referenc": [0, 1, 6], "specif": [0, 6, 7], "rang": [0, 3, 4, 5, 6], "even": [0, 4, 6, 7], "get_related_model": 0, "inform": [0, 3, 5, 6], "thei": [0, 3, 5, 6, 7], "reli": [0, 3, 6], "properli": [0, 4, 6, 7], "fetch": [0, 4, 5, 6, 7], "two": [0, 3, 6, 7], "ha": [0, 1, 4, 5, 6], "multipl": [0, 4, 6, 7], "onetoon": [0, 2, 5, 6], "ocol": [0, 6], "modelnam": [0, 6], "behavior": [0, 4, 5, 6, 7], "five": [0, 6], "primarykei": [0, 2, 4, 6], "someth": [0, 4, 5, 6], "than": [0, 1, 4, 5, 6, 7], "omit": [0, 3, 4, 6], "saferdatetim": [0, 2, 6], "safer": [0, 6], "issu": [0, 6], "109": [0, 6], "below": [0, 5, 6], "exactli": [0, 4, 5, 6], "here": [0, 6], "str": [0, 6], "second": [0, 5, 6], "sinc": [0, 6], "unix": [0, 6], "epoch": [0, 6], "plain": [0, 3, 5, 6], "byte": [0, 6, 7], "probabl": [0, 3, 6], "corrupt": [0, 6], "wai": [0, 6, 7], "7": [0, 4, 6, 7], "lowercas": [0, 4, 6, 7], "less": [0, 6], "utf": [0, 6], "8": [0, 4, 6], "encod": [0, 6, 7], "wire": [0, 6], "affect": [0, 6], "For": [0, 3, 4, 6], "becaus": [0, 6], "singl": [0, 4, 5, 6, 7], "charact": [0, 4, 5, 6, 7], "practic": [0, 6], "timezon": [0, 6], "bulkerror": [1, 2], "ormerror": [1, 2, 6], "session": [1, 2, 4, 5, 6], "fast": [1, 4, 6], "equival": 1, "least": 1, "columnerror": [1, 2, 6], "column": [1, 2, 3, 4, 5, 6, 7], "definit": [1, 4, 5, 6, 7], "dataraceerror": [1, 2, 6, 7], "invalidoper": [1, 2, 6], "writer": [1, 6, 7], "tri": [1, 6, 7], "updat": [1, 4, 5, 6, 7], "entitydeletederror": [1, 2, 6, 7], "forc": [1, 4, 6, 7], "invalidcolumnvalu": [1, 2, 6], "wrong": [1, 6], "modifi": [1, 6, 7], "cannot": [1, 6], "missingcolumn": [1, 2, 6], "relat": [1, 6, 7], "queryerror": [1, 2, 6], "restricterror": [1, 2, 6], "uniquekeyviol": [1, 2, 6], "without": [1, 6], "packag": [2, 3], "sponsorship": 2, "avail": [2, 4, 5, 7], "why": 2, "expir": [2, 5], "ttl": 2, "modul": 2, "generalindex": [2, 3, 6], "geoindex": [2, 3, 6, 7], "geofilt": [2, 3], "estimate_work_lua": [2, 3], "redis_prefix_lua": [2, 3], "redis_writer_lua": [2, 4], "chang": [2, 3, 4, 6], "connect": [2, 4, 6], "cach": [2, 5, 6], "geo": [2, 3, 4, 5, 6], "case_insensit": [2, 6, 7], "classproperti": [2, 6, 7], "entitylock": [2, 7], "lock": [2, 7], "clean_old_index": [2, 7], "get_connect": [2, 7], "refresh_all_index": [2, 7], "refresh_indic": [2, 7], "set_connection_set": [2, 6, 7], "show_progress": [2, 7], "use_null_sess": [2, 7], "use_rom_sess": [2, 7], "page": [2, 5, 6], "namespac": [3, 4, 6, 7], "implement": [3, 6], "don": [3, 4, 5, 6, 7], "call": [3, 4, 5, 6, 7], "directli": [3, 4, 6], "instead": [3, 5, 6], "should": [3, 4, 5, 6, 7], "pre": [3, 6], "speak": [3, 6], "built": [3, 6], "hello": [3, 5, 6], "world": [3, 5, 6], "c": [3, 6], "member": [3, 6], "ad": [3, 6, 7], "sequenc": [3, 6], "intersect": [3, 6], "remov": [3, 6], "outsid": [3, 4, 6], "request": [3, 6, 7], "after": [3, 4, 5, 6, 7], "smallest": [3, 4, 6], "largest": [3, 6], "prior": [3, 6, 7], "improv": [3, 6, 7], "oper": [3, 4, 5, 6], "given": [3, 4, 6, 7], "01": [3, 6], "score": [3, 4, 6], "0": [3, 4, 5, 6, 7], "On": [3, 6], "olleh": [3, 6], "suf": [3, 6], "excut": [3, 6], "variant": [3, 6], "method": [3, 4, 5, 6, 7], "describ": [3, 6], "These": [3, 6], "ensur": [3, 5, 6, 7], "runtim": [3, 6], "proport": [3, 6], "exploit": [3, 6], "count": [3, 4, 5, 6, 7], "conn": [3, 4, 5, 6, 7], "offset": [3, 4, 5, 6], "timeout": [3, 5, 6], "appli": [3, 4, 5, 6], "form": [3, 5, 6], "min": [3, 5, 6], "max": [3, 5, 6], "between": [3, 5, 6], "inclus": [3, 6], "open": [3, 5, 6], "end": [3, 4, 5, 6, 7], "string1": [3, 5, 6], "string2": [3, 5, 6], "descend": [3, 5, 6], "technic": [3, 6], "claus": [3, 5, 6], "basic": [3, 6, 7], "comparison": [3, 6, 7], "10": [3, 5, 6], "come": [3, 6], "last": [3, 4, 5, 6], "previou": [3, 6], "maximum": [3, 6, 7], "callback": [3, 6, 7], "tupl": [3, 4, 5, 6], "alia": [3, 5, 6, 7], "attr": [3, 4, 6], "estim": 3, "total": [3, 5, 6, 7], "necessari": [3, 7], "calcul": 3, "dest": 3, "is_first": 3, "2020": [4, 7], "kwarg": [4, 5, 6, 7], "subclass": [4, 6], "As": [4, 5, 6], "email_address": [4, 6], "salt": [4, 6], "hash": [4, 6], "created_at": [4, 5, 6], "email_addrss": [4, 6], "domain": [4, 6], "flush": [4, 6, 7], "too": [4, 6], "5": [4, 5, 6, 7], "6": [4, 6], "arbitrari": [4, 6], "involv": [4, 5, 6], "access": [4, 6, 7], "86400": [4, 5, 6], "chain": [4, 6], "against": [4, 6], "were": [4, 6], "composit": [4, 6], "constraint": [4, 6], "28": [4, 6, 7], "abil": [4, 6, 7], "specifi": [4, 5, 6], "alwai": [4, 6], "unique_togeth": [4, 6], "group": [4, 6], "taken": [4, 6], "togeth": [4, 6], "successfulli": [4, 6], "almost": [4, 6], "compar": [4, 6], "sqlalchemi": [4, 6], "uniqueconstraint": [4, 6], "usag": [4, 5, 6, 7], "uniqueposit": [4, 6], "y": [4, 6], "part": [4, 5, 6], "constrant": [], "won": [4, 5, 6, 7], "typic": [4, 6], "insid": [4, 6], "mysql": [4, 6], "postgr": [4, 6], "copi": [4, 5, 6], "shallow": [4, 6], "retriev": [4, 6], "immedi": [4, 6], "does_not_endwith": [4, 6], "blocksiz": [4, 5, 6], "100": [4, 5, 6, 7], "iter": [4, 5, 6, 7], "input": [4, 6], "arg": [4, 6, 7], "exclud": [4, 6], "auto": [4, 6], "forget": [4, 6, 7], "yield": [4, 6, 7], "them": [4, 5, 6], "ll": [4, 6], "round": [4, 6, 7], "trip": [4, 6, 7], "slower": [4, 6], "does_not_startwith": [4, 6], "4": [4, 5, 6], "offer": [4, 6, 7], "25": [4, 5, 6, 7], "24": [4, 5, 6], "hour": [4, 5, 6], "_limit": [4, 6], "keyword": [4, 5, 6, 7], "pagin": [4, 5, 6], "_numer": [4, 6], "criteria": [4, 6], "first": [4, 5, 6], "explicitli": [4, 6, 7], "tell": [4, 6], "refresh": [4, 5, 6, 7], "underli": [4, 6], "to_dict": [4, 6], "api": [4, 6, 7], "transfer": [4, 6], "txn_model": [4, 6], "txn_attr": [4, 6], "decimal_plac": [4, 6], "refresh_ent": [4, 6], "refresh_index": [4, 6], "monei": [4, 6], "game": [4, 6], "particip": [4, 6], "self": [4, 6], "place": [4, 6], "right": [4, 6], "introduc": [4, 6], "binari": [4, 6], "problem": [4, 6], "small": [4, 6], "epsilon": [4, 6], "credit": [4, 6], "awai": [4, 6, 7], "client": [4, 6, 7], "displai": [4, 6], "Or": [4, 6], "better": [4, 6], "yet": [4, 6], "stick": [4, 6], "ish": [4, 6], "relev": [4, 6], "impli": [4, 6], "warn": [4, 5, 6], "magic": [4, 6], "bit": [4, 6], "64": [4, 6], "doubl": [4, 6], "53": [4, 6], "precis": [4, 6], "15": [4, 6], "16": [4, 6], "digit": [4, 6], "19": [4, 6], "maxim": [4, 6], "gold": [4, 6], "point": [4, 6, 7], "experi": [4, 6], "denomin": [4, 6], "divmod": [4, 6], "_column": [4, 6], "until": [4, 6], "exhaust": [4, 6], "pkei": 4, "udelet": 4, "old_data": 4, "is_delet": 4, "pleas": 4, "me": [4, 6, 7], "select": [5, 6], "It": [5, 6], "lot": [5, 6], "everi": [5, 6], "new": [5, 6], "old": [5, 6, 7], "cached_result": [5, 6], "where": [5, 6, 7], "posit": [5, 6], "eventu": [5, 6], "unless": [5, 6], "explicit": [5, 6, 7], "step": [5, 6], "persist": [5, 6], "command": [5, 6], "ukei": [5, 6], "gmail": [5, 6], "30": [5, 6], "xrang": [5, 6, 7], "zcard": [5, 6], "zrang": [5, 6], "99": [5, 6], "earlier": [5, 6, 7], "respect": [5, 6, 7], "locat": [5, 6], "liter": [5, 6], "scol": [5, 6], "ncol": [5, 6], "endpoint": [5, 6], "itself": [5, 6], "similar": [5, 6], "iter_result": [5, 6], "pages": [5, 6], "no_hscan": [5, 6], "reflect": [5, 6], "appropri": [5, 6], "size": [5, 6], "onc": [5, 6], "imagin": [5, 6], "And": [5, 6, 7], "let": [5, 6], "everyon": [5, 6], "contain": [5, 6, 7], "frank": [5, 6], "sign": [5, 6], "discov": [5, 6], "implicitli": [5, 6], "begin": [5, 6], "check": [5, 6, 7], "did": [5, 6], "recent": [5, 6, 7], "lon": [5, 7], "lat": [5, 7], "distanc": 5, "measur": 5, "replac": [5, 6, 7], "mostli": [5, 6, 7], "column_nam": [5, 6], "just": [5, 6, 7], "raw": [5, 6], "include_pk": [5, 6], "anywai": [5, 6], "care": [5, 6], "namedtupl": [5, 6], "decod": [5, 6], "ff": [5, 6], "_dict_data_factori": [5, 6], "append": [5, 6], "factori": [5, 6], "_dict": [5, 6], "_zip": [5, 6], "zip": [5, 6], "whatev": [5, 6], "plu": [5, 6], "_list_data_factori": [5, 6], "lowest": [5, 6, 7], "overhead": [5, 6], "abov": [5, 6], "anyth": [5, 6, 7], "_tuple_data_factori": [5, 6], "_namedtuple_data_factori": [5, 6], "underscor": [5, 6], "strip": [5, 6, 7], "collis": [5, 6], "differer": [], "20": [5, 6], "line": [5, 6], "realli": [5, 6], "easi": [5, 6], "2021": [], "sponsor": 6, "project": 6, "partli": 6, "structd": 6, "histor": 6, "help": 6, "deliveri": 6, "million": 6, "food": 6, "chownow": 6, "backend": 6, "prototyp": 6, "sever": [6, 7], "startup": 6, "made": [6, 7], "seri": 6, "thank": 6, "our": 6, "who": 6, "consum": 6, "servic": 6, "welcom": 6, "good": 6, "compani": 6, "link": 6, "found": 6, "purpos": 6, "activ": 6, "record": 6, "style": 6, "googl": 6, "appengin": 6, "datastor": 6, "build": [6, 7], "person": 6, "didn": 6, "hack": 6, "poorli": 6, "featur": 6, "b": 6, "per": [6, 7], "thread": [6, 7], "minim": [6, 7], "instal": 6, "andi": 6, "mccurdi": 6, "librari": 6, "andymccurdi": 6, "py": [6, 7], "pypi": 6, "org": 6, "compat": 6, "six": 6, "hiredi": 6, "server": [6, 7], "remot": 6, "myhost": [6, 7], "localhost": 6, "6379": 6, "deriv": 6, "32768": 6, "gen_hash": 6, "password": 6, "o": 6, "urandom": 6, "comp": 6, "sha256": 6, "digest": 6, "at_gmail": 6, "assum": [6, 7], "annoi": 6, "race": 6, "condit": 6, "retri": 6, "certain": 6, "upgrad": [6, 7], "unabl": 6, "unwil": 6, "wish": 6, "_disable_lua_writ": 6, "prevent": 6, "bug": 6, "report": 6, "pull": 6, "januari": 6, "differ": [5, 6, 7], "stori": 6, "short": 6, "bunch": 6, "secondari": 6, "run": [6, 7], "cleanup": 6, "had": [6, 7], "That": 6, "huge": 6, "wast": 6, "antithesi": 6, "design": 6, "expire_at": 6, "Then": 6, "oldest": 6, "entit": [], "now": 6, "know": 6, "think": 6, "disagre": 6, "happen": 6, "grow": 6, "trigger": 6, "separ": 6, "daemon": 6, "period": 6, "clean": [6, 7], "left": [6, 7], "wouldn": 6, "faster": [6, 7], "keep": [6, 7], "effici": 6, "borrow": [6, 7], "gist": [6, 7], "1561563": [6, 7], "whitespac": [6, 7], "punctuat": [6, 7], "term": [6, 7], "meant": [6, 7], "thing": [6, 7], "transform": [6, 7], "sentenc": [6, 7], "searchabl": [6, 7], "orgin": [], "capit": [6, 7], "suitabl": [6, 7], "75": [6, 7], "depend": [6, 7], "length": [6, 7], "nativ": [6, 7], "especi": [6, 7], "past": [6, 7], "7th": [6, 7], "global": 7, "constructor": 7, "give": 7, "_conn": 7, "other_attribut": 7, "monkei": 7, "patch": 7, "my_connect": 7, "pool": 7, "instanti": 7, "real": 7, "stop": 7, "basi": 7, "addit": 7, "newli": 7, "switch": 7, "back": 7, "overrid": 7, "null_sess": 7, "uncach": 7, "del": 7, "geo_index": 7, "cb": 7, "act": 7, "dictionari": 7, "could": 7, "ye": 7, "pointofinterest": 7, "tag": 7, "avg_rat": 7, "2nd": 7, "degre": 7, "50": 7, "best": 7, "restaur": 7, "mile": 7, "highest": 7, "rate": 7, "mi": 7, "independ": 7, "rather": 7, "slightli": 7, "closest": 7, "getter": 7, "setter": 7, "acquire_timeout": 7, "lock_timeout": 7, "across": 7, "owner": 7, "change_own": 7, "new_own": 7, "90": 7, "locknam": 7, "blob": 7, "master": 7, "ch11_listing_sourc": 7, "intend": 7, "block": 7, "acquir": 7, "identifi": 7, "_local": 7, "veri": 7, "dumb": 7, "expos": 7, "variabl": 7, "simultan": 7, "obj": 7, "known": 7, "obj1": 7, "obj2": 7, "entitii": [], "again": 7, "believ": 7, "_before_delet": 7, "_after_delet": 7, "drop": 7, "sake": 7, "coher": 7, "lose": 7, "local": 7, "pk": 7, "altern": 7, "mani": 7, "possibli": 7, "track": 7, "reload": 7, "refresh_al": 7, "rollback": 7, "noth": 7, "block_siz": 7, "accident": 7, "27": 7, "reindex": 7, "progress": 7, "200": 7, "print": 7, "renew": 7, "along": 7, "outstand": 7, "job": 7, "romtest": 7, "1000": 7, "manipul": 7, "2022": 6, "origin": [6, 7]}, "objects": {"rom": [[0, 0, 0, "-", "columns"], [1, 0, 0, "-", "exceptions"], [3, 0, 0, "-", "index"], [4, 0, 0, "-", "model"], [5, 0, 0, "-", "query"], [7, 0, 0, "-", "util"]], "rom.columns": [[0, 1, 1, "", "Boolean"], [0, 1, 1, "", "Column"], [0, 1, 1, "", "Date"], [0, 1, 1, "", "DateTime"], [0, 1, 1, "", "Decimal"], [0, 1, 1, "", "Float"], [0, 1, 1, "", "ForeignModel"], [0, 1, 1, "", "IndexOnly"], [0, 1, 1, "", "Integer"], [0, 1, 1, "", "Json"], [0, 1, 1, "", "ManyToOne"], [0, 1, 1, "", "OneToMany"], [0, 1, 1, "", "OneToOne"], [0, 1, 1, "", "PrimaryKey"], [0, 1, 1, "", "SaferDateTime"], [0, 1, 1, "", "String"], [0, 1, 1, "", "Text"], [0, 1, 1, "", "Time"]], "rom.columns.ManyToOne": [[0, 2, 1, "", "get_related_model"]], "rom.columns.OneToMany": [[0, 2, 1, "", "get_related_model"]], "rom.exceptions": [[1, 3, 1, "", "BulkError"], [1, 3, 1, "", "ColumnError"], [1, 3, 1, "", "DataRaceError"], [1, 3, 1, "", "EntityDeletedError"], [1, 3, 1, "", "InvalidColumnValue"], [1, 3, 1, "", "InvalidOperation"], [1, 3, 1, "", "MissingColumn"], [1, 3, 1, "", "ORMError"], [1, 3, 1, "", "QueryError"], [1, 3, 1, "", "RestrictError"], [1, 3, 1, "", "UniqueKeyViolation"]], "rom.index": [[3, 1, 1, "", "GeneralIndex"], [3, 1, 1, "", "GeoIndex"], [3, 4, 1, "", "Geofilter"], [3, 1, 1, "", "Pattern"], [3, 1, 1, "", "Prefix"], [3, 1, 1, "", "Suffix"], [3, 5, 1, "", "estimate_work_lua"], [3, 5, 1, "", "redis_prefix_lua"]], "rom.index.GeneralIndex": [[3, 2, 1, "", "count"], [3, 2, 1, "", "search"]], "rom.index.GeoIndex": [[3, 4, 1, "", "callback"], [3, 4, 1, "", "name"]], "rom.index.Pattern": [[3, 4, 1, "", "attr"], [3, 4, 1, "", "pattern"]], "rom.index.Prefix": [[3, 4, 1, "", "attr"], [3, 4, 1, "", "prefix"]], "rom.index.Suffix": [[3, 4, 1, "", "attr"], [3, 4, 1, "", "suffix"]], "rom.model": [[4, 1, 1, "", "Model"], [4, 5, 1, "", "redis_writer_lua"]], "rom.model.Model": [[4, 2, 1, "", "copy"], [4, 2, 1, "", "delete"], [4, 2, 1, "", "does_not_endwith"], [4, 2, 1, "", "does_not_startwith"], [4, 2, 1, "", "get"], [4, 2, 1, "", "get_by"], [4, 4, 1, "", "id"], [4, 4, 1, "", "query"], [4, 2, 1, "", "refresh"], [4, 2, 1, "", "save"], [4, 2, 1, "", "to_dict"], [4, 2, 1, "", "transfer"], [4, 2, 1, "", "update"]], "rom.query": [[5, 1, 1, "", "Query"]], "rom.query.Query": [[5, 2, 1, "", "all"], [5, 2, 1, "", "cached_result"], [5, 2, 1, "", "count"], [5, 2, 1, "", "delete"], [5, 2, 1, "", "endswith"], [5, 2, 1, "", "execute"], [5, 2, 1, "", "filter"], [5, 2, 1, "", "first"], [5, 2, 1, "", "iter_result"], [5, 2, 1, "", "like"], [5, 2, 1, "", "limit"], [5, 2, 1, "", "near"], [5, 2, 1, "", "order_by"], [5, 2, 1, "", "replace"], [5, 2, 1, "", "select"], [5, 2, 1, "", "startswith"]], "rom.util": [[7, 5, 1, "", "CASE_INSENSITIVE"], [7, 1, 1, "", "ClassProperty"], [7, 5, 1, "", "EntityLock"], [7, 5, 1, "", "FULL_TEXT"], [7, 5, 1, "", "IDENTITY"], [7, 5, 1, "", "IDENTITY_CI"], [7, 1, 1, "", "Lock"], [7, 5, 1, "", "SIMPLE"], [7, 5, 1, "", "SIMPLE_CI"], [7, 1, 1, "", "Session"], [7, 5, 1, "", "clean_old_index"], [7, 5, 1, "", "get_connection"], [7, 5, 1, "", "refresh_all_indexes"], [7, 5, 1, "", "refresh_indices"], [7, 5, 1, "", "set_connection_settings"], [7, 5, 1, "", "show_progress"], [7, 5, 1, "", "use_null_session"], [7, 5, 1, "", "use_rom_session"]], "rom.util.ClassProperty": [[7, 2, 1, "", "deleter"], [7, 2, 1, "", "getter"], [7, 2, 1, "", "setter"]], "rom.util.Lock": [[7, 2, 1, "", "acquire"], [7, 4, 1, "", "acquire_timeout"], [7, 4, 1, "", "conn"], [7, 4, 1, "", "identifier"], [7, 4, 1, "", "lock_timeout"], [7, 4, 1, "", "lockname"], [7, 2, 1, "", "refresh"], [7, 2, 1, "", "release"]], "rom.util.Session": [[7, 2, 1, "", "add"], [7, 2, 1, "", "commit"], [7, 2, 1, "", "delete"], [7, 2, 1, "", "flush"], [7, 2, 1, "", "forget"], [7, 2, 1, "", "get"], [7, 6, 1, "", "null_session"], [7, 2, 1, "", "refresh"], [7, 2, 1, "", "refresh_all"], [7, 2, 1, "", "rollback"], [7, 2, 1, "", "save"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:exception", "4": "py:attribute", "5": "py:function", "6": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "exception", "Python exception"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "function", "Python function"], "6": ["py", "property", "Python property"]}, "titleterms": {"column": 0, "modul": [0, 1, 3, 4, 5, 7], "except": 1, "welcom": 2, "document": [2, 6], "redi": 2, "object": [2, 7], "mapper": 2, "rom": [2, 6], "indic": 2, "tabl": 2, "index": [3, 7], "model": [4, 6], "queri": 5, "packag": 6, "sponsorship": 6, "avail": 6, "what": 6, "why": 6, "i": 6, "get": 6, "start": 6, "lua": 6, "support": 6, "expir": 6, "ttl": 6, "util": 7, "chang": 7, "connect": 7, "set": 7, "us": 7, "non": 7, "cach": 7, "session": 7, "geo": 7}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"columns Module": [[0, "module-rom.columns"]], "exceptions Module": [[1, "module-rom.exceptions"]], "Welcome to the documentation for the Redis object Mapper": [[2, "welcome-to-the-documentation-for-the-redis-object-mapper"]], "rom": [[2, "rom"]], "Indices and tables": [[2, "indices-and-tables"]], "index Module": [[3, "module-rom.index"]], "model Module": [[4, "module-rom.model"]], "query Module": [[5, "module-rom.query"]], "rom Package": [[6, "rom-package"]], "Sponsorships Available": [[6, "sponsorships-available"]], "Documentation": [[6, "documentation"]], "What": [[6, "what"]], "Why": [[6, "why"]], "What is available": [[6, "what-is-available"]], "Getting started": [[6, "getting-started"]], "Lua support": [[6, "lua-support"]], "Expiring models/TTLs": [[6, "expiring-models-ttls"]], "util Module": [[7, "module-rom.util"]], "Changing connection settings": [[7, "changing-connection-settings"]], "Using a non-caching session object": [[7, "using-a-non-caching-session-object"]], "Using a geo index": [[7, "using-a-geo-index"]]}, "indexentries": {"boolean (class in rom.columns)": [[0, "rom.columns.Boolean"]], "column (class in rom.columns)": [[0, "rom.columns.Column"]], "date (class in rom.columns)": [[0, "rom.columns.Date"]], "datetime (class in rom.columns)": [[0, "rom.columns.DateTime"]], "decimal (class in rom.columns)": [[0, "rom.columns.Decimal"]], "float (class in rom.columns)": [[0, "rom.columns.Float"]], "foreignmodel (class in rom.columns)": [[0, "rom.columns.ForeignModel"]], "indexonly (class in rom.columns)": [[0, "rom.columns.IndexOnly"]], "integer (class in rom.columns)": [[0, "rom.columns.Integer"]], "json (class in rom.columns)": [[0, "rom.columns.Json"]], "manytoone (class in rom.columns)": [[0, "rom.columns.ManyToOne"]], "onetomany (class in rom.columns)": [[0, "rom.columns.OneToMany"]], "onetoone (class in rom.columns)": [[0, "rom.columns.OneToOne"]], "primarykey (class in rom.columns)": [[0, "rom.columns.PrimaryKey"]], "saferdatetime (class in rom.columns)": [[0, "rom.columns.SaferDateTime"]], "string (class in rom.columns)": [[0, "rom.columns.String"]], "text (class in rom.columns)": [[0, "rom.columns.Text"]], "time (class in rom.columns)": [[0, "rom.columns.Time"]], "get_related_model() (rom.columns.manytoone method)": [[0, "rom.columns.ManyToOne.get_related_model"]], "get_related_model() (rom.columns.onetomany method)": [[0, "rom.columns.OneToMany.get_related_model"]], "module": [[0, "module-rom.columns"], [1, "module-rom.exceptions"], [3, "module-rom.index"], [4, "module-rom.model"], [5, "module-rom.query"], [7, "module-rom.util"]], "rom.columns": [[0, "module-rom.columns"]], "bulkerror": [[1, "rom.exceptions.BulkError"]], "columnerror": [[1, "rom.exceptions.ColumnError"]], "dataraceerror": [[1, "rom.exceptions.DataRaceError"]], "entitydeletederror": [[1, "rom.exceptions.EntityDeletedError"]], "invalidcolumnvalue": [[1, "rom.exceptions.InvalidColumnValue"]], "invalidoperation": [[1, "rom.exceptions.InvalidOperation"]], "missingcolumn": [[1, "rom.exceptions.MissingColumn"]], "ormerror": [[1, "rom.exceptions.ORMError"]], "queryerror": [[1, "rom.exceptions.QueryError"]], "restricterror": [[1, "rom.exceptions.RestrictError"]], "uniquekeyviolation": [[1, "rom.exceptions.UniqueKeyViolation"]], "rom.exceptions": [[1, "module-rom.exceptions"]], "generalindex (class in rom.index)": [[3, "rom.index.GeneralIndex"]], "geoindex (class in rom.index)": [[3, "rom.index.GeoIndex"]], "geofilter (in module rom.index)": [[3, "rom.index.Geofilter"]], "pattern (class in rom.index)": [[3, "rom.index.Pattern"]], "prefix (class in rom.index)": [[3, "rom.index.Prefix"]], "suffix (class in rom.index)": [[3, "rom.index.Suffix"]], "attr (rom.index.pattern attribute)": [[3, "rom.index.Pattern.attr"]], "attr (rom.index.prefix attribute)": [[3, "rom.index.Prefix.attr"]], "attr (rom.index.suffix attribute)": [[3, "rom.index.Suffix.attr"]], "callback (rom.index.geoindex attribute)": [[3, "rom.index.GeoIndex.callback"]], "count() (rom.index.generalindex method)": [[3, "rom.index.GeneralIndex.count"]], "estimate_work_lua() (in module rom.index)": [[3, "rom.index.estimate_work_lua"]], "name (rom.index.geoindex attribute)": [[3, "rom.index.GeoIndex.name"]], "pattern (rom.index.pattern attribute)": [[3, "rom.index.Pattern.pattern"]], "prefix (rom.index.prefix attribute)": [[3, "rom.index.Prefix.prefix"]], "redis_prefix_lua() (in module rom.index)": [[3, "rom.index.redis_prefix_lua"]], "rom.index": [[3, "module-rom.index"]], "search() (rom.index.generalindex method)": [[3, "rom.index.GeneralIndex.search"]], "suffix (rom.index.suffix attribute)": [[3, "rom.index.Suffix.suffix"]], "model (class in rom.model)": [[4, "rom.model.Model"]], "copy() (rom.model.model method)": [[4, "rom.model.Model.copy"]], "delete() (rom.model.model method)": [[4, "rom.model.Model.delete"]], "does_not_endwith() (rom.model.model class method)": [[4, "rom.model.Model.does_not_endwith"]], "does_not_startwith() (rom.model.model class method)": [[4, "rom.model.Model.does_not_startwith"]], "get() (rom.model.model class method)": [[4, "rom.model.Model.get"]], "get_by() (rom.model.model class method)": [[4, "rom.model.Model.get_by"]], "id (rom.model.model attribute)": [[4, "rom.model.Model.id"]], "query (rom.model.model attribute)": [[4, "rom.model.Model.query"]], "redis_writer_lua() (in module rom.model)": [[4, "rom.model.redis_writer_lua"]], "refresh() (rom.model.model method)": [[4, "rom.model.Model.refresh"]], "rom.model": [[4, "module-rom.model"]], "save() (rom.model.model method)": [[4, "rom.model.Model.save"]], "to_dict() (rom.model.model method)": [[4, "rom.model.Model.to_dict"]], "transfer() (rom.model.model method)": [[4, "rom.model.Model.transfer"]], "update() (rom.model.model method)": [[4, "rom.model.Model.update"]], "query (class in rom.query)": [[5, "rom.query.Query"]], "all() (rom.query.query method)": [[5, "rom.query.Query.all"]], "cached_result() (rom.query.query method)": [[5, "rom.query.Query.cached_result"]], "count() (rom.query.query method)": [[5, "rom.query.Query.count"]], "delete() (rom.query.query method)": [[5, "rom.query.Query.delete"]], "endswith() (rom.query.query method)": [[5, "rom.query.Query.endswith"]], "execute() (rom.query.query method)": [[5, "rom.query.Query.execute"]], "filter() (rom.query.query method)": [[5, "rom.query.Query.filter"]], "first() (rom.query.query method)": [[5, "rom.query.Query.first"]], "iter_result() (rom.query.query method)": [[5, "rom.query.Query.iter_result"]], "like() (rom.query.query method)": [[5, "rom.query.Query.like"]], "limit() (rom.query.query method)": [[5, "rom.query.Query.limit"]], "near() (rom.query.query method)": [[5, "rom.query.Query.near"]], "order_by() (rom.query.query method)": [[5, "rom.query.Query.order_by"]], "replace() (rom.query.query method)": [[5, "rom.query.Query.replace"]], "rom.query": [[5, "module-rom.query"]], "select() (rom.query.query method)": [[5, "rom.query.Query.select"]], "startswith() (rom.query.query method)": [[5, "rom.query.Query.startswith"]], "case_insensitive() (in module rom.util)": [[7, "rom.util.CASE_INSENSITIVE"]], "classproperty (class in rom.util)": [[7, "rom.util.ClassProperty"]], "entitylock() (in module rom.util)": [[7, "rom.util.EntityLock"]], "full_text() (in module rom.util)": [[7, "rom.util.FULL_TEXT"]], "identity() (in module rom.util)": [[7, "rom.util.IDENTITY"]], "identity_ci() (in module rom.util)": [[7, "rom.util.IDENTITY_CI"]], "lock (class in rom.util)": [[7, "rom.util.Lock"]], "simple() (in module rom.util)": [[7, "rom.util.SIMPLE"]], "simple_ci() (in module rom.util)": [[7, "rom.util.SIMPLE_CI"]], "session (class in rom.util)": [[7, "rom.util.Session"]], "acquire() (rom.util.lock method)": [[7, "rom.util.Lock.acquire"]], "acquire_timeout (rom.util.lock attribute)": [[7, "rom.util.Lock.acquire_timeout"]], "add() (rom.util.session method)": [[7, "rom.util.Session.add"]], "clean_old_index() (in module rom.util)": [[7, "rom.util.clean_old_index"]], "commit() (rom.util.session method)": [[7, "rom.util.Session.commit"]], "conn (rom.util.lock attribute)": [[7, "rom.util.Lock.conn"]], "delete() (rom.util.session method)": [[7, "rom.util.Session.delete"]], "deleter() (rom.util.classproperty method)": [[7, "rom.util.ClassProperty.deleter"]], "flush() (rom.util.session method)": [[7, "rom.util.Session.flush"]], "forget() (rom.util.session method)": [[7, "rom.util.Session.forget"]], "get() (rom.util.session method)": [[7, "rom.util.Session.get"]], "get_connection() (in module rom.util)": [[7, "rom.util.get_connection"]], "getter() (rom.util.classproperty method)": [[7, "rom.util.ClassProperty.getter"]], "identifier (rom.util.lock attribute)": [[7, "rom.util.Lock.identifier"]], "lock_timeout (rom.util.lock attribute)": [[7, "rom.util.Lock.lock_timeout"]], "lockname (rom.util.lock attribute)": [[7, "rom.util.Lock.lockname"]], "null_session (rom.util.session property)": [[7, "rom.util.Session.null_session"]], "refresh() (rom.util.lock method)": [[7, "rom.util.Lock.refresh"]], "refresh() (rom.util.session method)": [[7, "rom.util.Session.refresh"]], "refresh_all() (rom.util.session method)": [[7, "rom.util.Session.refresh_all"]], "refresh_all_indexes() (in module rom.util)": [[7, "rom.util.refresh_all_indexes"]], "refresh_indices() (in module rom.util)": [[7, "rom.util.refresh_indices"]], "release() (rom.util.lock method)": [[7, "rom.util.Lock.release"]], "rollback() (rom.util.session method)": [[7, "rom.util.Session.rollback"]], "rom.util": [[7, "module-rom.util"]], "save() (rom.util.session method)": [[7, "rom.util.Session.save"]], "set_connection_settings() (in module rom.util)": [[7, "rom.util.set_connection_settings"]], "setter() (rom.util.classproperty method)": [[7, "rom.util.ClassProperty.setter"]], "show_progress() (in module rom.util)": [[7, "rom.util.show_progress"]], "use_null_session() (in module rom.util)": [[7, "rom.util.use_null_session"]], "use_rom_session() (in module rom.util)": [[7, "rom.util.use_rom_session"]]}}) \ No newline at end of file diff --git a/docs/util.html b/docs/util.html index 852c7cd..da36516 100644 --- a/docs/util.html +++ b/docs/util.html @@ -5,7 +5,7 @@ - util Module — rom 1.0.6 documentation + util Module — rom 1.0.7 documentation @@ -29,7 +29,7 @@

    Navigation

  • previous |
  • - + @@ -237,7 +237,7 @@

    Using a geo indexFULL_TEXT would transform a sentence like “A Simple Sentence” into an inverted index searchable by the words “a”, “simple”, and/or “sentence”, -IDENTITY will only be searchable by the orginal full sentence with the +IDENTITY will only be searchable by the original full sentence with the same capitalization - “A Simple Sentence”. See IDENTITY_CI for the same function, only case-insensitive.

    @@ -334,7 +334,7 @@

    Using a geo index

    Note

    calling .flush() or .commit() doesn’t cause all objects -to be written simultanously. They are written one-by-one, with any +to be written simultaneously. They are written one-by-one, with any error causing the call to fail.

    @@ -374,7 +374,7 @@

    Using a geo indexforce=True can be provided, which can force -the deletion of an entitiy again, even if we believe it to already be +the deletion of an entity again, even if we believe it to already be deleted.

    If force=True, we won’t re-call the object’s _before_delete() method, but we will re-call _after_delete().

    @@ -680,7 +680,7 @@

    Navigation

  • previous |
  • - + diff --git a/rom/__init__.py b/rom/__init__.py index 1de2e6d..156e2c3 100644 --- a/rom/__init__.py +++ b/rom/__init__.py @@ -192,7 +192,7 @@ def gen_hash(password, salt=None): _prefix_score, _script_load, _encode_unique_constraint, FULL_TEXT, CASE_INSENSITIVE, SIMPLE, SIMPLE_CI, IDENTITY, IDENTITY_CI) -VERSION = '1.0.6' +VERSION = '1.0.7' COLUMN_TYPES = [Column, Integer, Boolean, Float, Decimal, DateTime, Date, Time, String, Text, Json, PrimaryKey, ManyToOne, ForeignModel, OneToMany, diff --git a/rom/model.py b/rom/model.py index ee9c516..7f534bb 100644 --- a/rom/model.py +++ b/rom/model.py @@ -24,8 +24,8 @@ #redis-python client 3.0+ change _Pipeline = client.Pipeline -from .columns import (Column, Text, PrimaryKey, ManyToOne, OneToOne, OneToMany, - MODELS, MODELS_REFERENCED, _on_delete, SKIP_ON_DELETE) +from .columns import (Column, IndexOnly, Text, PrimaryKey, ManyToOne, OneToOne, + OneToMany, MODELS, MODELS_REFERENCED, _on_delete, SKIP_ON_DELETE) from .exceptions import (ORMError, UniqueKeyViolation, InvalidOperation, QueryError, ColumnError, InvalidColumnValue, DataRaceError, EntityDeletedError) @@ -650,7 +650,16 @@ def get_by(cls, **kwargs): single = not isinstance(value, list) if single: value = [value] - qvalues = list(map(cls._columns[attr]._to_redis, value)) + if isinstance(cls._columns[attr], IndexOnly): + def as_bytes(data) -> bytes: + if isinstance(data, bytes): + return data + elif isinstance(data, str): + return data.encode("latin-1") + return str(data).encode("latin-1") + qvalues = list(map(as_bytes, value)) + else: + qvalues = list(map(cls._columns[attr]._to_redis, value)) ids = [x for x in conn.hmget('%s:%s:uidx'%(model, attr), qvalues) if x] if not ids: return None if single else []