ep-sdk-4pd 0.1.0__tar.gz → 0.1.2__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ep_sdk_4pd
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: 4paradigm Electricity Platform Service SDK Library for Python
5
5
  Home-page: https://gitlab.4pd.io/electricityproject/electricity-platform-sdk
6
6
  Author: 4paradigm Electricity Platform SDK
@@ -0,0 +1 @@
1
+ __version__ = '0.1.2'
@@ -0,0 +1,108 @@
1
+ import json
2
+
3
+ import requests
4
+
5
+ from ep_sdk_4pd import models as ep_sdk_4pd_models
6
+ from ep_sdk_4pd.models import HistoryDataRequest, PredictDataRequest
7
+
8
+ # test 地址
9
+ endpoint = 'http://172.27.88.56:6001'
10
+
11
+
12
+ # prod 地址
13
+ # endpoint = 'http://82.157.231.254:6001'
14
+
15
+ class EpData:
16
+
17
+ @staticmethod
18
+ def get_history_data(
19
+ scope,
20
+ system_date,
21
+ days
22
+ ):
23
+ request = HistoryDataRequest(
24
+ scope=scope,
25
+ system_date=system_date,
26
+ days=days,
27
+ )
28
+ response = EpData.history_data(request=request)
29
+
30
+ if response.code == 200:
31
+ return response.data
32
+ else:
33
+ return None
34
+
35
+ @staticmethod
36
+ def history_data(
37
+ request: ep_sdk_4pd_models.HistoryDataRequest = None,
38
+ ) -> ep_sdk_4pd_models.HistoryDataResponse:
39
+
40
+ full_url = f'{endpoint}{request.api}'
41
+ headers = {
42
+ 'content-type': request.content_type,
43
+ }
44
+
45
+ payload = {
46
+ 'scope': request.scope,
47
+ 'system_date': request.system_date,
48
+ 'days': request.days
49
+ }
50
+
51
+ response = requests.request(
52
+ method=request.method,
53
+ url=full_url,
54
+ headers=headers,
55
+ data=json.dumps(payload),
56
+ )
57
+
58
+ base_resp = ep_sdk_4pd_models.BaseResponse(
59
+ code=response.json().get('code', None),
60
+ data=response.json().get('data', None),
61
+ message=response.json().get('message', None),
62
+ )
63
+ return ep_sdk_4pd_models.HistoryDataResponse(response=base_resp)
64
+
65
+ @staticmethod
66
+ def get_predict_data(
67
+ scope,
68
+ system_date
69
+ ):
70
+ request = PredictDataRequest(
71
+ scope=scope,
72
+ system_date=system_date,
73
+ )
74
+ response = EpData.predict_data(request=request)
75
+
76
+ if response.code == 200:
77
+ return response.data
78
+ else:
79
+ return None
80
+
81
+ @staticmethod
82
+ def predict_data(
83
+ request: ep_sdk_4pd_models.PredictDataRequest = None,
84
+ ) -> ep_sdk_4pd_models.PredictDataResponse:
85
+
86
+ full_url = f'{endpoint}{request.api}'
87
+ headers = {
88
+ 'content-type': request.content_type,
89
+ }
90
+
91
+ payload = {
92
+ 'scope': request.scope,
93
+ 'system_date': request.system_date
94
+ }
95
+
96
+ response = requests.request(
97
+ method=request.method,
98
+ url=full_url,
99
+ headers=headers,
100
+ data=json.dumps(payload),
101
+ )
102
+
103
+ base_resp = ep_sdk_4pd_models.BaseResponse(
104
+ code=response.json().get('code', None),
105
+ data=response.json().get('data', None),
106
+ message=response.json().get('message', None),
107
+ )
108
+ return ep_sdk_4pd_models.PredictDataResponse(response=base_resp)
@@ -0,0 +1,121 @@
1
+ import json
2
+ import logging
3
+ import os
4
+
5
+ import requests
6
+
7
+ from ep_sdk_4pd import models as ep_sdk_4pd_models
8
+ from datetime import datetime
9
+
10
+ from ep_sdk_4pd.models import ModelOutputDirRequest, RunStrategyRequest
11
+
12
+ # test 地址
13
+ endpoint = 'http://172.27.88.56:6001'
14
+
15
+
16
+ # prod 地址
17
+ # endpoint = 'http://82.157.231.254:6001'
18
+
19
+ class EpSystem:
20
+
21
+ @staticmethod
22
+ def model_output_dir(is_online: bool = False):
23
+ if is_online:
24
+ # 从环境变量中获取策略id
25
+ strategy_id = os.getenv('STRATEGY_ID')
26
+ logging.info(f'strategy_id: {strategy_id}')
27
+
28
+ if strategy_id is None:
29
+ raise Exception('STRATEGY_ID is not set')
30
+ else:
31
+ # 线下环境,给固定的策略id
32
+ strategy_id = 63
33
+ request = ModelOutputDirRequest(strategy_id=strategy_id)
34
+ full_url = f'{endpoint}{request.api}'
35
+ headers = {
36
+ 'content-type': request.content_type,
37
+ }
38
+
39
+ payload = {
40
+ 'strategy_id': request.strategy_id
41
+ }
42
+
43
+ response = requests.request(
44
+ method=request.method,
45
+ url=full_url,
46
+ headers=headers,
47
+ data=json.dumps(payload),
48
+ )
49
+
50
+ base_resp = ep_sdk_4pd_models.BaseResponse(
51
+ code=response.json().get('code', None),
52
+ data=response.json().get('data', None),
53
+ message=response.json().get('message', None),
54
+ )
55
+ response = ep_sdk_4pd_models.ModelOutputDirResponse(response=base_resp)
56
+
57
+ if response.code == 200:
58
+ return response.data
59
+ else:
60
+ return None
61
+
62
+ @staticmethod
63
+ def get_system_date(is_online: bool = False):
64
+ """
65
+ 脚本每次预测的目标日,主要是拦截用户获取越界数据,用户不可修改
66
+ """
67
+ if is_online:
68
+ # 线上环境,随着真实调用运行时间变化
69
+ system_date = datetime.now().strftime('%Y-%m-%d')
70
+ else:
71
+ # 线下环境
72
+ system_date = "2024-12-31"
73
+
74
+ return system_date
75
+
76
+ @staticmethod
77
+ def get_run_strategy(is_online: bool = False):
78
+ """
79
+ 获取此刻运行的策略模型基础信息
80
+ :param is_online:
81
+ :return:
82
+ """
83
+ if is_online:
84
+ # 从环境变量中获取策略id
85
+ strategy_id = os.getenv('STRATEGY_ID')
86
+ logging.info(f'strategy_id: {strategy_id}')
87
+
88
+ if strategy_id is None:
89
+ raise Exception('STRATEGY_ID is not set')
90
+ else:
91
+ # 线下环境,给固定的策略id
92
+ strategy_id = 56
93
+
94
+ request = RunStrategyRequest(strategy_id=strategy_id)
95
+ full_url = f'{endpoint}{request.api}'
96
+ headers = {
97
+ 'content-type': request.content_type,
98
+ }
99
+
100
+ payload = {
101
+ 'strategy_id': request.strategy_id
102
+ }
103
+
104
+ response = requests.request(
105
+ method=request.method,
106
+ url=full_url,
107
+ headers=headers,
108
+ data=json.dumps(payload),
109
+ )
110
+
111
+ base_resp = ep_sdk_4pd_models.BaseResponse(
112
+ code=response.json().get('code', None),
113
+ data=response.json().get('data', None),
114
+ message=response.json().get('message', None),
115
+ )
116
+ response = ep_sdk_4pd_models.RunStrategyResponse(response=base_resp)
117
+
118
+ if response.code == 200:
119
+ return response.data
120
+ else:
121
+ return None
@@ -0,0 +1,171 @@
1
+ class BaseRequest:
2
+ """
3
+ Model for BaseRequest
4
+ """
5
+
6
+ def __init__(self):
7
+ self.api = None
8
+ self.method = None
9
+ self.content_type = None
10
+ self.payload = None
11
+
12
+
13
+ class BaseResponse:
14
+ """
15
+ Model for BaseResponse
16
+ """
17
+
18
+ def __init__(
19
+ self, code: int = None, data: dict = None, message: str = None, **kwargs
20
+ ):
21
+ self.code = code
22
+ self.data = data
23
+ self.message = message
24
+
25
+
26
+ class HistoryDataRequest(BaseRequest):
27
+ """
28
+ Model for HistoryDataRequest
29
+
30
+ 获取具体系统时间往前x天的数据(最晚时间为系统时间 D-2)
31
+ 特别注意:get_history_data 或 get_predict_data 会get_system_date进行检测,不可获取system_date以后得数据,避免数据穿越现象
32
+ """
33
+
34
+ def __init__(self, scope: str = None, system_date: str = None, days: int = None):
35
+ """
36
+ Args:
37
+ scope: "weather","plant","market"
38
+ system_date: 系统时间
39
+ days: 表示systemDate之前days的数据
40
+ """
41
+
42
+ self.scope = scope
43
+ self.system_date = system_date
44
+ self.days = days
45
+
46
+ super().__init__()
47
+ self.api = f'/ep/api/sdk/get_history_data'
48
+ self.method = 'POST'
49
+ self.content_type = 'application/json'
50
+
51
+
52
+ class HistoryDataResponse(BaseResponse):
53
+ """
54
+ Model for HistoryDataResponse
55
+ """
56
+
57
+ def __init__(self, response: BaseResponse = None, **kwargs):
58
+ super().__init__(
59
+ code=response.code if response else None,
60
+ data=response.data if response else None,
61
+ message=response.message if response else None,
62
+ **kwargs,
63
+ )
64
+
65
+ class PredictDataRequest(BaseRequest):
66
+ """
67
+ Model for PredictDataRequest
68
+
69
+ 获取当前系统时间的预测数据(按照抓取时间,最晚时间为当前系统时间的d-1
70
+ """
71
+
72
+ def __init__(self, scope: str = None, system_date: str = None):
73
+ """
74
+ Args:
75
+ scope: "weather","market"
76
+ system_date: 系统时间
77
+ """
78
+
79
+ self.scope = scope
80
+ self.system_date = system_date
81
+
82
+ super().__init__()
83
+ self.api = f'/ep/api/sdk/get_predict_data'
84
+ self.method = 'POST'
85
+ self.content_type = 'application/json'
86
+
87
+
88
+ class PredictDataResponse(BaseResponse):
89
+ """
90
+ Model for PredictDataResponse
91
+ """
92
+
93
+ def __init__(self, response: BaseResponse = None, **kwargs):
94
+ super().__init__(
95
+ code=response.code if response else None,
96
+ data=response.data if response else None,
97
+ message=response.message if response else None,
98
+ **kwargs,
99
+ )
100
+
101
+ class ModelOutputDirRequest(BaseRequest):
102
+ """
103
+ Model for ModelOutputDirRequest
104
+
105
+ 输出各策略的存放位置
106
+ 输入:
107
+ 线上环境:
108
+ ${user.home}/strategyId/
109
+
110
+ 本地测试:
111
+ ${user.home}/test/
112
+ """
113
+
114
+ def __init__(self, strategy_id: int = None):
115
+ """
116
+ Args:
117
+ strategy_id: 是否线上环境
118
+ """
119
+ self.strategy_id = strategy_id
120
+
121
+ super().__init__()
122
+ self.api = f'/ep/api/sdk/model_output_dir'
123
+ self.method = 'POST'
124
+ self.content_type = 'application/json'
125
+
126
+
127
+ class ModelOutputDirResponse(BaseResponse):
128
+ """
129
+ Model for ModelOutputDirResponse
130
+ """
131
+
132
+ def __init__(self, response: BaseResponse = None, **kwargs):
133
+ super().__init__(
134
+ code=response.code if response else None,
135
+ data=response.data if response else None,
136
+ message=response.message if response else None,
137
+ **kwargs,
138
+ )
139
+
140
+ class RunStrategyRequest(BaseRequest):
141
+ """
142
+ Model for RunStrategyRequest
143
+
144
+ 获取此刻运行的策略模型基础信息
145
+ """
146
+
147
+ def __init__(self, strategy_id: int = None):
148
+ """
149
+ Args:
150
+ strategy_id: 策略 id
151
+ """
152
+ self.strategy_id = strategy_id
153
+
154
+ super().__init__()
155
+ self.api = f'/ep/api/sdk/get_run_strategy'
156
+ self.method = 'POST'
157
+ self.content_type = 'application/json'
158
+
159
+
160
+ class RunStrategyResponse(BaseResponse):
161
+ """
162
+ Model for RunStrategyResponse
163
+ """
164
+
165
+ def __init__(self, response: BaseResponse = None, **kwargs):
166
+ super().__init__(
167
+ code=response.code if response else None,
168
+ data=response.data if response else None,
169
+ message=response.message if response else None,
170
+ **kwargs,
171
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ep_sdk_4pd
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: 4paradigm Electricity Platform Service SDK Library for Python
5
5
  Home-page: https://gitlab.4pd.io/electricityproject/electricity-platform-sdk
6
6
  Author: 4paradigm Electricity Platform SDK
@@ -1,11 +1,16 @@
1
1
  README.md
2
2
  setup.py
3
3
  ep_sdk_4pd/__init__.py
4
- ep_sdk_4pd/client.py
4
+ ep_sdk_4pd/ep_data.py
5
+ ep_sdk_4pd/ep_system.py
5
6
  ep_sdk_4pd/models.py
6
7
  ep_sdk_4pd.egg-info/PKG-INFO
7
8
  ep_sdk_4pd.egg-info/SOURCES.txt
8
9
  ep_sdk_4pd.egg-info/dependency_links.txt
9
10
  ep_sdk_4pd.egg-info/requires.txt
10
11
  ep_sdk_4pd.egg-info/top_level.txt
11
- tests/test_history_data.py
12
+ tests/test_get_run_strategy.py
13
+ tests/test_get_system_date.py
14
+ tests/test_history_data.py
15
+ tests/test_model_output_dir.py
16
+ tests/test_predict_data.py
@@ -8,7 +8,7 @@ DESCRIPTION = '4paradigm Electricity Platform Service SDK Library for Python'
8
8
  AUTHOR = '4paradigm Electricity Platform SDK'
9
9
  AUTHOR_EMAIL = ''
10
10
  URL = 'https://gitlab.4pd.io/electricityproject/electricity-platform-sdk'
11
- VERSION = '0.1.0'
11
+ VERSION = '0.1.2'
12
12
  REQUIRES = ['requests']
13
13
 
14
14
  LONG_DESCRIPTION = ''
@@ -0,0 +1,14 @@
1
+ from ep_sdk_4pd.ep_data import EpData
2
+ from ep_sdk_4pd.ep_system import EpSystem
3
+
4
+
5
+ def test_get_run_strategy():
6
+ print('-------------test_get_run_strategy-------------')
7
+
8
+ data = EpSystem.get_run_strategy(is_online=False)
9
+ print(data)
10
+ print('-------------------------------------')
11
+
12
+
13
+ if __name__ == '__main__':
14
+ test_get_run_strategy()
@@ -0,0 +1,13 @@
1
+ from ep_sdk_4pd.ep_system import EpSystem
2
+
3
+
4
+ def test_get_system_date():
5
+ print('-------------test_get_system_date-------------')
6
+
7
+ target_date = EpSystem.get_system_date(is_online=True)
8
+ print(target_date)
9
+ print('-------------------------------------')
10
+
11
+
12
+ if __name__ == '__main__':
13
+ test_get_system_date()
@@ -0,0 +1,13 @@
1
+ from ep_sdk_4pd.ep_data import EpData
2
+
3
+
4
+ def test_history_data():
5
+ print('-------------test_history_data-------------')
6
+
7
+ data = EpData.get_history_data(scope="weather", system_date="2025-04-17", days=2)
8
+ print(data)
9
+ print('-------------------------------------')
10
+
11
+
12
+ if __name__ == '__main__':
13
+ test_history_data()
@@ -0,0 +1,13 @@
1
+ from ep_sdk_4pd.ep_system import EpSystem
2
+
3
+
4
+ def test_model_output_dir():
5
+ print('-------------test_model_output_dir-------------')
6
+
7
+ data = EpSystem.model_output_dir(is_online=False)
8
+ print(data)
9
+ print('-------------------------------------')
10
+
11
+
12
+ if __name__ == '__main__':
13
+ test_model_output_dir()
@@ -0,0 +1,13 @@
1
+ from ep_sdk_4pd.ep_data import EpData
2
+
3
+
4
+ def test_predict_data():
5
+ print('-------------test_predict_data-------------')
6
+
7
+ data = EpData.get_predict_data(scope="weather", system_date="2025-04-15")
8
+ print(data)
9
+ print('-------------------------------------')
10
+
11
+
12
+ if __name__ == '__main__':
13
+ test_predict_data()
@@ -1 +0,0 @@
1
- __version__ = '0.1.0'
@@ -1,51 +0,0 @@
1
- import json
2
-
3
- import requests
4
-
5
- from ep_sdk_4pd import models as ep_sdk_4pd_models
6
-
7
-
8
- class Client:
9
- def __init__(
10
- self,
11
- config: ep_sdk_4pd_models.Config,
12
- ):
13
- self._endpoint = config.endpoint
14
-
15
-
16
- # def __get_endpoint(self) -> None:
17
- # # test 地址
18
- # self._endpoint = 'http://172.27.88.56:6001'
19
- # # prod 地址
20
- # # self._endpoint = 'http://82.157.231.254:6001'
21
-
22
- def history_data(
23
- self,
24
- request: ep_sdk_4pd_models.HistoryDataRequest = None,
25
- ) -> ep_sdk_4pd_models.HistoryDataResponse:
26
-
27
-
28
- full_url = f'{self._endpoint}{request.api}'
29
- headers = {
30
- 'content-type': request.content_type,
31
- }
32
-
33
- payload = {
34
- 'scope': request.scope,
35
- 'system_date': request.system_date,
36
- 'days': request.days
37
- }
38
-
39
- response = requests.request(
40
- method=request.method,
41
- url=full_url,
42
- headers=headers,
43
- data=json.dumps(payload),
44
- )
45
-
46
- base_resp = ep_sdk_4pd_models.BaseResponse(
47
- code=response.json().get('code', None),
48
- data=response.json().get('data', None),
49
- message=response.json().get('message', None),
50
- )
51
- return ep_sdk_4pd_models.HistoryDataResponse(response=base_resp)
@@ -1,98 +0,0 @@
1
- class Config:
2
- """
3
- Model for initing client
4
- """
5
-
6
- def __init__(
7
- self,
8
- ):
9
- # test 地址
10
- self.endpoint = 'http://172.27.88.56:6001'
11
- # prod 地址
12
- # self.endpoint = 'http://82.157.231.254:6001'
13
-
14
-
15
- class BaseRequest:
16
- """
17
- Model for BaseRequest
18
- """
19
-
20
- def __init__(self):
21
- self.api = None
22
- self.method = None
23
- self.content_type = None
24
- self.payload = None
25
-
26
-
27
- class BaseResponse:
28
- """
29
- Model for BaseResponse
30
- """
31
-
32
- def __init__(
33
- self, code: int = None, data: dict = None, message: str = None, **kwargs
34
- ):
35
- self.code = code
36
- self.data = data
37
- self.message = message
38
-
39
-
40
- class TestRequest(BaseRequest):
41
-
42
- def __init__(self):
43
- super().__init__()
44
- self.api = '/ai/cpp/api/v1/audio-language-detection/test'
45
- self.method = 'POST'
46
- self.content_type = 'application/json'
47
- self.payload = {}
48
-
49
-
50
- class TestResponse(BaseResponse):
51
-
52
- def __init__(self, response: BaseResponse = None, **kwargs):
53
- super().__init__(
54
- code=response.code if response else None,
55
- data=response.data if response else None,
56
- message=response.message if response else None,
57
- **kwargs,
58
- )
59
-
60
-
61
- class HistoryDataRequest(BaseRequest):
62
- """
63
- Model for HistoryDataRequest
64
-
65
- 获取具体系统时间往前x天的数据(最晚时间为系统时间 D-2)
66
- 特别注意:get_history_data 或 get_predict_data 会get_system_date进行检测,不可获取system_date以后得数据,避免数据穿越现象
67
- """
68
-
69
- def __init__(self, scope: str = None, system_date: str = None, days: int = None):
70
- """
71
- Args:
72
- scope: "weather","plant","market"
73
- system_date: 系统时间
74
- days: 表示systemDate之前days的数据
75
- """
76
-
77
- self.scope = scope
78
- self.system_date = system_date
79
- self.days = days
80
-
81
- super().__init__()
82
- self.api = f'/ep/api/sdk/get_history_data'
83
- self.method = 'POST'
84
- self.content_type = 'application/json'
85
-
86
-
87
- class HistoryDataResponse(BaseResponse):
88
- """
89
- Model for HistoryDataResponse
90
- """
91
-
92
- def __init__(self, response: BaseResponse = None, **kwargs):
93
- super().__init__(
94
- code=response.code if response else None,
95
- data=response.data if response else None,
96
- message=response.message if response else None,
97
- **kwargs,
98
- )
@@ -1,23 +0,0 @@
1
- import ep_sdk_4pd.client as ep_sdk_4pd_client
2
- import ep_sdk_4pd.models as ep_sdk_4pd_models
3
-
4
-
5
- def test_history_data():
6
- print('-------------test client-------------')
7
-
8
- config = ep_sdk_4pd_models.Config()
9
- client = ep_sdk_4pd_client.Client(config=config)
10
- request = ep_sdk_4pd_models.HistoryDataRequest(
11
- scope="weather",
12
- system_date="2025-04-17",
13
- days=2,
14
- )
15
- response = client.history_data(request=request)
16
- print(response.code)
17
- print(response.data)
18
- print(response.message)
19
- print('-------------------------------------')
20
-
21
-
22
- if __name__ == '__main__':
23
- test_history_data()
File without changes
File without changes