pineforge-codegen 0.10.3__tar.gz → 1.0.0rc1__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 (476) hide show
  1. pineforge_codegen-1.0.0rc1/CHANGELOG.md +245 -0
  2. pineforge_codegen-1.0.0rc1/CONTRIBUTING.md +119 -0
  3. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/LEGAL.md +2 -2
  4. pineforge_codegen-1.0.0rc1/PKG-INFO +728 -0
  5. pineforge_codegen-1.0.0rc1/README.md +507 -0
  6. pineforge_codegen-1.0.0rc1/VERSION +1 -0
  7. pineforge_codegen-1.0.0rc1/docs/PUBLIC_CONTRACT.md +118 -0
  8. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/docs/codegen-coverage-gaps.md +58 -52
  9. pineforge_codegen-1.0.0rc1/docs/pine-cap-activation.md +40 -0
  10. pineforge_codegen-1.0.0rc1/pineforge_codegen/__init__.py +186 -0
  11. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/__init__.py +2 -0
  12. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/base.py +767 -77
  13. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/call_handlers.py +268 -42
  14. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/contracts.py +37 -0
  15. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/diagnostics.py +30 -4
  16. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/tables.py +49 -8
  17. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/types.py +33 -1
  18. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/ast_nodes.py +32 -1
  19. pineforge_codegen-1.0.0rc1/pineforge_codegen/block_locals.py +185 -0
  20. pineforge_codegen-1.0.0rc1/pineforge_codegen/builtin_keywords.py +42 -0
  21. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/base.py +907 -159
  22. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/constant_fold.py +131 -0
  23. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/drawing.py +221 -79
  24. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/emit_top.py +961 -213
  25. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/helpers.py +609 -0
  26. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/host_members.py +162 -0
  27. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/input.py +252 -85
  28. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/security.py +7808 -0
  29. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/session_market.py +71 -0
  30. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/ta.py +2102 -0
  31. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/tables.py +205 -71
  32. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/tv_number_format.py +270 -0
  33. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/types.py +4015 -0
  34. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/visit_call.py +929 -131
  35. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/visit_expr.py +765 -63
  36. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/visit_stmt.py +610 -52
  37. pineforge_codegen-1.0.0rc1/pineforge_codegen/external_requests.py +877 -0
  38. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/lexer.py +104 -22
  39. pineforge_codegen-1.0.0rc1/pineforge_codegen/library_inline.py +1304 -0
  40. pineforge_codegen-1.0.0rc1/pineforge_codegen/library_modules.py +126 -0
  41. pineforge_codegen-1.0.0rc1/pineforge_codegen/library_v5.py +683 -0
  42. pineforge_codegen-1.0.0rc1/pineforge_codegen/limits.py +138 -0
  43. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/method_binding.py +33 -0
  44. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/parser.py +384 -68
  45. pineforge_codegen-1.0.0rc1/pineforge_codegen/pine_libraries.py +266 -0
  46. pineforge_codegen-1.0.0rc1/pineforge_codegen/pine_spelling.py +216 -0
  47. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/pragmas.py +64 -10
  48. pineforge_codegen-1.0.0rc1/pineforge_codegen/security_contexts.py +1585 -0
  49. pineforge_codegen-1.0.0rc1/pineforge_codegen/session_reads.py +84 -0
  50. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/signatures.py +48 -23
  51. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/support_checker.py +1106 -85
  52. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/symbols.py +4 -2
  53. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pyproject.toml +23 -6
  54. pineforge_codegen-0.10.3/.claude/settings.json +0 -15
  55. pineforge_codegen-0.10.3/.github/dependabot.yml +0 -20
  56. pineforge_codegen-0.10.3/.github/workflows/gate.yml +0 -82
  57. pineforge_codegen-0.10.3/.github/workflows/promote-baseline.yml +0 -235
  58. pineforge_codegen-0.10.3/.github/workflows/publish-pyodide.yml +0 -80
  59. pineforge_codegen-0.10.3/.github/workflows/release.yml +0 -174
  60. pineforge_codegen-0.10.3/.github/workflows/test.yml +0 -42
  61. pineforge_codegen-0.10.3/AGENTS.md +0 -467
  62. pineforge_codegen-0.10.3/CLAUDE.md +0 -412
  63. pineforge_codegen-0.10.3/PKG-INFO +0 -463
  64. pineforge_codegen-0.10.3/PYODIDE_TARGET +0 -1
  65. pineforge_codegen-0.10.3/README.md +0 -243
  66. pineforge_codegen-0.10.3/VERSION +0 -1
  67. pineforge_codegen-0.10.3/gate/compare.mjs +0 -69
  68. pineforge_codegen-0.10.3/gate/glue.py +0 -35
  69. pineforge_codegen-0.10.3/gate/oracle.py +0 -34
  70. pineforge_codegen-0.10.3/gate/run-gate.mjs +0 -133
  71. pineforge_codegen-0.10.3/gate/selftest.mjs +0 -57
  72. pineforge_codegen-0.10.3/npm/README.md +0 -25
  73. pineforge_codegen-0.10.3/npm/index.mjs +0 -30
  74. pineforge_codegen-0.10.3/npm/package.json +0 -34
  75. pineforge_codegen-0.10.3/package-lock.json +0 -132
  76. pineforge_codegen-0.10.3/package.json +0 -16
  77. pineforge_codegen-0.10.3/pineforge_codegen/__init__.py +0 -95
  78. pineforge_codegen-0.10.3/pineforge_codegen/codegen/helpers.py +0 -188
  79. pineforge_codegen-0.10.3/pineforge_codegen/codegen/security.py +0 -3813
  80. pineforge_codegen-0.10.3/pineforge_codegen/codegen/ta.py +0 -1005
  81. pineforge_codegen-0.10.3/pineforge_codegen/codegen/types.py +0 -2022
  82. pineforge_codegen-0.10.3/scripts/build-npm-package.mjs +0 -74
  83. pineforge_codegen-0.10.3/scripts/dump-tables.py +0 -148
  84. pineforge_codegen-0.10.3/scripts/worker-template.mjs +0 -70
  85. pineforge_codegen-0.10.3/tests/__init__.py +0 -0
  86. pineforge_codegen-0.10.3/tests/_compile.py +0 -244
  87. pineforge_codegen-0.10.3/tests/fixtures/matrix_eigen_pca.pine +0 -43
  88. pineforge_codegen-0.10.3/tests/gate-corpus/err/const_ns_plot_style_free.pine +0 -3
  89. pineforge_codegen-0.10.3/tests/gate-corpus/err/const_ns_shape_free.pine +0 -3
  90. pineforge_codegen-0.10.3/tests/gate-corpus/err/export_func.pine +0 -3
  91. pineforge_codegen-0.10.3/tests/gate-corpus/err/footprint_new.pine +0 -3
  92. pineforge_codegen-0.10.3/tests/gate-corpus/err/hard_reject_dividends.pine +0 -3
  93. pineforge_codegen-0.10.3/tests/gate-corpus/err/matrix_unknown_elem.pine +0 -3
  94. pineforge_codegen-0.10.3/tests/gate-corpus/err/multi_error_one_line.pine +0 -3
  95. pineforge_codegen-0.10.3/tests/gate-corpus/err/sec_tf_invalid.pine +0 -3
  96. pineforge_codegen-0.10.3/tests/gate-corpus/err/unknown_color.pine +0 -3
  97. pineforge_codegen-0.10.3/tests/gate-corpus/err/unknown_math.pine +0 -3
  98. pineforge_codegen-0.10.3/tests/gate-corpus/err/unknown_str.pine +0 -3
  99. pineforge_codegen-0.10.3/tests/gate-corpus/err/unknown_strategy_fn.pine +0 -3
  100. pineforge_codegen-0.10.3/tests/gate-corpus/err/unknown_syminfo.pine +0 -3
  101. pineforge_codegen-0.10.3/tests/gate-corpus/err/unknown_ta.pine +0 -3
  102. pineforge_codegen-0.10.3/tests/gate-corpus/ok/AAPL__session-ismarket-nyse-rth-01.pine +0 -16
  103. pineforge_codegen-0.10.3/tests/gate-corpus/ok/AAPL__time-tradingday-daily-reset-counter-01.pine +0 -44
  104. pineforge_codegen-0.10.3/tests/gate-corpus/ok/QQQ__session-ispremarket-nasdaq-01.pine +0 -16
  105. pineforge_codegen-0.10.3/tests/gate-corpus/ok/SPY__session-firstbar-vwap-anchor-01.pine +0 -29
  106. pineforge_codegen-0.10.3/tests/gate-corpus/ok/SPY__session-lastbar-flatten-01.pine +0 -19
  107. pineforge_codegen-0.10.3/tests/gate-corpus/ok/chart_bg_color.pine +0 -3
  108. pineforge_codegen-0.10.3/tests/gate-corpus/ok/crypto-htf__mtf-htf-monthly-ema-cross-01.pine +0 -26
  109. pineforge_codegen-0.10.3/tests/gate-corpus/ok/crypto-leverage__leverage-margin-call-perp-5x-01.pine +0 -54
  110. pineforge_codegen-0.10.3/tests/gate-corpus/ok/divergent_last_bar_index.pine +0 -7
  111. pineforge_codegen-0.10.3/tests/gate-corpus/ok/forex__symbol-fx-5dp-eurusd-01.pine +0 -32
  112. pineforge_codegen-0.10.3/tests/gate-corpus/ok/futures__symbol-futures-pointvalue-es-01.pine +0 -36
  113. pineforge_codegen-0.10.3/tests/gate-corpus/ok/tutorial__macd__strategy.pine +0 -45
  114. pineforge_codegen-0.10.3/tests/gate-corpus/ok/tutorial__mtf__strategy_htf.pine +0 -49
  115. pineforge_codegen-0.10.3/tests/gate-corpus/ok/tutorial__mtf__strategy_ltf.pine +0 -58
  116. pineforge_codegen-0.10.3/tests/gate-corpus/ok/us-equity__symbol-equity-rth-gaps-aapl-01.pine +0 -34
  117. pineforge_codegen-0.10.3/tests/gate-corpus/ok/us-equity__us-equity-exchange-tz-intraday-cap-01.pine +0 -30
  118. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__analyzer-parity-choch-bos-isolator-01.pine +0 -83
  119. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__analyzer-parity-edge-margin-50-pct-01.pine +0 -39
  120. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__analyzer-parity-percent-of-equity-sizing-01.pine +0 -42
  121. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__analyzer-parity-small-equity-fraction-01.pine +0 -44
  122. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__analyzer-parity-stop-limit-timing-01.pine +0 -54
  123. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__analyzer-self-test-multi-mode-01.pine +0 -80
  124. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__anomaly-equity-mirror-strategy-equity-01.pine +0 -56
  125. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-off-01b.pine +0 -41
  126. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-on-01a.pine +0 -44
  127. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-atr-trail-series-int-points-01.pine +0 -57
  128. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-atr-trailing-stop-state-01.pine +0 -60
  129. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-entry-exit-same-pass-attach-01.pine +0 -27
  130. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-exit-stop-limit-trail-same-bar-01.pine +0 -41
  131. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-exit-three-way-set-once-entry-01.pine +0 -49
  132. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-exit-tp-sl-fixed-01.pine +0 -27
  133. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-narrow-stop-limit-with-trail8-01.pine +0 -49
  134. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-partial-exit-qty-percent-01.pine +0 -28
  135. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-same-id-exit-replace-01.pine +0 -27
  136. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-tp-sl-oca-reduce-isolate-01.pine +0 -64
  137. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-trail-points-no-offset-explicit-01.pine +0 -50
  138. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-trail-points-with-offset-only-01.pine +0 -34
  139. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__bracket-trailing-activation-offset-path-01.pine +0 -35
  140. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__cap-max-intraday-filled-orders-isolate-01.pine +0 -45
  141. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__cap-risk-gates-allow-max-intraday-01.pine +0 -36
  142. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-4emarsi-integration-01.pine +0 -99
  143. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-4emarsi-quad-ema-stack-01.pine +0 -59
  144. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-4emarsi-rsi-pullback-latch-01.pine +0 -61
  145. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-4emarsi-session-window-nbar-exit-01.pine +0 -60
  146. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-boscurv-integration-01.pine +0 -80
  147. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-boscurv-linreg-slope-channel-01.pine +0 -64
  148. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-boscurv-pivot-bos-trigger-01.pine +0 -55
  149. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-bracket-cap-range-pending-stop-01.pine +0 -98
  150. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-adx-regime-classify-01.pine +0 -87
  151. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-bb-kc-squeeze-release-01.pine +0 -62
  152. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-cooldown-daily-cap-01.pine +0 -72
  153. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-equity-feedback-sizing-01.pine +0 -95
  154. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-integration-01.pine +0 -236
  155. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-pivot-liquidity-sweep-01.pine +0 -66
  156. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-pressure-gauge-01.pine +0 -79
  157. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-rsi-macd-momentum-01.pine +0 -88
  158. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-ies-three-ema-bias-score-01.pine +0 -82
  159. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kanuck-calc-on-every-tick-01.pine +0 -55
  160. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kanuck-integration-01.pine +0 -85
  161. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kanuck-kama-state-recurrence-01.pine +0 -54
  162. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kanuck-max-bars-back-500-01.pine +0 -67
  163. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kkb-ema-atr-breakout-band-01.pine +0 -48
  164. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kkb-integration-01.pine +0 -68
  165. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kkb-kalman-filter-1d-01.pine +0 -58
  166. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-kkb-margin-100-pct-01.pine +0 -46
  167. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-liqsweep-integration-01.pine +0 -89
  168. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-liqsweep-pivot-hh-ll-01.pine +0 -58
  169. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-liqsweep-wait-one-continuation-01.pine +0 -73
  170. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-liqsweep-wick-pierce-close-back-01.pine +0 -55
  171. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-marketshift-integration-01.pine +0 -97
  172. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-marketshift-pivot-state-machine-01.pine +0 -64
  173. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-marketshift-rolling-highest-lowest-01.pine +0 -51
  174. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-marketshift-state-edge-detector-01.pine +0 -69
  175. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-scalping-fast-ma-cross-trigger-01.pine +0 -46
  176. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-scalping-integration-01.pine +0 -61
  177. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-scalping-tight-tp-sl-points-01.pine +0 -63
  178. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-trendmaster-integration-01.pine +0 -124
  179. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-trendmaster-line-new-projection-01.pine +0 -92
  180. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-trendmaster-pivot-anchored-bracket-01.pine +0 -75
  181. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-trendmaster-three-tier-ema-state-01.pine +0 -66
  182. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-trendmaster-trend-momentum-structure-gate-01.pine +0 -73
  183. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-cumulative-volume-delta-01.pine +0 -54
  184. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-fvg-active-zones-01.pine +0 -96
  185. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-integration-01.pine +0 -195
  186. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-manual-adx-regime-01.pine +0 -73
  187. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-pivot-strength-5-01.pine +0 -55
  188. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-rsi-smooth-divergence-01.pine +0 -57
  189. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-session-tz-newyork-01.pine +0 -56
  190. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-vcp-vol-zscore-anomaly-01.pine +0 -52
  191. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-wunderscalper-alert-templates-01.pine +0 -56
  192. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-wunderscalper-explicit-reverse-01.pine +0 -53
  193. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__composite-wunderscalper-integration-01.pine +0 -53
  194. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__input-source-runtime-override-high-01.pine +0 -30
  195. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__input-source-subscript-hl2-01.pine +0 -27
  196. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ltf-bool-array-bull-majority-01.pine +0 -44
  197. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ltf-numeric-float-ratio15-01.pine +0 -49
  198. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-01.pine +0 -44
  199. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-rsi-cross-08a.pine +0 -37
  200. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__magnifier-tick-dist-volume-weighted-on-01.pine +0 -41
  201. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__matrix-bool-mask-explicit-utc-tz-01.pine +0 -60
  202. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__matrix-bool-mask-no-transpose-01.pine +0 -38
  203. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__matrix-bool-mask-transpose-roundtrip-01.pine +0 -38
  204. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__matrix-bool-regime-mask-24x7-01.pine +0 -65
  205. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__matrix-covariance-eigen-pca-01.pine +0 -43
  206. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__matrix-eigen-rank-deficient-cov-01.pine +0 -85
  207. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__max-bars-back-function-call-deep-history-01.pine +0 -23
  208. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-daily-array-median-percentrank-01.pine +0 -26
  209. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-daily-ema26-warmup-01.pine +0 -41
  210. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-daily-prev-high-break-01.pine +0 -32
  211. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-dual-tf-60-240-rising-01.pine +0 -28
  212. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-60-close-change-baseline-01.pine +0 -57
  213. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-60-close-roll-01.pine +0 -25
  214. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-60-gaps-on-roll-01.pine +0 -34
  215. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-60-rsi14-inside-security-01.pine +0 -25
  216. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-60-sma20-inside-security-01.pine +0 -27
  217. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-60-volume-spike-01.pine +0 -26
  218. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-confluence-manual-trail-01.pine +0 -77
  219. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-confluence-static-bracket-01.pine +0 -75
  220. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-htf-weekly-sma-cross-01.pine +0 -24
  221. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-roll-state-60-240-d-minimal-01.pine +0 -36
  222. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-triple-tf-close-confluence-01.pine +0 -39
  223. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__mtf-triple-tf-macd-hist-confluence-01.pine +0 -47
  224. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__na-deep-history-int-na-01.pine +0 -51
  225. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__na-nz-fixnan-history-chain-01.pine +0 -29
  226. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__oca-exit-bracket-internal-cancel-01.pine +0 -39
  227. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__oca-multi-bracket-isolation-01.pine +0 -46
  228. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__oca-raw-strategy-order-reduce-01.pine +0 -33
  229. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-close-all-cancel-all-01.pine +0 -33
  230. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-close-immediate-vs-next-bar-01.pine +0 -27
  231. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-cross-entry-cancel-same-pass-01.pine +0 -38
  232. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-cross-entry-close-same-pass-01.pine +0 -38
  233. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-cross-exit-close-same-pass-01.pine +0 -32
  234. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-deferred-flip-guaranteed-gap-stops-01.pine +0 -63
  235. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-deferred-flip-pooc-cross-bar-01.pine +0 -54
  236. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-four-bar-stop-no-close-01.pine +0 -30
  237. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-side-same-id-stop-no-cancel-01.pine +0 -31
  238. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-both-touch-priority-01.pine +0 -30
  239. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-cancel-rotation-01.pine +0 -32
  240. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-far-only-01.pine +0 -22
  241. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-near-only-01.pine +0 -22
  242. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-open-high-first-path-01.pine +0 -26
  243. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-open-low-first-path-01.pine +0 -26
  244. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-open-tie-01.pine +0 -30
  245. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-source-order-long-first-01.pine +0 -23
  246. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-dual-stop-source-order-short-first-01.pine +0 -23
  247. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-entry-implicit-reversal-exit-01.pine +0 -29
  248. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-flip-stop-no-paired-close-01.pine +0 -37
  249. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-market-close-fill-basis-01.pine +0 -27
  250. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-one-side-four-bar-far-opposite-01.pine +0 -28
  251. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-opposite-entry-close-same-pass-01.pine +0 -33
  252. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-percent-equity-cash-commission-01.pine +0 -21
  253. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-process-on-close-false-01.pine +0 -35
  254. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-process-on-close-true-01.pine +0 -36
  255. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-range-expansion-pending-stop-01.pine +0 -55
  256. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-entry-close-same-bar-01.pine +0 -36
  257. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-market-entry-repeat-01.pine +0 -30
  258. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-stop-after-flat-01.pine +0 -31
  259. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-stop-cross-before-modify-01.pine +0 -41
  260. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-stop-minute-zero-01.pine +0 -28
  261. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-stop-modification-01.pine +0 -31
  262. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-stop-raise-only-01.pine +0 -31
  263. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-same-id-stop-window-four-bars-01.pine +0 -24
  264. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-stale-stop-after-close-no-cancel-01.pine +0 -29
  265. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-stop-cancel-no-regime-close-01.pine +0 -47
  266. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-stop-entry-cancel-opposite-01.pine +0 -35
  267. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-stop-entry-reversal-grouping-01.pine +0 -33
  268. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__order-stop-entry-touch-boundary-01.pine +0 -38
  269. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__pyramid-cash-fractional-commission-01.pine +0 -37
  270. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__pyramid-close-id-grouping-01.pine +0 -40
  271. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__pyramid-deferred-flip-close-all-01.pine +0 -44
  272. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__pyramid-flip-stop-pyramiding-2-01.pine +0 -46
  273. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__recompute-alma-sar-corr-magnifier-01.pine +0 -36
  274. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__recompute-mtf-rsi-macd-bb-01.pine +0 -51
  275. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__risk-max-contracts-held-gate-pyramid-01.pine +0 -32
  276. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__session-hour-minute-pulse-filter-01.pine +0 -25
  277. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__session-ny-spring-forward-dst-01.pine +0 -40
  278. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__stats-eventrades-zero-pnl-count-01.pine +0 -48
  279. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-accdist-ema-cross-01.pine +0 -24
  280. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-bb-kc-squeeze-breakout-01.pine +0 -57
  281. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-bb-rsi-mean-reversion-01.pine +0 -41
  282. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-cci-threshold-cross-01.pine +0 -39
  283. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-chandelier-exit-direction-01.pine +0 -45
  284. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-closedtrades-risk-introspection-01.pine +0 -37
  285. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-cmo-9-zero-cross-01.pine +0 -23
  286. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-cog-10-signal-cross-01.pine +0 -25
  287. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-dmi-adx-di-cross-01.pine +0 -27
  288. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-donchian-channel-breakout-01.pine +0 -42
  289. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-dual-ma-switch-dispatch-01.pine +0 -42
  290. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-dual-thrust-open-anchored-range-01.pine +0 -47
  291. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-elder-ray-bull-bear-power-01.pine +0 -45
  292. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-ema-ribbon-stack-transition-01.pine +0 -40
  293. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-engulfing-candle-pattern-01.pine +0 -60
  294. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-highestbars-lowestbars-breakout-01.pine +0 -47
  295. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-hma-55-close-cross-01.pine +0 -26
  296. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-hma-fast-slow-cross-01.pine +0 -30
  297. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-inside-bar-engulfing-01.pine +0 -48
  298. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-kama-style-efficiency-ratio-01.pine +0 -50
  299. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-keltner-channel-break-01.pine +0 -62
  300. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-linreg-stdev-channel-revert-01.pine +0 -40
  301. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-macd-12-26-9-line-signal-cross-01.pine +0 -26
  302. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-macd-histogram-reversal-01.pine +0 -32
  303. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-macd-line-gt-signal-continuous-state-01.pine +0 -23
  304. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-map-regime-threshold-lookup-01.pine +0 -27
  305. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-median-vs-ema-cross-01.pine +0 -30
  306. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-mfi-14-bands-20-80-01.pine +0 -24
  307. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-momentum-roc-zero-cross-01.pine +0 -38
  308. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-multi-indicator-score-composite-01.pine +0 -62
  309. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-nvi-pvi-cross-01.pine +0 -26
  310. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-obv-ema-cross-01.pine +0 -24
  311. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-percentrank-mean-reversion-01.pine +0 -43
  312. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-pivot-array-unshift-pop-01.pine +0 -62
  313. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-pivot-atr-stop-target-01.pine +0 -46
  314. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-pivot-confirmed-break-01.pine +0 -62
  315. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-pivot-point-levels-break-01.pine +0 -28
  316. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-pvt-ema-cross-01.pine +0 -26
  317. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-range-filter-var-band-01.pine +0 -53
  318. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rci-14-zero-cross-01.pine +0 -26
  319. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rsi-bb-self-bands-01.pine +0 -44
  320. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rsi-ema-signal-cross-01.pine +0 -32
  321. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rsi-macd-and-continuous-state-01.pine +0 -33
  322. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rsi14-bands-30-70-01.pine +0 -26
  323. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rsi14-cross-50-01.pine +0 -27
  324. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rsi14-gt-50-continuous-state-01.pine +0 -27
  325. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-rsi14-gt60-lt45-no-matrix-01.pine +0 -27
  326. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-sar-flip-entry-01.pine +0 -60
  327. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-sma-152-close-cross-01.pine +0 -27
  328. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-sma-dual-cross-01.pine +0 -54
  329. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-stdev-sma-expansion-break-01.pine +0 -56
  330. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-stoch-slow-k-d-cross-01.pine +0 -60
  331. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-stochastic-rsi-cross-01.pine +0 -39
  332. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-str-match-regex-filter-01.pine +0 -34
  333. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-supertrend-adx-filter-01.pine +0 -45
  334. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-supertrend-direction-flip-01.pine +0 -65
  335. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-triple-sma-stack-latch-01.pine +0 -46
  336. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-tsi-25-13-signal-cross-01.pine +0 -22
  337. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-volume-spike-atr-breakout-01.pine +0 -40
  338. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-vwma-vs-sma-divergence-01.pine +0 -33
  339. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__ta-wpr-14-bands-01.pine +0 -22
  340. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__timeframe-main-period-self-adaptive-01.pine +0 -34
  341. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-calls-sibling-cumulative-01.pine +0 -98
  342. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-default-param-kwargs-01.pine +0 -64
  343. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-drives-strategy-entry-01.pine +0 -62
  344. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-extra-primitive-args-01.pine +0 -42
  345. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-feeds-strategy-exit-prices-01.pine +0 -55
  346. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-in-for-loop-01.pine +0 -55
  347. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-in-if-else-branch-01.pine +0 -65
  348. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-in-switch-arms-01.pine +0 -64
  349. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-in-while-loop-01.pine +0 -58
  350. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-mutating-self-ref-01.pine +0 -51
  351. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-on-array-element-01.pine +0 -98
  352. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-reads-strategy-state-01.pine +0 -53
  353. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-receives-ta-series-param-01.pine +0 -57
  354. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-scalar-return-01.pine +0 -51
  355. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-tuple-return-destructure-01.pine +0 -61
  356. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-udt-return-from-func-01.pine +0 -67
  357. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-uses-history-globals-01.pine +0 -60
  358. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-uses-math-funcs-01.pine +0 -59
  359. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-uses-na-nz-fixnan-01.pine +0 -50
  360. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-var-instance-streak-01.pine +0 -51
  361. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-method-windowed-method-chain-01.pine +0 -78
  362. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__udt-regime-stack-stress-01.pine +0 -186
  363. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__vwap-bands-breakout-1sigma-01.pine +0 -21
  364. pineforge_codegen-0.10.3/tests/gate-corpus/ok/validation__vwap-bands-mean-reversion-2sigma-01.pine +0 -23
  365. pineforge_codegen-0.10.3/tests/golden/matrix_eigen_pca.cpp +0 -397
  366. pineforge_codegen-0.10.3/tests/test_analyzer.py +0 -221
  367. pineforge_codegen-0.10.3/tests/test_analyzer_matrix_inference.py +0 -77
  368. pineforge_codegen-0.10.3/tests/test_analyzer_ta_return_types.py +0 -108
  369. pineforge_codegen-0.10.3/tests/test_anchor_tf_change.py +0 -38
  370. pineforge_codegen-0.10.3/tests/test_anchor_time.py +0 -58
  371. pineforge_codegen-0.10.3/tests/test_anchor_vwap.py +0 -75
  372. pineforge_codegen-0.10.3/tests/test_array_bounds_insert_fill_slice.py +0 -277
  373. pineforge_codegen-0.10.3/tests/test_array_checked_access.py +0 -999
  374. pineforge_codegen-0.10.3/tests/test_array_empty_aggregates.py +0 -198
  375. pineforge_codegen-0.10.3/tests/test_array_terminal_returns.py +0 -1493
  376. pineforge_codegen-0.10.3/tests/test_calc_on_order_fills_codegen.py +0 -460
  377. pineforge_codegen-0.10.3/tests/test_callable_series_param_types.py +0 -569
  378. pineforge_codegen-0.10.3/tests/test_callable_ta_forwarded_length.py +0 -639
  379. pineforge_codegen-0.10.3/tests/test_callable_var_first_reach.py +0 -494
  380. pineforge_codegen-0.10.3/tests/test_codegen_audit_fixes.py +0 -357
  381. pineforge_codegen-0.10.3/tests/test_codegen_determinism.py +0 -171
  382. pineforge_codegen-0.10.3/tests/test_codegen_drawing_data.py +0 -730
  383. pineforge_codegen-0.10.3/tests/test_codegen_drawing_handles.py +0 -41
  384. pineforge_codegen-0.10.3/tests/test_codegen_fallthrough_guards.py +0 -137
  385. pineforge_codegen-0.10.3/tests/test_codegen_golden.py +0 -113
  386. pineforge_codegen-0.10.3/tests/test_codegen_input_getters.py +0 -207
  387. pineforge_codegen-0.10.3/tests/test_codegen_matrix_typed.py +0 -432
  388. pineforge_codegen-0.10.3/tests/test_codegen_new.py +0 -2018
  389. pineforge_codegen-0.10.3/tests/test_codegen_string_escape.py +0 -25
  390. pineforge_codegen-0.10.3/tests/test_codegen_ta_derived_length.py +0 -769
  391. pineforge_codegen-0.10.3/tests/test_codegen_ta_finite_choice_length.py +0 -547
  392. pineforge_codegen-0.10.3/tests/test_codegen_ta_stable_var_literal.py +0 -619
  393. pineforge_codegen-0.10.3/tests/test_codegen_validation_fixes.py +0 -1531
  394. pineforge_codegen-0.10.3/tests/test_collection_scope_isolation.py +0 -841
  395. pineforge_codegen-0.10.3/tests/test_compile_corpus.py +0 -145
  396. pineforge_codegen-0.10.3/tests/test_compile_smoke.py +0 -874
  397. pineforge_codegen-0.10.3/tests/test_errors.py +0 -33
  398. pineforge_codegen-0.10.3/tests/test_extract_inputs.py +0 -107
  399. pineforge_codegen-0.10.3/tests/test_float_relational_runtime.py +0 -258
  400. pineforge_codegen-0.10.3/tests/test_glue_smoke.py +0 -43
  401. pineforge_codegen-0.10.3/tests/test_hungpixi_regressions.py +0 -144
  402. pineforge_codegen-0.10.3/tests/test_import_all.py +0 -34
  403. pineforge_codegen-0.10.3/tests/test_input_time_int64.py +0 -39
  404. pineforge_codegen-0.10.3/tests/test_int64_reassign_promotion.py +0 -73
  405. pineforge_codegen-0.10.3/tests/test_int64_time_storage.py +0 -56
  406. pineforge_codegen-0.10.3/tests/test_lazy_edge_ta_every_bar.py +0 -685
  407. pineforge_codegen-0.10.3/tests/test_lazy_source_clock.py +0 -266
  408. pineforge_codegen-0.10.3/tests/test_lazy_source_clock_runtime.py +0 -219
  409. pineforge_codegen-0.10.3/tests/test_lexer.py +0 -57
  410. pineforge_codegen-0.10.3/tests/test_map_call_diagnostics.py +0 -342
  411. pineforge_codegen-0.10.3/tests/test_map_param_methods.py +0 -345
  412. pineforge_codegen-0.10.3/tests/test_map_terminal_returns.py +0 -429
  413. pineforge_codegen-0.10.3/tests/test_math_sign_na_codegen.py +0 -114
  414. pineforge_codegen-0.10.3/tests/test_matrix_identity_checkpoint.py +0 -94
  415. pineforge_codegen-0.10.3/tests/test_matrix_na_lifecycle.py +0 -741
  416. pineforge_codegen-0.10.3/tests/test_matrix_void_method_return.py +0 -168
  417. pineforge_codegen-0.10.3/tests/test_method_receiver_types.py +0 -141
  418. pineforge_codegen-0.10.3/tests/test_method_written_callsite_lifecycle.py +0 -461
  419. pineforge_codegen-0.10.3/tests/test_na_reassign_retype.py +0 -183
  420. pineforge_codegen-0.10.3/tests/test_na_relational_lowering.py +0 -345
  421. pineforge_codegen-0.10.3/tests/test_official_surface.py +0 -475
  422. pineforge_codegen-0.10.3/tests/test_parser.py +0 -413
  423. pineforge_codegen-0.10.3/tests/test_persistent_callable_owner_state.py +0 -1438
  424. pineforge_codegen-0.10.3/tests/test_pinemap_boundaries_and_order.py +0 -257
  425. pineforge_codegen-0.10.3/tests/test_pinemap_cold_followups_history.py +0 -164
  426. pineforge_codegen-0.10.3/tests/test_pinemap_semantics.py +0 -1041
  427. pineforge_codegen-0.10.3/tests/test_pinemap_temp_receiver_var.py +0 -46
  428. pineforge_codegen-0.10.3/tests/test_runtime_var_initialization.py +0 -413
  429. pineforge_codegen-0.10.3/tests/test_security_helper_local_var.py +0 -585
  430. pineforge_codegen-0.10.3/tests/test_security_lazy_ta_under_conditionals.py +0 -266
  431. pineforge_codegen-0.10.3/tests/test_security_math_reducer.py +0 -53
  432. pineforge_codegen-0.10.3/tests/test_security_ohlc_hist_is_complete.py +0 -104
  433. pineforge_codegen-0.10.3/tests/test_security_ta_input_history_offset.py +0 -558
  434. pineforge_codegen-0.10.3/tests/test_security_tf_input_derived.py +0 -197
  435. pineforge_codegen-0.10.3/tests/test_security_tf_literal.py +0 -99
  436. pineforge_codegen-0.10.3/tests/test_security_tuple_interactions.py +0 -573
  437. pineforge_codegen-0.10.3/tests/test_signatures.py +0 -1010
  438. pineforge_codegen-0.10.3/tests/test_strategy_close_callsite_tokens.py +0 -81
  439. pineforge_codegen-0.10.3/tests/test_support_checker.py +0 -1008
  440. pineforge_codegen-0.10.3/tests/test_support_checker_chart_visible_bar_time.py +0 -21
  441. pineforge_codegen-0.10.3/tests/test_support_checker_color_cast.py +0 -20
  442. pineforge_codegen-0.10.3/tests/test_support_checker_const_namespaces.py +0 -145
  443. pineforge_codegen-0.10.3/tests/test_support_checker_dividends_earnings.py +0 -28
  444. pineforge_codegen-0.10.3/tests/test_support_checker_footprint.py +0 -26
  445. pineforge_codegen-0.10.3/tests/test_support_checker_input_color.py +0 -75
  446. pineforge_codegen-0.10.3/tests/test_support_checker_input_source.py +0 -73
  447. pineforge_codegen-0.10.3/tests/test_support_checker_matrix.py +0 -55
  448. pineforge_codegen-0.10.3/tests/test_support_checker_security_adjustment.py +0 -76
  449. pineforge_codegen-0.10.3/tests/test_support_checker_syminfo_gap_fields.py +0 -120
  450. pineforge_codegen-0.10.3/tests/test_support_checker_timeframe_from_seconds.py +0 -21
  451. pineforge_codegen-0.10.3/tests/test_support_checker_varip.py +0 -53
  452. pineforge_codegen-0.10.3/tests/test_support_checker_volume_row.py +0 -21
  453. pineforge_codegen-0.10.3/tests/test_symbols.py +0 -42
  454. pineforge_codegen-0.10.3/tests/test_ta_official_surface.py +0 -163
  455. pineforge_codegen-0.10.3/tests/test_transpile_division.py +0 -115
  456. pineforge_codegen-0.10.3/tests/test_transpile_enum_order.py +0 -29
  457. pineforge_codegen-0.10.3/tests/test_transpile_pf_trace.py +0 -219
  458. pineforge_codegen-0.10.3/tests/test_transpile_tr_handle_na.py +0 -124
  459. pineforge_codegen-0.10.3/tests/test_transpiler_matrix_kwargs.py +0 -17
  460. pineforge_codegen-0.10.3/tests/test_typed_void_method_precedence.py +0 -161
  461. pineforge_codegen-0.10.3/tests/test_typespec_matrix.py +0 -17
  462. pineforge_codegen-0.10.3/tests/test_udf_series_parameter_history.py +0 -177
  463. pineforge_codegen-0.10.3/tests/test_udt_drawing_field_cleanup.py +0 -91
  464. pineforge_codegen-0.10.3/tests/test_udt_lvalue_alias.py +0 -253
  465. pineforge_codegen-0.10.3/tests/test_udt_na_lifecycle.py +0 -540
  466. pineforge_codegen-0.10.3/tests/test_udt_object_identity.py +0 -888
  467. pineforge_codegen-0.10.3/tests/test_unsupported_reporting.py +0 -178
  468. pineforge_codegen-0.10.3/tests/test_vwap_tuple_unpack.py +0 -146
  469. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/.gitignore +0 -0
  470. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/LICENSE +0 -0
  471. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/__init__.py +0 -0
  472. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/helpers_syminfo.py +0 -0
  473. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/errors.py +0 -0
  474. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/finite_ta_length.py +0 -0
  475. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/tokens.py +0 -0
  476. {pineforge_codegen-0.10.3 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/tv_input_choices.py +0 -0
@@ -0,0 +1,245 @@
1
+ # Changelog
2
+
3
+ Release notes for `pineforge-codegen`. From 1.0.0 on, versions of codegen and
4
+ [`pineforge-engine`](https://github.com/pineforge-4pass/pineforge-engine) are
5
+ supported as exact pairs; on the 0.x line they are independent. See the
6
+ [pairing rule](README.md#engine-pairing).
7
+
8
+ ## Release note policy
9
+
10
+ - Keep a section for each released version, including prereleases. Use the exact
11
+ tag version and release date when published; leave a planned release marked
12
+ **Unreleased** until its tag exists.
13
+ - Summarize changes users can observe: the Python and JSON contract, emitted C++
14
+ and engine requirements, support or warning changes, packaging, and security
15
+ fixes. Link the merged pull requests that supply each change.
16
+ - Call out migration steps and compatibility limits explicitly. A pair change
17
+ requires regenerated C++ and relinked strategy libraries, even when the C
18
+ ABI number is unchanged.
19
+ - Draft from merged changes since the previous release tag, then verify against
20
+ the release commit. A prerelease note describes changes since the preceding
21
+ prerelease or stable tag; the final stable note consolidates the series.
22
+
23
+ ## 1.0.0 — Unreleased
24
+
25
+ This is the proposed 1.0 release note. It covers the changes merged to `main`
26
+ since 0.10.4 (2026-09-06), through
27
+ [#152](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/152). The
28
+ release lane sets the version and date after the matching engine release is
29
+ ready. Codegen `1.0.0` supports only engine `v1.0.0`; `1.0.0-rc.1` supports
30
+ only engine `v1.0.0-rc.1`. Until then, `main` builds only against engine
31
+ `main`. The notes of 0.10.4 and earlier releases are on the
32
+ [GitHub releases page](https://github.com/pineforge-4pass/pineforge-codegen-oss/releases).
33
+
34
+ ### Compatibility and execution
35
+
36
+ - Generated strategies use the engine's `PineStrategyHost` source layer and
37
+ explicitly attach Pine execution policies and cap compatibility
38
+ ([#127](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/127),
39
+ [#128](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/128),
40
+ [#129](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/129)).
41
+ Regenerate C++ and relink libraries for the exact engine pair.
42
+ - Reused strategy handles reset persistent generated state before a new run
43
+ ([#126](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/126)).
44
+ Price-less `strategy.exit` follows the bracket-cancel command and the
45
+ first-tick predicate uses its accessor
46
+ ([#130](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/130)).
47
+ - A `strategy()` that omits `initial_capital`, `default_qty_type` or
48
+ `default_qty_value` gets TradingView's Pine v6 defaults (100,000,
49
+ `strategy.percent_of_equity`, 100); before, the engine's own defaults
50
+ applied (1,000,000 and 1 contract)
51
+ ([#147](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/147)).
52
+ Such a script sizes its orders differently and can book different trades;
53
+ declare the arguments to keep the old sizing.
54
+ - `time()` / `time_close()` with a nonzero `bars_back` or
55
+ `timeframe_bars_back` read another bar's time through the engine host's
56
+ `pine_time_offset`, which the paired engine provides
57
+ ([#152](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/152)).
58
+
59
+ ### Pine translation and diagnostics
60
+
61
+ - Replace Python expression execution in constant folding with bounded
62
+ evaluation ([#125](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/125)).
63
+ Preserve `na` when double-valued expressions enter integer slots
64
+ ([#131](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/131)).
65
+ - Inline `input.*()` TA lengths use the same reset and override path as bound
66
+ inputs ([#133](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/133)).
67
+ `ta.change` receives its lookback in `compute()`, and input titles are
68
+ escaped consistently
69
+ ([#134](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/134)).
70
+ - Input overrides reach precalculated TA sites; `ta.valuewhen`, VWAP anchors,
71
+ input keys, and Pine string escapes follow the validated spellings
72
+ ([#135](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/135)).
73
+ TA arguments are routed by signature; multiline strings, nested input keys,
74
+ generic `input()` lengths, and formatted `log.*` calls are covered
75
+ ([#136](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/136)).
76
+ - Bare `ta.tr`, located parser errors, TradingView numeric text,
77
+ `str.format(formatString=...)`, string-safe trace pragmas, and the native
78
+ floating-point contraction flag are pinned by tests
79
+ ([#138](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/138)).
80
+ The paired TA1 engine handles ALMA `floor`, KC `useTrueRange`, explicit
81
+ VWAP anchors, and pivot-level anchors/developing values
82
+ ([#139](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/139)).
83
+ - `na` follows Pine's rules wherever the generated C++ converts a value: it
84
+ is false in `if`, `?:`, `and`/`or` and boolean parameters, an integer
85
+ conversion of `na` stays `na`, and stored booleans and dynamic series
86
+ indices keep it. Keltner Channel middle bands are `na` until their length
87
+ is warm, as on TradingView. Standalone `ta.ema` warmup, collection history
88
+ and a nullable `str.repeat` result, which the engine cannot yet represent
89
+ exactly, now warn
90
+ ([#140](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/140)).
91
+ - An inverted `array.fill` range leaves the array unchanged and an inverted
92
+ `array.slice` raises TradingView's runtime error, as on TradingView; every
93
+ `array.slice` warns that PineForge copies the slice where TradingView
94
+ aliases it. `request.security` resolves a chart-symbol name by lexical
95
+ scope, so a function-local rebind no longer blocks an unrelated global
96
+ ([#140](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/140)).
97
+ A `?:` symbol that can select another symbol warned there; see the next
98
+ section for what it does since #148.
99
+
100
+ ### Libraries and requests for outside data
101
+
102
+ - Pine library imports are inlined at transpile time: pass the sources as
103
+ `transpile(..., libraries={"user/name/version": source})`, or let the
104
+ script's own requests manifest pin them (`$PINEFORGE_PINE_LIBRARIES` with
105
+ `$PINEFORGE_REQUESTS_ROOT`). Only what the script reaches is inlined, and a
106
+ v5 library is lowered by v5's rules or refused naming the rule it would
107
+ need ([#148](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/148)).
108
+ An import whose alias is `ta`, `math` or `str` and that names only that
109
+ namespace's built-ins is a no-op
110
+ ([#146](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/146)).
111
+ Any other import without a source is still refused.
112
+ - A `request.security` of another symbol whose value can reach a trade reads
113
+ the feed a requests manifest pins for that symbol, and stops the run where
114
+ its value is read when none is installed; it never reads the chart's bars in
115
+ its place. A `?:` symbol that
116
+ can select another symbol and whose value can reach a trade registers the
117
+ symbol the run computes
118
+ ([#148](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/148)).
119
+ - `request.financial`, `request.earnings`, `request.dividends` and
120
+ `request.splits` read the per-bar series a requests manifest records, and a
121
+ `request.security` whose expression is `request.footprint(ticks, va)` reads
122
+ the pinned feed's delta column
123
+ ([#148](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/148)).
124
+ Without that data, a request whose value reaches only plots, alerts, tables
125
+ or logs lowers to `na` with a warning, and one that can reach a trade stops
126
+ the run where its value is read
127
+ ([#146](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/146)).
128
+ - A `request.security` symbol, timeframe or payload parameter that reaches the
129
+ request through helper functions resolves on every call path, one context
130
+ per value
131
+ ([#146](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/146),
132
+ [#148](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/148)).
133
+ Payloads accept helpers with mixed tuples, multi-statement bodies and `var`
134
+ state ([#144](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/144)),
135
+ read `input.source` values and `hl2`-family history on the requested bars,
136
+ register a computed lower timeframe with its first-bar value, keep epochs in
137
+ 64 bits ([#146](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/146)),
138
+ and run helper `for` / `while` loops and a global's history on the requested
139
+ bars ([#152](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/152)).
140
+
141
+ ### Sessions
142
+
143
+ - `session.ismarket`, `session.ispremarket` and `session.ispostmarket` read the
144
+ engine's session calendar and in-session facts, and `session.isfirstbar` /
145
+ `islastbar` and their `_regular` forms read the engine's session-day members
146
+ ([#142](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/142),
147
+ [#145](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/145),
148
+ [#150](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/150)).
149
+ Inside a `request.security` payload they keep time-of-day predicates and
150
+ warn. `session.<flag>[k]` reads the flag's history
151
+ ([#144](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/144)).
152
+
153
+ ### Values that came out silently wrong
154
+
155
+ - Pine's `int` is 64-bit: constant arithmetic such as `400 * 7200000` folds in
156
+ 64 bits, and an integer sum or product whose operands' known bounds can
157
+ leave the 32-bit range (`days * 86400000`), or a product that `%` or `/`
158
+ reads, is computed in 64 bits
159
+ ([#149](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/149),
160
+ [#151](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/151),
161
+ [#152](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/152)).
162
+ - Inputs are read before `var` initializers
163
+ ([#144](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/144)),
164
+ and a `var` read with history initializes at its declaration
165
+ ([#149](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/149)).
166
+ - `fixnan` and 17 other built-in argument slots evaluate their argument once, a
167
+ function returns its last statement's value, and a script variable read
168
+ with history inside a function reads that call site's history
169
+ ([#146](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/146)).
170
+ An `if` without `else` that runs no arm is `na`
171
+ ([#148](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/148)).
172
+ - A deleted or collected drawing reads as `na`, and drawings are collected
173
+ as TradingView collects them
174
+ ([#146](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/146)).
175
+ - `color.new` / `color.rgb` bind a keyword transparency like a positional one
176
+ ([#151](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/151)),
177
+ and a fractional input or series transparency rounds to the nearest alpha
178
+ byte as TradingView's does, where it was truncated
179
+ ([#150](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/150)).
180
+ A fractional constant `color.new` transparency, which TradingView
181
+ truncates, now rounds too: a known divergence (10.5 reads back 11 where
182
+ TradingView reads 10).
183
+ - A function whose untyped parameter receives different types gets one body
184
+ per call site
185
+ ([#151](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/151)).
186
+ - A binary operator evaluates its left operand first when the other operand
187
+ can observe its effect
188
+ ([#147](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/147)).
189
+
190
+ ### Other translation changes
191
+
192
+ - A `ta.*` length fixed for the run builds the constant-length indicator on
193
+ its first execution, and a series length of `ta.highest`, `ta.lowest`,
194
+ `ta.highestbars` or `ta.lowestbars` re-windows every call, and
195
+ `ta.supertrend` takes a series factor or ATR length and reads the values of
196
+ its first execution, as TradingView does; a series length of any other
197
+ `ta.*` stays refused
198
+ ([#144](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/144)).
199
+ - A `switch` arm written on its `=>` line may be a comma list of statements,
200
+ library overloads that differ by qualifier bind as TradingView binds them, a
201
+ generic `input()` takes its default's type, and `syminfo.timezone` spells a
202
+ UTC exchange zone `Etc/UTC`
203
+ ([#152](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/152)).
204
+ - A script that declares `use_bar_magnifier = true` exports
205
+ `strategy_declares_bar_magnifier()` to the host, and `syminfo.mincontract`
206
+ reads the symbol fact the run declares
207
+ ([#146](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/146)).
208
+
209
+ ### Limits and generated names
210
+
211
+ - Untrusted source that would crash or hang the transpiler raises a located
212
+ `CompileError`: source over 5 MiB (TradingView's 5MB compilation request),
213
+ nesting over 512 levels, or a transpilation over 120 seconds (TradingView's
214
+ compile limit). There is no statement-count limit. A 500-link `?:` chain, a
215
+ 500-branch `else if` ladder and a 2,000-element `array.from` transpile and
216
+ compile; deeply nested calls no longer take exponential time.
217
+ `transpile()` raises Python's recursion limit to 20,480 frames when it is
218
+ lower. Numeric literals outside the C++ range raise a located error
219
+ ([#140](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/140)).
220
+ - A Pine name that is a C++17/C++20 keyword, a standard macro or an engine
221
+ name (for example `namespace`, `NULL` or `Box`) compiles: the generated C++
222
+ spells it `pf_safe_<name>`, for variables, parameters, types, fields and
223
+ tuple or loop bindings alike
224
+ ([#140](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/140)).
225
+ A script name that equals a host member the generated class reads is
226
+ escaped too
227
+ ([#144](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/144)).
228
+
229
+ ### Packaging and documentation
230
+
231
+ - Update the direct build-tool `tar` dependency past the reported advisories
232
+ and require a high-severity npm audit in release and publish gates
233
+ ([#140](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/140)).
234
+ - Limit the Python source archive to package code and release documents so a
235
+ VCS-free RC build cannot include installed Node dependencies or generated
236
+ gate payloads
237
+ ([#140](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/140)).
238
+ - One `VERSION` value gives every channel its spelling: a prerelease such as
239
+ `1.0.0-rc.1` ships as PyPI `1.0.0rc1`, on npm dist-tag `next` and as a
240
+ GitHub prerelease, never as `latest`
241
+ ([#141](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/141)).
242
+ - Document the supported Python and gate/glue JSON contract, exact engine
243
+ pairing, contribution checks, and release-note policy. Classify the package
244
+ as Production/Stable for the 1.0 release
245
+ ([#140](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/140)).
@@ -0,0 +1,119 @@
1
+ # Contributing to pineforge-codegen
2
+
3
+ This is the source-available PineScript v6 to C++ translator. Read the
4
+ [license and contribution terms](LEGAL.md) before sending a material change.
5
+ Contributions use the Developer Certificate of Origin: add a `Signed-off-by`
6
+ line with `git commit -s`. Material contributions also require a Contributor
7
+ License Agreement so PineForge can include them in its commercial license;
8
+ contact luis@4pass.com.tw before opening a material pull request.
9
+
10
+ ## Local setup
11
+
12
+ Use Python 3.11 or newer, Node 22, a C++17 compiler, CMake, and a matching
13
+ [`pineforge-engine`](https://github.com/pineforge-4pass/pineforge-engine)
14
+ checkout. Clone codegen and engine as siblings, then install the development
15
+ dependencies from this repository:
16
+
17
+ ```bash
18
+ python -m pip install -e '.[dev]'
19
+ npm ci
20
+ ```
21
+
22
+ Build the paired engine outside its source checkout if you need compile and
23
+ runtime tests. This example enables the source layer (the default) and limits
24
+ the build to four jobs:
25
+
26
+ ```bash
27
+ cmake -S ../pineforge-engine -B /tmp/pineforge-engine-build \
28
+ -DCMAKE_BUILD_TYPE=Release -DPINEFORGE_BUILD_TESTS=OFF \
29
+ -DPINEFORGE_BUILD_SOURCE_LAYER=ON
30
+ cmake --build /tmp/pineforge-engine-build -j4
31
+ ```
32
+
33
+ If CMake fetches Eigen, its headers are under the build tree's
34
+ `_deps/eigen-src`; a system Eigen install is also fine. The engine corpus is
35
+ the engine's `corpus` submodule
36
+ ([`pineforge-corpus`](https://github.com/pineforge-4pass/pineforge-corpus)),
37
+ and the 1m feed the E2E tests replay is stored in Git LFS:
38
+
39
+ ```bash
40
+ git -C ../pineforge-engine submodule update --init corpus
41
+ git -C ../pineforge-engine/corpus lfs pull
42
+ ```
43
+
44
+ The corpus test skips when it cannot find that tree, and the E2E tests skip
45
+ when the feed is missing or still an LFS pointer, so inspect skip reasons
46
+ before treating a run as complete.
47
+
48
+ ## Engine pairing
49
+
50
+ Codegen `main` is developed and tested against engine `main`; its generated
51
+ C++ does not compile against any engine release yet. On the 0.x line the two
52
+ version lineages are independent: the released codegen 0.10.4 pairs with
53
+ engine `v0.13.1`, the pair the
54
+ [`pineforge-release`](https://github.com/pineforge-4pass/pineforge-release)
55
+ image `v0.1.25` ships.
56
+
57
+ From 1.0.0 on, a released codegen `X.Y.Z` is supported only with engine tag
58
+ `vX.Y.Z`, using that release's generated headers and `libpineforge.a`.
59
+ Prereleases match exactly too: codegen `1.0.0-rc.1` requires engine
60
+ `v1.0.0-rc.1`. Do not pair different patch or prerelease tags, even if
61
+ `PF_ABI_VERSION` is equal.
62
+
63
+ On **every** pair change, rerun codegen on the Pine source, then rebuild and
64
+ relink each generated strategy translation unit against the new pair's headers
65
+ and static library. Replacing only the library, or recompiling old generated
66
+ C++, is not a supported migration. Development branches can test against
67
+ paired in-progress engine commits, but that does not create a supported
68
+ cross-version release pair. See the [public contract](docs/PUBLIC_CONTRACT.md).
69
+
70
+ ## Required checks
71
+
72
+ Point the test harness at the engine source, its generated header, runtime
73
+ archive, Eigen headers, and public corpus. Adjust these paths for your build:
74
+
75
+ ```bash
76
+ export PINEFORGE_ENGINE_INCLUDE=../pineforge-engine/include
77
+ export PINEFORGE_GENERATED_INCLUDE=/tmp/pineforge-engine-build/include
78
+ export PINEFORGE_ENGINE_LIB=/tmp/pineforge-engine-build/lib/libpineforge.a
79
+ export PINEFORGE_EIGEN_INCLUDE=/tmp/pineforge-engine-build/_deps/eigen-src
80
+ export PINEFORGE_ENGINE_CORPUS=../pineforge-engine/corpus
81
+ export CXX=/usr/bin/c++
82
+ python -m pytest -ra
83
+ python -m pytest -ra tests/test_compile_corpus.py
84
+ ```
85
+
86
+ The full suite includes the corpus sweep; run the corpus command separately so
87
+ its coverage and result are visible. A green suite with compile or E2E skips
88
+ does not verify generated C++ against the engine. If you change engine C++
89
+ headers or sources, rebuild the engine before rerunning these checks. The
90
+ current item count is determined by `python -m pytest --collect-only -q`, not
91
+ by a fixed number in this guide.
92
+
93
+ Check the Pyodide package and native/Pyodide parity as well:
94
+
95
+ ```bash
96
+ npm ci
97
+ npm audit --audit-level=high
98
+ npm run gate:selftest
99
+ GATE_FULL=1 node gate/run-gate.mjs
100
+ ```
101
+
102
+ The full gate writes `release.json` and the validated archive consumed by
103
+ `node scripts/build-npm-package.mjs`. For release packaging checks, install
104
+ the Python `build` frontend, run `python -m build`, assemble the npm payload,
105
+ then run `npm pack --dry-run` from `npm/`. These commands build local artifacts;
106
+ publishing is a separate release operation.
107
+
108
+ ## Change and review notes
109
+
110
+ - Add or update tests for behavior changes. Keep the engine corpus compiling;
111
+ an intentional support drop needs the rationale required by [AGENTS.md](AGENTS.md).
112
+ - If existing scripts emit different C++, list the affected public-corpus
113
+ translation units and whether their trades move when run with the matching
114
+ engine.
115
+ - Keep [CHANGELOG.md](CHANGELOG.md) current for user-visible changes. Its
116
+ release-note policy applies to both stable and prerelease tags.
117
+ - The README describes `main` against the latest release and becomes the PyPI
118
+ page of the next one: when a version is tagged, update its "Releases and
119
+ this README" section, its engine-pairing table and its release markers.
@@ -17,7 +17,7 @@ A pure-Python PineScript v6 → C++ transpiler that emits source against the pub
17
17
 
18
18
  ## Third-party components
19
19
 
20
- The transpiler has **no runtime dependencies** (one function, `transpile()`). Development/test extras declared in `pyproject.toml` (`pytest`, etc.) are under their own upstream licenses. The opt-in compile checks invoke a C++ compiler against the separately-licensed Apache-2.0 engine headers; they skip cleanly without an engine checkout.
20
+ The transpiler has **no runtime dependencies** (`transpile()` and `transpile_full()` are its supported Python entry points). Development/test extras declared in `pyproject.toml` (`pytest`, etc.) are under their own upstream licenses. The opt-in compile checks invoke a C++ compiler against the separately-licensed Apache-2.0 engine headers; they skip cleanly without an engine checkout.
21
21
 
22
22
  ## Trademarks and affiliation
23
23
 
@@ -25,7 +25,7 @@ The transpiler has **no runtime dependencies** (one function, `transpile()`). De
25
25
 
26
26
  ## Contributions
27
27
 
28
- Contributions are accepted under a Developer Certificate of Origin (`Signed-off-by`). Because this project is **dual-licensed** (source-available + a sold commercial license), material contributions require a Contributor License Agreement granting PineForge the right to include the contribution in the commercial license; otherwise it cannot be accepted. See `CONTRIBUTING` (or contact luis@4pass.com.tw) before opening a material PR.
28
+ Contributions are accepted under a Developer Certificate of Origin (`Signed-off-by`). Because this project is **dual-licensed** (source-available + a sold commercial license), material contributions require a Contributor License Agreement granting PineForge the right to include the contribution in the commercial license; otherwise it cannot be accepted. See [CONTRIBUTING.md](CONTRIBUTING.md) (or contact luis@4pass.com.tw) before opening a material PR.
29
29
 
30
30
  ## No warranty
31
31