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.
Files changed (18) hide show
  1. {rustat-python-api-0.3.3/rustat_python_api.egg-info → rustat-python-api-0.4.1}/PKG-INFO +2 -2
  2. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/README.md +1 -1
  3. rustat-python-api-0.4.1/rustat_python_api/__init__.py +4 -0
  4. rustat-python-api-0.4.1/rustat_python_api/models_api.py +58 -0
  5. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/parser.py +21 -2
  6. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1/rustat_python_api.egg-info}/PKG-INFO +2 -2
  7. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/SOURCES.txt +1 -0
  8. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/setup.py +1 -1
  9. rustat-python-api-0.3.3/rustat_python_api/__init__.py +0 -3
  10. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/LICENSE +0 -0
  11. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/pyproject.toml +0 -0
  12. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/config.py +0 -0
  13. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/processing.py +0 -0
  14. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api/urls.py +0 -0
  15. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/dependency_links.txt +0 -0
  16. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/requires.txt +0 -0
  17. {rustat-python-api-0.3.3 → rustat-python-api-0.4.1}/rustat_python_api.egg-info/top_level.txt +0 -0
  18. {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.3
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,4 @@
1
+ from .parser import RuStatParser
2
+ from .models_api import DynamoLab
3
+
4
+ __all__ = ['RuStatParser', 'DynamoLab']
@@ -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(self, match_id: int, process: bool = True) -> pd.DataFrame | None:
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.3
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
 
@@ -4,6 +4,7 @@ pyproject.toml
4
4
  setup.py
5
5
  rustat_python_api/__init__.py
6
6
  rustat_python_api/config.py
7
+ rustat_python_api/models_api.py
7
8
  rustat_python_api/parser.py
8
9
  rustat_python_api/processing.py
9
10
  rustat_python_api/urls.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='rustat-python-api',
5
- version='0.3.3',
5
+ version='0.4.1',
6
6
  description='A Python wrapper for RuStat API',
7
7
  long_description=open('README.md').read(),
8
8
  long_description_content_type='text/markdown',
@@ -1,3 +0,0 @@
1
- from .parser import RuStatParser
2
-
3
- __all__ = ['RuStatParser']