2021-06-25 07:58:57 +01:00
|
|
|
from moto.utilities.utils import load_resource
|
|
|
|
|
|
|
|
|
2020-04-11 21:17:16 +01:00
|
|
|
class ReservedKeywords(list):
|
|
|
|
"""
|
|
|
|
DynamoDB has an extensive list of keywords. Keywords are considered when validating the expression Tree.
|
|
|
|
Not earlier since an update expression like "SET path = VALUE 1" fails with:
|
|
|
|
'Invalid UpdateExpression: Syntax error; token: "1", near: "VALUE 1"'
|
|
|
|
"""
|
|
|
|
|
|
|
|
KEYWORDS = None
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def get_reserved_keywords(cls):
|
|
|
|
if cls.KEYWORDS is None:
|
|
|
|
cls.KEYWORDS = cls._get_reserved_keywords()
|
|
|
|
return cls.KEYWORDS
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def _get_reserved_keywords(cls):
|
|
|
|
"""
|
|
|
|
Get a list of reserved keywords of DynamoDB
|
|
|
|
"""
|
2021-06-25 07:58:57 +01:00
|
|
|
reserved_keywords = load_resource(
|
2021-08-05 17:59:25 +01:00
|
|
|
__name__, "reserved_keywords.txt", as_json=False
|
2020-04-11 21:17:16 +01:00
|
|
|
)
|
|
|
|
return reserved_keywords.split()
|