sovai 0.2.35__tar.gz → 0.2.38__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 (103) hide show
  1. {sovai-0.2.35 → sovai-0.2.38}/PKG-INFO +3 -3
  2. sovai-0.2.38/data/codes.parq +0 -0
  3. sovai-0.2.38/data/tickers.parq +0 -0
  4. {sovai-0.2.35 → sovai-0.2.38}/pyproject.toml +2 -2
  5. sovai-0.2.35/sovai/get_data.py → sovai-0.2.38/sovai/get_data copy.py +37 -22
  6. sovai-0.2.38/sovai/get_data.py +1391 -0
  7. {sovai-0.2.35 → sovai-0.2.38}/sovai/tools/authentication/authentication.py +3 -3
  8. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/client_side_s3.py +1 -1
  9. sovai-0.2.38/sovai/utils/client_side_s3_part_high copy 2.py +432 -0
  10. sovai-0.2.38/sovai/utils/client_side_s3_part_high copy.py +407 -0
  11. sovai-0.2.38/sovai/utils/client_side_s3_part_high.py +733 -0
  12. sovai-0.2.35/sovai/utils/client_side_s3 copy.py +0 -206
  13. {sovai-0.2.35 → sovai-0.2.38}/LICENSE +0 -0
  14. {sovai-0.2.35 → sovai-0.2.38}/README.md +0 -0
  15. {sovai-0.2.35 → sovai-0.2.38}/sovai/.DS_Store +0 -0
  16. {sovai-0.2.35 → sovai-0.2.38}/sovai/__init__.py +0 -0
  17. {sovai-0.2.35 → sovai-0.2.38}/sovai/api_config.py +0 -0
  18. {sovai-0.2.35 → sovai-0.2.38}/sovai/assets/dropdown.css +0 -0
  19. {sovai-0.2.35 → sovai-0.2.38}/sovai/assets/features_mapping.parq +0 -0
  20. {sovai-0.2.35 → sovai-0.2.38}/sovai/basic_auth.py +0 -0
  21. {sovai-0.2.35 → sovai-0.2.38}/sovai/computations/__init__.py +0 -0
  22. {sovai-0.2.35 → sovai-0.2.38}/sovai/computations/functions.py +0 -0
  23. {sovai-0.2.35 → sovai-0.2.38}/sovai/errors/__init__.py +0 -0
  24. {sovai-0.2.35 → sovai-0.2.38}/sovai/errors/sovai_errors.py +0 -0
  25. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/__init__.py +0 -0
  26. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/anomalies.py +0 -0
  27. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/ask_df_llm.py +0 -0
  28. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/change_point_generator.py +0 -0
  29. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/clustering.py +0 -0
  30. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/core_kshape.py +0 -0
  31. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/cum_sum_torch.py +0 -0
  32. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/cusum.py +0 -0
  33. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/dimensionality_reduction.py +0 -0
  34. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/feature_extraction.py +0 -0
  35. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/feature_importance.py +0 -0
  36. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/feature_neutralizer.py +0 -0
  37. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/filter_df.py +0 -0
  38. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/fractional_differencing.py +0 -0
  39. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/nowcasting.py +0 -0
  40. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/pairwise.py +0 -0
  41. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/pandas_extensions.py +0 -0
  42. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/parallel_functions.py +0 -0
  43. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/pfa_feature_selector.py +0 -0
  44. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/regime_change.py +0 -0
  45. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/regime_change_pca.py +0 -0
  46. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/shapley_global_importance.py +0 -0
  47. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/shapley_importance.py +0 -0
  48. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/signal_evaluation.py +0 -0
  49. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/technical_indicators.py +0 -0
  50. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/time_decomposition.py +0 -0
  51. {sovai-0.2.35 → sovai-0.2.38}/sovai/extensions/weight_optimization.py +0 -0
  52. {sovai-0.2.35 → sovai-0.2.38}/sovai/get_compute.py +0 -0
  53. {sovai-0.2.35 → sovai-0.2.38}/sovai/get_plots.py +0 -0
  54. {sovai-0.2.35 → sovai-0.2.38}/sovai/get_reports.py +0 -0
  55. {sovai-0.2.35 → sovai-0.2.38}/sovai/get_tools.py +0 -0
  56. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/__init__.py +0 -0
  57. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/accounting/__init__.py +0 -0
  58. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/accounting/accounting_plots.py +0 -0
  59. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/allocation/__init__.py +0 -0
  60. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/allocation/allocation_plots.py +0 -0
  61. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/bankruptcy/__init__.py +0 -0
  62. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/bankruptcy/bankruptcy_plots.py +0 -0
  63. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/breakout/__init__.py +0 -0
  64. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/breakout/breakout_plots.py +0 -0
  65. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/corp_risk/__init__.py +0 -0
  66. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/corp_risk/corp_risk_plots.py +0 -0
  67. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/earnings_surprise/__init__.py +0 -0
  68. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/earnings_surprise/earnings_surprise_plots.py +0 -0
  69. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/insider/__init__.py +0 -0
  70. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/insider/insider_plots.py +0 -0
  71. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/institutional/__init__.py +0 -0
  72. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/institutional/institutional_plots.py +0 -0
  73. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/news/__init__.py +0 -0
  74. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/news/news_plots.py +0 -0
  75. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/ratios/__init__.py +0 -0
  76. {sovai-0.2.35 → sovai-0.2.38}/sovai/plots/ratios/ratios_plots.py +0 -0
  77. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/accounting/__init__.py +0 -0
  78. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/accounting/accounting_balance_sheet.py +0 -0
  79. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/bankruptcy/__init__.py +0 -0
  80. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/bankruptcy/bankruptcy_monthly_top.py +0 -0
  81. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/general/__init__.py +0 -0
  82. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/general/general_plots.py +0 -0
  83. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/news/__inti__.py +0 -0
  84. {sovai-0.2.35 → sovai-0.2.38}/sovai/reports/news/news_econometric_analysis.py +0 -0
  85. {sovai-0.2.35 → sovai-0.2.38}/sovai/studies/nowcasting.py +0 -0
  86. {sovai-0.2.35 → sovai-0.2.38}/sovai/token_auth.py +0 -0
  87. {sovai-0.2.35 → sovai-0.2.38}/sovai/tools/authentication/__init__.py +0 -0
  88. {sovai-0.2.35 → sovai-0.2.38}/sovai/tools/sec/__init__.py +0 -0
  89. {sovai-0.2.35 → sovai-0.2.38}/sovai/tools/sec/graphs.py +0 -0
  90. {sovai-0.2.35 → sovai-0.2.38}/sovai/tools/sec/llm_code_generator.py +0 -0
  91. {sovai-0.2.35 → sovai-0.2.38}/sovai/tools/sec/sec_10_k_8_k_filings.py +0 -0
  92. {sovai-0.2.35 → sovai-0.2.38}/sovai/tools/sec/sec_edgar_search.py +0 -0
  93. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/__init__.py +0 -0
  94. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/client_side.py +0 -0
  95. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/converter.py +0 -0
  96. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/datetime_formats.py +0 -0
  97. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/file_management.py +0 -0
  98. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/get_tickers.py +0 -0
  99. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/helpers.py +0 -0
  100. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/pandas_extensions copy.py +0 -0
  101. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/plot.py +0 -0
  102. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/port_manager.py +0 -0
  103. {sovai-0.2.35 → sovai-0.2.38}/sovai/utils/stream.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: sovai
3
- Version: 0.2.35
3
+ Version: 0.2.38
4
4
  Summary: python for asset management
5
5
  License: Proprietary License
6
6
  Author: Derek Snow
@@ -30,7 +30,7 @@ Requires-Dist: openai (>=1.0) ; extra == "full"
30
30
  Requires-Dist: pandas (>=1.0)
31
31
  Requires-Dist: pexpect (>=4.9.0) ; extra == "full"
32
32
  Requires-Dist: plotly (>=5.0) ; extra == "full"
33
- Requires-Dist: polars (>=0.20.30)
33
+ Requires-Dist: polars (>=1.2,<2.0)
34
34
  Requires-Dist: polars-talib (==0.1.3) ; extra == "full"
35
35
  Requires-Dist: pyarrow (>=5.0)
36
36
  Requires-Dist: python-dateutil (>=2.8)
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "sovai"
3
- version = "0.2.35"
3
+ version = "0.2.38"
4
4
  description = "python for asset management"
5
5
  authors = ["Derek Snow <d.snow@outlook.com>"]
6
6
  license = "Proprietary License"
@@ -37,7 +37,7 @@ pyarrow = ">=5.0"
37
37
  requests = ">=2.20"
38
38
  python-dateutil = ">=2.8"
39
39
  python-dotenv = ">=0.10"
40
- polars = ">=0.20.30"
40
+ polars = "^1.2"
41
41
  boto3 = ">=1.20"
42
42
  joblib = ">=1.0"
43
43
  rapidfuzz = "^3.9.7"
@@ -20,8 +20,11 @@ from sovai.errors.sovai_errors import InvalidInputData
20
20
  from sovai.utils.converter import convert_data2df
21
21
  from sovai.utils.stream import stream_data, stream_data_pyarrow
22
22
  from sovai.utils.datetime_formats import datetime_format
23
+
23
24
  from sovai.utils.client_side import client_side_frame
24
25
  from sovai.utils.client_side_s3 import load_frame_s3
26
+ from sovai.utils.client_side_s3_part_high import load_frame_s3_partitioned_high
27
+
25
28
 
26
29
  ## Note run these for TEST - IT COULD BE HERE some silent problems
27
30
  try:
@@ -234,9 +237,9 @@ endpoint_to_ticker = {
234
237
  "/news/sentiment_score": None,
235
238
  "/insider/trading": "",
236
239
  "/wikipedia/views": "",
237
- "/spending/contracts": "",
240
+ # "/spending/contracts": "",
238
241
  "/spending/details": "",
239
- "/spending/transactions": "",
242
+ # "/spending/transactions": "",
240
243
  "/spending/products": "",
241
244
  "/spending/location": "",
242
245
  "/spending/compensation": "",
@@ -296,6 +299,9 @@ def normalize_endpoint(endpoint):
296
299
 
297
300
  ## If you also want access by full file, please also add to endpoint_to_ticker
298
301
 
302
+
303
+
304
+ # Define your endpoint sets
299
305
  client_side_endpoints_gcs = {
300
306
  "ratios/relative",
301
307
  "market/prices",
@@ -306,7 +312,6 @@ client_side_endpoints_gcs = {
306
312
  "lobbying/public",
307
313
  }
308
314
 
309
- ## If you also want access by full file, please also add to endpoint_to_ticker
310
315
  client_side_endpoints_s3 = {
311
316
  "sec/10k",
312
317
  "trials/predict",
@@ -314,9 +319,23 @@ client_side_endpoints_s3 = {
314
319
  "trials/all/predict",
315
320
  "trials/all/decribe",
316
321
  "trials/all",
322
+ }
323
+
324
+ client_side_endpoints_s3_part_high = {
325
+ "patents/applications",
326
+ "patents/grants",
327
+ "clinical_trials",
328
+ "spending/awards"
329
+
317
330
 
318
331
  }
319
332
 
333
+ # Create a list of handlers
334
+ handlers = [
335
+ (client_side_endpoints_gcs, client_side_frame, "Grabbing GCS client side"),
336
+ (client_side_endpoints_s3, load_frame_s3, "Grabbing S3 client side"),
337
+ (client_side_endpoints_s3_part_high, load_frame_s3_partitioned_high, "Grabbing S3 Partitioned High client side"),
338
+ ]
320
339
 
321
340
 
322
341
  # In your main function or wherever this logic is implemented:
@@ -604,26 +623,22 @@ def data(
604
623
 
605
624
  normalized_endpoint = normalize_endpoint(endpoint)
606
625
 
607
- if (
608
- normalized_endpoint in client_side_endpoints_gcs
609
- and tickers is not None
610
- and frequency is None
611
- ):
612
- verbose_mode.vprint("Grabbing gcs client side")
613
- _query_cache[cache_key] = client_side_frame(
614
- normalized_endpoint, tickers, columns, start_date, end_date
615
- )
616
- return _query_cache[cache_key]
626
+ # ACTAULLY I DON'T CARE, TICKERS CAN BE NONE FOR PATENTS
627
+
628
+ # Iterate through the handlers to find a matching handler
629
+ for endpoint_set, handler_func, message in handlers:
630
+ if (
631
+ normalized_endpoint in endpoint_set and
632
+ (tickers is not None or start_date is not None) and
633
+ frequency is None
634
+ ):
635
+ verbose_mode.vprint(message)
636
+ _query_cache[cache_key] = handler_func(
637
+ normalized_endpoint, tickers, columns, start_date, end_date
638
+ )
639
+ return _query_cache[cache_key]
640
+
617
641
 
618
- elif (
619
- normalized_endpoint in client_side_endpoints_s3
620
- and tickers is not None
621
- and frequency is None
622
- ):
623
- verbose_mode.vprint("Grabbing s3 client side")
624
- _query_cache[cache_key] = load_frame_s3(
625
- normalized_endpoint, tickers, columns, start_date, end_date)
626
- return _query_cache[cache_key]
627
642
  try:
628
643
  if tickers is not None and not is_all(tickers):
629
644
  params = ticker_mapper(params,verbose)