sovai 0.2.51__tar.gz → 0.2.53__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.51 → sovai-0.2.53}/PKG-INFO +36 -32
  2. {sovai-0.2.51 → sovai-0.2.53}/pyproject.toml +45 -12
  3. {sovai-0.2.51 → sovai-0.2.53}/sovai/__init__.py +6 -2
  4. {sovai-0.2.51 → sovai-0.2.53}/LICENSE +0 -0
  5. {sovai-0.2.51 → sovai-0.2.53}/README.md +0 -0
  6. {sovai-0.2.51 → sovai-0.2.53}/data/codes.parq +0 -0
  7. {sovai-0.2.51 → sovai-0.2.53}/data/tickers.parq +0 -0
  8. {sovai-0.2.51 → sovai-0.2.53}/sovai/.DS_Store +0 -0
  9. {sovai-0.2.51 → sovai-0.2.53}/sovai/api_config.py +0 -0
  10. {sovai-0.2.51 → sovai-0.2.53}/sovai/assets/dropdown.css +0 -0
  11. {sovai-0.2.51 → sovai-0.2.53}/sovai/assets/features_mapping.parq +0 -0
  12. {sovai-0.2.51 → sovai-0.2.53}/sovai/basic_auth.py +0 -0
  13. {sovai-0.2.51 → sovai-0.2.53}/sovai/computations/__init__.py +0 -0
  14. {sovai-0.2.51 → sovai-0.2.53}/sovai/computations/functions.py +0 -0
  15. {sovai-0.2.51 → sovai-0.2.53}/sovai/errors/__init__.py +0 -0
  16. {sovai-0.2.51 → sovai-0.2.53}/sovai/errors/sovai_errors.py +0 -0
  17. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/__init__.py +0 -0
  18. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/anomalies.py +0 -0
  19. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/ask_df_llm.py +0 -0
  20. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/change_point_generator.py +0 -0
  21. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/clustering.py +0 -0
  22. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/core_kshape.py +0 -0
  23. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/cum_sum_torch.py +0 -0
  24. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/cusum.py +0 -0
  25. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/dimensionality_reduction.py +0 -0
  26. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/feature_extraction.py +0 -0
  27. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/feature_importance.py +0 -0
  28. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/feature_neutralizer.py +0 -0
  29. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/filter_df.py +0 -0
  30. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/fractional_differencing.py +0 -0
  31. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/nowcasting.py +0 -0
  32. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/pairwise.py +0 -0
  33. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/pandas_extensions.py +0 -0
  34. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/parallel_functions.py +0 -0
  35. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/pfa_feature_selector.py +0 -0
  36. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/regime_change.py +0 -0
  37. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/regime_change_pca.py +0 -0
  38. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/shapley_global_importance.py +0 -0
  39. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/shapley_importance.py +0 -0
  40. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/signal_evaluation.py +0 -0
  41. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/technical_indicators.py +0 -0
  42. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/time_decomposition.py +0 -0
  43. {sovai-0.2.51 → sovai-0.2.53}/sovai/extensions/weight_optimization.py +0 -0
  44. {sovai-0.2.51 → sovai-0.2.53}/sovai/get_compute.py +0 -0
  45. {sovai-0.2.51 → sovai-0.2.53}/sovai/get_data copy.py +0 -0
  46. {sovai-0.2.51 → sovai-0.2.53}/sovai/get_data.py +0 -0
  47. {sovai-0.2.51 → sovai-0.2.53}/sovai/get_plots.py +0 -0
  48. {sovai-0.2.51 → sovai-0.2.53}/sovai/get_reports.py +0 -0
  49. {sovai-0.2.51 → sovai-0.2.53}/sovai/get_tools.py +0 -0
  50. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/__init__.py +0 -0
  51. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/accounting/__init__.py +0 -0
  52. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/accounting/accounting_plots.py +0 -0
  53. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/allocation/__init__.py +0 -0
  54. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/allocation/allocation_plots.py +0 -0
  55. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/bankruptcy/__init__.py +0 -0
  56. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/bankruptcy/bankruptcy_plots.py +0 -0
  57. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/breakout/__init__.py +0 -0
  58. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/breakout/breakout_plots.py +0 -0
  59. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/corp_risk/__init__.py +0 -0
  60. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/corp_risk/corp_risk_plots.py +0 -0
  61. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/earnings_surprise/__init__.py +0 -0
  62. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/earnings_surprise/earnings_surprise_plots.py +0 -0
  63. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/insider/__init__.py +0 -0
  64. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/insider/insider_plots.py +0 -0
  65. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/institutional/__init__.py +0 -0
  66. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/institutional/institutional_plots.py +0 -0
  67. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/news/__init__.py +0 -0
  68. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/news/news_plots.py +0 -0
  69. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/ratios/__init__.py +0 -0
  70. {sovai-0.2.51 → sovai-0.2.53}/sovai/plots/ratios/ratios_plots.py +0 -0
  71. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/accounting/__init__.py +0 -0
  72. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/accounting/accounting_balance_sheet.py +0 -0
  73. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/bankruptcy/__init__.py +0 -0
  74. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/bankruptcy/bankruptcy_monthly_top.py +0 -0
  75. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/general/__init__.py +0 -0
  76. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/general/general_plots.py +0 -0
  77. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/news/__inti__.py +0 -0
  78. {sovai-0.2.51 → sovai-0.2.53}/sovai/reports/news/news_econometric_analysis.py +0 -0
  79. {sovai-0.2.51 → sovai-0.2.53}/sovai/studies/nowcasting.py +0 -0
  80. {sovai-0.2.51 → sovai-0.2.53}/sovai/token_auth.py +0 -0
  81. {sovai-0.2.51 → sovai-0.2.53}/sovai/tools/authentication/__init__.py +0 -0
  82. {sovai-0.2.51 → sovai-0.2.53}/sovai/tools/authentication/authentication.py +0 -0
  83. {sovai-0.2.51 → sovai-0.2.53}/sovai/tools/sec/__init__.py +0 -0
  84. {sovai-0.2.51 → sovai-0.2.53}/sovai/tools/sec/graphs.py +0 -0
  85. {sovai-0.2.51 → sovai-0.2.53}/sovai/tools/sec/llm_code_generator.py +0 -0
  86. {sovai-0.2.51 → sovai-0.2.53}/sovai/tools/sec/sec_10_k_8_k_filings.py +0 -0
  87. {sovai-0.2.51 → sovai-0.2.53}/sovai/tools/sec/sec_edgar_search.py +0 -0
  88. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/__init__.py +0 -0
  89. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/client_side.py +0 -0
  90. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/client_side_s3.py +0 -0
  91. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/client_side_s3_part_high copy 2.py +0 -0
  92. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/client_side_s3_part_high copy.py +0 -0
  93. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/client_side_s3_part_high.py +0 -0
  94. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/converter.py +0 -0
  95. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/datetime_formats.py +0 -0
  96. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/file_management.py +0 -0
  97. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/get_tickers.py +0 -0
  98. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/helpers.py +0 -0
  99. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/pandas_extensions copy.py +0 -0
  100. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/plot.py +0 -0
  101. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/port_manager.py +0 -0
  102. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/stream.py +0 -0
  103. {sovai-0.2.51 → sovai-0.2.53}/sovai/utils/verbose_utils.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sovai
3
- Version: 0.2.51
3
+ Version: 0.2.53
4
4
  Summary: python for asset management
5
5
  License: Proprietary License
6
6
  Author: Derek Snow
7
7
  Author-email: d.snow@outlook.com
8
- Requires-Python: >=3.10,<4.0
8
+ Requires-Python: >=3.10
9
9
  Classifier: License :: Other/Proprietary License
10
10
  Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.10
@@ -14,43 +14,47 @@ Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Provides-Extra: full
16
16
  Requires-Dist: boto3 (>=1.20)
17
- Requires-Dist: dash (>=2.0) ; extra == "full"
18
- Requires-Dist: dash-bootstrap-components (>=1.6.0) ; extra == "full"
19
- Requires-Dist: edgar-tool (>=1.3.3,<2.0.0)
20
- Requires-Dist: fastapi-cache (>=0.1.0,<0.2.0)
21
- Requires-Dist: fastapi-cache2[redis] (>=0.2.1,<0.3.0)
22
- Requires-Dist: gcsfs (>=2024.9,<2025.0)
23
- Requires-Dist: great-tables (>=0.9) ; extra == "full"
24
- Requires-Dist: ipywidgets (>=8.1.3) ; extra == "full"
17
+ Requires-Dist: dash ; extra == "full"
18
+ Requires-Dist: dash-bootstrap-components ; extra == "full"
19
+ Requires-Dist: edgar-tool (>=1.3.3)
20
+ Requires-Dist: fastapi-cache (>=0.1.0)
21
+ Requires-Dist: fastapi-cache2[redis] (>=0.2.1)
22
+ Requires-Dist: fsspec (==2024.10.0)
23
+ Requires-Dist: gcsfs (==2024.10.0)
24
+ Requires-Dist: great-tables ; extra == "full"
25
+ Requires-Dist: ipywidgets (>=8.1.6,<9.0.0)
26
+ Requires-Dist: ipywidgets ; extra == "full"
25
27
  Requires-Dist: joblib (>=1.0)
26
- Requires-Dist: lightgbm (>=4.5.0) ; extra == "full"
27
- Requires-Dist: matplotlib (>=3.0) ; extra == "full"
28
- Requires-Dist: mfles (>=0.2) ; extra == "full"
29
- Requires-Dist: networkx (>=3.3,<4.0)
30
- Requires-Dist: numba (>=0.50) ; extra == "full"
28
+ Requires-Dist: lightgbm ; extra == "full"
29
+ Requires-Dist: matplotlib ; extra == "full"
30
+ Requires-Dist: mfles ; extra == "full"
31
+ Requires-Dist: networkx (>=3.3)
32
+ Requires-Dist: numba ; extra == "full"
31
33
  Requires-Dist: numpy (>=1.20)
32
- Requires-Dist: openai (>=1.0) ; extra == "full"
34
+ Requires-Dist: openai ; extra == "full"
33
35
  Requires-Dist: pandas (>=1.0)
34
- Requires-Dist: pexpect (>=4.9.0) ; extra == "full"
35
- Requires-Dist: plotly (>=5.0) ; extra == "full"
36
- Requires-Dist: polars (>=1.2,<2.0)
37
- Requires-Dist: polars-talib (==0.1.3) ; extra == "full"
36
+ Requires-Dist: pexpect ; extra == "full"
37
+ Requires-Dist: plotly (>=6.0.1,<7.0.0)
38
+ Requires-Dist: plotly ; extra == "full"
39
+ Requires-Dist: polars (>=1.2)
40
+ Requires-Dist: polars-talib ; extra == "full"
38
41
  Requires-Dist: pyarrow (>=5.0)
39
42
  Requires-Dist: python-dateutil (>=2.8)
40
43
  Requires-Dist: python-dotenv (>=0.10)
41
- Requires-Dist: pyvis (>=0.3.2,<0.4.0)
42
- Requires-Dist: rapidfuzz (>=3.9.7,<4.0.0)
44
+ Requires-Dist: pyvis (>=0.3.2)
45
+ Requires-Dist: rapidfuzz (>=3.9.7)
43
46
  Requires-Dist: requests (>=2.20)
44
- Requires-Dist: ruptures (>=1.0) ; extra == "full"
45
- Requires-Dist: s3fs (>=2024.9,<2025.0)
46
- Requires-Dist: scikit-learn (>=1.0) ; extra == "full"
47
- Requires-Dist: scipy (>=1.0) ; extra == "full"
48
- Requires-Dist: seaborn (>=0.13.2,<0.14.0)
49
- Requires-Dist: shap (>=0.40) ; extra == "full"
50
- Requires-Dist: skfolio (>=0.3) ; extra == "full"
51
- Requires-Dist: statsforecast (>=1.0) ; extra == "full"
52
- Requires-Dist: tensorly (>=0.6) ; extra == "full"
53
- Requires-Dist: yachalk (>=0.1.6,<0.2.0)
47
+ Requires-Dist: ruptures ; extra == "full"
48
+ Requires-Dist: s3fs (==2024.10.0)
49
+ Requires-Dist: scikit-learn ; extra == "full"
50
+ Requires-Dist: scipy ; extra == "full"
51
+ Requires-Dist: seaborn (>=0.13.2)
52
+ Requires-Dist: shap ; extra == "full"
53
+ Requires-Dist: skfolio ; extra == "full"
54
+ Requires-Dist: statsforecast ; extra == "full"
55
+ Requires-Dist: tensorly ; extra == "full"
56
+ Requires-Dist: tqdm (>=4.67.1,<5.0.0)
57
+ Requires-Dist: yachalk (>=0.1.6)
54
58
  Description-Content-Type: text/markdown
55
59
 
56
60
  [![Sovai Python SDK package](https://github.com/sovai-research/SovAI/actions/workflows/main.yml/badge.svg)](https://github.com/sovai-research/SovAI/actions/workflows/main.yml)
@@ -1,10 +1,44 @@
1
- [tool.poetry]
1
+ [build-system]
2
+ requires = ["poetry-core>=1.0.0"]
3
+ build-backend = "poetry.core.masonry.api"
4
+
5
+ [project]
2
6
  name = "sovai"
3
- version = "0.2.51"
7
+ version = "0.2.53"
4
8
  description = "python for asset management"
5
- authors = ["Derek Snow <d.snow@outlook.com>"]
6
- license = "Proprietary License"
9
+ authors = [
10
+ {name = "Derek Snow", email = "d.snow@outlook.com"}
11
+ ]
12
+ license = {text = "Proprietary License"}
7
13
  readme = "README.md"
14
+ requires-python = ">=3.10"
15
+ dependencies = [
16
+ "pandas>=1.0",
17
+ "numpy>=1.20",
18
+ "pyarrow>=5.0",
19
+ "requests>=2.20",
20
+ "python-dateutil>=2.8",
21
+ "python-dotenv>=0.10",
22
+ "polars>=1.2",
23
+ "boto3>=1.20",
24
+ "joblib>=1.0",
25
+ "rapidfuzz>=3.9.7",
26
+ "edgar-tool>=1.3.3",
27
+ "yachalk>=0.1.6",
28
+ "pyvis>=0.3.2",
29
+ "networkx>=3.3",
30
+ "seaborn>=0.13.2",
31
+ "fsspec==2024.10.0",
32
+ "s3fs==2024.10.0",
33
+ "gcsfs==2024.10.0",
34
+ "fastapi-cache>=0.1.0",
35
+ "fastapi-cache2[redis]>=0.2.1",
36
+ "plotly (>=6.0.1,<7.0.0)",
37
+ "tqdm (>=4.67.1,<5.0.0)",
38
+ "ipywidgets (>=8.1.6,<9.0.0)"
39
+ ]
40
+
41
+ [tool.poetry]
8
42
  include = ["sovai/**/*", "data/**/*"]
9
43
  exclude = [
10
44
  "notebooks",
@@ -29,6 +63,7 @@ exclude = [
29
63
  "**/.ipynb_checkpoints",
30
64
  ]
31
65
 
66
+ # Keep Poetry's dependencies section for detailed version specs
32
67
  [tool.poetry.dependencies]
33
68
  python = "^3.10"
34
69
  pandas = ">=1.0"
@@ -44,7 +79,6 @@ rapidfuzz = "^3.9.7"
44
79
  edgar-tool = "^1.3.3"
45
80
  scipy = {version = ">=1.0", optional = true}
46
81
  matplotlib = {version = ">=3.0", optional = true}
47
- plotly = {version = ">=5.0", optional = true}
48
82
  scikit-learn = {version = ">=1.0", optional = true}
49
83
  numba = {version = ">=0.50", optional = true}
50
84
  dash = {version = ">=2.0", optional = true}
@@ -58,20 +92,22 @@ openai = {version = ">=1.0", optional = true}
58
92
  mfles = {version = ">=0.2", optional = true}
59
93
  pexpect = {version = ">=4.9.0", optional = true}
60
94
  lightgbm = {version = ">=4.5.0", optional = true}
61
- ipywidgets = {version = ">=8.1.3", optional = true}
62
95
  polars-talib = {version = "0.1.3", optional = true}
63
96
  dash-bootstrap-components = {version = ">=1.6.0", optional = true}
64
97
  yachalk = "^0.1.6"
65
98
  pyvis = "^0.3.2"
66
99
  networkx = "^3.3"
67
100
  seaborn = "^0.13.2"
68
- s3fs = "^2024.9"
69
- gcsfs = "^2024.9"
101
+ # These three packages must be kept in sync due to strict version dependencies
102
+ # gcsfs and s3fs both require exactly matching fsspec versions
103
+ fsspec = "2024.10.0" # Base filesystem abstraction layer
104
+ s3fs = "2024.10.0" # Depends on fsspec==2024.10.0
105
+ gcsfs = "2024.10.0" # Depends on fsspec==2024.10.0
70
106
  fastapi-cache = "^0.1.0"
71
107
  fastapi-cache2 = {extras = ["redis"], version = "^0.2.1"}
72
108
 
73
109
 
74
- [tool.poetry.extras]
110
+ [project.optional-dependencies]
75
111
  full = [
76
112
  "scipy",
77
113
  "matplotlib",
@@ -103,6 +139,3 @@ traitlets = "^5.14.3"
103
139
  jupyterlab = "^4.2.5"
104
140
  pytest = "^7.0"
105
141
  black = "^22.0"
106
-
107
-
108
- [build-system]
@@ -12,7 +12,11 @@ import warnings
12
12
  warnings.filterwarnings("ignore")
13
13
 
14
14
 
15
- __version__ = "0.1.25"
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
16
20
 
17
21
  # Call the function to ensure tickers data is up-to-date
18
22
  save_or_update_tickers()
@@ -35,4 +39,4 @@ except ImportError as e:
35
39
  __all__ = ['read_key', 'save_key', 'ApiConfig', 'data', 'basic_auth', 'token_auth']
36
40
 
37
41
  if HAS_FULL_INSTALL:
38
- __all__ += ['plot', 'report', 'compute', 'nowcast', 'extension', 'sec_search', 'sec_filing', 'code', 'sec_graph']
42
+ __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