pineforge-codegen 0.10.4__tar.gz → 1.0.0__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.
- pineforge_codegen-1.0.0/CHANGELOG.md +245 -0
- pineforge_codegen-1.0.0/CONTRIBUTING.md +119 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/LEGAL.md +2 -2
- pineforge_codegen-1.0.0/PKG-INFO +728 -0
- pineforge_codegen-1.0.0/README.md +507 -0
- pineforge_codegen-1.0.0/VERSION +1 -0
- pineforge_codegen-1.0.0/docs/PUBLIC_CONTRACT.md +118 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/docs/codegen-coverage-gaps.md +58 -52
- pineforge_codegen-1.0.0/docs/pine-cap-activation.md +40 -0
- pineforge_codegen-1.0.0/pineforge_codegen/__init__.py +186 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/analyzer/__init__.py +2 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/analyzer/base.py +754 -76
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/analyzer/call_handlers.py +260 -40
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/analyzer/contracts.py +37 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/analyzer/diagnostics.py +30 -4
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/analyzer/tables.py +49 -8
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/analyzer/types.py +33 -1
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/ast_nodes.py +32 -1
- pineforge_codegen-1.0.0/pineforge_codegen/block_locals.py +185 -0
- pineforge_codegen-1.0.0/pineforge_codegen/builtin_keywords.py +42 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/base.py +896 -156
- pineforge_codegen-1.0.0/pineforge_codegen/codegen/constant_fold.py +131 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/drawing.py +221 -79
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/emit_top.py +946 -213
- pineforge_codegen-1.0.0/pineforge_codegen/codegen/helpers.py +609 -0
- pineforge_codegen-1.0.0/pineforge_codegen/codegen/host_members.py +162 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/input.py +252 -85
- pineforge_codegen-1.0.0/pineforge_codegen/codegen/security.py +7808 -0
- pineforge_codegen-1.0.0/pineforge_codegen/codegen/session_market.py +71 -0
- pineforge_codegen-1.0.0/pineforge_codegen/codegen/ta.py +2102 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/tables.py +193 -71
- pineforge_codegen-1.0.0/pineforge_codegen/codegen/tv_number_format.py +270 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/types.py +1882 -78
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/visit_call.py +920 -131
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/visit_expr.py +738 -57
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/visit_stmt.py +595 -49
- pineforge_codegen-1.0.0/pineforge_codegen/external_requests.py +877 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/lexer.py +104 -22
- pineforge_codegen-1.0.0/pineforge_codegen/library_inline.py +1304 -0
- pineforge_codegen-1.0.0/pineforge_codegen/library_modules.py +126 -0
- pineforge_codegen-1.0.0/pineforge_codegen/library_v5.py +683 -0
- pineforge_codegen-1.0.0/pineforge_codegen/limits.py +138 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/method_binding.py +33 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/parser.py +384 -68
- pineforge_codegen-1.0.0/pineforge_codegen/pine_libraries.py +266 -0
- pineforge_codegen-1.0.0/pineforge_codegen/pine_spelling.py +216 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/pragmas.py +64 -10
- pineforge_codegen-1.0.0/pineforge_codegen/security_contexts.py +1585 -0
- pineforge_codegen-1.0.0/pineforge_codegen/session_reads.py +84 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/signatures.py +48 -23
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/support_checker.py +1106 -85
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pyproject.toml +23 -6
- pineforge_codegen-0.10.4/.claude/settings.json +0 -15
- pineforge_codegen-0.10.4/.github/dependabot.yml +0 -20
- pineforge_codegen-0.10.4/.github/workflows/gate.yml +0 -82
- pineforge_codegen-0.10.4/.github/workflows/promote-baseline.yml +0 -235
- pineforge_codegen-0.10.4/.github/workflows/publish-pyodide.yml +0 -80
- pineforge_codegen-0.10.4/.github/workflows/release.yml +0 -174
- pineforge_codegen-0.10.4/.github/workflows/test.yml +0 -42
- pineforge_codegen-0.10.4/AGENTS.md +0 -467
- pineforge_codegen-0.10.4/CLAUDE.md +0 -412
- pineforge_codegen-0.10.4/PKG-INFO +0 -463
- pineforge_codegen-0.10.4/PYODIDE_TARGET +0 -1
- pineforge_codegen-0.10.4/README.md +0 -243
- pineforge_codegen-0.10.4/VERSION +0 -1
- pineforge_codegen-0.10.4/gate/compare.mjs +0 -69
- pineforge_codegen-0.10.4/gate/glue.py +0 -35
- pineforge_codegen-0.10.4/gate/oracle.py +0 -34
- pineforge_codegen-0.10.4/gate/run-gate.mjs +0 -133
- pineforge_codegen-0.10.4/gate/selftest.mjs +0 -57
- pineforge_codegen-0.10.4/npm/README.md +0 -25
- pineforge_codegen-0.10.4/npm/index.mjs +0 -30
- pineforge_codegen-0.10.4/npm/package.json +0 -34
- pineforge_codegen-0.10.4/package-lock.json +0 -132
- pineforge_codegen-0.10.4/package.json +0 -16
- pineforge_codegen-0.10.4/pineforge_codegen/__init__.py +0 -95
- pineforge_codegen-0.10.4/pineforge_codegen/codegen/helpers.py +0 -188
- pineforge_codegen-0.10.4/pineforge_codegen/codegen/security.py +0 -3813
- pineforge_codegen-0.10.4/pineforge_codegen/codegen/ta.py +0 -1014
- pineforge_codegen-0.10.4/scripts/build-npm-package.mjs +0 -74
- pineforge_codegen-0.10.4/scripts/dump-tables.py +0 -148
- pineforge_codegen-0.10.4/scripts/worker-template.mjs +0 -70
- pineforge_codegen-0.10.4/tests/__init__.py +0 -0
- pineforge_codegen-0.10.4/tests/_compile.py +0 -244
- pineforge_codegen-0.10.4/tests/fixtures/matrix_eigen_pca.pine +0 -43
- pineforge_codegen-0.10.4/tests/gate-corpus/err/const_ns_plot_style_free.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/const_ns_shape_free.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/export_func.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/footprint_new.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/hard_reject_dividends.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/matrix_unknown_elem.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/multi_error_one_line.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/sec_tf_invalid.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_color.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_math.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_str.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_strategy_fn.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_syminfo.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/err/unknown_ta.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/AAPL__session-ismarket-nyse-rth-01.pine +0 -16
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/AAPL__time-tradingday-daily-reset-counter-01.pine +0 -44
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/QQQ__session-ispremarket-nasdaq-01.pine +0 -16
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/SPY__session-firstbar-vwap-anchor-01.pine +0 -29
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/SPY__session-lastbar-flatten-01.pine +0 -19
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/chart_bg_color.pine +0 -3
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/crypto-htf__mtf-htf-monthly-ema-cross-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/crypto-leverage__leverage-margin-call-perp-5x-01.pine +0 -54
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/divergent_last_bar_index.pine +0 -7
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/forex__symbol-fx-5dp-eurusd-01.pine +0 -32
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/futures__symbol-futures-pointvalue-es-01.pine +0 -36
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/tutorial__macd__strategy.pine +0 -45
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/tutorial__mtf__strategy_htf.pine +0 -49
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/tutorial__mtf__strategy_ltf.pine +0 -58
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/us-equity__symbol-equity-rth-gaps-aapl-01.pine +0 -34
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/us-equity__us-equity-exchange-tz-intraday-cap-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-choch-bos-isolator-01.pine +0 -83
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-edge-margin-50-pct-01.pine +0 -39
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-percent-of-equity-sizing-01.pine +0 -42
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-small-equity-fraction-01.pine +0 -44
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-parity-stop-limit-timing-01.pine +0 -54
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__analyzer-self-test-multi-mode-01.pine +0 -80
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__anomaly-equity-mirror-strategy-equity-01.pine +0 -56
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-off-01b.pine +0 -41
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-on-01a.pine +0 -44
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-atr-trail-series-int-points-01.pine +0 -57
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-atr-trailing-stop-state-01.pine +0 -60
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-entry-exit-same-pass-attach-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-exit-stop-limit-trail-same-bar-01.pine +0 -41
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-exit-three-way-set-once-entry-01.pine +0 -49
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-exit-tp-sl-fixed-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-narrow-stop-limit-with-trail8-01.pine +0 -49
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-partial-exit-qty-percent-01.pine +0 -28
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-same-id-exit-replace-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-tp-sl-oca-reduce-isolate-01.pine +0 -64
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-trail-points-no-offset-explicit-01.pine +0 -50
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-trail-points-with-offset-only-01.pine +0 -34
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__bracket-trailing-activation-offset-path-01.pine +0 -35
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__cap-max-intraday-filled-orders-isolate-01.pine +0 -45
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__cap-risk-gates-allow-max-intraday-01.pine +0 -36
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-integration-01.pine +0 -99
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-quad-ema-stack-01.pine +0 -59
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-rsi-pullback-latch-01.pine +0 -61
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-4emarsi-session-window-nbar-exit-01.pine +0 -60
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-boscurv-integration-01.pine +0 -80
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-boscurv-linreg-slope-channel-01.pine +0 -64
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-boscurv-pivot-bos-trigger-01.pine +0 -55
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-bracket-cap-range-pending-stop-01.pine +0 -98
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-adx-regime-classify-01.pine +0 -87
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-bb-kc-squeeze-release-01.pine +0 -62
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-cooldown-daily-cap-01.pine +0 -72
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-equity-feedback-sizing-01.pine +0 -95
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-integration-01.pine +0 -236
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-pivot-liquidity-sweep-01.pine +0 -66
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-pressure-gauge-01.pine +0 -79
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-rsi-macd-momentum-01.pine +0 -88
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-ies-three-ema-bias-score-01.pine +0 -82
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-calc-on-every-tick-01.pine +0 -55
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-integration-01.pine +0 -85
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-kama-state-recurrence-01.pine +0 -54
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kanuck-max-bars-back-500-01.pine +0 -67
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-ema-atr-breakout-band-01.pine +0 -48
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-integration-01.pine +0 -68
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-kalman-filter-1d-01.pine +0 -58
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-kkb-margin-100-pct-01.pine +0 -46
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-integration-01.pine +0 -89
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-pivot-hh-ll-01.pine +0 -58
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-wait-one-continuation-01.pine +0 -73
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-liqsweep-wick-pierce-close-back-01.pine +0 -55
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-integration-01.pine +0 -97
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-pivot-state-machine-01.pine +0 -64
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-rolling-highest-lowest-01.pine +0 -51
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-marketshift-state-edge-detector-01.pine +0 -69
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-scalping-fast-ma-cross-trigger-01.pine +0 -46
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-scalping-integration-01.pine +0 -61
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-scalping-tight-tp-sl-points-01.pine +0 -63
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-integration-01.pine +0 -124
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-line-new-projection-01.pine +0 -92
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-pivot-anchored-bracket-01.pine +0 -75
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-three-tier-ema-state-01.pine +0 -66
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-trendmaster-trend-momentum-structure-gate-01.pine +0 -73
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-cumulative-volume-delta-01.pine +0 -54
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-fvg-active-zones-01.pine +0 -96
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-integration-01.pine +0 -195
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-manual-adx-regime-01.pine +0 -73
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-pivot-strength-5-01.pine +0 -55
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-rsi-smooth-divergence-01.pine +0 -57
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-session-tz-newyork-01.pine +0 -56
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-vcp-vol-zscore-anomaly-01.pine +0 -52
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-wunderscalper-alert-templates-01.pine +0 -56
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-wunderscalper-explicit-reverse-01.pine +0 -53
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__composite-wunderscalper-integration-01.pine +0 -53
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__input-source-runtime-override-high-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__input-source-subscript-hl2-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ltf-bool-array-bull-majority-01.pine +0 -44
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ltf-numeric-float-ratio15-01.pine +0 -49
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-01.pine +0 -44
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-rsi-cross-08a.pine +0 -37
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__magnifier-tick-dist-volume-weighted-on-01.pine +0 -41
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-mask-explicit-utc-tz-01.pine +0 -60
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-mask-no-transpose-01.pine +0 -38
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-mask-transpose-roundtrip-01.pine +0 -38
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-bool-regime-mask-24x7-01.pine +0 -65
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-covariance-eigen-pca-01.pine +0 -43
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__matrix-eigen-rank-deficient-cov-01.pine +0 -85
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__max-bars-back-function-call-deep-history-01.pine +0 -23
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-daily-array-median-percentrank-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-daily-ema26-warmup-01.pine +0 -41
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-daily-prev-high-break-01.pine +0 -32
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-dual-tf-60-240-rising-01.pine +0 -28
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-close-change-baseline-01.pine +0 -57
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-close-roll-01.pine +0 -25
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-gaps-on-roll-01.pine +0 -34
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-rsi14-inside-security-01.pine +0 -25
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-sma20-inside-security-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-60-volume-spike-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-confluence-manual-trail-01.pine +0 -77
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-confluence-static-bracket-01.pine +0 -75
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-htf-weekly-sma-cross-01.pine +0 -24
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-roll-state-60-240-d-minimal-01.pine +0 -36
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-triple-tf-close-confluence-01.pine +0 -39
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__mtf-triple-tf-macd-hist-confluence-01.pine +0 -47
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__na-deep-history-int-na-01.pine +0 -51
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__na-nz-fixnan-history-chain-01.pine +0 -29
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__oca-exit-bracket-internal-cancel-01.pine +0 -39
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__oca-multi-bracket-isolation-01.pine +0 -46
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__oca-raw-strategy-order-reduce-01.pine +0 -33
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-close-all-cancel-all-01.pine +0 -33
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-close-immediate-vs-next-bar-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-cross-entry-cancel-same-pass-01.pine +0 -38
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-cross-entry-close-same-pass-01.pine +0 -38
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-cross-exit-close-same-pass-01.pine +0 -32
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-deferred-flip-guaranteed-gap-stops-01.pine +0 -63
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-deferred-flip-pooc-cross-bar-01.pine +0 -54
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-four-bar-stop-no-close-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-side-same-id-stop-no-cancel-01.pine +0 -31
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-both-touch-priority-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-cancel-rotation-01.pine +0 -32
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-far-only-01.pine +0 -22
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-near-only-01.pine +0 -22
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-open-high-first-path-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-open-low-first-path-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-open-tie-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-source-order-long-first-01.pine +0 -23
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-dual-stop-source-order-short-first-01.pine +0 -23
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-entry-implicit-reversal-exit-01.pine +0 -29
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-flip-stop-no-paired-close-01.pine +0 -37
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-market-close-fill-basis-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-one-side-four-bar-far-opposite-01.pine +0 -28
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-opposite-entry-close-same-pass-01.pine +0 -33
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-percent-equity-cash-commission-01.pine +0 -21
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-process-on-close-false-01.pine +0 -35
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-process-on-close-true-01.pine +0 -36
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-range-expansion-pending-stop-01.pine +0 -55
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-entry-close-same-bar-01.pine +0 -36
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-market-entry-repeat-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-after-flat-01.pine +0 -31
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-cross-before-modify-01.pine +0 -41
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-minute-zero-01.pine +0 -28
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-modification-01.pine +0 -31
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-raise-only-01.pine +0 -31
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-same-id-stop-window-four-bars-01.pine +0 -24
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stale-stop-after-close-no-cancel-01.pine +0 -29
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-cancel-no-regime-close-01.pine +0 -47
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-entry-cancel-opposite-01.pine +0 -35
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-entry-reversal-grouping-01.pine +0 -33
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__order-stop-entry-touch-boundary-01.pine +0 -38
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-cash-fractional-commission-01.pine +0 -37
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-close-id-grouping-01.pine +0 -40
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-deferred-flip-close-all-01.pine +0 -44
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__pyramid-flip-stop-pyramiding-2-01.pine +0 -46
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__recompute-alma-sar-corr-magnifier-01.pine +0 -36
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__recompute-mtf-rsi-macd-bb-01.pine +0 -51
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__risk-max-contracts-held-gate-pyramid-01.pine +0 -32
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__session-hour-minute-pulse-filter-01.pine +0 -25
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__session-ny-spring-forward-dst-01.pine +0 -40
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__stats-eventrades-zero-pnl-count-01.pine +0 -48
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-accdist-ema-cross-01.pine +0 -24
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-bb-kc-squeeze-breakout-01.pine +0 -57
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-bb-rsi-mean-reversion-01.pine +0 -41
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-cci-threshold-cross-01.pine +0 -39
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-chandelier-exit-direction-01.pine +0 -45
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-closedtrades-risk-introspection-01.pine +0 -37
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-cmo-9-zero-cross-01.pine +0 -23
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-cog-10-signal-cross-01.pine +0 -25
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-dmi-adx-di-cross-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-donchian-channel-breakout-01.pine +0 -42
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-dual-ma-switch-dispatch-01.pine +0 -42
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-dual-thrust-open-anchored-range-01.pine +0 -47
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-elder-ray-bull-bear-power-01.pine +0 -45
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-ema-ribbon-stack-transition-01.pine +0 -40
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-engulfing-candle-pattern-01.pine +0 -60
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-highestbars-lowestbars-breakout-01.pine +0 -47
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-hma-55-close-cross-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-hma-fast-slow-cross-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-inside-bar-engulfing-01.pine +0 -48
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-kama-style-efficiency-ratio-01.pine +0 -50
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-keltner-channel-break-01.pine +0 -62
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-linreg-stdev-channel-revert-01.pine +0 -40
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-macd-12-26-9-line-signal-cross-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-macd-histogram-reversal-01.pine +0 -32
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-macd-line-gt-signal-continuous-state-01.pine +0 -23
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-map-regime-threshold-lookup-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-median-vs-ema-cross-01.pine +0 -30
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-mfi-14-bands-20-80-01.pine +0 -24
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-momentum-roc-zero-cross-01.pine +0 -38
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-multi-indicator-score-composite-01.pine +0 -62
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-nvi-pvi-cross-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-obv-ema-cross-01.pine +0 -24
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-percentrank-mean-reversion-01.pine +0 -43
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-array-unshift-pop-01.pine +0 -62
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-atr-stop-target-01.pine +0 -46
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-confirmed-break-01.pine +0 -62
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pivot-point-levels-break-01.pine +0 -28
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-pvt-ema-cross-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-range-filter-var-band-01.pine +0 -53
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rci-14-zero-cross-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi-bb-self-bands-01.pine +0 -44
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi-ema-signal-cross-01.pine +0 -32
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi-macd-and-continuous-state-01.pine +0 -33
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-bands-30-70-01.pine +0 -26
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-cross-50-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-gt-50-continuous-state-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-rsi14-gt60-lt45-no-matrix-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-sar-flip-entry-01.pine +0 -60
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-sma-152-close-cross-01.pine +0 -27
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-sma-dual-cross-01.pine +0 -54
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-stdev-sma-expansion-break-01.pine +0 -56
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-stoch-slow-k-d-cross-01.pine +0 -60
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-stochastic-rsi-cross-01.pine +0 -39
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-str-match-regex-filter-01.pine +0 -34
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-supertrend-adx-filter-01.pine +0 -45
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-supertrend-direction-flip-01.pine +0 -65
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-triple-sma-stack-latch-01.pine +0 -46
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-tsi-25-13-signal-cross-01.pine +0 -22
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-volume-spike-atr-breakout-01.pine +0 -40
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-vwma-vs-sma-divergence-01.pine +0 -33
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__ta-wpr-14-bands-01.pine +0 -22
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__timeframe-main-period-self-adaptive-01.pine +0 -34
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-calls-sibling-cumulative-01.pine +0 -98
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-default-param-kwargs-01.pine +0 -64
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-drives-strategy-entry-01.pine +0 -62
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-extra-primitive-args-01.pine +0 -42
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-feeds-strategy-exit-prices-01.pine +0 -55
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-for-loop-01.pine +0 -55
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-if-else-branch-01.pine +0 -65
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-switch-arms-01.pine +0 -64
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-in-while-loop-01.pine +0 -58
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-mutating-self-ref-01.pine +0 -51
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-on-array-element-01.pine +0 -98
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-reads-strategy-state-01.pine +0 -53
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-receives-ta-series-param-01.pine +0 -57
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-scalar-return-01.pine +0 -51
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-tuple-return-destructure-01.pine +0 -61
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-udt-return-from-func-01.pine +0 -67
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-uses-history-globals-01.pine +0 -60
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-uses-math-funcs-01.pine +0 -59
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-uses-na-nz-fixnan-01.pine +0 -50
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-var-instance-streak-01.pine +0 -51
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-method-windowed-method-chain-01.pine +0 -78
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__udt-regime-stack-stress-01.pine +0 -186
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__vwap-bands-breakout-1sigma-01.pine +0 -21
- pineforge_codegen-0.10.4/tests/gate-corpus/ok/validation__vwap-bands-mean-reversion-2sigma-01.pine +0 -23
- pineforge_codegen-0.10.4/tests/golden/matrix_eigen_pca.cpp +0 -397
- pineforge_codegen-0.10.4/tests/test_analyzer.py +0 -221
- pineforge_codegen-0.10.4/tests/test_analyzer_matrix_inference.py +0 -77
- pineforge_codegen-0.10.4/tests/test_analyzer_ta_return_types.py +0 -108
- pineforge_codegen-0.10.4/tests/test_anchor_tf_change.py +0 -38
- pineforge_codegen-0.10.4/tests/test_anchor_time.py +0 -58
- pineforge_codegen-0.10.4/tests/test_anchor_vwap.py +0 -77
- pineforge_codegen-0.10.4/tests/test_array_bounds_insert_fill_slice.py +0 -277
- pineforge_codegen-0.10.4/tests/test_array_checked_access.py +0 -999
- pineforge_codegen-0.10.4/tests/test_array_empty_aggregates.py +0 -198
- pineforge_codegen-0.10.4/tests/test_array_terminal_returns.py +0 -1493
- pineforge_codegen-0.10.4/tests/test_calc_on_order_fills_codegen.py +0 -460
- pineforge_codegen-0.10.4/tests/test_callable_series_param_types.py +0 -569
- pineforge_codegen-0.10.4/tests/test_callable_ta_forwarded_length.py +0 -639
- pineforge_codegen-0.10.4/tests/test_callable_var_first_reach.py +0 -494
- pineforge_codegen-0.10.4/tests/test_codegen_audit_fixes.py +0 -357
- pineforge_codegen-0.10.4/tests/test_codegen_determinism.py +0 -171
- pineforge_codegen-0.10.4/tests/test_codegen_drawing_data.py +0 -730
- pineforge_codegen-0.10.4/tests/test_codegen_drawing_handles.py +0 -41
- pineforge_codegen-0.10.4/tests/test_codegen_fallthrough_guards.py +0 -137
- pineforge_codegen-0.10.4/tests/test_codegen_golden.py +0 -113
- pineforge_codegen-0.10.4/tests/test_codegen_input_getters.py +0 -207
- pineforge_codegen-0.10.4/tests/test_codegen_matrix_typed.py +0 -432
- pineforge_codegen-0.10.4/tests/test_codegen_new.py +0 -2018
- pineforge_codegen-0.10.4/tests/test_codegen_string_escape.py +0 -25
- pineforge_codegen-0.10.4/tests/test_codegen_ta_derived_length.py +0 -769
- pineforge_codegen-0.10.4/tests/test_codegen_ta_finite_choice_length.py +0 -547
- pineforge_codegen-0.10.4/tests/test_codegen_ta_stable_var_literal.py +0 -619
- pineforge_codegen-0.10.4/tests/test_codegen_validation_fixes.py +0 -1531
- pineforge_codegen-0.10.4/tests/test_collection_scope_isolation.py +0 -841
- pineforge_codegen-0.10.4/tests/test_compile_corpus.py +0 -145
- pineforge_codegen-0.10.4/tests/test_compile_smoke.py +0 -874
- pineforge_codegen-0.10.4/tests/test_errors.py +0 -33
- pineforge_codegen-0.10.4/tests/test_extract_inputs.py +0 -107
- pineforge_codegen-0.10.4/tests/test_float_relational_runtime.py +0 -258
- pineforge_codegen-0.10.4/tests/test_glue_smoke.py +0 -43
- pineforge_codegen-0.10.4/tests/test_hungpixi_regressions.py +0 -144
- pineforge_codegen-0.10.4/tests/test_import_all.py +0 -34
- pineforge_codegen-0.10.4/tests/test_input_time_int64.py +0 -39
- pineforge_codegen-0.10.4/tests/test_int64_reassign_promotion.py +0 -73
- pineforge_codegen-0.10.4/tests/test_int64_time_storage.py +0 -56
- pineforge_codegen-0.10.4/tests/test_lazy_edge_ta_every_bar.py +0 -685
- pineforge_codegen-0.10.4/tests/test_lazy_source_clock.py +0 -266
- pineforge_codegen-0.10.4/tests/test_lazy_source_clock_runtime.py +0 -219
- pineforge_codegen-0.10.4/tests/test_lexer.py +0 -57
- pineforge_codegen-0.10.4/tests/test_map_call_diagnostics.py +0 -342
- pineforge_codegen-0.10.4/tests/test_map_param_methods.py +0 -345
- pineforge_codegen-0.10.4/tests/test_map_terminal_returns.py +0 -429
- pineforge_codegen-0.10.4/tests/test_math_sign_na_codegen.py +0 -114
- pineforge_codegen-0.10.4/tests/test_matrix_identity_checkpoint.py +0 -94
- pineforge_codegen-0.10.4/tests/test_matrix_na_lifecycle.py +0 -741
- pineforge_codegen-0.10.4/tests/test_matrix_void_method_return.py +0 -168
- pineforge_codegen-0.10.4/tests/test_method_receiver_types.py +0 -141
- pineforge_codegen-0.10.4/tests/test_method_written_callsite_lifecycle.py +0 -461
- pineforge_codegen-0.10.4/tests/test_na_reassign_retype.py +0 -183
- pineforge_codegen-0.10.4/tests/test_na_relational_lowering.py +0 -345
- pineforge_codegen-0.10.4/tests/test_official_surface.py +0 -475
- pineforge_codegen-0.10.4/tests/test_parser.py +0 -413
- pineforge_codegen-0.10.4/tests/test_persistent_callable_owner_state.py +0 -1438
- pineforge_codegen-0.10.4/tests/test_pinemap_boundaries_and_order.py +0 -257
- pineforge_codegen-0.10.4/tests/test_pinemap_cold_followups_history.py +0 -164
- pineforge_codegen-0.10.4/tests/test_pinemap_semantics.py +0 -1041
- pineforge_codegen-0.10.4/tests/test_pinemap_temp_receiver_var.py +0 -46
- pineforge_codegen-0.10.4/tests/test_runtime_var_initialization.py +0 -413
- pineforge_codegen-0.10.4/tests/test_security_helper_local_var.py +0 -585
- pineforge_codegen-0.10.4/tests/test_security_lazy_ta_under_conditionals.py +0 -266
- pineforge_codegen-0.10.4/tests/test_security_math_reducer.py +0 -53
- pineforge_codegen-0.10.4/tests/test_security_ohlc_hist_is_complete.py +0 -104
- pineforge_codegen-0.10.4/tests/test_security_ta_input_history_offset.py +0 -558
- pineforge_codegen-0.10.4/tests/test_security_tf_input_derived.py +0 -197
- pineforge_codegen-0.10.4/tests/test_security_tf_literal.py +0 -99
- pineforge_codegen-0.10.4/tests/test_security_tuple_interactions.py +0 -573
- pineforge_codegen-0.10.4/tests/test_signatures.py +0 -1010
- pineforge_codegen-0.10.4/tests/test_sparse_atr_prev_close.py +0 -65
- pineforge_codegen-0.10.4/tests/test_strategy_close_callsite_tokens.py +0 -81
- pineforge_codegen-0.10.4/tests/test_support_checker.py +0 -1008
- pineforge_codegen-0.10.4/tests/test_support_checker_chart_visible_bar_time.py +0 -21
- pineforge_codegen-0.10.4/tests/test_support_checker_color_cast.py +0 -20
- pineforge_codegen-0.10.4/tests/test_support_checker_const_namespaces.py +0 -145
- pineforge_codegen-0.10.4/tests/test_support_checker_dividends_earnings.py +0 -28
- pineforge_codegen-0.10.4/tests/test_support_checker_footprint.py +0 -26
- pineforge_codegen-0.10.4/tests/test_support_checker_input_color.py +0 -75
- pineforge_codegen-0.10.4/tests/test_support_checker_input_source.py +0 -73
- pineforge_codegen-0.10.4/tests/test_support_checker_matrix.py +0 -55
- pineforge_codegen-0.10.4/tests/test_support_checker_security_adjustment.py +0 -76
- pineforge_codegen-0.10.4/tests/test_support_checker_syminfo_gap_fields.py +0 -120
- pineforge_codegen-0.10.4/tests/test_support_checker_timeframe_from_seconds.py +0 -21
- pineforge_codegen-0.10.4/tests/test_support_checker_varip.py +0 -53
- pineforge_codegen-0.10.4/tests/test_support_checker_volume_row.py +0 -21
- pineforge_codegen-0.10.4/tests/test_symbols.py +0 -42
- pineforge_codegen-0.10.4/tests/test_ta_official_surface.py +0 -163
- pineforge_codegen-0.10.4/tests/test_transpile_division.py +0 -115
- pineforge_codegen-0.10.4/tests/test_transpile_enum_order.py +0 -29
- pineforge_codegen-0.10.4/tests/test_transpile_pf_trace.py +0 -219
- pineforge_codegen-0.10.4/tests/test_transpile_tr_handle_na.py +0 -124
- pineforge_codegen-0.10.4/tests/test_transpiler_matrix_kwargs.py +0 -17
- pineforge_codegen-0.10.4/tests/test_typed_void_method_precedence.py +0 -161
- pineforge_codegen-0.10.4/tests/test_typespec_matrix.py +0 -17
- pineforge_codegen-0.10.4/tests/test_udf_series_parameter_history.py +0 -177
- pineforge_codegen-0.10.4/tests/test_udt_drawing_field_cleanup.py +0 -91
- pineforge_codegen-0.10.4/tests/test_udt_lvalue_alias.py +0 -253
- pineforge_codegen-0.10.4/tests/test_udt_na_lifecycle.py +0 -540
- pineforge_codegen-0.10.4/tests/test_udt_object_identity.py +0 -888
- pineforge_codegen-0.10.4/tests/test_unsupported_reporting.py +0 -178
- pineforge_codegen-0.10.4/tests/test_vwap_property_source.py +0 -127
- pineforge_codegen-0.10.4/tests/test_vwap_tuple_unpack.py +0 -147
- pineforge_codegen-0.10.4/tests/test_wide_int_arrays_and_literals.py +0 -84
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/.gitignore +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/LICENSE +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/__init__.py +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/codegen/helpers_syminfo.py +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/errors.py +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/finite_ta_length.py +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/symbols.py +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/pineforge_codegen/tokens.py +0 -0
- {pineforge_codegen-0.10.4 → pineforge_codegen-1.0.0}/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** (
|
|
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
|
|
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
|
|