programgarden 2.5.2__tar.gz → 2.5.3__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.5.2 → programgarden-2.5.3}/PKG-INFO +2 -2
  2. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/incremental_build.py +1 -1
  3. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_semantics.py +5 -1
  4. {programgarden-2.5.2 → programgarden-2.5.3}/pyproject.toml +2 -2
  5. {programgarden-2.5.2 → programgarden-2.5.3}/README.md +0 -0
  6. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/__init__.py +0 -0
  7. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/binding_validator.py +0 -0
  8. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/client.py +0 -0
  9. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/code_worker.py +0 -0
  10. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/context.py +0 -0
  11. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/__init__.py +0 -0
  12. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/adjustment_delivery.py +0 -0
  13. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/broker_evidence.py +0 -0
  14. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/broker_order_totals.py +0 -0
  15. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/broker_snapshot.py +0 -0
  16. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/checkpoint_manager.py +0 -0
  17. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/db_naming.py +0 -0
  18. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/execution_storage.py +0 -0
  19. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/fill_reconciler.py +0 -0
  20. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/order_cancellation.py +0 -0
  21. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/order_recovery.py +0 -0
  22. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/owned_order_cancellation.py +0 -0
  23. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/position_reconciliation.py +0 -0
  24. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/query_builder.py +0 -0
  25. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/workflow_position_tracker.py +0 -0
  26. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/database/workflow_risk_tracker.py +0 -0
  27. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/deep_fixtures.py +0 -0
  28. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/executor.py +0 -0
  29. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/futures_orderable.py +0 -0
  30. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/futures_pnl.py +0 -0
  31. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/futures_read_evidence.py +0 -0
  32. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/managed_order_control.py +0 -0
  33. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/node_runner.py +0 -0
  34. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/order_lifecycle.py +0 -0
  35. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/plugin/__init__.py +0 -0
  36. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/plugin/sandbox.py +0 -0
  37. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/providers/__init__.py +0 -0
  38. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/providers/llm_errors.py +0 -0
  39. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/providers/llm_provider.py +0 -0
  40. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/reconnect_handler.py +0 -0
  41. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_contracts.py +0 -0
  42. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_events.py +0 -0
  43. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_external.py +0 -0
  44. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_order_adapter.py +0 -0
  45. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_orders.py +0 -0
  46. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_scenarios.py +0 -0
  47. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_sources.py +0 -0
  48. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_sqlite.py +0 -0
  49. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/replay_triggers.py +0 -0
  50. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/resolver.py +0 -0
  51. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/resource/__init__.py +0 -0
  52. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/resource/context.py +0 -0
  53. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/resource/limiter.py +0 -0
  54. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/resource/monitor.py +0 -0
  55. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/resource/throttle.py +0 -0
  56. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/semantic_rules.py +0 -0
  57. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/tools/__init__.py +0 -0
  58. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/tools/credential_tools.py +0 -0
  59. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/tools/definition_tools.py +0 -0
  60. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/tools/event_tools.py +0 -0
  61. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/tools/job_tools.py +0 -0
  62. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/tools/registry_tools.py +0 -0
  63. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/tools/sqlite_tools.py +0 -0
  64. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/validation_recommender.py +0 -0
  65. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/validation_replay.py +0 -0
  66. {programgarden-2.5.2 → programgarden-2.5.3}/programgarden/valuation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: programgarden
3
- Version: 2.5.2
3
+ Version: 2.5.3
4
4
  Summary: ProgramGarden - 노드 기반 자동매매 DSL 실행 엔진
5
5
  License-Expression: AGPL-3.0-or-later
6
6
  Author: 프로그램동산
@@ -16,7 +16,7 @@ Requires-Dist: croniter (>=6.0.0,<7.0.0)
16
16
  Requires-Dist: litellm (>=1.40.0)
17
17
  Requires-Dist: lxml (>=6.0.2,<7.0.0)
18
18
  Requires-Dist: programgarden-community (>=2.3.1,<3.0.0)
19
- Requires-Dist: programgarden-core (>=2.5.2,<3.0.0)
19
+ Requires-Dist: programgarden-core (>=2.5.3,<3.0.0)
20
20
  Requires-Dist: programgarden-finance (>=2.0.1,<3.0.0)
21
21
  Requires-Dist: psutil (>=6.0.0,<7.0.0)
22
22
  Requires-Dist: psycopg2-binary (>=2.9.11,<3.0.0)
@@ -60,7 +60,7 @@ def runtime_identity() -> str:
60
60
  packages = {}
61
61
  for name in ("programgarden", "programgarden-core", "programgarden-community", "programgarden-finance",
62
62
  "pydantic", "pydantic-core", "numpy", "pandas", "scipy", "tzdata", "pytz", "croniter", "aiosqlite",
63
- "pyportfolioopt", "quantstats", "scikit-learn", "statsmodels"):
63
+ "pyportfolioopt", "quantstats", "scikit-learn", "statsmodels", "exchange-calendars"):
64
64
  try:
65
65
  packages[name] = importlib.metadata.version(name)
66
66
  except importlib.metadata.PackageNotFoundError:
@@ -372,7 +372,11 @@ def _time_rules(node_type: str, role: str) -> List[Dict[str, Any]]:
372
372
  "max_duration_hours": {"default": None, "gt": 0}, "pin": "range_not_const"},
373
373
  ]
374
374
  if node_type == "SessionGateNode":
375
- return [{"id": "evaluate_at_fixture_instant"}] # validation_replay.py:276-283
375
+ return [{"id": "evaluate_at_fixture_instant"},
376
+ {"id": "optional_exchange_calendar", "field": "exchange_calendar",
377
+ "supported": ["XNYS", "XNAS"], "mode": "intersect_configured_windows",
378
+ "holidays": True, "early_closes": True, "live_halts": False,
379
+ "failure": "allowed_false", "close_exclusive": True}] # validation_replay.py:276-283
376
380
  if node_type == "TradingHoursFilterNode":
377
381
  return [{"id": "wait_blocks_replay"}] # replay_triggers.py:62-71
378
382
  if node_type == "ThrottleNode":
@@ -5,7 +5,7 @@ authors = [
5
5
  homepage = "https://programgarden.com"
6
6
  requires-python = ">=3.12"
7
7
  name = "programgarden"
8
- version = "2.5.2"
8
+ version = "2.5.3"
9
9
  license = "AGPL-3.0-or-later"
10
10
  description = "ProgramGarden - 노드 기반 자동매매 DSL 실행 엔진"
11
11
  readme = "README.md"
@@ -36,7 +36,7 @@ litellm = ">=1.40.0"
36
36
  # 로 통째 실패한다(1.35.1 의 조용한 TypeError 보다 강한 모듈 로드 실패).
37
37
  # (1.26.0 이후로도 context.py 는 WorkflowPnLEvent(**event_data) 에 personal_metrics
38
38
  # 를 무조건 실으므로 그 하한 근거도 이 상한에 포함된다.)
39
- programgarden-core = "^2.5.2"
39
+ programgarden-core = "^2.5.3"
40
40
  programgarden-finance = "^2.0.1"
41
41
  programgarden-community = "^2.3.1"
42
42
 
File without changes