sovai 0.2.56__tar.gz → 0.2.57__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 (104) hide show
  1. {sovai-0.2.56 → sovai-0.2.57}/PKG-INFO +1 -1
  2. {sovai-0.2.56 → sovai-0.2.57}/pyproject.toml +1 -1
  3. sovai-0.2.57/sovai/__init__.py +167 -0
  4. sovai-0.2.56/sovai/__init__.py +0 -39
  5. {sovai-0.2.56 → sovai-0.2.57}/LICENSE +0 -0
  6. {sovai-0.2.56 → sovai-0.2.57}/README.md +0 -0
  7. {sovai-0.2.56 → sovai-0.2.57}/data/codes.parq +0 -0
  8. {sovai-0.2.56 → sovai-0.2.57}/data/tickers.parq +0 -0
  9. {sovai-0.2.56 → sovai-0.2.57}/sovai/.DS_Store +0 -0
  10. {sovai-0.2.56 → sovai-0.2.57}/sovai/api_config.py +0 -0
  11. {sovai-0.2.56 → sovai-0.2.57}/sovai/assets/dropdown.css +0 -0
  12. {sovai-0.2.56 → sovai-0.2.57}/sovai/assets/features_mapping.parq +0 -0
  13. {sovai-0.2.56 → sovai-0.2.57}/sovai/basic_auth.py +0 -0
  14. {sovai-0.2.56 → sovai-0.2.57}/sovai/computations/__init__.py +0 -0
  15. {sovai-0.2.56 → sovai-0.2.57}/sovai/computations/functions.py +0 -0
  16. {sovai-0.2.56 → sovai-0.2.57}/sovai/errors/__init__.py +0 -0
  17. {sovai-0.2.56 → sovai-0.2.57}/sovai/errors/sovai_errors.py +0 -0
  18. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/__init__.py +0 -0
  19. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/anomalies.py +0 -0
  20. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/ask_df_llm.py +0 -0
  21. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/change_point_generator.py +0 -0
  22. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/clustering.py +0 -0
  23. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/core_kshape.py +0 -0
  24. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/cum_sum_torch.py +0 -0
  25. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/cusum.py +0 -0
  26. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/dimensionality_reduction.py +0 -0
  27. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/feature_extraction.py +0 -0
  28. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/feature_importance.py +0 -0
  29. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/feature_neutralizer.py +0 -0
  30. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/filter_df.py +0 -0
  31. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/fractional_differencing.py +0 -0
  32. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/nowcasting.py +0 -0
  33. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/pairwise.py +0 -0
  34. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/pandas_extensions.py +0 -0
  35. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/parallel_functions.py +0 -0
  36. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/pfa_feature_selector.py +0 -0
  37. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/regime_change.py +0 -0
  38. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/regime_change_pca.py +0 -0
  39. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/shapley_global_importance.py +0 -0
  40. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/shapley_importance.py +0 -0
  41. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/signal_evaluation.py +0 -0
  42. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/technical_indicators.py +0 -0
  43. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/time_decomposition.py +0 -0
  44. {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/weight_optimization.py +0 -0
  45. {sovai-0.2.56 → sovai-0.2.57}/sovai/get_compute.py +0 -0
  46. {sovai-0.2.56 → sovai-0.2.57}/sovai/get_data copy.py +0 -0
  47. {sovai-0.2.56 → sovai-0.2.57}/sovai/get_data.py +0 -0
  48. {sovai-0.2.56 → sovai-0.2.57}/sovai/get_plots.py +0 -0
  49. {sovai-0.2.56 → sovai-0.2.57}/sovai/get_reports.py +0 -0
  50. {sovai-0.2.56 → sovai-0.2.57}/sovai/get_tools.py +0 -0
  51. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/__init__.py +0 -0
  52. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/accounting/__init__.py +0 -0
  53. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/accounting/accounting_plots.py +0 -0
  54. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/allocation/__init__.py +0 -0
  55. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/allocation/allocation_plots.py +0 -0
  56. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/bankruptcy/__init__.py +0 -0
  57. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/bankruptcy/bankruptcy_plots.py +0 -0
  58. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/breakout/__init__.py +0 -0
  59. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/breakout/breakout_plots.py +0 -0
  60. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/corp_risk/__init__.py +0 -0
  61. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/corp_risk/corp_risk_plots.py +0 -0
  62. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/earnings_surprise/__init__.py +0 -0
  63. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/earnings_surprise/earnings_surprise_plots.py +0 -0
  64. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/insider/__init__.py +0 -0
  65. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/insider/insider_plots.py +0 -0
  66. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/institutional/__init__.py +0 -0
  67. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/institutional/institutional_plots.py +0 -0
  68. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/news/__init__.py +0 -0
  69. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/news/news_plots.py +0 -0
  70. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/ratios/__init__.py +0 -0
  71. {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/ratios/ratios_plots.py +0 -0
  72. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/accounting/__init__.py +0 -0
  73. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/accounting/accounting_balance_sheet.py +0 -0
  74. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/bankruptcy/__init__.py +0 -0
  75. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/bankruptcy/bankruptcy_monthly_top.py +0 -0
  76. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/general/__init__.py +0 -0
  77. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/general/general_plots.py +0 -0
  78. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/news/__inti__.py +0 -0
  79. {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/news/news_econometric_analysis.py +0 -0
  80. {sovai-0.2.56 → sovai-0.2.57}/sovai/studies/nowcasting.py +0 -0
  81. {sovai-0.2.56 → sovai-0.2.57}/sovai/token_auth.py +0 -0
  82. {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/authentication/__init__.py +0 -0
  83. {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/authentication/authentication.py +0 -0
  84. {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/__init__.py +0 -0
  85. {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/graphs.py +0 -0
  86. {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/llm_code_generator.py +0 -0
  87. {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/sec_10_k_8_k_filings.py +0 -0
  88. {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/sec_edgar_search.py +0 -0
  89. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/__init__.py +0 -0
  90. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side.py +0 -0
  91. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3.py +0 -0
  92. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3_part_high copy 2.py +0 -0
  93. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3_part_high copy.py +0 -0
  94. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3_part_high.py +0 -0
  95. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/converter.py +0 -0
  96. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/datetime_formats.py +0 -0
  97. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/file_management.py +0 -0
  98. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/get_tickers.py +0 -0
  99. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/helpers.py +0 -0
  100. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/pandas_extensions copy.py +0 -0
  101. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/plot.py +0 -0
  102. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/port_manager.py +0 -0
  103. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/stream.py +0 -0
  104. {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/verbose_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sovai
3
- Version: 0.2.56
3
+ Version: 0.2.57
4
4
  Summary: python for asset management
5
5
  License: Proprietary License
6
6
  Author: Derek Snow
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "sovai"
7
- version = "0.2.56"
7
+ version = "0.2.57"
8
8
  description = "python for asset management"
9
9
  authors = [
10
10
  {name = "Derek Snow", email = "d.snow@outlook.com"}
@@ -0,0 +1,167 @@
1
+ """
2
+ Main SovAI SDK Tool Kit package
3
+ """
4
+ from .api_config import read_key, save_key, ApiConfig
5
+ from .basic_auth import basic_auth
6
+ from .token_auth import token_auth
7
+ from .utils.file_management import update_data_files # Keep update_data_files import
8
+
9
+
10
+ import warnings
11
+ warnings.filterwarnings("ignore")
12
+
13
+
14
+ try:
15
+ from importlib.metadata import version
16
+ __version__ = version("sovai")
17
+ except:
18
+ __version__ = "0.2.49" # Fallback to current version in pyproject.toml
19
+
20
+
21
+ # Lazy loading for core modules
22
+ _data_module = None
23
+
24
+ def data(*args, **kwargs):
25
+ """Lazy-loaded access to the data function."""
26
+ global _data_module
27
+ if _data_module is None:
28
+ from .get_data import data as _loaded_data
29
+ _data_module = _loaded_data
30
+ return _data_module(*args, **kwargs)
31
+
32
+
33
+ # Lazy loading for full installation modules
34
+ HAS_FULL_INSTALL = False
35
+ _plot_module = None
36
+ _report_module = None
37
+ _compute_module = None
38
+ _nowcast_module = None
39
+ _extension_module = None
40
+ _sec_search_module = None
41
+ _sec_filing_module = None
42
+ _code_module = None
43
+ _sec_graph_module = None
44
+
45
+ try:
46
+ # Attempt to import a module from the full installation to check if it's installed
47
+ # This import is just to check for ImportError, the actual function is lazy-loaded below
48
+ from .get_plots import plot as _ # Use _ to indicate this import is just for the check
49
+ HAS_FULL_INSTALL = True
50
+
51
+ def plot(*args, **kwargs):
52
+ """Lazy-loaded access to the plot function."""
53
+ global _plot_module
54
+ if _plot_module is None:
55
+ from .get_plots import plot as _loaded_plot
56
+ _plot_module = _loaded_plot
57
+ return _plot_module(*args, **kwargs)
58
+
59
+ def report(*args, **kwargs):
60
+ """Lazy-loaded access to the report function."""
61
+ global _report_module
62
+ if _report_module is None:
63
+ from .get_reports import report as _loaded_report
64
+ _report_module = _loaded_report
65
+ return _report_module(*args, **kwargs)
66
+
67
+ def compute(*args, **kwargs):
68
+ """Lazy-loaded access to the compute function."""
69
+ global _compute_module
70
+ if _compute_module is None:
71
+ from .get_compute import compute as _loaded_compute
72
+ _compute_module = _loaded_compute
73
+ return _compute_module(*args, **kwargs)
74
+
75
+ def nowcast(*args, **kwargs):
76
+ """Lazy-loaded access to the nowcast function."""
77
+ global _nowcast_module
78
+ if _nowcast_module is None:
79
+ from .studies.nowcasting import nowcast as _loaded_nowcast
80
+ _nowcast_module = _loaded_nowcast
81
+ return _nowcast_module(*args, **kwargs)
82
+
83
+ # extension is likely a class, so the lazy loader needs to return the class itself
84
+ def extension(*args, **kwargs):
85
+ """Lazy-loaded access to the CustomDataFrame extension class."""
86
+ global _extension_module
87
+ if _extension_module is None:
88
+ from .extensions.pandas_extensions import CustomDataFrame as _loaded_extension
89
+ _extension_module = _loaded_extension
90
+ # If called with args/kwargs, assume it's being instantiated
91
+ if args or kwargs:
92
+ return _extension_module(*args, **kwargs)
93
+ # Otherwise, return the class itself (e.g., for type checking or accessing class methods)
94
+ return _extension_module
95
+
96
+
97
+ def sec_search(*args, **kwargs):
98
+ """Lazy-loaded access to the sec_search function."""
99
+ global _sec_search_module
100
+ if _sec_search_module is None:
101
+ from .get_tools import sec_search as _loaded_sec_search
102
+ _sec_search_module = _loaded_sec_search
103
+ return _sec_search_module(*args, **kwargs)
104
+
105
+ def sec_filing(*args, **kwargs):
106
+ """Lazy-loaded access to the sec_filing function."""
107
+ global _sec_filing_module
108
+ if _sec_filing_module is None:
109
+ from .get_tools import sec_filing as _loaded_sec_filing
110
+ _sec_filing_module = _loaded_sec_filing
111
+ return _sec_filing_module(*args, **kwargs)
112
+
113
+ def code(*args, **kwargs):
114
+ """Lazy-loaded access to the code function."""
115
+ global _code_module
116
+ if _code_module is None:
117
+ from .get_tools import code as _loaded_code
118
+ _code_module = _loaded_code
119
+ return _code_module(*args, **kwargs)
120
+
121
+ def sec_graph(*args, **kwargs):
122
+ """Lazy-loaded access to the sec_graph function."""
123
+ global _sec_graph_module
124
+ if _sec_graph_module is None:
125
+ from .get_tools import sec_graph as _loaded_sec_graph
126
+ _sec_graph_module = _loaded_sec_graph
127
+ return _sec_graph_module(*args, **kwargs)
128
+
129
+
130
+ except ImportError as e:
131
+ print("this is the lean installation, for full use sovai[full]")
132
+ # print(f"ImportError: {e}")
133
+ HAS_FULL_INSTALL = False
134
+
135
+ # Define dummy functions/objects for lean installation to avoid AttributeErrors
136
+ def plot(*args, **kwargs):
137
+ raise ImportError("Plotting requires the full installation. Install with 'pip install sovai[full]'")
138
+ def report(*args, **kwargs):
139
+ raise ImportError("Reporting requires the full installation. Install with 'pip install sovai[full]'")
140
+ def compute(*args, **kwargs):
141
+ raise ImportError("Compute requires the full installation. Install with 'pip install sovai[full]'")
142
+ def nowcast(*args, **kwargs):
143
+ raise ImportError("Nowcasting requires the full installation. Install with 'pip install sovai[full]'")
144
+ def extension(*args, **kwargs):
145
+ raise ImportError("Extensions require the full installation. Install with 'pip install sovai[full]'")
146
+ def sec_search(*args, **kwargs):
147
+ raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
148
+ def sec_filing(*args, **kwargs):
149
+ raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
150
+ def code(*args, **kwargs):
151
+ raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
152
+ def sec_graph(*args, **kwargs):
153
+ raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
154
+
155
+
156
+ __all__ = [
157
+ 'read_key', 'save_key', 'ApiConfig', 'basic_auth', 'token_auth',
158
+ 'update_data_files', # Keep update_data_files in __all__
159
+ 'data', # Add data to __all__
160
+ ]
161
+
162
+ # Add full installation lazy-loaded attributes to __all__ if available
163
+ if HAS_FULL_INSTALL:
164
+ __all__ += [
165
+ 'plot', 'report', 'compute', 'nowcast', 'extension',
166
+ 'sec_search', 'sec_filing', 'code', 'sec_graph'
167
+ ]
@@ -1,39 +0,0 @@
1
- """
2
- Main SovAI SDK Tool Kit package
3
- """
4
- from .api_config import read_key, save_key, ApiConfig
5
- from .get_data import data
6
- from .basic_auth import basic_auth
7
- from .token_auth import token_auth
8
- from .utils.file_management import save_or_update_tickers, save_or_update_codes, update_data_files
9
-
10
-
11
- import warnings
12
- warnings.filterwarnings("ignore")
13
-
14
-
15
- try:
16
- from importlib.metadata import version
17
- __version__ = version("sovai")
18
- except:
19
- __version__ = "0.2.49" # Fallback to current version in pyproject.toml
20
-
21
-
22
- try:
23
- from .get_plots import plot
24
- from .get_reports import report
25
- from .get_compute import compute
26
- from .studies.nowcasting import nowcast
27
- from .extensions.pandas_extensions import CustomDataFrame as extension
28
- from .get_tools import sec_search, sec_filing, code, sec_graph
29
- HAS_FULL_INSTALL = True
30
- except ImportError as e:
31
- print("this is the lean installation, for full use sovai[full]")
32
- # print(f"ImportError: {e}")
33
- HAS_FULL_INSTALL = False
34
-
35
-
36
- __all__ = ['read_key', 'save_key', 'ApiConfig', 'data', 'basic_auth', 'token_auth', 'update_data_files']
37
-
38
- if HAS_FULL_INSTALL:
39
- __all__ += ['plot', 'report', 'compute', 'nowcast', 'extension', 'sec_search', 'sec_filing', 'code', 'sec_graph']
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
File without changes
File without changes
File without changes