sovai 0.2.9__tar.gz → 0.2.12__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 (87) hide show
  1. {sovai-0.2.9 → sovai-0.2.12}/PKG-INFO +1 -1
  2. {sovai-0.2.9 → sovai-0.2.12}/pyproject.toml +1 -1
  3. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/client_side.py +77 -4
  4. {sovai-0.2.9 → sovai-0.2.12}/LICENSE +0 -0
  5. {sovai-0.2.9 → sovai-0.2.12}/README.md +0 -0
  6. {sovai-0.2.9 → sovai-0.2.12}/sovai/__init__.py +0 -0
  7. {sovai-0.2.9 → sovai-0.2.12}/sovai/api_config.py +0 -0
  8. {sovai-0.2.9 → sovai-0.2.12}/sovai/assets/dropdown.css +0 -0
  9. {sovai-0.2.9 → sovai-0.2.12}/sovai/assets/features_mapping.parq +0 -0
  10. {sovai-0.2.9 → sovai-0.2.12}/sovai/basic_auth.py +0 -0
  11. {sovai-0.2.9 → sovai-0.2.12}/sovai/computations/__init__.py +0 -0
  12. {sovai-0.2.9 → sovai-0.2.12}/sovai/computations/functions.py +0 -0
  13. {sovai-0.2.9 → sovai-0.2.12}/sovai/errors/__init__.py +0 -0
  14. {sovai-0.2.9 → sovai-0.2.12}/sovai/errors/sovai_errors.py +0 -0
  15. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/__init__.py +0 -0
  16. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/anomalies.py +0 -0
  17. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/change_point_generator.py +0 -0
  18. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/clustering.py +0 -0
  19. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/core_kshape.py +0 -0
  20. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/cum_sum_torch.py +0 -0
  21. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/cusum.py +0 -0
  22. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/dimensionality_reduction.py +0 -0
  23. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/feature_extraction.py +0 -0
  24. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/feature_importance.py +0 -0
  25. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/feature_neutralizer.py +0 -0
  26. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/fractional_differencing.py +0 -0
  27. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/nowcasting.py +0 -0
  28. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/pairwise.py +0 -0
  29. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/pandas_extensions.py +0 -0
  30. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/parallel_functions.py +0 -0
  31. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/pfa_feature_selector.py +0 -0
  32. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/regime_change.py +0 -0
  33. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/regime_change_pca.py +0 -0
  34. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/shapley_global_importance.py +0 -0
  35. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/shapley_importance.py +0 -0
  36. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/signal_evaluation.py +0 -0
  37. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/technical_indicators.py +0 -0
  38. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/time_decomposition.py +0 -0
  39. {sovai-0.2.9 → sovai-0.2.12}/sovai/extensions/weight_optimization.py +0 -0
  40. {sovai-0.2.9 → sovai-0.2.12}/sovai/get_compute.py +0 -0
  41. {sovai-0.2.9 → sovai-0.2.12}/sovai/get_data.py +0 -0
  42. {sovai-0.2.9 → sovai-0.2.12}/sovai/get_plots.py +0 -0
  43. {sovai-0.2.9 → sovai-0.2.12}/sovai/get_reports.py +0 -0
  44. {sovai-0.2.9 → sovai-0.2.12}/sovai/get_tools.py +0 -0
  45. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/__init__.py +0 -0
  46. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/accounting/__init__.py +0 -0
  47. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/accounting/accounting_plots.py +0 -0
  48. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/allocation/__init__.py +0 -0
  49. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/allocation/allocation_plots.py +0 -0
  50. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/bankruptcy/__init__.py +0 -0
  51. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/bankruptcy/bankruptcy_plots.py +0 -0
  52. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/breakout/__init__.py +0 -0
  53. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/breakout/breakout_plots.py +0 -0
  54. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/corp_risk/__init__.py +0 -0
  55. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/corp_risk/corp_risk_plots.py +0 -0
  56. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/earnings_surprise/__init__.py +0 -0
  57. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/earnings_surprise/earnings_surprise_plots.py +0 -0
  58. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/insider/__init__.py +0 -0
  59. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/insider/insider_plots.py +0 -0
  60. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/institutional/__init__.py +0 -0
  61. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/institutional/institutional_plots.py +0 -0
  62. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/news/__init__.py +0 -0
  63. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/news/news_plots.py +0 -0
  64. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/ratios/__init__.py +0 -0
  65. {sovai-0.2.9 → sovai-0.2.12}/sovai/plots/ratios/ratios_plots.py +0 -0
  66. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/accounting/__inti__.py +0 -0
  67. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/accounting/accounting_balance_sheet.py +0 -0
  68. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/bankruptcy/__inti__.py +0 -0
  69. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/bankruptcy/bankruptcy_monthly_top.py +0 -0
  70. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/general/__inti__.py +0 -0
  71. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/general/general_plots.py +0 -0
  72. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/news/__inti__.py +0 -0
  73. {sovai-0.2.9 → sovai-0.2.12}/sovai/reports/news/news_econometric_analysis.py +0 -0
  74. {sovai-0.2.9 → sovai-0.2.12}/sovai/studies/nowcasting.py +0 -0
  75. {sovai-0.2.9 → sovai-0.2.12}/sovai/token_auth.py +0 -0
  76. {sovai-0.2.9 → sovai-0.2.12}/sovai/tools/sec/__inti__.py +0 -0
  77. {sovai-0.2.9 → sovai-0.2.12}/sovai/tools/sec/sec_10_k_8_k_filings.py +0 -0
  78. {sovai-0.2.9 → sovai-0.2.12}/sovai/tools/sec/sec_edgar_search.py +0 -0
  79. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/__init__.py +0 -0
  80. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/converter.py +0 -0
  81. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/datetime_formats.py +0 -0
  82. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/file_management.py +0 -0
  83. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/get_tickers.py +0 -0
  84. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/helpers.py +0 -0
  85. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/pandas_extensions copy.py +0 -0
  86. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/plot.py +0 -0
  87. {sovai-0.2.9 → sovai-0.2.12}/sovai/utils/stream.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sovai
3
- Version: 0.2.9
3
+ Version: 0.2.12
4
4
  Summary: python for asset management
5
5
  License: Proprietary License
6
6
  Author: Derek Snow
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "sovai"
3
- version = "0.2.9"
3
+ version = "0.2.12"
4
4
  description = "python for asset management"
5
5
  authors = ["Derek Snow <d.snow@outlook.com>"]
6
6
  license = "Proprietary License"
@@ -2,12 +2,20 @@ import pandas as pd
2
2
  from concurrent.futures import ThreadPoolExecutor
3
3
  from urllib.parse import quote
4
4
  import datetime
5
- from sovai.extensions.pandas_extensions import CustomDataFrame
6
5
  from sovai.errors.sovai_errors import InvalidCredentialsError
7
6
 
8
7
  import requests
9
8
  from sovai.api_config import ApiConfig
10
9
 
10
+ # Try to import CustomDataFrame, use regular DataFrame if not available
11
+ try:
12
+ from sovai.extensions.pandas_extensions import CustomDataFrame
13
+ HAS_CUSTOM_DATAFRAME = True
14
+ except ImportError:
15
+ HAS_CUSTOM_DATAFRAME = False
16
+ CustomDataFrame = pd.DataFrame # Fallback to regular DataFrame
17
+
18
+
11
19
  def verify_token(verbose=False):
12
20
  url = f"{ApiConfig.base_url}/verify/token/{ApiConfig.token}" # Updated endpoint
13
21
  try:
@@ -122,12 +130,12 @@ def load_data_for_tickers(
122
130
  return combined_df.sort_index()
123
131
 
124
132
 
125
- def client_side_frame(endpoint, tickers, columns, start_date, end_date):
126
133
 
134
+
135
+ def client_side_frame(endpoint, tickers, columns, start_date, end_date):
127
136
  is_valid, user_id = verify_token(verbose=False)
128
137
 
129
138
  if not is_valid:
130
- # print('invalid')
131
139
  raise InvalidCredentialsError("Invalid or expired token. Please authenticate.")
132
140
 
133
141
  endpoint_config = {
@@ -180,4 +188,69 @@ def client_side_frame(endpoint, tickers, columns, start_date, end_date):
180
188
  df_percentiles = load_data_for_tickers(
181
189
  base_url, tickers, columns, start_date, end_date, name_file, partitioned
182
190
  )
183
- return CustomDataFrame(df_percentiles)
191
+
192
+ if HAS_CUSTOM_DATAFRAME:
193
+ return CustomDataFrame(df_percentiles)
194
+ else:
195
+ return df_percentiles # Returns a regular pandas DataFrame if CustomDataFrame is not available
196
+
197
+
198
+ # def client_side_frame(endpoint, tickers, columns, start_date, end_date):
199
+
200
+ # is_valid, user_id = verify_token(verbose=False)
201
+
202
+ # if not is_valid:
203
+ # # print('invalid')
204
+ # raise InvalidCredentialsError("Invalid or expired token. Please authenticate.")
205
+
206
+ # endpoint_config = {
207
+ # "ratios/relative": {
208
+ # "url": "https://storage.googleapis.com/sovai-partitioned/sovai-accounting/processed/ratios_percentile_weekly.parq",
209
+ # "name": "ratios_percentile_weekly_0.parquet",
210
+ # "partitioned": False,
211
+ # },
212
+ # "market/prices": {
213
+ # "url": "https://storage.googleapis.com/sovai-partitioned/sovai-accounting/prices.parq",
214
+ # "name": "prices_0.parquet",
215
+ # "partitioned": False,
216
+ # },
217
+ # "market/closeadj": {
218
+ # "url": "https://storage.googleapis.com/sovai-partitioned/sovai-accounting/prices_closeadj.parq",
219
+ # "name": "prices_closeadj_0.parquet",
220
+ # "partitioned": False,
221
+ # },
222
+ # "complaints/public": {
223
+ # "url": "https://storage.googleapis.com/sovai-partitioned/sovai-complaints/processed/consumer_complaint_public.parq",
224
+ # "name": "consumer_complaint_0.parquet",
225
+ # "partitioned": False,
226
+ # },
227
+ # "complaints/private": {
228
+ # "url": "https://storage.googleapis.com/sovai-partitioned/sovai-complaints/processed/consumer_complaint_private.parq",
229
+ # "name": "consumer_complaint_0.parquet",
230
+ # "partitioned": False,
231
+ # },
232
+ # "lobbying/public": {
233
+ # "url": "https://storage.googleapis.com/sovai-partitioned/sovai-lobbying/processed/lobbying_public.parq",
234
+ # "name": "lobbying_public_0.parquet",
235
+ # "partitioned": True,
236
+ # },
237
+ # "short/volume": {
238
+ # "url": "https://storage.googleapis.com/sovai-partitioned/sovai-short/processed/short_volume_weekly.parq",
239
+ # "name": "short_volume_weekly_0.parquet",
240
+ # "partitioned": True,
241
+ # },
242
+ # }
243
+
244
+ # if endpoint not in endpoint_config:
245
+ # raise ValueError(f"Invalid endpoint: {endpoint}")
246
+
247
+ # config = endpoint_config[endpoint]
248
+ # base_url = config["url"]
249
+ # name_file = config["name"]
250
+ # partitioned = config["partitioned"]
251
+
252
+ # # Load data
253
+ # df_percentiles = load_data_for_tickers(
254
+ # base_url, tickers, columns, start_date, end_date, name_file, partitioned
255
+ # )
256
+ # return CustomDataFrame(df_percentiles)
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