omdev 0.0.0.dev428__py3-none-any.whl → 0.0.0.dev430__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/.omlish-manifests.json +2 -2
- omdev/amalg/cli/main.py +1 -2
- omdev/cache/data/cache.py +2 -2
- omdev/cexts/_distutils/build_ext.py +5 -2
- omdev/cexts/_distutils/compilers/ccompiler.py +5 -2
- omdev/cexts/_distutils/compilers/options.py +3 -0
- omdev/cexts/_distutils/compilers/unixccompiler.py +6 -2
- omdev/cexts/_distutils/dir_util.py +6 -2
- omdev/cexts/_distutils/errors.py +3 -0
- omdev/cexts/_distutils/extension.py +3 -0
- omdev/cexts/_distutils/file_util.py +6 -2
- omdev/cexts/_distutils/modified.py +3 -0
- omdev/cexts/_distutils/spawn.py +6 -2
- omdev/cexts/_distutils/sysconfig.py +3 -0
- omdev/cexts/_distutils/util.py +6 -2
- omdev/cexts/_distutils/version.py +3 -0
- omdev/cexts/cmake.py +1 -2
- omdev/cexts/scan.py +1 -2
- omdev/dataclasses/codegen.py +2 -2
- omdev/precheck/lite.py +2 -2
- omdev/precheck/main.py +1 -2
- omdev/py/tools/mkrelimp.py +1 -2
- omdev/scripts/ci.py +87 -45
- omdev/scripts/interp.py +47 -13
- omdev/scripts/pyproject.py +86 -44
- omdev/tools/git/cli.py +1 -2
- {omdev-0.0.0.dev428.dist-info → omdev-0.0.0.dev430.dist-info}/METADATA +2 -2
- {omdev-0.0.0.dev428.dist-info → omdev-0.0.0.dev430.dist-info}/RECORD +32 -32
- {omdev-0.0.0.dev428.dist-info → omdev-0.0.0.dev430.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev428.dist-info → omdev-0.0.0.dev430.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev428.dist-info → omdev-0.0.0.dev430.dist-info}/licenses/LICENSE +0 -0
- {omdev-0.0.0.dev428.dist-info → omdev-0.0.0.dev430.dist-info}/top_level.txt +0 -0
omdev/.omlish-manifests.json
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
"module": ".cexts.cmake",
|
28
28
|
"attr": "_CLI_MODULE",
|
29
29
|
"file": "omdev/cexts/cmake.py",
|
30
|
-
"line":
|
30
|
+
"line": 332,
|
31
31
|
"value": {
|
32
32
|
"!.cli.types.CliModule": {
|
33
33
|
"name": "cmake",
|
@@ -284,7 +284,7 @@
|
|
284
284
|
"module": ".py.tools.mkrelimp",
|
285
285
|
"attr": "_CLI_MODULE",
|
286
286
|
"file": "omdev/py/tools/mkrelimp.py",
|
287
|
-
"line":
|
287
|
+
"line": 148,
|
288
288
|
"value": {
|
289
289
|
"!.cli.types.CliModule": {
|
290
290
|
"name": "py/mkrelimp",
|
omdev/amalg/cli/main.py
CHANGED
@@ -26,7 +26,6 @@ Targets:
|
|
26
26
|
- supervisor?
|
27
27
|
"""
|
28
28
|
import argparse
|
29
|
-
import logging
|
30
29
|
import os.path
|
31
30
|
import stat
|
32
31
|
import typing as ta
|
@@ -38,7 +37,7 @@ from ..gen.gen import SCAN_COMMENT
|
|
38
37
|
from ..gen.gen import AmalgGenerator
|
39
38
|
|
40
39
|
|
41
|
-
log =
|
40
|
+
log = logs.get_module_logger(globals())
|
42
41
|
|
43
42
|
|
44
43
|
##
|
omdev/cache/data/cache.py
CHANGED
@@ -11,7 +11,6 @@ TODO:
|
|
11
11
|
- download resume ala hf_hub
|
12
12
|
"""
|
13
13
|
import contextlib
|
14
|
-
import logging
|
15
14
|
import os.path
|
16
15
|
import shutil
|
17
16
|
import subprocess
|
@@ -25,6 +24,7 @@ from omlish import check
|
|
25
24
|
from omlish import lang
|
26
25
|
from omlish import marshal as msh
|
27
26
|
from omlish.formats import json
|
27
|
+
from omlish.logs import all as logs
|
28
28
|
from omlish.os.files import touch
|
29
29
|
|
30
30
|
from ...git.shallow import git_shallow_clone
|
@@ -37,7 +37,7 @@ from .specs import Spec
|
|
37
37
|
from .specs import UrlSpec
|
38
38
|
|
39
39
|
|
40
|
-
log =
|
40
|
+
log = logs.get_module_logger(globals())
|
41
41
|
|
42
42
|
|
43
43
|
##
|
@@ -37,7 +37,6 @@ License Agreement.
|
|
37
37
|
"""
|
38
38
|
import contextlib
|
39
39
|
import dataclasses as dc
|
40
|
-
import logging
|
41
40
|
import os
|
42
41
|
import site
|
43
42
|
import sys
|
@@ -46,6 +45,7 @@ import typing as ta
|
|
46
45
|
from omlish import cached
|
47
46
|
from omlish import check
|
48
47
|
from omlish import lang
|
48
|
+
from omlish.logs import all as logs
|
49
49
|
|
50
50
|
from . import compilers
|
51
51
|
from . import errors
|
@@ -55,7 +55,10 @@ from . import sysconfig
|
|
55
55
|
from . import util
|
56
56
|
|
57
57
|
|
58
|
-
log =
|
58
|
+
log = logs.get_module_logger(globals())
|
59
|
+
|
60
|
+
|
61
|
+
##
|
59
62
|
|
60
63
|
|
61
64
|
def _get_str_config_var(name: str) -> str:
|
@@ -1,7 +1,6 @@
|
|
1
1
|
"""
|
2
2
|
Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.
|
3
3
|
"""
|
4
|
-
import logging
|
5
4
|
import os
|
6
5
|
import re
|
7
6
|
import sys
|
@@ -9,6 +8,7 @@ import typing as ta
|
|
9
8
|
import warnings
|
10
9
|
|
11
10
|
from omlish import check
|
11
|
+
from omlish.logs import all as logs
|
12
12
|
|
13
13
|
from ..dir_util import mkpath
|
14
14
|
from ..errors import CompileError
|
@@ -25,7 +25,10 @@ from .options import Macro
|
|
25
25
|
from .options import gen_preprocess_options
|
26
26
|
|
27
27
|
|
28
|
-
log =
|
28
|
+
log = logs.get_module_logger(globals())
|
29
|
+
|
30
|
+
|
31
|
+
##
|
29
32
|
|
30
33
|
|
31
34
|
class CCompiler:
|
@@ -14,13 +14,14 @@ from __future__ import annotations
|
|
14
14
|
|
15
15
|
import importlib
|
16
16
|
import itertools
|
17
|
-
import logging
|
18
17
|
import os
|
19
18
|
import re
|
20
19
|
import shlex
|
21
20
|
import sys
|
22
21
|
import typing as ta
|
23
22
|
|
23
|
+
from omlish.logs import all as logs
|
24
|
+
|
24
25
|
from .. import sysconfig
|
25
26
|
from ..errors import CompileError
|
26
27
|
from ..errors import DistutilsExecError
|
@@ -32,7 +33,10 @@ from .options import gen_lib_options
|
|
32
33
|
from .options import gen_preprocess_options
|
33
34
|
|
34
35
|
|
35
|
-
log =
|
36
|
+
log = logs.get_module_logger(globals())
|
37
|
+
|
38
|
+
|
39
|
+
##
|
36
40
|
|
37
41
|
|
38
42
|
def bypass_compiler_fixup(cmd, args):
|
@@ -1,13 +1,17 @@
|
|
1
1
|
"""Utility functions for manipulating directories and directory trees."""
|
2
2
|
import errno
|
3
|
-
import logging
|
4
3
|
import os
|
5
4
|
|
5
|
+
from omlish.logs import all as logs
|
6
|
+
|
6
7
|
from .errors import DistutilsFileError
|
7
8
|
from .errors import DistutilsInternalError
|
8
9
|
|
9
10
|
|
10
|
-
log =
|
11
|
+
log = logs.get_module_logger(globals())
|
12
|
+
|
13
|
+
|
14
|
+
##
|
11
15
|
|
12
16
|
|
13
17
|
# cache for by mkpath() -- in addition to cheapening redundant calls, eliminates redundant "creating /foo/bar/baz"
|
omdev/cexts/_distutils/errors.py
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
"""Utility functions for operating on single files."""
|
2
2
|
import contextlib
|
3
|
-
import logging
|
4
3
|
import os
|
5
4
|
|
5
|
+
from omlish.logs import all as logs
|
6
|
+
|
6
7
|
from .errors import DistutilsFileError
|
7
8
|
|
8
9
|
|
9
|
-
log =
|
10
|
+
log = logs.get_module_logger(globals())
|
11
|
+
|
12
|
+
|
13
|
+
##
|
10
14
|
|
11
15
|
|
12
16
|
# for generating verbose output in 'copy_file()'
|
omdev/cexts/_distutils/spawn.py
CHANGED
@@ -4,15 +4,19 @@ specific functions for launching another program in a sub-process.
|
|
4
4
|
Also provides the 'find_executable()' to search the path for a given
|
5
5
|
executable name.
|
6
6
|
"""
|
7
|
-
import logging
|
8
7
|
import os
|
9
8
|
import subprocess
|
10
9
|
import sys
|
11
10
|
|
11
|
+
from omlish.logs import all as logs
|
12
|
+
|
12
13
|
from .errors import DistutilsExecError
|
13
14
|
|
14
15
|
|
15
|
-
log =
|
16
|
+
log = logs.get_module_logger(globals())
|
17
|
+
|
18
|
+
|
19
|
+
##
|
16
20
|
|
17
21
|
|
18
22
|
def spawn(cmd, search_path=1, verbose=0, dry_run=False, env=None, debug=False): # noqa: C901
|
omdev/cexts/_distutils/util.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
"""Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules."""
|
2
2
|
import functools
|
3
|
-
import logging
|
4
3
|
import os
|
5
4
|
import re
|
6
5
|
import string
|
@@ -8,10 +7,15 @@ import sys
|
|
8
7
|
import sysconfig
|
9
8
|
import typing as ta
|
10
9
|
|
10
|
+
from omlish.logs import all as logs
|
11
|
+
|
11
12
|
from .errors import DistutilsPlatformError
|
12
13
|
|
13
14
|
|
14
|
-
log =
|
15
|
+
log = logs.get_module_logger(globals())
|
16
|
+
|
17
|
+
|
18
|
+
##
|
15
19
|
|
16
20
|
|
17
21
|
def pass_none(func):
|
omdev/cexts/cmake.py
CHANGED
@@ -33,7 +33,6 @@ Done:
|
|
33
33
|
import argparse
|
34
34
|
import dataclasses as dc
|
35
35
|
import io
|
36
|
-
import logging
|
37
36
|
import os.path
|
38
37
|
import shutil
|
39
38
|
import sys
|
@@ -50,7 +49,7 @@ from ..cli import CliModule
|
|
50
49
|
from .magic import CextMagic
|
51
50
|
|
52
51
|
|
53
|
-
log =
|
52
|
+
log = logs.get_module_logger(globals())
|
54
53
|
|
55
54
|
|
56
55
|
##
|
omdev/cexts/scan.py
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
import argparse
|
2
|
-
import logging
|
3
2
|
import os.path
|
4
3
|
import typing as ta
|
5
4
|
|
@@ -8,7 +7,7 @@ from omlish.logs import all as logs
|
|
8
7
|
from .magic import CextMagic
|
9
8
|
|
10
9
|
|
11
|
-
log =
|
10
|
+
log = logs.get_module_logger(globals())
|
12
11
|
|
13
12
|
|
14
13
|
##
|
omdev/dataclasses/codegen.py
CHANGED
@@ -8,7 +8,6 @@ TODO:
|
|
8
8
|
- more sparse / diffuse intent, not package-level
|
9
9
|
"""
|
10
10
|
import importlib
|
11
|
-
import logging
|
12
11
|
import os.path
|
13
12
|
import typing as ta
|
14
13
|
|
@@ -21,9 +20,10 @@ from omlish.dataclasses.impl.generation.processor import Codegen as CodegenProce
|
|
21
20
|
from omlish.dataclasses.impl.generation.processor import GeneratorProcessor
|
22
21
|
from omlish.dataclasses.impl.processing.base import ProcessingContext
|
23
22
|
from omlish.dataclasses.impl.processing.driving import processing_options_context
|
23
|
+
from omlish.logs import all as logs
|
24
24
|
|
25
25
|
|
26
|
-
log =
|
26
|
+
log = logs.get_module_logger(globals())
|
27
27
|
|
28
28
|
|
29
29
|
##
|
omdev/precheck/lite.py
CHANGED
@@ -2,13 +2,13 @@ import asyncio
|
|
2
2
|
import dataclasses as dc
|
3
3
|
import glob
|
4
4
|
import inspect
|
5
|
-
import logging
|
6
5
|
import os.path
|
7
6
|
import subprocess
|
8
7
|
import textwrap
|
9
8
|
import typing as ta
|
10
9
|
|
11
10
|
from omlish import cached
|
11
|
+
from omlish.logs import all as logs
|
12
12
|
from omlish.subprocesses.wrap import subprocess_maybe_shell_wrap_exec
|
13
13
|
|
14
14
|
from .. import magic
|
@@ -16,7 +16,7 @@ from .base import Precheck
|
|
16
16
|
from .base import PrecheckContext
|
17
17
|
|
18
18
|
|
19
|
-
log =
|
19
|
+
log = logs.get_module_logger(globals())
|
20
20
|
|
21
21
|
|
22
22
|
##
|
omdev/precheck/main.py
CHANGED
@@ -20,7 +20,6 @@ TODO:
|
|
20
20
|
"""
|
21
21
|
import argparse
|
22
22
|
import asyncio
|
23
|
-
import logging
|
24
23
|
import os.path
|
25
24
|
import sys
|
26
25
|
import typing as ta
|
@@ -43,7 +42,7 @@ from .scripts import ScriptDepsPrecheck
|
|
43
42
|
from .unicode import UnicodePrecheck
|
44
43
|
|
45
44
|
|
46
|
-
log =
|
45
|
+
log = logs.get_module_logger(globals())
|
47
46
|
|
48
47
|
|
49
48
|
##
|
omdev/py/tools/mkrelimp.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import argparse
|
2
2
|
import itertools
|
3
|
-
import logging
|
4
3
|
import os.path
|
5
4
|
import typing as ta
|
6
5
|
|
@@ -13,7 +12,7 @@ from ...tokens import all as tks
|
|
13
12
|
T = ta.TypeVar('T')
|
14
13
|
|
15
14
|
|
16
|
-
log =
|
15
|
+
log = logs.get_module_logger(globals())
|
17
16
|
|
18
17
|
|
19
18
|
##
|
omdev/scripts/ci.py
CHANGED
@@ -1807,19 +1807,16 @@ def format_num_bytes(num_bytes: int) -> str:
|
|
1807
1807
|
##
|
1808
1808
|
|
1809
1809
|
|
1810
|
-
|
1811
|
-
|
1812
|
-
return ()
|
1813
|
-
|
1814
|
-
|
1815
|
-
LoggingContextInfo: type = ta.cast(ta.Any, _LoggingContextInfo())
|
1810
|
+
def logging_context_info(cls):
|
1811
|
+
return cls
|
1816
1812
|
|
1817
1813
|
|
1818
1814
|
##
|
1819
1815
|
|
1820
1816
|
|
1817
|
+
@logging_context_info
|
1821
1818
|
@ta.final
|
1822
|
-
class LoggingSourceFileInfo(
|
1819
|
+
class LoggingSourceFileInfo(ta.NamedTuple):
|
1823
1820
|
file_name: str
|
1824
1821
|
module: str
|
1825
1822
|
|
@@ -1836,16 +1833,17 @@ class LoggingSourceFileInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[
|
|
1836
1833
|
return None
|
1837
1834
|
|
1838
1835
|
return cls(
|
1839
|
-
file_name,
|
1840
|
-
module,
|
1836
|
+
file_name=file_name,
|
1837
|
+
module=module,
|
1841
1838
|
)
|
1842
1839
|
|
1843
1840
|
|
1844
1841
|
##
|
1845
1842
|
|
1846
1843
|
|
1844
|
+
@logging_context_info
|
1847
1845
|
@ta.final
|
1848
|
-
class LoggingThreadInfo(
|
1846
|
+
class LoggingThreadInfo(ta.NamedTuple):
|
1849
1847
|
ident: int
|
1850
1848
|
native_id: ta.Optional[int]
|
1851
1849
|
name: str
|
@@ -1853,31 +1851,33 @@ class LoggingThreadInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc
|
|
1853
1851
|
@classmethod
|
1854
1852
|
def build(cls) -> 'LoggingThreadInfo':
|
1855
1853
|
return cls(
|
1856
|
-
threading.get_ident(),
|
1857
|
-
threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
1858
|
-
threading.current_thread().name,
|
1854
|
+
ident=threading.get_ident(),
|
1855
|
+
native_id=threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
1856
|
+
name=threading.current_thread().name,
|
1859
1857
|
)
|
1860
1858
|
|
1861
1859
|
|
1862
1860
|
##
|
1863
1861
|
|
1864
1862
|
|
1863
|
+
@logging_context_info
|
1865
1864
|
@ta.final
|
1866
|
-
class LoggingProcessInfo(
|
1865
|
+
class LoggingProcessInfo(ta.NamedTuple):
|
1867
1866
|
pid: int
|
1868
1867
|
|
1869
1868
|
@classmethod
|
1870
1869
|
def build(cls) -> 'LoggingProcessInfo':
|
1871
1870
|
return cls(
|
1872
|
-
os.getpid(),
|
1871
|
+
pid=os.getpid(),
|
1873
1872
|
)
|
1874
1873
|
|
1875
1874
|
|
1876
1875
|
##
|
1877
1876
|
|
1878
1877
|
|
1878
|
+
@logging_context_info
|
1879
1879
|
@ta.final
|
1880
|
-
class LoggingMultiprocessingInfo(
|
1880
|
+
class LoggingMultiprocessingInfo(ta.NamedTuple):
|
1881
1881
|
process_name: str
|
1882
1882
|
|
1883
1883
|
@classmethod
|
@@ -1887,15 +1887,16 @@ class LoggingMultiprocessingInfo(LoggingContextInfo, ta.NamedTuple): # type: ig
|
|
1887
1887
|
return None
|
1888
1888
|
|
1889
1889
|
return cls(
|
1890
|
-
mp.current_process().name,
|
1890
|
+
process_name=mp.current_process().name,
|
1891
1891
|
)
|
1892
1892
|
|
1893
1893
|
|
1894
1894
|
##
|
1895
1895
|
|
1896
1896
|
|
1897
|
+
@logging_context_info
|
1897
1898
|
@ta.final
|
1898
|
-
class LoggingAsyncioTaskInfo(
|
1899
|
+
class LoggingAsyncioTaskInfo(ta.NamedTuple):
|
1899
1900
|
name: str
|
1900
1901
|
|
1901
1902
|
@classmethod
|
@@ -1913,7 +1914,7 @@ class LoggingAsyncioTaskInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore
|
|
1913
1914
|
return None
|
1914
1915
|
|
1915
1916
|
return cls(
|
1916
|
-
task.get_name(), # Always non-None
|
1917
|
+
name=task.get_name(), # Always non-None
|
1917
1918
|
)
|
1918
1919
|
|
1919
1920
|
|
@@ -1936,36 +1937,66 @@ class NamedLogLevel(int):
|
|
1936
1937
|
|
1937
1938
|
#
|
1938
1939
|
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1940
|
+
_CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
|
1941
|
+
|
1942
|
+
@ta.overload
|
1943
|
+
def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
|
1944
|
+
...
|
1942
1945
|
|
1943
|
-
|
1946
|
+
@ta.overload
|
1947
|
+
def __new__(cls, i: int, /) -> 'NamedLogLevel':
|
1948
|
+
...
|
1949
|
+
|
1950
|
+
def __new__(cls, x, offset=0, /):
|
1951
|
+
if isinstance(x, str):
|
1952
|
+
return cls(cls._INTS_BY_NAME[x.upper()] + offset)
|
1953
|
+
elif not offset and (c := cls._CACHE.get(x)) is not None:
|
1954
|
+
return c
|
1955
|
+
else:
|
1956
|
+
return super().__new__(cls, x + offset)
|
1957
|
+
|
1958
|
+
#
|
1959
|
+
|
1960
|
+
_name_and_offset: ta.Tuple[str, int]
|
1944
1961
|
|
1945
1962
|
@property
|
1946
|
-
def
|
1963
|
+
def name_and_offset(self) -> ta.Tuple[str, int]:
|
1947
1964
|
try:
|
1948
|
-
return self.
|
1965
|
+
return self._name_and_offset
|
1949
1966
|
except AttributeError:
|
1950
1967
|
pass
|
1951
1968
|
|
1952
|
-
if (n := self.
|
1969
|
+
if (n := self._NAMES_BY_INT.get(self)) is not None:
|
1970
|
+
t = (n, 0)
|
1971
|
+
else:
|
1953
1972
|
for n, i in self._NAME_INT_PAIRS: # noqa
|
1954
1973
|
if self >= i:
|
1974
|
+
t = (n, (self - i))
|
1955
1975
|
break
|
1956
1976
|
else:
|
1957
|
-
|
1977
|
+
t = ('NOTSET', int(self))
|
1958
1978
|
|
1959
|
-
self.
|
1979
|
+
self._name_and_offset = t
|
1980
|
+
return t
|
1981
|
+
|
1982
|
+
@property
|
1983
|
+
def exact_name(self) -> ta.Optional[str]:
|
1984
|
+
n, o = self.name_and_offset
|
1985
|
+
return n if not o else None
|
1986
|
+
|
1987
|
+
@property
|
1988
|
+
def effective_name(self) -> str:
|
1989
|
+
n, _ = self.name_and_offset
|
1960
1990
|
return n
|
1961
1991
|
|
1962
1992
|
#
|
1963
1993
|
|
1964
|
-
def __repr__(self) -> str:
|
1965
|
-
return f'{self.__class__.__name__}({int(self)})'
|
1966
|
-
|
1967
1994
|
def __str__(self) -> str:
|
1968
|
-
return self.exact_name or f'{self.effective_name
|
1995
|
+
return self.exact_name or f'{self.effective_name}{int(self):+}'
|
1996
|
+
|
1997
|
+
def __repr__(self) -> str:
|
1998
|
+
n, o = self.name_and_offset
|
1999
|
+
return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
|
1969
2000
|
|
1970
2001
|
#
|
1971
2002
|
|
@@ -1985,6 +2016,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
|
|
1985
2016
|
NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
|
1986
2017
|
|
1987
2018
|
|
2019
|
+
NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
|
2020
|
+
|
2021
|
+
|
1988
2022
|
########################################
|
1989
2023
|
# ../../../omlish/logs/std/filters.py
|
1990
2024
|
|
@@ -4952,7 +4986,9 @@ class PredicateTimeout(Timeout):
|
|
4952
4986
|
##
|
4953
4987
|
|
4954
4988
|
|
4955
|
-
|
4989
|
+
@logging_context_info
|
4990
|
+
@ta.final
|
4991
|
+
class LoggingCaller(ta.NamedTuple):
|
4956
4992
|
file_path: str
|
4957
4993
|
line_no: int
|
4958
4994
|
name: str
|
@@ -5005,10 +5041,10 @@ class LoggingCaller(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
|
|
5005
5041
|
sinfo = sinfo[:-1]
|
5006
5042
|
|
5007
5043
|
return cls(
|
5008
|
-
f.f_code.co_filename,
|
5009
|
-
f.f_lineno or 0,
|
5010
|
-
f.f_code.co_name,
|
5011
|
-
sinfo,
|
5044
|
+
file_path=f.f_code.co_filename,
|
5045
|
+
line_no=f.f_lineno or 0,
|
5046
|
+
name=f.f_code.co_name,
|
5047
|
+
stack_info=sinfo,
|
5012
5048
|
)
|
5013
5049
|
|
5014
5050
|
|
@@ -5019,6 +5055,7 @@ class LoggingCaller(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
|
|
5019
5055
|
##
|
5020
5056
|
|
5021
5057
|
|
5058
|
+
@ta.runtime_checkable
|
5022
5059
|
class LoggerLike(ta.Protocol):
|
5023
5060
|
"""Satisfied by both our Logger and stdlib logging.Logger."""
|
5024
5061
|
|
@@ -5107,7 +5144,9 @@ class JsonLoggingFormatter(logging.Formatter):
|
|
5107
5144
|
##
|
5108
5145
|
|
5109
5146
|
|
5110
|
-
|
5147
|
+
@logging_context_info
|
5148
|
+
@ta.final
|
5149
|
+
class LoggingTimeFields(ta.NamedTuple):
|
5111
5150
|
"""Maps directly to stdlib `logging.LogRecord` fields, and must be kept in sync with it."""
|
5112
5151
|
|
5113
5152
|
created: float
|
@@ -5155,9 +5194,9 @@ class LoggingTimeFields(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc
|
|
5155
5194
|
relative_created = (time_ns - start_time_ns) / 1e6
|
5156
5195
|
|
5157
5196
|
return cls(
|
5158
|
-
created,
|
5159
|
-
msecs,
|
5160
|
-
relative_created,
|
5197
|
+
created=created,
|
5198
|
+
msecs=msecs,
|
5199
|
+
relative_created=relative_created,
|
5161
5200
|
)
|
5162
5201
|
|
5163
5202
|
|
@@ -9432,7 +9471,7 @@ class CoroHttpServer:
|
|
9432
9471
|
|
9433
9472
|
class AnyLogger(Abstract, ta.Generic[T]):
|
9434
9473
|
def is_enabled_for(self, level: LogLevel) -> bool:
|
9435
|
-
return self.get_effective_level()
|
9474
|
+
return level >= self.get_effective_level()
|
9436
9475
|
|
9437
9476
|
@abc.abstractmethod
|
9438
9477
|
def get_effective_level(self) -> LogLevel:
|
@@ -9629,7 +9668,7 @@ class AsyncLogger(AnyLogger[ta.Awaitable[None]], Abstract):
|
|
9629
9668
|
class AnyNopLogger(AnyLogger[T], Abstract):
|
9630
9669
|
@ta.final
|
9631
9670
|
def get_effective_level(self) -> LogLevel:
|
9632
|
-
return 999
|
9671
|
+
return -999
|
9633
9672
|
|
9634
9673
|
|
9635
9674
|
@ta.final
|
@@ -10010,7 +10049,7 @@ def generate_temp_localhost_ssl_cert() -> TempSslCert:
|
|
10010
10049
|
|
10011
10050
|
|
10012
10051
|
class SocketServer:
|
10013
|
-
_DEFAULT_LOGGER = logging.getLogger('.'.join([__name__, 'SocketServer']))
|
10052
|
+
_DEFAULT_LOGGER: LoggerLike = logging.getLogger('.'.join([__name__, 'SocketServer'])) # FIXME
|
10014
10053
|
|
10015
10054
|
def __init__(
|
10016
10055
|
self,
|
@@ -11132,7 +11171,7 @@ class CoroHttpServerSocketHandler(SocketHandler_):
|
|
11132
11171
|
|
11133
11172
|
|
11134
11173
|
########################################
|
11135
|
-
# ../../../omlish/logs/std/
|
11174
|
+
# ../../../omlish/logs/std/loggers.py
|
11136
11175
|
|
11137
11176
|
|
11138
11177
|
##
|
@@ -11148,6 +11187,9 @@ class StdLogger(Logger):
|
|
11148
11187
|
def std(self) -> logging.Logger:
|
11149
11188
|
return self._std
|
11150
11189
|
|
11190
|
+
def is_enabled_for(self, level: LogLevel) -> bool:
|
11191
|
+
return self._std.isEnabledFor(level)
|
11192
|
+
|
11151
11193
|
def get_effective_level(self) -> LogLevel:
|
11152
11194
|
return self._std.getEffectiveLevel()
|
11153
11195
|
|
omdev/scripts/interp.py
CHANGED
@@ -1407,36 +1407,66 @@ class NamedLogLevel(int):
|
|
1407
1407
|
|
1408
1408
|
#
|
1409
1409
|
|
1410
|
-
|
1411
|
-
|
1412
|
-
|
1410
|
+
_CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
|
1411
|
+
|
1412
|
+
@ta.overload
|
1413
|
+
def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
|
1414
|
+
...
|
1415
|
+
|
1416
|
+
@ta.overload
|
1417
|
+
def __new__(cls, i: int, /) -> 'NamedLogLevel':
|
1418
|
+
...
|
1419
|
+
|
1420
|
+
def __new__(cls, x, offset=0, /):
|
1421
|
+
if isinstance(x, str):
|
1422
|
+
return cls(cls._INTS_BY_NAME[x.upper()] + offset)
|
1423
|
+
elif not offset and (c := cls._CACHE.get(x)) is not None:
|
1424
|
+
return c
|
1425
|
+
else:
|
1426
|
+
return super().__new__(cls, x + offset)
|
1427
|
+
|
1428
|
+
#
|
1413
1429
|
|
1414
|
-
|
1430
|
+
_name_and_offset: ta.Tuple[str, int]
|
1415
1431
|
|
1416
1432
|
@property
|
1417
|
-
def
|
1433
|
+
def name_and_offset(self) -> ta.Tuple[str, int]:
|
1418
1434
|
try:
|
1419
|
-
return self.
|
1435
|
+
return self._name_and_offset
|
1420
1436
|
except AttributeError:
|
1421
1437
|
pass
|
1422
1438
|
|
1423
|
-
if (n := self.
|
1439
|
+
if (n := self._NAMES_BY_INT.get(self)) is not None:
|
1440
|
+
t = (n, 0)
|
1441
|
+
else:
|
1424
1442
|
for n, i in self._NAME_INT_PAIRS: # noqa
|
1425
1443
|
if self >= i:
|
1444
|
+
t = (n, (self - i))
|
1426
1445
|
break
|
1427
1446
|
else:
|
1428
|
-
|
1447
|
+
t = ('NOTSET', int(self))
|
1448
|
+
|
1449
|
+
self._name_and_offset = t
|
1450
|
+
return t
|
1451
|
+
|
1452
|
+
@property
|
1453
|
+
def exact_name(self) -> ta.Optional[str]:
|
1454
|
+
n, o = self.name_and_offset
|
1455
|
+
return n if not o else None
|
1429
1456
|
|
1430
|
-
|
1457
|
+
@property
|
1458
|
+
def effective_name(self) -> str:
|
1459
|
+
n, _ = self.name_and_offset
|
1431
1460
|
return n
|
1432
1461
|
|
1433
1462
|
#
|
1434
1463
|
|
1435
|
-
def __repr__(self) -> str:
|
1436
|
-
return f'{self.__class__.__name__}({int(self)})'
|
1437
|
-
|
1438
1464
|
def __str__(self) -> str:
|
1439
|
-
return self.exact_name or f'{self.effective_name
|
1465
|
+
return self.exact_name or f'{self.effective_name}{int(self):+}'
|
1466
|
+
|
1467
|
+
def __repr__(self) -> str:
|
1468
|
+
n, o = self.name_and_offset
|
1469
|
+
return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
|
1440
1470
|
|
1441
1471
|
#
|
1442
1472
|
|
@@ -1456,6 +1486,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
|
|
1456
1486
|
NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
|
1457
1487
|
|
1458
1488
|
|
1489
|
+
NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
|
1490
|
+
|
1491
|
+
|
1459
1492
|
########################################
|
1460
1493
|
# ../../../omlish/logs/std/filters.py
|
1461
1494
|
|
@@ -2826,6 +2859,7 @@ class PredicateTimeout(Timeout):
|
|
2826
2859
|
##
|
2827
2860
|
|
2828
2861
|
|
2862
|
+
@ta.runtime_checkable
|
2829
2863
|
class LoggerLike(ta.Protocol):
|
2830
2864
|
"""Satisfied by both our Logger and stdlib logging.Logger."""
|
2831
2865
|
|
omdev/scripts/pyproject.py
CHANGED
@@ -2966,19 +2966,16 @@ def typing_annotations_attr() -> str:
|
|
2966
2966
|
##
|
2967
2967
|
|
2968
2968
|
|
2969
|
-
|
2970
|
-
|
2971
|
-
return ()
|
2972
|
-
|
2973
|
-
|
2974
|
-
LoggingContextInfo: type = ta.cast(ta.Any, _LoggingContextInfo())
|
2969
|
+
def logging_context_info(cls):
|
2970
|
+
return cls
|
2975
2971
|
|
2976
2972
|
|
2977
2973
|
##
|
2978
2974
|
|
2979
2975
|
|
2976
|
+
@logging_context_info
|
2980
2977
|
@ta.final
|
2981
|
-
class LoggingSourceFileInfo(
|
2978
|
+
class LoggingSourceFileInfo(ta.NamedTuple):
|
2982
2979
|
file_name: str
|
2983
2980
|
module: str
|
2984
2981
|
|
@@ -2995,16 +2992,17 @@ class LoggingSourceFileInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[
|
|
2995
2992
|
return None
|
2996
2993
|
|
2997
2994
|
return cls(
|
2998
|
-
file_name,
|
2999
|
-
module,
|
2995
|
+
file_name=file_name,
|
2996
|
+
module=module,
|
3000
2997
|
)
|
3001
2998
|
|
3002
2999
|
|
3003
3000
|
##
|
3004
3001
|
|
3005
3002
|
|
3003
|
+
@logging_context_info
|
3006
3004
|
@ta.final
|
3007
|
-
class LoggingThreadInfo(
|
3005
|
+
class LoggingThreadInfo(ta.NamedTuple):
|
3008
3006
|
ident: int
|
3009
3007
|
native_id: ta.Optional[int]
|
3010
3008
|
name: str
|
@@ -3012,31 +3010,33 @@ class LoggingThreadInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc
|
|
3012
3010
|
@classmethod
|
3013
3011
|
def build(cls) -> 'LoggingThreadInfo':
|
3014
3012
|
return cls(
|
3015
|
-
threading.get_ident(),
|
3016
|
-
threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
3017
|
-
threading.current_thread().name,
|
3013
|
+
ident=threading.get_ident(),
|
3014
|
+
native_id=threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
|
3015
|
+
name=threading.current_thread().name,
|
3018
3016
|
)
|
3019
3017
|
|
3020
3018
|
|
3021
3019
|
##
|
3022
3020
|
|
3023
3021
|
|
3022
|
+
@logging_context_info
|
3024
3023
|
@ta.final
|
3025
|
-
class LoggingProcessInfo(
|
3024
|
+
class LoggingProcessInfo(ta.NamedTuple):
|
3026
3025
|
pid: int
|
3027
3026
|
|
3028
3027
|
@classmethod
|
3029
3028
|
def build(cls) -> 'LoggingProcessInfo':
|
3030
3029
|
return cls(
|
3031
|
-
os.getpid(),
|
3030
|
+
pid=os.getpid(),
|
3032
3031
|
)
|
3033
3032
|
|
3034
3033
|
|
3035
3034
|
##
|
3036
3035
|
|
3037
3036
|
|
3037
|
+
@logging_context_info
|
3038
3038
|
@ta.final
|
3039
|
-
class LoggingMultiprocessingInfo(
|
3039
|
+
class LoggingMultiprocessingInfo(ta.NamedTuple):
|
3040
3040
|
process_name: str
|
3041
3041
|
|
3042
3042
|
@classmethod
|
@@ -3046,15 +3046,16 @@ class LoggingMultiprocessingInfo(LoggingContextInfo, ta.NamedTuple): # type: ig
|
|
3046
3046
|
return None
|
3047
3047
|
|
3048
3048
|
return cls(
|
3049
|
-
mp.current_process().name,
|
3049
|
+
process_name=mp.current_process().name,
|
3050
3050
|
)
|
3051
3051
|
|
3052
3052
|
|
3053
3053
|
##
|
3054
3054
|
|
3055
3055
|
|
3056
|
+
@logging_context_info
|
3056
3057
|
@ta.final
|
3057
|
-
class LoggingAsyncioTaskInfo(
|
3058
|
+
class LoggingAsyncioTaskInfo(ta.NamedTuple):
|
3058
3059
|
name: str
|
3059
3060
|
|
3060
3061
|
@classmethod
|
@@ -3072,7 +3073,7 @@ class LoggingAsyncioTaskInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore
|
|
3072
3073
|
return None
|
3073
3074
|
|
3074
3075
|
return cls(
|
3075
|
-
task.get_name(), # Always non-None
|
3076
|
+
name=task.get_name(), # Always non-None
|
3076
3077
|
)
|
3077
3078
|
|
3078
3079
|
|
@@ -3095,36 +3096,66 @@ class NamedLogLevel(int):
|
|
3095
3096
|
|
3096
3097
|
#
|
3097
3098
|
|
3098
|
-
|
3099
|
-
|
3100
|
-
|
3099
|
+
_CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
|
3100
|
+
|
3101
|
+
@ta.overload
|
3102
|
+
def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
|
3103
|
+
...
|
3101
3104
|
|
3102
|
-
|
3105
|
+
@ta.overload
|
3106
|
+
def __new__(cls, i: int, /) -> 'NamedLogLevel':
|
3107
|
+
...
|
3108
|
+
|
3109
|
+
def __new__(cls, x, offset=0, /):
|
3110
|
+
if isinstance(x, str):
|
3111
|
+
return cls(cls._INTS_BY_NAME[x.upper()] + offset)
|
3112
|
+
elif not offset and (c := cls._CACHE.get(x)) is not None:
|
3113
|
+
return c
|
3114
|
+
else:
|
3115
|
+
return super().__new__(cls, x + offset)
|
3116
|
+
|
3117
|
+
#
|
3118
|
+
|
3119
|
+
_name_and_offset: ta.Tuple[str, int]
|
3103
3120
|
|
3104
3121
|
@property
|
3105
|
-
def
|
3122
|
+
def name_and_offset(self) -> ta.Tuple[str, int]:
|
3106
3123
|
try:
|
3107
|
-
return self.
|
3124
|
+
return self._name_and_offset
|
3108
3125
|
except AttributeError:
|
3109
3126
|
pass
|
3110
3127
|
|
3111
|
-
if (n := self.
|
3128
|
+
if (n := self._NAMES_BY_INT.get(self)) is not None:
|
3129
|
+
t = (n, 0)
|
3130
|
+
else:
|
3112
3131
|
for n, i in self._NAME_INT_PAIRS: # noqa
|
3113
3132
|
if self >= i:
|
3133
|
+
t = (n, (self - i))
|
3114
3134
|
break
|
3115
3135
|
else:
|
3116
|
-
|
3136
|
+
t = ('NOTSET', int(self))
|
3117
3137
|
|
3118
|
-
self.
|
3138
|
+
self._name_and_offset = t
|
3139
|
+
return t
|
3140
|
+
|
3141
|
+
@property
|
3142
|
+
def exact_name(self) -> ta.Optional[str]:
|
3143
|
+
n, o = self.name_and_offset
|
3144
|
+
return n if not o else None
|
3145
|
+
|
3146
|
+
@property
|
3147
|
+
def effective_name(self) -> str:
|
3148
|
+
n, _ = self.name_and_offset
|
3119
3149
|
return n
|
3120
3150
|
|
3121
3151
|
#
|
3122
3152
|
|
3123
|
-
def __repr__(self) -> str:
|
3124
|
-
return f'{self.__class__.__name__}({int(self)})'
|
3125
|
-
|
3126
3153
|
def __str__(self) -> str:
|
3127
|
-
return self.exact_name or f'{self.effective_name
|
3154
|
+
return self.exact_name or f'{self.effective_name}{int(self):+}'
|
3155
|
+
|
3156
|
+
def __repr__(self) -> str:
|
3157
|
+
n, o = self.name_and_offset
|
3158
|
+
return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
|
3128
3159
|
|
3129
3160
|
#
|
3130
3161
|
|
@@ -3144,6 +3175,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
|
|
3144
3175
|
NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
|
3145
3176
|
|
3146
3177
|
|
3178
|
+
NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
|
3179
|
+
|
3180
|
+
|
3147
3181
|
########################################
|
3148
3182
|
# ../../../omlish/logs/std/filters.py
|
3149
3183
|
|
@@ -5532,7 +5566,9 @@ class PredicateTimeout(Timeout):
|
|
5532
5566
|
##
|
5533
5567
|
|
5534
5568
|
|
5535
|
-
|
5569
|
+
@logging_context_info
|
5570
|
+
@ta.final
|
5571
|
+
class LoggingCaller(ta.NamedTuple):
|
5536
5572
|
file_path: str
|
5537
5573
|
line_no: int
|
5538
5574
|
name: str
|
@@ -5585,10 +5621,10 @@ class LoggingCaller(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
|
|
5585
5621
|
sinfo = sinfo[:-1]
|
5586
5622
|
|
5587
5623
|
return cls(
|
5588
|
-
f.f_code.co_filename,
|
5589
|
-
f.f_lineno or 0,
|
5590
|
-
f.f_code.co_name,
|
5591
|
-
sinfo,
|
5624
|
+
file_path=f.f_code.co_filename,
|
5625
|
+
line_no=f.f_lineno or 0,
|
5626
|
+
name=f.f_code.co_name,
|
5627
|
+
stack_info=sinfo,
|
5592
5628
|
)
|
5593
5629
|
|
5594
5630
|
|
@@ -5599,6 +5635,7 @@ class LoggingCaller(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
|
|
5599
5635
|
##
|
5600
5636
|
|
5601
5637
|
|
5638
|
+
@ta.runtime_checkable
|
5602
5639
|
class LoggerLike(ta.Protocol):
|
5603
5640
|
"""Satisfied by both our Logger and stdlib logging.Logger."""
|
5604
5641
|
|
@@ -5687,7 +5724,9 @@ class JsonLoggingFormatter(logging.Formatter):
|
|
5687
5724
|
##
|
5688
5725
|
|
5689
5726
|
|
5690
|
-
|
5727
|
+
@logging_context_info
|
5728
|
+
@ta.final
|
5729
|
+
class LoggingTimeFields(ta.NamedTuple):
|
5691
5730
|
"""Maps directly to stdlib `logging.LogRecord` fields, and must be kept in sync with it."""
|
5692
5731
|
|
5693
5732
|
created: float
|
@@ -5735,9 +5774,9 @@ class LoggingTimeFields(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc
|
|
5735
5774
|
relative_created = (time_ns - start_time_ns) / 1e6
|
5736
5775
|
|
5737
5776
|
return cls(
|
5738
|
-
created,
|
5739
|
-
msecs,
|
5740
|
-
relative_created,
|
5777
|
+
created=created,
|
5778
|
+
msecs=msecs,
|
5779
|
+
relative_created=relative_created,
|
5741
5780
|
)
|
5742
5781
|
|
5743
5782
|
|
@@ -7577,7 +7616,7 @@ InterpProviders = ta.NewType('InterpProviders', ta.Sequence[InterpProvider])
|
|
7577
7616
|
|
7578
7617
|
class AnyLogger(Abstract, ta.Generic[T]):
|
7579
7618
|
def is_enabled_for(self, level: LogLevel) -> bool:
|
7580
|
-
return self.get_effective_level()
|
7619
|
+
return level >= self.get_effective_level()
|
7581
7620
|
|
7582
7621
|
@abc.abstractmethod
|
7583
7622
|
def get_effective_level(self) -> LogLevel:
|
@@ -7774,7 +7813,7 @@ class AsyncLogger(AnyLogger[ta.Awaitable[None]], Abstract):
|
|
7774
7813
|
class AnyNopLogger(AnyLogger[T], Abstract):
|
7775
7814
|
@ta.final
|
7776
7815
|
def get_effective_level(self) -> LogLevel:
|
7777
|
-
return 999
|
7816
|
+
return -999
|
7778
7817
|
|
7779
7818
|
|
7780
7819
|
@ta.final
|
@@ -8384,7 +8423,7 @@ class InterpResolver:
|
|
8384
8423
|
|
8385
8424
|
|
8386
8425
|
########################################
|
8387
|
-
# ../../../omlish/logs/std/
|
8426
|
+
# ../../../omlish/logs/std/loggers.py
|
8388
8427
|
|
8389
8428
|
|
8390
8429
|
##
|
@@ -8400,6 +8439,9 @@ class StdLogger(Logger):
|
|
8400
8439
|
def std(self) -> logging.Logger:
|
8401
8440
|
return self._std
|
8402
8441
|
|
8442
|
+
def is_enabled_for(self, level: LogLevel) -> bool:
|
8443
|
+
return self._std.isEnabledFor(level)
|
8444
|
+
|
8403
8445
|
def get_effective_level(self) -> LogLevel:
|
8404
8446
|
return self._std.getEffectiveLevel()
|
8405
8447
|
|
omdev/tools/git/cli.py
CHANGED
@@ -21,7 +21,6 @@ TODO:
|
|
21
21
|
fatal: Need to specify how to reconcile divergent branches.
|
22
22
|
"""
|
23
23
|
import dataclasses as dc
|
24
|
-
import logging
|
25
24
|
import os
|
26
25
|
import shutil
|
27
26
|
import tempfile
|
@@ -58,7 +57,7 @@ else:
|
|
58
57
|
msh = lang.proxy_import('omlish.marshal')
|
59
58
|
|
60
59
|
|
61
|
-
log =
|
60
|
+
log = logs.get_module_logger(globals())
|
62
61
|
|
63
62
|
|
64
63
|
##
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev430
|
4
4
|
Summary: omdev
|
5
5
|
Author: wrmsr
|
6
6
|
License-Expression: BSD-3-Clause
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Requires-Python: >=3.13
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
License-File: LICENSE
|
17
|
-
Requires-Dist: omlish==0.0.0.
|
17
|
+
Requires-Dist: omlish==0.0.0.dev430
|
18
18
|
Provides-Extra: all
|
19
19
|
Requires-Dist: black~=25.1; extra == "all"
|
20
20
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
omdev/.omlish-manifests.json,sha256=
|
1
|
+
omdev/.omlish-manifests.json,sha256=KfVVQzsOja2Zhq2VWbwmRSR_KN9aYcFWehbVCuM2AjA,11909
|
2
2
|
omdev/__about__.py,sha256=fQNmzSa1MntcPSrzg_Vpo6JRU2RbXik2NqRz0oQCApE,1202
|
3
3
|
omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
omdev/cmake.py,sha256=gu49t10_syXh_TUJs4POsxeFs8we8Y3XTOOPgIXmGvg,4608
|
@@ -9,7 +9,7 @@ omdev/amalg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
omdev/amalg/__main__.py,sha256=nGxQ4PLd2u7zf6dH4TDWZg6yrVe3FxIVn9sGT5w8O-o,174
|
10
10
|
omdev/amalg/sources.py,sha256=wxPxPFnxRhPSRhQoWn9bpTYopXW-tanJQLvVQkf2K_A,1379
|
11
11
|
omdev/amalg/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
-
omdev/amalg/cli/main.py,sha256=
|
12
|
+
omdev/amalg/cli/main.py,sha256=uoPQo_7pevBd5dX_3-wHrXWN-Mr6eUeHy70OCNE0Bss,4314
|
13
13
|
omdev/amalg/gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
14
|
omdev/amalg/gen/gen.py,sha256=95iQT0At_NsMf4IEg702ZOmmyEdhCZJGcSCFypm1BTk,6194
|
15
15
|
omdev/amalg/gen/imports.py,sha256=Bv3xNgej1Nsuv5R_y-9wd9b8cPtWljZsxjMh9bolJWc,2074
|
@@ -30,7 +30,7 @@ omdev/cache/compute/storage.py,sha256=3oHJGhIO3gilEyOIDR2UiB8yPKcw9xwWWvoQ0_ZjxZ
|
|
30
30
|
omdev/cache/compute/types.py,sha256=pF5htSH7oXyky2mxCqGhb_xhOc_GKnjnBAu6lzxaeM8,2645
|
31
31
|
omdev/cache/data/__init__.py,sha256=SQXtugLceRif463rcoklpQ33pxYLgEIm0xiI6NvOI6M,301
|
32
32
|
omdev/cache/data/actions.py,sha256=Mv7eXeZuohCjQLpmLyvqvGjjBacXIvTYzIRMVpEh-zM,1037
|
33
|
-
omdev/cache/data/cache.py,sha256=
|
33
|
+
omdev/cache/data/cache.py,sha256=h5xQUxiye2exsMUWh1pDeMz_t3LEC75kvloIDg57xMI,7660
|
34
34
|
omdev/cache/data/consts.py,sha256=d6W_aeMqgah6PmPYi9RA8Be54oQ4BcNCy8kDQ7FlB_Q,26
|
35
35
|
omdev/cache/data/defaults.py,sha256=NL_mT7kaSLm2Mk9VO5wdSu-DIcHTR1KgcihJqdSd4TY,312
|
36
36
|
omdev/cache/data/manifests.py,sha256=NweXxbkuLMBG1DiUFliOSYeXBrLPMIY4GA_gOZzHwho,949
|
@@ -52,26 +52,26 @@ omdev/cc/srclangs.py,sha256=3u_APHgknuc-BPRQSDISwSzouluKsnLlBxodp-XCl_E,728
|
|
52
52
|
omdev/cexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
53
|
omdev/cexts/_boilerplate.cc,sha256=sbpXEgdFrkdzZXgaNWFFNN27fL9TZu6VrwvMY4-nnFM,1726
|
54
54
|
omdev/cexts/build.py,sha256=JxEuqSpspnY6kWn8eB89FjcSjF4bpNgVYNeIvwmWehY,2659
|
55
|
-
omdev/cexts/cmake.py,sha256=
|
55
|
+
omdev/cexts/cmake.py,sha256=7CSL9AsWaJnad94dw9QxbZLirtxdlg7Au7EQ1g7H74g,10050
|
56
56
|
omdev/cexts/importhook.py,sha256=GZ04bE6tMQ8uQUUzGr22Rt9cwyI6kkoK4t7xpLP2Lrs,3562
|
57
57
|
omdev/cexts/magic.py,sha256=DglhjCXEiL28pFTN4lrmUW6ZLn6HaumR13ptyaFOez4,131
|
58
|
-
omdev/cexts/scan.py,sha256=
|
58
|
+
omdev/cexts/scan.py,sha256=94UqVgxBrAHn_VyW_ZA3-hB_R6pWIJRWqvtSBEg_O4U,1673
|
59
59
|
omdev/cexts/_distutils/LICENSE,sha256=22p14FIRp3F4Cb7Mj_GK33PKr25issFGHC2JN6dg9vc,1023
|
60
60
|
omdev/cexts/_distutils/__init__.py,sha256=c1zImtnPh3uY8BUTV4RLKtGKqTPx3c_pBbhA6tPtNsE,297
|
61
|
-
omdev/cexts/_distutils/build_ext.py,sha256=
|
62
|
-
omdev/cexts/_distutils/dir_util.py,sha256=
|
63
|
-
omdev/cexts/_distutils/errors.py,sha256=
|
64
|
-
omdev/cexts/_distutils/extension.py,sha256=
|
65
|
-
omdev/cexts/_distutils/file_util.py,sha256=
|
66
|
-
omdev/cexts/_distutils/modified.py,sha256=
|
67
|
-
omdev/cexts/_distutils/spawn.py,sha256=
|
68
|
-
omdev/cexts/_distutils/sysconfig.py,sha256=
|
69
|
-
omdev/cexts/_distutils/util.py,sha256=
|
70
|
-
omdev/cexts/_distutils/version.py,sha256=
|
61
|
+
omdev/cexts/_distutils/build_ext.py,sha256=urqWd8fIHY4v8Q9FVK8Plgkp4xwpilKvna9-Dphp0io,13872
|
62
|
+
omdev/cexts/_distutils/dir_util.py,sha256=llDo9EpCec91hY4XnqesSigenXS8F4RTdCoJ7hYFguc,2915
|
63
|
+
omdev/cexts/_distutils/errors.py,sha256=ITuhD_Vk-KD2z6JEBxIFUoGkCkn1MotgbNh5OP9tEd4,2040
|
64
|
+
omdev/cexts/_distutils/extension.py,sha256=MG-W77JvN5rkzuqHcq-Y5zJEYYCPfwlSzqK0XBNsMKw,5636
|
65
|
+
omdev/cexts/_distutils/file_util.py,sha256=O1dCq13Y7PCEBWYlzgSEfwG70TkS0eLxaPcV8sr11gA,7837
|
66
|
+
omdev/cexts/_distutils/modified.py,sha256=0iTW3mFNJMohDtKOaqhM8zVBQRAX142-xm2eNE4HCJM,1728
|
67
|
+
omdev/cexts/_distutils/spawn.py,sha256=cBVCmBl-zAvQG2p2UTmF10Odrw0TFYDJ19XdiVNNXPQ,3468
|
68
|
+
omdev/cexts/_distutils/sysconfig.py,sha256=YVQl9ChV0JiYZLFcPgcHMCCWX2QK0ECTbGajLodiKFs,12659
|
69
|
+
omdev/cexts/_distutils/util.py,sha256=l0TpopYsS_LadTd-W9VFyoD0RPhXqGX-33AdVPHN96g,6446
|
70
|
+
omdev/cexts/_distutils/version.py,sha256=003kpYCV9IwuOFxtfoRgGKpuz8MkgJucYHBcEVmFcoc,12563
|
71
71
|
omdev/cexts/_distutils/compilers/__init__.py,sha256=amL_zrFlba0lHIvpqDne9uhqhLemA7hBZFX-MHL7R3c,68
|
72
|
-
omdev/cexts/_distutils/compilers/ccompiler.py,sha256=
|
73
|
-
omdev/cexts/_distutils/compilers/options.py,sha256=
|
74
|
-
omdev/cexts/_distutils/compilers/unixccompiler.py,sha256=
|
72
|
+
omdev/cexts/_distutils/compilers/ccompiler.py,sha256=eDJPALnD__VJYeJaJhnghn7q3XMSSa7GL0P44aer3_I,43638
|
73
|
+
omdev/cexts/_distutils/compilers/options.py,sha256=ghKhvi2YaC50lwoWK1ewV-xRwbz0EXt6PsbgSdFIfzg,3823
|
74
|
+
omdev/cexts/_distutils/compilers/unixccompiler.py,sha256=fgmKXR7_BkZu1E3oVu6IpwbtIKtTwpvhnFEpSVtMOuM,15455
|
75
75
|
omdev/ci/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
76
76
|
omdev/ci/__main__.py,sha256=Jsrv3P7LX2Cg08W7ByZfZ1JQT4lgLDPW1qNAmShFuMk,75
|
77
77
|
omdev/ci/cache.py,sha256=aKsNvl7fTJfjpFhUrWgKCNEwgoSfTZpEcn0NUY9BOCM,8456
|
@@ -131,7 +131,7 @@ omdev/cmdlog/cmdlog.py,sha256=MJqfCG7sVWjSK_i1shD7cgWpFZXZkPvGhGEh-yd6iwM,1982
|
|
131
131
|
omdev/dataclasses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
132
132
|
omdev/dataclasses/__main__.py,sha256=N-a0Lf_s7D0VajuZCCY_dt8R4rSpeck9inbCsoIvciQ,175
|
133
133
|
omdev/dataclasses/cli.py,sha256=j5GfpJQSkA_jmV94XTVb3amCFYjgrasMs-bp_zJEkqE,445
|
134
|
-
omdev/dataclasses/codegen.py,sha256=
|
134
|
+
omdev/dataclasses/codegen.py,sha256=kPCKttb0gQgV2ChkARFSUPA96DbrvFZV-GyOaO_yQto,3021
|
135
135
|
omdev/dataserver/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
136
136
|
omdev/dataserver/handlers.py,sha256=q-kw-yiiRxJFmlPRdtqllsg7sv5Jz_ySsNl2xCoM7i4,5490
|
137
137
|
omdev/dataserver/http.py,sha256=SMS6w-GVevG58FypqmPytcEqW8aUWpd2_F6JlBDIuBc,1730
|
@@ -219,8 +219,8 @@ omdev/precheck/base.py,sha256=fKdrfakq2u1UU1_JZFnl-non9bIAZMsSkVY1SMYn8xQ,662
|
|
219
219
|
omdev/precheck/caches.py,sha256=OZKP20DIj6OpUzdNwrjCufv1GzndEbsc7tLD-qHNv9g,1736
|
220
220
|
omdev/precheck/git.py,sha256=O8rNQZ_vlHec0pOFbK6LOkbly5ZIUYT_HXRMqQX8GaI,774
|
221
221
|
omdev/precheck/imports.py,sha256=3loQxHMrpI0ce4-le77NCSxutLac_5vDW4UDX7KWWg8,2565
|
222
|
-
omdev/precheck/lite.py,sha256=
|
223
|
-
omdev/precheck/main.py,sha256=
|
222
|
+
omdev/precheck/lite.py,sha256=sseaKHMZgMhIEuifZvPJm0-wuRqRUrnyySJfHBMItOM,4737
|
223
|
+
omdev/precheck/main.py,sha256=nbTXR7d2vVMOyrXBVKFyQfmTm1H5tpk7Pe2Zphk-LqI,4365
|
224
224
|
omdev/precheck/manifests.py,sha256=dxl7GSJHKjQrR6mbwvj6j92XDGHOpxxEEQ6smJkBEe4,810
|
225
225
|
omdev/precheck/scripts.py,sha256=6nb_lDgyX7u9kdF_BU6ubY01q_jGk96VH9q9gpOieng,1753
|
226
226
|
omdev/precheck/unicode.py,sha256=VUNDCrlfUas_U8ugV_q0eFUXuBgKjS8YdCFm0FXREXo,2583
|
@@ -259,7 +259,7 @@ omdev/py/scripts/execstat.py,sha256=-c5ioQRruBrD5M0QDzSMaaq4Oe3X3-1O_d63bXjE5EI,
|
|
259
259
|
omdev/py/scripts/importtrace.py,sha256=OOf9GvB6PWP2uVzogSYsM5JGUAoSfMx1IKfYUXB8ABc,14245
|
260
260
|
omdev/py/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
261
261
|
omdev/py/tools/importscan.py,sha256=4dCH0coX0OqNwesteKaTE8GxuSfLhgXYQlzNUXLiSNY,4640
|
262
|
-
omdev/py/tools/mkrelimp.py,sha256=
|
262
|
+
omdev/py/tools/mkrelimp.py,sha256=40gE1p_w-f_oWptUiS8TqODhso6ow46UCEptw4VbH0c,4040
|
263
263
|
omdev/pyproject/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
264
264
|
omdev/pyproject/__main__.py,sha256=gn3Rl1aYPYdiTtEqa9ifi0t-e4ZwPY0vhJ4UXvYdJDY,165
|
265
265
|
omdev/pyproject/cexts.py,sha256=GLD4fe61M_fHhdMcKlcQNUoCb7MeVXY6Fw-grKH4hTU,4264
|
@@ -273,9 +273,9 @@ omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
273
273
|
omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
|
274
274
|
omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
|
275
275
|
omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
|
276
|
-
omdev/scripts/ci.py,sha256=
|
277
|
-
omdev/scripts/interp.py,sha256=
|
278
|
-
omdev/scripts/pyproject.py,sha256=
|
276
|
+
omdev/scripts/ci.py,sha256=2e3NgokoLd1SjHGLUKLcV_Bah3eBNBw_67hNT8XKe54,408056
|
277
|
+
omdev/scripts/interp.py,sha256=yJWWo_3qOmI2Evfel02j79KzfZqYN2eBCLnphZZFecs,166357
|
278
|
+
omdev/scripts/pyproject.py,sha256=LGUUUu4R2TRqUdEs5akqJkxFM7A-FI36I_SHSG3qJ4Y,315115
|
279
279
|
omdev/scripts/slowcat.py,sha256=PwdT-pg62imEEb6kcOozl9_YUi-4KopvjvzWT1OmGb0,2717
|
280
280
|
omdev/scripts/tmpexec.py,sha256=t0nErDRALjTk7H0X8ADjZUIDFjlPNzOOokmjCjBHdzs,1431
|
281
281
|
omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -298,7 +298,7 @@ omdev/tools/shell.py,sha256=5hF_8DCtB3XrzJSfmQDsr7X3Fi9KRV4M70q9qp0KREA,2341
|
|
298
298
|
omdev/tools/sqlrepl.py,sha256=TcLJlElzfXqYUkfIOwhJHtXiQjXOg4xBTwSoSRDpNkg,5758
|
299
299
|
omdev/tools/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
300
300
|
omdev/tools/git/__main__.py,sha256=gI87SBUgTkKUcUM-RtZWnei-UUDDqzbr5aPztb-gvbE,168
|
301
|
-
omdev/tools/git/cli.py,sha256=
|
301
|
+
omdev/tools/git/cli.py,sha256=6E-k-eiDn1gKyaRH_j5Ci_dgTmAl2pAbLtGmG3xgPAA,16748
|
302
302
|
omdev/tools/git/cloning.py,sha256=CNGBBMoWaTBJW4SZTf1VvhDFSm0yg7qDfNwZun_PFbU,891
|
303
303
|
omdev/tools/git/consts.py,sha256=JuXivUNDkNhM4pe97icjRVAKM8cNRbrODquHINNKqOE,40
|
304
304
|
omdev/tools/git/messages.py,sha256=R39pXfXt8394eC99rpTdRlbcMrAdLxwsgTR4pwRRa-o,2321
|
@@ -319,9 +319,9 @@ omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_b
|
|
319
319
|
omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
320
320
|
omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
|
321
321
|
omdev/tools/pawk/pawk.py,sha256=ao5mdrpiSU4AZ8mBozoEaV3UVlmVTnRG9wD9XP70MZE,11429
|
322
|
-
omdev-0.0.0.
|
323
|
-
omdev-0.0.0.
|
324
|
-
omdev-0.0.0.
|
325
|
-
omdev-0.0.0.
|
326
|
-
omdev-0.0.0.
|
327
|
-
omdev-0.0.0.
|
322
|
+
omdev-0.0.0.dev430.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
323
|
+
omdev-0.0.0.dev430.dist-info/METADATA,sha256=VDCfaZdGEwKcsAewHXSxMQRoZsHLoFpnGZ02o9WpORs,5100
|
324
|
+
omdev-0.0.0.dev430.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
325
|
+
omdev-0.0.0.dev430.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
|
326
|
+
omdev-0.0.0.dev430.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
|
327
|
+
omdev-0.0.0.dev430.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|