omlish 0.0.0.dev67__py3-none-any.whl → 0.0.0.dev69__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- omlish/__about__.py +2 -2
- omlish/diag/__init__.py +28 -0
- omlish/diag/_pycharm/runhack.py +25 -59
- omlish/lang/imports.py +17 -2
- omlish/lang/objects.py +1 -1
- omlish/libc.py +1 -1
- omlish/testing/__init__.py +0 -1
- omlish/testing/pytest/plugins/managermarks.py +1 -1
- omlish/testing/pytest/skip.py +2 -2
- omlish/testing/testing.py +0 -10
- {omlish-0.0.0.dev67.dist-info → omlish-0.0.0.dev69.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev67.dist-info → omlish-0.0.0.dev69.dist-info}/RECORD +16 -16
- {omlish-0.0.0.dev67.dist-info → omlish-0.0.0.dev69.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev67.dist-info → omlish-0.0.0.dev69.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev67.dist-info → omlish-0.0.0.dev69.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev67.dist-info → omlish-0.0.0.dev69.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/diag/__init__.py
CHANGED
@@ -1,4 +1,32 @@
|
|
1
1
|
"""
|
2
2
|
TODO:
|
3
3
|
- https://github.com/aristocratos/btop/blob/00c90884c328eb3e44a0ab094e833161092aae9c/src/linux/btop_collect.cpp#L443
|
4
|
+
|
5
|
+
==
|
6
|
+
|
7
|
+
Repls
|
8
|
+
- python - https://docs.python.org/3/tutorial/interpreter.html
|
9
|
+
- ipython - https://github.com/ipython/ipython/
|
10
|
+
- ptpython - https://github.com/prompt-toolkit/ptpython
|
11
|
+
- bpython - https://github.com/bpython/bpython
|
12
|
+
|
13
|
+
Debuggers
|
14
|
+
- pdb - https://docs.python.org/3/library/pdb.html
|
15
|
+
- ipdb - https://github.com/gotcha/ipdb
|
16
|
+
- pdub - https://github.com/inducer/pudb/
|
17
|
+
|
18
|
+
CPU Profilers
|
19
|
+
- cProfile - https://docs.python.org/3/library/profile.html
|
20
|
+
- pyinstrument - https://github.com/joerick/pyinstrument
|
21
|
+
- py-pspy - https://github.com/benfred/py-spy
|
22
|
+
- austin-dist - https://github.com/P403n1x87/austin
|
23
|
+
- yappi - https://github.com/sumerc/yappi
|
24
|
+
|
25
|
+
Memory Profilers
|
26
|
+
- tracemalloc - https://docs.python.org/3/library/tracemalloc.html
|
27
|
+
- guppy3 - https://github.com/zhuyifei1999/guppy3/
|
28
|
+
- objgraph - https://github.com/mgedmin/objgraph
|
29
|
+
- memory-profiler - https://github.com/pythonprofilers/memory_profiler
|
30
|
+
- memray - https://github.com/bloomberg/memray
|
31
|
+
- pympler - https://github.com/pympler/pympler
|
4
32
|
"""
|
omlish/diag/_pycharm/runhack.py
CHANGED
@@ -100,12 +100,17 @@ def _get_env_path_list(k): # type: (str) -> list[str]
|
|
100
100
|
##
|
101
101
|
|
102
102
|
|
103
|
-
class
|
104
|
-
|
105
|
-
|
103
|
+
class AttrsClass:
|
104
|
+
__attrs__ = () # type: tuple[str, ...]
|
105
|
+
|
106
|
+
def __repr__(self) -> str:
|
107
|
+
return _attr_repr(self, *self.__attrs__)
|
108
|
+
|
109
|
+
def attrs_dict(self): # type: () -> dict[str, object]
|
110
|
+
return {a: getattr(self, a) for a in self.__attrs__}
|
106
111
|
|
107
112
|
def replace(self, **kwargs):
|
108
|
-
return self.__class__(**{**self.
|
113
|
+
return self.__class__(**{**self.attrs_dict(), **kwargs})
|
109
114
|
|
110
115
|
|
111
116
|
class AsJson:
|
@@ -116,7 +121,7 @@ class AsJson:
|
|
116
121
|
##
|
117
122
|
|
118
123
|
|
119
|
-
class RunEnv(AsJson):
|
124
|
+
class RunEnv(AttrsClass, AsJson):
|
120
125
|
def __init__(
|
121
126
|
self,
|
122
127
|
*,
|
@@ -171,7 +176,7 @@ class RunEnv(AsJson):
|
|
171
176
|
sys_path = list(sys.path)
|
172
177
|
self._sys_path = sys_path
|
173
178
|
|
174
|
-
|
179
|
+
__attrs__ = (
|
175
180
|
'argv',
|
176
181
|
'orig_argv',
|
177
182
|
|
@@ -186,12 +191,6 @@ class RunEnv(AsJson):
|
|
186
191
|
'sys_path',
|
187
192
|
)
|
188
193
|
|
189
|
-
def as_json(self): # type: () -> dict[str, object]
|
190
|
-
return {a: getattr(self, a) for a in self._ATTRS}
|
191
|
-
|
192
|
-
def __repr__(self) -> str:
|
193
|
-
return _attr_repr(self, *self._ATTRS)
|
194
|
-
|
195
194
|
@property
|
196
195
|
def argv(self): # type: () -> list[str]
|
197
196
|
return self._argv
|
@@ -228,6 +227,9 @@ class RunEnv(AsJson):
|
|
228
227
|
def sys_path(self): # type: () -> list[str]
|
229
228
|
return self._sys_path
|
230
229
|
|
230
|
+
def as_json(self): # type: () -> dict[str, object]
|
231
|
+
return self.attrs_dict()
|
232
|
+
|
231
233
|
|
232
234
|
##
|
233
235
|
|
@@ -495,7 +497,7 @@ def render_args(args): # type: (list[Arg]) -> list[str]
|
|
495
497
|
##
|
496
498
|
|
497
499
|
|
498
|
-
class Target(
|
500
|
+
class Target(AttrsClass, AsJson):
|
499
501
|
pass
|
500
502
|
|
501
503
|
|
@@ -530,16 +532,10 @@ class FileTarget(UserTarget):
|
|
530
532
|
def file(self) -> str:
|
531
533
|
return self._file
|
532
534
|
|
533
|
-
|
534
|
-
|
535
|
-
def __repr__(self) -> str:
|
536
|
-
return _attr_repr(self, *self._ATTRS)
|
537
|
-
|
538
|
-
def as_dict(self): # type: () -> dict[str, object]
|
539
|
-
return _attr_dict(self, *self._ATTRS)
|
535
|
+
__attrs__ = ('file', 'argv')
|
540
536
|
|
541
537
|
def as_json(self): # type: () -> dict[str, object]
|
542
|
-
return self.
|
538
|
+
return self.attrs_dict()
|
543
539
|
|
544
540
|
|
545
541
|
class ModuleTarget(UserTarget):
|
@@ -556,16 +552,10 @@ class ModuleTarget(UserTarget):
|
|
556
552
|
def module(self) -> str:
|
557
553
|
return self._module
|
558
554
|
|
559
|
-
|
560
|
-
|
561
|
-
def __repr__(self) -> str:
|
562
|
-
return _attr_repr(self, *self._ATTRS)
|
563
|
-
|
564
|
-
def as_dict(self): # type: () -> dict[str, object]
|
565
|
-
return _attr_dict(self, *self._ATTRS)
|
555
|
+
__attrs__ = ('module', 'argv')
|
566
556
|
|
567
557
|
def as_json(self): # type: () -> dict[str, object]
|
568
|
-
return self.
|
558
|
+
return self.attrs_dict()
|
569
559
|
|
570
560
|
|
571
561
|
#
|
@@ -604,13 +594,7 @@ class DebuggerTarget(PycharmTarget):
|
|
604
594
|
def target(self) -> Target:
|
605
595
|
return self._target
|
606
596
|
|
607
|
-
|
608
|
-
|
609
|
-
def __repr__(self) -> str:
|
610
|
-
return _attr_repr(self, *self._ATTRS)
|
611
|
-
|
612
|
-
def as_dict(self): # type: () -> dict[str, object]
|
613
|
-
return _attr_dict(self, *self._ATTRS)
|
597
|
+
__attrs__ = ('file', 'args', 'target')
|
614
598
|
|
615
599
|
def as_json(self): # type: () -> dict[str, object]
|
616
600
|
return {
|
@@ -662,13 +646,7 @@ class TestRunnerTarget(PycharmTarget):
|
|
662
646
|
def tests(self): # type: () -> list[Test]
|
663
647
|
return self._tests
|
664
648
|
|
665
|
-
|
666
|
-
|
667
|
-
def __repr__(self) -> str:
|
668
|
-
return _attr_repr(self, *self._ATTRS)
|
669
|
-
|
670
|
-
def as_dict(self): # type: () -> dict[str, object]
|
671
|
-
return _attr_dict(self, *self._ATTRS)
|
649
|
+
__attrs__ = ('file', 'args', 'tests')
|
672
650
|
|
673
651
|
def as_json(self): # type: () -> dict[str, object]
|
674
652
|
return {
|
@@ -884,7 +862,7 @@ def render_target_args(tgt): # type: (Target) -> list[str]
|
|
884
862
|
##
|
885
863
|
|
886
864
|
|
887
|
-
class Exec(
|
865
|
+
class Exec(AttrsClass, AsJson):
|
888
866
|
def __init__(
|
889
867
|
self,
|
890
868
|
exe: str,
|
@@ -909,13 +887,7 @@ class Exec(AsDict, AsJson):
|
|
909
887
|
def target(self) -> Target:
|
910
888
|
return self._target
|
911
889
|
|
912
|
-
|
913
|
-
|
914
|
-
def __repr__(self) -> str:
|
915
|
-
return _attr_repr(self, *self._ATTRS)
|
916
|
-
|
917
|
-
def as_dict(self): # type: () -> dict[str, object]
|
918
|
-
return _attr_dict(self, *self._ATTRS)
|
890
|
+
__attrs__ = ('exe', 'exe_args', 'target')
|
919
891
|
|
920
892
|
def as_json(self): # type: () -> dict[str, object]
|
921
893
|
return {
|
@@ -979,7 +951,7 @@ def render_exec_args(exe): # type: (Exec) -> list[str]
|
|
979
951
|
##
|
980
952
|
|
981
953
|
|
982
|
-
class ExecDecision(
|
954
|
+
class ExecDecision(AttrsClass, AsJson):
|
983
955
|
def __init__(
|
984
956
|
self,
|
985
957
|
target: Target,
|
@@ -1020,7 +992,7 @@ class ExecDecision(AsDict, AsJson):
|
|
1020
992
|
def os_exec(self) -> bool:
|
1021
993
|
return self._os_exec
|
1022
994
|
|
1023
|
-
|
995
|
+
__attrs__ = (
|
1024
996
|
'target',
|
1025
997
|
'cwd',
|
1026
998
|
'python_path',
|
@@ -1028,12 +1000,6 @@ class ExecDecision(AsDict, AsJson):
|
|
1028
1000
|
'os_exec',
|
1029
1001
|
)
|
1030
1002
|
|
1031
|
-
def __repr__(self) -> str:
|
1032
|
-
return _attr_repr(self, *self._ATTRS)
|
1033
|
-
|
1034
|
-
def as_dict(self): # type: () -> dict[str, object]
|
1035
|
-
return _attr_dict(self, *self._ATTRS)
|
1036
|
-
|
1037
1003
|
def as_json(self): # type: () -> dict[str, object]
|
1038
1004
|
return {
|
1039
1005
|
'target': self._target.as_json(),
|
omlish/lang/imports.py
CHANGED
@@ -12,7 +12,12 @@ from .cached import cached_function
|
|
12
12
|
|
13
13
|
|
14
14
|
def can_import(name: str, package: str | None = None) -> bool:
|
15
|
-
|
15
|
+
try:
|
16
|
+
spec = importlib.util.find_spec(name, package)
|
17
|
+
except ImportError:
|
18
|
+
return False
|
19
|
+
else:
|
20
|
+
return spec is not None
|
16
21
|
|
17
22
|
|
18
23
|
##
|
@@ -22,13 +27,23 @@ def lazy_import(name: str, package: str | None = None) -> ta.Callable[[], ta.Any
|
|
22
27
|
return cached_function(functools.partial(importlib.import_module, name, package=package))
|
23
28
|
|
24
29
|
|
25
|
-
def proxy_import(
|
30
|
+
def proxy_import(
|
31
|
+
name: str,
|
32
|
+
package: str | None = None,
|
33
|
+
extras: ta.Iterable[str] | None = None,
|
34
|
+
) -> types.ModuleType:
|
35
|
+
if isinstance(extras, str):
|
36
|
+
raise TypeError(extras)
|
37
|
+
|
26
38
|
omod = None
|
27
39
|
|
28
40
|
def __getattr__(att): # noqa
|
29
41
|
nonlocal omod
|
30
42
|
if omod is None:
|
31
43
|
omod = importlib.import_module(name, package=package)
|
44
|
+
if extras:
|
45
|
+
for x in extras:
|
46
|
+
importlib.import_module(f'{name}.{x}', package=package)
|
32
47
|
return getattr(omod, att)
|
33
48
|
|
34
49
|
lmod = types.ModuleType(name)
|
omlish/lang/objects.py
CHANGED
@@ -87,7 +87,7 @@ def super_meta(
|
|
87
87
|
##
|
88
88
|
|
89
89
|
|
90
|
-
def deep_subclasses(cls: type, *, concrete_only: bool = False) -> ta.Iterator[type]:
|
90
|
+
def deep_subclasses(cls: type[T], *, concrete_only: bool = False) -> ta.Iterator[type[T]]:
|
91
91
|
seen = set()
|
92
92
|
todo = list(reversed(cls.__subclasses__()))
|
93
93
|
while todo:
|
omlish/libc.py
CHANGED
omlish/testing/__init__.py
CHANGED
@@ -37,7 +37,7 @@ class ManagerMarksPlugin:
|
|
37
37
|
def mark_classes(self) -> ta.Mapping[str, type[ManagerMark]]:
|
38
38
|
return {
|
39
39
|
cls.__name__: cls
|
40
|
-
for cls in
|
40
|
+
for cls in lang.deep_subclasses(ManagerMark) # type: ignore[type-abstract]
|
41
41
|
if not lang.is_abstract_class(cls)
|
42
42
|
}
|
43
43
|
|
omlish/testing/pytest/skip.py
CHANGED
@@ -5,11 +5,11 @@ import typing as ta
|
|
5
5
|
|
6
6
|
import pytest
|
7
7
|
|
8
|
-
from
|
8
|
+
from ... import lang
|
9
9
|
|
10
10
|
|
11
11
|
def if_cant_import(module: str, *args, **kwargs):
|
12
|
-
return pytest.mark.skipif(not can_import(module, *args, **kwargs), reason=f'requires import {module}')
|
12
|
+
return pytest.mark.skipif(not lang.can_import(module, *args, **kwargs), reason=f'requires import {module}')
|
13
13
|
|
14
14
|
|
15
15
|
def if_not_on_path(exe: str):
|
omlish/testing/testing.py
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
import functools
|
2
|
-
import importlib
|
3
2
|
import os
|
4
3
|
import sys
|
5
4
|
import threading
|
@@ -89,15 +88,6 @@ def waitpid_with_timeout(
|
|
89
88
|
raise timeout_exception
|
90
89
|
|
91
90
|
|
92
|
-
def can_import(*args, **kwargs) -> bool:
|
93
|
-
try:
|
94
|
-
importlib.import_module(*args, **kwargs)
|
95
|
-
except ImportError:
|
96
|
-
return False
|
97
|
-
else:
|
98
|
-
return True
|
99
|
-
|
100
|
-
|
101
91
|
def xfail(fn):
|
102
92
|
@functools.wraps(fn)
|
103
93
|
def inner(*args, **kwargs):
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=TXvFdkAU0Zr2FKdo7fyvt9nr3UjCtrnAZ0diZXSAteE,1430
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=IwGGP6Oe4Sux6iaJWcinkD3DfkrJmksEYnKmYdTly1I,3420
|
3
3
|
omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
omlish/argparse.py,sha256=Dc73G8lyoQBLvXhMYUbzQUh4SJu_OTvKUXjSUxq_ang,7499
|
5
5
|
omlish/c3.py,sha256=4vogWgwPb8TbNS2KkZxpoWbwjj7MuHG2lQG-hdtkvjI,8062
|
@@ -12,7 +12,7 @@ omlish/fnpairs.py,sha256=Sl8CMFNyDS-1JYAjSWqnT5FmUm9Lj6o7FxSRo7g4jww,10875
|
|
12
12
|
omlish/fnpipes.py,sha256=AJkgz9nvRRm7oqw7ZgYyz21klu276LWi54oYCLg-vOg,2196
|
13
13
|
omlish/genmachine.py,sha256=LCMiqvK32dAWtrlB6lKw9tXdQFiXC8rRdk4TMQYIroU,1603
|
14
14
|
omlish/iterators.py,sha256=GGLC7RIT86uXMjhIIIqnff_Iu5SI_b9rXYywYGFyzmo,7292
|
15
|
-
omlish/libc.py,sha256=
|
15
|
+
omlish/libc.py,sha256=8r7Ejyhttk9ruCfBkxNTrlzir5WPbDE2vmY7VPlceMA,15362
|
16
16
|
omlish/matchfns.py,sha256=I1IlQGfEyk_AcFSy6ulVS3utC-uwyZM2YfUXYHc9Bw0,6152
|
17
17
|
omlish/multiprocessing.py,sha256=QZT4C7I-uThCAjaEY3xgUYb-5GagUlnE4etN01LDyU4,5186
|
18
18
|
omlish/os.py,sha256=vO1sZCzAhVxo46tDFLrD52q2KuMFWQwu5MPJgSsnliI,3107
|
@@ -149,7 +149,7 @@ omlish/dataclasses/impl/repr.py,sha256=oLXBTxqp88NKmz82HrJeGiTEiwK4l5LlXQT9Q0-tX
|
|
149
149
|
omlish/dataclasses/impl/simple.py,sha256=EovA-GpmQYtB_svItO2byTAWqbKGF4njz0MdQts3QBU,3157
|
150
150
|
omlish/dataclasses/impl/slots.py,sha256=_sm-x9v1tPnXEHBHNUMTHZocgVyhZaPdvamIPPBUVyk,2635
|
151
151
|
omlish/dataclasses/impl/utils.py,sha256=aER2iL3UAtgS1BdLuEvTr9Tr2wC28wk1kiOeO-jIymw,6138
|
152
|
-
omlish/diag/__init__.py,sha256=
|
152
|
+
omlish/diag/__init__.py,sha256=4S8v0myJM4Zld6_FV6cPe_nSv0aJb6kXftEit0HkiGE,1141
|
153
153
|
omlish/diag/asts.py,sha256=BveUUNUcaAm4Hg55f4ZxGSI313E4L8cCZ5XjHpEkKVI,3325
|
154
154
|
omlish/diag/debug.py,sha256=YPzQXiBAJMYHYpBKzx0QhlLMZokjR5kkAVLodA3yddQ,424
|
155
155
|
omlish/diag/procfs.py,sha256=vBovaMvAUKdl7FbtFq3TNsSmdhs8DaYfhoEsKeWYta8,9704
|
@@ -158,7 +158,7 @@ omlish/diag/ps.py,sha256=1JWxZen3fVG-20R6ZZ8BtO_gpzw_5bhHZiKdoHkgxoU,1004
|
|
158
158
|
omlish/diag/pydevd.py,sha256=Fsx9rfCOnwLD6RLBqH0uAdtq75rbNeBAQfiDvIBd3e0,7295
|
159
159
|
omlish/diag/threads.py,sha256=1-x02VCDZ407gfbtXm1pWK-ubqhqfePm9PMqkHCVoqk,3642
|
160
160
|
omlish/diag/_pycharm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
161
|
-
omlish/diag/_pycharm/runhack.py,sha256=
|
161
|
+
omlish/diag/_pycharm/runhack.py,sha256=LFxuv7WibkC6Q7JmcKtPdytzinYFMZWqjane7YjPiVI,34463
|
162
162
|
omlish/diag/pycharm/__init__.py,sha256=sT-ub7flKeCCbM_i32z9-eGV8hgGJ45hwdcqtGDkVRY,153
|
163
163
|
omlish/diag/pycharm/cli.py,sha256=7SRh6yj8S5YGda4bq9BD4Kzwtgg4_Wa-K202ReZN2iI,1011
|
164
164
|
omlish/diag/pycharm/pycharm.py,sha256=g-IfF8FBH93o6k_KDrLy8kIiFSLe3n39I2URipfFy0Q,3115
|
@@ -249,10 +249,10 @@ omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
|
|
249
249
|
omlish/lang/descriptors.py,sha256=RRBbkMgTzg82fFFE4D0muqobpM-ZZaOta6yB1lpX3s8,6617
|
250
250
|
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
251
251
|
omlish/lang/functions.py,sha256=kkPfcdocg-OmyN7skIqrFxNvqAv89Zc_kXKYAN8vw8g,3895
|
252
|
-
omlish/lang/imports.py,sha256=
|
252
|
+
omlish/lang/imports.py,sha256=Oy7iInOTqgZv6nyRbnvGrPv4cKKIAzPbhfDXCajDUcc,6626
|
253
253
|
omlish/lang/iterables.py,sha256=_q6rHbdFfW3VBqez0IV3rUABoNxsA_oBv_sykm5zsbQ,2243
|
254
254
|
omlish/lang/maybes.py,sha256=NYHZDjqDtwPMheDrj2VtUVujxRPf8Qpgk4ZlZCTvBZc,3492
|
255
|
-
omlish/lang/objects.py,sha256=
|
255
|
+
omlish/lang/objects.py,sha256=t7Pvj9ILoxfdAMy5HC7bb9LfUokW5WfpLaoH2YYyTjQ,4460
|
256
256
|
omlish/lang/resolving.py,sha256=OuN2mDTPNyBUbcrswtvFKtj4xgH4H4WglgqSKv3MTy0,1606
|
257
257
|
omlish/lang/resources.py,sha256=-NmVTrSMKFZ6smVfOMz46ekZYVGgYh8cPooxQlFpG6s,2135
|
258
258
|
omlish/lang/strings.py,sha256=BsciSYnckD4vGtC6kmtnugR9IN6CIHdcjO4nZu-pSAw,3898
|
@@ -386,12 +386,12 @@ omlish/sql/alchemy/duckdb.py,sha256=kr7pIhiBLNAuZrcigHDtFg9zHkVcrRW3LfryO9VJ4mk,
|
|
386
386
|
omlish/sql/alchemy/exprs.py,sha256=gO4Fj4xEY-PuDgV-N8hBMy55glZz7O-4H7v1LWabfZY,323
|
387
387
|
omlish/sql/alchemy/secrets.py,sha256=EMfy4EfTbEvrlv_41oOhn8qsoF-eTkY7HciPenIE6rI,178
|
388
388
|
omlish/sql/alchemy/sqlean.py,sha256=RbkuOuFIfM4fowwKk8-sQ6Dxk-tTUwxS94nY5Kxt52s,403
|
389
|
-
omlish/testing/__init__.py,sha256=
|
390
|
-
omlish/testing/testing.py,sha256=
|
389
|
+
omlish/testing/__init__.py,sha256=M_BQrcCHkoL-ZvE-UpQ8XxXNYRRawhjUz4rCJnAqM2A,152
|
390
|
+
omlish/testing/testing.py,sha256=TT2wwSzPZ_KhIvKxpM1qc1yHKD-LHDNgGrcr_h8vs7c,2895
|
391
391
|
omlish/testing/pytest/__init__.py,sha256=B2nyJrjIoNcEopbg0IZ5UUDs4OHmQ8qqElFJfGcDdas,257
|
392
392
|
omlish/testing/pytest/helpers.py,sha256=TJpD60mBtLi9FtxX4TThfuXvg5FIRPSiZk1aeRwe-D4,197
|
393
393
|
omlish/testing/pytest/marks.py,sha256=ExuwitbMr1txMbaAcWZ652pYa30M-i3wVacnjqschTs,424
|
394
|
-
omlish/testing/pytest/skip.py,sha256=
|
394
|
+
omlish/testing/pytest/skip.py,sha256=NxTkAQiS3HKZR3sfFdxOR2LCFwtCveY6Ap-qtexiZbw,839
|
395
395
|
omlish/testing/pytest/inject/__init__.py,sha256=pdRKv1HcDmJ_yArKJbYITPXXZthRSGgBJWqITr0Er38,117
|
396
396
|
omlish/testing/pytest/inject/harness.py,sha256=v4DaKJ0KL8oQjzIMK43Gh8GHP4hiI6-lY37O9lyOHRk,5724
|
397
397
|
omlish/testing/pytest/plugins/__init__.py,sha256=ys1zXrYrNm7Uo6YOIVJ6Bd3dQo6kv387k7MbTYlqZSI,467
|
@@ -399,7 +399,7 @@ omlish/testing/pytest/plugins/_registry.py,sha256=IK04KlBgiOJxKAyCCgjpX2R-9tE-bt
|
|
399
399
|
omlish/testing/pytest/plugins/asyncs.py,sha256=SV6oKCy50CGkzLGYX-CT4MfWNqsrH8ONEbIWC3tFcHA,5324
|
400
400
|
omlish/testing/pytest/plugins/depskip.py,sha256=xithY-OMtjwhv8mcRNkv-WI_PSQtHldQ8H1s60MIXkk,2673
|
401
401
|
omlish/testing/pytest/plugins/logging.py,sha256=1zs6Xe54wiaSjabCviaFXwKkoN97CKm3mA5mEoUeJGs,380
|
402
|
-
omlish/testing/pytest/plugins/managermarks.py,sha256=
|
402
|
+
omlish/testing/pytest/plugins/managermarks.py,sha256=AP3ty-QB-8O5DkulwUOudBlUOvXMHhBfNyY-0yCmejk,1520
|
403
403
|
omlish/testing/pytest/plugins/pydevd.py,sha256=u1fxfCgFw4wGKBkMV_H_l9WI8JoUwlRff4iHEr_WYeE,319
|
404
404
|
omlish/testing/pytest/plugins/repeat.py,sha256=flSQzE9GFOWksVKz-mUGnpxJpv3yRqn1G4K8pW7JHs0,498
|
405
405
|
omlish/testing/pytest/plugins/skips.py,sha256=EoZDg1uWccgbAegmzqI85c7RliycD1e2J4Y7vfDRhwM,1041
|
@@ -412,9 +412,9 @@ omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
|
|
412
412
|
omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
|
413
413
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
414
414
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
415
|
-
omlish-0.0.0.
|
416
|
-
omlish-0.0.0.
|
417
|
-
omlish-0.0.0.
|
418
|
-
omlish-0.0.0.
|
419
|
-
omlish-0.0.0.
|
420
|
-
omlish-0.0.0.
|
415
|
+
omlish-0.0.0.dev69.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
416
|
+
omlish-0.0.0.dev69.dist-info/METADATA,sha256=60bC4G8a17heJL6mUwr4rCB1VrowRiVCdww0ArlUTXk,4167
|
417
|
+
omlish-0.0.0.dev69.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
418
|
+
omlish-0.0.0.dev69.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
419
|
+
omlish-0.0.0.dev69.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
420
|
+
omlish-0.0.0.dev69.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|