hypernix 0.70.2__tar.gz → 0.70.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 (179) hide show
  1. {hypernix-0.70.2 → hypernix-0.70.4}/.github/workflows/deploy-docs.yml +10 -0
  2. {hypernix-0.70.2 → hypernix-0.70.4}/.github/workflows/public-release.yml +11 -5
  3. {hypernix-0.70.2 → hypernix-0.70.4}/PKG-INFO +34 -7
  4. {hypernix-0.70.2 → hypernix-0.70.4}/README.md +32 -5
  5. {hypernix-0.70.2 → hypernix-0.70.4}/pyproject.toml +17 -10
  6. {hypernix-0.70.2 → hypernix-0.70.4}/scripts/install_deps.sh +61 -7
  7. {hypernix-0.70.2 → hypernix-0.70.4}/setup.cfg +4 -1
  8. hypernix-0.70.4/setup.py +30 -0
  9. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/__init__.py +73 -9
  10. hypernix-0.70.4/src/hypernix/abbicus.py +271 -0
  11. hypernix-0.70.4/src/hypernix/cardboard_box.py +159 -0
  12. hypernix-0.70.4/src/hypernix/cctvtop.py +34 -0
  13. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/cli.py +94 -5
  14. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/compute_framework.py +77 -4
  15. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/download.py +14 -2
  16. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/instant_pot.py +6 -1
  17. hypernix-0.70.4/src/hypernix/lazy_suzan.py +211 -0
  18. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/new_fridge.py +32 -0
  19. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/old_fridge.py +28 -3
  20. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/old_oven.py +39 -9
  21. hypernix-0.70.4/src/hypernix/optimizer_framework.py +328 -0
  22. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/pressure_cooker_v3.py +73 -8
  23. hypernix-0.70.4/src/hypernix/pressure_cooker_v4.py +243 -0
  24. hypernix-0.70.4/src/hypernix/qa.py +129 -0
  25. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/quantize.py +124 -0
  26. hypernix-0.70.4/src/hypernix/stml.py +140 -0
  27. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/train.py +57 -3
  28. hypernix-0.70.4/src/hypernix/tupperware.py +217 -0
  29. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/tv.py +190 -19
  30. hypernix-0.70.4/src/hypernix/tvtop_plus_plus.py +496 -0
  31. hypernix-0.70.4/src/hypernix/version_launcher.py +125 -0
  32. hypernix-0.70.4/src/hypernix/webui.py +560 -0
  33. hypernix-0.70.4/src/hypernix/webui_static/app.js +801 -0
  34. hypernix-0.70.4/src/hypernix/webui_static/index.html +712 -0
  35. hypernix-0.70.4/src/hypernix/webui_static/style.css +1726 -0
  36. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/workshop.py +15 -3
  37. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix.egg-info/SOURCES.txt +29 -0
  38. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_fridges.py +16 -4
  39. hypernix-0.70.4/tests/test_lazy_suzan.py +94 -0
  40. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_pressure_cooker_v3.py +27 -1
  41. hypernix-0.70.4/tests/test_quantize_v0703.py +51 -0
  42. hypernix-0.70.4/tests/test_tupperware.py +67 -0
  43. hypernix-0.70.4/tests/test_tvtop_plus_plus_comprehensive.py +535 -0
  44. hypernix-0.70.4/tests/test_v0703_additional.py +140 -0
  45. hypernix-0.70.4/tests/test_v0704_tvtop_plus_plus.py +114 -0
  46. hypernix-0.70.4/tests/test_v0704b11_features.py +644 -0
  47. hypernix-0.70.4/tests/test_v0704b12_cctvtop.py +22 -0
  48. hypernix-0.70.4/tests/test_version_launcher.py +264 -0
  49. hypernix-0.70.4/tests/test_webui.py +41 -0
  50. hypernix-0.70.4/wiki/Abbicus.md +143 -0
  51. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/CLI.md +11 -2
  52. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Changelog.md +110 -0
  53. hypernix-0.70.4/wiki/Frameworks.md +49 -0
  54. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Fridges.md +9 -2
  55. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Home.md +11 -3
  56. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Kitchen.md +102 -6
  57. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Ovens.md +10 -0
  58. hypernix-0.70.4/wiki/Pressure-Cooker-V3.md +44 -0
  59. hypernix-0.70.4/wiki/Roadmap.md +25 -0
  60. hypernix-0.70.4/wiki/STML.md +145 -0
  61. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Training.md +31 -0
  62. hypernix-0.70.4/wiki/Tupperware.md +39 -0
  63. hypernix-0.70.2/setup.py +0 -11
  64. hypernix-0.70.2/src/hypernix/abbicus.py +0 -106
  65. hypernix-0.70.2/src/hypernix/webui.py +0 -613
  66. {hypernix-0.70.2 → hypernix-0.70.4}/.github/workflows/build.yml +0 -0
  67. {hypernix-0.70.2 → hypernix-0.70.4}/.github/workflows/ci.yml +0 -0
  68. {hypernix-0.70.2 → hypernix-0.70.4}/.github/workflows/release.yml +0 -0
  69. {hypernix-0.70.2 → hypernix-0.70.4}/LICENSE +0 -0
  70. {hypernix-0.70.2 → hypernix-0.70.4}/MANIFEST.in +0 -0
  71. {hypernix-0.70.2 → hypernix-0.70.4}/assets/logo/Gemini_Generated_Image_nxfdm1nxfdm1nxfd-removebg-preview.png +0 -0
  72. {hypernix-0.70.2 → hypernix-0.70.4}/assets/logo/Gemini_Generated_Image_nxfdm1nxfdm1nxfd.png +0 -0
  73. {hypernix-0.70.2 → hypernix-0.70.4}/assets/logo.png +0 -0
  74. {hypernix-0.70.2 → hypernix-0.70.4}/assets/logo1.png +0 -0
  75. {hypernix-0.70.2 → hypernix-0.70.4}/examples/custom_arch.py +0 -0
  76. {hypernix-0.70.2 → hypernix-0.70.4}/examples/quickstart.py +0 -0
  77. {hypernix-0.70.2 → hypernix-0.70.4}/examples/run_hypernix.py +0 -0
  78. {hypernix-0.70.2 → hypernix-0.70.4}/examples/train_hypernix_0_1_5_evaluator.py +0 -0
  79. {hypernix-0.70.2 → hypernix-0.70.4}/examples/train_hypernix_1_5_gtx1080.py +0 -0
  80. {hypernix-0.70.2 → hypernix-0.70.4}/examples/upload_to_hub.py +0 -0
  81. {hypernix-0.70.2 → hypernix-0.70.4}/pytest.ini +0 -0
  82. {hypernix-0.70.2 → hypernix-0.70.4}/ruff.toml +0 -0
  83. {hypernix-0.70.2 → hypernix-0.70.4}/scripts/install_macos_legacy.sh +0 -0
  84. {hypernix-0.70.2 → hypernix-0.70.4}/scripts/quantize_i7_7660u.sh +0 -0
  85. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/__main__.py +0 -0
  86. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/apron.py +0 -0
  87. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/arch.py +0 -0
  88. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/assistant.py +0 -0
  89. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/bell.py +0 -0
  90. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/blender.py +0 -0
  91. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/cake_pan.py +0 -0
  92. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/coffee_maker.py +0 -0
  93. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/compactor.py +0 -0
  94. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/convert.py +0 -0
  95. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/cookbook.py +0 -0
  96. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/countertop.py +0 -0
  97. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/cutting_board.py +0 -0
  98. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/deep_fryer.py +0 -0
  99. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/deps.py +0 -0
  100. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/dishwasher.py +0 -0
  101. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/doctor.py +0 -0
  102. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/espresso_maker.py +0 -0
  103. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/ethanol.py +0 -0
  104. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/fetcher.py +0 -0
  105. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/flour.py +0 -0
  106. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/food_processor.py +0 -0
  107. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/freezer.py +0 -0
  108. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/generate.py +0 -0
  109. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/hyped.py +0 -0
  110. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/industrial_range.py +0 -0
  111. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/injection.py +0 -0
  112. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/lunchbox.py +0 -0
  113. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/mediocre_fridge.py +0 -0
  114. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/menu.py +0 -0
  115. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/microwave.py +0 -0
  116. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/nano_nano.py +0 -0
  117. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/new_range.py +0 -0
  118. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/old_range.py +0 -0
  119. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/outage.py +0 -0
  120. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/pans.py +0 -0
  121. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/pepper_shaker.py +0 -0
  122. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/plasma.py +0 -0
  123. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/pressure_cooker.py +0 -0
  124. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/py.typed +0 -0
  125. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/recipe_book.py +0 -0
  126. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/salt_shaker.py +0 -0
  127. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/sink.py +0 -0
  128. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/smoke_alarm.py +0 -0
  129. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/smoker.py +0 -0
  130. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/strainer.py +0 -0
  131. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/table.py +0 -0
  132. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/thermometer.py +0 -0
  133. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/timer.py +0 -0
  134. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/toaster.py +0 -0
  135. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/torch_compat.py +0 -0
  136. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/tvtop.py +0 -0
  137. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/upload.py +0 -0
  138. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/ups.py +0 -0
  139. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/utils.py +0 -0
  140. {hypernix-0.70.2 → hypernix-0.70.4}/src/hypernix/whisk.py +0 -0
  141. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_alarms_and_presets.py +0 -0
  142. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_arch_mapping.py +0 -0
  143. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_cli_integration.py +0 -0
  144. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_coverage_beef.py +0 -0
  145. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_deps_and_windows.py +0 -0
  146. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_fetcher.py +0 -0
  147. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_freezer.py +0 -0
  148. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_install_pin.py +0 -0
  149. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_kitchen_v044.py +0 -0
  150. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_kitchen_v045.py +0 -0
  151. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_lunchbox.py +0 -0
  152. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_new_archs_v035.py +0 -0
  153. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_nix_fallback.py +0 -0
  154. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_old_oven.py +0 -0
  155. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_pressure_cooker_v048.py +0 -0
  156. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_ranges.py +0 -0
  157. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_shakers_and_torchcompat.py +0 -0
  158. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_snapshot_roundtrip.py +0 -0
  159. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v031_chat_and_archs.py +0 -0
  160. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v047_deep_fryer_cake_pan_presets.py +0 -0
  161. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v050.py +0 -0
  162. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v051.py +0 -0
  163. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v051_1.py +0 -0
  164. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v051_3.py +0 -0
  165. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v051_4.py +0 -0
  166. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v052_5.py +0 -0
  167. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v052_6.py +0 -0
  168. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v060.py +0 -0
  169. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v061_1.py +0 -0
  170. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v061_2.py +0 -0
  171. {hypernix-0.70.2 → hypernix-0.70.4}/tests/test_v061_b1.py +0 -0
  172. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Alarms.md +0 -0
  173. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Architectures.md +0 -0
  174. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Freezer.md +0 -0
  175. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Pascal.md +0 -0
  176. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Quantization.md +0 -0
  177. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Ranges.md +0 -0
  178. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/Workshop.md +0 -0
  179. {hypernix-0.70.2 → hypernix-0.70.4}/wiki/macOS-legacy.md +0 -0
@@ -10,11 +10,21 @@ on:
10
10
  - 'docs/**'
11
11
  - '.github/workflows/deploy-docs.yml'
12
12
  workflow_dispatch:
13
+ workflow_run:
14
+ workflows: ["pages-build-deployment"]
15
+ types:
16
+ - completed
17
+ branches:
18
+ - main
19
+ schedule:
20
+ # Runs at 00:05 UTC every day for auto-updating content
21
+ - cron: '5 0 * * *'
13
22
 
14
23
  permissions:
15
24
  contents: read
16
25
  pages: write
17
26
  id-token: write
27
+ actions: read
18
28
 
19
29
  concurrency:
20
30
  group: "pages"
@@ -66,8 +66,10 @@ jobs:
66
66
  - name: Validate version format
67
67
  run: |
68
68
  v='${{ inputs.version }}'
69
- if ! [[ "$v" =~ ^[0-9]+\.[0-9]+\.[0-9]+([.-]?(rc|pre|alpha|beta|a|b)[0-9]*)?$ ]]; then
70
- echo "::error::version '$v' is not PEP 440-ish (e.g. 0.2.0, 0.2.0-rc1, 0.2.0a2)"
69
+ # PEP 440 allows: N.N.N, N.N.NaN, N.N.NbN, N.N.NrcN, N.N.N.postN, N.N.N.devN
70
+ # We map 'postr' to '.post' for PEP 440 compliance during build
71
+ if ! [[ "$v" =~ ^[0-9]+\.[0-9]+\.[0-9]+([._-]?(rc|pre|alpha|beta|a|b|post|postr|dev)[0-9]*)?$ ]]; then
72
+ echo "::error::version '$v' is not PEP 440-ish (e.g. 0.2.0, 0.2.0-rc1, 0.2.0a2, 0.2.0postr1)"
71
73
  exit 1
72
74
  fi
73
75
 
@@ -76,7 +78,8 @@ jobs:
76
78
  run: |
77
79
  v='${{ inputs.version }}'
78
80
  tag="v$v"
79
- if [[ "$v" =~ (rc|pre|alpha|beta|a|b)[0-9]*$ ]]; then
81
+ # Treat postr as a post-release (prerelease for PyPI purposes)
82
+ if [[ "$v" =~ (rc|pre|alpha|beta|a|b|postr)[0-9]*$ ]]; then
80
83
  echo "prerelease=true" >> "$GITHUB_OUTPUT"
81
84
  echo "::notice::$tag is a prerelease (-> TestPyPI)"
82
85
  else
@@ -114,17 +117,20 @@ jobs:
114
117
  - name: Bump versions in source
115
118
  run: |
116
119
  v='${{ inputs.version }}'
120
+ # Convert postr to PEP 440 compliant .post format for pyproject.toml
121
+ pep440_v=$(echo "$v" | sed 's/postr/.post/g')
117
122
  python - <<PY
118
123
  import re
119
124
  from pathlib import Path
120
125
 
121
126
  v = "${{ inputs.version }}"
127
+ pep440_v = "$pep440_v"
122
128
 
123
129
  p = Path("pyproject.toml")
124
- p.write_text(re.sub(r'^version = "[^"]+"', f'version = "{v}"', p.read_text(), count=1, flags=re.M))
130
+ p.write_text(re.sub(r'^version = "[^"]+"', f'version = "{pep440_v}"', p.read_text(), count=1, flags=re.M))
125
131
 
126
132
  s = Path("setup.cfg")
127
- s.write_text(re.sub(r'^version = .+$', f'version = {v}', s.read_text(), count=1, flags=re.M))
133
+ s.write_text(re.sub(r'^version = .+$', f'version = {pep440_v}', s.read_text(), count=1, flags=re.M))
128
134
 
129
135
  init = Path("src/hypernix/__init__.py")
130
136
  init.write_text(re.sub(r'__version__ = "[^"]+"', f'__version__ = "{v}"', init.read_text(), count=1))
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hypernix
3
- Version: 0.70.2
3
+ Version: 0.70.4
4
4
  Summary: Download and quantize the HyperNix PyTorch model to GGUF (fp32/fp16/Q8_0/Q6_K/Q4_K_M).
5
5
  Home-page: https://github.com/minerofthesoal/hypernix-pip
6
6
  Author: HyperNix contributors
7
7
  License: Apache-2.0
8
- Project-URL: Homepage, https://huggingface.co/ray0rf1re/hyper-Nix.2
8
+ Project-URL: Homepage, https://minerofthesoal.github.io/HyperNix-pip/
9
9
  Project-URL: Source, https://github.com/minerofthesoal/hypernix-pip
10
10
  Project-URL: Issues, https://github.com/minerofthesoal/hypernix-pip/issues
11
11
  Project-URL: Logo, https://raw.githubusercontent.com/minerofthesoal/hypernix-pip/main/assets/logo.png
@@ -97,10 +97,12 @@ quantize, and ship.
97
97
  | `hypernix.pepper_shaker` | 3-tier sharp perturbations: `SmallShaker` (MLM-style mask) / `Dish` (typos) / `TallHandmade` (negation). |
98
98
  | `hypernix.pressure_cooker` | Custom AdamW optimizer in 5 tiers: base `PressureCooker` + CPU (`StovetopCooker`, `ElectricCooker`) + GPU (`InductionCooker`, `ProCooker`) + `universal_cooker` selector. Grad accumulation, GradScaler integration, fused/foreach AdamW, optional CUDA-graph capture on Pro. v0.70.0 V2 rewrite adds quantization-aware training (fp16/bf16/fp64 mixed-precision, QAT hooks for Q8/Q6/Q5.5/Q4M), gradient checkpointing, adaptive clipping, EMA shadowing, distributed awareness, dynamic loss scaling, parameter freezing callbacks, LR finder, and tvtop metrics streaming. |
99
99
  | `hypernix.pressure_cooker_v3` | ZeRO-optimized V3 optimizer with FP8 support. New `QuantDtype` enum (FP8/FP16/FP32/FP64/Q8/Q6/Q5_5/Q4M) and `QuantConfig` dataclass. `PressureCookerV3` class with ZeRO-1/2 support, improved memory efficiency, and heavily tested quantization paths. `PressureCookerV3Plus` adds full QAT with calibration. |
100
- | `hypernix.abbicus` | Automatic token regulation and curriculum tuning. Dynamically modifies max sequence length and padding/truncation during training based on model size (0.5B–72B), context length, dataset complexity, and global step. Configurable curriculum steps, dynamic padding, and dataset-type awareness (math/code get 8-aligned padding). |
100
+ | `hypernix.abbicus` | Automatic token regulation and curriculum tuning. **`Abbicus`** (linear) dynamically modifies max sequence length based on model size (0.5B–72B), global step, and dataset type. **`TurboAbbicus`** (v0.70.4) grows context exponentially to a configurable `hard_cap`, then oscillates using a sine wave adjusted by CPU load (never GPU). Includes VRAM safeguard that scales back context when memory is tight. |
101
+ | `hypernix.qa` | *(v0.70.4)* **`QAProcessor`** — turns structured datasets (JSONL, `list[dict]`, plain text) into causal LM training strings. Two modes: `question_answer` (`Question: {q}\nAnswer: {a}`) and `predict_next` (concatenation). Optional `salt_shaker` / `pepper_shaker` seasoning applied *before* templating so template keywords are never corrupted. |
102
+ | `hypernix.stml` | *(v0.70.4)* **Short Term Memory Loss** — two tools. `calculate_vram_context(vram_gb, params, batch_size, precision)` estimates the max safe trained context given your hardware. `STML` context manager enforces an `untrained_max_context` hard cap and folds long sequences into `(batch × segments, segment_length)` chunks so the model trains on all the data. Integrates with Abbicus / TurboAbbicus. CLI: `hypernix stml --vram 24 --params 7`. |
101
103
  | `hypernix.compute_framework` | Hardware-agnostic multi-device training. Abstracts CUDA, MPS, CPU, TPU backends with automatic DDP/ZeRO wrapping. `ComputeFramework` handles PyTorch DDP initialization, device placement, fallback logic. Supports `local_rank`, `world_size`, `use_ddp`, `use_fsdp`, `zero_stage`. Auto-detects backend and sets up device. |
102
104
  | `hypernix.workshop` | Model frameworks and TTS/ASR pipelines. `WorkshopFramework` base class with `FrameworkConfig` for TTS, ASR, LLM, Vision models. Pre-built templates for ray0rf1re/nano-nano collection and 30+ architectures (LiquidAI LFM2.5, MiniCPM5, Gemma 4, Qwen3.5, Phi-4, DeepSeek-V2.5, GLM-Edge/MoE, GPT-OSS, Nemotron, Llama-3.2, Mistral-Nemo, Mixtral-8x22B). Includes `TTSEngine`, `ASREngine`, `ASRToTTS` (speech-to-speech), `ASRToLLMToTTS` (conversational pipeline). |
103
- | `hypernix.tvtop` | Backwards-compatibility shim — all functionality moved to `hypernix.tv`. Re-exports everything so `import hypernix.tvtop` continues to work. Console script `tvtop` still registered and points at `hypernix.tv.cli_main`. |
105
+ | `hypernix.tvtop` | Backwards-compatibility shim — all functionality moved to `hypernix.tv`. Re-exports everything so `import hypernix.tvtop` continues to work. Console script `tvtop` now launches the premium `tvtop_plus_plus` dashboard; use `tvtop-old` for the classic view. |
104
106
  | `hypernix.lunchbox` | Consistent-schema dataset packager. `Lunchbox.for_eval()` pre-loads the recommended eval-results columns; `pack(path)` / `push_to_hub(repo_id)` routes through `datasets.Dataset.from_list` so the Parquet `huggingface` metadata stays coherent with the column set (fixes the `CastError: column names don't match` path in the Hub viewer). |
105
107
  | `hypernix.whisk` | Checkpoint averaging — `swa_average` (uniform mean), `ema` (exponential), `geometric_mean`. Accepts state dicts or paths to `.pt` / `.safetensors`. `whisk_to_snapshot` writes a full HF-style snapshot in one call. |
106
108
  | `hypernix.cutting_board` | Train / val / test splitting. `CuttingBoard` (deterministic random) + `StratifiedBoard` (preserves class distribution on labelled records). Renormalises ratios; writes per-split files with `.slice_to_files()`. |
@@ -120,7 +122,19 @@ Cross-platform: Linux, macOS, Windows. Python 3.10 – 3.14.
120
122
 
121
123
  ---
122
124
 
123
- ## What's new in v0.70.0
125
+ ## What's new in v0.70.4
126
+
127
+ Seven additions in the 0.70.4 series:
128
+
129
+ - **`qa`** — `QAProcessor` formats Q&A datasets into causal LM training strings with optional salt/pepper seasoning
130
+ - **`stml`** — Short Term Memory Loss: `STML` context manager (segment folding, untrained hard cap) + `calculate_vram_context` VRAM calculator with CLI
131
+ - **`TurboAbbicus`** — exponential curriculum regulator with configurable hard cap, sine-wave oscillation (CPU-adjusted, never GPU), and VRAM safeguard
132
+ - **`tvtop++` fixes** — layout tree bug (border shifting on refresh), colors matching original tvtop (CPU=green, RAM=magenta, GPU=red), dynamic console resizing, dynamic graph/log widths
133
+ - **`hypernix stml`** CLI subcommand — VRAM context calculator from the shell
134
+ - **`hypernix train run`** new flags — `--use-abbicus`, `--use-turbo-abbicus`, `--use-stml`, `--untrained-max-context`, `--segment-length`
135
+ - **`CodeOven.train()`** new kwargs — `use_turbo_abbicus`, `use_stml`, `untrained_max_context`, `segment_length`
136
+
137
+ ### Earlier: v0.70.0
124
138
 
125
139
  Five new modules + major optimizer rewrites:
126
140
 
@@ -129,7 +143,7 @@ Five new modules + major optimizer rewrites:
129
143
  - **`pressure_cooker` V2** — Quantization-aware training with fp16/bf16/fp64 mixed-precision, QAT hooks for Q8/Q6/Q5.5/Q4M, plus 10 upgrades (gradient checkpointing, adaptive clipping, EMA shadowing, distributed awareness, dynamic loss scaling, parameter freezing callbacks, LR finder, tvtop metrics streaming)
130
144
  - **`pressure_cooker_v3`** — ZeRO-1/2 optimizations, FP8 support, `QuantDtype` enum + `QuantConfig` dataclass
131
145
  - **`workshop`** — Model frameworks for TTS/ASR/LLM/Vision with pre-built templates, nano-nano collection support, 30+ architectures (LiquidAI LFM2.5, MiniCPM5, Gemma 4, Qwen3.5, Phi-4, DeepSeek-V2.5, GLM-Edge/MoE, GPT-OSS, Nemotron, Llama-3.2, Mistral-Nemo, Mixtral-8x22B)
132
- - **`tvtop`** — Now a backwards-compatibility shim re-exporting from `hypernix.tv`
146
+ - **`tvtop`** — Now launches the premium `tvtop_plus_plus` dashboard by default; use `tvtop-old` for the classic view
133
147
 
134
148
  ## Install
135
149
 
@@ -276,6 +290,17 @@ hypernix <subcommand> [options]
276
290
  generate sample text from a local snapshot
277
291
  oven code-generation wrapper (preheat + complete / fill)
278
292
  chat interactive chat REPL against any supported model
293
+ stml VRAM trained context length calculator
294
+ ```
295
+
296
+ `train run` accepts curriculum / context management flags:
297
+
298
+ ```bash
299
+ hypernix train run --model-dir ./snap --dataset data.txt --out-dir ./out \
300
+ --use-turbo-abbicus \ # exponential curriculum (--use-abbicus for linear)
301
+ --use-stml \ # fold long sequences into batch segments
302
+ --untrained-max-context 16384 \
303
+ --segment-length 512
279
304
  ```
280
305
 
281
306
  Quant aliases accepted by `--quants` and `hypernix quantize` (v0.51.3
@@ -356,7 +381,9 @@ Topic-focused reference guides live in the `wiki/` directory:
356
381
  - [`wiki/Ranges.md`](wiki/Ranges.md) — `new_range` / `old_range` / `industrial_range` (labeling rubrics)
357
382
  - [`wiki/Freezer.md`](wiki/Freezer.md) — VRAM manager (OldFreezer / NewFreezer / FlashFreezer)
358
383
  - [`wiki/Alarms.md`](wiki/Alarms.md) — smoke alarms (Rads / Gas / Modern / Auto) + CPU / GPU preset tables
359
- - [`wiki/Kitchen.md`](wiki/Kitchen.md) — pans / microwave / table / sink / instant pot / coffee maker / pressure cooker
384
+ - [`wiki/Kitchen.md`](wiki/Kitchen.md) — pans / microwave / table / sink / instant pot / coffee maker / pressure cooker / qa
385
+ - [`wiki/Abbicus.md`](wiki/Abbicus.md) — Abbicus (linear) and TurboAbbicus (exponential + sine oscillation)
386
+ - [`wiki/STML.md`](wiki/STML.md) — Short Term Memory Loss context manager and VRAM calculator
360
387
  - [`wiki/Pascal.md`](wiki/Pascal.md) — CUDA 6.1 / GTX 1080 playbook
361
388
  - [`wiki/Architectures.md`](wiki/Architectures.md) — ARCH_PRESETS and KNOWN_MODELS
362
389
  - [`wiki/Training.md`](wiki/Training.md) — scratch training, expansion, and fine-tuning flows
@@ -43,10 +43,12 @@ quantize, and ship.
43
43
  | `hypernix.pepper_shaker` | 3-tier sharp perturbations: `SmallShaker` (MLM-style mask) / `Dish` (typos) / `TallHandmade` (negation). |
44
44
  | `hypernix.pressure_cooker` | Custom AdamW optimizer in 5 tiers: base `PressureCooker` + CPU (`StovetopCooker`, `ElectricCooker`) + GPU (`InductionCooker`, `ProCooker`) + `universal_cooker` selector. Grad accumulation, GradScaler integration, fused/foreach AdamW, optional CUDA-graph capture on Pro. v0.70.0 V2 rewrite adds quantization-aware training (fp16/bf16/fp64 mixed-precision, QAT hooks for Q8/Q6/Q5.5/Q4M), gradient checkpointing, adaptive clipping, EMA shadowing, distributed awareness, dynamic loss scaling, parameter freezing callbacks, LR finder, and tvtop metrics streaming. |
45
45
  | `hypernix.pressure_cooker_v3` | ZeRO-optimized V3 optimizer with FP8 support. New `QuantDtype` enum (FP8/FP16/FP32/FP64/Q8/Q6/Q5_5/Q4M) and `QuantConfig` dataclass. `PressureCookerV3` class with ZeRO-1/2 support, improved memory efficiency, and heavily tested quantization paths. `PressureCookerV3Plus` adds full QAT with calibration. |
46
- | `hypernix.abbicus` | Automatic token regulation and curriculum tuning. Dynamically modifies max sequence length and padding/truncation during training based on model size (0.5B–72B), context length, dataset complexity, and global step. Configurable curriculum steps, dynamic padding, and dataset-type awareness (math/code get 8-aligned padding). |
46
+ | `hypernix.abbicus` | Automatic token regulation and curriculum tuning. **`Abbicus`** (linear) dynamically modifies max sequence length based on model size (0.5B–72B), global step, and dataset type. **`TurboAbbicus`** (v0.70.4) grows context exponentially to a configurable `hard_cap`, then oscillates using a sine wave adjusted by CPU load (never GPU). Includes VRAM safeguard that scales back context when memory is tight. |
47
+ | `hypernix.qa` | *(v0.70.4)* **`QAProcessor`** — turns structured datasets (JSONL, `list[dict]`, plain text) into causal LM training strings. Two modes: `question_answer` (`Question: {q}\nAnswer: {a}`) and `predict_next` (concatenation). Optional `salt_shaker` / `pepper_shaker` seasoning applied *before* templating so template keywords are never corrupted. |
48
+ | `hypernix.stml` | *(v0.70.4)* **Short Term Memory Loss** — two tools. `calculate_vram_context(vram_gb, params, batch_size, precision)` estimates the max safe trained context given your hardware. `STML` context manager enforces an `untrained_max_context` hard cap and folds long sequences into `(batch × segments, segment_length)` chunks so the model trains on all the data. Integrates with Abbicus / TurboAbbicus. CLI: `hypernix stml --vram 24 --params 7`. |
47
49
  | `hypernix.compute_framework` | Hardware-agnostic multi-device training. Abstracts CUDA, MPS, CPU, TPU backends with automatic DDP/ZeRO wrapping. `ComputeFramework` handles PyTorch DDP initialization, device placement, fallback logic. Supports `local_rank`, `world_size`, `use_ddp`, `use_fsdp`, `zero_stage`. Auto-detects backend and sets up device. |
48
50
  | `hypernix.workshop` | Model frameworks and TTS/ASR pipelines. `WorkshopFramework` base class with `FrameworkConfig` for TTS, ASR, LLM, Vision models. Pre-built templates for ray0rf1re/nano-nano collection and 30+ architectures (LiquidAI LFM2.5, MiniCPM5, Gemma 4, Qwen3.5, Phi-4, DeepSeek-V2.5, GLM-Edge/MoE, GPT-OSS, Nemotron, Llama-3.2, Mistral-Nemo, Mixtral-8x22B). Includes `TTSEngine`, `ASREngine`, `ASRToTTS` (speech-to-speech), `ASRToLLMToTTS` (conversational pipeline). |
49
- | `hypernix.tvtop` | Backwards-compatibility shim — all functionality moved to `hypernix.tv`. Re-exports everything so `import hypernix.tvtop` continues to work. Console script `tvtop` still registered and points at `hypernix.tv.cli_main`. |
51
+ | `hypernix.tvtop` | Backwards-compatibility shim — all functionality moved to `hypernix.tv`. Re-exports everything so `import hypernix.tvtop` continues to work. Console script `tvtop` now launches the premium `tvtop_plus_plus` dashboard; use `tvtop-old` for the classic view. |
50
52
  | `hypernix.lunchbox` | Consistent-schema dataset packager. `Lunchbox.for_eval()` pre-loads the recommended eval-results columns; `pack(path)` / `push_to_hub(repo_id)` routes through `datasets.Dataset.from_list` so the Parquet `huggingface` metadata stays coherent with the column set (fixes the `CastError: column names don't match` path in the Hub viewer). |
51
53
  | `hypernix.whisk` | Checkpoint averaging — `swa_average` (uniform mean), `ema` (exponential), `geometric_mean`. Accepts state dicts or paths to `.pt` / `.safetensors`. `whisk_to_snapshot` writes a full HF-style snapshot in one call. |
52
54
  | `hypernix.cutting_board` | Train / val / test splitting. `CuttingBoard` (deterministic random) + `StratifiedBoard` (preserves class distribution on labelled records). Renormalises ratios; writes per-split files with `.slice_to_files()`. |
@@ -66,7 +68,19 @@ Cross-platform: Linux, macOS, Windows. Python 3.10 – 3.14.
66
68
 
67
69
  ---
68
70
 
69
- ## What's new in v0.70.0
71
+ ## What's new in v0.70.4
72
+
73
+ Seven additions in the 0.70.4 series:
74
+
75
+ - **`qa`** — `QAProcessor` formats Q&A datasets into causal LM training strings with optional salt/pepper seasoning
76
+ - **`stml`** — Short Term Memory Loss: `STML` context manager (segment folding, untrained hard cap) + `calculate_vram_context` VRAM calculator with CLI
77
+ - **`TurboAbbicus`** — exponential curriculum regulator with configurable hard cap, sine-wave oscillation (CPU-adjusted, never GPU), and VRAM safeguard
78
+ - **`tvtop++` fixes** — layout tree bug (border shifting on refresh), colors matching original tvtop (CPU=green, RAM=magenta, GPU=red), dynamic console resizing, dynamic graph/log widths
79
+ - **`hypernix stml`** CLI subcommand — VRAM context calculator from the shell
80
+ - **`hypernix train run`** new flags — `--use-abbicus`, `--use-turbo-abbicus`, `--use-stml`, `--untrained-max-context`, `--segment-length`
81
+ - **`CodeOven.train()`** new kwargs — `use_turbo_abbicus`, `use_stml`, `untrained_max_context`, `segment_length`
82
+
83
+ ### Earlier: v0.70.0
70
84
 
71
85
  Five new modules + major optimizer rewrites:
72
86
 
@@ -75,7 +89,7 @@ Five new modules + major optimizer rewrites:
75
89
  - **`pressure_cooker` V2** — Quantization-aware training with fp16/bf16/fp64 mixed-precision, QAT hooks for Q8/Q6/Q5.5/Q4M, plus 10 upgrades (gradient checkpointing, adaptive clipping, EMA shadowing, distributed awareness, dynamic loss scaling, parameter freezing callbacks, LR finder, tvtop metrics streaming)
76
90
  - **`pressure_cooker_v3`** — ZeRO-1/2 optimizations, FP8 support, `QuantDtype` enum + `QuantConfig` dataclass
77
91
  - **`workshop`** — Model frameworks for TTS/ASR/LLM/Vision with pre-built templates, nano-nano collection support, 30+ architectures (LiquidAI LFM2.5, MiniCPM5, Gemma 4, Qwen3.5, Phi-4, DeepSeek-V2.5, GLM-Edge/MoE, GPT-OSS, Nemotron, Llama-3.2, Mistral-Nemo, Mixtral-8x22B)
78
- - **`tvtop`** — Now a backwards-compatibility shim re-exporting from `hypernix.tv`
92
+ - **`tvtop`** — Now launches the premium `tvtop_plus_plus` dashboard by default; use `tvtop-old` for the classic view
79
93
 
80
94
  ## Install
81
95
 
@@ -222,6 +236,17 @@ hypernix <subcommand> [options]
222
236
  generate sample text from a local snapshot
223
237
  oven code-generation wrapper (preheat + complete / fill)
224
238
  chat interactive chat REPL against any supported model
239
+ stml VRAM trained context length calculator
240
+ ```
241
+
242
+ `train run` accepts curriculum / context management flags:
243
+
244
+ ```bash
245
+ hypernix train run --model-dir ./snap --dataset data.txt --out-dir ./out \
246
+ --use-turbo-abbicus \ # exponential curriculum (--use-abbicus for linear)
247
+ --use-stml \ # fold long sequences into batch segments
248
+ --untrained-max-context 16384 \
249
+ --segment-length 512
225
250
  ```
226
251
 
227
252
  Quant aliases accepted by `--quants` and `hypernix quantize` (v0.51.3
@@ -302,7 +327,9 @@ Topic-focused reference guides live in the `wiki/` directory:
302
327
  - [`wiki/Ranges.md`](wiki/Ranges.md) — `new_range` / `old_range` / `industrial_range` (labeling rubrics)
303
328
  - [`wiki/Freezer.md`](wiki/Freezer.md) — VRAM manager (OldFreezer / NewFreezer / FlashFreezer)
304
329
  - [`wiki/Alarms.md`](wiki/Alarms.md) — smoke alarms (Rads / Gas / Modern / Auto) + CPU / GPU preset tables
305
- - [`wiki/Kitchen.md`](wiki/Kitchen.md) — pans / microwave / table / sink / instant pot / coffee maker / pressure cooker
330
+ - [`wiki/Kitchen.md`](wiki/Kitchen.md) — pans / microwave / table / sink / instant pot / coffee maker / pressure cooker / qa
331
+ - [`wiki/Abbicus.md`](wiki/Abbicus.md) — Abbicus (linear) and TurboAbbicus (exponential + sine oscillation)
332
+ - [`wiki/STML.md`](wiki/STML.md) — Short Term Memory Loss context manager and VRAM calculator
306
333
  - [`wiki/Pascal.md`](wiki/Pascal.md) — CUDA 6.1 / GTX 1080 playbook
307
334
  - [`wiki/Architectures.md`](wiki/Architectures.md) — ARCH_PRESETS and KNOWN_MODELS
308
335
  - [`wiki/Training.md`](wiki/Training.md) — scratch training, expansion, and fine-tuning flows
@@ -4,13 +4,14 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "hypernix"
7
- version = "0.70.2"
7
+ version = "0.70.4"
8
8
  description = "Download and quantize the HyperNix PyTorch model to GGUF (fp32/fp16/Q8_0/Q6_K/Q4_K_M)."
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  license = { text = "Apache-2.0" }
11
- # 3.12 is the recommended interpreter, but the code is pure-Python and runs on
12
- # any CPython that has a torch 2.7.1 wheel. Keep the floor at 3.10 so modern
13
- # syntax compiles (structural pattern matching, PEP 604 unions).
11
+ # Python 3.12 is preferred and will auto-run if installed.
12
+ # If 3.12 is not found, the package supports running on 3.13 or 3.14.
13
+ # The code is pure-Python and runs on any CPython that has a compatible torch wheel.
14
+ # Keep the floor at 3.10 so modern syntax compiles (structural pattern matching, PEP 604 unions).
14
15
  requires-python = ">=3.10,<3.15"
15
16
  authors = [{ name = "HyperNix contributors" }]
16
17
  keywords = ["hypernix", "gguf", "quantization", "llama.cpp", "pytorch"]
@@ -71,16 +72,22 @@ legacy-torch = [
71
72
  ]
72
73
 
73
74
  [project.scripts]
74
- hypernix = "hypernix.cli:main"
75
- hypernix-quantize = "hypernix.cli:main"
76
- # v0.60.0: tvtop dashboard + ethanol overclock helper.
77
- tvtop = "hypernix.tv:cli_main"
75
+ hypernix = "hypernix.version_launcher:main"
76
+ hypernix-quantize = "hypernix.version_launcher:main"
77
+ hnx = "hypernix.version_launcher:main"
78
+ # v0.70.4b12: cctvtop C++ dashboard replaces tvtop++.
79
+ tvtop = "hypernix.cctvtop:cli_main"
80
+ cctvtop = "hypernix.cctvtop:cli_main"
81
+ tvtop-old = "hypernix.tvtop_plus_plus:cli_main"
82
+ tvtop-older = "hypernix.tv:cli_main"
83
+ tvtop-plus-plus = "hypernix.tvtop_plus_plus:cli_main"
84
+ tvtoppp = "hypernix.tvtop_plus_plus:cli_main"
78
85
  eth = "hypernix.ethanol:cli_main"
79
86
  # v0.61.1: high-quality TUI chat CLI with a configurator.
80
87
  hyped = "hypernix.hyped:cli_main"
81
88
 
82
89
  [project.urls]
83
- Homepage = "https://huggingface.co/ray0rf1re/hyper-Nix.2"
90
+ Homepage = "https://minerofthesoal.github.io/HyperNix-pip/"
84
91
  Source = "https://github.com/minerofthesoal/hypernix-pip"
85
92
  Issues = "https://github.com/minerofthesoal/hypernix-pip/issues"
86
93
  Logo = "https://raw.githubusercontent.com/minerofthesoal/hypernix-pip/main/assets/logo.png"
@@ -96,7 +103,7 @@ where = ["src"]
96
103
  include = ["hypernix*"]
97
104
 
98
105
  [tool.setuptools.package-data]
99
- hypernix = ["py.typed"]
106
+ hypernix = ["py.typed", "webui_static/*"]
100
107
 
101
108
  # ---------------------------------------------------------------------------
102
109
  # Ruff / pytest defaults (also duplicated in ruff.toml / pytest.ini so
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env bash
2
- # Cross-distro bootstrap for `hypernix`. Installs Python 3.12 + pip and then
2
+ # Cross-distro bootstrap for `hypernix`. Prefers Python 3.12 if installed with hypernix,
3
+ # otherwise falls back to 3.13 or 3.14 (checking each for hypernix). Installs pip and then
3
4
  # `pip install "hypernix[llama-cpp]"` into a local virtualenv at ./.venv.
4
5
  #
5
6
  # Supported: Ubuntu/Debian/Mint/Pop!_OS, Arch/Manjaro/EndeavourOS, Fedora/RHEL,
@@ -12,7 +13,33 @@
12
13
  set -euo pipefail
13
14
 
14
15
  VENV="${VENV:-./.venv}"
15
- PY=python3.12
16
+
17
+ # Function to check if hypernix is installed for a given python version
18
+ check_hypernix_installed() {
19
+ local py_cmd="$1"
20
+ "$py_cmd" -c "import hypernix" >/dev/null 2>&1
21
+ }
22
+
23
+ # Prefer Python 3.12 if available with hypernix; otherwise try 3.13, then 3.14, then generic python3
24
+ PY=""
25
+ for version in python3.12 python3.13 python3.14 python3; do
26
+ if command -v "$version" >/dev/null 2>&1; then
27
+ if check_hypernix_installed "$version"; then
28
+ PY="$version"
29
+ break
30
+ fi
31
+ fi
32
+ done
33
+
34
+ # If no version with hypernix found, just pick the first available python
35
+ if [[ -z "$PY" ]]; then
36
+ for version in python3.12 python3.13 python3.14 python3; do
37
+ if command -v "$version" >/dev/null 2>&1; then
38
+ PY="$version"
39
+ break
40
+ fi
41
+ done
42
+ fi
16
43
 
17
44
  . /etc/os-release 2>/dev/null || true
18
45
  ID="${ID:-unknown}"
@@ -40,19 +67,27 @@ install_system_packages() {
40
67
  *ubuntu*|*debian*|*mint*|*pop*|*elementary*)
41
68
  require_sudo
42
69
  $SUDO apt-get update
70
+ # Try to install Python 3.12 first (preferred), but allow fallback to system default
43
71
  if ! apt-cache show python3.12 >/dev/null 2>&1; then
44
72
  $SUDO apt-get install -y software-properties-common
45
73
  $SUDO add-apt-repository -y ppa:deadsnakes/ppa || true
46
74
  $SUDO apt-get update
47
75
  fi
48
- $SUDO apt-get install -y python3.12 python3.12-venv python3-pip
76
+ # Install 3.12 if available, otherwise use system python3
77
+ if apt-cache show python3.12 >/dev/null 2>&1; then
78
+ $SUDO apt-get install -y python3.12 python3.12-venv python3-pip
79
+ else
80
+ $SUDO apt-get install -y python3 python3-venv python3-pip
81
+ fi
49
82
  ;;
50
83
  *fedora*|*rhel*|*almalinux*|*rocky*|*centos*)
51
84
  require_sudo
85
+ # Try 3.12 first, fall back to system python3
52
86
  $SUDO dnf install -y python3.12 python3.12-pip || $SUDO dnf install -y python3 python3-pip
53
87
  ;;
54
88
  *opensuse*|*suse*|*sles*)
55
89
  require_sudo
90
+ # Try 3.12 first, fall back to system python3
56
91
  $SUDO zypper install -y python312 python312-pip || $SUDO zypper install -y python3 python3-pip
57
92
  ;;
58
93
  *alpine*)
@@ -65,7 +100,7 @@ install_system_packages() {
65
100
  echo " nix-shell -p python312 gcc -- --run 'bash scripts/install_deps.sh'" >&2
66
101
  ;;
67
102
  *)
68
- echo "Unrecognized distro ($ID). Ensure 'python3.12' + 'pip' are on PATH, then rerun." >&2
103
+ echo "Unrecognized distro ($ID). Ensure 'python3.12', 'python3.13', 'python3.14', or 'python3' is on PATH, then rerun." >&2
69
104
  ;;
70
105
  esac
71
106
  }
@@ -73,9 +108,28 @@ install_system_packages() {
73
108
  main() {
74
109
  install_system_packages
75
110
 
76
- if ! command -v "$PY" >/dev/null 2>&1; then
77
- # Fall back to a generic python3 binary if 3.12 isn't available.
78
- PY=$(command -v python3 || true)
111
+ # Re-detect Python after system package installation
112
+ if [[ -z "$PY" ]] || ! command -v "$PY" >/dev/null 2>&1; then
113
+ # Fall back to a generic python3 binary if preferred version isn't available.
114
+ PY=""
115
+ # First try to find a version with hypernix already installed
116
+ for version in python3.12 python3.13 python3.14 python3; do
117
+ if command -v "$version" >/dev/null 2>&1; then
118
+ if check_hypernix_installed "$version"; then
119
+ PY="$version"
120
+ break
121
+ fi
122
+ fi
123
+ done
124
+ # If no version with hypernix found, just pick the first available python
125
+ if [[ -z "$PY" ]]; then
126
+ for version in python3.12 python3.13 python3.14 python3; do
127
+ if command -v "$version" >/dev/null 2>&1; then
128
+ PY="$version"
129
+ break
130
+ fi
131
+ done
132
+ fi
79
133
  [[ -n "$PY" ]] || { echo "no python3 on PATH" >&2; exit 1; }
80
134
  fi
81
135
 
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = hypernix
3
- version = 0.70.2
3
+ version = 0.70.4
4
4
  description = Download and quantize the HyperNix PyTorch model to GGUF (fp32/fp16/Q8_0/Q6_K/Q4_K_M).
5
5
  long_description = file: README.md
6
6
  long_description_content_type = text/markdown
@@ -65,6 +65,9 @@ legacy-torch =
65
65
  console_scripts =
66
66
  hypernix = hypernix.cli:main
67
67
  hypernix-quantize = hypernix.cli:main
68
+ hnx = hypernix.cli:main
69
+ tvtop++ = hypernix.tvtop_plus_plus:cli_main
70
+ tvtoppp = hypernix.tvtop_plus_plus:cli_main
68
71
 
69
72
  [egg_info]
70
73
  tag_build =
@@ -0,0 +1,30 @@
1
+ """Legacy setup.py shim.
2
+
3
+ All real configuration lives in ``pyproject.toml`` (PEP 621). This file
4
+ exists so ``python setup.py <cmd>`` and ``pip install .`` work with
5
+ older tooling and with integrators that still look for ``setup.py``
6
+ in the project root.
7
+ """
8
+ import os
9
+ from setuptools import setup, Extension
10
+
11
+ # By default, do not build the C++ extension during standard wheel builds
12
+ # to ensure we produce a universal py3-none-any.whl for PyPI.
13
+ # Users installing from source or those who explicitly set BUILD_CCTVTOP=1
14
+ # will get the compiled C++ cctvtop dashboard.
15
+ build_cctvtop = os.environ.get("BUILD_CCTVTOP", "0") == "1"
16
+
17
+ ext_modules = []
18
+ if build_cctvtop:
19
+ cctvtop_ext = Extension(
20
+ "hypernix.cctvtop_ext",
21
+ sources=["src/hypernix/cctvtop.cpp"],
22
+ language="c++",
23
+ extra_compile_args=["-std=c++17", "-O3"],
24
+ )
25
+ ext_modules.append(cctvtop_ext)
26
+
27
+ if __name__ == "__main__":
28
+ setup(
29
+ ext_modules=ext_modules,
30
+ )