devpulse-tui 0.1.0__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.
- devpulse_tui-0.1.0/PKG-INFO +305 -0
- devpulse_tui-0.1.0/README.md +290 -0
- devpulse_tui-0.1.0/devpulse/__init__.py +0 -0
- devpulse_tui-0.1.0/devpulse/activity.py +50 -0
- devpulse_tui-0.1.0/devpulse/database.py +75 -0
- devpulse_tui-0.1.0/devpulse/devinfo.py +240 -0
- devpulse_tui-0.1.0/devpulse/doctor.py +71 -0
- devpulse_tui-0.1.0/devpulse/live.py +579 -0
- devpulse_tui-0.1.0/devpulse/main.py +32 -0
- devpulse_tui-0.1.0/devpulse/stats.py +84 -0
- devpulse_tui-0.1.0/devpulse_tui.egg-info/PKG-INFO +305 -0
- devpulse_tui-0.1.0/devpulse_tui.egg-info/SOURCES.txt +17 -0
- devpulse_tui-0.1.0/devpulse_tui.egg-info/dependency_links.txt +1 -0
- devpulse_tui-0.1.0/devpulse_tui.egg-info/entry_points.txt +2 -0
- devpulse_tui-0.1.0/devpulse_tui.egg-info/requires.txt +6 -0
- devpulse_tui-0.1.0/devpulse_tui.egg-info/top_level.txt +1 -0
- devpulse_tui-0.1.0/pyproject.toml +25 -0
- devpulse_tui-0.1.0/setup.cfg +4 -0
- devpulse_tui-0.1.0/setup.py +24 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devpulse-tui
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Developer-focused Linux observability dashboard
|
|
5
|
+
Author: eyeblech
|
|
6
|
+
Requires-Python: >=3.9
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: rich
|
|
9
|
+
Requires-Dist: psutil
|
|
10
|
+
Requires-Dist: typer
|
|
11
|
+
Requires-Dist: sqlalchemy
|
|
12
|
+
Requires-Dist: GitPython
|
|
13
|
+
Requires-Dist: py3nvml
|
|
14
|
+
Dynamic: requires-python
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# DevPulse
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
> Real-time terminal dashboard for developers.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
DevPulse is a modern terminal-based system monitor built for developers.
|
|
26
|
+
|
|
27
|
+
Track CPU, RAM, disk usage, network activity, running processes, and live Git repository activity directly from your terminal.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Built with Python, Rich, Typer, SQLAlchemy, and psutil.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Preview
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+

|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
## Features
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
* Real-time system monitoring
|
|
60
|
+
|
|
61
|
+
* Live CPU / RAM / Disk metrics
|
|
62
|
+
|
|
63
|
+
* GPU usage support (NVIDIA)
|
|
64
|
+
|
|
65
|
+
* Network upload/download tracking
|
|
66
|
+
|
|
67
|
+
* Running process monitor
|
|
68
|
+
|
|
69
|
+
* Git repository activity panel
|
|
70
|
+
|
|
71
|
+
* Terminal dashboard UI powered by Rich
|
|
72
|
+
|
|
73
|
+
* Historical analytics tracking
|
|
74
|
+
|
|
75
|
+
* SQLite-based lightweight logging
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## Installation
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
### Install from PyPI
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
|
|
93
|
+
pip install devpulse
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Clone Repository
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
|
|
103
|
+
git clone https://github.com/eyeblech/DevPulse.git
|
|
104
|
+
|
|
105
|
+
cd DevPulse
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
### Create Virtual Environment
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
|
|
117
|
+
python -m venv venv
|
|
118
|
+
|
|
119
|
+
source venv/bin/activate
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
### Install Dependencies
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
|
|
131
|
+
pip install -r requirements.txt
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
## Usage
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
### Launch Live Dashboard
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
|
|
151
|
+
devpulse live
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
### Show Analytics
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
|
|
163
|
+
devpulse stats
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
### Run Diagnostics
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
|
|
175
|
+
devpulse doctor
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
### Show Version
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
|
|
187
|
+
devpulse version
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
## Tech Stack
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
* Python
|
|
204
|
+
|
|
205
|
+
* Rich
|
|
206
|
+
|
|
207
|
+
* Typer
|
|
208
|
+
|
|
209
|
+
* psutil
|
|
210
|
+
|
|
211
|
+
* SQLAlchemy
|
|
212
|
+
|
|
213
|
+
* SQLite
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
## Why I Built This
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
I wanted a terminal dashboard that combined:
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
* system monitoring
|
|
228
|
+
|
|
229
|
+
* developer workflow visibility
|
|
230
|
+
|
|
231
|
+
* git awareness
|
|
232
|
+
|
|
233
|
+
* lightweight analytics
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
into a single modern TUI experience.
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
DevPulse started as a learning project and evolved into a polished developer utility focused on Linux workflows.
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
## Screenshots
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
### Live Dashboard
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+

|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
### Analytics
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+

|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
## Contributing
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
Pull requests, issues, and feature suggestions are welcome.
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
If you find a bug or want to improve DevPulse, feel free to open an issue.
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
## License
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
MIT License
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
## Author
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
EyeBlech
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
|
|
2
|
+
# DevPulse
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
> Real-time terminal dashboard for developers.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
DevPulse is a modern terminal-based system monitor built for developers.
|
|
11
|
+
|
|
12
|
+
Track CPU, RAM, disk usage, network activity, running processes, and live Git repository activity directly from your terminal.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Built with Python, Rich, Typer, SQLAlchemy, and psutil.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## Preview
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Features
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
* Real-time system monitoring
|
|
45
|
+
|
|
46
|
+
* Live CPU / RAM / Disk metrics
|
|
47
|
+
|
|
48
|
+
* GPU usage support (NVIDIA)
|
|
49
|
+
|
|
50
|
+
* Network upload/download tracking
|
|
51
|
+
|
|
52
|
+
* Running process monitor
|
|
53
|
+
|
|
54
|
+
* Git repository activity panel
|
|
55
|
+
|
|
56
|
+
* Terminal dashboard UI powered by Rich
|
|
57
|
+
|
|
58
|
+
* Historical analytics tracking
|
|
59
|
+
|
|
60
|
+
* SQLite-based lightweight logging
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
## Installation
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### Install from PyPI
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
|
|
78
|
+
pip install devpulse
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Clone Repository
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
|
|
88
|
+
git clone https://github.com/eyeblech/DevPulse.git
|
|
89
|
+
|
|
90
|
+
cd DevPulse
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
### Create Virtual Environment
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
|
|
102
|
+
python -m venv venv
|
|
103
|
+
|
|
104
|
+
source venv/bin/activate
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
### Install Dependencies
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
|
|
116
|
+
pip install -r requirements.txt
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## Usage
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
### Launch Live Dashboard
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
|
|
136
|
+
devpulse live
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
### Show Analytics
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
|
|
148
|
+
devpulse stats
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### Run Diagnostics
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
|
|
160
|
+
devpulse doctor
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
### Show Version
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
|
|
172
|
+
devpulse version
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
## Tech Stack
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
* Python
|
|
189
|
+
|
|
190
|
+
* Rich
|
|
191
|
+
|
|
192
|
+
* Typer
|
|
193
|
+
|
|
194
|
+
* psutil
|
|
195
|
+
|
|
196
|
+
* SQLAlchemy
|
|
197
|
+
|
|
198
|
+
* SQLite
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
## Why I Built This
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
I wanted a terminal dashboard that combined:
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
* system monitoring
|
|
213
|
+
|
|
214
|
+
* developer workflow visibility
|
|
215
|
+
|
|
216
|
+
* git awareness
|
|
217
|
+
|
|
218
|
+
* lightweight analytics
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
into a single modern TUI experience.
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
DevPulse started as a learning project and evolved into a polished developer utility focused on Linux workflows.
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
## Screenshots
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
### Live Dashboard
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+

|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
### Analytics
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+

|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
## Contributing
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
Pull requests, issues, and feature suggestions are welcome.
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
If you find a bug or want to improve DevPulse, feel free to open an issue.
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
## License
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
MIT License
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
## Author
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
EyeBlech
|
|
File without changes
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import time
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
CODING_KEYWORDS = [
|
|
6
|
+
"code",
|
|
7
|
+
"nvim",
|
|
8
|
+
"vim",
|
|
9
|
+
"pycharm",
|
|
10
|
+
"idea",
|
|
11
|
+
"terminal",
|
|
12
|
+
"konsole",
|
|
13
|
+
"kitty",
|
|
14
|
+
"github",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
session_start = time.time()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_active_window():
|
|
22
|
+
try:
|
|
23
|
+
window_name = subprocess.check_output(
|
|
24
|
+
["xdotool", "getactivewindow", "getwindowname"],
|
|
25
|
+
text=True
|
|
26
|
+
).strip()
|
|
27
|
+
|
|
28
|
+
return window_name
|
|
29
|
+
|
|
30
|
+
except Exception:
|
|
31
|
+
return "Unknown"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def is_coding(window_name):
|
|
35
|
+
window_name = window_name.lower()
|
|
36
|
+
|
|
37
|
+
return any(
|
|
38
|
+
keyword in window_name
|
|
39
|
+
for keyword in CODING_KEYWORDS
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get_session_duration():
|
|
44
|
+
seconds = int(time.time() - session_start)
|
|
45
|
+
|
|
46
|
+
hours = seconds // 3600
|
|
47
|
+
minutes = (seconds % 3600) // 60
|
|
48
|
+
secs = seconds % 60
|
|
49
|
+
|
|
50
|
+
return f"{hours:02}:{minutes:02}:{secs:02}"
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from sqlalchemy import (
|
|
3
|
+
create_engine,
|
|
4
|
+
Column,
|
|
5
|
+
Integer,
|
|
6
|
+
Float,
|
|
7
|
+
String,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from sqlalchemy.orm import (
|
|
11
|
+
declarative_base,
|
|
12
|
+
sessionmaker,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
Base = declarative_base()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SystemStat(Base):
|
|
19
|
+
__tablename__ = "system_stats"
|
|
20
|
+
|
|
21
|
+
id = Column(Integer, primary_key=True)
|
|
22
|
+
timestamp = Column(
|
|
23
|
+
String,
|
|
24
|
+
default=lambda: datetime.now().isoformat()
|
|
25
|
+
)
|
|
26
|
+
cpu = Column(Float)
|
|
27
|
+
ram = Column(Float)
|
|
28
|
+
disk = Column(Float)
|
|
29
|
+
|
|
30
|
+
gpu = Column(String)
|
|
31
|
+
|
|
32
|
+
upload = Column(Float)
|
|
33
|
+
download = Column(Float)
|
|
34
|
+
|
|
35
|
+
repo = Column(String)
|
|
36
|
+
branch = Column(String)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
engine = create_engine(
|
|
40
|
+
"sqlite:///devpulse.db"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
SessionLocal = sessionmaker(bind=engine)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def init_db():
|
|
47
|
+
Base.metadata.create_all(engine)
|
|
48
|
+
|
|
49
|
+
def log_system_stats(
|
|
50
|
+
cpu,
|
|
51
|
+
ram,
|
|
52
|
+
disk,
|
|
53
|
+
gpu,
|
|
54
|
+
upload,
|
|
55
|
+
download,
|
|
56
|
+
repo,
|
|
57
|
+
branch,
|
|
58
|
+
):
|
|
59
|
+
session = SessionLocal()
|
|
60
|
+
|
|
61
|
+
stat = SystemStat(
|
|
62
|
+
cpu=cpu,
|
|
63
|
+
ram=ram,
|
|
64
|
+
disk=disk,
|
|
65
|
+
gpu=gpu,
|
|
66
|
+
upload=upload,
|
|
67
|
+
download=download,
|
|
68
|
+
repo=repo,
|
|
69
|
+
branch=branch,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
session.add(stat)
|
|
73
|
+
session.commit()
|
|
74
|
+
|
|
75
|
+
session.close()
|