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.
Files changed (25) hide show
  1. {hugpy-0.2.2/src/hugpy.egg-info → hugpy-0.2.4}/PKG-INFO +24 -14
  2. {hugpy-0.2.2 → hugpy-0.2.4}/README.md +11 -13
  3. {hugpy-0.2.2 → hugpy-0.2.4}/pyproject.toml +17 -4
  4. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/cli.py +6 -5
  5. {hugpy-0.2.2 → hugpy-0.2.4/src/hugpy.egg-info}/PKG-INFO +24 -14
  6. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/SOURCES.txt +1 -0
  7. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/requires.txt +12 -0
  8. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/scm_file_list.json +1 -0
  9. hugpy-0.2.4/src/hugpy.egg-info/scm_version.json +8 -0
  10. {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_cli.py +1 -0
  11. hugpy-0.2.4/tests/test_install_contract.py +23 -0
  12. hugpy-0.2.2/src/hugpy.egg-info/scm_version.json +0 -8
  13. {hugpy-0.2.2 → hugpy-0.2.4}/LICENSE +0 -0
  14. {hugpy-0.2.2 → hugpy-0.2.4}/setup.cfg +0 -0
  15. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/__init__.py +0 -0
  16. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/hpy.py +0 -0
  17. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy/py.typed +0 -0
  18. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/dependency_links.txt +0 -0
  19. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/entry_points.txt +0 -0
  20. {hugpy-0.2.2 → hugpy-0.2.4}/src/hugpy.egg-info/top_level.txt +0 -0
  21. {hugpy-0.2.2 → hugpy-0.2.4}/tests/conftest.py +0 -0
  22. {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_ecosystem_smoke.py +0 -0
  23. {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_hpy.py +0 -0
  24. {hugpy-0.2.2 → hugpy-0.2.4}/tests/test_import_policy.py +0 -0
  25. {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.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 "hugpy[server]"
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**: it installs the `hugpy` and `hpy`
134
- commands and picks the rest of the product through extras. The implementation
135
- lives in a family of `hugpy-*` distributions (below); the `hugpy` command only
136
- dispatches to them, so a bare `pip install hugpy` stays tiny and imports
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
- - **Phone-to-server install.** The base install is small and wheels-only (it
173
- runs on Termux/aarch64 as a coordinator); the heavy engine, vision, OCR, and
174
- media stacks are opt-in extras that the code lazy-imports only when used.
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 # base: the commands + hugpy-platform only
216
+ pip install hugpy # complete lockstep Hugpy module family
206
217
  ```
207
218
 
208
- Add capabilities with extras. Each extra pulls the owning distribution(s) and
209
- their own extras; the profiles compose, so `hugpy[all]` is a superset of
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 "hugpy[server]"
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**: it installs the `hugpy` and `hpy`
14
- commands and picks the rest of the product through extras. The implementation
15
- lives in a family of `hugpy-*` distributions (below); the `hugpy` command only
16
- dispatches to them, so a bare `pip install hugpy` stays tiny and imports
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
- - **Phone-to-server install.** The base install is small and wheels-only (it
53
- runs on Termux/aarch64 as a coordinator); the heavy engine, vision, OCR, and
54
- media stacks are opt-in extras that the code lazy-imports only when used.
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 # base: the commands + hugpy-platform only
84
+ pip install hugpy # complete lockstep Hugpy module family
86
85
  ```
87
86
 
88
- Add capabilities with extras. Each extra pulls the owning distribution(s) and
89
- their own extras; the profiles compose, so `hugpy[all]` is a superset of
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 you the `hugpy` and `hpy` commands and nothing
4
- # heavier than hugpy-platform. Every feature is an extra that pulls the owning
5
- # distribution (and that distribution's own extras); the profiles below mirror
6
- # the install sets the monolith used to ship as a single package.
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 bare
13
- ``pip install hugpy`` therefore stays tiny, and a feature whose package is not
14
- installed answers with ``pip install "hugpy[<extra>]"`` instead of a traceback.
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: a thin ``pip install hugpy`` may carry an older platform."""
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.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 "hugpy[server]"
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**: it installs the `hugpy` and `hpy`
134
- commands and picks the rest of the product through extras. The implementation
135
- lives in a family of `hugpy-*` distributions (below); the `hugpy` command only
136
- dispatches to them, so a bare `pip install hugpy` stays tiny and imports
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
- - **Phone-to-server install.** The base install is small and wheels-only (it
173
- runs on Termux/aarch64 as a coordinator); the heavy engine, vision, OCR, and
174
- media stacks are opt-in extras that the code lazy-imports only when used.
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 # base: the commands + hugpy-platform only
216
+ pip install hugpy # complete lockstep Hugpy module family
206
217
  ```
207
218
 
208
- Add capabilities with extras. Each extra pulls the owning distribution(s) and
209
- their own extras; the profiles compose, so `hugpy[all]` is a superset of
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
  |-------|-------|------------|
@@ -18,4 +18,5 @@ tests/test_cli.py
18
18
  tests/test_ecosystem_smoke.py
19
19
  tests/test_hpy.py
20
20
  tests/test_import_policy.py
21
+ tests/test_install_contract.py
21
22
  tests/test_serve_factory_deferral.py
@@ -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]
@@ -12,6 +12,7 @@
12
12
  "tests/test_ecosystem_smoke.py",
13
13
  "tests/test_hpy.py",
14
14
  "tests/test_import_policy.py",
15
+ "tests/test_install_contract.py",
15
16
  "tests/test_serve_factory_deferral.py"
16
17
  ]
17
18
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.2.4",
3
+ "distance": 0,
4
+ "node": "gc769a199bae5671f2e945218fce387746b9ea2e3",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-29"
8
+ }
@@ -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
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.2.2",
3
- "distance": 0,
4
- "node": "g65e6f9d20a324f3bc25c9630b30196a58615a10b",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-09-26"
8
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes