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.
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/PKG-INFO +8 -8
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/pyproject.toml +9 -9
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/__init__.py +7 -1
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/pandas.py +2 -3
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/pyspark.py +6 -3
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/feature_view/base.py +7 -2
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/submit_to_network.py +2 -1
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/local/base.py +9 -4
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/database.py +12 -1
- sdk_seshat_python-0.4.1/seshat/transformer/deriver/__init__.py +25 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/deriver/base.py +90 -210
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pseudo/__init__.py +1 -0
- sdk_seshat_python-0.4.1/seshat/transformer/pseudo/action_gate.py +119 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pseudo/table_existence.py +3 -11
- sdk_seshat_python-0.4.1/seshat/transformer/reducer/base.py +418 -0
- sdk_seshat_python-0.3.16/seshat/transformer/deriver/__init__.py +0 -9
- sdk_seshat_python-0.3.16/seshat/transformer/reducer/base.py +0 -562
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/LICENSE +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/README.md +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/__main__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/data_class/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/classification.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/clustering.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/general/regression.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/recommendation/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/recommendation/diversity.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/evaluation/evaluator/recommendation/ranking.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/feature_view/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/code_inspect.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/job_status.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/setup_project.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/config.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/exceptions.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/lazy_config.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/models.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/README.md-tmpl +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/config.py-tmpl +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/env-templ +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/jobignore-tmpl +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/pyproject._toml-tmpl +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/recommender-jupyter.ipynb-tmpl +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/template/recommender.py-tmpl +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/decorator.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/profiler/format.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/database/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/database/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/exceptions.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/flip_side/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/flip_side/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/local/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/mixins.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/multisource/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/multisource/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/utils/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/source/saver/utils/postgres.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/aggregator/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/aggregator/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/augmenter/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/augmenter/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/deriver/from_database.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/imputer/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/imputer/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/merger/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/merger/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/merger/nested_key.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/branch.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/recommendation/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/pipeline/recommendation/address_pipeline.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/reducer/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/scaler/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/scaler/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/schema/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/schema/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/block/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/block/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/random/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/random/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/time_line/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/splitter/time_line/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/trimmer/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/trimmer/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/base.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/cosine_similarity.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/pivot.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/transformer/vectorizer/utils.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/batcher.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/binary_utils.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/clean_json.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/col_to_list.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/contracts.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/file.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/file_cryptography.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/filter_json.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/grouper.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/jobignore.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/join_columns_to_list.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/join_str.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/llm_client/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/llm_client/chatbot_factory.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/__init__.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/base_logger.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/console_logger.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/logstash_logger.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/logging/multi_logger.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/memory.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/mixin.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/obfuscate.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/package_utils.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/pandas_func.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/patching.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/pyspark_func.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/rest.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/singleton.py +0 -0
- {sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/utils/validation.py +0 -0
- {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
|
+
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.
|
|
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 (
|
|
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.
|
|
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 (
|
|
34
|
-
Requires-Dist: rich (>=
|
|
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.
|
|
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
|
+
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.
|
|
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.
|
|
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 = "^
|
|
24
|
-
boto3 = "^1.
|
|
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 = "
|
|
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,
|
|
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
|
|
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 =
|
|
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
|
|
1
|
+
from typing import Dict, Iterable, List
|
|
2
2
|
|
|
3
3
|
from pandas import DataFrame
|
|
4
|
-
from pyspark.sql import DataFrame as PySparkDataFrame
|
|
4
|
+
from pyspark.sql import DataFrame as PySparkDataFrame
|
|
5
|
+
from pyspark.sql import SparkSession
|
|
5
6
|
|
|
6
|
-
from seshat.data_class import
|
|
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,
|
|
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)
|
{sdk_seshat_python-0.3.16 → sdk_seshat_python-0.4.1}/seshat/general/command/submit_to_network.py
RENAMED
|
@@ -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
|
|
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
|
-
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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
|