bbstrader 2.0.6__tar.gz → 2.0.7__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 (95) hide show
  1. {bbstrader-2.0.6 → bbstrader-2.0.7}/PKG-INFO +1 -1
  2. bbstrader-2.0.7/VERSION.txt +1 -0
  3. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/account.py +12 -3
  4. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/copier.py +2 -3
  5. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/trade.py +9 -17
  6. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/metatrader/test_account.py +11 -0
  7. {bbstrader-2.0.6 → bbstrader-2.0.7}/uv.lock +92 -137
  8. bbstrader-2.0.6/VERSION.txt +0 -1
  9. {bbstrader-2.0.6 → bbstrader-2.0.7}/.clang-format +0 -0
  10. {bbstrader-2.0.6 → bbstrader-2.0.7}/.clang-tidy +0 -0
  11. {bbstrader-2.0.6 → bbstrader-2.0.7}/.github/workflows/build.yml +0 -0
  12. {bbstrader-2.0.6 → bbstrader-2.0.7}/.github/workflows/python.yml +0 -0
  13. {bbstrader-2.0.6 → bbstrader-2.0.7}/.gitignore +0 -0
  14. {bbstrader-2.0.6 → bbstrader-2.0.7}/.readthedocs.yaml +0 -0
  15. {bbstrader-2.0.6 → bbstrader-2.0.7}/CMakeLists.txt +0 -0
  16. {bbstrader-2.0.6 → bbstrader-2.0.7}/LICENSE +0 -0
  17. {bbstrader-2.0.6 → bbstrader-2.0.7}/README.md +0 -0
  18. {bbstrader-2.0.6 → bbstrader-2.0.7}/cmake/Helpers.cmake +0 -0
  19. {bbstrader-2.0.6 → bbstrader-2.0.7}/cmake/Versions.cmake +0 -0
  20. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/Doxyfile.in +0 -0
  21. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/Makefile +0 -0
  22. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/bbstrader.api.rst +0 -0
  23. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/bbstrader.btengine.rst +0 -0
  24. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/bbstrader.core.rst +0 -0
  25. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/bbstrader.metatrader.rst +0 -0
  26. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/bbstrader.models.rst +0 -0
  27. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/bbstrader.rst +0 -0
  28. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/bbstrader.trading.rst +0 -0
  29. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/conf.py +0 -0
  30. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/index.rst +0 -0
  31. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/make.bat +0 -0
  32. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/modules.rst +0 -0
  33. {bbstrader-2.0.6 → bbstrader-2.0.7}/docs/requirements.txt +0 -0
  34. {bbstrader-2.0.6 → bbstrader-2.0.7}/examples/strategies.py +0 -0
  35. {bbstrader-2.0.6 → bbstrader-2.0.7}/include/bbstrader/metatrader.hpp +0 -0
  36. {bbstrader-2.0.6 → bbstrader-2.0.7}/include/bbstrader/objects.hpp +0 -0
  37. {bbstrader-2.0.6 → bbstrader-2.0.7}/pyproject.toml +0 -0
  38. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/CMakeLists.txt +0 -0
  39. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/__init__.py +0 -0
  40. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/__main__.py +0 -0
  41. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/api/__init__.py +0 -0
  42. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/api/client.pyi +0 -0
  43. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/api/handlers.py +0 -0
  44. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/assets/bbs_.png +0 -0
  45. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/assets/bbstrader.ico +0 -0
  46. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/assets/bbstrader.png +0 -0
  47. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/assets/qs_metrics_1.png +0 -0
  48. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/__init__.py +0 -0
  49. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/backtest.py +0 -0
  50. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/data.py +0 -0
  51. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/event.py +0 -0
  52. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/execution.py +0 -0
  53. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/performance.py +0 -0
  54. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/portfolio.py +0 -0
  55. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/btengine/strategy.py +0 -0
  56. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/compat.py +0 -0
  57. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/config.py +0 -0
  58. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/core/__init__.py +0 -0
  59. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/core/data.py +0 -0
  60. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/core/strategy.py +0 -0
  61. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/__init__.py +0 -0
  62. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/_copier.py +0 -0
  63. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/broker.py +0 -0
  64. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/rates.py +0 -0
  65. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/risk.py +0 -0
  66. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/metatrader/utils.py +0 -0
  67. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/models/__init__.py +0 -0
  68. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/models/nlp.py +0 -0
  69. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/models/optimization.py +0 -0
  70. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/scripts.py +0 -0
  71. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/trading/__init__.py +0 -0
  72. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/trading/execution.py +0 -0
  73. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/trading/strategy.py +0 -0
  74. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/bbstrader/trading/utils.py +0 -0
  75. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/cmake/BbstraderConfig.cmake.in +0 -0
  76. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/cpp/bbstrader.cpp +0 -0
  77. {bbstrader-2.0.6 → bbstrader-2.0.7}/src/cpp/metatrader.cpp +0 -0
  78. {bbstrader-2.0.6 → bbstrader-2.0.7}/tcopier.iss +0 -0
  79. {bbstrader-2.0.6 → bbstrader-2.0.7}/tcopier.spec +0 -0
  80. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/CMakeLists.txt +0 -0
  81. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/__init__.py +0 -0
  82. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/api/__init__.py +0 -0
  83. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/api/test_metatrader_client.py +0 -0
  84. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/btengine/__init__.py +0 -0
  85. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/btengine/test_backtest.py +0 -0
  86. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/btengine/test_data.py +0 -0
  87. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/btengine/test_events.py +0 -0
  88. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/btengine/test_execution.py +0 -0
  89. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/btengine/test_portfolio.py +0 -0
  90. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/cpp/test_metatrader_client.cpp +0 -0
  91. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/metatrader/__init__.py +0 -0
  92. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/metatrader/test_rates.py +0 -0
  93. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/metatrader/test_risk_management.py +0 -0
  94. {bbstrader-2.0.6 → bbstrader-2.0.7}/tests/metatrader/test_trade.py +0 -0
  95. {bbstrader-2.0.6 → bbstrader-2.0.7}/vcpkg.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bbstrader
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Simplified Investment & Trading Toolkit with Python & C++
5
5
  Keywords: Finance,Toolkit,Financial,Analysis,Fundamental,Quantitative,Database,Equities,Currencies,Economics,ETFs,Funds,Indices,Moneymarkets,Commodities,Futures,CFDs,Derivatives,Trading,Investing,Portfolio,Optimization,Performance
6
6
  Author-Email: Bertin Balouki SIMYELI <bertin@bbs-trading.com>
@@ -0,0 +1 @@
1
+ 2.0.7
@@ -621,7 +621,11 @@ class Account(object):
621
621
  drop_cols: List[str],
622
622
  time_cols: List[str],
623
623
  ) -> Any:
624
- date_to = date_to or datetime.now()
624
+ from zoneinfo import ZoneInfo
625
+
626
+ tz = self.broker.get_terminal_timezone()
627
+ date_to = date_to or datetime.now(tz=ZoneInfo(tz))
628
+ date_from = date_from.astimezone(tz=ZoneInfo(tz))
625
629
 
626
630
  filters = [group, ticket, position]
627
631
  if sum(f is not None for f in filters) > 1:
@@ -734,7 +738,6 @@ class Account(object):
734
738
  >>> account = Account()
735
739
  >>> history = account.get_trades_history(from_date, to_date)
736
740
  """
737
-
738
741
  return self._fetch_history(
739
742
  fetch_type="deals",
740
743
  drop_cols=["time_msc", "external_id"],
@@ -853,7 +856,13 @@ class Account(object):
853
856
  Returns:
854
857
  List[TradeDeal]: List of today deals
855
858
  """
856
- history = self.get_trades_history(group=group, to_df=False) or []
859
+
860
+ from datetime import timedelta
861
+
862
+ from_date = datetime.now() - timedelta(days=3)
863
+ history = (
864
+ self.get_trades_history(date_from=from_date, group=group, to_df=False) or []
865
+ )
857
866
  positions_ids = set([deal.position_id for deal in history if deal.magic == id])
858
867
  today_deals = []
859
868
  for position in positions_ids:
@@ -416,7 +416,6 @@ class TradeCopier(object):
416
416
  def log_message(
417
417
  self, message, type: Literal["info", "error", "debug", "warning"] = "info"
418
418
  ):
419
- logger.trace
420
419
  if self.log_queue:
421
420
  try:
422
421
  now = datetime.now()
@@ -904,7 +903,7 @@ class TradeCopier(object):
904
903
 
905
904
  if not orders_actions:
906
905
  return
907
- with cf.ThreadPoolExecutor(max_workers=max_workers) as executor:
906
+ with cf.ProcessPoolExecutor(max_workers=max_workers) as executor:
908
907
  list(executor.map(self._execute_order_action, orders_actions))
909
908
 
910
909
  def _get_new_positions(
@@ -1031,7 +1030,7 @@ class TradeCopier(object):
1031
1030
 
1032
1031
  if not positions_actions:
1033
1032
  return
1034
- with cf.ThreadPoolExecutor(max_workers=max_workers) as executor:
1033
+ with cf.ProcessPoolExecutor(max_workers=max_workers) as executor:
1035
1034
  list(executor.map(self._execute_position_action, positions_actions))
1036
1035
 
1037
1036
  def copy_orders(self, destination: dict):
@@ -626,7 +626,7 @@ class Trade:
626
626
  except Exception as e:
627
627
  msg = trade_retcode_message(result.retcode) if result else "N/A"
628
628
  LOGGER.error(f"Trade Order Request, {msg}{addtionnal}, {e}")
629
- return
629
+ return False
630
630
  if result and result.retcode != Mt5.TRADE_RETCODE_DONE:
631
631
  if result.retcode == Mt5.TRADE_RETCODE_INVALID_FILL: # 10030
632
632
  for fill in FILLING_TYPE:
@@ -658,7 +658,7 @@ class Trade:
658
658
  except Exception as e:
659
659
  msg = trade_retcode_message(result.retcode) if result else "N/A"
660
660
  LOGGER.error(f"Trade Order Request, {msg}{addtionnal}, {e}")
661
- return
661
+ return False
662
662
  if result and result.retcode == Mt5.TRADE_RETCODE_DONE:
663
663
  break
664
664
  tries += 1
@@ -1078,7 +1078,7 @@ class Trade:
1078
1078
  except Exception as e:
1079
1079
  msg = trade_retcode_message(result.retcode) if result else "N/A"
1080
1080
  LOGGER.error(f"Break-Even Order Request, {msg}{addtionnal}, Error: {e}")
1081
- return
1081
+ return False
1082
1082
  if result and result.retcode != Mt5.TRADE_RETCODE_DONE:
1083
1083
  msg = trade_retcode_message(result.retcode)
1084
1084
  if result.retcode != Mt5.TRADE_RETCODE_NO_CHANGES:
@@ -1098,7 +1098,7 @@ class Trade:
1098
1098
  LOGGER.error(
1099
1099
  f"Break-Even Order Request, {msg}{addtionnal}, Error: {e}"
1100
1100
  )
1101
- return
1101
+ return False
1102
1102
  if result and result.retcode == Mt5.TRADE_RETCODE_DONE:
1103
1103
  break
1104
1104
  tries += 1
@@ -1183,7 +1183,7 @@ class Trade:
1183
1183
  LOGGER.error(
1184
1184
  f"Closing {type.capitalize()} Request, RETCODE={msg}{addtionnal}, Error: {e}"
1185
1185
  )
1186
- return
1186
+ return False
1187
1187
 
1188
1188
  if result and result.retcode != Mt5.TRADE_RETCODE_DONE:
1189
1189
  if result.retcode == Mt5.TRADE_RETCODE_INVALID_FILL: # 10030
@@ -1210,7 +1210,7 @@ class Trade:
1210
1210
  LOGGER.error(
1211
1211
  f"Closing {type.capitalize()} Request, {msg}{addtionnal}, Error: {e}"
1212
1212
  )
1213
- return
1213
+ return False
1214
1214
  if result and result.retcode == Mt5.TRADE_RETCODE_DONE:
1215
1215
  break
1216
1216
  tries += 1
@@ -1269,7 +1269,7 @@ class Trade:
1269
1269
  LOGGER.error(
1270
1270
  f"Unable to modify Order #{ticket}, RETCODE={msg}, Error: {e}"
1271
1271
  )
1272
- return
1272
+ return False
1273
1273
  if result and result.retcode == Mt5.TRADE_RETCODE_DONE:
1274
1274
  LOGGER.info(
1275
1275
  f"Order #{ticket} modified, SYMBOL={self.symbol}, PRICE={round(request['price'], 5)},"
@@ -1374,9 +1374,6 @@ class Trade:
1374
1374
  order_type = "open"
1375
1375
 
1376
1376
  if not tickets:
1377
- LOGGER.info(
1378
- f"No {order_type.upper()} {tikets_type.upper()} to close, SYMBOL={self.symbol}."
1379
- )
1380
1377
  return
1381
1378
  failed_tickets = []
1382
1379
  with ThreadPoolExecutor(max_workers=min(len(tickets), 20)) as executor:
@@ -1481,15 +1478,10 @@ class Trade:
1481
1478
 
1482
1479
  :return: bool
1483
1480
  """
1484
- negative_deals = 0
1485
1481
  max_trades = self.rm.max_trade()
1486
1482
  today_deals = self.get_today_deals(group=self.symbol)
1487
- for deal in today_deals:
1488
- if deal.profit < 0:
1489
- negative_deals += 1
1490
- if negative_deals >= max_trades:
1491
- return True
1492
- return False
1483
+ negative_deals = [deal for deal in today_deals if deal.profit < 0]
1484
+ return len(negative_deals) >= max_trades
1493
1485
 
1494
1486
  def get_stats(self) -> Tuple[Dict[str, Any], Dict[str, Any]]:
1495
1487
  """Retrieves aggregated session and historical trading performance."""
@@ -14,6 +14,7 @@ def mock_mt5_client():
14
14
  "bbstrader.metatrader.account.check_mt5_connection"
15
15
  ) as mock_check_connection,
16
16
  patch("bbstrader.metatrader.account.client") as mock_client,
17
+ patch("bbstrader.metatrader.broker.client") as mock_broker_client,
17
18
  ):
18
19
  mock_check_connection.return_value = True
19
20
  mock_account_info = MagicMock()
@@ -30,6 +31,16 @@ def mock_mt5_client():
30
31
  mock_terminal_info.company = "Test Broker"
31
32
  mock_client.terminal_info.return_value = mock_terminal_info
32
33
 
34
+ mock_symbol = MagicMock()
35
+ mock_symbol.name = "EURUSD"
36
+ mock_client.symbols_get.return_value = [mock_symbol]
37
+ mock_broker_client.symbols_get.return_value = [mock_symbol]
38
+
39
+ mock_tick = MagicMock()
40
+ mock_tick.time = 0
41
+ mock_client.symbol_info_tick.return_value = mock_tick
42
+ mock_broker_client.symbol_info_tick.return_value = mock_tick
43
+
33
44
  yield mock_client
34
45
 
35
46
 
@@ -47,7 +47,6 @@ source = { editable = "." }
47
47
  dependencies = [
48
48
  { name = "beautifulsoup4" },
49
49
  { name = "colorama" },
50
- { name = "en-core-web-sm" },
51
50
  { name = "eodhd" },
52
51
  { name = "exchange-calendars" },
53
52
  { name = "financetoolkit" },
@@ -82,6 +81,7 @@ mt5 = [
82
81
  requires-dist = [
83
82
  { name = "beautifulsoup4", specifier = ">=4.13.5" },
84
83
  { name = "colorama", specifier = ">=0.4.6" },
84
+ { name = "eodhd", specifier = ">=1.0.32" },
85
85
  { name = "exchange-calendars", specifier = ">=4.11.1" },
86
86
  { name = "financetoolkit", specifier = ">=2.0.4" },
87
87
  { name = "ipython", specifier = ">=9.5.0" },
@@ -121,15 +121,6 @@ wheels = [
121
121
  { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" },
122
122
  ]
123
123
 
124
- [[package]]
125
- name = "blinker"
126
- version = "1.9.0"
127
- source = { registry = "https://pypi.org/simple" }
128
- sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460, upload-time = "2024-11-08T17:25:47.436Z" }
129
- wheels = [
130
- { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" },
131
- ]
132
-
133
124
  [[package]]
134
125
  name = "blis"
135
126
  version = "1.3.3"
@@ -464,27 +455,37 @@ wheels = [
464
455
 
465
456
  [[package]]
466
457
  name = "cvxpy"
467
- version = "1.7.5"
458
+ version = "1.8.0"
468
459
  source = { registry = "https://pypi.org/simple" }
469
460
  dependencies = [
470
461
  { name = "clarabel" },
462
+ { name = "highspy" },
471
463
  { name = "numpy" },
472
464
  { name = "osqp" },
473
465
  { name = "scipy" },
474
466
  { name = "scs" },
475
467
  ]
476
- sdist = { url = "https://files.pythonhosted.org/packages/9a/7f/2a13e0e7ee76c03bc11aae397572e82d8a8bd23c1c3ac020766f0e15da8e/cvxpy-1.7.5.tar.gz", hash = "sha256:4b512218001c27659e16fc914a2490038635874681032c3c3485ff1099b83f5d", size = 1651490, upload-time = "2025-12-05T03:48:49.127Z" }
477
- wheels = [
478
- { url = "https://files.pythonhosted.org/packages/53/f3/d96f535bd3820b3c1d4aeeb664921c4b1414bcdada8be6e9d7ee5a3d5714/cvxpy-1.7.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6c397b86ef2109b99ec10d4fb144a826af840e1111167d307c52c96719ac5f57", size = 1556519, upload-time = "2025-12-05T03:42:14.895Z" },
479
- { url = "https://files.pythonhosted.org/packages/33/e5/142e5b659fdba2e243d2ffb5da93b2cc5f1ce52a58568625f32443aa2994/cvxpy-1.7.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:20bacc1781b5b168e0272688d8652cef7433a4d07dea2482e790e1bdcee4f46e", size = 1212257, upload-time = "2025-12-05T03:42:16.896Z" },
480
- { url = "https://files.pythonhosted.org/packages/6c/bc/f54aec4ce417d3aa71ed48ee822cd319d4abd2bff45f4ecd432991c3f23f/cvxpy-1.7.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:573396b116cff9c46952c885d9c06db1fc7a6e4838feb2fcba2982d521140205", size = 1222707, upload-time = "2025-12-05T03:48:46.624Z" },
481
- { url = "https://files.pythonhosted.org/packages/af/58/aae05f3749c85a8910367982546891f6ac29abddcf4943bb599a858b3030/cvxpy-1.7.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5926ca62e6998f160ecf4c4acc139eb0fe8c28453c904e1c3d7b93b5b40e4303", size = 1251680, upload-time = "2025-12-05T03:48:47.798Z" },
482
- { url = "https://files.pythonhosted.org/packages/5d/77/05f1bb03743610771cf4d784bda2855d63470ec21f315521bc0c944c67f5/cvxpy-1.7.5-cp312-cp312-win_amd64.whl", hash = "sha256:e8308b88b515567d7a5a5762c8e7c971692e1022a924613d808648916c20834b", size = 1150457, upload-time = "2025-12-05T03:39:32.385Z" },
483
- { url = "https://files.pythonhosted.org/packages/c7/9f/453078656e22a9ba0d488f5dffcb95e1329892704b1bd797d95e2c1dd704/cvxpy-1.7.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:56718a649e7d7c593becb1d088d7c1c0f073df821e20baead80e3662a083a34f", size = 1556564, upload-time = "2025-12-05T03:40:59.595Z" },
484
- { url = "https://files.pythonhosted.org/packages/aa/43/2bd6bb0105a6edccc8b1a582cbf3b6990afa6be857003b237790de115f51/cvxpy-1.7.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ca12e393acd83973ec56b5ac9194db403a4f99af451d4ea041f27b3e432acd8d", size = 1212246, upload-time = "2025-12-05T03:41:00.939Z" },
485
- { url = "https://files.pythonhosted.org/packages/f7/50/46fbd0684bf3ef9cc8009f823300c87330199e8f25599d32358e8dc4ec29/cvxpy-1.7.5-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ae3d4b7498a1419689566fa6e20d9c5479c384ca950ee7403c51e70425059aa5", size = 1222733, upload-time = "2025-12-05T03:46:54.32Z" },
486
- { url = "https://files.pythonhosted.org/packages/13/78/7264516614c24151fcb01e14abdd8f03dc0ec0c2bbb37e6785b2eb570c78/cvxpy-1.7.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13ed867017ebe3c6bf2e34aa108208237eb9d655b9897687af8c98ed282f7004", size = 1251759, upload-time = "2025-12-05T03:46:56.01Z" },
487
- { url = "https://files.pythonhosted.org/packages/8d/9f/fcea068692b8c47a5cedf286b6429fb7f90e76c8f0671ef60ed7b9641e5d/cvxpy-1.7.5-cp313-cp313-win_amd64.whl", hash = "sha256:d71688a5725ee61666cc9cf456f048d0016ae96c206c1030af06f3ad803b5d22", size = 1150471, upload-time = "2025-12-05T03:38:00.131Z" },
468
+ sdist = { url = "https://files.pythonhosted.org/packages/85/cb/45e643e72eef40feecfef4a43c8affdd1804c841dd527e12268810665129/cvxpy-1.8.0.tar.gz", hash = "sha256:6c9f94af5a649e02a418bae565f1566cf731b43221713a558e9991fc0e011bd6", size = 1749642, upload-time = "2026-01-27T21:20:02.363Z" }
469
+ wheels = [
470
+ { url = "https://files.pythonhosted.org/packages/86/3f/56a2b0fab089a1b36d23ef4fd09d3532b0c2beac63d25eaae102cda58462/cvxpy-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:82e0b8ba765eafd39fe3f9429a95107cb900612d89e2e202186efa5bb3f18fba", size = 1679010, upload-time = "2026-01-27T21:11:49.237Z" },
471
+ { url = "https://files.pythonhosted.org/packages/0f/e5/076f7119c2e294dc5536e9bba791d72f55deb7b97f853d0d298d12403192/cvxpy-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b62f8cb12ee67eea4fe298d3aff8f104cbdd123884d673cc2e18681bd1cf9185", size = 1334745, upload-time = "2026-01-27T21:11:50.588Z" },
472
+ { url = "https://files.pythonhosted.org/packages/81/e0/fa36523cc39e16e4b10e937d52d5db1b2b46b79cc0d2f374c79fafbbf45c/cvxpy-1.8.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a95e2426147410564accc4a180085ac2c3e3c8b6721ba0ffca72598938676db5", size = 1345196, upload-time = "2026-01-27T21:19:58.768Z" },
473
+ { url = "https://files.pythonhosted.org/packages/02/3c/5bdbfa75c88747f7de0e72d3c0d934511895167d11809e65c1eedbeb1f27/cvxpy-1.8.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0571f451ccb98943d89977b25be4205735f90cb2d536c5eadc3f166107ec474f", size = 1374166, upload-time = "2026-01-27T21:20:00.292Z" },
474
+ { url = "https://files.pythonhosted.org/packages/e6/fc/c3afd7299bf46b8239639735a924c35b3c34842f291f5f20af2c4ac547ea/cvxpy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:25dd0f7c64abde257fa20af3b90b1923f77a38aa86f8a5a5f1497fea0bc357fb", size = 1273945, upload-time = "2026-01-27T21:11:27.584Z" },
475
+ { url = "https://files.pythonhosted.org/packages/9d/a1/581708fd7fb603e6092d8f89f1bf49d22f99864ab38f9546b34374b0d818/cvxpy-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dab28489c23c822009ef73f2f63b9f573bdfa5299610210ff9397595ed07df9", size = 1679052, upload-time = "2026-01-27T21:09:57.766Z" },
476
+ { url = "https://files.pythonhosted.org/packages/51/f0/90c40eec1b697ea69bd759c887b0be41727169682c9432b84743517503a5/cvxpy-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:139557fadae6116b884c17798e7013b4444f14839a9f4a3e3ea4ca39f38dbc9a", size = 1334732, upload-time = "2026-01-27T21:09:59.856Z" },
477
+ { url = "https://files.pythonhosted.org/packages/a8/89/ac8cff3b3499995ea23306e6618a3e6eb40ff6396b2b2412e67a3feca92b/cvxpy-1.8.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a089688a98d23ebfecaa66a09952e6b5a749a43451acb40e6a9c3017564ac351", size = 1345218, upload-time = "2026-01-27T21:19:52.024Z" },
478
+ { url = "https://files.pythonhosted.org/packages/a5/07/92e9793a26c7ee5207a6b12e07bc71fcfa336d59dded1d8fb386c65cd5de/cvxpy-1.8.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64a9aaa4822060ff8e7650d0b7fea733d74852709bcfcaef958cf16e749a30f3", size = 1374248, upload-time = "2026-01-27T21:19:53.398Z" },
479
+ { url = "https://files.pythonhosted.org/packages/70/29/dfd90ee5e78dcfe2eaeb306e62fd370092b4875db4eaed580731f16341f5/cvxpy-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:8cc16d8fe6c88edab115691089836805a52917e6a6a0e552c8c48d28bf390338", size = 1274033, upload-time = "2026-01-27T21:10:48.529Z" },
480
+ { url = "https://files.pythonhosted.org/packages/bf/20/95cd37fe827b048a70f2364f87d2b6b8579c2dd7cf83465df67f030dfd7b/cvxpy-1.8.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c294b8e376f2269dbcaa6c2c044f94a6519215192feb930a12058d052bdb6f96", size = 1677830, upload-time = "2026-01-27T21:13:07.565Z" },
481
+ { url = "https://files.pythonhosted.org/packages/bd/14/7fa9ddc1f8dad0d9a5ecae7f841c0de360c0dd2f3227c45e77d4948e7860/cvxpy-1.8.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:23bd32816a987b67d3c0be1be47c5817f2b0a2cc9308561263061b05ed36f8fb", size = 1334516, upload-time = "2026-01-27T21:13:09.859Z" },
482
+ { url = "https://files.pythonhosted.org/packages/5d/71/9ef05775f6e62bf5957162c77e29a502f80787fef2d99c37cd51ae8e258f/cvxpy-1.8.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6beadb526139af431c213bca6063a08127bf2424deffddcc99716dc857451af6", size = 1346271, upload-time = "2026-01-27T21:20:34.925Z" },
483
+ { url = "https://files.pythonhosted.org/packages/c8/d5/c64060765a326cc04d198d8a97eeb07a3a27455cb4b08027427fc241848d/cvxpy-1.8.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47ba857e2e10db1bd07c7128c95be17f04f34c9c35e755acf03a7bea5e98063d", size = 1374763, upload-time = "2026-01-27T21:20:36.704Z" },
484
+ { url = "https://files.pythonhosted.org/packages/6c/2c/44de661d1fc4c0c9970e86c92571443619c8c27e6cfa4729fb8db151475e/cvxpy-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:6f0553a12e2fa1634974620b630f2da1da192e076982927b759dc0a589a5af13", size = 1283689, upload-time = "2026-01-27T21:11:42.234Z" },
485
+ { url = "https://files.pythonhosted.org/packages/57/ed/c02a72932794ec0d05419ddd892de0a29d08da7677510ae8ebfae3f6ecd8/cvxpy-1.8.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1841224d1d7fcf3467ee2d4d94334cf86285be866ec156efc0e19c40c6ef62ac", size = 1705581, upload-time = "2026-01-27T21:13:07.461Z" },
486
+ { url = "https://files.pythonhosted.org/packages/8a/99/2d4654425667c12a2bf0ce9e24d36a830fd205e93b54e6fea075cd64684e/cvxpy-1.8.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a4b2206e4460ebb3accfcde7a1a4038fbf8ec7db04902df8a626388019a17574", size = 1347319, upload-time = "2026-01-27T21:13:08.757Z" },
487
+ { url = "https://files.pythonhosted.org/packages/86/ba/7cf933f726b057b35b5c6c41048e2e45079dcd9346addb9e0f688b8d8530/cvxpy-1.8.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdbb67d2557363eb85f8c2554c9cbd3779966da72583d831edb75899d1081fa", size = 1346171, upload-time = "2026-01-27T21:19:31.888Z" },
488
+ { url = "https://files.pythonhosted.org/packages/a8/4a/3d8b73493872841e8d95b5a024ba97a632831a57e46852c4e6f2b6146dcc/cvxpy-1.8.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1aecf632c289e9496a66111d83e3aaa833ef91548a43ddb8ff8bb1f02d108630", size = 1371504, upload-time = "2026-01-27T21:19:33.52Z" },
488
489
  ]
489
490
 
490
491
  [[package]]
@@ -574,7 +575,6 @@ wheels = [
574
575
  { url = "https://files.pythonhosted.org/packages/56/9a/ca30572f3e3ff3cef6a0ea8aa6cdc12c36f9fefe559f65c7d6265713196a/ecos-2.0.14-cp312-cp312-win_amd64.whl", hash = "sha256:718eb62afb8e45426bcc365ebaf3ca9f610afcbb754de6073ef5f104da8fca1f", size = 72248, upload-time = "2024-06-18T03:48:51.504Z" },
575
576
  ]
576
577
 
577
-
578
578
  [[package]]
579
579
  name = "eodhd"
580
580
  version = "1.0.32"
@@ -645,23 +645,6 @@ wheels = [
645
645
  { url = "https://files.pythonhosted.org/packages/f3/bd/f860d7f5b9a3cae8bf737c7dcbb79c81c4db29355fc230efe59f915d2cf3/financetoolkit-2.0.6-py3-none-any.whl", hash = "sha256:66ce0acbc4ee0fce3bd64d0a61e0ff1dee17f640722526456c0738f66d26f7d4", size = 409745, upload-time = "2025-10-04T13:49:31.838Z" },
646
646
  ]
647
647
 
648
- [[package]]
649
- name = "flask"
650
- version = "3.1.2"
651
- source = { registry = "https://pypi.org/simple" }
652
- dependencies = [
653
- { name = "blinker" },
654
- { name = "click" },
655
- { name = "itsdangerous" },
656
- { name = "jinja2" },
657
- { name = "markupsafe" },
658
- { name = "werkzeug" },
659
- ]
660
- sdist = { url = "https://files.pythonhosted.org/packages/dc/6d/cfe3c0fcc5e477df242b98bfe186a4c34357b4847e87ecaef04507332dab/flask-3.1.2.tar.gz", hash = "sha256:bf656c15c80190ed628ad08cdfd3aaa35beb087855e2f494910aa3774cc4fd87", size = 720160, upload-time = "2025-08-19T21:03:21.205Z" }
661
- wheels = [
662
- { url = "https://files.pythonhosted.org/packages/ec/f9/7f9263c5695f4bd0023734af91bedb2ff8209e8de6ead162f35d8dc762fd/flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c", size = 103308, upload-time = "2025-08-19T21:03:19.499Z" },
663
- ]
664
-
665
648
  [[package]]
666
649
  name = "fonttools"
667
650
  version = "4.61.1"
@@ -721,6 +704,37 @@ wheels = [
721
704
  { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" },
722
705
  ]
723
706
 
707
+ [[package]]
708
+ name = "highspy"
709
+ version = "1.12.0"
710
+ source = { registry = "https://pypi.org/simple" }
711
+ dependencies = [
712
+ { name = "numpy" },
713
+ ]
714
+ sdist = { url = "https://files.pythonhosted.org/packages/32/cc/dc47527beec1f44274186713a59fca13e6e1c71088ed6d18980dc8b90ee9/highspy-1.12.0.tar.gz", hash = "sha256:91a2da2c090597e34cd2cb57a751816ca6857c8cca8b09ae4d33960fb89ad42c", size = 1399992, upload-time = "2025-10-25T18:09:46.242Z" }
715
+ wheels = [
716
+ { url = "https://files.pythonhosted.org/packages/6c/69/eacc8742d1a4ac68109a8ce3c808e81cab1c499926815e23dd39106595a3/highspy-1.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8c8b098a57b4035d5bdbffa2a80a96232c99e4d085aa822e283e98c50a1438b8", size = 2212070, upload-time = "2025-10-25T18:08:46.974Z" },
717
+ { url = "https://files.pythonhosted.org/packages/d7/50/25e2adb149b56354aaa31165b44304c85763f66a560e8a1492e09ce6a9a5/highspy-1.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3db2958b934d46c0e112e8f9fdba96bb1fb84cfc6f70ddd4492ea62da890fe56", size = 2029063, upload-time = "2025-10-25T18:08:48.597Z" },
718
+ { url = "https://files.pythonhosted.org/packages/36/0f/9d5b3f27a4bc8ebf4c2a18cd1ef39db77fabd8b007629143416c4d6cd4fd/highspy-1.12.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ecc5bdee740118e18ce928feaf9e309eb4a4a076f27a6780b8b363f1446801b5", size = 2562998, upload-time = "2025-10-25T18:08:49.968Z" },
719
+ { url = "https://files.pythonhosted.org/packages/3d/b8/901d9702873f6e103a3b9d1a6e8e403b486d4e672e4e925d6bc1a92f8114/highspy-1.12.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f6045d1d49627e1dc2f649cda4190c57c823f0cf71bec9d466363f00abbc65a7", size = 2296309, upload-time = "2025-10-25T18:08:51.651Z" },
720
+ { url = "https://files.pythonhosted.org/packages/26/c7/34fbaacecdc363d847ef9f73ff169447db9728a100ca41c4ad1a4d3fb21a/highspy-1.12.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3a72ecea18c0b2cd041e87599d2e0bf6f96cea7133aba838f0128608089e92f", size = 2500486, upload-time = "2025-10-25T18:08:52.981Z" },
721
+ { url = "https://files.pythonhosted.org/packages/ef/69/46910999e0fa30f85b15b3a3d5a7a16ed5af8763323e351f0ddd7fbcfed3/highspy-1.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1df858cfc71fafef789fe87793e331a17768065f9e9505df1ff10239e4fa6a8d", size = 3355868, upload-time = "2025-10-25T18:08:54.308Z" },
722
+ { url = "https://files.pythonhosted.org/packages/e0/d3/9c1c13e09cd2dd1aed77a897272d974dab36be25bcc27a0af1f704153781/highspy-1.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:455b8688d93124b714e93f0787fb17040fcb5b1b90c59684bd44f66b3b947dbc", size = 3918497, upload-time = "2025-10-25T18:08:56.096Z" },
723
+ { url = "https://files.pythonhosted.org/packages/50/f9/6dd6f8694c8f631057199bdbcadbc2078023029021feb9f0dbdbb9b0aed5/highspy-1.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:948db9f948c79a52f5faafeb71cd8990a84b462245bb2c493d3e16938f038782", size = 3581509, upload-time = "2025-10-25T18:08:57.862Z" },
724
+ { url = "https://files.pythonhosted.org/packages/d2/87/24074f2bdb92b194d2c625a1071241a9bf23f475db850331b4256bda047f/highspy-1.12.0-cp312-cp312-win32.whl", hash = "sha256:869bdcedd7c309647efef2d4968dc05609815b537f8ccd8144ec2b81c0801a8b", size = 1843171, upload-time = "2025-10-25T18:08:59.195Z" },
725
+ { url = "https://files.pythonhosted.org/packages/6c/48/ae627c5b16e2ae0f56537b25e6176e1e7db8ea26ea85fab047518979be2f/highspy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:90c3f9d575a93f0e08490f101b72b8597c7d1ad801d429f31b6ae962a1492a56", size = 2183875, upload-time = "2025-10-25T18:09:00.525Z" },
726
+ { url = "https://files.pythonhosted.org/packages/c7/80/81269c182ee4dc36e3add646088d027cc87a6cabe640901848b1dc9b1355/highspy-1.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:79a346e811e330fb757a96e3a234b71b5d58ace44e1eba9611b13c2b6efaf0e9", size = 2212158, upload-time = "2025-10-25T18:09:01.834Z" },
727
+ { url = "https://files.pythonhosted.org/packages/00/bd/ac5d300201f1ad8581c5b468ed1608ecd47e1e9d88a74cdaebf0cf74ae65/highspy-1.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:57512dc19e18e2daa572acc0ea9561a5c4050d592d21f6db3f8367dd38e50362", size = 2029098, upload-time = "2025-10-25T18:09:03.132Z" },
728
+ { url = "https://files.pythonhosted.org/packages/be/cc/3ed5a545ce807fb9c4a1e28e83ee474c560bc1a83335c791127a113f634b/highspy-1.12.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:a856e6e33d6d20d177fdc1a6eb34b3b58385a6c757a05695c4b214a5c377e044", size = 2562864, upload-time = "2025-10-25T18:09:04.478Z" },
729
+ { url = "https://files.pythonhosted.org/packages/3c/d9/f2f409200654a64759e8970533315364ebae1dc1c90e3aa71127804abf5a/highspy-1.12.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:550ddee715934937da6cfe58f7adceca86b0847e5f8ebd7429cc275218179b95", size = 2296446, upload-time = "2025-10-25T18:09:05.869Z" },
730
+ { url = "https://files.pythonhosted.org/packages/6d/cd/e9441001cb3e523ac620982af75d7900b702f97f08656797cec2a8db6222/highspy-1.12.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a5c58dbd6170073f4ba1bd31e0c7b276404d1456080cb190ed51b4c817629d6", size = 2500363, upload-time = "2025-10-25T18:09:07.214Z" },
731
+ { url = "https://files.pythonhosted.org/packages/25/58/92b5849a2150db172a1b17ddf165b5aeda8871eabb59efd9f2c1df025b33/highspy-1.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a112865dbaace2c9b7e2234bd4415dd6f2b31cb53b53d007d3e53fc3ebfdd387", size = 3356311, upload-time = "2025-10-25T18:09:08.509Z" },
732
+ { url = "https://files.pythonhosted.org/packages/9d/c8/04b6bcbb0c9cc09efd6370ba3e6afc7aaf3b6a2f61f415ace8d223328506/highspy-1.12.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:32f970c5d35fb6f92ef40a21b27faa9f348783a1de119facd0ee8dbfa52ef478", size = 3917867, upload-time = "2025-10-25T18:09:09.848Z" },
733
+ { url = "https://files.pythonhosted.org/packages/51/c5/2c1b386a219eea79af16ee29435d940baccf159ca26647715d330868aba0/highspy-1.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aa040786e1a321e2703834dd5bedf23d6998d6b42984c4b14e157036da655fd0", size = 3581079, upload-time = "2025-10-25T18:09:11.329Z" },
734
+ { url = "https://files.pythonhosted.org/packages/b6/47/3d27048c6a640326f314e2b5c8b3d80ef8459633413a08a90336b56b1e2f/highspy-1.12.0-cp313-cp313-win32.whl", hash = "sha256:adb1735c625e164d1cc114a74f0628cea944b5f4a346ba0726386edbaa838479", size = 1843105, upload-time = "2025-10-25T18:09:12.774Z" },
735
+ { url = "https://files.pythonhosted.org/packages/f0/20/3b36ca44864baced84355aa37c1b66e95d46009a74887fead515ccff88b1/highspy-1.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:dd826ca82035d125ad3f59ed62878ca2676db1c66870e2b55e025adfa9f9e785", size = 2183790, upload-time = "2025-10-25T18:09:14.559Z" },
736
+ ]
737
+
724
738
  [[package]]
725
739
  name = "httpcore"
726
740
  version = "1.0.9"
@@ -758,18 +772,6 @@ wheels = [
758
772
  { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
759
773
  ]
760
774
 
761
- [[package]]
762
- name = "importlib-metadata"
763
- version = "8.7.1"
764
- source = { registry = "https://pypi.org/simple" }
765
- dependencies = [
766
- { name = "zipp" },
767
- ]
768
- sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" }
769
- wheels = [
770
- { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" },
771
- ]
772
-
773
775
  [[package]]
774
776
  name = "ipython"
775
777
  version = "9.9.0"
@@ -803,15 +805,6 @@ wheels = [
803
805
  { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" },
804
806
  ]
805
807
 
806
- [[package]]
807
- name = "itsdangerous"
808
- version = "2.2.0"
809
- source = { registry = "https://pypi.org/simple" }
810
- sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" }
811
- wheels = [
812
- { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" },
813
- ]
814
-
815
808
  [[package]]
816
809
  name = "jedi"
817
810
  version = "0.19.2"
@@ -1245,15 +1238,6 @@ wheels = [
1245
1238
  { url = "https://files.pythonhosted.org/packages/76/66/4fce8755f25d77324401886c00017c556be7ca3039575b94037aff905385/murmurhash-1.0.15-cp314-cp314t-win_arm64.whl", hash = "sha256:c22e56c6a0b70598a66e456de5272f76088bc623688da84ef403148a6d41851d", size = 26219, upload-time = "2025-11-14T09:51:03.563Z" },
1246
1239
  ]
1247
1240
 
1248
- [[package]]
1249
- name = "nest-asyncio"
1250
- version = "1.6.0"
1251
- source = { registry = "https://pypi.org/simple" }
1252
- sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" }
1253
- wheels = [
1254
- { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" },
1255
- ]
1256
-
1257
1241
  [[package]]
1258
1242
  name = "nltk"
1259
1243
  version = "3.9.2"
@@ -1366,7 +1350,7 @@ wheels = [
1366
1350
 
1367
1351
  [[package]]
1368
1352
  name = "osqp"
1369
- version = "1.0.5"
1353
+ version = "1.1.0"
1370
1354
  source = { registry = "https://pypi.org/simple" }
1371
1355
  dependencies = [
1372
1356
  { name = "jinja2" },
@@ -1375,18 +1359,18 @@ dependencies = [
1375
1359
  { name = "scipy" },
1376
1360
  { name = "setuptools" },
1377
1361
  ]
1378
- sdist = { url = "https://files.pythonhosted.org/packages/85/cf/023078d9985526494901e9ca91c59d17b2d2e5f87a047f4b8b9749ce5922/osqp-1.0.5.tar.gz", hash = "sha256:60b484cf829c99d94bb7ae4e9beb2e0895d94c5e64e074b5b27b6ef887941936", size = 56757, upload-time = "2025-10-15T14:05:33.613Z" }
1362
+ sdist = { url = "https://files.pythonhosted.org/packages/d8/c5/04f5e38b45d08dd22a68bc7e7fff8607f8e23010162f63185f535e34480c/osqp-1.1.0.tar.gz", hash = "sha256:4f81c819346ce8da6eeb105648c110cb00601d379aad8bd41a69296cb6d46464", size = 56972, upload-time = "2026-01-26T21:13:00.502Z" }
1379
1363
  wheels = [
1380
- { url = "https://files.pythonhosted.org/packages/81/f2/bfe770a2fe33b27aeef6f7422b82b87c91fc58f08aa229b0b158941dd171/osqp-1.0.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f655cc1602bef3c722ba124e0f3b5127905c7cd10208968b3caad1fec34b8b51", size = 328395, upload-time = "2025-10-15T14:05:10.864Z" },
1381
- { url = "https://files.pythonhosted.org/packages/5a/9e/9ed4829c206511f7a10e4974520c82facbbdef66a2145a070bfc1bb4eeb0/osqp-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f94fac0239136812a49de44ec24150134802f218313e37266be0629576e9d9d5", size = 302199, upload-time = "2025-10-15T14:05:12.145Z" },
1382
- { url = "https://files.pythonhosted.org/packages/96/38/612eab766eafced59a44a318d40aa9c0bee5eafb98cb68af5d90f04168f1/osqp-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8e0f2cc375ed485270dfa4636abac86a7499c2847e12603dafe40f7a55fdf61", size = 334937, upload-time = "2025-10-15T14:05:13.406Z" },
1383
- { url = "https://files.pythonhosted.org/packages/df/cb/0f46c598fe5623c7c4c361c6c863ad51c5c9f58f8dc2408e070f4a908d9e/osqp-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf39cc311089b5f4987b0469e8563ab378b9d1ea8f7f9d3aec93e0b6097cc51b", size = 357426, upload-time = "2025-10-15T14:05:14.614Z" },
1384
- { url = "https://files.pythonhosted.org/packages/3b/d4/12f5ae735814466c490cb3e74ad9f38e0404f16bacc89738579866636ab5/osqp-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:aafb6c65352ce7fd691927275a8ebd67974ceb4496925961d73a74e4f9a6e7fa", size = 310448, upload-time = "2025-10-15T14:05:15.546Z" },
1385
- { url = "https://files.pythonhosted.org/packages/d1/13/bd94ec700462989623891078cfe911a1331e83054575acc8b5f78dcd3e46/osqp-1.0.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:da8e109d679d1faf2ed1142cd0bacd70fab5c91a7109bd85a6b228d423124dcb", size = 328512, upload-time = "2025-10-15T14:05:16.482Z" },
1386
- { url = "https://files.pythonhosted.org/packages/ba/e5/b7402123c33ee690b39cfcf35ac4bc77c5f0e5506b33112073063cb1c02c/osqp-1.0.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b99d308b2a6be07fd02a3712f4885feff31114b3eff35e1e97bc0caba61032e7", size = 302175, upload-time = "2025-10-15T14:05:17.688Z" },
1387
- { url = "https://files.pythonhosted.org/packages/3c/3d/ad5aaa20780fbdc3bb240f1688a015d9cf07bd955b74f3443147cea82ecb/osqp-1.0.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3e8de72c880ccabaefcbc8418378426d4ea2e6dc6fd3acbd96de00a605f94ad", size = 335030, upload-time = "2025-10-15T14:05:18.92Z" },
1388
- { url = "https://files.pythonhosted.org/packages/c0/56/56b7039c43457cfa113842f8345bd346af03caf2af403e0a91d040abacdc/osqp-1.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1f8910df4c2e419078961cd4e7a4d6e14ed0269f66a0f2f774a895fc14ef8ff", size = 357417, upload-time = "2025-10-15T14:05:20.022Z" },
1389
- { url = "https://files.pythonhosted.org/packages/f2/df/46ca217567451b12acc7585be2ee43089846792ae0340ce93ab7e662b47a/osqp-1.0.5-cp313-cp313-win_amd64.whl", hash = "sha256:0a90b8fee99daa00760bd336dd074731289690700d9e7eae3900db233f8bfa02", size = 310518, upload-time = "2025-10-15T14:05:21.029Z" },
1364
+ { url = "https://files.pythonhosted.org/packages/43/86/a5c4ffd6d71e08a26bd1a076e740c7579e289bf6b54ae481b908e20f954b/osqp-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3674e1fbe8479fa9e275918be2d2672dfd0f4d0b257813cde139a10103d5fcf9", size = 321422, upload-time = "2026-01-26T21:12:35.523Z" },
1365
+ { url = "https://files.pythonhosted.org/packages/d1/47/2a5f7d26288b92ca6ae7eb777e61487732317f282054854e38c1cf1abcee/osqp-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b15bc820da970f4b5706e5ad3cbbb9a45c7864df3e613ed76966d81d7e5db1a9", size = 302196, upload-time = "2026-01-26T21:12:36.825Z" },
1366
+ { url = "https://files.pythonhosted.org/packages/66/f9/5ba3954a7ecfc7fd42e346a63621ccb04343467db668a4d5477f5c205c52/osqp-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2983851b91143bb12d2acf6061471d7dd6b885c0cfa440219a57a85b7d19c25", size = 335033, upload-time = "2026-01-26T21:12:38.693Z" },
1367
+ { url = "https://files.pythonhosted.org/packages/39/36/ca736c5404bc9948bffc0dc464647d24e0b2fd7c69126cd0d67c205894f4/osqp-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:142feeb1b66a309abdd2cd206d5b0effe97da8111c4387d72601453804efd994", size = 357634, upload-time = "2026-01-26T21:12:39.642Z" },
1368
+ { url = "https://files.pythonhosted.org/packages/a4/36/bee8cc33b517d1b93671828497270b0ef69338cba548271a6b5456f2080b/osqp-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:a38956e5cdf7bb2213a906c4dfe9b722c44c24d3741380b2c43c31e5e7b9e2b5", size = 310710, upload-time = "2026-01-26T21:12:40.897Z" },
1369
+ { url = "https://files.pythonhosted.org/packages/e0/2f/67a889c7bd8fb56008ea43ae14211e2b7d2863afbb283e3fc75e202ee989/osqp-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc3526c881e3f45e93039384c10e34f6cf2db7f15c203c41f1ee0745f111d107", size = 321417, upload-time = "2026-01-26T21:12:41.847Z" },
1370
+ { url = "https://files.pythonhosted.org/packages/f1/d6/aaf4c2650a9385f2df0ce94e44cf292b5d8d16e969dc0a543b6f18fe30f6/osqp-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:790dfa5ca4f5b85db3949c713f6b8583e074652c6cb35c18709764f27c27dffc", size = 302182, upload-time = "2026-01-26T21:12:42.773Z" },
1371
+ { url = "https://files.pythonhosted.org/packages/2e/01/17b1bd4cdeaa6c53b5c303b1cb999488b402bd0123bf81e24a4496c39a71/osqp-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f164f722ea0f76fca2804bbb28621f12dd1d60e72bb4fba057d886fddf2dc628", size = 334610, upload-time = "2026-01-26T21:12:44.986Z" },
1372
+ { url = "https://files.pythonhosted.org/packages/c0/f3/eaa1f35ffe08cf9fca0e85db6126199bf5ccc7bae13e2779bbdd01a274cf/osqp-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc7bb9c8b062a9d69702afd378413842c508e85e436742052f2a89b6b670b124", size = 357715, upload-time = "2026-01-26T21:12:46.116Z" },
1373
+ { url = "https://files.pythonhosted.org/packages/14/47/9a8fa96442ef020b50a4fa462657a74b3b129959d54dfe61ecb15cf2aff8/osqp-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:7803bf34683416e48835dabc8e8d7dd18325ccc24ca02072bec28eb14caeec98", size = 310799, upload-time = "2026-01-26T21:12:47.531Z" },
1390
1374
  ]
1391
1375
 
1392
1376
  [[package]]
@@ -1655,17 +1639,17 @@ wheels = [
1655
1639
 
1656
1640
  [[package]]
1657
1641
  name = "protobuf"
1658
- version = "6.33.4"
1642
+ version = "6.33.5"
1659
1643
  source = { registry = "https://pypi.org/simple" }
1660
- sdist = { url = "https://files.pythonhosted.org/packages/53/b8/cda15d9d46d03d4aa3a67cb6bffe05173440ccf86a9541afaf7ac59a1b6b/protobuf-6.33.4.tar.gz", hash = "sha256:dc2e61bca3b10470c1912d166fe0af67bfc20eb55971dcef8dfa48ce14f0ed91", size = 444346, upload-time = "2026-01-12T18:33:40.109Z" }
1644
+ sdist = { url = "https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size = 444465, upload-time = "2026-01-29T21:51:33.494Z" }
1661
1645
  wheels = [
1662
- { url = "https://files.pythonhosted.org/packages/e0/be/24ef9f3095bacdf95b458543334d0c4908ccdaee5130420bf064492c325f/protobuf-6.33.4-cp310-abi3-win32.whl", hash = "sha256:918966612c8232fc6c24c78e1cd89784307f5814ad7506c308ee3cf86662850d", size = 425612, upload-time = "2026-01-12T18:33:29.656Z" },
1663
- { url = "https://files.pythonhosted.org/packages/31/ad/e5693e1974a28869e7cd244302911955c1cebc0161eb32dfa2b25b6e96f0/protobuf-6.33.4-cp310-abi3-win_amd64.whl", hash = "sha256:8f11ffae31ec67fc2554c2ef891dcb561dae9a2a3ed941f9e134c2db06657dbc", size = 436962, upload-time = "2026-01-12T18:33:31.345Z" },
1664
- { url = "https://files.pythonhosted.org/packages/66/15/6ee23553b6bfd82670207ead921f4d8ef14c107e5e11443b04caeb5ab5ec/protobuf-6.33.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2fe67f6c014c84f655ee06f6f66213f9254b3a8b6bda6cda0ccd4232c73c06f0", size = 427612, upload-time = "2026-01-12T18:33:32.646Z" },
1665
- { url = "https://files.pythonhosted.org/packages/2b/48/d301907ce6d0db75f959ca74f44b475a9caa8fcba102d098d3c3dd0f2d3f/protobuf-6.33.4-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:757c978f82e74d75cba88eddec479df9b99a42b31193313b75e492c06a51764e", size = 324484, upload-time = "2026-01-12T18:33:33.789Z" },
1666
- { url = "https://files.pythonhosted.org/packages/92/1c/e53078d3f7fe710572ab2dcffd993e1e3b438ae71cfc031b71bae44fcb2d/protobuf-6.33.4-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:c7c64f259c618f0bef7bee042075e390debbf9682334be2b67408ec7c1c09ee6", size = 339256, upload-time = "2026-01-12T18:33:35.231Z" },
1667
- { url = "https://files.pythonhosted.org/packages/e8/8e/971c0edd084914f7ee7c23aa70ba89e8903918adca179319ee94403701d5/protobuf-6.33.4-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:3df850c2f8db9934de4cf8f9152f8dc2558f49f298f37f90c517e8e5c84c30e9", size = 323311, upload-time = "2026-01-12T18:33:36.305Z" },
1668
- { url = "https://files.pythonhosted.org/packages/75/b1/1dc83c2c661b4c62d56cc081706ee33a4fc2835bd90f965baa2663ef7676/protobuf-6.33.4-py3-none-any.whl", hash = "sha256:1fe3730068fcf2e595816a6c34fe66eeedd37d51d0400b72fabc848811fdc1bc", size = 170532, upload-time = "2026-01-12T18:33:39.199Z" },
1646
+ { url = "https://files.pythonhosted.org/packages/b1/79/af92d0a8369732b027e6d6084251dd8e782c685c72da161bd4a2e00fbabb/protobuf-6.33.5-cp310-abi3-win32.whl", hash = "sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b", size = 425769, upload-time = "2026-01-29T21:51:21.751Z" },
1647
+ { url = "https://files.pythonhosted.org/packages/55/75/bb9bc917d10e9ee13dee8607eb9ab963b7cf8be607c46e7862c748aa2af7/protobuf-6.33.5-cp310-abi3-win_amd64.whl", hash = "sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c", size = 437118, upload-time = "2026-01-29T21:51:24.022Z" },
1648
+ { url = "https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size = 427766, upload-time = "2026-01-29T21:51:25.413Z" },
1649
+ { url = "https://files.pythonhosted.org/packages/4e/b1/c79468184310de09d75095ed1314b839eb2f72df71097db9d1404a1b2717/protobuf-6.33.5-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190", size = 324638, upload-time = "2026-01-29T21:51:26.423Z" },
1650
+ { url = "https://files.pythonhosted.org/packages/c5/f5/65d838092fd01c44d16037953fd4c2cc851e783de9b8f02b27ec4ffd906f/protobuf-6.33.5-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd", size = 339411, upload-time = "2026-01-29T21:51:27.446Z" },
1651
+ { url = "https://files.pythonhosted.org/packages/9b/53/a9443aa3ca9ba8724fdfa02dd1887c1bcd8e89556b715cfbacca6b63dbec/protobuf-6.33.5-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0", size = 323465, upload-time = "2026-01-29T21:51:28.925Z" },
1652
+ { url = "https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl", hash = "sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size = 170687, upload-time = "2026-01-29T21:51:32.557Z" },
1669
1653
  ]
1670
1654
 
1671
1655
  [[package]]
@@ -1875,14 +1859,15 @@ wheels = [
1875
1859
 
1876
1860
  [[package]]
1877
1861
  name = "python-telegram-bot"
1878
- version = "22.5"
1862
+ version = "22.6"
1879
1863
  source = { registry = "https://pypi.org/simple" }
1880
1864
  dependencies = [
1865
+ { name = "httpcore", marker = "python_full_version >= '3.14'" },
1881
1866
  { name = "httpx" },
1882
1867
  ]
1883
- sdist = { url = "https://files.pythonhosted.org/packages/0b/6b/400f88e5c29a270c1c519a3ca8ad0babc650ec63dbfbd1b73babf625ed54/python_telegram_bot-22.5.tar.gz", hash = "sha256:82d4efd891d04132f308f0369f5b5929e0b96957901f58bcef43911c5f6f92f8", size = 1488269, upload-time = "2025-09-27T13:50:27.879Z" }
1868
+ sdist = { url = "https://files.pythonhosted.org/packages/cd/9b/8df90c85404166a6631e857027866263adb27440d8af1dbeffbdc4f0166c/python_telegram_bot-22.6.tar.gz", hash = "sha256:50ae8cc10f8dff01445628687951020721f37956966b92a91df4c1bf2d113742", size = 1503761, upload-time = "2026-01-24T13:57:00.269Z" }
1884
1869
  wheels = [
1885
- { url = "https://files.pythonhosted.org/packages/bc/c3/340c7520095a8c79455fcf699cbb207225e5b36490d2b9ee557c16a7b21b/python_telegram_bot-22.5-py3-none-any.whl", hash = "sha256:4b7cd365344a7dce54312cc4520d7fa898b44d1a0e5f8c74b5bd9b540d035d16", size = 730976, upload-time = "2025-09-27T13:50:25.93Z" },
1870
+ { url = "https://files.pythonhosted.org/packages/13/97/7298f0e1afe3a1ae52ff4c5af5087ed4de319ea73eb3b5c8c4dd4e76e708/python_telegram_bot-22.6-py3-none-any.whl", hash = "sha256:e598fe171c3dde2dfd0f001619ee9110eece66761a677b34719fb18934935ce0", size = 737267, upload-time = "2026-01-24T13:56:58.06Z" },
1886
1871
  ]
1887
1872
 
1888
1873
  [[package]]
@@ -2075,26 +2060,17 @@ wheels = [
2075
2060
  { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179, upload-time = "2024-03-22T20:32:28.055Z" },
2076
2061
  ]
2077
2062
 
2078
- [[package]]
2079
- name = "retrying"
2080
- version = "1.4.2"
2081
- source = { registry = "https://pypi.org/simple" }
2082
- sdist = { url = "https://files.pythonhosted.org/packages/c8/5a/b17e1e257d3e6f2e7758930e1256832c9ddd576f8631781e6a072914befa/retrying-1.4.2.tar.gz", hash = "sha256:d102e75d53d8d30b88562d45361d6c6c934da06fab31bd81c0420acb97a8ba39", size = 11411, upload-time = "2025-08-03T03:35:25.189Z" }
2083
- wheels = [
2084
- { url = "https://files.pythonhosted.org/packages/67/f3/6cd296376653270ac1b423bb30bd70942d9916b6978c6f40472d6ac038e7/retrying-1.4.2-py3-none-any.whl", hash = "sha256:bbc004aeb542a74f3569aeddf42a2516efefcdaff90df0eb38fbfbf19f179f59", size = 10859, upload-time = "2025-08-03T03:35:23.829Z" },
2085
- ]
2086
-
2087
2063
  [[package]]
2088
2064
  name = "rich"
2089
- version = "14.2.0"
2065
+ version = "14.3.1"
2090
2066
  source = { registry = "https://pypi.org/simple" }
2091
2067
  dependencies = [
2092
2068
  { name = "markdown-it-py" },
2093
2069
  { name = "pygments" },
2094
2070
  ]
2095
- sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" }
2071
+ sdist = { url = "https://files.pythonhosted.org/packages/a1/84/4831f881aa6ff3c976f6d6809b58cdfa350593ffc0dc3c58f5f6586780fb/rich-14.3.1.tar.gz", hash = "sha256:b8c5f568a3a749f9290ec6bddedf835cec33696bfc1e48bcfecb276c7386e4b8", size = 230125, upload-time = "2026-01-24T21:40:44.847Z" }
2096
2072
  wheels = [
2097
- { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" },
2073
+ { url = "https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl", hash = "sha256:da750b1aebbff0b372557426fb3f35ba56de8ef954b3190315eb64076d6fb54e", size = 309952, upload-time = "2026-01-24T21:40:42.969Z" },
2098
2074
  ]
2099
2075
 
2100
2076
  [[package]]
@@ -2250,11 +2226,11 @@ wheels = [
2250
2226
 
2251
2227
  [[package]]
2252
2228
  name = "setuptools"
2253
- version = "80.10.1"
2229
+ version = "80.10.2"
2254
2230
  source = { registry = "https://pypi.org/simple" }
2255
- sdist = { url = "https://files.pythonhosted.org/packages/86/ff/f75651350db3cf2ef767371307eb163f3cc1ac03e16fdf3ac347607f7edb/setuptools-80.10.1.tar.gz", hash = "sha256:bf2e513eb8144c3298a3bd28ab1a5edb739131ec5c22e045ff93cd7f5319703a", size = 1229650, upload-time = "2026-01-21T09:42:03.061Z" }
2231
+ sdist = { url = "https://files.pythonhosted.org/packages/76/95/faf61eb8363f26aa7e1d762267a8d602a1b26d4f3a1e758e92cb3cb8b054/setuptools-80.10.2.tar.gz", hash = "sha256:8b0e9d10c784bf7d262c4e5ec5d4ec94127ce206e8738f29a437945fbc219b70", size = 1200343, upload-time = "2026-01-25T22:38:17.252Z" }
2256
2232
  wheels = [
2257
- { url = "https://files.pythonhosted.org/packages/e0/76/f963c61683a39084aa575f98089253e1e852a4417cb8a3a8a422923a5246/setuptools-80.10.1-py3-none-any.whl", hash = "sha256:fc30c51cbcb8199a219c12cc9c281b5925a4978d212f84229c909636d9f6984e", size = 1099859, upload-time = "2026-01-21T09:42:00.688Z" },
2233
+ { url = "https://files.pythonhosted.org/packages/94/b8/f1f62a5e3c0ad2ff1d189590bfa4c46b4f3b6e49cef6f26c6ee4e575394d/setuptools-80.10.2-py3-none-any.whl", hash = "sha256:95b30ddfb717250edb492926c92b5221f7ef3fbcc2b07579bcd4a27da21d0173", size = 1064234, upload-time = "2026-01-25T22:38:15.216Z" },
2258
2234
  ]
2259
2235
 
2260
2236
  [[package]]
@@ -2645,11 +2621,11 @@ wheels = [
2645
2621
 
2646
2622
  [[package]]
2647
2623
  name = "wcwidth"
2648
- version = "0.3.2"
2624
+ version = "0.5.2"
2649
2625
  source = { registry = "https://pypi.org/simple" }
2650
- sdist = { url = "https://files.pythonhosted.org/packages/05/07/0b5bcc9812b1b2fd331cc88289ef4d47d428afdbbf0216bb7d53942d93d6/wcwidth-0.3.2.tar.gz", hash = "sha256:d469b3059dab6b1077def5923ed0a8bf5738bd4a1a87f686d5e2de455354c4ad", size = 233633, upload-time = "2026-01-23T21:08:52.451Z" }
2626
+ sdist = { url = "https://files.pythonhosted.org/packages/5f/3e/3d456efe55d2d5e7938b5f9abd68333dd8dceb14e829f51f9a8deed2217e/wcwidth-0.5.2.tar.gz", hash = "sha256:c022c39a02a0134d1e10810da36d1f984c79648181efcc70a389f4569695f5ae", size = 152817, upload-time = "2026-01-29T19:32:52.22Z" }
2651
2627
  wheels = [
2652
- { url = "https://files.pythonhosted.org/packages/72/c6/1452e716c5af065c018f75d42ca97517a04ac6aae4133722e0424649a07c/wcwidth-0.3.2-py3-none-any.whl", hash = "sha256:817abc6a89e47242a349b5d100cbd244301690d6d8d2ec6335f26fe6640a6315", size = 86280, upload-time = "2026-01-23T21:08:51.362Z" },
2628
+ { url = "https://files.pythonhosted.org/packages/6d/72/da5a6f511a8267f962a08637464a70409736ac72f9f75b069e0e96d69b64/wcwidth-0.5.2-py3-none-any.whl", hash = "sha256:46912178a64217749bf3426b21e36e849fbc46e05c949407b3e364d9f7ffcadf", size = 90088, upload-time = "2026-01-29T19:32:50.592Z" },
2653
2629
  ]
2654
2630
 
2655
2631
  [[package]]
@@ -2726,18 +2702,6 @@ wheels = [
2726
2702
  { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" },
2727
2703
  ]
2728
2704
 
2729
- [[package]]
2730
- name = "werkzeug"
2731
- version = "3.1.5"
2732
- source = { registry = "https://pypi.org/simple" }
2733
- dependencies = [
2734
- { name = "markupsafe" },
2735
- ]
2736
- sdist = { url = "https://files.pythonhosted.org/packages/5a/70/1469ef1d3542ae7c2c7b72bd5e3a4e6ee69d7978fa8a3af05a38eca5becf/werkzeug-3.1.5.tar.gz", hash = "sha256:6a548b0e88955dd07ccb25539d7d0cc97417ee9e179677d22c7041c8f078ce67", size = 864754, upload-time = "2026-01-08T17:49:23.247Z" }
2737
- wheels = [
2738
- { url = "https://files.pythonhosted.org/packages/ad/e4/8d97cca767bcc1be76d16fb76951608305561c6e056811587f36cb1316a8/werkzeug-3.1.5-py3-none-any.whl", hash = "sha256:5111e36e91086ece91f93268bb39b4a35c1e6f1feac762c9c822ded0a4e322dc", size = 225025, upload-time = "2026-01-08T17:49:21.859Z" },
2739
- ]
2740
-
2741
2705
  [[package]]
2742
2706
  name = "win32-setctime"
2743
2707
  version = "1.2.0"
@@ -2818,7 +2782,7 @@ wheels = [
2818
2782
 
2819
2783
  [[package]]
2820
2784
  name = "yfinance"
2821
- version = "1.0"
2785
+ version = "1.1.0"
2822
2786
  source = { registry = "https://pypi.org/simple" }
2823
2787
  dependencies = [
2824
2788
  { name = "beautifulsoup4" },
@@ -2834,16 +2798,7 @@ dependencies = [
2834
2798
  { name = "requests" },
2835
2799
  { name = "websockets" },
2836
2800
  ]
2837
- sdist = { url = "https://files.pythonhosted.org/packages/98/6e/f7d10a49bb5b9eb3b1e2ddc2d8a97c6d60ec9a71cc462f25374d3de1d434/yfinance-1.0.tar.gz", hash = "sha256:df1ab82f8839b573798f1434d64738dfd0cc2e01868d80b26836f2e6282f8992", size = 137093, upload-time = "2025-12-22T18:16:20.761Z" }
2838
- wheels = [
2839
- { url = "https://files.pythonhosted.org/packages/8d/c1/ac130a6a46b7c23624220c8fcae9de5f3be0c2c492452d31c45cbf50bc12/yfinance-1.0-py2.py3-none-any.whl", hash = "sha256:5a2b8ad7bbcb4bd01a97480aff07b8851e361307702b568141b613b30da5c72e", size = 127146, upload-time = "2025-12-22T18:16:19.658Z" },
2840
- ]
2841
-
2842
- [[package]]
2843
- name = "zipp"
2844
- version = "3.23.0"
2845
- source = { registry = "https://pypi.org/simple" }
2846
- sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" }
2801
+ sdist = { url = "https://files.pythonhosted.org/packages/01/04/f76bc0cb6767a3074698c8d416c7f2137e6d1ccc4f393ed82421393111b7/yfinance-1.1.0.tar.gz", hash = "sha256:1e852ce10a5d6679200efa2b09ed3f3b01dbe84505e2c1c139be7d2b3a597b10", size = 140171, upload-time = "2026-01-24T16:07:34.394Z" }
2847
2802
  wheels = [
2848
- { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" },
2803
+ { url = "https://files.pythonhosted.org/packages/f1/13/63c35603f07f549b0d044b6001956aeb941850e0ef75ef7c8eb8b0e410ab/yfinance-1.1.0-py2.py3-none-any.whl", hash = "sha256:e610fec1d2b052e3b8f2cf44bdcff014bcf15458a9b072d5a3e02507e20d69d2", size = 129928, upload-time = "2026-01-24T16:07:32.983Z" },
2849
2804
  ]
@@ -1 +0,0 @@
1
- 2.0.6
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes