omdev 0.0.0.dev286__py3-none-any.whl → 0.0.0.dev287__py3-none-any.whl

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.
omdev/.manifests.json CHANGED
@@ -168,14 +168,14 @@
168
168
  }
169
169
  },
170
170
  {
171
- "module": ".py.scripts.execrss",
171
+ "module": ".py.scripts.execstat",
172
172
  "attr": "_CLI_MODULE",
173
- "file": "omdev/py/scripts/execrss.py",
174
- "line": 11,
173
+ "file": "omdev/py/scripts/execstat.py",
174
+ "line": 49,
175
175
  "value": {
176
176
  "$.cli.types.CliModule": {
177
- "cmd_name": "py/execrss",
178
- "mod_name": "omdev.py.scripts.execrss"
177
+ "cmd_name": "py/execstat",
178
+ "mod_name": "omdev.py.scripts.execstat"
179
179
  }
180
180
  }
181
181
  },
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env python3
2
+ # @omlish-script
3
+ import inspect
4
+ import json
5
+ import subprocess
6
+ import sys
7
+
8
+
9
+ ##
10
+
11
+
12
+ def _run(
13
+ src: str,
14
+ *,
15
+ pre: str | None = None,
16
+ ) -> dict:
17
+ import resource # noqa
18
+ import sys # noqa
19
+ import time # noqa
20
+
21
+ def get_rss() -> int:
22
+ return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
23
+
24
+ if pre:
25
+ exec(pre)
26
+
27
+ start_modules = set(sys.modules)
28
+ start_rss = get_rss()
29
+ start_time = time.time()
30
+
31
+ exec(src)
32
+
33
+ end_time = time.time()
34
+ end_rss = get_rss()
35
+ end_modules = set(sys.modules)
36
+
37
+ return {
38
+ 'time_ms': (time_ms := round((end_time - start_time) * 1000., 6)),
39
+ 'time_ms_s': f'{time_ms:_}',
40
+ 'rss': (rss := (end_rss - start_rss)),
41
+ 'rss_s': f'{rss:_}',
42
+ 'modules': sorted(end_modules - start_modules),
43
+ }
44
+
45
+
46
+ #
47
+
48
+
49
+ # @omlish-manifest
50
+ _CLI_MODULE = {'$omdev.cli.types.CliModule': {
51
+ 'cmd_name': 'py/execstat',
52
+ 'mod_name': __name__,
53
+ }}
54
+
55
+
56
+ def _main() -> None:
57
+ if len(sys.argv) == 2:
58
+ pre = None
59
+ [src] = sys.argv[1:]
60
+ elif len(sys.argv) == 3:
61
+ [pre, src] = sys.argv[1:]
62
+ else:
63
+ raise Exception('Invalid arguments')
64
+
65
+ payload = '\n'.join([
66
+ inspect.getsource(_run),
67
+ f'dct = _run({src!r}, pre={pre!r})',
68
+ 'import json',
69
+ 'print(json.dumps(dct))',
70
+ ])
71
+
72
+ out_json = subprocess.check_output([sys.executable, '-c', payload])
73
+
74
+ dct = json.loads(out_json)
75
+
76
+ print(json.dumps(dct, indent=2))
77
+
78
+
79
+ if __name__ == '__main__':
80
+ _main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev286
3
+ Version: 0.0.0.dev287
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev286
15
+ Requires-Dist: omlish==0.0.0.dev287
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1,4 +1,4 @@
1
- omdev/.manifests.json,sha256=itAg3qiuZHPqPj0Eb1rvKeRsuhQ8VeoZTPTsZ5aVc-U,10669
1
+ omdev/.manifests.json,sha256=qU7B38qH7pnZcSvbdlaw7Of0MoWAWncs0tG2kFVtHAc,10673
2
2
  omdev/__about__.py,sha256=OgO_8azOzKriF2qPeDWRLcRe9p1XW5kYdJCq5vewff0,1171
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/cmake.py,sha256=9rfSvFHPmKDj9ngvfDB2vK8O-xO_ZwUm7hMKLWA-yOw,4578
@@ -201,7 +201,7 @@ omdev/py/findimports.py,sha256=V3GcFhqYOiPQtAOpTi4Pmeb3_c5mKqlEwah7v9vCBjg,2476
201
201
  omdev/py/srcheaders.py,sha256=cMopJr-QpOmzEBow-4mVupxdULE8QdSaSLH2aJV5Xxg,1993
202
202
  omdev/py/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
203
  omdev/py/scripts/bumpversion.py,sha256=2NnfRsJiZNTg-LubIwXCm2vklG7-kIR8_xFUEZNxtiY,1119
204
- omdev/py/scripts/execrss.py,sha256=mR0G0wERBYtQmVIn63lCIIFb5zkCM6X_XOENDFYDBKc,651
204
+ omdev/py/scripts/execstat.py,sha256=Ly11ffRdo9aud4nnxJWe5MqRsO8lDEA5L9s0Ul09hJM,1544
205
205
  omdev/py/scripts/exectime.py,sha256=S2O4MgtzTsFOY2IUJxsrnOIame9tEFc6aOlKP-F1JSg,1541
206
206
  omdev/py/scripts/importtrace.py,sha256=NjRilVNBugswrNflIhPCPHRTd-vIijqSZ8C7J8lariI,14038
207
207
  omdev/py/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -259,9 +259,9 @@ omdev/tools/json/rendering.py,sha256=tMcjOW5edfozcMSTxxvF7WVTsbYLoe9bCKFh50qyaGw
259
259
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
260
260
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
261
261
  omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
262
- omdev-0.0.0.dev286.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
263
- omdev-0.0.0.dev286.dist-info/METADATA,sha256=IzjfM0MT5p1WggRTYQ5Q9ZXsStyITdl9yYt0WWcgtcw,1478
264
- omdev-0.0.0.dev286.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
265
- omdev-0.0.0.dev286.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
266
- omdev-0.0.0.dev286.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
267
- omdev-0.0.0.dev286.dist-info/RECORD,,
262
+ omdev-0.0.0.dev287.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
263
+ omdev-0.0.0.dev287.dist-info/METADATA,sha256=c9XD3IcAQAfiAlXPY8blNR97MF-_aJaozD6n_jvhJwI,1478
264
+ omdev-0.0.0.dev287.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
265
+ omdev-0.0.0.dev287.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
266
+ omdev-0.0.0.dev287.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
267
+ omdev-0.0.0.dev287.dist-info/RECORD,,
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env python3
2
- # @omlish-script
3
- import resource
4
- import sys
5
-
6
-
7
- def _get_rss() -> int:
8
- return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
9
-
10
-
11
- # @omlish-manifest
12
- _CLI_MODULE = {'$omdev.cli.types.CliModule': {
13
- 'cmd_name': 'py/execrss',
14
- 'mod_name': __name__,
15
- }}
16
-
17
-
18
- def _main() -> None:
19
- if len(sys.argv) == 2:
20
- pre = None
21
- [src] = sys.argv[1:]
22
- elif len(sys.argv) == 3:
23
- [pre, src] = sys.argv[1:]
24
- else:
25
- raise Exception('Invalid arguments')
26
-
27
- if pre:
28
- exec(pre)
29
-
30
- start = _get_rss()
31
- exec(src)
32
- end = _get_rss()
33
- print(end - start)
34
-
35
-
36
- if __name__ == '__main__':
37
- _main()