123456789101112131415161718192021222324252627282930 |
- from __future__ import annotations
- import shutil
- import typing as t
- from pathlib import Path
- from findpython.providers.base import BaseProvider
- from findpython.python import PythonVersion
- from findpython.utils import safe_iter_dir
- class RyeProvider(BaseProvider):
- def __init__(self) -> None:
- self.root = Path.home() / ".rye"
- self.rye_bin = shutil.which("rye")
- @classmethod
- def create(cls) -> t.Self | None:
- return cls()
- def find_pythons(self) -> t.Iterable[PythonVersion]:
- py_root = self.root / "py"
- if not py_root.exists():
- return
- for child in safe_iter_dir(py_root):
- if child.is_symlink(): # registered an existing python
- continue
- python_bin = child / "install/bin/python3"
- if python_bin.exists():
- yield self.version_maker(python_bin, _interpreter=python_bin)
|