omdev 0.0.0.dev145__tar.gz → 0.0.0.dev146__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.
Potentially problematic release.
This version of omdev might be problematic. Click here for more details.
- {omdev-0.0.0.dev145/omdev.egg-info → omdev-0.0.0.dev146}/PKG-INFO +2 -2
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/.manifests.json +2 -2
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/amalg/amalg.py +92 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/resolvers.py +1 -1
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/interp.py +1 -1
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/pyproject.py +1 -1
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tokens.py +10 -3
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/docker.py +14 -1
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/git.py +4 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/pyproject.toml +2 -2
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/LICENSE +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/README.rst +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/bracepy.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/classdot.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/findimports.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/git.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/providers.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/pyenv.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/standalone.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/system.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pycharm/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pycharm/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pycharm/cli.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/revisions.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/execrss.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/exectime.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/secrets.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/toml/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/toml/parser.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/toml/writer.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/importscan.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev/wheelfile.py +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev145 → omdev-0.0.0.dev146}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev146
|
|
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.
|
|
15
|
+
Requires-Dist: omlish==0.0.0.dev146
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
"module": ".tools.docker",
|
|
244
244
|
"attr": "_CLI_MODULE",
|
|
245
245
|
"file": "omdev/tools/docker.py",
|
|
246
|
-
"line":
|
|
246
|
+
"line": 249,
|
|
247
247
|
"value": {
|
|
248
248
|
"$.cli.types.CliModule": {
|
|
249
249
|
"cmd_name": "docker",
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
"module": ".tools.git",
|
|
256
256
|
"attr": "_CLI_MODULE",
|
|
257
257
|
"file": "omdev/tools/git.py",
|
|
258
|
-
"line":
|
|
258
|
+
"line": 215,
|
|
259
259
|
"value": {
|
|
260
260
|
"$.cli.types.CliModule": {
|
|
261
261
|
"cmd_name": "git",
|
|
@@ -25,8 +25,10 @@ Targets:
|
|
|
25
25
|
"""
|
|
26
26
|
import argparse
|
|
27
27
|
import ast
|
|
28
|
+
import base64
|
|
28
29
|
import dataclasses as dc
|
|
29
30
|
import io
|
|
31
|
+
import itertools
|
|
30
32
|
import logging
|
|
31
33
|
import os.path
|
|
32
34
|
import re
|
|
@@ -286,6 +288,37 @@ def is_root_level_if_type_checking_block(lts: Tokens) -> bool:
|
|
|
286
288
|
##
|
|
287
289
|
|
|
288
290
|
|
|
291
|
+
class RootLevelResourcesRead(ta.NamedTuple):
|
|
292
|
+
variable: str
|
|
293
|
+
kind: ta.Literal['binary', 'text']
|
|
294
|
+
resource: str
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
def is_root_level_resources_read(lts: Tokens) -> RootLevelResourcesRead | None:
|
|
298
|
+
wts = list(tks.ignore_ws(lts, keep=['INDENT']))
|
|
299
|
+
|
|
300
|
+
if not tks.match_toks(wts, [
|
|
301
|
+
('NAME', None),
|
|
302
|
+
('OP', '='),
|
|
303
|
+
('NAME', ('read_package_resource_binary', 'read_package_resource_text')),
|
|
304
|
+
('OP', '('),
|
|
305
|
+
('NAME', '__package__'),
|
|
306
|
+
('OP', ','),
|
|
307
|
+
('STRING', None),
|
|
308
|
+
('OP', ')'),
|
|
309
|
+
]):
|
|
310
|
+
return None
|
|
311
|
+
|
|
312
|
+
return RootLevelResourcesRead(
|
|
313
|
+
wts[0].src,
|
|
314
|
+
'binary' if wts[2].src == 'read_package_resource_binary' else 'text',
|
|
315
|
+
ast.literal_eval(wts[6].src),
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
##
|
|
320
|
+
|
|
321
|
+
|
|
289
322
|
@dc.dataclass(frozen=True, kw_only=True)
|
|
290
323
|
class SrcFile:
|
|
291
324
|
path: str
|
|
@@ -301,6 +334,8 @@ class SrcFile:
|
|
|
301
334
|
|
|
302
335
|
ruff_noqa: ta.AbstractSet[str] = dc.field(repr=False)
|
|
303
336
|
|
|
337
|
+
has_binary_resources: bool = False
|
|
338
|
+
|
|
304
339
|
|
|
305
340
|
def make_src_file(
|
|
306
341
|
path: str,
|
|
@@ -322,6 +357,8 @@ def make_src_file(
|
|
|
322
357
|
tys: list[Typing] = []
|
|
323
358
|
ctls: list[Tokens] = []
|
|
324
359
|
|
|
360
|
+
has_binary_resources = False
|
|
361
|
+
|
|
325
362
|
i = 0
|
|
326
363
|
while i < len(cls):
|
|
327
364
|
line = cls[i]
|
|
@@ -383,6 +420,57 @@ def make_src_file(
|
|
|
383
420
|
i += 1
|
|
384
421
|
skip_block()
|
|
385
422
|
|
|
423
|
+
elif (rsrc := is_root_level_resources_read(line)) is not None:
|
|
424
|
+
rf = os.path.join(os.path.dirname(path), rsrc.resource)
|
|
425
|
+
|
|
426
|
+
if rsrc.kind == 'binary':
|
|
427
|
+
with open(rf, 'rb') as bf:
|
|
428
|
+
rb = bf.read() # noqa
|
|
429
|
+
|
|
430
|
+
ctls.append([
|
|
431
|
+
trt.Token(name='NAME', src=rsrc.variable),
|
|
432
|
+
trt.Token(name='UNIMPORTANT_WS', src=' '),
|
|
433
|
+
trt.Token(name='OP', src='='),
|
|
434
|
+
trt.Token(name='UNIMPORTANT_WS', src=' '),
|
|
435
|
+
trt.Token(name='NAME', src='base64'),
|
|
436
|
+
trt.Token(name='OP', src='.'),
|
|
437
|
+
trt.Token(name='NAME', src='b64decode'),
|
|
438
|
+
trt.Token(name='OP', src='('),
|
|
439
|
+
trt.Token(name='NL', src='\n'),
|
|
440
|
+
])
|
|
441
|
+
|
|
442
|
+
rb64 = base64.b64encode(rb).decode('ascii')
|
|
443
|
+
for chunk in itertools.batched(rb64, 96):
|
|
444
|
+
ctls.append([
|
|
445
|
+
trt.Token(name='UNIMPORTANT_WS', src=' '),
|
|
446
|
+
trt.Token(name='STRING', src=f"'{''.join(chunk)}'"),
|
|
447
|
+
trt.Token(name='NL', src='\n'),
|
|
448
|
+
])
|
|
449
|
+
|
|
450
|
+
ctls.append([
|
|
451
|
+
trt.Token(name='OP', src=')'),
|
|
452
|
+
trt.Token(name='NEWLINE', src='\n'),
|
|
453
|
+
])
|
|
454
|
+
|
|
455
|
+
has_binary_resources = True
|
|
456
|
+
|
|
457
|
+
elif rsrc.kind == 'text':
|
|
458
|
+
with open(rf) as tf:
|
|
459
|
+
rt = tf.read() # noqa
|
|
460
|
+
rt = rt.replace('\\', '\\\\') # Escape backslashes
|
|
461
|
+
rt = rt.replace('"""', r'\"\"\"')
|
|
462
|
+
ctls.append([
|
|
463
|
+
trt.Token(name='NAME', src=rsrc.variable),
|
|
464
|
+
trt.Token(name='UNIMPORTANT_WS', src=' '),
|
|
465
|
+
trt.Token(name='OP', src='='),
|
|
466
|
+
trt.Token(name='UNIMPORTANT_WS', src=' '),
|
|
467
|
+
trt.Token(name='STRING', src=f'"""\\\n{rt}"""\n'),
|
|
468
|
+
trt.Token(name='NEWLINE', src=''),
|
|
469
|
+
])
|
|
470
|
+
|
|
471
|
+
else:
|
|
472
|
+
raise ValueError(rsrc.kind)
|
|
473
|
+
|
|
386
474
|
else:
|
|
387
475
|
ctls.append(line)
|
|
388
476
|
|
|
@@ -399,6 +487,8 @@ def make_src_file(
|
|
|
399
487
|
content_lines=ctls,
|
|
400
488
|
|
|
401
489
|
ruff_noqa=set(lang.flatten(tks.join_toks(l).strip().split()[3:] for l in rnls)), # noqa
|
|
490
|
+
|
|
491
|
+
has_binary_resources=has_binary_resources,
|
|
402
492
|
)
|
|
403
493
|
|
|
404
494
|
|
|
@@ -488,6 +578,8 @@ def gen_amalg(
|
|
|
488
578
|
dct: dict = {
|
|
489
579
|
('sys', None, None): ['import sys\n'],
|
|
490
580
|
}
|
|
581
|
+
if any(sf.has_binary_resources for sf in src_files.values()):
|
|
582
|
+
dct[('base64', None, None)] = ['import base64\n']
|
|
491
583
|
for imp in gl_imps:
|
|
492
584
|
dct.setdefault((imp.mod, imp.item, imp.as_), []).append(imp)
|
|
493
585
|
for _, l in sorted(dct.items()):
|
|
@@ -61,7 +61,7 @@ def join_lines(ls: ta.Iterable[Tokens]) -> str:
|
|
|
61
61
|
|
|
62
62
|
def match_toks(
|
|
63
63
|
ts: ta.Iterable['trt.Token'],
|
|
64
|
-
pat: ta.Sequence[tuple[str | None, str | None]],
|
|
64
|
+
pat: ta.Sequence[tuple[str | None, str | tuple[str, ...] | None]],
|
|
65
65
|
) -> bool:
|
|
66
66
|
it = iter(ts)
|
|
67
67
|
for pn, ps in pat:
|
|
@@ -71,6 +71,13 @@ def match_toks(
|
|
|
71
71
|
return False
|
|
72
72
|
if pn is not None and t.name != pn:
|
|
73
73
|
return False
|
|
74
|
-
if ps is not None
|
|
75
|
-
|
|
74
|
+
if ps is not None:
|
|
75
|
+
if isinstance(ps, str):
|
|
76
|
+
if t.src != ps:
|
|
77
|
+
return False
|
|
78
|
+
elif isinstance(ps, tuple):
|
|
79
|
+
if t.src not in ps:
|
|
80
|
+
return False
|
|
81
|
+
else:
|
|
82
|
+
raise TypeError(ps)
|
|
76
83
|
return True
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""
|
|
2
2
|
TODO:
|
|
3
|
-
-
|
|
3
|
+
- https://github.com/zeromake/docker-debug
|
|
4
4
|
"""
|
|
5
5
|
import os
|
|
6
6
|
import re
|
|
@@ -232,6 +232,19 @@ class Cli(ap.Cli):
|
|
|
232
232
|
|
|
233
233
|
print(f'{svc_name}: {lt}')
|
|
234
234
|
|
|
235
|
+
@ap.command()
|
|
236
|
+
def dockly(self) -> None:
|
|
237
|
+
os.execl(
|
|
238
|
+
exe := docker_exe(),
|
|
239
|
+
exe,
|
|
240
|
+
'run',
|
|
241
|
+
'-it',
|
|
242
|
+
'--rm',
|
|
243
|
+
'-v',
|
|
244
|
+
'/var/run/docker.sock:/var/run/docker.sock',
|
|
245
|
+
'lirantal/dockly',
|
|
246
|
+
)
|
|
247
|
+
|
|
235
248
|
|
|
236
249
|
# @omlish-manifest
|
|
237
250
|
_CLI_MODULE = CliModule('docker', __name__)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev146
|
|
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.
|
|
15
|
+
Requires-Dist: omlish==0.0.0.dev146
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
@@ -12,7 +12,7 @@ authors = [
|
|
|
12
12
|
urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
13
13
|
license = {text = 'BSD-3-Clause'}
|
|
14
14
|
requires-python = '>=3.12'
|
|
15
|
-
version = '0.0.0.
|
|
15
|
+
version = '0.0.0.dev146'
|
|
16
16
|
classifiers = [
|
|
17
17
|
'License :: OSI Approved :: BSD License',
|
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
|
@@ -22,7 +22,7 @@ classifiers = [
|
|
|
22
22
|
]
|
|
23
23
|
description = 'omdev'
|
|
24
24
|
dependencies = [
|
|
25
|
-
'omlish == 0.0.0.
|
|
25
|
+
'omlish == 0.0.0.dev146',
|
|
26
26
|
]
|
|
27
27
|
|
|
28
28
|
[project.optional-dependencies]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|