programgarden-core 1.14.3__tar.gz → 1.14.4__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 (82) hide show
  1. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/PKG-INFO +1 -1
  2. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/expression/evaluator.py +8 -0
  3. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/validation.py +5 -0
  4. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/pyproject.toml +1 -1
  5. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/README.md +0 -0
  6. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/__init__.py +0 -0
  7. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/__init__.py +0 -0
  8. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/client.py +0 -0
  9. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/components.py +0 -0
  10. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/listener.py +0 -0
  11. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/mixins.py +0 -0
  12. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/products.py +0 -0
  13. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/sql.py +0 -0
  14. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/bases/storage.py +0 -0
  15. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/exceptions.py +0 -0
  16. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/expression/__init__.py +0 -0
  17. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/i18n/__init__.py +0 -0
  18. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/i18n/locales/en.json +0 -0
  19. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/i18n/locales/ko.json +0 -0
  20. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/i18n/translator.py +0 -0
  21. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/korea_alias.py +0 -0
  22. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/__init__.py +0 -0
  23. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/connection_rule.py +0 -0
  24. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/credential.py +0 -0
  25. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/edge.py +0 -0
  26. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/event.py +0 -0
  27. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/exchange.py +0 -0
  28. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/field_binding.py +0 -0
  29. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/job.py +0 -0
  30. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/plugin_resource.py +0 -0
  31. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/resilience.py +0 -0
  32. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/resource.py +0 -0
  33. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/models/workflow.py +0 -0
  34. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/__init__.py +0 -0
  35. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/account_futures.py +0 -0
  36. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/account_korea_stock.py +0 -0
  37. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/account_stock.py +0 -0
  38. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/ai.py +0 -0
  39. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/backtest.py +0 -0
  40. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/backtest_futures.py +0 -0
  41. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/backtest_korea_stock.py +0 -0
  42. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/backtest_stock.py +0 -0
  43. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/base.py +0 -0
  44. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/broker.py +0 -0
  45. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/calculation.py +0 -0
  46. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/condition.py +0 -0
  47. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/data.py +0 -0
  48. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/data_futures.py +0 -0
  49. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/data_korea_stock.py +0 -0
  50. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/data_stock.py +0 -0
  51. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/display.py +0 -0
  52. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/event.py +0 -0
  53. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/fundamental_korea_stock.py +0 -0
  54. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/fundamental_stock.py +0 -0
  55. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/infra.py +0 -0
  56. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/market_external.py +0 -0
  57. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/market_status.py +0 -0
  58. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/open_orders_futures.py +0 -0
  59. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/open_orders_korea_stock.py +0 -0
  60. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/open_orders_stock.py +0 -0
  61. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/order.py +0 -0
  62. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/portfolio.py +0 -0
  63. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/realtime_futures.py +0 -0
  64. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/realtime_korea_stock.py +0 -0
  65. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/realtime_stock.py +0 -0
  66. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/risk.py +0 -0
  67. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/symbol.py +0 -0
  68. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/symbol_futures.py +0 -0
  69. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/symbol_korea_stock.py +0 -0
  70. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/symbol_stock.py +0 -0
  71. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/nodes/trigger.py +0 -0
  72. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/presets/__init__.py +0 -0
  73. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/presets/news_analyst.json +0 -0
  74. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/presets/risk_manager.json +0 -0
  75. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/presets/strategist.json +0 -0
  76. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/presets/technical_analyst.json +0 -0
  77. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/registry/__init__.py +0 -0
  78. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/registry/credential_registry.py +0 -0
  79. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/registry/dynamic_node_registry.py +0 -0
  80. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/registry/node_registry.py +0 -0
  81. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/programgarden_core/registry/plugin_registry.py +0 -0
  82. {programgarden_core-1.14.3 → programgarden_core-1.14.4}/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.14.3
3
+ Version: 1.14.4
4
4
  Summary: ProgramGarden Core - 노드 기반 DSL 핵심 타입 정의
5
5
  Author: 프로그램동산
6
6
  Author-email: coding@programgarden.com
@@ -787,6 +787,14 @@ class SafeEvaluator:
787
787
  "True": True,
788
788
  "False": False,
789
789
  "None": None,
790
+ # JSON-style literal aliases. Workflow definitions are authored as JSON
791
+ # (and frequently AI-generated), where the null/boolean literals are
792
+ # `null`/`true`/`false`, not Python's `None`/`True`/`False`. Accepting
793
+ # both spellings avoids an "undefined variable: null" failure on an
794
+ # otherwise valid `{{ x != null }}` expression.
795
+ "null": None,
796
+ "true": True,
797
+ "false": False,
790
798
  }
791
799
 
792
800
  def __init__(self, context: Dict[str, Any]):
@@ -64,6 +64,11 @@ class ErrorCode(str, Enum):
64
64
  DRY_RUN_CREDENTIAL_MISSING = "DRY_RUN_CREDENTIAL_MISSING"
65
65
  DRY_RUN_DEPENDENCY_FAILURE = "DRY_RUN_DEPENDENCY_FAILURE"
66
66
 
67
+ # Deep validation (virtual full-execution / deep_validate)
68
+ DEEP_VALIDATION_NODE_ERROR = "DEEP_VALIDATION_NODE_ERROR"
69
+ DEEP_VALIDATION_FLOW_BROKEN = "DEEP_VALIDATION_FLOW_BROKEN"
70
+ DEEP_VALIDATION_BINDING_UNRESOLVED = "DEEP_VALIDATION_BINDING_UNRESOLVED"
71
+
67
72
 
68
73
  _DEFAULT_SEVERITY: Dict[ErrorCode, ErrorSeverity] = {
69
74
  ErrorCode.UNKNOWN_PLUGIN: ErrorSeverity.WARNING,
@@ -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.14.3"
8
+ version = "1.14.4"
9
9
  description = "ProgramGarden Core - 노드 기반 DSL 핵심 타입 정의"
10
10
  readme = "README.md"
11
11