ruyi 0.42.0b20251015__py3-none-any.whl → 0.43.0a20251017__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.
- ruyi/__main__.py +4 -0
- ruyi/cli/main.py +6 -1
- ruyi/cli/oobe.py +1 -1
- ruyi/pluginhost/api.py +1 -1
- ruyi/telemetry/aggregate.py +1 -1
- ruyi/telemetry/provider.py +1 -1
- ruyi/telemetry/store.py +2 -2
- ruyi/utils/global_mode.py +1 -1
- ruyi/{telemetry → utils}/node_info.py +52 -1
- ruyi/version.py +2 -49
- {ruyi-0.42.0b20251015.dist-info → ruyi-0.43.0a20251017.dist-info}/METADATA +1 -2
- {ruyi-0.42.0b20251015.dist-info → ruyi-0.43.0a20251017.dist-info}/RECORD +15 -15
- {ruyi-0.42.0b20251015.dist-info → ruyi-0.43.0a20251017.dist-info}/WHEEL +0 -0
- {ruyi-0.42.0b20251015.dist-info → ruyi-0.43.0a20251017.dist-info}/entry_points.txt +0 -0
- {ruyi-0.42.0b20251015.dist-info → ruyi-0.43.0a20251017.dist-info}/licenses/LICENSE-Apache.txt +0 -0
ruyi/__main__.py
CHANGED
|
@@ -11,6 +11,7 @@ from ruyi.utils.global_mode import (
|
|
|
11
11
|
TRUTHY_ENV_VAR_VALUES,
|
|
12
12
|
is_env_var_truthy,
|
|
13
13
|
)
|
|
14
|
+
from ruyi.utils.node_info import probe_for_container_runtime
|
|
14
15
|
|
|
15
16
|
# NOTE: no imports that directly or indirectly pull in pygit2 should go here,
|
|
16
17
|
# because import of pygit2 will fail if done before ssl_patch. Notably this
|
|
@@ -32,6 +33,9 @@ def _is_allowed_to_run_as_root() -> bool:
|
|
|
32
33
|
# CI environments are usually considered to be controlled, and safe
|
|
33
34
|
# for root usage.
|
|
34
35
|
return True
|
|
36
|
+
if probe_for_container_runtime(os.environ) != "unknown":
|
|
37
|
+
# So are container environments.
|
|
38
|
+
return True
|
|
35
39
|
return False
|
|
36
40
|
|
|
37
41
|
|
ruyi/cli/main.py
CHANGED
|
@@ -6,6 +6,7 @@ from typing import Final, TYPE_CHECKING
|
|
|
6
6
|
from ..config import GlobalConfig
|
|
7
7
|
from ..telemetry.scope import TelemetryScope
|
|
8
8
|
from ..utils.global_mode import GlobalModeProvider
|
|
9
|
+
from ..version import RUYI_SEMVER
|
|
9
10
|
from . import RUYI_ENTRYPOINT_NAME
|
|
10
11
|
from .oobe import OOBE
|
|
11
12
|
|
|
@@ -22,7 +23,11 @@ def is_called_as_ruyi(argv0: str) -> bool:
|
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
def should_prompt_for_renaming(argv0: str) -> bool:
|
|
25
|
-
|
|
26
|
+
# We need to allow things like "ruyi-qemu" through, to not break our mux.
|
|
27
|
+
# Only consider filenames starting with both our name *and* version to be
|
|
28
|
+
# un-renamed onefile artifacts that warrant a rename prompt.
|
|
29
|
+
likely_artifact_name_prefix = f"{RUYI_ENTRYPOINT_NAME}-{RUYI_SEMVER}."
|
|
30
|
+
return os.path.basename(argv0).lower().startswith(likely_artifact_name_prefix)
|
|
26
31
|
|
|
27
32
|
|
|
28
33
|
def main(gm: GlobalModeProvider, gc: GlobalConfig, argv: list[str]) -> int:
|
ruyi/cli/oobe.py
CHANGED
|
@@ -65,7 +65,7 @@ class OOBE:
|
|
|
65
65
|
handler()
|
|
66
66
|
|
|
67
67
|
def _builtin_shell_completion_tip(self) -> None:
|
|
68
|
-
from ..
|
|
68
|
+
from ..utils.node_info import probe_for_shell
|
|
69
69
|
from .completion import SUPPORTED_SHELLS
|
|
70
70
|
|
|
71
71
|
# Only show the tip if we're not externally managed by a package manager,
|
ruyi/pluginhost/api.py
CHANGED
ruyi/telemetry/aggregate.py
CHANGED
|
@@ -3,8 +3,8 @@ from typing import Iterable, TypeAlias, TypedDict, TYPE_CHECKING
|
|
|
3
3
|
if TYPE_CHECKING:
|
|
4
4
|
from typing_extensions import NotRequired
|
|
5
5
|
|
|
6
|
+
from ..utils.node_info import NodeInfo
|
|
6
7
|
from .event import TelemetryEvent
|
|
7
|
-
from .node_info import NodeInfo
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AggregatedTelemetryEvent(TypedDict):
|
ruyi/telemetry/provider.py
CHANGED
|
@@ -8,7 +8,7 @@ from typing import Callable, TYPE_CHECKING, cast
|
|
|
8
8
|
import uuid
|
|
9
9
|
|
|
10
10
|
from ..log import RuyiLogger
|
|
11
|
-
from .node_info import NodeInfo, gather_node_info
|
|
11
|
+
from ..utils.node_info import NodeInfo, gather_node_info
|
|
12
12
|
from .scope import TelemetryScope
|
|
13
13
|
from .store import TelemetryStore
|
|
14
14
|
|
ruyi/telemetry/store.py
CHANGED
|
@@ -8,10 +8,10 @@ from typing import Callable, Final, Iterable
|
|
|
8
8
|
import uuid
|
|
9
9
|
|
|
10
10
|
from ..log import RuyiLogger
|
|
11
|
+
from ..utils.node_info import NodeInfo
|
|
11
12
|
from ..utils.url import urljoin_for_sure
|
|
12
13
|
from .aggregate import UploadPayload, aggregate_events
|
|
13
14
|
from .event import TelemetryEvent, is_telemetry_event
|
|
14
|
-
from .node_info import NodeInfo
|
|
15
15
|
from .scope import TelemetryScope
|
|
16
16
|
|
|
17
17
|
# e.g. "run.202410201845.d06ca5d668e64fec833ed3e6eb926a2c.ndjson"
|
|
@@ -165,7 +165,7 @@ class TelemetryStore:
|
|
|
165
165
|
payload: UploadPayload = {
|
|
166
166
|
"fmt": 1,
|
|
167
167
|
"nonce": payload_nonce,
|
|
168
|
-
"ruyi_version":
|
|
168
|
+
"ruyi_version": RUYI_SEMVER,
|
|
169
169
|
"events": aggregate_data,
|
|
170
170
|
}
|
|
171
171
|
if installation_data is not None:
|
ruyi/utils/global_mode.py
CHANGED
|
@@ -143,7 +143,7 @@ def _probe_cli_autocomplete(env: Mapping[str, str], argv: list[str]) -> bool:
|
|
|
143
143
|
if arg.startswith("--output-completion-script"):
|
|
144
144
|
return True
|
|
145
145
|
|
|
146
|
-
return "_ARGCOMPLETE" in
|
|
146
|
+
return "_ARGCOMPLETE" in env
|
|
147
147
|
|
|
148
148
|
|
|
149
149
|
class EnvGlobalModeProvider(GlobalModeProvider):
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import glob
|
|
2
2
|
import os
|
|
3
|
+
import pathlib
|
|
3
4
|
import platform
|
|
4
5
|
import re
|
|
5
6
|
import subprocess
|
|
@@ -10,7 +11,7 @@ import uuid
|
|
|
10
11
|
if TYPE_CHECKING:
|
|
11
12
|
from typing_extensions import NotRequired
|
|
12
13
|
|
|
13
|
-
from
|
|
14
|
+
from .ci import probe_for_ci
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class NodeInfo(TypedDict):
|
|
@@ -161,6 +162,56 @@ def probe_for_shell(os_environ: Mapping[str, str]) -> str:
|
|
|
161
162
|
return "unknown"
|
|
162
163
|
|
|
163
164
|
|
|
165
|
+
def probe_for_container_runtime(os_environ: Mapping[str, str]) -> str:
|
|
166
|
+
"""Check if we are likely running in a container. Probes FS and environment
|
|
167
|
+
for signatures of known container runtimes."""
|
|
168
|
+
|
|
169
|
+
# check environment markers first
|
|
170
|
+
|
|
171
|
+
if "KUBERNETES_SERVICE_HOST" in os_environ:
|
|
172
|
+
return "kubernetes"
|
|
173
|
+
|
|
174
|
+
if "container" in os_environ:
|
|
175
|
+
v = os_environ["container"].lower()
|
|
176
|
+
if v == "oci":
|
|
177
|
+
return "other-oci-compliant"
|
|
178
|
+
# could be e.g. "lxc", "lxc-libvirt", "systemd-nspawn", etc.
|
|
179
|
+
return v
|
|
180
|
+
|
|
181
|
+
# check for filesystem markers
|
|
182
|
+
|
|
183
|
+
if os.path.exists("/run/.containerenv"):
|
|
184
|
+
return "podman"
|
|
185
|
+
# Docker must be checked after Podman
|
|
186
|
+
if os.path.exists("/.dockerenv"):
|
|
187
|
+
return "docker"
|
|
188
|
+
|
|
189
|
+
try:
|
|
190
|
+
v = pathlib.Path("/run/systemd/container").read_text(encoding="utf-8").strip()
|
|
191
|
+
if v:
|
|
192
|
+
return v.lower()
|
|
193
|
+
except Exception:
|
|
194
|
+
pass
|
|
195
|
+
|
|
196
|
+
if _probe_for_wsl():
|
|
197
|
+
return "wsl"
|
|
198
|
+
|
|
199
|
+
return "unknown"
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def _probe_for_wsl() -> bool:
|
|
203
|
+
if sys.platform != "linux":
|
|
204
|
+
return False
|
|
205
|
+
# http://github.com/Microsoft/WSL/issues/423#issuecomment-221627364
|
|
206
|
+
for path in ("/proc/sys/kernel/osrelease", "/proc/version"):
|
|
207
|
+
try:
|
|
208
|
+
ver = pathlib.Path(path).read_text(encoding="utf-8")
|
|
209
|
+
except Exception:
|
|
210
|
+
continue
|
|
211
|
+
return "Microsoft" in ver or "WSL" in ver
|
|
212
|
+
return False
|
|
213
|
+
|
|
214
|
+
|
|
164
215
|
def gather_node_info(report_uuid: uuid.UUID | None = None) -> NodeInfo:
|
|
165
216
|
arch = platform.machine()
|
|
166
217
|
libc = probe_for_libc()
|
ruyi/version.py
CHANGED
|
@@ -1,53 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
from typing import Final, TYPE_CHECKING
|
|
1
|
+
from typing import Final
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
# pyright only works with semver 3.x
|
|
8
|
-
from semver.version import Version
|
|
9
|
-
else:
|
|
10
|
-
try:
|
|
11
|
-
from semver.version import Version # type: ignore[import-untyped,unused-ignore]
|
|
12
|
-
except ModuleNotFoundError:
|
|
13
|
-
# semver 2.x
|
|
14
|
-
from semver import VersionInfo as Version # type: ignore[import-untyped,unused-ignore]
|
|
15
|
-
|
|
16
|
-
# NOTE: one cannot print logs in the version helpers, because the version info
|
|
17
|
-
# is initialized so early (before argparse can look at argv because --version
|
|
18
|
-
# requires version info to be ready) that the porcelain status is not yet
|
|
19
|
-
# available.
|
|
20
|
-
|
|
21
|
-
_PYPI_PRERELEASE_KINDS_MAP: Final = {
|
|
22
|
-
"a": "alpha",
|
|
23
|
-
"b": "beta",
|
|
24
|
-
"rc": "rc",
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
# based on https://python-semver.readthedocs.io/en/3.0.2/advanced/convert-pypi-to-semver.html
|
|
29
|
-
def _convert2semver(ver: packaging.version.Version) -> Version:
|
|
30
|
-
if ver.epoch:
|
|
31
|
-
raise ValueError("Can't convert an epoch to semver")
|
|
32
|
-
if ver.post:
|
|
33
|
-
raise ValueError("Can't convert a post part to semver")
|
|
34
|
-
|
|
35
|
-
pre: str | None = None
|
|
36
|
-
if ver.pre:
|
|
37
|
-
kind, val = ver.pre
|
|
38
|
-
pre = f"{_PYPI_PRERELEASE_KINDS_MAP.get(kind, kind)}.{val}"
|
|
39
|
-
|
|
40
|
-
maj, min, pat = ver.release[:3]
|
|
41
|
-
return Version(maj, min, pat, prerelease=pre, build=ver.dev)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def _init_pkg_semver() -> Version:
|
|
45
|
-
pkg_pypi_ver = packaging.version.Version(importlib.metadata.version("ruyi"))
|
|
46
|
-
# log.D(f"PyPI-style version of ruyi: {pkg_pypi_ver}")
|
|
47
|
-
return _convert2semver(pkg_pypi_ver)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
RUYI_SEMVER: Final = _init_pkg_semver()
|
|
3
|
+
RUYI_SEMVER: Final = "0.43.0-alpha.20251017"
|
|
51
4
|
RUYI_USER_AGENT: Final = f"ruyi/{RUYI_SEMVER}"
|
|
52
5
|
|
|
53
6
|
COPYRIGHT_NOTICE: Final = """\
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ruyi
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.43.0a20251017
|
|
4
4
|
Summary: Package manager for RuyiSDK
|
|
5
5
|
License: Apache License
|
|
6
6
|
Version 2.0, January 2004
|
|
@@ -225,7 +225,6 @@ Requires-Dist: argcomplete (>=2.0.0)
|
|
|
225
225
|
Requires-Dist: arpy
|
|
226
226
|
Requires-Dist: fastjsonschema (>=2.15.1)
|
|
227
227
|
Requires-Dist: jinja2 (>=3,<4)
|
|
228
|
-
Requires-Dist: packaging (>=21)
|
|
229
228
|
Requires-Dist: pygit2 (>=1.6)
|
|
230
229
|
Requires-Dist: pyyaml (>=5.4)
|
|
231
230
|
Requires-Dist: requests (>=2,<3)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
ruyi/__init__.py,sha256=_8k6Lm01mK35fGY7N9yQLF2SpmVPU70F2plkS6yG1YU,464
|
|
2
|
-
ruyi/__main__.py,sha256=
|
|
2
|
+
ruyi/__main__.py,sha256=jgWWxLHU07JJQSRRqWWR3EcZpauqRpaJju9q3DF9yHg,3335
|
|
3
3
|
ruyi/cli/__init__.py,sha256=MCdAZ00CLb9atln-pJrdQBmcrZmvPx4SOL5LVDbRc_Q,116
|
|
4
4
|
ruyi/cli/builtin_commands.py,sha256=cYyPSF00DSBH1WMv6mHcMygbFRBGXObMWhbXHs5K1Mc,639
|
|
5
5
|
ruyi/cli/cmd.py,sha256=kR3aEiDE3AfPoP0Zr7MO-09CKoExbkLLmPvve9oKaUg,6725
|
|
6
6
|
ruyi/cli/completer.py,sha256=cnOkU7veDe-jP8ROXZL2uBop2HgWfaAZl6dromnPLx8,1426
|
|
7
7
|
ruyi/cli/completion.py,sha256=ffLs3Dv7pY_uinwH98wkBPohRvAjpUOGqy01OTA_Bgo,841
|
|
8
8
|
ruyi/cli/config_cli.py,sha256=9kq5W3Ir_lfwImhvrUmQ1KTKy1aRCv_UU1CmL5eGyJs,4038
|
|
9
|
-
ruyi/cli/main.py,sha256=
|
|
10
|
-
ruyi/cli/oobe.py,sha256=
|
|
9
|
+
ruyi/cli/main.py,sha256=qWgCKbWG8sHxM7rInkoQfzZOHKo2k8JwdgJp_AMH388,4455
|
|
10
|
+
ruyi/cli/oobe.py,sha256=TqXpoCAslIYt1ODPGial0NsNtf3nL1BLxJ8k_CdkuAU,2708
|
|
11
11
|
ruyi/cli/self_cli.py,sha256=UEX3Xjy8RGGn9W2O5cM-5rLCwpsM7uSQ9vYYBYxyjyQ,8837
|
|
12
12
|
ruyi/cli/user_input.py,sha256=ZJPyCAD7Aizkt37f_KDtW683aKvGZ2pL85Rg_y1LLfg,3711
|
|
13
13
|
ruyi/cli/version_cli.py,sha256=L2pejZ7LIPYLUTb9NIz4t51KB8ai8igPBuE64tyqUuI,1275
|
|
@@ -28,7 +28,7 @@ ruyi/mux/venv/maker.py,sha256=RzipQWANOpKZxXGG_XiExyoQzHBw-j6wew7Iu6hZwZE,27234
|
|
|
28
28
|
ruyi/mux/venv/venv_cli.py,sha256=rIKNcYKu1j7ahHXNgv_ytYVR7qJOoly-TaHPvb21FGA,2974
|
|
29
29
|
ruyi/mux/venv_cfg.py,sha256=m75JCVLFWE1gE8OzcNDOHqwUc2c6ikJhZ-GhjsXv94U,6840
|
|
30
30
|
ruyi/pluginhost/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
-
ruyi/pluginhost/api.py,sha256=
|
|
31
|
+
ruyi/pluginhost/api.py,sha256=Zh69xJfR7PEbM6fjoFZRNqeqTneWAmC71NjA76HodSY,5711
|
|
32
32
|
ruyi/pluginhost/ctx.py,sha256=MsP1L7nchnbSrauId3GaQzv0YJLnWE0u_H3ZFEmjUX8,6590
|
|
33
33
|
ruyi/pluginhost/paths.py,sha256=3EVY3_i3LLff4Lk9py-E317C7_ysiRatfCiuxvCsVWw,4227
|
|
34
34
|
ruyi/pluginhost/plugin_cli.py,sha256=rLdXG4_OJ2nlaSjFBmTaclx_N2f0s_Wi-9qcSeq7h9I,968
|
|
@@ -70,22 +70,22 @@ ruyi/ruyipkg/unpack.py,sha256=hPd-lOnDXp1lEb4mdbLUEckT4QXblSFxz-dGAdwaAjc,11207
|
|
|
70
70
|
ruyi/ruyipkg/unpack_method.py,sha256=MonFFvcDb7MVsi2w4yitnCeZkmWmS7nRMMY-wSt9AMs,2106
|
|
71
71
|
ruyi/ruyipkg/update_cli.py,sha256=ywsAAUPctJ3_2qPDvFL2__ql9m8tGZ6ZfrwbSk30Xh4,1425
|
|
72
72
|
ruyi/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
-
ruyi/telemetry/aggregate.py,sha256=
|
|
73
|
+
ruyi/telemetry/aggregate.py,sha256=iKFC4re8IA69x8S-wXIGf5doN1C4zyNuyJulSI0xBTs,1988
|
|
74
74
|
ruyi/telemetry/event.py,sha256=GZnFj6E59Q7mjp-2VRApAZH3rT_bu4_cWb5QMCPm-Zc,982
|
|
75
|
-
ruyi/telemetry/
|
|
76
|
-
ruyi/telemetry/provider.py,sha256=U88ydGga3dwYAi7mfNKmEEyfhAZ4xelF2L-jNAk29IY,16486
|
|
75
|
+
ruyi/telemetry/provider.py,sha256=RTuGDddQ7yrD8wOlNOjyGhKydD7hiRe3f96pL3pOvmI,16493
|
|
77
76
|
ruyi/telemetry/scope.py,sha256=e45VPAvRAqSxrL0ESorN9SCnR_I6Bwi2CMPJDDshJEE,1133
|
|
78
|
-
ruyi/telemetry/store.py,sha256=
|
|
77
|
+
ruyi/telemetry/store.py,sha256=O9YMlLL1iqDbW8ltq0aZRX4VBCZEexBbc335DqlPtRM,8017
|
|
79
78
|
ruyi/telemetry/telemetry_cli.py,sha256=PBVMUSE3P6IBKQVMji_bueVenCdbchbOlowySXy0468,3364
|
|
80
79
|
ruyi/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
80
|
ruyi/utils/ar.py,sha256=w9wiYYdbInLewr5IRTcP0TiOw2ibVDQEmnV0hHm9WlA,2271
|
|
82
81
|
ruyi/utils/ci.py,sha256=66DBm4ooA7yozDtXCJFd1n2jJXTsEnxPSpkNzLfE28M,2970
|
|
83
82
|
ruyi/utils/frontmatter.py,sha256=4EOohEYCZ_q6ncpDv7ktJYf9PN4WEdgFfdE9hZBV3Zg,1052
|
|
84
83
|
ruyi/utils/git.py,sha256=YspRRkfxLXluCv4LNx6q_mjkPdoX7WSM9aR7EfudqlM,5991
|
|
85
|
-
ruyi/utils/global_mode.py,sha256=
|
|
84
|
+
ruyi/utils/global_mode.py,sha256=9GES5RyisSXAo14_bP896Jat6BFru_N-DC1V_7bofWY,5684
|
|
86
85
|
ruyi/utils/l10n.py,sha256=l003oQ5M8fWIKQHbYTVSc6oHzFFGU2sbKac7Hh6FNFU,2530
|
|
87
86
|
ruyi/utils/markdown.py,sha256=Mpq--ClM4j9lm_-5zO53ptYePUTLI4rg0V1YshOwsf8,2654
|
|
88
87
|
ruyi/utils/mounts.py,sha256=31BGsVOpD2bO7PYpm8I1ogDHzP3MvrMWznKonS3Ajos,1210
|
|
88
|
+
ruyi/utils/node_info.py,sha256=8-4dtrr2Ww_Cb9iKH_WpTMOWx7wknJKRwMUUZJYo9dQ,6603
|
|
89
89
|
ruyi/utils/nuitka.py,sha256=7mdbmtKnUsGkIp1zxXgGWYrwZcCut3ipd0AP0DrbfZk,1112
|
|
90
90
|
ruyi/utils/porcelain.py,sha256=pF6ieSE2xlnC0HBADFY0m-uuwVNNME3wlbHo2jWdLFA,1403
|
|
91
91
|
ruyi/utils/prereqs.py,sha256=oWAaH-smpTMQxpHt782YBxqHxrTaheataslN988-a78,2076
|
|
@@ -94,9 +94,9 @@ ruyi/utils/templating.py,sha256=94xBJTkIfDqmUBTc9hnLO54zQoC7hwGWONGF3YbaqHk,966
|
|
|
94
94
|
ruyi/utils/toml.py,sha256=aniIF3SGfR69_s3GWWwlnoKxW4B5IDVY2CM0eUI55_c,3501
|
|
95
95
|
ruyi/utils/url.py,sha256=Wyct6syS4GmZC6mY7SK-YgBWxKl3cOOBXtp9UtvGkto,186
|
|
96
96
|
ruyi/utils/xdg_basedir.py,sha256=RwVH199jPcLVsg5ngR62RaNS5hqnMpkdt31LqkCfa1g,2751
|
|
97
|
-
ruyi/version.py,sha256=
|
|
98
|
-
ruyi-0.
|
|
99
|
-
ruyi-0.
|
|
100
|
-
ruyi-0.
|
|
101
|
-
ruyi-0.
|
|
102
|
-
ruyi-0.
|
|
97
|
+
ruyi/version.py,sha256=j8Z7zk9JhLLxMr6POPm4uSQ26tx7dasPlCI_S9rd2v8,610
|
|
98
|
+
ruyi-0.43.0a20251017.dist-info/METADATA,sha256=Ka8_1dEj5TUsi7eFeUPj-XbfVhpzouC92b92z_k_cmI,24243
|
|
99
|
+
ruyi-0.43.0a20251017.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
100
|
+
ruyi-0.43.0a20251017.dist-info/entry_points.txt,sha256=GXSNSy7OgFrnlU5xm5dE3l3PGO92Qf6VDIUCdvQNm8E,49
|
|
101
|
+
ruyi-0.43.0a20251017.dist-info/licenses/LICENSE-Apache.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
102
|
+
ruyi-0.43.0a20251017.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{ruyi-0.42.0b20251015.dist-info → ruyi-0.43.0a20251017.dist-info}/licenses/LICENSE-Apache.txt
RENAMED
|
File without changes
|