sdk-seshat-python 0.3.16__tar.gz → 0.4.1__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 (138) hide show
  1. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/PKG-INFO +8 -8
  2. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/pyproject.toml +9 -9
  3. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/__init__.py +7 -1
  4. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/pandas.py +2 -3
  5. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/pyspark.py +6 -3
  6. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/feature_view/base.py +7 -2
  7. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/submit_to_network.py +2 -1
  8. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/local/base.py +9 -4
  9. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/database.py +12 -1
  10. sdk_seshat_python-0.4.1/seshat/transformer/deriver/__init__.py +25 -0
  11. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/deriver/base.py +90 -210
  12. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pseudo/__init__.py +1 -0
  13. sdk_seshat_python-0.4.1/seshat/transformer/pseudo/action_gate.py +119 -0
  14. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pseudo/table_existence.py +3 -11
  15. sdk_seshat_python-0.4.1/seshat/transformer/reducer/base.py +418 -0
  16. sdk_seshat_python-0.3.16/seshat/transformer/deriver/__init__.py +0 -9
  17. sdk_seshat_python-0.3.16/seshat/transformer/reducer/base.py +0 -562
  18. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/LICENSE +0 -0
  19. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/README.md +0 -0
  20. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/__main__.py +0 -0
  21. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/__init__.py +0 -0
  22. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/base.py +0 -0
  23. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/__init__.py +0 -0
  24. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/base.py +0 -0
  25. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/__init__.py +0 -0
  26. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/base.py +0 -0
  27. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/__init__.py +0 -0
  28. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/classification.py +0 -0
  29. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/clustering.py +0 -0
  30. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/regression.py +0 -0
  31. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/recommendation/__init__.py +0 -0
  32. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/recommendation/diversity.py +0 -0
  33. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/recommendation/ranking.py +0 -0
  34. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/feature_view/__init__.py +0 -0
  35. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/__init__.py +0 -0
  36. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/__init__.py +0 -0
  37. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/base.py +0 -0
  38. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/code_inspect.py +0 -0
  39. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/job_status.py +0 -0
  40. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/setup_project.py +0 -0
  41. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/config.py +0 -0
  42. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/exceptions.py +0 -0
  43. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/lazy_config.py +0 -0
  44. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/models.py +0 -0
  45. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/README.md-tmpl +0 -0
  46. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/config.py-tmpl +0 -0
  47. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/env-templ +0 -0
  48. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/jobignore-tmpl +0 -0
  49. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/pyproject._toml-tmpl +0 -0
  50. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/recommender-jupyter.ipynb-tmpl +0 -0
  51. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/recommender.py-tmpl +0 -0
  52. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/__init__.py +0 -0
  53. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/base.py +0 -0
  54. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/decorator.py +0 -0
  55. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/format.py +0 -0
  56. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/__init__.py +0 -0
  57. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/base.py +0 -0
  58. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/database/__init__.py +0 -0
  59. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/database/base.py +0 -0
  60. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/exceptions.py +0 -0
  61. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/flip_side/__init__.py +0 -0
  62. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/flip_side/base.py +0 -0
  63. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/local/__init__.py +0 -0
  64. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/mixins.py +0 -0
  65. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/multisource/__init__.py +0 -0
  66. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/multisource/base.py +0 -0
  67. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/__init__.py +0 -0
  68. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/base.py +0 -0
  69. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/utils/__init__.py +0 -0
  70. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/utils/postgres.py +0 -0
  71. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/__init__.py +0 -0
  72. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/aggregator/__init__.py +0 -0
  73. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/aggregator/base.py +0 -0
  74. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/augmenter/__init__.py +0 -0
  75. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/augmenter/base.py +0 -0
  76. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/base.py +0 -0
  77. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/deriver/from_database.py +0 -0
  78. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/imputer/__init__.py +0 -0
  79. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/imputer/base.py +0 -0
  80. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/merger/__init__.py +0 -0
  81. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/merger/base.py +0 -0
  82. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/merger/nested_key.py +0 -0
  83. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/__init__.py +0 -0
  84. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/base.py +0 -0
  85. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/branch.py +0 -0
  86. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/recommendation/__init__.py +0 -0
  87. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/recommendation/address_pipeline.py +0 -0
  88. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/reducer/__init__.py +0 -0
  89. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/scaler/__init__.py +0 -0
  90. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/scaler/base.py +0 -0
  91. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/schema/__init__.py +0 -0
  92. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/schema/base.py +0 -0
  93. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/__init__.py +0 -0
  94. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/base.py +0 -0
  95. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/block/__init__.py +0 -0
  96. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/block/base.py +0 -0
  97. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/random/__init__.py +0 -0
  98. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/random/base.py +0 -0
  99. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/time_line/__init__.py +0 -0
  100. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/time_line/base.py +0 -0
  101. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/trimmer/__init__.py +0 -0
  102. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/trimmer/base.py +0 -0
  103. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/__init__.py +0 -0
  104. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/base.py +0 -0
  105. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/cosine_similarity.py +0 -0
  106. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/pivot.py +0 -0
  107. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/utils.py +0 -0
  108. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/__init__.py +0 -0
  109. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/batcher.py +0 -0
  110. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/binary_utils.py +0 -0
  111. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/clean_json.py +0 -0
  112. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/col_to_list.py +0 -0
  113. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/contracts.py +0 -0
  114. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/file.py +0 -0
  115. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/file_cryptography.py +0 -0
  116. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/filter_json.py +0 -0
  117. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/grouper.py +0 -0
  118. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/jobignore.py +0 -0
  119. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/join_columns_to_list.py +0 -0
  120. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/join_str.py +0 -0
  121. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/llm_client/__init__.py +0 -0
  122. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/llm_client/chatbot_factory.py +0 -0
  123. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/__init__.py +0 -0
  124. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/base_logger.py +0 -0
  125. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/console_logger.py +0 -0
  126. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/logstash_logger.py +0 -0
  127. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/multi_logger.py +0 -0
  128. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/memory.py +0 -0
  129. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/mixin.py +0 -0
  130. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/obfuscate.py +0 -0
  131. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/package_utils.py +0 -0
  132. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/pandas_func.py +0 -0
  133. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/patching.py +0 -0
  134. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/pyspark_func.py +0 -0
  135. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/rest.py +0 -0
  136. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/singleton.py +0 -0
  137. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/validation.py +0 -0
  138. {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/zip_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sdk-seshat-python
3
- Version: 0.3.16
3
+ Version: 0.4.1
4
4
  Summary: Seshat python SDK is a library to help create ML data pipelines.
5
5
  License: Commercial - see LICENSE.txt
6
6
  Author: SeshatLabs
@@ -13,29 +13,29 @@ Provides-Extra: flipside-support
13
13
  Provides-Extra: postgres-support
14
14
  Requires-Dist: backoff (>=2.2.1,<3.0.0)
15
15
  Requires-Dist: bokeh (>=3.6.0,<4.0.0)
16
- Requires-Dist: boto3 (>=1.35.68,<2.0.0)
16
+ Requires-Dist: boto3 (>=1.39.4,<2.0.0)
17
17
  Requires-Dist: croniter (>=6.0.0,<7.0.0)
18
18
  Requires-Dist: cryptography (>=44.0.0,<45.0.0)
19
19
  Requires-Dist: dask[array,complete,dataframe,distributed] (>=2024.10.0,<2025.0.0)
20
20
  Requires-Dist: flipside (>=2.1.0,<3.0.0) ; extra == "flipside-support"
21
21
  Requires-Dist: langchain (>=0.3.23,<0.4.0)
22
22
  Requires-Dist: langchain-community (>=0.3.21,<0.4.0)
23
- Requires-Dist: langchain-openai (>=0.3.12,<0.4.0)
23
+ Requires-Dist: langchain-openai (==0.3.28)
24
24
  Requires-Dist: loguru (>=0.7.3,<0.8.0)
25
25
  Requires-Dist: memory-profiler (>=0.61.0,<0.62.0)
26
26
  Requires-Dist: openai (>=1.73.0,<2.0.0)
27
- Requires-Dist: pandas (>=2.2.1,<3.0.0)
28
- Requires-Dist: psycopg2 (>=2.9,<3.0) ; extra == "postgres-support"
27
+ Requires-Dist: pandas (>=2.3.1,<3.0.0)
28
+ Requires-Dist: psycopg2-binary (>=2.9,<3.0) ; extra == "postgres-support"
29
29
  Requires-Dist: pyarmor (>=8.5.1,<9.0.0)
30
30
  Requires-Dist: pydantic (>=2.7.4,<3.0.0)
31
31
  Requires-Dist: pyspark (>=3.5.1,<4.0.0)
32
32
  Requires-Dist: python-logstash-async (>=4.0.2,<5.0.0)
33
- Requires-Dist: requests (==2.32.0)
34
- Requires-Dist: rich (>=13.9.4,<14.0.0)
33
+ Requires-Dist: requests (>=2.32.0,<3.0.0)
34
+ Requires-Dist: rich (>=14.0.0,<15.0.0)
35
35
  Requires-Dist: scikit-learn (>=1.4.1.post1,<2.0.0)
36
36
  Requires-Dist: sqlalchemy (>=2.0.29,<3.0.0)
37
37
  Requires-Dist: toml (>=0.10.2,<0.11.0)
38
- Requires-Dist: typer (>=0.12.3,<0.13.0)
38
+ Requires-Dist: typer (>=0.16.0,<0.17.0)
39
39
  Description-Content-Type: text/markdown
40
40
 
41
41
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "sdk-seshat-python"
3
- version = "0.3.16"
3
+ version = "0.4.1"
4
4
  description = "Seshat python SDK is a library to help create ML data pipelines."
5
5
  authors = ["SeshatLabs <info@seshatlabs.xyz>"]
6
6
  packages = [{ include = "seshat", from = "." }]
@@ -10,19 +10,19 @@ license = "Commercial - see LICENSE.txt"
10
10
 
11
11
  [tool.poetry.dependencies]
12
12
  python = "^3.11"
13
- pandas = "^2.2.1"
13
+ pandas = "^2.3.1"
14
14
  scikit-learn = "^1.4.1.post1"
15
15
  pyspark = "^3.5.1"
16
16
  flipside = "^2.1.0"
17
17
  sqlalchemy = "^2.0.29"
18
18
  memory-profiler = "^0.61.0"
19
- typer = "^0.12.3"
19
+ typer = "^0.16.0"
20
20
  dask = {extras = ["array", "complete", "dataframe", "distributed"], version = "^2024.10.0"}
21
21
  bokeh = "^3.6.0"
22
22
  toml = "^0.10.2"
23
- rich = "^13.9.4"
24
- boto3 = "^1.35.68"
25
- requests = "2.32.0"
23
+ rich = "^14.0.0"
24
+ boto3 = "^1.39.4"
25
+ requests = "^2.32.0"
26
26
  backoff = "^2.2.1"
27
27
  cryptography = "^44.0.0"
28
28
  loguru = "^0.7.3"
@@ -30,15 +30,15 @@ openai = "^1.73.0"
30
30
  pydantic = "^2.7.4"
31
31
  langchain = "^0.3.23"
32
32
  langchain-community = "^0.3.21"
33
- langchain-openai = "^0.3.12"
33
+ langchain-openai = "0.3.28"
34
34
  pyarmor = "^8.5.1"
35
35
  croniter = "^6.0.0"
36
- psycopg2 = { version = "^2.9", optional = true }
36
+ psycopg2-binary = { version = "^2.9", optional = true }
37
37
  python-logstash-async = "^4.0.2"
38
38
 
39
39
  [tool.poetry.extras]
40
40
  flipside_support = ["flipside"]
41
- postgres_support = ["psycopg2"]
41
+ postgres_support = ["psycopg2-binary"]
42
42
 
43
43
  [tool.poetry.group.dev.dependencies]
44
44
  flake8 = "^7.0.0"
@@ -20,6 +20,7 @@ from seshat.general.exceptions import NoConfigSetError, RestClientException
20
20
  app = typer.Typer()
21
21
  console = Console()
22
22
  DEFAULT_DATA_SIZE = 1_000_000 # 1 GB
23
+ DEFAULT_EXPIRATION = 86400
23
24
 
24
25
  state = {"verbose": False}
25
26
 
@@ -141,7 +142,12 @@ def submit_job(
141
142
  identifier = manager.store_code(package)
142
143
 
143
144
  job_response = manager.submit_job(
144
- identifier, name, version, executor_image_tag, job_metadata
145
+ identifier,
146
+ name,
147
+ version,
148
+ executor_image_tag,
149
+ job_metadata,
150
+ expiration=config.get("aws", {}).get("expiration", DEFAULT_EXPIRATION),
145
151
  )
146
152
  job_response_data = job_response.get("data", {})
147
153
 
@@ -1,10 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Iterable, List, Dict
3
+ from typing import Dict, Iterable, List
4
4
 
5
5
  import pandas as pd
6
6
  from pandas import DataFrame
7
- from pyspark.sql import SparkSession
8
7
 
9
8
  from seshat.data_class import SFrame
10
9
  from seshat.data_class.base import GroupSFrame
@@ -33,7 +32,7 @@ class DFrame(SFrame):
33
32
  def to_spf(self) -> SFrame:
34
33
  from seshat.data_class import SPFrame
35
34
 
36
- spark = SparkSession.builder.appName(configs.SPARK_APP_NAME).getOrCreate()
35
+ spark = SPFrame.get_spark()
37
36
  return SPFrame.from_raw(spark.createDataFrame(self.data))
38
37
 
39
38
  def extend_vertically(self, other: DataFrame):
@@ -1,9 +1,10 @@
1
- from typing import Iterable, List, Dict
1
+ from typing import Dict, Iterable, List
2
2
 
3
3
  from pandas import DataFrame
4
- from pyspark.sql import DataFrame as PySparkDataFrame, SparkSession
4
+ from pyspark.sql import DataFrame as PySparkDataFrame
5
+ from pyspark.sql import SparkSession
5
6
 
6
- from seshat.data_class import SFrame, DFrame
7
+ from seshat.data_class import DFrame, SFrame
7
8
  from seshat.data_class.base import GroupSFrame
8
9
  from seshat.general import configs
9
10
 
@@ -56,6 +57,8 @@ class SPFrame(SFrame):
56
57
  def from_raw(cls, data, *args, **kwargs) -> "SPFrame":
57
58
  if isinstance(data, DataFrame):
58
59
  data = DFrame.from_raw(data).convert(cls).to_raw()
60
+ elif not isinstance(data, PySparkDataFrame) and data:
61
+ data = cls.get_spark().createDataFrame(data or [])
59
62
  return cls(data)
60
63
 
61
64
  @staticmethod
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Dict, Callable
2
+ from typing import Callable, Dict, Optional
3
3
 
4
4
  from seshat.data_class import SFrame
5
5
  from seshat.evaluation.base import Evaluation
@@ -7,6 +7,7 @@ from seshat.profiler import ProfileConfig
7
7
  from seshat.profiler.base import profiler
8
8
  from seshat.source import Source
9
9
  from seshat.source.saver import Saver
10
+ from seshat.transformer.base import Transformer
10
11
  from seshat.transformer.pipeline import Pipeline
11
12
  from seshat.transformer.splitter import Splitter
12
13
 
@@ -36,7 +37,8 @@ class FeatureView:
36
37
  saver : Saver, optional
37
38
  An optional component responsible for saving the processed data during training
38
39
  Required only in offline mode.
39
-
40
+ on_save_finished : Transformer, Optional
41
+ A Transformer to be called after the save operation completes.
40
42
  Examples
41
43
  --------
42
44
  Define feature view:
@@ -81,6 +83,7 @@ class FeatureView:
81
83
  saver: Saver = None
82
84
  profile_config = ProfileConfig(logging.INFO, default_tracking=True)
83
85
  evaluation: Evaluation
86
+ on_save_finished: Optional[Transformer] = None
84
87
 
85
88
  def __call__(self, *args, **kwargs):
86
89
  source = self._get_source()
@@ -143,6 +146,8 @@ class FeatureView:
143
146
  if hasattr(self, "splitter")
144
147
  else self.saver(self.data)
145
148
  )
149
+ if self.on_save_finished is not None:
150
+ self.on_save_finished(self.data)
146
151
 
147
152
  def _split(self, *args, **kwargs):
148
153
  self.split_data = self.splitter(self.data, *args, **kwargs)
@@ -313,6 +313,7 @@ class SubmitCommand(BaseTyperCommand):
313
313
  version: str,
314
314
  executor_image_tag: str,
315
315
  metadata: JobMetadata,
316
+ expiration=86400,
316
317
  ) -> dict:
317
318
  """Submit job to API after successful upload"""
318
319
  if not self.job_config.base_url or not self.job_config.auth_token:
@@ -320,7 +321,7 @@ class SubmitCommand(BaseTyperCommand):
320
321
  "API configuration missing. Please set base_url and auth_token"
321
322
  )
322
323
 
323
- presigned_url = self.backend.generate_presigned_url(s3_key)
324
+ presigned_url = self.backend.generate_presigned_url(s3_key, expiration)
324
325
  executor_label = self.config.get("executor", {}).get("label")
325
326
 
326
327
  payload = {
@@ -5,24 +5,29 @@ from seshat.source import Source
5
5
 
6
6
  class LocalSource(Source):
7
7
  """
8
- LocalSource is a source that can read data from csv file.
8
+ LocalSource is a data source that can read from a local file or an in-memory source.
9
9
  """
10
10
 
11
11
  def __init__(
12
12
  self,
13
- path,
13
+ data_source,
14
14
  query=None,
15
15
  schema=None,
16
16
  mode=configs.DEFAULT_MODE,
17
17
  ):
18
18
  super().__init__(query, schema, mode)
19
- self.path = path
19
+ self.data_source = data_source
20
20
 
21
21
  def convert_data_type(self, data) -> SFrame:
22
22
  return self.data_class.from_raw(data)
23
23
 
24
24
  def fetch(self) -> SFrame:
25
- d = self.data_class.read_csv(path=self.path)
25
+ d = (
26
+ self.data_class.read_csv(path=self.data_source)
27
+ if isinstance(self.data_source, str)
28
+ else self.data_source
29
+ )
30
+
26
31
  return self.convert_data_type(d)
27
32
 
28
33
  def calculate_complexity(self):
@@ -35,7 +35,13 @@ class SQLDBSaver(SQLMixin, Saver):
35
35
  self.create_index(config)
36
36
 
37
37
  selected_sf = sf.get(config.sf_key)
38
- selected_sf = self.drop_nan_ids(selected_sf, config.schema)
38
+ has_id = False
39
+ for col in config.schema.cols:
40
+ if col.is_id:
41
+ has_id = True
42
+ break
43
+ if has_id:
44
+ selected_sf = self.drop_nan_ids(selected_sf, config.schema)
39
45
 
40
46
  if config.clear_table:
41
47
  self.delete(config.table)
@@ -65,6 +71,11 @@ class SQLDBSaver(SQLMixin, Saver):
65
71
  table, _ = self.get_table(table_name, autoload=True)
66
72
  self.write_on_db(table.delete())
67
73
 
74
+ def drop_table(self, table_name):
75
+ if table_name in inspect(self.get_engine()).get_table_names():
76
+ table, _ = self.get_table(table_name, autoload=True)
77
+ table.drop(self.get_engine())
78
+
68
79
  def insert(self, selected_sf: SFrame, config: SaveConfig):
69
80
  values = self.prepare_sf_to_insert(selected_sf, config).to_dict()
70
81
  table, _ = self.get_table(config.table, autoload=True)
@@ -0,0 +1,25 @@
1
+ from .base import (
2
+ FeatureForAddressDeriver,
3
+ InteractedSymbolsToSentenceDeriver,
4
+ OperationOnColsDeriver,
5
+ PercentileTransactionValueDeriver,
6
+ SFrameFromColsDeriver,
7
+ StaticValueColumnAdder,
8
+ TimeWindowTransformer,
9
+ FractionDeriver,
10
+ ProfitLossDeriver,
11
+ DateTimeTypeDeriver,
12
+ ComprehensiveFeaturesDeriver,
13
+ GroupByDeriverCount,
14
+ GroupByDeriverMeanMax,
15
+ ChangingOverTimeDeriver,
16
+ TokenLastPriceDeriver,
17
+ GroupByTimeWindowDeriver,
18
+ OneColumnPercentileFilterDeriver,
19
+ SenderReceiverTokensDeriver,
20
+ TokenPriceDeriver,
21
+ TokenSwapTradeDeriver,
22
+ TokenFeatureTransformationDeriver,
23
+ )
24
+
25
+ from .from_database import FromSQLDBDeriver