rustat-python-api 0.3.3__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.
- {rustat-python-api-0.3.3/rustat_python_api.egg-info → rustat-python-api-0.4.1}/PKG-INFO +2 -2
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/README.md +1 -1
- rustat-python-api-0.4.1/rustat_python_api/__init__.py +4 -0
- rustat-python-api-0.4.1/rustat_python_api/models_api.py +58 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/parser.py +21 -2
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1/rustat_python_api.egg-info}/PKG-INFO +2 -2
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/SOURCES.txt +1 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/setup.py +1 -1
- rustat-python-api-0.3.3/rustat_python_api/__init__.py +0 -3
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/LICENSE +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/pyproject.toml +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/config.py +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/processing.py +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/urls.py +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/dependency_links.txt +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/requires.txt +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/top_level.txt +0 -0
- {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: rustat-python-api
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: A Python wrapper for RuStat API
|
|
5
5
|
Home-page: https://github.com/dailydaniel/rustat-python-api
|
|
6
6
|
Author: Daniel Zholkovsky
|
|
@@ -38,7 +38,7 @@ schedule = parser.get_schedule(team_id, season_id)
|
|
|
38
38
|
keys = list(schedule.keys())
|
|
39
39
|
match_id = keys[-1]
|
|
40
40
|
|
|
41
|
-
events = parser.get_events(match_id, process=True)
|
|
41
|
+
events, subs = parser.get_events(match_id, process=True, return_subs=True)
|
|
42
42
|
|
|
43
43
|
stats = parser.get_match_stats(match_id)
|
|
44
44
|
|
|
@@ -23,7 +23,7 @@ schedule = parser.get_schedule(team_id, season_id)
|
|
|
23
23
|
keys = list(schedule.keys())
|
|
24
24
|
match_id = keys[-1]
|
|
25
25
|
|
|
26
|
-
events = parser.get_events(match_id, process=True)
|
|
26
|
+
events, subs = parser.get_events(match_id, process=True, return_subs=True)
|
|
27
27
|
|
|
28
28
|
stats = parser.get_match_stats(match_id)
|
|
29
29
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
import numpy as np
|
|
3
|
+
import pandas as pd
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DynamoLab:
|
|
7
|
+
def __init__(self, host: str = "http://localhost:8000/"):
|
|
8
|
+
self.host = host
|
|
9
|
+
|
|
10
|
+
def get_active_models(self):
|
|
11
|
+
url = self.host + "models"
|
|
12
|
+
response = requests.get(url)
|
|
13
|
+
return response.json()
|
|
14
|
+
|
|
15
|
+
def run_model(
|
|
16
|
+
self,
|
|
17
|
+
model: str,
|
|
18
|
+
data: pd.DataFrame,
|
|
19
|
+
return_type: str = "json",
|
|
20
|
+
inplace: bool = False,
|
|
21
|
+
return_df: bool = False,
|
|
22
|
+
inplace_column: str = None
|
|
23
|
+
):
|
|
24
|
+
"""
|
|
25
|
+
model: str
|
|
26
|
+
The name of the model to run
|
|
27
|
+
return_type: str
|
|
28
|
+
One of: "json", "list", "numpy"
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
url = self.host + "predict"
|
|
32
|
+
csv_string = data.to_csv(index=False)
|
|
33
|
+
|
|
34
|
+
body = {
|
|
35
|
+
"model": model,
|
|
36
|
+
"data": csv_string,
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
response = requests.post(url, json=body)
|
|
40
|
+
|
|
41
|
+
if return_df or inplace:
|
|
42
|
+
if inplace_column is None:
|
|
43
|
+
raise ValueError("inplace_column must be specified if inplace is True")
|
|
44
|
+
if inplace:
|
|
45
|
+
data[inplace_column] = response.json()["prediction"]
|
|
46
|
+
if df:
|
|
47
|
+
df = data.copy()
|
|
48
|
+
df[inplace_column] = response.json()["prediction"]
|
|
49
|
+
return df
|
|
50
|
+
|
|
51
|
+
if return_type == "json":
|
|
52
|
+
return response.json()
|
|
53
|
+
elif return_type == "list":
|
|
54
|
+
return response.json()["prediction"]
|
|
55
|
+
elif return_type == "numpy":
|
|
56
|
+
return np.array(response.json()["prediction"])
|
|
57
|
+
else:
|
|
58
|
+
raise ValueError("return_type must be one of: json, list, numpy")
|
|
@@ -90,7 +90,12 @@ class RuStatParser:
|
|
|
90
90
|
for row in data["data"]["row"]
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
def get_events(
|
|
93
|
+
def get_events(
|
|
94
|
+
self,
|
|
95
|
+
match_id: int,
|
|
96
|
+
process: bool = True,
|
|
97
|
+
return_subs: bool = False
|
|
98
|
+
) -> pd.DataFrame | None | tuple[pd.DataFrame, pd.DataFrame]:
|
|
94
99
|
data = self.resp2data(
|
|
95
100
|
self.urls["events"].format(
|
|
96
101
|
user=self.user,
|
|
@@ -109,9 +114,23 @@ class RuStatParser:
|
|
|
109
114
|
|
|
110
115
|
if process:
|
|
111
116
|
df['match_id'] = match_id
|
|
117
|
+
|
|
118
|
+
if return_subs:
|
|
119
|
+
subs = df[df['action_id'] == '14000'][[
|
|
120
|
+
'match_id', 'half', 'second',
|
|
121
|
+
'team_id', 'team_name',
|
|
122
|
+
'opponent_id', 'opponent_name',
|
|
123
|
+
'player_id', 'player_name'
|
|
124
|
+
]].rename(columns={
|
|
125
|
+
'player_id': 'player_id_out',
|
|
126
|
+
'opponent_id': 'player_id_in',
|
|
127
|
+
'player_name': 'player_name_out',
|
|
128
|
+
'opponent_name': 'player_name_in'
|
|
129
|
+
})
|
|
130
|
+
|
|
112
131
|
df = processing(df)
|
|
113
132
|
|
|
114
|
-
return df
|
|
133
|
+
return df, subs if return_subs else df
|
|
115
134
|
|
|
116
135
|
def get_tracking(self, match_id: int) -> pd.DataFrame | None:
|
|
117
136
|
data = self.resp2data(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: rustat-python-api
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: A Python wrapper for RuStat API
|
|
5
5
|
Home-page: https://github.com/dailydaniel/rustat-python-api
|
|
6
6
|
Author: Daniel Zholkovsky
|
|
@@ -38,7 +38,7 @@ schedule = parser.get_schedule(team_id, season_id)
|
|
|
38
38
|
keys = list(schedule.keys())
|
|
39
39
|
match_id = keys[-1]
|
|
40
40
|
|
|
41
|
-
events = parser.get_events(match_id, process=True)
|
|
41
|
+
events, subs = parser.get_events(match_id, process=True, return_subs=True)
|
|
42
42
|
|
|
43
43
|
stats = parser.get_match_stats(match_id)
|
|
44
44
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
{rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|