pineforge-codegen 0.10.4__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 (478) 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.4 → 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.4 → 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.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/__init__.py +2 -0
  12. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/base.py +754 -76
  13. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/call_handlers.py +260 -40
  14. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/contracts.py +37 -0
  15. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/diagnostics.py +30 -4
  16. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/tables.py +49 -8
  17. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/analyzer/types.py +33 -1
  18. {pineforge_codegen-0.10.4 → 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.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/base.py +896 -156
  22. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/constant_fold.py +131 -0
  23. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/drawing.py +221 -79
  24. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/emit_top.py +946 -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.4 → 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.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/tables.py +193 -71
  32. pineforge_codegen-1.0.0rc1/pineforge_codegen/codegen/tv_number_format.py +270 -0
  33. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/types.py +1882 -78
  34. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/visit_call.py +920 -131
  35. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/visit_expr.py +738 -57
  36. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/visit_stmt.py +595 -49
  37. pineforge_codegen-1.0.0rc1/pineforge_codegen/external_requests.py +877 -0
  38. {pineforge_codegen-0.10.4 → 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.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/method_binding.py +33 -0
  44. {pineforge_codegen-0.10.4 → 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.4 → 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.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/signatures.py +48 -23
  51. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/support_checker.py +1106 -85
  52. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pyproject.toml +23 -6
  53. pineforge_codegen-0.10.4/.claude/settings.json +0 -15
  54. pineforge_codegen-0.10.4/.github/dependabot.yml +0 -20
  55. pineforge_codegen-0.10.4/.github/workflows/gate.yml +0 -82
  56. pineforge_codegen-0.10.4/.github/workflows/promote-baseline.yml +0 -235
  57. pineforge_codegen-0.10.4/.github/workflows/publish-pyodide.yml +0 -80
  58. pineforge_codegen-0.10.4/.github/workflows/release.yml +0 -174
  59. pineforge_codegen-0.10.4/.github/workflows/test.yml +0 -42
  60. pineforge_codegen-0.10.4/AGENTS.md +0 -467
  61. pineforge_codegen-0.10.4/CLAUDE.md +0 -412
  62. pineforge_codegen-0.10.4/PKG-INFO +0 -463
  63. pineforge_codegen-0.10.4/PYODIDE_TARGET +0 -1
  64. pineforge_codegen-0.10.4/README.md +0 -243
  65. pineforge_codegen-0.10.4/VERSION +0 -1
  66. pineforge_codegen-0.10.4/gate/compare.mjs +0 -69
  67. pineforge_codegen-0.10.4/gate/glue.py +0 -35
  68. pineforge_codegen-0.10.4/gate/oracle.py +0 -34
  69. pineforge_codegen-0.10.4/gate/run-gate.mjs +0 -133
  70. pineforge_codegen-0.10.4/gate/selftest.mjs +0 -57
  71. pineforge_codegen-0.10.4/npm/README.md +0 -25
  72. pineforge_codegen-0.10.4/npm/index.mjs +0 -30
  73. pineforge_codegen-0.10.4/npm/package.json +0 -34
  74. pineforge_codegen-0.10.4/package-lock.json +0 -132
  75. pineforge_codegen-0.10.4/package.json +0 -16
  76. pineforge_codegen-0.10.4/pineforge_codegen/__init__.py +0 -95
  77. pineforge_codegen-0.10.4/pineforge_codegen/codegen/helpers.py +0 -188
  78. pineforge_codegen-0.10.4/pineforge_codegen/codegen/security.py +0 -3813
  79. pineforge_codegen-0.10.4/pineforge_codegen/codegen/ta.py +0 -1014
  80. pineforge_codegen-0.10.4/scripts/build-npm-package.mjs +0 -74
  81. pineforge_codegen-0.10.4/scripts/dump-tables.py +0 -148
  82. pineforge_codegen-0.10.4/scripts/worker-template.mjs +0 -70
  83. pineforge_codegen-0.10.4/tests/__init__.py +0 -0
  84. pineforge_codegen-0.10.4/tests/_compile.py +0 -244
  85. pineforge_codegen-0.10.4/tests/fixtures/matrix_eigen_pca.pine +0 -43
  86. pineforge_codegen-0.10.4/tests/gate-corpus/err/const_ns_plot_style_free.pine +0 -3
  87. pineforge_codegen-0.10.4/tests/gate-corpus/err/const_ns_shape_free.pine +0 -3
  88. pineforge_codegen-0.10.4/tests/gate-corpus/err/export_func.pine +0 -3
  89. pineforge_codegen-0.10.4/tests/gate-corpus/err/footprint_new.pine +0 -3
  90. pineforge_codegen-0.10.4/tests/gate-corpus/err/hard_reject_dividends.pine +0 -3
  91. pineforge_codegen-0.10.4/tests/gate-corpus/err/matrix_unknown_elem.pine +0 -3
  92. pineforge_codegen-0.10.4/tests/gate-corpus/err/multi_error_one_line.pine +0 -3
  93. pineforge_codegen-0.10.4/tests/gate-corpus/err/sec_tf_invalid.pine +0 -3
  94. pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_color.pine +0 -3
  95. pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_math.pine +0 -3
  96. pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_str.pine +0 -3
  97. pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_strategy_fn.pine +0 -3
  98. pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_syminfo.pine +0 -3
  99. pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_ta.pine +0 -3
  100. pineforge_codegen-0.10.4/tests/gate-corpus/ok/AAPL__session-ismarket-nyse-rth-01.pine +0 -16
  101. pineforge_codegen-0.10.4/tests/gate-corpus/ok/AAPL__time-tradingday-daily-reset-counter-01.pine +0 -44
  102. pineforge_codegen-0.10.4/tests/gate-corpus/ok/QQQ__session-ispremarket-nasdaq-01.pine +0 -16
  103. pineforge_codegen-0.10.4/tests/gate-corpus/ok/SPY__session-firstbar-vwap-anchor-01.pine +0 -29
  104. pineforge_codegen-0.10.4/tests/gate-corpus/ok/SPY__session-lastbar-flatten-01.pine +0 -19
  105. pineforge_codegen-0.10.4/tests/gate-corpus/ok/chart_bg_color.pine +0 -3
  106. pineforge_codegen-0.10.4/tests/gate-corpus/ok/crypto-htf__mtf-htf-monthly-ema-cross-01.pine +0 -26
  107. pineforge_codegen-0.10.4/tests/gate-corpus/ok/crypto-leverage__leverage-margin-call-perp-5x-01.pine +0 -54
  108. pineforge_codegen-0.10.4/tests/gate-corpus/ok/divergent_last_bar_index.pine +0 -7
  109. pineforge_codegen-0.10.4/tests/gate-corpus/ok/forex__symbol-fx-5dp-eurusd-01.pine +0 -32
  110. pineforge_codegen-0.10.4/tests/gate-corpus/ok/futures__symbol-futures-pointvalue-es-01.pine +0 -36
  111. pineforge_codegen-0.10.4/tests/gate-corpus/ok/tutorial__macd__strategy.pine +0 -45
  112. pineforge_codegen-0.10.4/tests/gate-corpus/ok/tutorial__mtf__strategy_htf.pine +0 -49
  113. pineforge_codegen-0.10.4/tests/gate-corpus/ok/tutorial__mtf__strategy_ltf.pine +0 -58
  114. pineforge_codegen-0.10.4/tests/gate-corpus/ok/us-equity__symbol-equity-rth-gaps-aapl-01.pine +0 -34
  115. pineforge_codegen-0.10.4/tests/gate-corpus/ok/us-equity__us-equity-exchange-tz-intraday-cap-01.pine +0 -30
  116. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-choch-bos-isolator-01.pine +0 -83
  117. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-edge-margin-50-pct-01.pine +0 -39
  118. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-percent-of-equity-sizing-01.pine +0 -42
  119. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-small-equity-fraction-01.pine +0 -44
  120. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-stop-limit-timing-01.pine +0 -54
  121. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-self-test-multi-mode-01.pine +0 -80
  122. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__anomaly-equity-mirror-strategy-equity-01.pine +0 -56
  123. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-off-01b.pine +0 -41
  124. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-on-01a.pine +0 -44
  125. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-atr-trail-series-int-points-01.pine +0 -57
  126. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-atr-trailing-stop-state-01.pine +0 -60
  127. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-entry-exit-same-pass-attach-01.pine +0 -27
  128. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-exit-stop-limit-trail-same-bar-01.pine +0 -41
  129. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-exit-three-way-set-once-entry-01.pine +0 -49
  130. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-exit-tp-sl-fixed-01.pine +0 -27
  131. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-narrow-stop-limit-with-trail8-01.pine +0 -49
  132. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-partial-exit-qty-percent-01.pine +0 -28
  133. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-same-id-exit-replace-01.pine +0 -27
  134. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-tp-sl-oca-reduce-isolate-01.pine +0 -64
  135. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-trail-points-no-offset-explicit-01.pine +0 -50
  136. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-trail-points-with-offset-only-01.pine +0 -34
  137. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-trailing-activation-offset-path-01.pine +0 -35
  138. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__cap-max-intraday-filled-orders-isolate-01.pine +0 -45
  139. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__cap-risk-gates-allow-max-intraday-01.pine +0 -36
  140. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-integration-01.pine +0 -99
  141. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-quad-ema-stack-01.pine +0 -59
  142. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-rsi-pullback-latch-01.pine +0 -61
  143. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-session-window-nbar-exit-01.pine +0 -60
  144. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-boscurv-integration-01.pine +0 -80
  145. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-boscurv-linreg-slope-channel-01.pine +0 -64
  146. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-boscurv-pivot-bos-trigger-01.pine +0 -55
  147. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-bracket-cap-range-pending-stop-01.pine +0 -98
  148. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-adx-regime-classify-01.pine +0 -87
  149. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-bb-kc-squeeze-release-01.pine +0 -62
  150. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-cooldown-daily-cap-01.pine +0 -72
  151. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-equity-feedback-sizing-01.pine +0 -95
  152. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-integration-01.pine +0 -236
  153. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-pivot-liquidity-sweep-01.pine +0 -66
  154. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-pressure-gauge-01.pine +0 -79
  155. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-rsi-macd-momentum-01.pine +0 -88
  156. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-three-ema-bias-score-01.pine +0 -82
  157. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-calc-on-every-tick-01.pine +0 -55
  158. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-integration-01.pine +0 -85
  159. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-kama-state-recurrence-01.pine +0 -54
  160. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-max-bars-back-500-01.pine +0 -67
  161. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-ema-atr-breakout-band-01.pine +0 -48
  162. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-integration-01.pine +0 -68
  163. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-kalman-filter-1d-01.pine +0 -58
  164. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-margin-100-pct-01.pine +0 -46
  165. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-integration-01.pine +0 -89
  166. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-pivot-hh-ll-01.pine +0 -58
  167. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-wait-one-continuation-01.pine +0 -73
  168. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-wick-pierce-close-back-01.pine +0 -55
  169. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-integration-01.pine +0 -97
  170. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-pivot-state-machine-01.pine +0 -64
  171. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-rolling-highest-lowest-01.pine +0 -51
  172. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-state-edge-detector-01.pine +0 -69
  173. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-scalping-fast-ma-cross-trigger-01.pine +0 -46
  174. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-scalping-integration-01.pine +0 -61
  175. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-scalping-tight-tp-sl-points-01.pine +0 -63
  176. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-integration-01.pine +0 -124
  177. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-line-new-projection-01.pine +0 -92
  178. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-pivot-anchored-bracket-01.pine +0 -75
  179. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-three-tier-ema-state-01.pine +0 -66
  180. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-trend-momentum-structure-gate-01.pine +0 -73
  181. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-cumulative-volume-delta-01.pine +0 -54
  182. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-fvg-active-zones-01.pine +0 -96
  183. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-integration-01.pine +0 -195
  184. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-manual-adx-regime-01.pine +0 -73
  185. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-pivot-strength-5-01.pine +0 -55
  186. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-rsi-smooth-divergence-01.pine +0 -57
  187. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-session-tz-newyork-01.pine +0 -56
  188. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-vol-zscore-anomaly-01.pine +0 -52
  189. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-wunderscalper-alert-templates-01.pine +0 -56
  190. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-wunderscalper-explicit-reverse-01.pine +0 -53
  191. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-wunderscalper-integration-01.pine +0 -53
  192. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__input-source-runtime-override-high-01.pine +0 -30
  193. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__input-source-subscript-hl2-01.pine +0 -27
  194. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ltf-bool-array-bull-majority-01.pine +0 -44
  195. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ltf-numeric-float-ratio15-01.pine +0 -49
  196. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-01.pine +0 -44
  197. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-rsi-cross-08a.pine +0 -37
  198. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__magnifier-tick-dist-volume-weighted-on-01.pine +0 -41
  199. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-mask-explicit-utc-tz-01.pine +0 -60
  200. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-mask-no-transpose-01.pine +0 -38
  201. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-mask-transpose-roundtrip-01.pine +0 -38
  202. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-regime-mask-24x7-01.pine +0 -65
  203. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-covariance-eigen-pca-01.pine +0 -43
  204. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-eigen-rank-deficient-cov-01.pine +0 -85
  205. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__max-bars-back-function-call-deep-history-01.pine +0 -23
  206. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-daily-array-median-percentrank-01.pine +0 -26
  207. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-daily-ema26-warmup-01.pine +0 -41
  208. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-daily-prev-high-break-01.pine +0 -32
  209. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-dual-tf-60-240-rising-01.pine +0 -28
  210. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-close-change-baseline-01.pine +0 -57
  211. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-close-roll-01.pine +0 -25
  212. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-gaps-on-roll-01.pine +0 -34
  213. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-rsi14-inside-security-01.pine +0 -25
  214. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-sma20-inside-security-01.pine +0 -27
  215. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-volume-spike-01.pine +0 -26
  216. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-confluence-manual-trail-01.pine +0 -77
  217. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-confluence-static-bracket-01.pine +0 -75
  218. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-weekly-sma-cross-01.pine +0 -24
  219. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-roll-state-60-240-d-minimal-01.pine +0 -36
  220. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-triple-tf-close-confluence-01.pine +0 -39
  221. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-triple-tf-macd-hist-confluence-01.pine +0 -47
  222. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__na-deep-history-int-na-01.pine +0 -51
  223. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__na-nz-fixnan-history-chain-01.pine +0 -29
  224. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__oca-exit-bracket-internal-cancel-01.pine +0 -39
  225. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__oca-multi-bracket-isolation-01.pine +0 -46
  226. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__oca-raw-strategy-order-reduce-01.pine +0 -33
  227. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-close-all-cancel-all-01.pine +0 -33
  228. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-close-immediate-vs-next-bar-01.pine +0 -27
  229. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-cross-entry-cancel-same-pass-01.pine +0 -38
  230. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-cross-entry-close-same-pass-01.pine +0 -38
  231. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-cross-exit-close-same-pass-01.pine +0 -32
  232. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-deferred-flip-guaranteed-gap-stops-01.pine +0 -63
  233. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-deferred-flip-pooc-cross-bar-01.pine +0 -54
  234. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-four-bar-stop-no-close-01.pine +0 -30
  235. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-side-same-id-stop-no-cancel-01.pine +0 -31
  236. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-both-touch-priority-01.pine +0 -30
  237. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-cancel-rotation-01.pine +0 -32
  238. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-far-only-01.pine +0 -22
  239. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-near-only-01.pine +0 -22
  240. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-open-high-first-path-01.pine +0 -26
  241. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-open-low-first-path-01.pine +0 -26
  242. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-open-tie-01.pine +0 -30
  243. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-source-order-long-first-01.pine +0 -23
  244. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-source-order-short-first-01.pine +0 -23
  245. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-entry-implicit-reversal-exit-01.pine +0 -29
  246. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-flip-stop-no-paired-close-01.pine +0 -37
  247. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-market-close-fill-basis-01.pine +0 -27
  248. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-one-side-four-bar-far-opposite-01.pine +0 -28
  249. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-opposite-entry-close-same-pass-01.pine +0 -33
  250. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-percent-equity-cash-commission-01.pine +0 -21
  251. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-process-on-close-false-01.pine +0 -35
  252. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-process-on-close-true-01.pine +0 -36
  253. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-range-expansion-pending-stop-01.pine +0 -55
  254. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-entry-close-same-bar-01.pine +0 -36
  255. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-market-entry-repeat-01.pine +0 -30
  256. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-after-flat-01.pine +0 -31
  257. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-cross-before-modify-01.pine +0 -41
  258. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-minute-zero-01.pine +0 -28
  259. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-modification-01.pine +0 -31
  260. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-raise-only-01.pine +0 -31
  261. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-window-four-bars-01.pine +0 -24
  262. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stale-stop-after-close-no-cancel-01.pine +0 -29
  263. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-cancel-no-regime-close-01.pine +0 -47
  264. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-entry-cancel-opposite-01.pine +0 -35
  265. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-entry-reversal-grouping-01.pine +0 -33
  266. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-entry-touch-boundary-01.pine +0 -38
  267. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-cash-fractional-commission-01.pine +0 -37
  268. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-close-id-grouping-01.pine +0 -40
  269. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-deferred-flip-close-all-01.pine +0 -44
  270. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-flip-stop-pyramiding-2-01.pine +0 -46
  271. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__recompute-alma-sar-corr-magnifier-01.pine +0 -36
  272. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__recompute-mtf-rsi-macd-bb-01.pine +0 -51
  273. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__risk-max-contracts-held-gate-pyramid-01.pine +0 -32
  274. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__session-hour-minute-pulse-filter-01.pine +0 -25
  275. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__session-ny-spring-forward-dst-01.pine +0 -40
  276. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__stats-eventrades-zero-pnl-count-01.pine +0 -48
  277. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-accdist-ema-cross-01.pine +0 -24
  278. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-bb-kc-squeeze-breakout-01.pine +0 -57
  279. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-bb-rsi-mean-reversion-01.pine +0 -41
  280. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-cci-threshold-cross-01.pine +0 -39
  281. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-chandelier-exit-direction-01.pine +0 -45
  282. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-closedtrades-risk-introspection-01.pine +0 -37
  283. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-cmo-9-zero-cross-01.pine +0 -23
  284. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-cog-10-signal-cross-01.pine +0 -25
  285. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-dmi-adx-di-cross-01.pine +0 -27
  286. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-donchian-channel-breakout-01.pine +0 -42
  287. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-dual-ma-switch-dispatch-01.pine +0 -42
  288. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-dual-thrust-open-anchored-range-01.pine +0 -47
  289. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-elder-ray-bull-bear-power-01.pine +0 -45
  290. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-ema-ribbon-stack-transition-01.pine +0 -40
  291. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-engulfing-candle-pattern-01.pine +0 -60
  292. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-highestbars-lowestbars-breakout-01.pine +0 -47
  293. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-hma-55-close-cross-01.pine +0 -26
  294. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-hma-fast-slow-cross-01.pine +0 -30
  295. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-inside-bar-engulfing-01.pine +0 -48
  296. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-kama-style-efficiency-ratio-01.pine +0 -50
  297. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-keltner-channel-break-01.pine +0 -62
  298. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-linreg-stdev-channel-revert-01.pine +0 -40
  299. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-macd-12-26-9-line-signal-cross-01.pine +0 -26
  300. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-macd-histogram-reversal-01.pine +0 -32
  301. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-macd-line-gt-signal-continuous-state-01.pine +0 -23
  302. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-map-regime-threshold-lookup-01.pine +0 -27
  303. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-median-vs-ema-cross-01.pine +0 -30
  304. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-mfi-14-bands-20-80-01.pine +0 -24
  305. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-momentum-roc-zero-cross-01.pine +0 -38
  306. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-multi-indicator-score-composite-01.pine +0 -62
  307. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-nvi-pvi-cross-01.pine +0 -26
  308. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-obv-ema-cross-01.pine +0 -24
  309. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-percentrank-mean-reversion-01.pine +0 -43
  310. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-array-unshift-pop-01.pine +0 -62
  311. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-atr-stop-target-01.pine +0 -46
  312. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-confirmed-break-01.pine +0 -62
  313. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-point-levels-break-01.pine +0 -28
  314. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pvt-ema-cross-01.pine +0 -26
  315. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-range-filter-var-band-01.pine +0 -53
  316. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rci-14-zero-cross-01.pine +0 -26
  317. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi-bb-self-bands-01.pine +0 -44
  318. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi-ema-signal-cross-01.pine +0 -32
  319. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi-macd-and-continuous-state-01.pine +0 -33
  320. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-bands-30-70-01.pine +0 -26
  321. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-cross-50-01.pine +0 -27
  322. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-gt-50-continuous-state-01.pine +0 -27
  323. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-gt60-lt45-no-matrix-01.pine +0 -27
  324. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-sar-flip-entry-01.pine +0 -60
  325. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-sma-152-close-cross-01.pine +0 -27
  326. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-sma-dual-cross-01.pine +0 -54
  327. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-stdev-sma-expansion-break-01.pine +0 -56
  328. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-stoch-slow-k-d-cross-01.pine +0 -60
  329. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-stochastic-rsi-cross-01.pine +0 -39
  330. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-str-match-regex-filter-01.pine +0 -34
  331. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-supertrend-adx-filter-01.pine +0 -45
  332. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-supertrend-direction-flip-01.pine +0 -65
  333. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-triple-sma-stack-latch-01.pine +0 -46
  334. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-tsi-25-13-signal-cross-01.pine +0 -22
  335. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-volume-spike-atr-breakout-01.pine +0 -40
  336. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-vwma-vs-sma-divergence-01.pine +0 -33
  337. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-wpr-14-bands-01.pine +0 -22
  338. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__timeframe-main-period-self-adaptive-01.pine +0 -34
  339. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-calls-sibling-cumulative-01.pine +0 -98
  340. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-default-param-kwargs-01.pine +0 -64
  341. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-drives-strategy-entry-01.pine +0 -62
  342. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-extra-primitive-args-01.pine +0 -42
  343. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-feeds-strategy-exit-prices-01.pine +0 -55
  344. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-for-loop-01.pine +0 -55
  345. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-if-else-branch-01.pine +0 -65
  346. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-switch-arms-01.pine +0 -64
  347. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-while-loop-01.pine +0 -58
  348. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-mutating-self-ref-01.pine +0 -51
  349. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-on-array-element-01.pine +0 -98
  350. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-reads-strategy-state-01.pine +0 -53
  351. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-receives-ta-series-param-01.pine +0 -57
  352. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-scalar-return-01.pine +0 -51
  353. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-tuple-return-destructure-01.pine +0 -61
  354. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-udt-return-from-func-01.pine +0 -67
  355. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-uses-history-globals-01.pine +0 -60
  356. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-uses-math-funcs-01.pine +0 -59
  357. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-uses-na-nz-fixnan-01.pine +0 -50
  358. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-var-instance-streak-01.pine +0 -51
  359. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-windowed-method-chain-01.pine +0 -78
  360. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-regime-stack-stress-01.pine +0 -186
  361. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__vwap-bands-breakout-1sigma-01.pine +0 -21
  362. pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__vwap-bands-mean-reversion-2sigma-01.pine +0 -23
  363. pineforge_codegen-0.10.4/tests/golden/matrix_eigen_pca.cpp +0 -397
  364. pineforge_codegen-0.10.4/tests/test_analyzer.py +0 -221
  365. pineforge_codegen-0.10.4/tests/test_analyzer_matrix_inference.py +0 -77
  366. pineforge_codegen-0.10.4/tests/test_analyzer_ta_return_types.py +0 -108
  367. pineforge_codegen-0.10.4/tests/test_anchor_tf_change.py +0 -38
  368. pineforge_codegen-0.10.4/tests/test_anchor_time.py +0 -58
  369. pineforge_codegen-0.10.4/tests/test_anchor_vwap.py +0 -77
  370. pineforge_codegen-0.10.4/tests/test_array_bounds_insert_fill_slice.py +0 -277
  371. pineforge_codegen-0.10.4/tests/test_array_checked_access.py +0 -999
  372. pineforge_codegen-0.10.4/tests/test_array_empty_aggregates.py +0 -198
  373. pineforge_codegen-0.10.4/tests/test_array_terminal_returns.py +0 -1493
  374. pineforge_codegen-0.10.4/tests/test_calc_on_order_fills_codegen.py +0 -460
  375. pineforge_codegen-0.10.4/tests/test_callable_series_param_types.py +0 -569
  376. pineforge_codegen-0.10.4/tests/test_callable_ta_forwarded_length.py +0 -639
  377. pineforge_codegen-0.10.4/tests/test_callable_var_first_reach.py +0 -494
  378. pineforge_codegen-0.10.4/tests/test_codegen_audit_fixes.py +0 -357
  379. pineforge_codegen-0.10.4/tests/test_codegen_determinism.py +0 -171
  380. pineforge_codegen-0.10.4/tests/test_codegen_drawing_data.py +0 -730
  381. pineforge_codegen-0.10.4/tests/test_codegen_drawing_handles.py +0 -41
  382. pineforge_codegen-0.10.4/tests/test_codegen_fallthrough_guards.py +0 -137
  383. pineforge_codegen-0.10.4/tests/test_codegen_golden.py +0 -113
  384. pineforge_codegen-0.10.4/tests/test_codegen_input_getters.py +0 -207
  385. pineforge_codegen-0.10.4/tests/test_codegen_matrix_typed.py +0 -432
  386. pineforge_codegen-0.10.4/tests/test_codegen_new.py +0 -2018
  387. pineforge_codegen-0.10.4/tests/test_codegen_string_escape.py +0 -25
  388. pineforge_codegen-0.10.4/tests/test_codegen_ta_derived_length.py +0 -769
  389. pineforge_codegen-0.10.4/tests/test_codegen_ta_finite_choice_length.py +0 -547
  390. pineforge_codegen-0.10.4/tests/test_codegen_ta_stable_var_literal.py +0 -619
  391. pineforge_codegen-0.10.4/tests/test_codegen_validation_fixes.py +0 -1531
  392. pineforge_codegen-0.10.4/tests/test_collection_scope_isolation.py +0 -841
  393. pineforge_codegen-0.10.4/tests/test_compile_corpus.py +0 -145
  394. pineforge_codegen-0.10.4/tests/test_compile_smoke.py +0 -874
  395. pineforge_codegen-0.10.4/tests/test_errors.py +0 -33
  396. pineforge_codegen-0.10.4/tests/test_extract_inputs.py +0 -107
  397. pineforge_codegen-0.10.4/tests/test_float_relational_runtime.py +0 -258
  398. pineforge_codegen-0.10.4/tests/test_glue_smoke.py +0 -43
  399. pineforge_codegen-0.10.4/tests/test_hungpixi_regressions.py +0 -144
  400. pineforge_codegen-0.10.4/tests/test_import_all.py +0 -34
  401. pineforge_codegen-0.10.4/tests/test_input_time_int64.py +0 -39
  402. pineforge_codegen-0.10.4/tests/test_int64_reassign_promotion.py +0 -73
  403. pineforge_codegen-0.10.4/tests/test_int64_time_storage.py +0 -56
  404. pineforge_codegen-0.10.4/tests/test_lazy_edge_ta_every_bar.py +0 -685
  405. pineforge_codegen-0.10.4/tests/test_lazy_source_clock.py +0 -266
  406. pineforge_codegen-0.10.4/tests/test_lazy_source_clock_runtime.py +0 -219
  407. pineforge_codegen-0.10.4/tests/test_lexer.py +0 -57
  408. pineforge_codegen-0.10.4/tests/test_map_call_diagnostics.py +0 -342
  409. pineforge_codegen-0.10.4/tests/test_map_param_methods.py +0 -345
  410. pineforge_codegen-0.10.4/tests/test_map_terminal_returns.py +0 -429
  411. pineforge_codegen-0.10.4/tests/test_math_sign_na_codegen.py +0 -114
  412. pineforge_codegen-0.10.4/tests/test_matrix_identity_checkpoint.py +0 -94
  413. pineforge_codegen-0.10.4/tests/test_matrix_na_lifecycle.py +0 -741
  414. pineforge_codegen-0.10.4/tests/test_matrix_void_method_return.py +0 -168
  415. pineforge_codegen-0.10.4/tests/test_method_receiver_types.py +0 -141
  416. pineforge_codegen-0.10.4/tests/test_method_written_callsite_lifecycle.py +0 -461
  417. pineforge_codegen-0.10.4/tests/test_na_reassign_retype.py +0 -183
  418. pineforge_codegen-0.10.4/tests/test_na_relational_lowering.py +0 -345
  419. pineforge_codegen-0.10.4/tests/test_official_surface.py +0 -475
  420. pineforge_codegen-0.10.4/tests/test_parser.py +0 -413
  421. pineforge_codegen-0.10.4/tests/test_persistent_callable_owner_state.py +0 -1438
  422. pineforge_codegen-0.10.4/tests/test_pinemap_boundaries_and_order.py +0 -257
  423. pineforge_codegen-0.10.4/tests/test_pinemap_cold_followups_history.py +0 -164
  424. pineforge_codegen-0.10.4/tests/test_pinemap_semantics.py +0 -1041
  425. pineforge_codegen-0.10.4/tests/test_pinemap_temp_receiver_var.py +0 -46
  426. pineforge_codegen-0.10.4/tests/test_runtime_var_initialization.py +0 -413
  427. pineforge_codegen-0.10.4/tests/test_security_helper_local_var.py +0 -585
  428. pineforge_codegen-0.10.4/tests/test_security_lazy_ta_under_conditionals.py +0 -266
  429. pineforge_codegen-0.10.4/tests/test_security_math_reducer.py +0 -53
  430. pineforge_codegen-0.10.4/tests/test_security_ohlc_hist_is_complete.py +0 -104
  431. pineforge_codegen-0.10.4/tests/test_security_ta_input_history_offset.py +0 -558
  432. pineforge_codegen-0.10.4/tests/test_security_tf_input_derived.py +0 -197
  433. pineforge_codegen-0.10.4/tests/test_security_tf_literal.py +0 -99
  434. pineforge_codegen-0.10.4/tests/test_security_tuple_interactions.py +0 -573
  435. pineforge_codegen-0.10.4/tests/test_signatures.py +0 -1010
  436. pineforge_codegen-0.10.4/tests/test_sparse_atr_prev_close.py +0 -65
  437. pineforge_codegen-0.10.4/tests/test_strategy_close_callsite_tokens.py +0 -81
  438. pineforge_codegen-0.10.4/tests/test_support_checker.py +0 -1008
  439. pineforge_codegen-0.10.4/tests/test_support_checker_chart_visible_bar_time.py +0 -21
  440. pineforge_codegen-0.10.4/tests/test_support_checker_color_cast.py +0 -20
  441. pineforge_codegen-0.10.4/tests/test_support_checker_const_namespaces.py +0 -145
  442. pineforge_codegen-0.10.4/tests/test_support_checker_dividends_earnings.py +0 -28
  443. pineforge_codegen-0.10.4/tests/test_support_checker_footprint.py +0 -26
  444. pineforge_codegen-0.10.4/tests/test_support_checker_input_color.py +0 -75
  445. pineforge_codegen-0.10.4/tests/test_support_checker_input_source.py +0 -73
  446. pineforge_codegen-0.10.4/tests/test_support_checker_matrix.py +0 -55
  447. pineforge_codegen-0.10.4/tests/test_support_checker_security_adjustment.py +0 -76
  448. pineforge_codegen-0.10.4/tests/test_support_checker_syminfo_gap_fields.py +0 -120
  449. pineforge_codegen-0.10.4/tests/test_support_checker_timeframe_from_seconds.py +0 -21
  450. pineforge_codegen-0.10.4/tests/test_support_checker_varip.py +0 -53
  451. pineforge_codegen-0.10.4/tests/test_support_checker_volume_row.py +0 -21
  452. pineforge_codegen-0.10.4/tests/test_symbols.py +0 -42
  453. pineforge_codegen-0.10.4/tests/test_ta_official_surface.py +0 -163
  454. pineforge_codegen-0.10.4/tests/test_transpile_division.py +0 -115
  455. pineforge_codegen-0.10.4/tests/test_transpile_enum_order.py +0 -29
  456. pineforge_codegen-0.10.4/tests/test_transpile_pf_trace.py +0 -219
  457. pineforge_codegen-0.10.4/tests/test_transpile_tr_handle_na.py +0 -124
  458. pineforge_codegen-0.10.4/tests/test_transpiler_matrix_kwargs.py +0 -17
  459. pineforge_codegen-0.10.4/tests/test_typed_void_method_precedence.py +0 -161
  460. pineforge_codegen-0.10.4/tests/test_typespec_matrix.py +0 -17
  461. pineforge_codegen-0.10.4/tests/test_udf_series_parameter_history.py +0 -177
  462. pineforge_codegen-0.10.4/tests/test_udt_drawing_field_cleanup.py +0 -91
  463. pineforge_codegen-0.10.4/tests/test_udt_lvalue_alias.py +0 -253
  464. pineforge_codegen-0.10.4/tests/test_udt_na_lifecycle.py +0 -540
  465. pineforge_codegen-0.10.4/tests/test_udt_object_identity.py +0 -888
  466. pineforge_codegen-0.10.4/tests/test_unsupported_reporting.py +0 -178
  467. pineforge_codegen-0.10.4/tests/test_vwap_property_source.py +0 -127
  468. pineforge_codegen-0.10.4/tests/test_vwap_tuple_unpack.py +0 -147
  469. pineforge_codegen-0.10.4/tests/test_wide_int_arrays_and_literals.py +0 -84
  470. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/.gitignore +0 -0
  471. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/LICENSE +0 -0
  472. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/__init__.py +0 -0
  473. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/codegen/helpers_syminfo.py +0 -0
  474. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/errors.py +0 -0
  475. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/finite_ta_length.py +0 -0
  476. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/symbols.py +0 -0
  477. {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0rc1}/pineforge_codegen/tokens.py +0 -0
  478. {pineforge_codegen-0.10.4 → 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