walrasquant-lib 0.4.25__tar.gz → 0.4.27__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 (105) hide show
  1. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/PKG-INFO +2 -2
  2. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/pyproject.toml +2 -2
  3. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/config.py +17 -0
  4. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/core/nautilius_core.py +7 -1
  5. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/engine.py +2 -0
  6. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/README.md +0 -0
  7. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/__init__.py +0 -0
  8. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/aggregation.py +0 -0
  9. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/backends/__init__.py +0 -0
  10. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/backends/db.py +0 -0
  11. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/backends/db_memory.py +0 -0
  12. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/backends/db_postgresql.py +0 -0
  13. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/backends/db_sqlite.py +0 -0
  14. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/__init__.py +0 -0
  15. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/api_client.py +0 -0
  16. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/connector.py +0 -0
  17. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/ems.py +0 -0
  18. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/exchange.py +0 -0
  19. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/oms.py +0 -0
  20. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/retry.py +0 -0
  21. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/sms.py +0 -0
  22. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/base/ws_client.py +0 -0
  23. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/constants.py +0 -0
  24. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/core/__init__.py +0 -0
  25. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/core/cache.py +0 -0
  26. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/core/clock.py +0 -0
  27. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/core/connection.py +0 -0
  28. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/core/entity.py +0 -0
  29. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/core/registry.py +0 -0
  30. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/error.py +0 -0
  31. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/__init__.py +0 -0
  32. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/base_factory.py +0 -0
  33. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/__init__.py +0 -0
  34. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/connector.py +0 -0
  35. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/constants.py +0 -0
  36. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/ems.py +0 -0
  37. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/error.py +0 -0
  38. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/exchange.py +0 -0
  39. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/factory.py +0 -0
  40. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/oms.py +0 -0
  41. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/rest_api.py +0 -0
  42. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/schema.py +0 -0
  43. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/binance/websockets.py +0 -0
  44. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/__init__.py +0 -0
  45. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/connector.py +0 -0
  46. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/constants.py +0 -0
  47. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/ems.py +0 -0
  48. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/error.py +0 -0
  49. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/exchange.py +0 -0
  50. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/factory.py +0 -0
  51. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/oms.py +0 -0
  52. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/rest_api.py +0 -0
  53. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/schema.py +0 -0
  54. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bitget/websockets.py +0 -0
  55. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/__init__.py +0 -0
  56. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/connector.py +0 -0
  57. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/constants.py +0 -0
  58. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/ems.py +0 -0
  59. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/error.py +0 -0
  60. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/exchange.py +0 -0
  61. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/factory.py +0 -0
  62. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/oms.py +0 -0
  63. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/rest_api.py +0 -0
  64. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/schema.py +0 -0
  65. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/bybit/websockets.py +0 -0
  66. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/__init__.py +0 -0
  67. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/connector.py +0 -0
  68. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/constants.py +0 -0
  69. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/ems.py +0 -0
  70. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/error.py +0 -0
  71. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/exchange.py +0 -0
  72. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/factory.py +0 -0
  73. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/oms.py +0 -0
  74. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/rest_api.py +0 -0
  75. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/schema.py +0 -0
  76. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/signing.py +0 -0
  77. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/hyperliquid/websockets.py +0 -0
  78. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/__init__.py +0 -0
  79. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/connector.py +0 -0
  80. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/constants.py +0 -0
  81. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/ems.py +0 -0
  82. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/error.py +0 -0
  83. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/exchange.py +0 -0
  84. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/factory.py +0 -0
  85. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/oms.py +0 -0
  86. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/rest_api.py +0 -0
  87. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/schema.py +0 -0
  88. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/okx/websockets.py +0 -0
  89. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/exchange/registry.py +0 -0
  90. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/execution/__init__.py +0 -0
  91. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/execution/algorithm.py +0 -0
  92. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/execution/algorithms/__init__.py +0 -0
  93. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/execution/algorithms/twap.py +0 -0
  94. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/execution/config.py +0 -0
  95. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/execution/constants.py +0 -0
  96. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/execution/schema.py +0 -0
  97. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/indicator.py +0 -0
  98. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/push.py +0 -0
  99. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/schema.py +0 -0
  100. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/strategy.py +0 -0
  101. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/tools/__init__.py +0 -0
  102. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/tools/pm2_wrapper.py +0 -0
  103. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/web/__init__.py +0 -0
  104. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/web/app.py +0 -0
  105. {walrasquant_lib-0.4.25 → walrasquant_lib-0.4.27}/src/walrasquant/web/server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: walrasquant-lib
3
- Version: 0.4.25
3
+ Version: 0.4.27
4
4
  Summary: fastest python trading bot
5
5
  Author: River-Shi
6
6
  Author-email: River-Shi <nachuan.shi.quant@gmail.com>
@@ -25,7 +25,7 @@ Requires-Dist: rich>=14.0.0
25
25
  Requires-Dist: picows>=2.1.1
26
26
  Requires-Dist: nexuscore-lib>=0.2.1
27
27
  Requires-Dist: flashduty-lib>=0.2.0
28
- Requires-Dist: nexuslog-lib>=0.7.0
28
+ Requires-Dist: nexuslog-lib>=0.9.0
29
29
  Requires-Dist: msgspec>=0.21.1
30
30
  Requires-Dist: pandas<3.0.0
31
31
  Requires-Dist: numpy>=2.2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "walrasquant-lib"
3
- version = "0.4.25"
3
+ version = "0.4.27"
4
4
  description = "fastest python trading bot"
5
5
  authors = [
6
6
  {name = "River-Shi",email = "nachuan.shi.quant@gmail.com"}
@@ -29,7 +29,7 @@ dependencies = [
29
29
  "picows>=2.1.1",
30
30
  "nexuscore-lib>=0.2.1",
31
31
  "flashduty-lib>=0.2.0",
32
- "nexuslog-lib>=0.7.0",
32
+ "nexuslog-lib>=0.9.0",
33
33
  "msgspec>=0.21.1",
34
34
  "pandas<3.0.0",
35
35
  "numpy>=2.2.0",
@@ -18,6 +18,11 @@ class LogConfig:
18
18
  logs/{strategy_id}_{user_id}.log. If None, logs to stdout.
19
19
  level: Minimum log level to record. Options: TRACE, DEBUG, INFO, WARNING, ERROR
20
20
  unix_ts: If True, emit unix timestamps instead of formatted local time.
21
+ color: ANSI colorization of log output. "auto" colors only when writing
22
+ to a color-capable terminal, "off" disables it, "always" forces it
23
+ even for files and pipes.
24
+ format: Output line format. "logfmt" (default) or "json" (NDJSON,
25
+ recommended for shipping logs to Vector/Fluentd -> a DB).
21
26
  """
22
27
 
23
28
  filename: Literal["auto"] | str | None = None
@@ -25,6 +30,8 @@ class LogConfig:
25
30
  name_levels: dict[str | None, LOG_LEVELS] | None = None
26
31
  unix_ts: bool = False
27
32
  batch_size: int = 1
33
+ color: Literal["auto", "off", "always"] = "auto"
34
+ format: Literal["logfmt", "json"] = "logfmt"
28
35
 
29
36
  def __post_init__(self):
30
37
  if self.level not in ["TRACE", "DEBUG", "INFO", "WARNING", "ERROR"]:
@@ -39,6 +46,16 @@ class LogConfig:
39
46
  f"Invalid level: {level} for logger name: {name}. Must be one of TRACE, DEBUG, INFO, WARNING, ERROR."
40
47
  )
41
48
 
49
+ if self.color not in ["auto", "off", "always"]:
50
+ raise ValueError(
51
+ f"Invalid color: {self.color}. Must be one of auto, off, always."
52
+ )
53
+
54
+ if self.format not in ["logfmt", "json"]:
55
+ raise ValueError(
56
+ f"Invalid format: {self.format}. Must be one of logfmt, json."
57
+ )
58
+
42
59
 
43
60
  @dataclass
44
61
  class BasicConfig:
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from importlib import import_module
4
- from typing import Any, Mapping
4
+ from typing import Any, Literal, Mapping
5
5
 
6
6
  import nexuslog as logging
7
7
  from walrasquant.constants import settings
@@ -54,6 +54,8 @@ def setup_nexus_core(
54
54
  name_levels: Mapping[str | None, str] | None = None,
55
55
  unix_ts: bool = False,
56
56
  batch_size: int | None = None,
57
+ color: Literal["auto", "off", "always"] = "auto",
58
+ format: Literal["logfmt", "json"] = "logfmt",
57
59
  ) -> tuple[Any, Any]:
58
60
  """
59
61
  Setup logging for the application using nexuslog and initialize MessageBus and Clock.
@@ -63,6 +65,8 @@ def setup_nexus_core(
63
65
  filename: Optional file path for log output. If None, logs to stdout.
64
66
  level: Minimum log level to record (TRACE, DEBUG, INFO, WARNING, ERROR)
65
67
  unix_ts: If True, emit unix timestamps instead of formatted local time.
68
+ color: ANSI colorization mode ("auto", "off", "always").
69
+ format: Output line format ("logfmt" or "json").
66
70
 
67
71
  Returns:
68
72
  tuple: (msgbus, clock) - MessageBus and LiveClock instances
@@ -98,6 +102,8 @@ def setup_nexus_core(
98
102
  name_levels=_name_levels,
99
103
  unix_ts=unix_ts,
100
104
  batch_size=batch_size,
105
+ color=color,
106
+ format=format,
101
107
  )
102
108
 
103
109
  return msgbus, clock
@@ -74,6 +74,8 @@ class Engine:
74
74
  name_levels=self._config.log_config.name_levels,
75
75
  unix_ts=self._config.log_config.unix_ts,
76
76
  batch_size=self._config.log_config.batch_size,
77
+ color=self._config.log_config.color,
78
+ format=self._config.log_config.format,
77
79
  )
78
80
 
79
81
  # Create logger instance for Engine