python-liquid 2.0.1__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. {python_liquid-2.0.1 → python_liquid-2.0.2}/PKG-INFO +2 -1
  2. {python_liquid-2.0.1 → python_liquid-2.0.2}/README.md +1 -0
  3. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/__init__.py +1 -1
  4. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/loop.py +2 -5
  5. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/tags/macro_tag.py +2 -0
  6. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/static_analysis.py +16 -10
  7. python_liquid-2.0.1/liquid/golden/__init__.py +0 -173
  8. python_liquid-2.0.1/liquid/golden/abs_filter.py +0 -73
  9. python_liquid-2.0.1/liquid/golden/append_filter.py +0 -43
  10. python_liquid-2.0.1/liquid/golden/assign_tag.py +0 -45
  11. python_liquid-2.0.1/liquid/golden/at_least_filter.py +0 -78
  12. python_liquid-2.0.1/liquid/golden/at_most_filter.py +0 -68
  13. python_liquid-2.0.1/liquid/golden/base64_decode_filter.py +0 -43
  14. python_liquid-2.0.1/liquid/golden/base64_encode_filter.py +0 -42
  15. python_liquid-2.0.1/liquid/golden/base64_url_safe_decode_filter.py +0 -43
  16. python_liquid-2.0.1/liquid/golden/base64_url_safe_encode_filter.py +0 -42
  17. python_liquid-2.0.1/liquid/golden/capitalize_filter.py +0 -27
  18. python_liquid-2.0.1/liquid/golden/capture_tag.py +0 -39
  19. python_liquid-2.0.1/liquid/golden/case.py +0 -28
  20. python_liquid-2.0.1/liquid/golden/case_tag.py +0 -226
  21. python_liquid-2.0.1/liquid/golden/ceil_filter.py +0 -63
  22. python_liquid-2.0.1/liquid/golden/comment_tag.py +0 -119
  23. python_liquid-2.0.1/liquid/golden/compact_filter.py +0 -54
  24. python_liquid-2.0.1/liquid/golden/concat_filter.py +0 -63
  25. python_liquid-2.0.1/liquid/golden/cycle_tag.py +0 -114
  26. python_liquid-2.0.1/liquid/golden/date_filter.py +0 -63
  27. python_liquid-2.0.1/liquid/golden/decrement_tag.py +0 -16
  28. python_liquid-2.0.1/liquid/golden/default_filter.py +0 -112
  29. python_liquid-2.0.1/liquid/golden/divided_by_filter.py +0 -101
  30. python_liquid-2.0.1/liquid/golden/doc_tag.py +0 -61
  31. python_liquid-2.0.1/liquid/golden/downcase_filter.py +0 -27
  32. python_liquid-2.0.1/liquid/golden/echo_tag.py +0 -116
  33. python_liquid-2.0.1/liquid/golden/escape_filter.py +0 -27
  34. python_liquid-2.0.1/liquid/golden/escape_once_filter.py +0 -32
  35. python_liquid-2.0.1/liquid/golden/find_filter.py +0 -90
  36. python_liquid-2.0.1/liquid/golden/find_index_filter.py +0 -96
  37. python_liquid-2.0.1/liquid/golden/first_filter.py +0 -51
  38. python_liquid-2.0.1/liquid/golden/floor_filter.py +0 -63
  39. python_liquid-2.0.1/liquid/golden/for_tag.py +0 -642
  40. python_liquid-2.0.1/liquid/golden/has_filter.py +0 -139
  41. python_liquid-2.0.1/liquid/golden/identifiers.py +0 -249
  42. python_liquid-2.0.1/liquid/golden/if_tag.py +0 -531
  43. python_liquid-2.0.1/liquid/golden/ifchanged_tag.py +0 -46
  44. python_liquid-2.0.1/liquid/golden/illegal.py +0 -34
  45. python_liquid-2.0.1/liquid/golden/include_tag.py +0 -196
  46. python_liquid-2.0.1/liquid/golden/increment_tag.py +0 -48
  47. python_liquid-2.0.1/liquid/golden/inline_comment_tag.py +0 -127
  48. python_liquid-2.0.1/liquid/golden/join_filter.py +0 -69
  49. python_liquid-2.0.1/liquid/golden/last_filter.py +0 -51
  50. python_liquid-2.0.1/liquid/golden/liquid_tag.py +0 -215
  51. python_liquid-2.0.1/liquid/golden/lstrip_filter.py +0 -37
  52. python_liquid-2.0.1/liquid/golden/map_filter.py +0 -50
  53. python_liquid-2.0.1/liquid/golden/minus_filter.py +0 -58
  54. python_liquid-2.0.1/liquid/golden/modulo_filter.py +0 -60
  55. python_liquid-2.0.1/liquid/golden/newline_to_br_filter.py +0 -37
  56. python_liquid-2.0.1/liquid/golden/not_liquid.py +0 -16
  57. python_liquid-2.0.1/liquid/golden/output_statement.py +0 -295
  58. python_liquid-2.0.1/liquid/golden/plus_filter.py +0 -63
  59. python_liquid-2.0.1/liquid/golden/prepend_filter.py +0 -43
  60. python_liquid-2.0.1/liquid/golden/range_objects.py +0 -79
  61. python_liquid-2.0.1/liquid/golden/raw_tag.py +0 -31
  62. python_liquid-2.0.1/liquid/golden/reject_filter.py +0 -268
  63. python_liquid-2.0.1/liquid/golden/remove_filter.py +0 -45
  64. python_liquid-2.0.1/liquid/golden/remove_first_filter.py +0 -46
  65. python_liquid-2.0.1/liquid/golden/remove_last_filter.py +0 -46
  66. python_liquid-2.0.1/liquid/golden/render_tag.py +0 -210
  67. python_liquid-2.0.1/liquid/golden/replace_filter.py +0 -65
  68. python_liquid-2.0.1/liquid/golden/replace_first_filter.py +0 -59
  69. python_liquid-2.0.1/liquid/golden/replace_last_filter.py +0 -60
  70. python_liquid-2.0.1/liquid/golden/reverse_filter.py +0 -42
  71. python_liquid-2.0.1/liquid/golden/round_filter.py +0 -87
  72. python_liquid-2.0.1/liquid/golden/rstrip_filter.py +0 -37
  73. python_liquid-2.0.1/liquid/golden/size_filter.py +0 -42
  74. python_liquid-2.0.1/liquid/golden/slice_filter.py +0 -119
  75. python_liquid-2.0.1/liquid/golden/sort_filter.py +0 -86
  76. python_liquid-2.0.1/liquid/golden/sort_natural_filter.py +0 -105
  77. python_liquid-2.0.1/liquid/golden/special.py +0 -91
  78. python_liquid-2.0.1/liquid/golden/split_filter.py +0 -128
  79. python_liquid-2.0.1/liquid/golden/strip_filter.py +0 -37
  80. python_liquid-2.0.1/liquid/golden/strip_html_filter.py +0 -74
  81. python_liquid-2.0.1/liquid/golden/strip_newlines_filter.py +0 -37
  82. python_liquid-2.0.1/liquid/golden/sum_filter.py +0 -97
  83. python_liquid-2.0.1/liquid/golden/tablerow_tag.py +0 -399
  84. python_liquid-2.0.1/liquid/golden/times_filter.py +0 -53
  85. python_liquid-2.0.1/liquid/golden/truncate_filter.py +0 -61
  86. python_liquid-2.0.1/liquid/golden/truncatewords_filter.py +0 -94
  87. python_liquid-2.0.1/liquid/golden/uniq_filter.py +0 -87
  88. python_liquid-2.0.1/liquid/golden/unless_tag.py +0 -101
  89. python_liquid-2.0.1/liquid/golden/upcase_filter.py +0 -27
  90. python_liquid-2.0.1/liquid/golden/url_decode_filter.py +0 -27
  91. python_liquid-2.0.1/liquid/golden/url_encode_filter.py +0 -27
  92. python_liquid-2.0.1/liquid/golden/where_filter.py +0 -122
  93. python_liquid-2.0.1/liquid/golden/whitespace_control.py +0 -281
  94. {python_liquid-2.0.1 → python_liquid-2.0.2}/.gitignore +0 -0
  95. {python_liquid-2.0.1 → python_liquid-2.0.2}/LICENSE +0 -0
  96. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/analyze_tags.py +0 -0
  97. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/ast.py +0 -0
  98. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/__init__.py +0 -0
  99. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/content.py +0 -0
  100. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/drops/__init__.py +0 -0
  101. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/drops/drops.py +0 -0
  102. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/__init__.py +0 -0
  103. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/_tokenize.py +0 -0
  104. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/arguments.py +0 -0
  105. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/filtered.py +0 -0
  106. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/logical.py +0 -0
  107. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/path.py +0 -0
  108. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/expressions/primitive.py +0 -0
  109. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/filters/__init__.py +0 -0
  110. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/filters/array.py +0 -0
  111. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/filters/extra.py +0 -0
  112. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/filters/math.py +0 -0
  113. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/filters/misc.py +0 -0
  114. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/filters/string.py +0 -0
  115. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/illegal.py +0 -0
  116. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/loaders/__init__.py +0 -0
  117. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/loaders/caching_file_system_loader.py +0 -0
  118. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/loaders/choice_loader.py +0 -0
  119. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/loaders/dict_loader.py +0 -0
  120. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/loaders/file_system_loader.py +0 -0
  121. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/loaders/mixins.py +0 -0
  122. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/loaders/package_loader.py +0 -0
  123. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/output.py +0 -0
  124. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/__init__.py +0 -0
  125. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/assign_tag.py +0 -0
  126. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/capture_tag.py +0 -0
  127. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/case_tag.py +0 -0
  128. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/comment_tag.py +0 -0
  129. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/cycle_tag.py +0 -0
  130. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/decrement_tag.py +0 -0
  131. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/doc_tag.py +0 -0
  132. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/echo_tag.py +0 -0
  133. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/for_tag.py +0 -0
  134. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/if_tag.py +0 -0
  135. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/ifchanged_tag.py +0 -0
  136. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/include_tag.py +0 -0
  137. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/increment_tag.py +0 -0
  138. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/inline_comment_tag.py +0 -0
  139. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/liquid_tag.py +0 -0
  140. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/render_tag.py +0 -0
  141. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/tablerow_tag.py +0 -0
  142. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/builtin/tags/unless_tag.py +0 -0
  143. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/context.py +0 -0
  144. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/environment.py +0 -0
  145. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/exceptions.py +0 -0
  146. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/expression.py +0 -0
  147. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/__init__.py +0 -0
  148. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/filters/__init__.py +0 -0
  149. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/filters/_json.py +0 -0
  150. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/filters/array.py +0 -0
  151. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/filters/babel.py +0 -0
  152. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/filters/html.py +0 -0
  153. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/filters/translate.py +0 -0
  154. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/tags/__init__.py +0 -0
  155. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/tags/_with.py +0 -0
  156. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/tags/extends_tag.py +0 -0
  157. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/extra/tags/translate_tag.py +0 -0
  158. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/filter.py +0 -0
  159. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/future/__init__.py +0 -0
  160. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/future/environment.py +0 -0
  161. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/future/filters/__init__.py +0 -0
  162. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/future/tags/__init__.py +0 -0
  163. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/lex.py +0 -0
  164. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/limits.py +0 -0
  165. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/loader.py +0 -0
  166. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/messages.py +0 -0
  167. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/mode.py +0 -0
  168. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/output.py +0 -0
  169. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/parser.py +0 -0
  170. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/py.typed +0 -0
  171. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/span.py +0 -0
  172. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/stream.py +0 -0
  173. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/stringify.py +0 -0
  174. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/tag.py +0 -0
  175. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/template.py +0 -0
  176. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/token.py +0 -0
  177. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/undefined.py +0 -0
  178. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/utils/__init__.py +0 -0
  179. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/utils/chain_map.py +0 -0
  180. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/utils/html.py +0 -0
  181. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/utils/lru_cache.py +0 -0
  182. {python_liquid-2.0.1 → python_liquid-2.0.2}/liquid/utils/text.py +0 -0
  183. {python_liquid-2.0.1 → python_liquid-2.0.2}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-liquid
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: A Python engine for the Liquid template language.
5
5
  Project-URL: Change Log, https://github.com/jg-rp/liquid/blob/main/CHANGES.md
6
6
  Project-URL: Documentation, https://jg-rp.github.io/liquid/
@@ -104,6 +104,7 @@ $ conda install -c conda-forge python-liquid
104
104
  ## Related Projects
105
105
 
106
106
  - [Python Liquid2](https://github.com/jg-rp/python-liquid2): A new Python engine for Liquid with [extra features](https://jg-rp.github.io/python-liquid2/migration/#new-features).
107
+ - [Ruby Liquid2](https://github.com/jg-rp/ruby-liquid2): Liquid2 templates for Ruby.
107
108
  - [LiquidScript](https://github.com/jg-rp/liquidscript): A JavaScript engine for Liquid with a similar high-level API to Python Liquid.
108
109
 
109
110
  ## Quick Start
@@ -74,6 +74,7 @@ $ conda install -c conda-forge python-liquid
74
74
  ## Related Projects
75
75
 
76
76
  - [Python Liquid2](https://github.com/jg-rp/python-liquid2): A new Python engine for Liquid with [extra features](https://jg-rp.github.io/python-liquid2/migration/#new-features).
77
+ - [Ruby Liquid2](https://github.com/jg-rp/ruby-liquid2): Liquid2 templates for Ruby.
77
78
  - [LiquidScript](https://github.com/jg-rp/liquidscript): A JavaScript engine for Liquid with a similar high-level API to Python Liquid.
78
79
 
79
80
  ## Quick Start
@@ -56,7 +56,7 @@ from .tag import Tag
56
56
 
57
57
  from . import future
58
58
 
59
- __version__ = "2.0.1"
59
+ __version__ = "2.0.2"
60
60
 
61
61
  __all__ = (
62
62
  "AwareBoundTemplate",
@@ -97,14 +97,11 @@ class LoopExpression(Expression):
97
97
  if isinstance(obj, range):
98
98
  return iter(obj), len(obj)
99
99
  if isinstance(obj, str) and not context.env.string_sequences:
100
- return iter([obj]), 1
100
+ return (iter([]), 0) if not obj else (iter([obj]), 1)
101
101
  if isinstance(obj, Sequence):
102
102
  return iter(obj), len(obj)
103
103
 
104
- raise LiquidTypeError(
105
- f"expected an iterable at '{self.iterable}', found '{obj}'",
106
- token=self.token,
107
- )
104
+ return iter([]), 0
108
105
 
109
106
  def _to_int(self, obj: object, *, token: Token) -> int:
110
107
  try:
@@ -94,6 +94,8 @@ class MacroNode(Node):
94
94
 
95
95
  def block_scope(self) -> Iterable[Identifier]:
96
96
  """Return variables this node adds to the node's block scope."""
97
+ yield Identifier("args", token=self.token)
98
+ yield Identifier("kwargs", token=self.token)
97
99
  yield from (Identifier(p.name, token=p.token) for p in self.args.values())
98
100
 
99
101
 
@@ -301,19 +301,25 @@ async def _analyze_async(
301
301
  def _extract_filters(
302
302
  expression: Expression, template_name: str
303
303
  ) -> Iterable[tuple[str, Span]]:
304
- if (
305
- isinstance(expression, (FilteredExpression, TernaryFilteredExpression))
306
- and expression.filters
307
- ):
308
- yield from (
309
- (f.name, Span(template_name, f.token.start_index))
310
- for f in expression.filters
311
- )
304
+ if isinstance(expression, TernaryFilteredExpression):
305
+ yield from _extract_filters(expression.left, template_name)
312
306
 
313
- if isinstance(expression, TernaryFilteredExpression) and expression.tail_filters:
307
+ if expression.filters:
308
+ yield from (
309
+ (f.name, Span(template_name, f.token.start_index))
310
+ for f in expression.filters
311
+ )
312
+
313
+ if expression.tail_filters:
314
+ yield from (
315
+ (f.name, Span(template_name, f.token.start_index))
316
+ for f in expression.tail_filters
317
+ )
318
+
319
+ if isinstance(expression, FilteredExpression) and expression.filters:
314
320
  yield from (
315
321
  (f.name, Span(template_name, f.token.start_index))
316
- for f in expression.tail_filters
322
+ for f in expression.filters
317
323
  )
318
324
 
319
325
  for expr in expression.children():
@@ -1,173 +0,0 @@
1
- from . import abs_filter # noqa: D104
2
- from . import append_filter
3
- from . import assign_tag
4
- from . import at_least_filter
5
- from . import at_most_filter
6
- from . import base64_decode_filter
7
- from . import base64_encode_filter
8
- from . import base64_url_safe_decode_filter
9
- from . import base64_url_safe_encode_filter
10
- from . import capitalize_filter
11
- from . import capture_tag
12
- from . import case_tag
13
- from . import ceil_filter
14
- from . import comment_tag
15
- from . import compact_filter
16
- from . import concat_filter
17
- from . import cycle_tag
18
- from . import date_filter
19
- from . import decrement_tag
20
- from . import default_filter
21
- from . import divided_by_filter
22
- from . import doc_tag
23
- from . import downcase_filter
24
- from . import echo_tag
25
- from . import escape_filter
26
- from . import escape_once_filter
27
- from . import find_filter
28
- from . import find_index_filter
29
- from . import first_filter
30
- from . import floor_filter
31
- from . import for_tag
32
- from . import has_filter
33
- from . import identifiers
34
- from . import if_tag
35
- from . import ifchanged_tag
36
- from . import illegal
37
- from . import include_tag
38
- from . import increment_tag
39
- from . import inline_comment_tag
40
- from . import join_filter
41
- from . import last_filter
42
- from . import liquid_tag
43
- from . import lstrip_filter
44
- from . import map_filter
45
- from . import minus_filter
46
- from . import modulo_filter
47
- from . import newline_to_br_filter
48
- from . import not_liquid
49
- from . import output_statement
50
- from . import plus_filter
51
- from . import prepend_filter
52
- from . import range_objects
53
- from . import raw_tag
54
- from . import reject_filter
55
- from . import remove_filter
56
- from . import remove_first_filter
57
- from . import remove_last_filter
58
- from . import render_tag
59
- from . import replace_filter
60
- from . import replace_first_filter
61
- from . import replace_last_filter
62
- from . import reverse_filter
63
- from . import round_filter
64
- from . import rstrip_filter
65
- from . import size_filter
66
- from . import slice_filter
67
- from . import sort_filter
68
- from . import sort_natural_filter
69
- from . import special
70
- from . import split_filter
71
- from . import strip_filter
72
- from . import strip_html_filter
73
- from . import strip_newlines_filter
74
- from . import sum_filter
75
- from . import tablerow_tag
76
- from . import times_filter
77
- from . import truncate_filter
78
- from . import truncatewords_filter
79
- from . import uniq_filter
80
- from . import unless_tag
81
- from . import upcase_filter
82
- from . import url_decode_filter
83
- from . import url_encode_filter
84
- from . import where_filter
85
- from . import whitespace_control
86
-
87
- test_cases = [
88
- abs_filter,
89
- append_filter,
90
- assign_tag,
91
- at_least_filter,
92
- at_most_filter,
93
- base64_decode_filter,
94
- base64_encode_filter,
95
- base64_url_safe_decode_filter,
96
- base64_url_safe_encode_filter,
97
- capitalize_filter,
98
- capture_tag,
99
- case_tag,
100
- ceil_filter,
101
- comment_tag,
102
- compact_filter,
103
- concat_filter,
104
- cycle_tag,
105
- date_filter,
106
- decrement_tag,
107
- default_filter,
108
- divided_by_filter,
109
- doc_tag,
110
- downcase_filter,
111
- echo_tag,
112
- escape_filter,
113
- escape_once_filter,
114
- find_filter,
115
- find_index_filter,
116
- first_filter,
117
- floor_filter,
118
- for_tag,
119
- has_filter,
120
- identifiers,
121
- if_tag,
122
- ifchanged_tag,
123
- illegal,
124
- include_tag,
125
- increment_tag,
126
- inline_comment_tag,
127
- join_filter,
128
- last_filter,
129
- liquid_tag,
130
- lstrip_filter,
131
- map_filter,
132
- minus_filter,
133
- modulo_filter,
134
- newline_to_br_filter,
135
- not_liquid,
136
- output_statement,
137
- plus_filter,
138
- prepend_filter,
139
- range_objects,
140
- raw_tag,
141
- reject_filter,
142
- remove_filter,
143
- remove_first_filter,
144
- remove_last_filter,
145
- render_tag,
146
- replace_filter,
147
- replace_first_filter,
148
- replace_last_filter,
149
- reverse_filter,
150
- round_filter,
151
- rstrip_filter,
152
- size_filter,
153
- slice_filter,
154
- sort_filter,
155
- sort_natural_filter,
156
- special,
157
- split_filter,
158
- strip_filter,
159
- strip_html_filter,
160
- strip_newlines_filter,
161
- sum_filter,
162
- tablerow_tag,
163
- times_filter,
164
- truncate_filter,
165
- truncatewords_filter,
166
- uniq_filter,
167
- unless_tag,
168
- upcase_filter,
169
- url_decode_filter,
170
- url_encode_filter,
171
- where_filter,
172
- whitespace_control,
173
- ]
@@ -1,73 +0,0 @@
1
- """Golden tests cases for testing liquid's built-in `abs` filter."""
2
-
3
- from liquid.golden.case import Case
4
-
5
- cases = [
6
- Case(
7
- description="positive integer",
8
- template=r"{{ 5 | abs }}",
9
- expect="5",
10
- ),
11
- Case(
12
- description="negative integer",
13
- template=r"{{ -5 | abs }}",
14
- expect="5",
15
- ),
16
- Case(
17
- description="positive float",
18
- template=r"{{ 5.4 | abs }}",
19
- expect="5.4",
20
- ),
21
- Case(
22
- description="negative float",
23
- template=r"{{ -5.4 | abs }}",
24
- expect="5.4",
25
- ),
26
- Case(
27
- description="zero",
28
- template=r"{{ 0 | abs }}",
29
- expect="0",
30
- ),
31
- Case(
32
- description="positive string integer",
33
- template=r"{{ '5' | abs }}",
34
- expect="5",
35
- ),
36
- Case(
37
- description="negative string integer",
38
- template=r"{{ '-5' | abs }}",
39
- expect="5",
40
- ),
41
- Case(
42
- description="positive string float",
43
- template=r"{{ '5.1' | abs }}",
44
- expect="5.1",
45
- ),
46
- Case(
47
- description="negative string float",
48
- template=r"{{ '-5.1' | abs }}",
49
- expect="5.1",
50
- ),
51
- Case(
52
- description="unexpected argument",
53
- template=r"{{ -3 | abs: 1 }}",
54
- expect="",
55
- error=True,
56
- ),
57
- Case(
58
- description="string not a number",
59
- template=r"{{ 'hello' | abs }}",
60
- expect="0",
61
- ),
62
- Case(
63
- description="not a string, int or float",
64
- template=r"{{ a | abs }}",
65
- expect="0",
66
- globals={"a": {}},
67
- ),
68
- Case(
69
- description="undefined left value",
70
- template=r"{{ nosuchthing | abs }}",
71
- expect="0",
72
- ),
73
- ]
@@ -1,43 +0,0 @@
1
- """Golden tests cases for testing liquid's built-in `append` filter."""
2
-
3
- from liquid.golden.case import Case
4
-
5
- cases = [
6
- Case(
7
- description="concat",
8
- template=r'{{ "hello" | append: "there" }}',
9
- expect="hellothere",
10
- ),
11
- Case(
12
- description="not a string",
13
- template=r"{{ 5 | append: 'there' }}",
14
- expect="5there",
15
- ),
16
- Case(
17
- description="argument not a string",
18
- template=r'{{ "hello" | append: 5 }}',
19
- expect="hello5",
20
- ),
21
- Case(
22
- description="missing argument",
23
- template=r'{{ "hello" | append }}',
24
- expect="",
25
- error=True,
26
- ),
27
- Case(
28
- description="too many arguments",
29
- template=r'{{ "hello" | append: "how", "are", "you" }}',
30
- expect="",
31
- error=True,
32
- ),
33
- Case(
34
- description="undefined left value",
35
- template=r'{{ nosuchthing | append: "hi" }}',
36
- expect="hi",
37
- ),
38
- Case(
39
- description="undefined argument",
40
- template=r'{{ "hi" | append: nosuchthing }}',
41
- expect="hi",
42
- ),
43
- ]
@@ -1,45 +0,0 @@
1
- """Golden tests cases for testing liquid's `assign` tag."""
2
-
3
- from liquid.golden.case import Case
4
-
5
- cases = [
6
- Case(
7
- description="assign a filtered literal",
8
- template=r"{% assign foo = 'foo' | upcase %}{{ foo }}",
9
- expect="FOO",
10
- ),
11
- Case(
12
- description="local variables shadow global variables",
13
- template=r"{{ foo }}{% assign foo = 'foo' | upcase %}{{ foo }}",
14
- expect="barFOO",
15
- globals={"foo": "bar"},
16
- ),
17
- Case(
18
- description="assign a range literal",
19
- template=r"{% assign foo = (1..3) %}{{ foo | join: '#' }}",
20
- expect="1#2#3",
21
- ),
22
- Case(
23
- description="assign to variable with a hyphen",
24
- template=r"{% assign some-thing = 'foo' %}{{ some-thing }}",
25
- expect="foo",
26
- ),
27
- Case(
28
- description="assign an existing array",
29
- template=r"{% assign foo = bar %}{{ foo[0] }}/{{ foo[1] }}",
30
- expect="a/b",
31
- globals={"bar": ["a", "b", "c"]},
32
- ),
33
- Case(
34
- description="assign an item from an existing object with quoted notation",
35
- template=r"{% assign foo = bar['baz'] %}{{ foo }}",
36
- expect="hello",
37
- globals={"bar": {"baz": "hello"}},
38
- ),
39
- Case(
40
- description="assign with quoted notation and extra whitespace",
41
- template=r"{% assign foo = bar[ 'baz' ] %}{{ foo }}",
42
- expect="hello",
43
- globals={"bar": {"baz": "hello"}},
44
- ),
45
- ]
@@ -1,78 +0,0 @@
1
- """Golden tests cases for testing liquid's built-in `at_least` filter."""
2
-
3
- from liquid.golden.case import Case
4
-
5
- cases = [
6
- Case(
7
- description="positive integer < arg",
8
- template=r"{{ 5 | at_least: 8 }}",
9
- expect="8",
10
- ),
11
- Case(
12
- description="positive integer > arg",
13
- template=r"{{ 8 | at_least: 5 }}",
14
- expect="8",
15
- ),
16
- Case(
17
- description="negative integer < arg",
18
- template=r"{{ -8 | at_least: 5 }}",
19
- expect="5",
20
- ),
21
- Case(
22
- description="positive integer == arg",
23
- template=r"{{ 5 | at_least: 5 }}",
24
- expect="5",
25
- ),
26
- Case(
27
- description="positive float < arg",
28
- template=r"{{ 5.4 | at_least: 8.9 }}",
29
- expect="8.9",
30
- ),
31
- Case(
32
- description="positive float > arg",
33
- template=r"{{ 8.4 | at_least: 5.9 }}",
34
- expect="8.4",
35
- ),
36
- Case(
37
- description="positive string > arg",
38
- template=r'{{ "9" | at_least: 8 }}',
39
- expect="9",
40
- ),
41
- Case(
42
- description="missing arg",
43
- template=r"{{ 5 | at_least }}",
44
- expect="",
45
- error=True,
46
- ),
47
- Case(
48
- description="too many args",
49
- template=r"{{ 5 | at_least: 1, 2}}",
50
- expect="",
51
- error=True,
52
- ),
53
- Case(
54
- description="undefined left value",
55
- template=r"{{ nosuchthing | at_least: 5 }}",
56
- expect="5",
57
- ),
58
- Case(
59
- description="undefined argument",
60
- template=r"{{ 5 | at_least: nosuchthing }}",
61
- expect="5",
62
- ),
63
- Case(
64
- description="left value not a number",
65
- template=r'{{ "abc" | at_least: 2 }}',
66
- expect="2",
67
- ),
68
- Case(
69
- description="left value not a number negative argument",
70
- template=r'{{ "abc" | at_least: -2 }}',
71
- expect="0",
72
- ),
73
- Case(
74
- description="argument string not a number",
75
- template=r'{{ -1 | at_least: "abc" }}',
76
- expect="0",
77
- ),
78
- ]
@@ -1,68 +0,0 @@
1
- """Golden tests cases for testing liquid's built-in `at_most` filter."""
2
-
3
- from liquid.golden.case import Case
4
-
5
- cases = [
6
- Case(
7
- description="positive integer < arg",
8
- template=r"{{ 5 | at_most: 8 }}",
9
- expect="5",
10
- ),
11
- Case(
12
- description="positive integer > arg",
13
- template=r"{{ 8 | at_most: 5 }}",
14
- expect="5",
15
- ),
16
- Case(
17
- description="negative integer < arg",
18
- template=r"{{ -8 | at_most: 5 }}",
19
- expect="-8",
20
- ),
21
- Case(
22
- description="positive integer == arg",
23
- template=r"{{ 5 | at_most: 5 }}",
24
- expect="5",
25
- ),
26
- Case(
27
- description="positive float < arg",
28
- template=r"{{ 5.4 | at_most: 8.9 }}",
29
- expect="5.4",
30
- ),
31
- Case(
32
- description="positive float > arg",
33
- template=r"{{ 8.4 | at_most: 5.9 }}",
34
- expect="5.9",
35
- ),
36
- Case(
37
- description="positive string > arg",
38
- template=r'{{ "9" | at_most: 8 }}',
39
- expect="8",
40
- ),
41
- Case(
42
- description="missing arg",
43
- template=r"{{ 5 | at_most }}",
44
- expect="",
45
- error=True,
46
- ),
47
- Case(
48
- description="too many args",
49
- template=r"{{ 5 | at_most: 1, 2}}",
50
- expect="",
51
- error=True,
52
- ),
53
- Case(
54
- description="undefined left value",
55
- template=r"{{ nosuchthing | at_most: 5 }}",
56
- expect="0",
57
- ),
58
- Case(
59
- description="undefined argument",
60
- template=r"{{ 5 | at_most: nosuchthing }}",
61
- expect="0",
62
- ),
63
- Case(
64
- description="left value not a number",
65
- template=r'{{ "abc" | at_most: -2 }}',
66
- expect="-2",
67
- ),
68
- ]
@@ -1,43 +0,0 @@
1
- """Golden tests cases for testing liquid's built-in `base64_decode` filter."""
2
-
3
- from liquid.golden.case import Case
4
-
5
- cases = [
6
- Case(
7
- description="from string",
8
- template=r'{{ "XyMvLg==" | base64_decode }}',
9
- expect="_#/.",
10
- ),
11
- Case(
12
- description="from string with URL unsafe",
13
- template=r"{{ a | base64_decode }}",
14
- expect=(
15
- r"abcdefghijklmnopqrstuvwxyz "
16
- r"ABCDEFGHIJKLMNOPQRSTUVWXYZ "
17
- r"1234567890 !@#$%^&*()-=_+/?.:;[]{}\|"
18
- ),
19
- globals={
20
- "a": (
21
- "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogQUJDREVGR0hJSktMTU5PUFFSU1RVV"
22
- "ldYWVogMTIzNDU2Nzg5MCAhQCMkJV4mKigpLT1fKy8/Ljo7W117fVx8"
23
- )
24
- },
25
- ),
26
- Case(
27
- description="not a string",
28
- template=r"{{ 5 | base64_decode }}",
29
- expect="",
30
- error=True,
31
- ),
32
- Case(
33
- description="unexpected argument",
34
- template=r'{{ "hello" | base64_decode: 5 }}',
35
- expect="",
36
- error=True,
37
- ),
38
- Case(
39
- description="undefined left value",
40
- template=r"{{ nosuchthing | base64_decode }}",
41
- expect="",
42
- ),
43
- ]
@@ -1,42 +0,0 @@
1
- """Golden tests cases for testing liquid's built-in `base64_encode` filter."""
2
-
3
- from liquid.golden.case import Case
4
-
5
- cases = [
6
- Case(
7
- description="from string",
8
- template=r'{{ "_#/." | base64_encode }}',
9
- expect="XyMvLg==",
10
- ),
11
- Case(
12
- description="from string with URL unsafe",
13
- template=r"{{ a | base64_encode }}",
14
- expect=(
15
- "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogQUJDREVGR0hJSktMTU5PUFFSU1RVV"
16
- "ldYWVogMTIzNDU2Nzg5MCAhQCMkJV4mKigpLT1fKy8/Ljo7W117fVx8"
17
- ),
18
- globals={
19
- "a": (
20
- r"abcdefghijklmnopqrstuvwxyz "
21
- r"ABCDEFGHIJKLMNOPQRSTUVWXYZ "
22
- r"1234567890 !@#$%^&*()-=_+/?.:;[]{}\|"
23
- )
24
- },
25
- ),
26
- Case(
27
- description="not a string",
28
- template=r"{{ 5 | base64_encode }}",
29
- expect="NQ==",
30
- ),
31
- Case(
32
- description="unexpected argument",
33
- template=r'{{ "hello" | base64_encode: 5 }}',
34
- expect="",
35
- error=True,
36
- ),
37
- Case(
38
- description="undefined left value",
39
- template=r"{{ nosuchthing | base64_encode }}",
40
- expect="",
41
- ),
42
- ]