programgarden 2.4.0__tar.gz → 2.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. {programgarden-2.4.0 → programgarden-2.4.1}/PKG-INFO +1 -1
  2. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/resolver.py +13 -2
  3. {programgarden-2.4.0 → programgarden-2.4.1}/pyproject.toml +1 -1
  4. {programgarden-2.4.0 → programgarden-2.4.1}/README.md +0 -0
  5. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/__init__.py +0 -0
  6. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/binding_validator.py +0 -0
  7. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/client.py +0 -0
  8. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/code_worker.py +0 -0
  9. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/context.py +0 -0
  10. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/__init__.py +0 -0
  11. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/adjustment_delivery.py +0 -0
  12. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/broker_evidence.py +0 -0
  13. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/broker_order_totals.py +0 -0
  14. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/broker_snapshot.py +0 -0
  15. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/checkpoint_manager.py +0 -0
  16. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/db_naming.py +0 -0
  17. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/execution_storage.py +0 -0
  18. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/fill_reconciler.py +0 -0
  19. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/order_cancellation.py +0 -0
  20. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/order_recovery.py +0 -0
  21. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/owned_order_cancellation.py +0 -0
  22. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/position_reconciliation.py +0 -0
  23. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/query_builder.py +0 -0
  24. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/workflow_position_tracker.py +0 -0
  25. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/database/workflow_risk_tracker.py +0 -0
  26. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/deep_fixtures.py +0 -0
  27. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/executor.py +0 -0
  28. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/futures_orderable.py +0 -0
  29. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/futures_pnl.py +0 -0
  30. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/futures_read_evidence.py +0 -0
  31. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/incremental_build.py +0 -0
  32. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/managed_order_control.py +0 -0
  33. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/node_runner.py +0 -0
  34. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/order_lifecycle.py +0 -0
  35. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/plugin/__init__.py +0 -0
  36. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/plugin/sandbox.py +0 -0
  37. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/providers/__init__.py +0 -0
  38. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/providers/llm_errors.py +0 -0
  39. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/providers/llm_provider.py +0 -0
  40. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/reconnect_handler.py +0 -0
  41. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_contracts.py +0 -0
  42. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_events.py +0 -0
  43. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_external.py +0 -0
  44. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_order_adapter.py +0 -0
  45. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_orders.py +0 -0
  46. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_scenarios.py +0 -0
  47. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_semantics.py +0 -0
  48. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_sources.py +0 -0
  49. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_sqlite.py +0 -0
  50. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/replay_triggers.py +0 -0
  51. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/resource/__init__.py +0 -0
  52. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/resource/context.py +0 -0
  53. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/resource/limiter.py +0 -0
  54. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/resource/monitor.py +0 -0
  55. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/resource/throttle.py +0 -0
  56. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/semantic_rules.py +0 -0
  57. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/tools/__init__.py +0 -0
  58. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/tools/credential_tools.py +0 -0
  59. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/tools/definition_tools.py +0 -0
  60. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/tools/event_tools.py +0 -0
  61. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/tools/job_tools.py +0 -0
  62. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/tools/registry_tools.py +0 -0
  63. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/tools/sqlite_tools.py +0 -0
  64. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/validation_recommender.py +0 -0
  65. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/validation_replay.py +0 -0
  66. {programgarden-2.4.0 → programgarden-2.4.1}/programgarden/valuation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: programgarden
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: ProgramGarden - 노드 기반 자동매매 DSL 실행 엔진
5
5
  License-Expression: AGPL-3.0-or-later
6
6
  Author: 프로그램동산
@@ -8,6 +8,14 @@ deterministic self-correction without parsing free-form strings.
8
8
 
9
9
  from typing import Optional, List, Dict, Any, Set, Tuple
10
10
 
11
+ # product_scope 값 → 그 스코프의 브로커 노드 타입. MISSING_REQUIRED_BROKER 안내에 쓴다.
12
+ # (ProductScope.ALL 은 브로커가 필요 없으므로 없다.)
13
+ _BROKER_NODE_BY_SCOPE: Dict[str, str] = {
14
+ "overseas_stock": "OverseasStockBrokerNode",
15
+ "overseas_futures": "OverseasFuturesBrokerNode",
16
+ "korea_stock": "KoreaStockBrokerNode",
17
+ }
18
+
11
19
  from programgarden_core import (
12
20
  ErrorCode,
13
21
  ErrorInfo,
@@ -1663,8 +1671,11 @@ class WorkflowResolver:
1663
1671
 
1664
1672
  # product_scope match
1665
1673
  if scope.value not in available_brokers:
1666
- product_label = "overseas_stock" if scope == ProductScope.STOCK else "overseas_futures"
1667
- broker_node = "OverseasStockBrokerNode" if scope == ProductScope.STOCK else "OverseasFuturesBrokerNode"
1674
+ # 스코프별 브로커 노드 매핑. 2.4.0 까지는 STOCK 이 아닌 모든 스코프를 해외선물로
1675
+ # 표기해 국내주식 노드에 "OverseasFuturesBrokerNode 를 추가하라" 고 안내했다
1676
+ # (AI 저작 루프가 그 말을 믿고 헤맴 — 2026-09-27 dev smoke).
1677
+ product_label = scope.value
1678
+ broker_node = _BROKER_NODE_BY_SCOPE.get(scope, "OverseasFuturesBrokerNode")
1668
1679
  result.add(
1669
1680
  build_error(
1670
1681
  ErrorCode.MISSING_REQUIRED_BROKER,
@@ -5,7 +5,7 @@ authors = [
5
5
  homepage = "https://programgarden.com"
6
6
  requires-python = ">=3.12"
7
7
  name = "programgarden"
8
- version = "2.4.0"
8
+ version = "2.4.1"
9
9
  license = "AGPL-3.0-or-later"
10
10
  description = "ProgramGarden - 노드 기반 자동매매 DSL 실행 엔진"
11
11
  readme = "README.md"
File without changes