crypticorn 2.8.0rc7__py3-none-any.whl → 2.8.0rc8__py3-none-any.whl

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.
crypticorn/__init__.py CHANGED
@@ -8,7 +8,7 @@ You can find the full Changelog [below](#changelog).
8
8
 
9
9
  from crypticorn.common.logging import configure_logging
10
10
 
11
- configure_logging("crypticorn")
11
+ configure_logging()
12
12
 
13
13
  from crypticorn.client import ApiClient
14
14
 
@@ -6,7 +6,7 @@ from fastapi.exceptions import RequestValidationError, ResponseValidationError
6
6
  from fastapi.responses import JSONResponse
7
7
  from crypticorn.common import ApiError, ApiErrorIdentifier, ApiErrorType, ApiErrorLevel
8
8
  import logging
9
-
9
+ import json
10
10
  logger = logging.getLogger(__name__)
11
11
 
12
12
 
@@ -99,7 +99,7 @@ async def general_handler(request: Request, exc: Exception) -> JSONResponse:
99
99
  status_code=body.enrich().status_code,
100
100
  content=HTTPException(content=body).detail,
101
101
  )
102
- logger.error(f"Response validation error: {res}")
102
+ logger.error(f"Response validation error: {json.loads(res.__dict__.get('body'))}")
103
103
  return res
104
104
 
105
105
 
@@ -112,7 +112,7 @@ async def request_validation_handler(
112
112
  status_code=body.enrich().status_code,
113
113
  content=HTTPException(content=body).detail,
114
114
  )
115
- logger.error(f"Response validation error: {res}")
115
+ logger.error(f"Response validation error: {json.loads(res.__dict__.get('body'))}")
116
116
  return res
117
117
 
118
118
 
@@ -125,7 +125,7 @@ async def response_validation_handler(
125
125
  status_code=body.enrich().status_code,
126
126
  content=HTTPException(content=body).detail,
127
127
  )
128
- logger.error(f"Response validation error: {res}")
128
+ logger.error(f"Response validation error: {json.loads(res.__dict__.get('body'))}")
129
129
  return res
130
130
 
131
131
 
@@ -12,8 +12,7 @@ from crypticorn.common.mixins import ValidateEnumMixin
12
12
  from crypticorn.common.ansi_colors import AnsiColors as C
13
13
  from datetime import datetime
14
14
  import os
15
-
16
-
15
+
17
16
  class LogLevel(ValidateEnumMixin, StrEnum):
18
17
  DEBUG = "DEBUG"
19
18
  INFO = "INFO"
@@ -71,7 +70,7 @@ class CustomFormatter(logging.Formatter):
71
70
 
72
71
 
73
72
  def configure_logging(
74
- name: str,
73
+ name: str = None,
75
74
  fmt: str = _LOGFORMAT,
76
75
  datefmt: str = _DATEFMT,
77
76
  stdout_level: int = logging.INFO,
@@ -82,8 +81,15 @@ def configure_logging(
82
81
  """Configures the logging for the application.
83
82
  Run this function as early as possible in the application (for example using the `lifespan` parameter in FastAPI).
84
83
  Then use can use the default `logging.getLogger(__name__)` method to get the logger.
84
+ :param name: The name of the logger. If not provided, the root logger will be used. Use a name if use multiple loggers in the same application.
85
+ :param fmt: The format of the log message.
86
+ :param datefmt: The date format of the log message.
87
+ :param stdout_level: The level of the log message to be printed to the console.
88
+ :param file_level: The level of the log message to be written to the file. Only used if `log_file` is provided.
89
+ :param log_file: The file to write the log messages to.
90
+ :param filters: A list of filters to apply to the log handlers.
85
91
  """
86
- logger = logging.getLogger(name)
92
+ logger = logging.getLogger(name) if name else logging.getLogger()
87
93
 
88
94
  if logger.handlers: # clear existing handlers to avoid duplicates
89
95
  logger.handlers.clear()
@@ -109,6 +115,9 @@ def configure_logging(
109
115
  for filter in filters:
110
116
  file_handler.addFilter(filter)
111
117
  logger.addHandler(file_handler)
118
+
119
+ if name:
120
+ logger.propagate = False
112
121
 
113
122
 
114
123
  def disable_logging():
@@ -11,7 +11,7 @@ def add_cors_middleware(app: "FastAPI"):
11
11
  "http://localhost:5173", # vite dev server
12
12
  "http://localhost:4173", # vite preview server
13
13
  ],
14
- allow_origin_regex="^https:\/\/([a-zA-Z0-9-]+\.)*crypticorn\.(dev|com)\/?$", # matches (multiple or no) subdomains of crypticorn.dev and crypticorn.com
14
+ allow_origin_regex="^https://([a-zA-Z0-9-]+.)*crypticorn.(dev|com)/?$", # matches (multiple or no) subdomains of crypticorn.dev and crypticorn.com
15
15
  allow_credentials=True,
16
16
  allow_methods=["*"],
17
17
  allow_headers=["*"],
@@ -23,6 +23,5 @@ async def default_lifespan(app: FastAPI):
23
23
  This is used to configure the logging for the application.
24
24
  To override this, pass a different lifespan to the FastAPI constructor or call this lifespan within a custom lifespan.
25
25
  """
26
- configure_logging(__name__) # for the consuming app
27
- logger = logging.getLogger(__name__)
26
+ configure_logging()
28
27
  yield
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crypticorn
3
- Version: 2.8.0rc7
3
+ Version: 2.8.0rc8
4
4
  Summary: Maximise Your Crypto Trading Profits with Machine Learning
5
5
  Author-email: Crypticorn <timon@crypticorn.com>
6
6
  License: MIT
@@ -1,4 +1,4 @@
1
- crypticorn/__init__.py,sha256=qQ2C8ZhrVX5b157tfdqyWeZMZBvZDl6pSOLxSvTqNAo,315
1
+ crypticorn/__init__.py,sha256=IWYO6MWcpNmgkH05xEywxcIjcegWuSo5cpNIDTRcpC8,303
2
2
  crypticorn/client.py,sha256=XcJhgMoNSFQZJU3AoYuvxRMh-HPBPBlugKMpGSHxbIE,4700
3
3
  crypticorn/auth/__init__.py,sha256=JAl1tBLK9pYLr_-YKaj581c-c94PWLoqnatTIVAVvMM,81
4
4
  crypticorn/auth/main.py,sha256=j8eRGN2gUWyeOCnWnUPe3mCAfaidGnOMnZRiSQy-yzM,720
@@ -69,9 +69,9 @@ crypticorn/common/auth.py,sha256=GIb9MikQsSxqz-K5rDIOroP5mFoTgQqwByTGO5JqcdM,871
69
69
  crypticorn/common/decorators.py,sha256=pmnGYCIrLv59wZkDbvPyK9NJmgPJWW74LXTdIWSjOkY,1063
70
70
  crypticorn/common/enums.py,sha256=RitDVqlG_HTe6tHT6bWusZNFCeYk1eQvJVH-7x3_Zlg,668
71
71
  crypticorn/common/errors.py,sha256=8jxZ2lLn_NoFKKq6n2JwKPsR0dA2vkGnbXDfEK6ndH0,27851
72
- crypticorn/common/exceptions.py,sha256=BuRLQIg2_pwsaQAhPKP3lY9q2GNp0SlRdXlvp1O2USo,6088
73
- crypticorn/common/logging.py,sha256=DYP9mNElewhXQxkBtjvAM05tKIbqeDiE9YRH92whMLc,3666
74
- crypticorn/common/middleware.py,sha256=PnzYHvB653JfQmwbpoDiHTAjMhH599cQebU0UOyGI2k,1041
72
+ crypticorn/common/exceptions.py,sha256=Kw3AtqaLaAvSs1fLCn7uNMhV6QZdsCpS2CjtIsoiXSA,6198
73
+ crypticorn/common/logging.py,sha256=MTB94rsKxnfQVMECHW16A1MmnnzrHaEQ6oWHmQqHUFA,4339
74
+ crypticorn/common/middleware.py,sha256=YF0_tTjQekZkb6ip3xsqy04JCI4S8011CiSL3helU2E,962
75
75
  crypticorn/common/mixins.py,sha256=o-VONtAS_nHH-OPCFXox6kdX_Xdn1g37uTtkLqij-6U,1722
76
76
  crypticorn/common/pagination.py,sha256=c07jrMNrBaNTmgx4sppdP7ND4RNT7NBqBXWvofazIlE,2251
77
77
  crypticorn/common/scopes.py,sha256=ofJ5FDf30wab572XvDzAXVKBIUWa3shScAmzNrJsWqQ,2453
@@ -236,8 +236,8 @@ crypticorn/trade/client/models/strategy_model_input.py,sha256=ala19jARyfA5ysys5D
236
236
  crypticorn/trade/client/models/strategy_model_output.py,sha256=2o2lhbgUSTznowpMLEHF1Ex9TG9oRmzlCIb-gXqo7_s,5643
237
237
  crypticorn/trade/client/models/tpsl.py,sha256=C2KgTIZs-a8W4msdaXgBKJcwtA-o5wR4rBauRP-iQxU,4317
238
238
  crypticorn/trade/client/models/trading_action_type.py,sha256=pGq_TFLMPfYFizYP-xKgEC1ZF4U3lGdJYoGa_ZH2x-Q,769
239
- crypticorn-2.8.0rc7.dist-info/METADATA,sha256=wWxFZyIaGMh4KfuE9tUK_YfAKW158U4j_SIbHK2D6Yk,8098
240
- crypticorn-2.8.0rc7.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
241
- crypticorn-2.8.0rc7.dist-info/entry_points.txt,sha256=d_xHsGvUTebPveVUK0SrpDFQ5ZRSjlI7lNCc11sn2PM,59
242
- crypticorn-2.8.0rc7.dist-info/top_level.txt,sha256=EP3NY216qIBYfmvGl0L2Zc9ItP0DjGSkiYqd9xJwGcM,11
243
- crypticorn-2.8.0rc7.dist-info/RECORD,,
239
+ crypticorn-2.8.0rc8.dist-info/METADATA,sha256=xyT_tWQ05a1RdYJIUHk1rs2GffyzAN9PMGoqKHbE5ak,8098
240
+ crypticorn-2.8.0rc8.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
241
+ crypticorn-2.8.0rc8.dist-info/entry_points.txt,sha256=d_xHsGvUTebPveVUK0SrpDFQ5ZRSjlI7lNCc11sn2PM,59
242
+ crypticorn-2.8.0rc8.dist-info/top_level.txt,sha256=EP3NY216qIBYfmvGl0L2Zc9ItP0DjGSkiYqd9xJwGcM,11
243
+ crypticorn-2.8.0rc8.dist-info/RECORD,,