omdev 0.0.0.dev353__py3-none-any.whl → 0.0.0.dev355__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.

Potentially problematic release.


This version of omdev might be problematic. Click here for more details.

omdev/.manifests.json CHANGED
@@ -39,7 +39,7 @@
39
39
  "module": ".cli.clicli",
40
40
  "attr": "_CLI_MODULE",
41
41
  "file": "omdev/cli/clicli.py",
42
- "line": 176,
42
+ "line": 186,
43
43
  "value": {
44
44
  "$.cli.types.CliModule": {
45
45
  "cmd_name": "cli",
omdev/cli/clicli.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import inspect
2
2
  import os
3
+ import re
3
4
  import shlex
4
5
  import subprocess
5
6
  import sys
@@ -23,6 +24,15 @@ from .types import CliModule
23
24
  DEFAULT_REINSTALL_URL = 'https://raw.githubusercontent.com/wrmsr/omlish/master/omdev/cli/install.py'
24
25
 
25
26
 
27
+ _VALID_VERSION_STR = re.compile(r'\d+(\.\d+(\.\d+(\.dev\d+)?)?)?')
28
+
29
+
30
+ def _parse_latest_version_str(s: str) -> str:
31
+ if not _VALID_VERSION_STR.fullmatch(s):
32
+ raise ValueError(f'Invalid version string: {s}')
33
+ return s
34
+
35
+
26
36
  class CliCli(ap.Cli):
27
37
 
28
38
  #
@@ -84,7 +94,7 @@ class CliCli(ap.Cli):
84
94
  ap.arg('extra_deps', nargs='*'),
85
95
  )
86
96
  def reinstall(self) -> None:
87
- latest_version = lookup_latest_package_version(__package__.split('.')[0])
97
+ latest_version = _parse_latest_version_str(lookup_latest_package_version(__package__.split('.')[0]))
88
98
 
89
99
  #
90
100
 
@@ -153,7 +163,7 @@ class CliCli(ap.Cli):
153
163
  reco_cmd = ' '.join([
154
164
  'curl -LsSf',
155
165
  f"'{url}'" if (qu := shlex.quote(url)) == url else qu,
156
- '| python3 -',
166
+ f'| python3 - --version {shlex.quote(latest_version)}',
157
167
  *deps,
158
168
  ])
159
169
  print(f'Recovery command:\n\n{reco_cmd}\n')
@@ -167,8 +177,8 @@ class CliCli(ap.Cli):
167
177
  os.execl(
168
178
  sys.executable,
169
179
  sys.executable,
170
- '-c',
171
- install_src,
180
+ '-c', install_src,
181
+ '--version', latest_version,
172
182
  *deps,
173
183
  )
174
184
 
omdev/cli/install.py CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env python3
2
+ # ruff: noqa: UP045
2
3
  # @omlish-lite
3
4
  # @omlish-script
4
5
  """
@@ -25,11 +26,23 @@ DEFAULT_PY_VER = '3.13'
25
26
  @dc.dataclass(frozen=True)
26
27
  class InstallOpts:
27
28
  cli_pkg: str = DEFAULT_CLI_PKG
29
+ cli_ver: ta.Optional[str] = None
30
+
28
31
  py_ver: str = DEFAULT_PY_VER
29
32
 
30
33
  extras: ta.Sequence[str] = dc.field(default_factory=list)
31
34
 
32
35
 
36
+ def _format_install_cli_pkg(opts: InstallOpts) -> str:
37
+ spec = opts.cli_pkg
38
+ if (ver := opts.cli_ver) is not None:
39
+ if any(c in ver for c in '=<>!~'):
40
+ spec += ver
41
+ else:
42
+ spec = f'{spec}=={ver}'
43
+ return spec
44
+
45
+
33
46
  class InstallManager(abc.ABC):
34
47
  @abc.abstractmethod
35
48
  def is_available(self) -> bool:
@@ -74,7 +87,7 @@ class UvxInstallManager(InstallManager):
74
87
  '--refresh',
75
88
  '--prerelease=allow',
76
89
  f'--python={opts.py_ver}',
77
- opts.cli_pkg,
90
+ _format_install_cli_pkg(opts),
78
91
  *itertools.chain.from_iterable(['--with', e] for e in (opts.extras or [])),
79
92
  ])
80
93
 
@@ -113,7 +126,7 @@ class PipxInstallManager(InstallManager):
113
126
  'pipx',
114
127
  'install',
115
128
  f'--python={opts.py_ver}',
116
- opts.cli_pkg,
129
+ _format_install_cli_pkg(opts),
117
130
  *itertools.chain.from_iterable(['--preinstall', e] for e in (opts.extras or [])),
118
131
  ])
119
132
 
@@ -140,8 +153,9 @@ def _main() -> None:
140
153
 
141
154
  parser = argparse.ArgumentParser()
142
155
  parser.add_argument('-c', '--cli', default=DEFAULT_CLI_PKG)
143
- parser.add_argument('-p', '--py', default=DEFAULT_PY_VER)
144
- parser.add_argument('-m', '--mgr')
156
+ parser.add_argument('-V', '--version')
157
+ parser.add_argument('-p', '--python', default=DEFAULT_PY_VER)
158
+ parser.add_argument('-m', '--manager')
145
159
  parser.add_argument('extra', nargs='*')
146
160
  args = parser.parse_args()
147
161
 
@@ -150,10 +164,10 @@ def _main() -> None:
150
164
 
151
165
  cli = cli.lower().replace('_', '-')
152
166
 
153
- if not (py := args.py):
167
+ if not (py := args.python):
154
168
  raise ValueError(f'Must specify py')
155
169
 
156
- if mgr := args.mgr:
170
+ if mgr := args.manager:
157
171
  if (im := INSTALL_MANAGERS.get(mgr)) is None:
158
172
  raise ValueError(f'Unsupported mgr: {mgr}')
159
173
  if not im.is_available():
@@ -171,6 +185,7 @@ def _main() -> None:
171
185
 
172
186
  im.install(InstallOpts(
173
187
  cli_pkg=cli,
188
+ cli_ver=args.version,
174
189
  py_ver=py,
175
190
  extras=args.extra,
176
191
  ))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev353
3
+ Version: 0.0.0.dev355
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.13
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev353
15
+ Requires-Dist: omlish==0.0.0.dev355
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1,4 +1,4 @@
1
- omdev/.manifests.json,sha256=fHOFj2p3JY4pmLF7FYYFODTnwvjWjhO14QbAqpG6Tdg,11870
1
+ omdev/.manifests.json,sha256=eThNbd6bCkCK4thijDHcXDZ2eDr6i-wfnmV_qxbzino,11870
2
2
  omdev/__about__.py,sha256=2_6pQyjxqAspvwBSJUWQgdBBcGaDO3zX8yETLaspUQE,1202
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/cmake.py,sha256=9rfSvFHPmKDj9ngvfDB2vK8O-xO_ZwUm7hMKLWA-yOw,4578
@@ -103,8 +103,8 @@ omdev/ci/github/api/v2/client.py,sha256=bJtL_TZ4sB6IDuzfqtEXj-iWivKfyXQZ_MO30lgB
103
103
  omdev/cli/__init__.py,sha256=V_l6VP1SZMlJbO-8CJwSuO9TThOy2S_oaPepNYgIrbE,37
104
104
  omdev/cli/__main__.py,sha256=mOJpgc07o0r5luQ1DlX4tk2PqZkgmbwPbdzJ3KmtjgQ,138
105
105
  omdev/cli/_pathhack.py,sha256=UshIZX3oeXq0De-9X28gy2LgKMZDf_dzabdkUhZJdNA,2124
106
- omdev/cli/clicli.py,sha256=LuOdHYh_YFULDxZCX6X0sB6JFpu6ogntVtN4WdT0o3Q,4481
107
- omdev/cli/install.py,sha256=Vzdq66boPdbNBIC_ommPOc-fVd1gWqTTcF_Mh_JECi0,4467
106
+ omdev/cli/clicli.py,sha256=KS6PMfqJmInQCi9dzpgKKFNQ9bO1jxlBbqypBgTZADU,4819
107
+ omdev/cli/install.py,sha256=oB34AOwu07sqEztW_z5mgorAFoP_Tw556XiTPj2WSM0,4904
108
108
  omdev/cli/main.py,sha256=dxZFyzKuwRykHHhoKKUA0fUa9QsY0dgdvLHbXNuIPCY,6694
109
109
  omdev/cli/managers.py,sha256=BV98_n30Jj63OJrFgRoVZRfICxMLXEZKoEn4rMj9LV4,1160
110
110
  omdev/cli/types.py,sha256=SH88B81otsSYNM-PM3Ry1wgLLvyg2M6fBJkWOajWIWM,485
@@ -303,9 +303,9 @@ omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_b
303
303
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
304
304
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
305
305
  omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
306
- omdev-0.0.0.dev353.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
307
- omdev-0.0.0.dev353.dist-info/METADATA,sha256=QYh5HbxL0eEAMdVGKbHcyCf0aPCXgqCdwj35yRG1UKo,1674
308
- omdev-0.0.0.dev353.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
309
- omdev-0.0.0.dev353.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
310
- omdev-0.0.0.dev353.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
311
- omdev-0.0.0.dev353.dist-info/RECORD,,
306
+ omdev-0.0.0.dev355.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
307
+ omdev-0.0.0.dev355.dist-info/METADATA,sha256=WplfvKUSZEo6fA95YNRCzzo_ki_c8UsMX3-ey9MuLIY,1674
308
+ omdev-0.0.0.dev355.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
309
+ omdev-0.0.0.dev355.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
310
+ omdev-0.0.0.dev355.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
311
+ omdev-0.0.0.dev355.dist-info/RECORD,,