omdev 0.0.0.dev180__py3-none-any.whl → 0.0.0.dev182__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/scripts/interp.py CHANGED
@@ -1050,13 +1050,6 @@ json_dump_compact: ta.Callable[..., bytes] = functools.partial(json.dump, **JSON
1050
1050
  json_dumps_compact: ta.Callable[..., str] = functools.partial(json.dumps, **JSON_COMPACT_KWARGS)
1051
1051
 
1052
1052
 
1053
- ########################################
1054
- # ../../../omlish/lite/logs.py
1055
-
1056
-
1057
- log = logging.getLogger(__name__)
1058
-
1059
-
1060
1053
  ########################################
1061
1054
  # ../../../omlish/lite/maybes.py
1062
1055
 
@@ -4205,9 +4198,15 @@ class InterpInspection:
4205
4198
 
4206
4199
 
4207
4200
  class InterpInspector:
4208
- def __init__(self) -> None:
4201
+ def __init__(
4202
+ self,
4203
+ *,
4204
+ log: ta.Optional[logging.Logger] = None,
4205
+ ) -> None:
4209
4206
  super().__init__()
4210
4207
 
4208
+ self._log = log
4209
+
4211
4210
  self._cache: ta.Dict[str, ta.Optional[InterpInspection]] = {}
4212
4211
 
4213
4212
  _RAW_INSPECTION_CODE = """
@@ -4256,13 +4255,95 @@ class InterpInspector:
4256
4255
  try:
4257
4256
  ret = await self._inspect(exe)
4258
4257
  except Exception as e: # noqa
4259
- if log.isEnabledFor(logging.DEBUG):
4260
- log.exception('Failed to inspect interp: %s', exe)
4258
+ if self._log is not None and self._log.isEnabledFor(logging.DEBUG):
4259
+ self._log.exception('Failed to inspect interp: %s', exe)
4261
4260
  ret = None
4262
4261
  self._cache[exe] = ret
4263
4262
  return ret
4264
4263
 
4265
4264
 
4265
+ ########################################
4266
+ # ../pyenv/pyenv.py
4267
+ """
4268
+ TODO:
4269
+ - custom tags
4270
+ - 'aliases'
4271
+ - https://github.com/pyenv/pyenv/pull/2966
4272
+ - https://github.com/pyenv/pyenv/issues/218 (lol)
4273
+ - probably need custom (temp?) definition file
4274
+ - *or* python-build directly just into the versions dir?
4275
+ - optionally install / upgrade pyenv itself
4276
+ - new vers dont need these custom mac opts, only run on old vers
4277
+ """
4278
+
4279
+
4280
+ class Pyenv:
4281
+ def __init__(
4282
+ self,
4283
+ *,
4284
+ root: ta.Optional[str] = None,
4285
+ ) -> None:
4286
+ if root is not None and not (isinstance(root, str) and root):
4287
+ raise ValueError(f'pyenv_root: {root!r}')
4288
+
4289
+ super().__init__()
4290
+
4291
+ self._root_kw = root
4292
+
4293
+ @async_cached_nullary
4294
+ async def root(self) -> ta.Optional[str]:
4295
+ if self._root_kw is not None:
4296
+ return self._root_kw
4297
+
4298
+ if shutil.which('pyenv'):
4299
+ return await asyncio_subprocesses.check_output_str('pyenv', 'root')
4300
+
4301
+ d = os.path.expanduser('~/.pyenv')
4302
+ if os.path.isdir(d) and os.path.isfile(os.path.join(d, 'bin', 'pyenv')):
4303
+ return d
4304
+
4305
+ return None
4306
+
4307
+ @async_cached_nullary
4308
+ async def exe(self) -> str:
4309
+ return os.path.join(check.not_none(await self.root()), 'bin', 'pyenv')
4310
+
4311
+ async def version_exes(self) -> ta.List[ta.Tuple[str, str]]:
4312
+ if (root := await self.root()) is None:
4313
+ return []
4314
+ ret = []
4315
+ vp = os.path.join(root, 'versions')
4316
+ if os.path.isdir(vp):
4317
+ for dn in os.listdir(vp):
4318
+ ep = os.path.join(vp, dn, 'bin', 'python')
4319
+ if not os.path.isfile(ep):
4320
+ continue
4321
+ ret.append((dn, ep))
4322
+ return ret
4323
+
4324
+ async def installable_versions(self) -> ta.List[str]:
4325
+ if await self.root() is None:
4326
+ return []
4327
+ ret = []
4328
+ s = await asyncio_subprocesses.check_output_str(await self.exe(), 'install', '--list')
4329
+ for l in s.splitlines():
4330
+ if not l.startswith(' '):
4331
+ continue
4332
+ l = l.strip()
4333
+ if not l:
4334
+ continue
4335
+ ret.append(l)
4336
+ return ret
4337
+
4338
+ async def update(self) -> bool:
4339
+ if (root := await self.root()) is None:
4340
+ return False
4341
+ if not os.path.isdir(os.path.join(root, '.git')):
4342
+ return False
4343
+ await asyncio_subprocesses.check_call('git', 'pull', cwd=root)
4344
+ return True
4345
+
4346
+
4266
4347
  ########################################
4267
4348
  # ../resolvers.py
4268
4349
 
@@ -4397,12 +4478,14 @@ class SystemInterpProvider(InterpProvider):
4397
4478
  options: Options = Options(),
4398
4479
  *,
4399
4480
  inspector: ta.Optional[InterpInspector] = None,
4481
+ log: ta.Optional[logging.Logger] = None,
4400
4482
  ) -> None:
4401
4483
  super().__init__()
4402
4484
 
4403
4485
  self._options = options
4404
4486
 
4405
4487
  self._inspector = inspector
4488
+ self._log = log
4406
4489
 
4407
4490
  #
4408
4491
 
@@ -4476,7 +4559,8 @@ class SystemInterpProvider(InterpProvider):
4476
4559
  lst = []
4477
4560
  for e in self.exes():
4478
4561
  if (ev := await self.get_exe_version(e)) is None:
4479
- log.debug('Invalid system version: %s', e)
4562
+ if self._log is not None:
4563
+ self._log.debug('Invalid system version: %s', e)
4480
4564
  continue
4481
4565
  lst.append((e, ev))
4482
4566
  return lst
@@ -4498,88 +4582,7 @@ class SystemInterpProvider(InterpProvider):
4498
4582
 
4499
4583
 
4500
4584
  ########################################
4501
- # ../pyenv/pyenv.py
4502
- """
4503
- TODO:
4504
- - custom tags
4505
- - 'aliases'
4506
- - https://github.com/pyenv/pyenv/pull/2966
4507
- - https://github.com/pyenv/pyenv/issues/218 (lol)
4508
- - probably need custom (temp?) definition file
4509
- - *or* python-build directly just into the versions dir?
4510
- - optionally install / upgrade pyenv itself
4511
- - new vers dont need these custom mac opts, only run on old vers
4512
- """
4513
-
4514
-
4515
- ##
4516
-
4517
-
4518
- class Pyenv:
4519
- def __init__(
4520
- self,
4521
- *,
4522
- root: ta.Optional[str] = None,
4523
- ) -> None:
4524
- if root is not None and not (isinstance(root, str) and root):
4525
- raise ValueError(f'pyenv_root: {root!r}')
4526
-
4527
- super().__init__()
4528
-
4529
- self._root_kw = root
4530
-
4531
- @async_cached_nullary
4532
- async def root(self) -> ta.Optional[str]:
4533
- if self._root_kw is not None:
4534
- return self._root_kw
4535
-
4536
- if shutil.which('pyenv'):
4537
- return await asyncio_subprocesses.check_output_str('pyenv', 'root')
4538
-
4539
- d = os.path.expanduser('~/.pyenv')
4540
- if os.path.isdir(d) and os.path.isfile(os.path.join(d, 'bin', 'pyenv')):
4541
- return d
4542
-
4543
- return None
4544
-
4545
- @async_cached_nullary
4546
- async def exe(self) -> str:
4547
- return os.path.join(check.not_none(await self.root()), 'bin', 'pyenv')
4548
-
4549
- async def version_exes(self) -> ta.List[ta.Tuple[str, str]]:
4550
- if (root := await self.root()) is None:
4551
- return []
4552
- ret = []
4553
- vp = os.path.join(root, 'versions')
4554
- if os.path.isdir(vp):
4555
- for dn in os.listdir(vp):
4556
- ep = os.path.join(vp, dn, 'bin', 'python')
4557
- if not os.path.isfile(ep):
4558
- continue
4559
- ret.append((dn, ep))
4560
- return ret
4561
-
4562
- async def installable_versions(self) -> ta.List[str]:
4563
- if await self.root() is None:
4564
- return []
4565
- ret = []
4566
- s = await asyncio_subprocesses.check_output_str(await self.exe(), 'install', '--list')
4567
- for l in s.splitlines():
4568
- if not l.startswith(' '):
4569
- continue
4570
- l = l.strip()
4571
- if not l:
4572
- continue
4573
- ret.append(l)
4574
- return ret
4575
-
4576
- async def update(self) -> bool:
4577
- if (root := await self.root()) is None:
4578
- return False
4579
- if not os.path.isdir(os.path.join(root, '.git')):
4580
- return False
4581
- await asyncio_subprocesses.check_call('git', 'pull', cwd=root)
4582
- return True
4585
+ # ../pyenv/install.py
4583
4586
 
4584
4587
 
4585
4588
  ##
@@ -4817,7 +4820,27 @@ class PyenvVersionInstaller:
4817
4820
  return exe
4818
4821
 
4819
4822
 
4820
- ##
4823
+ ########################################
4824
+ # ../providers/inject.py
4825
+
4826
+
4827
+ def bind_interp_providers() -> InjectorBindings:
4828
+ lst: ta.List[InjectorBindingOrBindings] = [
4829
+ inj.bind_array(InterpProvider),
4830
+ inj.bind_array_type(InterpProvider, InterpProviders),
4831
+
4832
+ inj.bind(RunningInterpProvider, singleton=True),
4833
+ inj.bind(InterpProvider, to_key=RunningInterpProvider, array=True),
4834
+
4835
+ inj.bind(SystemInterpProvider, singleton=True),
4836
+ inj.bind(InterpProvider, to_key=SystemInterpProvider, array=True),
4837
+ ]
4838
+
4839
+ return inj.as_bindings(*lst)
4840
+
4841
+
4842
+ ########################################
4843
+ # ../pyenv/provider.py
4821
4844
 
4822
4845
 
4823
4846
  class PyenvInterpProvider(InterpProvider):
@@ -4833,6 +4856,7 @@ class PyenvInterpProvider(InterpProvider):
4833
4856
  *,
4834
4857
  pyenv: Pyenv,
4835
4858
  inspector: InterpInspector,
4859
+ log: ta.Optional[logging.Logger] = None,
4836
4860
  ) -> None:
4837
4861
  super().__init__()
4838
4862
 
@@ -4840,6 +4864,7 @@ class PyenvInterpProvider(InterpProvider):
4840
4864
 
4841
4865
  self._pyenv = pyenv
4842
4866
  self._inspector = inspector
4867
+ self._log = log
4843
4868
 
4844
4869
  #
4845
4870
 
@@ -4884,7 +4909,8 @@ class PyenvInterpProvider(InterpProvider):
4884
4909
  ret: ta.List[PyenvInterpProvider.Installed] = []
4885
4910
  for vn, ep in await self._pyenv.version_exes():
4886
4911
  if (i := await self._make_installed(vn, ep)) is None:
4887
- log.debug('Invalid pyenv version: %s', vn)
4912
+ if self._log is not None:
4913
+ self._log.debug('Invalid pyenv version: %s', vn)
4888
4914
  continue
4889
4915
  ret.append(i)
4890
4916
  return ret
@@ -4944,25 +4970,6 @@ class PyenvInterpProvider(InterpProvider):
4944
4970
  return Interp(exe, version)
4945
4971
 
4946
4972
 
4947
- ########################################
4948
- # ../providers/inject.py
4949
-
4950
-
4951
- def bind_interp_providers() -> InjectorBindings:
4952
- lst: ta.List[InjectorBindingOrBindings] = [
4953
- inj.bind_array(InterpProvider),
4954
- inj.bind_array_type(InterpProvider, InterpProviders),
4955
-
4956
- inj.bind(RunningInterpProvider, singleton=True),
4957
- inj.bind(InterpProvider, to_key=RunningInterpProvider, array=True),
4958
-
4959
- inj.bind(SystemInterpProvider, singleton=True),
4960
- inj.bind(InterpProvider, to_key=SystemInterpProvider, array=True),
4961
- ]
4962
-
4963
- return inj.as_bindings(*lst)
4964
-
4965
-
4966
4973
  ########################################
4967
4974
  # ../pyenv/inject.py
4968
4975