programgarden-core 1.25.3__tar.gz → 1.26.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.
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/PKG-INFO +11 -1
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/README.md +10 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/listener.py +2 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/pyproject.toml +1 -1
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/client.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/components.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/mixins.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/products.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/sql.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/storage.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/code_node.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/exceptions.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/expression/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/expression/evaluator.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/i18n/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/i18n/locales/en.json +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/i18n/locales/ko.json +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/i18n/translator.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/korea_alias.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/connection_rule.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/credential.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/edge.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/event.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/exchange.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/field_binding.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/job.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/order_diagnostics.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/plugin_resource.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/resilience.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/resource.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/validation.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/workflow.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/account_futures.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/account_korea_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/account_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/ai.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/backtest.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/backtest_futures.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/backtest_korea_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/backtest_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/base.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/broker.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/calculation.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/code.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/condition.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/data.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/data_futures.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/data_korea_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/data_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/display.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/event.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/fundamental_korea_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/fundamental_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/infra.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/market_external.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/market_status.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/open_orders_futures.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/open_orders_korea_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/open_orders_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/order.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/portfolio.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/realtime_futures.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/realtime_korea_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/realtime_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/risk.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/symbol.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/symbol_futures.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/symbol_korea_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/symbol_stock.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/trigger.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/news_analyst.json +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/risk_manager.json +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/strategist.json +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/technical_analyst.json +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/registry/__init__.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/registry/credential_registry.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/registry/node_registry.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/registry/plugin_registry.py +0 -0
- {programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/retry_executor.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: programgarden-core
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.26.0
|
|
4
4
|
Summary: ProgramGarden Core - 노드 기반 DSL 핵심 타입 정의
|
|
5
5
|
License-Expression: AGPL-3.0-or-later
|
|
6
6
|
Author: 프로그램동산
|
|
@@ -113,3 +113,13 @@ is inferred from these estimates. Actual zero and negative amounts are retained.
|
|
|
113
113
|
`currency` is null for mixed or unavailable currencies. Consumers must handle
|
|
114
114
|
nullable monetary fields and must not coerce them to zero.
|
|
115
115
|
|
|
116
|
+
`WorkflowPnLEvent.personal_metrics` is an optional versioned envelope for retained
|
|
117
|
+
local workflow executions. Version 1 includes `scope` (kind, product, provider,
|
|
118
|
+
trading mode), timezone-aware `as_of`, `basis`, executed-order count/status,
|
|
119
|
+
per-symbol/exchange/currency realized amounts/status, and unavailable MDD.
|
|
120
|
+
It is unverified personal evidence, independent of whole-account contest results.
|
|
121
|
+
Stock realized amounts are stored long-only FIFO gross values excluding fees;
|
|
122
|
+
unknown currency stays null. Futures monetary values and portfolio MDD require
|
|
123
|
+
accounting evidence absent from this ledger and remain null. Consumers must
|
|
124
|
+
preserve null/status and use the latest cumulative observation, not sum dates.
|
|
125
|
+
|
|
@@ -97,3 +97,13 @@ monetary/rate scalars remain null when accounting evidence is unavailable.
|
|
|
97
97
|
is inferred from these estimates. Actual zero and negative amounts are retained.
|
|
98
98
|
`currency` is null for mixed or unavailable currencies. Consumers must handle
|
|
99
99
|
nullable monetary fields and must not coerce them to zero.
|
|
100
|
+
|
|
101
|
+
`WorkflowPnLEvent.personal_metrics` is an optional versioned envelope for retained
|
|
102
|
+
local workflow executions. Version 1 includes `scope` (kind, product, provider,
|
|
103
|
+
trading mode), timezone-aware `as_of`, `basis`, executed-order count/status,
|
|
104
|
+
per-symbol/exchange/currency realized amounts/status, and unavailable MDD.
|
|
105
|
+
It is unverified personal evidence, independent of whole-account contest results.
|
|
106
|
+
Stock realized amounts are stored long-only FIFO gross values excluding fees;
|
|
107
|
+
unknown currency stays null. Futures monetary values and portfolio MDD require
|
|
108
|
+
accounting evidence absent from this ledger and remain null. Consumers must
|
|
109
|
+
preserve null/status and use the latest cumulative observation, not sum dates.
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/listener.py
RENAMED
|
@@ -346,6 +346,8 @@ class WorkflowPnLEvent:
|
|
|
346
346
|
pnl_by_currency: Dict[str, Any] = field(default_factory=dict)
|
|
347
347
|
monetary_positions: Dict[str, Any] = field(default_factory=dict)
|
|
348
348
|
unavailable_position_count: int = 0
|
|
349
|
+
# Unverified retained workflow executions; separate from account/contest PnL.
|
|
350
|
+
personal_metrics: Optional[Dict[str, Any]] = None
|
|
349
351
|
|
|
350
352
|
# ========== NEW FIELDS (v2.0) ==========
|
|
351
353
|
|
|
@@ -5,7 +5,7 @@ authors = [
|
|
|
5
5
|
homepage = "https://programgarden.com"
|
|
6
6
|
requires-python = ">=3.12"
|
|
7
7
|
name = "programgarden-core"
|
|
8
|
-
version = "1.
|
|
8
|
+
version = "1.26.0"
|
|
9
9
|
license = "AGPL-3.0-or-later"
|
|
10
10
|
description = "ProgramGarden Core - 노드 기반 DSL 핵심 타입 정의"
|
|
11
11
|
readme = "README.md"
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/components.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/bases/products.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/expression/__init__.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/expression/evaluator.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/i18n/locales/en.json
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/i18n/locales/ko.json
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/i18n/translator.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/__init__.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/connection_rule.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/credential.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/exchange.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/field_binding.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/plugin_resource.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/resilience.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/resource.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/validation.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/models/workflow.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/__init__.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/account_futures.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/account_stock.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/backtest.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/backtest_futures.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/backtest_stock.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/calculation.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/condition.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/data_futures.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/data_korea_stock.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/data_stock.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/market_external.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/market_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/portfolio.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/realtime_futures.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/realtime_stock.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/symbol_futures.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/nodes/symbol_stock.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/__init__.py
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/news_analyst.json
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/risk_manager.json
RENAMED
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/presets/strategist.json
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/registry/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/registry/node_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
{programgarden_core-1.25.3 → programgarden_core-1.26.0}/programgarden_core/retry_executor.py
RENAMED
|
File without changes
|