omdev 0.0.0.dev166__tar.gz → 0.0.0.dev168__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.
- {omdev-0.0.0.dev166/omdev.egg-info → omdev-0.0.0.dev168}/PKG-INFO +2 -2
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/interp.py +33 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/pyproject.py +33 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/pyproject.toml +2 -2
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/LICENSE +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/README.rst +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/.manifests.json +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/bracepy.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/classdot.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/findimports.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/git/subtrees.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/providers.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/pyenv.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/standalone.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/system.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pycharm/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pycharm/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pycharm/cli.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/revisions.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/execrss.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/exectime.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/secrets.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tokens.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/toml/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/toml/parser.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/toml/writer.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/git.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/importscan.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev/wheelfile.py +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev166 → omdev-0.0.0.dev168}/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.dev168
|
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.dev168
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -560,6 +560,8 @@ def async_cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
|
|
560
560
|
"""
|
561
561
|
TODO:
|
562
562
|
- def maybe(v: lang.Maybe[T])
|
563
|
+
- def not_ ?
|
564
|
+
- ** class @dataclass Raise - user message should be able to be an exception type or instance or factory
|
563
565
|
"""
|
564
566
|
|
565
567
|
|
@@ -1126,6 +1128,37 @@ def snake_case(name: str) -> str:
|
|
1126
1128
|
##
|
1127
1129
|
|
1128
1130
|
|
1131
|
+
def strip_with_newline(s: str) -> str:
|
1132
|
+
if not s:
|
1133
|
+
return ''
|
1134
|
+
return s.strip() + '\n'
|
1135
|
+
|
1136
|
+
|
1137
|
+
@ta.overload
|
1138
|
+
def split_keep_delimiter(s: str, d: str) -> str:
|
1139
|
+
...
|
1140
|
+
|
1141
|
+
|
1142
|
+
@ta.overload
|
1143
|
+
def split_keep_delimiter(s: bytes, d: bytes) -> bytes:
|
1144
|
+
...
|
1145
|
+
|
1146
|
+
|
1147
|
+
def split_keep_delimiter(s, d):
|
1148
|
+
ps = []
|
1149
|
+
i = 0
|
1150
|
+
while i < len(s):
|
1151
|
+
if (n := s.find(d, i)) < i:
|
1152
|
+
ps.append(s[i:])
|
1153
|
+
break
|
1154
|
+
ps.append(s[i:n + 1])
|
1155
|
+
i = n + 1
|
1156
|
+
return ps
|
1157
|
+
|
1158
|
+
|
1159
|
+
##
|
1160
|
+
|
1161
|
+
|
1129
1162
|
def is_dunder(name: str) -> bool:
|
1130
1163
|
return (
|
1131
1164
|
name[:2] == name[-2:] == '__' and
|
@@ -1852,6 +1852,8 @@ def async_cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
|
|
1852
1852
|
"""
|
1853
1853
|
TODO:
|
1854
1854
|
- def maybe(v: lang.Maybe[T])
|
1855
|
+
- def not_ ?
|
1856
|
+
- ** class @dataclass Raise - user message should be able to be an exception type or instance or factory
|
1855
1857
|
"""
|
1856
1858
|
|
1857
1859
|
|
@@ -2418,6 +2420,37 @@ def snake_case(name: str) -> str:
|
|
2418
2420
|
##
|
2419
2421
|
|
2420
2422
|
|
2423
|
+
def strip_with_newline(s: str) -> str:
|
2424
|
+
if not s:
|
2425
|
+
return ''
|
2426
|
+
return s.strip() + '\n'
|
2427
|
+
|
2428
|
+
|
2429
|
+
@ta.overload
|
2430
|
+
def split_keep_delimiter(s: str, d: str) -> str:
|
2431
|
+
...
|
2432
|
+
|
2433
|
+
|
2434
|
+
@ta.overload
|
2435
|
+
def split_keep_delimiter(s: bytes, d: bytes) -> bytes:
|
2436
|
+
...
|
2437
|
+
|
2438
|
+
|
2439
|
+
def split_keep_delimiter(s, d):
|
2440
|
+
ps = []
|
2441
|
+
i = 0
|
2442
|
+
while i < len(s):
|
2443
|
+
if (n := s.find(d, i)) < i:
|
2444
|
+
ps.append(s[i:])
|
2445
|
+
break
|
2446
|
+
ps.append(s[i:n + 1])
|
2447
|
+
i = n + 1
|
2448
|
+
return ps
|
2449
|
+
|
2450
|
+
|
2451
|
+
##
|
2452
|
+
|
2453
|
+
|
2421
2454
|
def is_dunder(name: str) -> bool:
|
2422
2455
|
return (
|
2423
2456
|
name[:2] == name[-2:] == '__' and
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev168
|
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.dev168
|
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.dev168'
|
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.dev168',
|
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
|
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
|