hugpy 0.2.2__tar.gz → 0.2.4__tar.gz
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.
- {hugpy-0.2.2/src/hugpy.egg-info → hugpy-0.2.4}/PKG-INFO +24 -14
- {hugpy-0.2.2 → hugpy-0.2.4}/README.md +11 -13
- {hugpy-0.2.2 → hugpy-0.2.4}/pyproject.toml +17 -4
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/cli.py +6 -5
- {hugpy-0.2.2 → hugpy-0.2.4/src/hugpy.egg-info}/PKG-INFO +24 -14
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/SOURCES.txt +1 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/requires.txt +12 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/scm_file_list.json +1 -0
- hugpy-0.2.4/src/hugpy.egg-info/scm_version.json +8 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_cli.py +1 -0
- hugpy-0.2.4/tests/test_install_contract.py +23 -0
- hugpy-0.2.2/src/hugpy.egg-info/scm_version.json +0 -8
- {hugpy-0.2.2 → hugpy-0.2.4}/LICENSE +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/setup.cfg +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/__init__.py +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/hpy.py +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/py.typed +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/dependency_links.txt +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/entry_points.txt +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/top_level.txt +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/tests/conftest.py +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_ecosystem_smoke.py +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_hpy.py +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_import_policy.py +0 -0
- {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_serve_factory_deferral.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hugpy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Self-hosted LLM console and OpenAI-compatible API: model registry and downloads, streaming chat, on-site API keys, GPU worker fleet with cross-machine RPC sharding. Meta distribution: the hugpy/hpy commands and install profiles for the hugpy-* packages
|
|
5
5
|
Author-email: putkoff <support@hugpy.ai>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
@@ -23,6 +23,18 @@ Requires-Python: >=3.10
|
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
24
24
|
License-File: LICENSE
|
|
25
25
|
Requires-Dist: hugpy-platform
|
|
26
|
+
Requires-Dist: hugpy-tools
|
|
27
|
+
Requires-Dist: hugpy-control
|
|
28
|
+
Requires-Dist: hugpy-storage
|
|
29
|
+
Requires-Dist: hugpy-engine
|
|
30
|
+
Requires-Dist: hugpy-media
|
|
31
|
+
Requires-Dist: hugpy-video
|
|
32
|
+
Requires-Dist: hugpy-oracle
|
|
33
|
+
Requires-Dist: hugpy-fleet
|
|
34
|
+
Requires-Dist: hugpy-curation
|
|
35
|
+
Requires-Dist: hugpy-ops
|
|
36
|
+
Requires-Dist: hugpy-discord
|
|
37
|
+
Requires-Dist: hugpy-server
|
|
26
38
|
Provides-Extra: test
|
|
27
39
|
Requires-Dist: pytest>=8; extra == "test"
|
|
28
40
|
Requires-Dist: pytest-timeout; extra == "test"
|
|
@@ -126,15 +138,14 @@ with on-site API keys, and a GPU worker fleet with cross-machine RPC sharding
|
|
|
126
138
|
all served by one command, with no nginx and no Node required.
|
|
127
139
|
|
|
128
140
|
```bash
|
|
129
|
-
pip install
|
|
141
|
+
pip install hugpy
|
|
130
142
|
hugpy serve # console at http://localhost:7002/ , API at /api/v1
|
|
131
143
|
```
|
|
132
144
|
|
|
133
|
-
`hugpy` is the **meta distribution**:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
nothing but the standard library and `hugpy-platform`.
|
|
145
|
+
`hugpy` is the **meta distribution**: a normal install brings in the complete,
|
|
146
|
+
lockstep `hugpy-*` module family used by development. The implementation remains
|
|
147
|
+
split into focused distributions, while extras add optional native, GPU, model
|
|
148
|
+
runner, and service dependencies for a particular machine profile.
|
|
138
149
|
|
|
139
150
|
---
|
|
140
151
|
|
|
@@ -169,9 +180,9 @@ around self-hosting:
|
|
|
169
180
|
- **Bring your own GPUs.** Join any machine to a central as a worker
|
|
170
181
|
(`hugpy worker`), or lend its GPU to a **cross-machine shard pool** so models
|
|
171
182
|
larger than one card can run across several boxes over RPC.
|
|
172
|
-
- **
|
|
173
|
-
|
|
174
|
-
|
|
183
|
+
- **One install, configurable runtime.** The base install carries the complete
|
|
184
|
+
Hugpy module family; native engines, GPU runners, and optional media stacks are
|
|
185
|
+
opt-in extras that the code lazy-imports only when used.
|
|
175
186
|
|
|
176
187
|
---
|
|
177
188
|
|
|
@@ -202,12 +213,11 @@ does not create a dependency.
|
|
|
202
213
|
## Install
|
|
203
214
|
|
|
204
215
|
```bash
|
|
205
|
-
pip install hugpy #
|
|
216
|
+
pip install hugpy # complete lockstep Hugpy module family
|
|
206
217
|
```
|
|
207
218
|
|
|
208
|
-
Add capabilities with extras.
|
|
209
|
-
|
|
210
|
-
`hugpy[server]` and `hugpy[gpu-worker]`.
|
|
219
|
+
Add runtime capabilities with extras. The profiles compose, so `hugpy[all]` is
|
|
220
|
+
a superset of `hugpy[server]` and `hugpy[gpu-worker]`.
|
|
211
221
|
|
|
212
222
|
| Extra | Pulls | Use it for |
|
|
213
223
|
|-------|-------|------------|
|
|
@@ -6,15 +6,14 @@ with on-site API keys, and a GPU worker fleet with cross-machine RPC sharding
|
|
|
6
6
|
all served by one command, with no nginx and no Node required.
|
|
7
7
|
|
|
8
8
|
```bash
|
|
9
|
-
pip install
|
|
9
|
+
pip install hugpy
|
|
10
10
|
hugpy serve # console at http://localhost:7002/ , API at /api/v1
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
`hugpy` is the **meta distribution**:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
nothing but the standard library and `hugpy-platform`.
|
|
13
|
+
`hugpy` is the **meta distribution**: a normal install brings in the complete,
|
|
14
|
+
lockstep `hugpy-*` module family used by development. The implementation remains
|
|
15
|
+
split into focused distributions, while extras add optional native, GPU, model
|
|
16
|
+
runner, and service dependencies for a particular machine profile.
|
|
18
17
|
|
|
19
18
|
---
|
|
20
19
|
|
|
@@ -49,9 +48,9 @@ around self-hosting:
|
|
|
49
48
|
- **Bring your own GPUs.** Join any machine to a central as a worker
|
|
50
49
|
(`hugpy worker`), or lend its GPU to a **cross-machine shard pool** so models
|
|
51
50
|
larger than one card can run across several boxes over RPC.
|
|
52
|
-
- **
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
- **One install, configurable runtime.** The base install carries the complete
|
|
52
|
+
Hugpy module family; native engines, GPU runners, and optional media stacks are
|
|
53
|
+
opt-in extras that the code lazy-imports only when used.
|
|
55
54
|
|
|
56
55
|
---
|
|
57
56
|
|
|
@@ -82,12 +81,11 @@ does not create a dependency.
|
|
|
82
81
|
## Install
|
|
83
82
|
|
|
84
83
|
```bash
|
|
85
|
-
pip install hugpy #
|
|
84
|
+
pip install hugpy # complete lockstep Hugpy module family
|
|
86
85
|
```
|
|
87
86
|
|
|
88
|
-
Add capabilities with extras.
|
|
89
|
-
|
|
90
|
-
`hugpy[server]` and `hugpy[gpu-worker]`.
|
|
87
|
+
Add runtime capabilities with extras. The profiles compose, so `hugpy[all]` is
|
|
88
|
+
a superset of `hugpy[server]` and `hugpy[gpu-worker]`.
|
|
91
89
|
|
|
92
90
|
| Extra | Pulls | Use it for |
|
|
93
91
|
|-------|-------|------------|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# hugpy — the meta distribution of the Hugpy ecosystem.
|
|
2
2
|
#
|
|
3
|
-
# `pip install hugpy` gives
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
3
|
+
# `pip install hugpy` gives an operator the complete lockstep Hugpy module
|
|
4
|
+
# family, matching the development stack. Features that need optional native,
|
|
5
|
+
# GPU, model-runner, or web-service dependencies remain extras; the profiles
|
|
6
|
+
# below add those runtime capabilities without making an import namespace
|
|
7
|
+
# disappear from a normal install.
|
|
7
8
|
|
|
8
9
|
[build-system]
|
|
9
10
|
requires = ["setuptools>=77", "setuptools-scm>=8"]
|
|
@@ -39,6 +40,18 @@ classifiers = [
|
|
|
39
40
|
]
|
|
40
41
|
dependencies = [
|
|
41
42
|
"hugpy-platform",
|
|
43
|
+
"hugpy-tools",
|
|
44
|
+
"hugpy-control",
|
|
45
|
+
"hugpy-storage",
|
|
46
|
+
"hugpy-engine",
|
|
47
|
+
"hugpy-media",
|
|
48
|
+
"hugpy-video",
|
|
49
|
+
"hugpy-oracle",
|
|
50
|
+
"hugpy-fleet",
|
|
51
|
+
"hugpy-curation",
|
|
52
|
+
"hugpy-ops",
|
|
53
|
+
"hugpy-discord",
|
|
54
|
+
"hugpy-server",
|
|
42
55
|
]
|
|
43
56
|
|
|
44
57
|
|
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
hugpy install-engine | install-deps | reclassify-images | version | build
|
|
10
10
|
|
|
11
11
|
Every feature lives in the package that owns it; this module only maps a
|
|
12
|
-
subcommand to that package's entry point and imports it on demand. A
|
|
13
|
-
``pip install hugpy``
|
|
14
|
-
|
|
12
|
+
subcommand to that package's entry point and imports it on demand. A normal
|
|
13
|
+
``pip install hugpy`` carries every lockstep Hugpy module. Features that need
|
|
14
|
+
optional native, GPU, or service dependencies still answer with
|
|
15
|
+
``pip install "hugpy[<extra>]"`` instead of a traceback.
|
|
15
16
|
|
|
16
17
|
The only ecosystem package imported eagerly is ``hugpy_platform``; ``chat``
|
|
17
18
|
and ``install-deps`` are stdlib-only so they work on the thinnest install.
|
|
@@ -508,7 +509,7 @@ def _install_deps(args: argparse.Namespace) -> int:
|
|
|
508
509
|
|
|
509
510
|
|
|
510
511
|
ECOSYSTEM_DISTRIBUTIONS = (
|
|
511
|
-
"hugpy-platform", "hugpy-control", "hugpy-storage", "hugpy-engine",
|
|
512
|
+
"hugpy-platform", "hugpy-tools", "hugpy-control", "hugpy-storage", "hugpy-engine",
|
|
512
513
|
"hugpy-media", "hugpy-video", "hugpy-oracle", "hugpy-fleet",
|
|
513
514
|
"hugpy-curation", "hugpy-ops", "hugpy-discord", "hugpy-server",
|
|
514
515
|
)
|
|
@@ -516,7 +517,7 @@ ECOSYSTEM_DISTRIBUTIONS = (
|
|
|
516
517
|
|
|
517
518
|
def _buildinfo():
|
|
518
519
|
"""``hugpy_platform.buildinfo`` when the installed platform ships it, else
|
|
519
|
-
None. Lazy
|
|
520
|
+
None. Lazy so a partial or older environment can still report gracefully."""
|
|
520
521
|
try:
|
|
521
522
|
return importlib.import_module("hugpy_platform.buildinfo")
|
|
522
523
|
except Exception: # noqa: BLE001 — absent or broken: callers degrade
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hugpy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Self-hosted LLM console and OpenAI-compatible API: model registry and downloads, streaming chat, on-site API keys, GPU worker fleet with cross-machine RPC sharding. Meta distribution: the hugpy/hpy commands and install profiles for the hugpy-* packages
|
|
5
5
|
Author-email: putkoff <support@hugpy.ai>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
@@ -23,6 +23,18 @@ Requires-Python: >=3.10
|
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
24
24
|
License-File: LICENSE
|
|
25
25
|
Requires-Dist: hugpy-platform
|
|
26
|
+
Requires-Dist: hugpy-tools
|
|
27
|
+
Requires-Dist: hugpy-control
|
|
28
|
+
Requires-Dist: hugpy-storage
|
|
29
|
+
Requires-Dist: hugpy-engine
|
|
30
|
+
Requires-Dist: hugpy-media
|
|
31
|
+
Requires-Dist: hugpy-video
|
|
32
|
+
Requires-Dist: hugpy-oracle
|
|
33
|
+
Requires-Dist: hugpy-fleet
|
|
34
|
+
Requires-Dist: hugpy-curation
|
|
35
|
+
Requires-Dist: hugpy-ops
|
|
36
|
+
Requires-Dist: hugpy-discord
|
|
37
|
+
Requires-Dist: hugpy-server
|
|
26
38
|
Provides-Extra: test
|
|
27
39
|
Requires-Dist: pytest>=8; extra == "test"
|
|
28
40
|
Requires-Dist: pytest-timeout; extra == "test"
|
|
@@ -126,15 +138,14 @@ with on-site API keys, and a GPU worker fleet with cross-machine RPC sharding
|
|
|
126
138
|
all served by one command, with no nginx and no Node required.
|
|
127
139
|
|
|
128
140
|
```bash
|
|
129
|
-
pip install
|
|
141
|
+
pip install hugpy
|
|
130
142
|
hugpy serve # console at http://localhost:7002/ , API at /api/v1
|
|
131
143
|
```
|
|
132
144
|
|
|
133
|
-
`hugpy` is the **meta distribution**:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
nothing but the standard library and `hugpy-platform`.
|
|
145
|
+
`hugpy` is the **meta distribution**: a normal install brings in the complete,
|
|
146
|
+
lockstep `hugpy-*` module family used by development. The implementation remains
|
|
147
|
+
split into focused distributions, while extras add optional native, GPU, model
|
|
148
|
+
runner, and service dependencies for a particular machine profile.
|
|
138
149
|
|
|
139
150
|
---
|
|
140
151
|
|
|
@@ -169,9 +180,9 @@ around self-hosting:
|
|
|
169
180
|
- **Bring your own GPUs.** Join any machine to a central as a worker
|
|
170
181
|
(`hugpy worker`), or lend its GPU to a **cross-machine shard pool** so models
|
|
171
182
|
larger than one card can run across several boxes over RPC.
|
|
172
|
-
- **
|
|
173
|
-
|
|
174
|
-
|
|
183
|
+
- **One install, configurable runtime.** The base install carries the complete
|
|
184
|
+
Hugpy module family; native engines, GPU runners, and optional media stacks are
|
|
185
|
+
opt-in extras that the code lazy-imports only when used.
|
|
175
186
|
|
|
176
187
|
---
|
|
177
188
|
|
|
@@ -202,12 +213,11 @@ does not create a dependency.
|
|
|
202
213
|
## Install
|
|
203
214
|
|
|
204
215
|
```bash
|
|
205
|
-
pip install hugpy #
|
|
216
|
+
pip install hugpy # complete lockstep Hugpy module family
|
|
206
217
|
```
|
|
207
218
|
|
|
208
|
-
Add capabilities with extras.
|
|
209
|
-
|
|
210
|
-
`hugpy[server]` and `hugpy[gpu-worker]`.
|
|
219
|
+
Add runtime capabilities with extras. The profiles compose, so `hugpy[all]` is
|
|
220
|
+
a superset of `hugpy[server]` and `hugpy[gpu-worker]`.
|
|
211
221
|
|
|
212
222
|
| Extra | Pulls | Use it for |
|
|
213
223
|
|-------|-------|------------|
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
hugpy-platform
|
|
2
|
+
hugpy-tools
|
|
3
|
+
hugpy-control
|
|
4
|
+
hugpy-storage
|
|
5
|
+
hugpy-engine
|
|
6
|
+
hugpy-media
|
|
7
|
+
hugpy-video
|
|
8
|
+
hugpy-oracle
|
|
9
|
+
hugpy-fleet
|
|
10
|
+
hugpy-curation
|
|
11
|
+
hugpy-ops
|
|
12
|
+
hugpy-discord
|
|
13
|
+
hugpy-server
|
|
2
14
|
|
|
3
15
|
[all]
|
|
4
16
|
hugpy[bot,gpu-worker,media,native-engine,ops,server,video]
|
|
@@ -177,6 +177,7 @@ def test_version_lists_distributions(capsys):
|
|
|
177
177
|
# is installed; the "hugpy <version>" line is first otherwise
|
|
178
178
|
assert any(line.startswith("hugpy ") for line in lines[:2])
|
|
179
179
|
assert "hugpy-platform" in out
|
|
180
|
+
assert "hugpy-tools" in out
|
|
180
181
|
|
|
181
182
|
|
|
182
183
|
def test_version_prints_identity_line_first_when_buildinfo_present(monkeypatch, capsys):
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""The public meta wheel must mirror the complete local Hugpy module stack."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
import tomllib
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
ROOT = Path(__file__).resolve().parents[4]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_base_install_requires_every_lockstep_distribution():
|
|
13
|
+
with (ROOT / "py" / "partition.toml").open("rb") as manifest:
|
|
14
|
+
published = {
|
|
15
|
+
entry["distribution"]
|
|
16
|
+
for entry in tomllib.load(manifest)["package"]
|
|
17
|
+
# The meta distribution cannot declare itself as a dependency.
|
|
18
|
+
if entry["distribution"] != "hugpy"
|
|
19
|
+
}
|
|
20
|
+
with (ROOT / "py" / "meta" / "hugpy" / "pyproject.toml").open("rb") as project:
|
|
21
|
+
dependencies = set(tomllib.load(project)["project"]["dependencies"])
|
|
22
|
+
|
|
23
|
+
assert published <= dependencies
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|