omdev 0.0.0.dev175__py3-none-any.whl → 0.0.0.dev177__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/interp/pyenv.py +3 -3
- omdev/interp/standalone.py +4 -1
- omdev/interp/system.py +1 -1
- omdev/interp/uv.py +21 -0
- omdev/scripts/interp.py +2 -2
- omdev/scripts/pyproject.py +40 -6
- {omdev-0.0.0.dev175.dist-info → omdev-0.0.0.dev177.dist-info}/METADATA +2 -2
- {omdev-0.0.0.dev175.dist-info → omdev-0.0.0.dev177.dist-info}/RECORD +12 -11
- {omdev-0.0.0.dev175.dist-info → omdev-0.0.0.dev177.dist-info}/LICENSE +0 -0
- {omdev-0.0.0.dev175.dist-info → omdev-0.0.0.dev177.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev175.dist-info → omdev-0.0.0.dev177.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev175.dist-info → omdev-0.0.0.dev177.dist-info}/top_level.txt +0 -0
omdev/interp/pyenv.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
1
2
|
"""
|
2
3
|
TODO:
|
3
4
|
- custom tags
|
@@ -9,7 +10,6 @@ TODO:
|
|
9
10
|
- optionally install / upgrade pyenv itself
|
10
11
|
- new vers dont need these custom mac opts, only run on old vers
|
11
12
|
"""
|
12
|
-
# ruff: noqa: UP006 UP007
|
13
13
|
import abc
|
14
14
|
import dataclasses as dc
|
15
15
|
import itertools
|
@@ -319,11 +319,11 @@ class PyenvVersionInstaller:
|
|
319
319
|
full_args = [
|
320
320
|
os.path.join(check.not_none(await self._pyenv.root()), 'plugins', 'python-build', 'bin', 'python-build'), # noqa
|
321
321
|
*conf_args,
|
322
|
-
self.install_dir(),
|
322
|
+
await self.install_dir(),
|
323
323
|
]
|
324
324
|
else:
|
325
325
|
full_args = [
|
326
|
-
self._pyenv.exe(),
|
326
|
+
await self._pyenv.exe(),
|
327
327
|
'install',
|
328
328
|
*conf_args,
|
329
329
|
]
|
omdev/interp/standalone.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
1
2
|
"""
|
2
3
|
TODO:
|
3
4
|
- ~/.cache/omlish/interp/standalone/...
|
@@ -20,7 +21,6 @@ TODO:
|
|
20
21
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
21
22
|
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
23
|
# https://github.com/tusharsadhwani/yen/blob/8d1bb0c1232c7b0159caefb1bf3a5348b93f7b43/src/yen/github.py
|
23
|
-
# ruff: noqa: UP006 UP007
|
24
24
|
import json
|
25
25
|
import os.path
|
26
26
|
import platform
|
@@ -91,6 +91,7 @@ class StandalonePythons:
|
|
91
91
|
|
92
92
|
def fallback_release_data(self) -> GitHubReleaseData:
|
93
93
|
"""Returns the fallback release data, for when GitHub API gives an error."""
|
94
|
+
|
94
95
|
log.warning('GitHub unreachable. Using fallback release data.')
|
95
96
|
data_file = os.path.join(os.path.dirname(__file__), 'fallback_release_data.json')
|
96
97
|
with open(data_file) as data:
|
@@ -101,6 +102,7 @@ class StandalonePythons:
|
|
101
102
|
|
102
103
|
def get_latest_python_releases(self, is_linux_i686: bool) -> GitHubReleaseData:
|
103
104
|
"""Returns the list of python download links from the latest github release."""
|
105
|
+
|
104
106
|
# They stopped shipping for 32 bit linux since after the 20230826 tag
|
105
107
|
if is_linux_i686:
|
106
108
|
data_file = os.path.join(os.path.dirname(__file__), 'linux_i686_release.json')
|
@@ -120,6 +122,7 @@ class StandalonePythons:
|
|
120
122
|
@cached_nullary
|
121
123
|
def list_pythons(self) -> ta.Mapping[str, str]:
|
122
124
|
"""Returns available python versions for your machine and their download links."""
|
125
|
+
|
123
126
|
system, machine = platform.system(), platform.machine()
|
124
127
|
download_link_suffixes = self.MACHINE_SUFFIX[system][machine]
|
125
128
|
# linux suffixes are nested under glibc or musl builds
|
omdev/interp/system.py
CHANGED
omdev/interp/uv.py
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
"""
|
3
|
+
uv run pip
|
4
|
+
uv run --python 3.11.6 pip
|
5
|
+
uv venv --python 3.11.6 --seed barf
|
6
|
+
python3 -m venv barf && barf/bin/pip install uv && barf/bin/uv venv --python 3.11.6 --seed barf2
|
7
|
+
"""
|
8
|
+
import typing as ta
|
9
|
+
|
10
|
+
from .providers import InterpProvider
|
11
|
+
from .types import Interp
|
12
|
+
from .types import InterpSpecifier
|
13
|
+
from .types import InterpVersion
|
14
|
+
|
15
|
+
|
16
|
+
class PyenvInterpProvider(InterpProvider):
|
17
|
+
def get_installed_versions(self, spec: InterpSpecifier) -> ta.Awaitable[ta.Sequence[InterpVersion]]:
|
18
|
+
raise NotImplementedError
|
19
|
+
|
20
|
+
def get_installed_version(self, version: InterpVersion) -> ta.Awaitable[Interp]:
|
21
|
+
raise NotImplementedError
|
omdev/scripts/interp.py
CHANGED
@@ -3156,11 +3156,11 @@ class PyenvVersionInstaller:
|
|
3156
3156
|
full_args = [
|
3157
3157
|
os.path.join(check.not_none(await self._pyenv.root()), 'plugins', 'python-build', 'bin', 'python-build'), # noqa
|
3158
3158
|
*conf_args,
|
3159
|
-
self.install_dir(),
|
3159
|
+
await self.install_dir(),
|
3160
3160
|
]
|
3161
3161
|
else:
|
3162
3162
|
full_args = [
|
3163
|
-
self._pyenv.exe(),
|
3163
|
+
await self._pyenv.exe(),
|
3164
3164
|
'install',
|
3165
3165
|
*conf_args,
|
3166
3166
|
]
|
omdev/scripts/pyproject.py
CHANGED
@@ -3916,6 +3916,18 @@ class FieldsObjMarshaler(ObjMarshaler):
|
|
3916
3916
|
})
|
3917
3917
|
|
3918
3918
|
|
3919
|
+
@dc.dataclass(frozen=True)
|
3920
|
+
class SingleFieldObjMarshaler(ObjMarshaler):
|
3921
|
+
ty: type
|
3922
|
+
fld: str
|
3923
|
+
|
3924
|
+
def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
3925
|
+
return getattr(o, self.fld)
|
3926
|
+
|
3927
|
+
def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
3928
|
+
return self.ty(**{self.fld: o})
|
3929
|
+
|
3930
|
+
|
3919
3931
|
@dc.dataclass(frozen=True)
|
3920
3932
|
class PolymorphicObjMarshaler(ObjMarshaler):
|
3921
3933
|
class Impl(ta.NamedTuple):
|
@@ -3990,7 +4002,7 @@ _DEFAULT_OBJ_MARSHALERS: ta.Dict[ta.Any, ObjMarshaler] = {
|
|
3990
4002
|
**{t: IterableObjMarshaler(t, DynamicObjMarshaler()) for t in (list, tuple, set, frozenset)},
|
3991
4003
|
**{t: MappingObjMarshaler(t, DynamicObjMarshaler(), DynamicObjMarshaler()) for t in (dict,)},
|
3992
4004
|
|
3993
|
-
|
4005
|
+
**{t: DynamicObjMarshaler() for t in (ta.Any, object)},
|
3994
4006
|
|
3995
4007
|
**{t: DatetimeObjMarshaler(t) for t in (datetime.date, datetime.time, datetime.datetime)},
|
3996
4008
|
decimal.Decimal: DecimalObjMarshaler(),
|
@@ -4015,6 +4027,16 @@ _OBJ_MARSHALER_GENERIC_ITERABLE_TYPES: ta.Dict[ta.Any, type] = {
|
|
4015
4027
|
##
|
4016
4028
|
|
4017
4029
|
|
4030
|
+
_REGISTERED_OBJ_MARSHALERS_BY_TYPE: ta.MutableMapping[type, ObjMarshaler] = weakref.WeakKeyDictionary()
|
4031
|
+
|
4032
|
+
|
4033
|
+
def register_type_obj_marshaler(ty: type, om: ObjMarshaler) -> None:
|
4034
|
+
_REGISTERED_OBJ_MARSHALERS_BY_TYPE[ty] = om
|
4035
|
+
|
4036
|
+
|
4037
|
+
##
|
4038
|
+
|
4039
|
+
|
4018
4040
|
class ObjMarshalerManager:
|
4019
4041
|
def __init__(
|
4020
4042
|
self,
|
@@ -4024,6 +4046,8 @@ class ObjMarshalerManager:
|
|
4024
4046
|
default_obj_marshalers: ta.Dict[ta.Any, ObjMarshaler] = _DEFAULT_OBJ_MARSHALERS, # noqa
|
4025
4047
|
generic_mapping_types: ta.Dict[ta.Any, type] = _OBJ_MARSHALER_GENERIC_MAPPING_TYPES, # noqa
|
4026
4048
|
generic_iterable_types: ta.Dict[ta.Any, type] = _OBJ_MARSHALER_GENERIC_ITERABLE_TYPES, # noqa
|
4049
|
+
|
4050
|
+
registered_obj_marshalers: ta.Mapping[type, ObjMarshaler] = _REGISTERED_OBJ_MARSHALERS_BY_TYPE,
|
4027
4051
|
) -> None:
|
4028
4052
|
super().__init__()
|
4029
4053
|
|
@@ -4032,6 +4056,7 @@ class ObjMarshalerManager:
|
|
4032
4056
|
self._obj_marshalers = dict(default_obj_marshalers)
|
4033
4057
|
self._generic_mapping_types = generic_mapping_types
|
4034
4058
|
self._generic_iterable_types = generic_iterable_types
|
4059
|
+
self._registered_obj_marshalers = registered_obj_marshalers
|
4035
4060
|
|
4036
4061
|
self._lock = threading.RLock()
|
4037
4062
|
self._marshalers: ta.Dict[ta.Any, ObjMarshaler] = dict(_DEFAULT_OBJ_MARSHALERS)
|
@@ -4047,6 +4072,9 @@ class ObjMarshalerManager:
|
|
4047
4072
|
non_strict_fields: bool = False,
|
4048
4073
|
) -> ObjMarshaler:
|
4049
4074
|
if isinstance(ty, type):
|
4075
|
+
if (reg := self._registered_obj_marshalers.get(ty)) is not None:
|
4076
|
+
return reg
|
4077
|
+
|
4050
4078
|
if abc.ABC in ty.__bases__:
|
4051
4079
|
impls = [ity for ity in deep_subclasses(ty) if abc.ABC not in ity.__bases__] # type: ignore
|
4052
4080
|
if all(ity.__qualname__.endswith(ty.__name__) for ity in impls):
|
@@ -4111,9 +4139,15 @@ class ObjMarshalerManager:
|
|
4111
4139
|
|
4112
4140
|
#
|
4113
4141
|
|
4114
|
-
def
|
4142
|
+
def set_obj_marshaler(
|
4143
|
+
self,
|
4144
|
+
ty: ta.Any,
|
4145
|
+
m: ObjMarshaler,
|
4146
|
+
*,
|
4147
|
+
override: bool = False,
|
4148
|
+
) -> None:
|
4115
4149
|
with self._lock:
|
4116
|
-
if ty in self._obj_marshalers:
|
4150
|
+
if not override and ty in self._obj_marshalers:
|
4117
4151
|
raise KeyError(ty)
|
4118
4152
|
self._obj_marshalers[ty] = m
|
4119
4153
|
|
@@ -4204,7 +4238,7 @@ class ObjMarshalContext:
|
|
4204
4238
|
|
4205
4239
|
OBJ_MARSHALER_MANAGER = ObjMarshalerManager()
|
4206
4240
|
|
4207
|
-
|
4241
|
+
set_obj_marshaler = OBJ_MARSHALER_MANAGER.set_obj_marshaler
|
4208
4242
|
get_obj_marshaler = OBJ_MARSHALER_MANAGER.get_obj_marshaler
|
4209
4243
|
|
4210
4244
|
marshal_obj = OBJ_MARSHALER_MANAGER.marshal_obj
|
@@ -6326,11 +6360,11 @@ class PyenvVersionInstaller:
|
|
6326
6360
|
full_args = [
|
6327
6361
|
os.path.join(check.not_none(await self._pyenv.root()), 'plugins', 'python-build', 'bin', 'python-build'), # noqa
|
6328
6362
|
*conf_args,
|
6329
|
-
self.install_dir(),
|
6363
|
+
await self.install_dir(),
|
6330
6364
|
]
|
6331
6365
|
else:
|
6332
6366
|
full_args = [
|
6333
|
-
self._pyenv.exe(),
|
6367
|
+
await self._pyenv.exe(),
|
6334
6368
|
'install',
|
6335
6369
|
*conf_args,
|
6336
6370
|
]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev177
|
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.dev177
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -85,11 +85,12 @@ omdev/interp/__main__.py,sha256=GMCqeGYltgt5dlJzHxY9gqisa8cRkrPfmZYuZnjg4WI,162
|
|
85
85
|
omdev/interp/cli.py,sha256=kgqA-Pc2RVkvkEpAKde30R5JKemgwurUcG6uPaNJyFc,2234
|
86
86
|
omdev/interp/inspect.py,sha256=ORfO90xfGftyvEJHuEOD5yPk-9mxdxn27SYHwZywWFI,2888
|
87
87
|
omdev/interp/providers.py,sha256=yHZQ6gYjkvSmMBvrKy3I77D7PnW67Bf3igTKY8DD9K4,1839
|
88
|
-
omdev/interp/pyenv.py,sha256=
|
88
|
+
omdev/interp/pyenv.py,sha256=KgsAwVNdse8UAR_6Lt4V4Zxqgm-kteOpJHxiD5vKc4M,14314
|
89
89
|
omdev/interp/resolvers.py,sha256=_xxmf9KrWg5Zpi4UjAMKMB8UgrXLq_sJ2Y5qpNhLjqw,3091
|
90
|
-
omdev/interp/standalone.py,sha256=
|
91
|
-
omdev/interp/system.py,sha256=-
|
90
|
+
omdev/interp/standalone.py,sha256=jJnncea4PIuaW-KwD2YiWDn8zTmwmsJNUKpF-qC2bwo,7725
|
91
|
+
omdev/interp/system.py,sha256=-sIbIPgmDU9jKw_nw-zTgOertDJTJ6BwJ-i6fU81KsY,3561
|
92
92
|
omdev/interp/types.py,sha256=5dFGYyaCrXN-VL43PhBvlEti97fYW3EzfBmK9N4Wmdo,2496
|
93
|
+
omdev/interp/uv.py,sha256=6EF5i_n530F9KUa99xT6RB8vF6FSqElDHu3lbk1ppBo,662
|
93
94
|
omdev/magic/__init__.py,sha256=CBzRB71RLyylkrj8dph6JUEddA8KSMJvDgriHqFfJGU,478
|
94
95
|
omdev/magic/find.py,sha256=tTmpWXAleaXG3_kNOsRF7s8D0CpYMXbdz6-HbCNBW90,7070
|
95
96
|
omdev/magic/magic.py,sha256=h1nxoW6CV1MRCiHjDt3sO4kmG0qTtTRbkDNiPLGo2BE,224
|
@@ -134,8 +135,8 @@ omdev/scripts/bumpversion.py,sha256=Kn7fo73Hs8uJh3Hi3EIyLOlzLPWAC6dwuD_lZ3cIzuY,
|
|
134
135
|
omdev/scripts/execrss.py,sha256=mR0G0wERBYtQmVIn63lCIIFb5zkCM6X_XOENDFYDBKc,651
|
135
136
|
omdev/scripts/exectime.py,sha256=sFb376GflU6s9gNX-2-we8hgH6w5MuQNS9g6i4SqJIo,610
|
136
137
|
omdev/scripts/importtrace.py,sha256=oa7CtcWJVMNDbyIEiRHej6ICfABfErMeo4_haIqe18Q,14041
|
137
|
-
omdev/scripts/interp.py,sha256=
|
138
|
-
omdev/scripts/pyproject.py,sha256=
|
138
|
+
omdev/scripts/interp.py,sha256=ReEfpyIB5UfJXFdnOLylO1czk51ZoskoNkSQkjaQ4CA,100917
|
139
|
+
omdev/scripts/pyproject.py,sha256=y-E70h9al-ijgogYqTlCqmMT53o0iW8D2F2MjPFuKuU,207462
|
139
140
|
omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
|
140
141
|
omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
|
141
142
|
omdev/toml/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
@@ -164,9 +165,9 @@ omdev/tools/json/rendering.py,sha256=jNShMfCpFR9-Kcn6cUFuOChXHjg71diuTC4x7Ofmz-o
|
|
164
165
|
omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
165
166
|
omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
|
166
167
|
omdev/tools/pawk/pawk.py,sha256=Eckymn22GfychCQcQi96BFqRo_LmiJ-EPhC8TTUJdB4,11446
|
167
|
-
omdev-0.0.0.
|
168
|
-
omdev-0.0.0.
|
169
|
-
omdev-0.0.0.
|
170
|
-
omdev-0.0.0.
|
171
|
-
omdev-0.0.0.
|
172
|
-
omdev-0.0.0.
|
168
|
+
omdev-0.0.0.dev177.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
169
|
+
omdev-0.0.0.dev177.dist-info/METADATA,sha256=Kg8GR5oTBzACAwXukDJ3oLe71RG42r87qe_3H8R1M64,1760
|
170
|
+
omdev-0.0.0.dev177.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
171
|
+
omdev-0.0.0.dev177.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
|
172
|
+
omdev-0.0.0.dev177.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
|
173
|
+
omdev-0.0.0.dev177.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|