ya-tagscript 1.7.2__tar.gz → 2.0.1__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 (201) hide show
  1. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.github/workflows/black.yml +4 -4
  2. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.github/workflows/coverage_comment.yml +2 -2
  3. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.github/workflows/publish.yml +7 -7
  4. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.github/workflows/test.yml +50 -20
  5. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.pre-commit-config.yaml +10 -4
  6. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/CHANGELOG.md +30 -0
  7. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/PKG-INFO +5 -4
  8. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/README.md +2 -2
  9. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/_ext/glossary_backlink_checker.py +8 -4
  10. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/conf.py +1 -1
  11. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/interfaces.rst +1 -1
  12. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/make_release.py +5 -5
  13. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/pyproject.toml +17 -8
  14. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/rng/range_block.py +1 -5
  15. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interfaces/blockabc.py +3 -35
  16. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interpreter/interpreter.py +7 -9
  17. ya_tagscript-2.0.1/src/ya_tagscript/interpreter/parse_state.py +99 -0
  18. ya_tagscript-2.0.1/src/ya_tagscript/interpreter/ts_parser.py +280 -0
  19. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/util/splitter.py +8 -0
  20. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/actions/test_command_block.py +0 -5
  21. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/actions/test_delete_block.py +0 -5
  22. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/actions/test_override_block.py +0 -5
  23. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/actions/test_react_block.py +0 -5
  24. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/actions/test_redirect_block.py +0 -5
  25. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/actions/test_silence_block.py +0 -5
  26. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/conditional/test_all_block.py +0 -5
  27. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/conditional/test_any_block.py +0 -5
  28. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/conditional/test_if_block.py +0 -5
  29. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/discord/test_cooldown_block.py +0 -5
  30. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/discord/test_embed_block.py +0 -5
  31. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/flow/test_break_block.py +0 -5
  32. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/flow/test_shortcutredirect_block.py +0 -6
  33. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/flow/test_stop_block.py +0 -5
  34. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/limiters/test_blacklist_block.py +0 -5
  35. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/limiters/test_require_block.py +0 -5
  36. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/lists/test_cycle_block.py +0 -5
  37. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/lists/test_list_block.py +0 -5
  38. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/math/test_math_block.py +0 -5
  39. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/math/test_ordinal_block.py +0 -5
  40. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/meta/test_comment_block.py +0 -5
  41. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/meta/test_debug_block.py +0 -5
  42. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/rng/test_fiftyfifty_block.py +0 -5
  43. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/rng/test_random_block.py +0 -5
  44. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/rng/test_range_block.py +0 -5
  45. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/test_case_block.py +0 -5
  46. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/test_join_block.py +0 -5
  47. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/test_python_block.py +0 -5
  48. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/test_replace_block.py +0 -5
  49. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/test_substring_block.py +0 -5
  50. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/test_urldecode_block.py +0 -5
  51. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/test_urlencode_block.py +0 -5
  52. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/time/test_strf_block.py +0 -5
  53. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/time/test_timedelta_block.py +0 -5
  54. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/variables/test_assign_block.py +0 -5
  55. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/variables/test_loose_variable_getter_block.py +0 -6
  56. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/variables/test_strict_variable_getter_block.py +0 -6
  57. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/interpreter/test_interpreter.py +3 -11
  58. ya_tagscript-2.0.1/tests/ya_tagscript/interpreter/test_parse_state.py +39 -0
  59. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/interpreter/test_ts_parser.py +112 -159
  60. ya_tagscript-2.0.1/tests/ya_tagscript/util/test_conditionals.py +89 -0
  61. ya_tagscript-1.7.2/src/ya_tagscript/interpreter/parse_state.py +0 -106
  62. ya_tagscript-1.7.2/src/ya_tagscript/interpreter/ts_parser.py +0 -305
  63. ya_tagscript-1.7.2/tests/ya_tagscript/interpreter/test_parse_state.py +0 -56
  64. ya_tagscript-1.7.2/tests/ya_tagscript/util/test_conditionals.py +0 -214
  65. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.flake8 +0 -0
  66. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.github/dependabot.yml +0 -0
  67. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.gitignore +0 -0
  68. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.python-version +0 -0
  69. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/.readthedocs.yaml +0 -0
  70. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/LICENSE.md +0 -0
  71. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/Makefile +0 -0
  72. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/_ext/styled_list_directive.py +0 -0
  73. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/adapters.rst +0 -0
  74. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/blocks.rst +0 -0
  75. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/changelog.rst +0 -0
  76. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/code_examples/adapters/int_adapter_example.py +0 -0
  77. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/code_examples/adapters/member_adapter_example.py +0 -0
  78. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/code_examples/nested_blocks_example.py +0 -0
  79. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/code_examples/quickstart_example.py +0 -0
  80. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/credits.rst +0 -0
  81. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/exceptions.rst +0 -0
  82. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/glossary.rst +0 -0
  83. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/index.rst +0 -0
  84. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/interpreter.rst +0 -0
  85. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/intro.rst +0 -0
  86. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/make.bat +0 -0
  87. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/numeric_parser.rst +0 -0
  88. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/quickstart.rst +0 -0
  89. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/docs/requirements.txt +0 -0
  90. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/__init__.py +0 -0
  91. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/__init__.py +0 -0
  92. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/discord_adapters/__init__.py +0 -0
  93. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/discord_adapters/attribute_adapter.py +0 -0
  94. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/discord_adapters/channel_adapter.py +0 -0
  95. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/discord_adapters/guild_adapter.py +0 -0
  96. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/discord_adapters/member_adapter.py +0 -0
  97. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/function_adapter.py +0 -0
  98. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/int_adapter.py +0 -0
  99. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/object_adapter.py +0 -0
  100. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/adapters/string_adapter.py +0 -0
  101. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/__init__.py +0 -0
  102. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/actions/__init__.py +0 -0
  103. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/actions/command_block.py +0 -0
  104. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/actions/delete_block.py +0 -0
  105. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/actions/override_block.py +0 -0
  106. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/actions/react_block.py +0 -0
  107. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/actions/redirect_block.py +0 -0
  108. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/actions/silence_block.py +0 -0
  109. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/conditional/__init__.py +0 -0
  110. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/conditional/all_block.py +0 -0
  111. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/conditional/any_block.py +0 -0
  112. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/conditional/if_block.py +0 -0
  113. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/discord/__init__.py +0 -0
  114. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/discord/cooldown_block.py +0 -0
  115. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/discord/embed_block.py +0 -0
  116. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/flow/__init__.py +0 -0
  117. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/flow/break_block.py +0 -0
  118. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/flow/shortcutredirect_block.py +0 -0
  119. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/flow/stop_block.py +0 -0
  120. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/limiters/__init__.py +0 -0
  121. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/limiters/blacklist_block.py +0 -0
  122. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/limiters/require_block.py +0 -0
  123. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/lists/__init__.py +0 -0
  124. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/lists/cycle_block.py +0 -0
  125. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/lists/list_block.py +0 -0
  126. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/math/__init__.py +0 -0
  127. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/math/math_block.py +0 -0
  128. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/math/ordinal_block.py +0 -0
  129. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/meta/__init__.py +0 -0
  130. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/meta/comment_block.py +0 -0
  131. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/meta/debug_block.py +0 -0
  132. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/rng/__init__.py +0 -0
  133. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/rng/fiftyfifty_block.py +0 -0
  134. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/rng/random_block.py +0 -0
  135. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/__init__.py +0 -0
  136. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/case_block.py +0 -0
  137. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/join_block.py +0 -0
  138. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/python_block.py +0 -0
  139. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/replace_block.py +0 -0
  140. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/substring_block.py +0 -0
  141. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/urldecode_block.py +0 -0
  142. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/strings/urlencode_block.py +0 -0
  143. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/time/__init__.py +0 -0
  144. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/time/strf_block.py +0 -0
  145. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/time/timedelta_block.py +0 -0
  146. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/variables/__init__.py +0 -0
  147. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/variables/assign_block.py +0 -0
  148. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/variables/loose_variable_getter_block.py +0 -0
  149. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/blocks/variables/strict_variable_getter_block.py +0 -0
  150. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/exceptions/__init__.py +0 -0
  151. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/exceptions/exceptions.py +0 -0
  152. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interfaces/__init__.py +0 -0
  153. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interfaces/adapterabc.py +0 -0
  154. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interfaces/interpreterabc.py +0 -0
  155. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interfaces/nodeabc.py +0 -0
  156. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interpreter/__init__.py +0 -0
  157. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interpreter/context.py +0 -0
  158. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interpreter/node.py +0 -0
  159. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/interpreter/response.py +0 -0
  160. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/py.typed +0 -0
  161. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/util/__init__.py +0 -0
  162. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/util/conditionals.py +0 -0
  163. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/src/ya_tagscript/util/escaping.py +0 -0
  164. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/.coveragerc +0 -0
  165. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/__init__.py +0 -0
  166. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/docs/__init__.py +0 -0
  167. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/docs/code_examples/__init__.py +0 -0
  168. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/docs/code_examples/adapters/__init__.py +0 -0
  169. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/docs/code_examples/adapters/test_int_adapter_example.py +0 -0
  170. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/docs/code_examples/adapters/test_member_adapter_example.py +0 -0
  171. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/docs/code_examples/test_nested_blocks_example.py +0 -0
  172. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/docs/code_examples/test_quickstart_example.py +0 -0
  173. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/__init__.py +0 -0
  174. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/__init__.py +0 -0
  175. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/discord_adapters/__init__.py +0 -0
  176. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/discord_adapters/test_attribute_adapter.py +0 -0
  177. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/discord_adapters/test_channel_adapter.py +0 -0
  178. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/discord_adapters/test_guild_adapter.py +0 -0
  179. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/discord_adapters/test_member_adapter.py +0 -0
  180. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/test_function_adapter.py +0 -0
  181. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/test_int_adapter.py +0 -0
  182. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/test_object_adapter.py +0 -0
  183. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/adapters/test_string_adapter.py +0 -0
  184. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/__init__.py +0 -0
  185. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/actions/__init__.py +0 -0
  186. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/conditional/__init__.py +0 -0
  187. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/discord/__init__.py +0 -0
  188. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/flow/__init__.py +0 -0
  189. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/limiters/__init__.py +0 -0
  190. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/lists/__init__.py +0 -0
  191. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/math/__init__.py +0 -0
  192. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/meta/__init__.py +0 -0
  193. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/rng/__init__.py +0 -0
  194. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/strings/__init__.py +0 -0
  195. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/time/__init__.py +0 -0
  196. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/blocks/variables/__init__.py +0 -0
  197. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/interpreter/__init__.py +0 -0
  198. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/interpreter/test_node.py +0 -0
  199. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/util/__init__.py +0 -0
  200. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/util/test_escaping.py +0 -0
  201. {ya_tagscript-1.7.2 → ya_tagscript-2.0.1}/tests/ya_tagscript/util/test_splitter.py +0 -0
@@ -3,7 +3,7 @@ name: Lint
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - v1
6
+ - main
7
7
 
8
8
  pull_request:
9
9
 
@@ -14,14 +14,14 @@ jobs:
14
14
 
15
15
  steps:
16
16
  - name: Checkout
17
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
17
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
18
18
 
19
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
19
+ - uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
20
20
  with:
21
21
  python-version-file: ".python-version"
22
22
 
23
23
  - name: Lint with black
24
- uses: psf/black@87928e6d6761a4a6d22250e1fee5601b3998086e # 26.5.1
24
+ uses: psf/black@258e7dbf348bc23cb70b8cdf693481c04634ebcc # 26.10.1
25
25
  with:
26
26
  options: '--check --diff --verbose'
27
27
  src: '.'
@@ -5,7 +5,7 @@ on:
5
5
  types:
6
6
  - completed
7
7
  branches:
8
- - '!v1'
8
+ - '!main'
9
9
 
10
10
  jobs:
11
11
  post-coverage-comment:
@@ -19,7 +19,7 @@ jobs:
19
19
 
20
20
  steps:
21
21
  - name: Post comment
22
- uses: py-cov-action/python-coverage-comment-action@5d8df5979747514c914e1c5a12335a7cf9a2745f # v4.1
22
+ uses: py-cov-action/python-coverage-comment-action@e5fb2218463c3377f3504b0c5b5646ed53da7a2f # v4.5
23
23
  with:
24
24
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25
25
  GITHUB_PR_RUN_ID: ${{ github.event.workflow_run.id }}
@@ -3,7 +3,7 @@ name: Build & Publish to PyPI
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - v1
6
+ - main
7
7
  tags:
8
8
  - v*
9
9
 
@@ -15,12 +15,12 @@ jobs:
15
15
 
16
16
  steps:
17
17
  - name: Checkout
18
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
18
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
19
19
  with:
20
20
  persist-credentials: false
21
21
 
22
22
  - name: Set up Python
23
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
23
+ uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
24
24
  with:
25
25
  cache: pip
26
26
  python-version-file: ".python-version"
@@ -36,7 +36,7 @@ jobs:
36
36
  run: python3 -m build
37
37
 
38
38
  - name: Store the distribution packages
39
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
39
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
40
40
  with:
41
41
  name: python-package-distributions
42
42
  path: dist/
@@ -55,13 +55,13 @@ jobs:
55
55
 
56
56
  steps:
57
57
  - name: Download all the dists
58
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
58
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
59
59
  with:
60
60
  name: python-package-distributions
61
61
  path: dist/
62
62
 
63
63
  - name: Publish distribution 📦 to PyPI
64
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
64
+ uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
65
65
 
66
66
  github-release:
67
67
  name: Create GitHub Release
@@ -75,7 +75,7 @@ jobs:
75
75
 
76
76
  steps:
77
77
  - name: Download all the dists
78
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
78
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
79
79
  with:
80
80
  name: python-package-distributions
81
81
  path: dist/
@@ -3,14 +3,14 @@ name: Test
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - v1
6
+ - main
7
7
 
8
8
  pull_request:
9
9
 
10
10
 
11
11
  jobs:
12
12
  test:
13
-
13
+ name: Run tests on ${{ matrix.python-version }}
14
14
  runs-on: ubuntu-latest
15
15
  strategy:
16
16
  fail-fast: false
@@ -19,10 +19,10 @@ jobs:
19
19
 
20
20
  steps:
21
21
  - name: Checkout
22
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
22
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
23
 
24
24
  - name: Setup Python ${{ matrix.python-version }}
25
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
25
+ uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
26
26
  with:
27
27
  allow-prereleases: true
28
28
  cache: pip
@@ -36,38 +36,67 @@ jobs:
36
36
  env:
37
37
  TOX_GH_MAJOR_MINOR: ${{ matrix.python-version }}
38
38
 
39
- - run: mkdir coverage
40
-
41
39
  - name: Run test suite
42
40
  run: tox run --skip-pkg-install
43
41
  env:
44
42
  TOX_GH_MAJOR_MINOR: ${{ matrix.python-version }}
45
- COVERAGE_FILE: coverage/.coverage.${{ matrix.python-version }}
43
+
44
+ checks:
45
+ name: Check (${{ matrix.check }})
46
+ runs-on: ubuntu-latest
47
+ strategy:
48
+ fail-fast: false
49
+ matrix:
50
+ check:
51
+ - mypy_check
52
+ - pyright_check
53
+ - lowest_bounds
54
+ - coverage
55
+
56
+ steps:
57
+ - name: Checkout
58
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
59
+
60
+ - name: Setup Python
61
+ uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
62
+ with:
63
+ python-version: "3.14"
64
+
65
+ - name: Install tox
66
+ run: pip install tox
67
+
68
+ - name: Prepare coverage directory
69
+ if: matrix.check == 'coverage'
70
+ run: mkdir -p coverage
71
+
72
+ - name: Run check
73
+ run: tox run -e "${{ matrix.check }}"
46
74
 
47
75
  - name: Store coverage file
48
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
49
- if: matrix.python-version == '3.14'
76
+ if: matrix.check == 'coverage'
77
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
50
78
  with:
51
- name: coverage-${{ matrix.python-version }}
79
+ name: coverage-3.14
52
80
  path: coverage
53
81
  include-hidden-files: true
54
82
 
55
83
  coverage:
56
- needs: test
84
+ name: Create Coverage report
85
+ needs: [ test, checks ]
57
86
  runs-on: ubuntu-latest
58
87
 
59
88
  steps:
60
89
  - name: Checkout
61
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
90
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
62
91
 
63
92
  - name: Setup Python
64
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
93
+ uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
65
94
  with:
66
95
  cache: pip
67
96
  python-version-file: .python-version
68
97
 
69
98
  - name: Get coverage files
70
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
99
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
71
100
  with:
72
101
  merge-multiple: true
73
102
  pattern: coverage-*
@@ -83,19 +112,20 @@ jobs:
83
112
  run: coverage html --data-file coverage/.coverage
84
113
 
85
114
  - name: Store coverage data
86
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
115
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
87
116
  with:
88
117
  path: coverage
89
118
  name: coverage-data
90
119
  include-hidden-files: true
91
120
 
92
121
  - name: Store coverage HTML report
93
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
122
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
94
123
  with:
95
124
  path: htmlcov
96
125
  name: coverage-html
97
126
 
98
127
  coverage-pr-comment:
128
+ name: Create Coverage PR comment
99
129
  needs: coverage
100
130
  runs-on: ubuntu-latest
101
131
  if: github.event_name == 'pull_request'
@@ -105,21 +135,21 @@ jobs:
105
135
 
106
136
  steps:
107
137
  - name: Checkout
108
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
138
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
109
139
 
110
140
  - name: Download coverage data
111
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
141
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
112
142
  with:
113
143
  name: coverage-3.14
114
144
 
115
145
  - name: Generate coverage comment
116
146
  id: coverage-comment
117
- uses: py-cov-action/python-coverage-comment-action@5d8df5979747514c914e1c5a12335a7cf9a2745f # v4.1
147
+ uses: py-cov-action/python-coverage-comment-action@e5fb2218463c3377f3504b0c5b5646ed53da7a2f # v4.5
118
148
  with:
119
149
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
120
150
 
121
151
  - name: Store coverage comment
122
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
152
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
123
153
  if: steps.coverage-comment.outputs.COMMENT_FILE_WRITTEN == 'true'
124
154
  with:
125
155
  name: python-coverage-comment-action
@@ -2,13 +2,19 @@ default_language_version:
2
2
  python: python3.11
3
3
  fail_fast: false
4
4
  repos:
5
+ - repo: https://github.com/asottile/pyupgrade
6
+ rev: v3.22.0
7
+ hooks:
8
+ - id: pyupgrade
9
+ args: [ --py311-plus ]
10
+
5
11
  - repo: https://github.com/codespell-project/codespell
6
- rev: v2.4.2
12
+ rev: v2.4.3
7
13
  hooks:
8
14
  - id: codespell
9
15
 
10
16
  - repo: https://github.com/pycqa/flake8
11
- rev: 7.3.0
17
+ rev: 7.5.0
12
18
  hooks:
13
19
  - id: flake8
14
20
  additional_dependencies:
@@ -37,11 +43,11 @@ repos:
37
43
  - id: add-trailing-comma
38
44
 
39
45
  - repo: https://github.com/psf/black-pre-commit-mirror
40
- rev: 26.5.0
46
+ rev: 26.10.1
41
47
  hooks:
42
48
  - id: black
43
49
 
44
50
  - repo: https://github.com/pycqa/isort
45
- rev: 8.0.1
51
+ rev: 9.0.2
46
52
  hooks:
47
53
  - id: isort
@@ -2,6 +2,36 @@
2
2
 
3
3
  *Currently none*
4
4
 
5
+ # v2.0.1 (2026-11-03)
6
+
7
+ - Parser performance improvements
8
+ - Some **internals** have been removed/replaced:
9
+ - `TagScriptParser` -> `parse_tagscript`
10
+ - `BlockParseState` -> partially inlined with state transitions via
11
+ `transition_state`
12
+ - `TagScriptInterpreter._parser` removed without replacement
13
+ - Further private helper functions in several locations (which were all marked
14
+ with `_` already)
15
+ - Because these are internals, this is **not considered a breaking change**.
16
+
17
+ # v2.0.0 (2026-07-24)
18
+
19
+ - BREAKING: Remove `_accepted_names` in favour of `_VALID_NAMES`
20
+ - Migrate by declaring the block names current in the `_accepted_names` property to
21
+ a class-level `_VALID_NAMES` declaration:
22
+
23
+ ```diff
24
+ class MyBlock(BlockABC):
25
+ + _VALID_NAMES = {"my-dec", "some-alias"}
26
+
27
+ - @property
28
+ - def _accepted_names(self) -> set[str] | None:
29
+ - return {"my-dec", "some-alias"}
30
+ ```
31
+
32
+ - Make sure any custom handling in `will_accept` or `process` takes this change into
33
+ account.
34
+
5
35
  # v1.7.2 (2026-07-15)
6
36
 
7
37
  - More parsing loop performance improvements
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: ya_tagscript
3
- Version: 1.7.2
3
+ Version: 2.0.1
4
4
  Summary: Yet Another TagScript fork. An easy drop in user-provided Templating system.
5
5
  Project-URL: Changelog, https://ya-tagscript.readthedocs.io/en/latest/changelog.html
6
6
  Project-URL: Documentation, https://ya-tagscript.readthedocs.io
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Programming Language :: Python :: 3.15
20
21
  Requires-Python: >=3.11
21
22
  Requires-Dist: discord-py>=2.5.0
22
23
  Requires-Dist: pyparsing>=3.2.0
@@ -30,7 +31,7 @@ Description-Content-Type: text/markdown
30
31
  ![Read the Docs (version)](https://img.shields.io/readthedocs/ya_tagscript/latest)
31
32
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
32
33
 
33
- Current stable version: v1.7.2
34
+ Current stable version: v2.0.1
34
35
 
35
36
  ## Information
36
37
 
@@ -92,7 +93,7 @@ or
92
93
  <!--VERSIONED TAG SECTION START-->
93
94
 
94
95
  ```
95
- pip install git+https://github.com/MajorTanya/ya_tagscript.git@v1.7.2
96
+ pip install git+https://github.com/MajorTanya/ya_tagscript.git@v2.0.1
96
97
  ```
97
98
 
98
99
  <!--VERSIONED TAG SECTION END-->
@@ -5,7 +5,7 @@
5
5
  ![Read the Docs (version)](https://img.shields.io/readthedocs/ya_tagscript/latest)
6
6
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
7
7
 
8
- Current stable version: v1.7.2
8
+ Current stable version: v2.0.1
9
9
 
10
10
  ## Information
11
11
 
@@ -67,7 +67,7 @@ or
67
67
  <!--VERSIONED TAG SECTION START-->
68
68
 
69
69
  ```
70
- pip install git+https://github.com/MajorTanya/ya_tagscript.git@v1.7.2
70
+ pip install git+https://github.com/MajorTanya/ya_tagscript.git@v2.0.1
71
71
  ```
72
72
 
73
73
  <!--VERSIONED TAG SECTION END-->
@@ -161,8 +161,10 @@ class GlossaryRefChecker:
161
161
  if not term_data.ref_col_seen:
162
162
  problem_terms[term] = term_data
163
163
  _logger.error(
164
- "[GlossaryRefCheck] Could not find a 'Referenced by' "
165
- "section with an 'x-ref-col' class for term %r",
164
+ (
165
+ "[GlossaryRefCheck] Could not find a 'Referenced by' "
166
+ "section with an 'x-ref-col' class for term %r"
167
+ ),
166
168
  term,
167
169
  )
168
170
  elif (
@@ -171,8 +173,10 @@ class GlossaryRefChecker:
171
173
  ):
172
174
  problem_terms[term] = term_data
173
175
  _logger.error(
174
- "[GlossaryRefCheck] 'Referenced by' section mismatch for "
175
- "term %r: %r",
176
+ (
177
+ "[GlossaryRefCheck] 'Referenced by' section mismatch for "
178
+ "term %r: %r"
179
+ ),
176
180
  term,
177
181
  term_data,
178
182
  )
@@ -17,7 +17,7 @@ project_copyright = "2025, MajorTanya"
17
17
  author = "MajorTanya"
18
18
 
19
19
  ### VERSION SECTION START
20
- version = "1.7.2"
20
+ version = "2.0.1"
21
21
  ### VERSION SECTION END
22
22
  release = version
23
23
 
@@ -20,7 +20,7 @@ For example, the concrete :class:`~ya_tagscript.interpreter.TagScriptInterpreter
20
20
 
21
21
  .. autoclass:: BlockABC
22
22
  :members:
23
- :private-members: _accepted_names, _VALID_NAMES
23
+ :private-members: _VALID_NAMES
24
24
  :no-show-inheritance:
25
25
 
26
26
  .. autoclass:: InterpreterABC
@@ -128,7 +128,7 @@ def commit_release_with_tag(project_version: str, *, dry_run: bool, verbose: boo
128
128
 
129
129
 
130
130
  def update_changelog(project_version: str, *, dry_run: bool, verbose: bool):
131
- with open("./CHANGELOG.md", mode="r", encoding="utf8") as cf:
131
+ with open("./CHANGELOG.md", encoding="utf8") as cf:
132
132
  old_changelog_text = cf.read()
133
133
  already_released_version = re.search(
134
134
  rf"^# v{project_version}$",
@@ -190,7 +190,7 @@ def update_changelog(project_version: str, *, dry_run: bool, verbose: bool):
190
190
 
191
191
 
192
192
  def update_pyproject(project_version: str, *, dry_run: bool, verbose: bool):
193
- with open("./pyproject.toml", mode="r", encoding="utf8") as pypf:
193
+ with open("./pyproject.toml", encoding="utf8") as pypf:
194
194
  old_pyproject_content = pypf.read()
195
195
 
196
196
  match = re.search(
@@ -228,7 +228,7 @@ def update_pyproject(project_version: str, *, dry_run: bool, verbose: bool):
228
228
 
229
229
 
230
230
  def update_readme(project_version: str, *, dry_run: bool, verbose: bool):
231
- with open("./README.md", mode="r", encoding="utf8") as rf:
231
+ with open("./README.md", encoding="utf8") as rf:
232
232
  old_readme_text = rf.read()
233
233
 
234
234
  new_readme_text = re.sub(
@@ -273,7 +273,7 @@ def update_readme(project_version: str, *, dry_run: bool, verbose: bool):
273
273
 
274
274
 
275
275
  def update_sphinx_conf(project_version: str, *, dry_run: bool, verbose: bool):
276
- with open("./docs/conf.py", mode="r", encoding="utf8") as scf:
276
+ with open("./docs/conf.py", encoding="utf8") as scf:
277
277
  old_sphinx_conf = scf.read()
278
278
 
279
279
  updated_version_section = textwrap.dedent(
@@ -320,7 +320,7 @@ def main():
320
320
 
321
321
  _log.debug(f"Invoked with {args=}")
322
322
 
323
- with open("./pyproject.toml", mode="r", encoding="utf8") as pf:
323
+ with open("./pyproject.toml", encoding="utf8") as pf:
324
324
  pyproject_config = tomllib.loads(pf.read())
325
325
  current_version = str(pyproject_config["project"]["version"])
326
326
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ya_tagscript"
7
- version = "1.7.2"
7
+ version = "2.0.1"
8
8
  description = "Yet Another TagScript fork. An easy drop in user-provided Templating system."
9
9
  readme = "README.md"
10
10
  license = "CC-BY-4.0"
@@ -19,6 +19,7 @@ classifiers = [
19
19
  "Programming Language :: Python :: 3.12",
20
20
  "Programming Language :: Python :: 3.13",
21
21
  "Programming Language :: Python :: 3.14",
22
+ "Programming Language :: Python :: 3.15",
22
23
  "Operating System :: OS Independent",
23
24
  ]
24
25
  requires-python = ">=3.11"
@@ -42,7 +43,7 @@ dev = [
42
43
  "docutils-stubs>=0.0.22",
43
44
  "enum-tools[sphinx]>=0.13.0",
44
45
  "hatchling>=1.28.0",
45
- "isort>=8.0.1",
46
+ "isort>=9.0.2",
46
47
  "jinja2>=3.1.6",
47
48
  "mypy>=1.19.1",
48
49
  "myst-parser>=4.0.1",
@@ -56,9 +57,18 @@ dev = [
56
57
  "types-python-dateutil>=2.9.0.20260305",
57
58
  ]
58
59
 
60
+ # ========== BLACK ==========
59
61
  [tool.black]
60
62
  target-version = ["py311", "py312", "py313", "py314"]
61
63
 
64
+ # ========== ISORT ==========
65
+ [tool.isort]
66
+ profile = "black"
67
+ py_version = 311
68
+ reverse_relative = true
69
+ sort_reexports = true
70
+
71
+ # ========== COVERAGE ==========
62
72
  [tool.coverage.report]
63
73
  fail_under = 100
64
74
  show_missing = true
@@ -73,14 +83,11 @@ branch = true
73
83
  source = ['src/', 'tests/']
74
84
  relative_files = true
75
85
 
76
- [tool.isort]
77
- profile = "black"
78
- py_version = 311
79
- reverse_relative = true
80
-
86
+ # ========== MYPY ==========
81
87
  [tool.mypy]
82
88
  strict = true
83
89
 
90
+ # ========== PYRIGHT ==========
84
91
  [tool.pyright]
85
92
  typeCheckingMode = 'strict'
86
93
  # enable some non-default rules
@@ -92,6 +99,7 @@ reportUnknownLambdaType = "none"
92
99
  reportUnknownMemberType = "none"
93
100
  reportUnknownVariableType = "none"
94
101
 
102
+ # ========== PYTEST ==========
95
103
  [tool.pytest]
96
104
  filterwarnings = [
97
105
  "error",
@@ -99,6 +107,7 @@ filterwarnings = [
99
107
  'ignore:Deprecated since v1.7. Use _VALID_NAMES instead:DeprecationWarning'
100
108
  ]
101
109
 
110
+ # ========== TOX ==========
102
111
  [tool.tox]
103
112
  requires = ["tox>=4"]
104
113
  env_list = [
@@ -162,7 +171,7 @@ commands = [
162
171
 
163
172
  [tool.tox.gh.python]
164
173
  "3.15" = ["3.15"]
165
- "3.14" = ["3.14", "mypy_check", "pyright_check", "lowest_bounds", "coverage"]
174
+ "3.14" = ["3.14"]
166
175
  "3.13" = ["3.13"]
167
176
  "3.12" = ["3.12"]
168
177
  "3.11" = ["3.11"]
@@ -51,11 +51,7 @@ class RangeBlock(BlockABC):
51
51
 
52
52
  def process(self, ctx: Context) -> str | None:
53
53
  declaration = ctx.node.declaration
54
- # go via _accepted_names to preserve compatibility during the deprecation
55
- valid_names = (
56
- self._accepted_names if self._accepted_names is not None else set()
57
- )
58
- if declaration is None or declaration not in valid_names:
54
+ if declaration is None or declaration not in self._VALID_NAMES:
59
55
  return None
60
56
 
61
57
  payload = ctx.node.payload
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- import warnings
4
3
  from abc import ABC, abstractmethod
5
4
  from typing import TYPE_CHECKING
6
5
 
@@ -66,38 +65,6 @@ class BlockABC(ABC):
66
65
  Subclasses must override this if they require this restriction.
67
66
  """
68
67
 
69
- @property
70
- def _accepted_names(self) -> set[str] | None:
71
- """
72
- A :class:`set` of all valid block names (all lowercase) or :data:`None` if no
73
- block names can be defined (e.g. variable getter blocks).
74
-
75
- .. versionchanged:: 1.7
76
-
77
- This method is no longer abstract. The default implementation matches the
78
- previously described behaviour, but it returns :attr:`BlockABC._VALID_NAMES`
79
- (or :data:`None` for empty sets in :attr:`BlockABC._VALID_NAMES`).
80
-
81
- .. deprecated:: 1.7
82
-
83
- Use :attr:`~BlockABC._VALID_NAMES` instead. This will be removed in 2.0.
84
-
85
- Returns
86
- -------
87
- set[str] | None
88
- A set of lowercase strings representing possible acceptable block
89
- declarations that can be handled by this block.
90
- May be :data:`None` if the block does not have predefined names (e.g.
91
- variable getter blocks).
92
- """
93
- warnings.warn(
94
- "Deprecated since v1.7. Use _VALID_NAMES instead",
95
- DeprecationWarning,
96
- stacklevel=2,
97
- )
98
-
99
- return self._VALID_NAMES if len(self._VALID_NAMES) > 0 else None
100
-
101
68
  @abstractmethod
102
69
  def process(self, ctx: Context) -> str | None:
103
70
  """
@@ -160,11 +127,12 @@ class BlockABC(ABC):
160
127
  bool
161
128
  Whether the block will accept processing of the Context
162
129
  """
163
- names = self._accepted_names if self._accepted_names is not None else set()
164
130
  node = ctx.node
165
131
  declaration = node.declaration
166
132
 
167
- name_match = (declaration is not None) and (declaration.lower() in names)
133
+ name_match = (declaration is not None) and (
134
+ declaration.lower() in self._VALID_NAMES
135
+ )
168
136
  param_match = True
169
137
  payload_match = True
170
138
  if self.requires_any_parameter: