nexaai 1.0.21rc1__cp310-cp310-win_amd64.whl → 1.0.21rc3__cp310-cp310-win_amd64.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.

Potentially problematic release.


This version of nexaai might be problematic. Click here for more details.

Binary file
nexaai/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # This file is generated by CMake from _version.py.in
2
2
  # Do not modify this file manually - it will be overwritten
3
3
 
4
- __version__ = "1.0.21-rc1"
4
+ __version__ = "1.0.21-rc3"
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -157,12 +157,16 @@ def create_gguf_manifest(repo_id: str, files: List[str], directory_path: str, ol
157
157
  # Use the new enum-based quantization extraction
158
158
  quantization_type = extract_quantization_from_filename(current_file_name)
159
159
  quant_level = quantization_type.value if quantization_type else "UNKNOWN"
160
-
161
- model_files[quant_level] = {
162
- "Name": current_file_name,
163
- "Downloaded": True,
164
- "Size": file_size
165
- }
160
+
161
+ # FIXME: hardcode to handle the multiple mmproj files problem
162
+ if quant_level == "UNKNOWN" and "mmproj" in current_file_name.lower():
163
+ pass
164
+ else:
165
+ model_files[quant_level] = {
166
+ "Name": current_file_name,
167
+ "Downloaded": True,
168
+ "Size": file_size
169
+ }
166
170
 
167
171
  # Determine PluginId with priority: kwargs > downloaded_manifest > model_file_type > default
168
172
  plugin_id = kwargs.get('plugin_id')
@@ -410,6 +410,20 @@ def _remove_specific_file(target_model: DownloadedModel, file_name: str, local_d
410
410
  except OSError:
411
411
  file_size = 0
412
412
 
413
+ # Check if we should remove entire folder instead (for .gguf files)
414
+ # If removing a .gguf file and no other non-mmproj .gguf files remain, remove entire folder
415
+ if file_name.endswith('.gguf'):
416
+ updated_files = [f for f in target_model.files if f != file_name]
417
+ # Find remaining .gguf files that don't contain "mmproj" in filename
418
+ remaining_non_mmproj_gguf = [
419
+ f for f in updated_files
420
+ if f.endswith('.gguf') and 'mmproj' not in f.lower()
421
+ ]
422
+
423
+ # If no non-mmproj .gguf files remain, remove entire repository
424
+ if len(remaining_non_mmproj_gguf) == 0:
425
+ return _remove_entire_repository(target_model, local_dir)
426
+
413
427
  # Remove the file
414
428
  try:
415
429
  os.remove(file_path)
@@ -846,6 +860,41 @@ class HuggingFaceDownloader:
846
860
  pass
847
861
  return {}
848
862
 
863
+ def _download_manifest_if_needed(self, repo_id: str, local_dir: str) -> bool:
864
+ """
865
+ Download nexa.manifest from the repository if it doesn't exist locally.
866
+
867
+ Args:
868
+ repo_id: Repository ID
869
+ local_dir: Local directory where the manifest should be saved
870
+
871
+ Returns:
872
+ bool: True if manifest was downloaded or already exists, False if not found in repo
873
+ """
874
+ manifest_path = os.path.join(local_dir, 'nexa.manifest')
875
+
876
+ # Check if manifest already exists locally
877
+ if os.path.exists(manifest_path):
878
+ return True
879
+
880
+ # Try to download nexa.manifest from the repository
881
+ try:
882
+ print(f"[INFO] Attempting to download nexa.manifest from {repo_id}...")
883
+ self.api.hf_hub_download(
884
+ repo_id=repo_id,
885
+ filename='nexa.manifest',
886
+ local_dir=local_dir,
887
+ local_dir_use_symlinks=False,
888
+ token=self.token,
889
+ force_download=False
890
+ )
891
+ print(f"[OK] Successfully downloaded nexa.manifest from {repo_id}")
892
+ return True
893
+ except Exception as e:
894
+ # Manifest doesn't exist in repo or other error - this is fine, we'll create it
895
+ print(f"[INFO] nexa.manifest not found in {repo_id}, will create locally")
896
+ return False
897
+
849
898
  def _fetch_and_save_metadata(self, repo_id: str, local_dir: str, is_mmproj: bool = False, file_name: Optional[Union[str, List[str]]] = None, **kwargs) -> None:
850
899
  """Fetch model info and save metadata after successful download."""
851
900
  # Initialize metadata with defaults to ensure manifest is always created
@@ -946,6 +995,9 @@ class HuggingFaceDownloader:
946
995
  if progress_tracker:
947
996
  progress_tracker.stop_tracking()
948
997
 
998
+ # Download nexa.manifest from repo if it doesn't exist locally
999
+ self._download_manifest_if_needed(repo_id, file_local_dir)
1000
+
949
1001
  # Save metadata after successful download
950
1002
  self._fetch_and_save_metadata(repo_id, file_local_dir, self._current_is_mmproj, self._current_file_name, **kwargs)
951
1003
 
@@ -1055,6 +1107,9 @@ class HuggingFaceDownloader:
1055
1107
  if progress_tracker:
1056
1108
  progress_tracker.stop_tracking()
1057
1109
 
1110
+ # Download nexa.manifest from repo if it doesn't exist locally
1111
+ self._download_manifest_if_needed(repo_id, repo_local_dir)
1112
+
1058
1113
  # Save metadata after successful download
1059
1114
  self._fetch_and_save_metadata(repo_id, repo_local_dir, self._current_is_mmproj, self._current_file_name, **kwargs)
1060
1115
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nexaai
3
- Version: 1.0.21rc1
3
+ Version: 1.0.21rc3
4
4
  Summary: Python bindings for NexaSDK C-lib backend
5
5
  Author-email: "Nexa AI, Inc." <dev@nexa.ai>
6
6
  Project-URL: Homepage, https://github.com/NexaAI/nexasdk-bridge
@@ -1,6 +1,6 @@
1
1
  nexaai/__init__.py,sha256=Yt2YPVcRfwdA6DQoUR4ZI34CHBUYoY2cVsrG7Zp6IrI,2516
2
- nexaai/_stub.cp310-win_amd64.pyd,sha256=wlEBCN5E8QuK2OoupinLzjTYqPdSdtTOrOmgkwrd9T0,10752
3
- nexaai/_version.py,sha256=RJD43EAWJ7pU1bQt-f7S--4-GPeOQxjr-rdudgziXbA,147
2
+ nexaai/_stub.cp310-win_amd64.pyd,sha256=17Ug1V96AYySSLWVN2aESUO1mKECcAN-ZdRxTGhgWdM,10752
3
+ nexaai/_version.py,sha256=P7Jr6N-4fY04wY3Ufbae05QxaDpgv6HE39FZuMDvJR0,147
4
4
  nexaai/asr.py,sha256=_fsGaxpiU137bUtO5ujtFSYCI1RLsyeEm3Gf4GhHVRk,2118
5
5
  nexaai/base.py,sha256=qQBCiQVNzgpkQjZX9aiFDEdbAAe56TROKC3WnWra2Zg,1021
6
6
  nexaai/common.py,sha256=muQqFY-WllwL5IO83tImexbuUcoEQsKg73u4gWL2lNs,3548
@@ -18,31 +18,31 @@ nexaai/asr_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  nexaai/asr_impl/mlx_asr_impl.py,sha256=XwMX3LYMeulp8cDS0TCCYcjvttFHAyDWQ_oMvABwQmI,3349
19
19
  nexaai/asr_impl/pybind_asr_impl.py,sha256=20o5SOPzhF9x41ra8L_qIM7YxCkYeLb5csSrNde-dds,1560
20
20
  nexaai/binds/__init__.py,sha256=ENl-uoIF9-3XGIXitVgZ2QmJ6p7Yet4h1-X7nUDZ0Hk,108
21
- nexaai/binds/common_bind.cp310-win_amd64.pyd,sha256=A7AuP8TpdE1O0jSRYSX0PmV0s8zXmrr_KcTXY93oa1I,205824
22
- nexaai/binds/embedder_bind.cp310-win_amd64.pyd,sha256=bpk2lKSKLZPCNn97GdS72UIR7x5V0aWS_Ft6jxU5cWY,182784
21
+ nexaai/binds/common_bind.cp310-win_amd64.pyd,sha256=fygiHgsuJwMEiOQw-LkMzCF729DEB4tv5R3m_gZf06o,205824
22
+ nexaai/binds/embedder_bind.cp310-win_amd64.pyd,sha256=4R2dt82ntPBJ3-qH3elE16F1a9AKyJLtUVWqTLrv7u0,182784
23
23
  nexaai/binds/libcrypto-3-x64.dll,sha256=X7hDuQPMn6eRe58dTGJxTmRPKFWgd5i6Gjoy9QPLmPg,7315968
24
24
  nexaai/binds/libssl-3-x64.dll,sha256=GRw0cOaGUaR2QHRvBFuU_9S9iNgkyVgm0NIpZMnReAw,1313792
25
- nexaai/binds/llm_bind.cp310-win_amd64.pyd,sha256=7isvwd_kZYtGAmc9O6u67KPr0RQbTpreASOcTjcVqo8,162816
26
- nexaai/binds/nexa_bridge.dll,sha256=YrnvRvUw4aDoPSEYrOEUMia-FKbGTz88C-CN_jQNwWg,187904
27
- nexaai/binds/vlm_bind.cp310-win_amd64.pyd,sha256=WcCrXej3pFt7JDr0VbeW_c8_Y5dPAt8n4THD2qf6JSo,170496
28
- nexaai/binds/cpu_gpu/ggml-base.dll,sha256=h8m2MYmzg2syDaGLGvfogWbi88ZlA7e_ZnL79hDFwgE,532480
29
- nexaai/binds/cpu_gpu/ggml-cpu.dll,sha256=fMHSkx2QYWUNC63l0tgO6F94Bb4kcQE3sH70ptnH9DQ,672768
30
- nexaai/binds/cpu_gpu/ggml-cuda.dll,sha256=q4-dtifsuifcuRZn4St-5gJpiEA1hKE2ld1VEqkkqUk,313528832
31
- nexaai/binds/cpu_gpu/ggml-vulkan.dll,sha256=_z41BQzz1Ud1w5UEoMiJmEGNE-ybxJKYKN1ssagdKGg,36627968
32
- nexaai/binds/cpu_gpu/ggml.dll,sha256=_3ejjzy1owBjJAS8dGMmQBWBLAkhs1BRyo0qfT-jGkg,66560
33
- nexaai/binds/cpu_gpu/mtmd.dll,sha256=XQKiNXM34-Cj27vrLTuH5I3KBdCN1gAgp6eTz7eYF-g,561152
34
- nexaai/binds/cpu_gpu/nexa_cpu_gpu.dll,sha256=Gf9C8LiOUuM9QYNKd1jgCcgsfyT0ymFJ4ebHPib8Q24,1611776
35
- nexaai/binds/cpu_gpu/nexa_plugin.dll,sha256=pBNvjvjomppglDJIQ3rnzzr2gJT3b-TqdEBe2sr3Az8,1411072
36
- nexaai/binds/nexaml/ggml-base.dll,sha256=h8m2MYmzg2syDaGLGvfogWbi88ZlA7e_ZnL79hDFwgE,532480
37
- nexaai/binds/nexaml/ggml-cpu.dll,sha256=fMHSkx2QYWUNC63l0tgO6F94Bb4kcQE3sH70ptnH9DQ,672768
38
- nexaai/binds/nexaml/ggml-cuda.dll,sha256=q4-dtifsuifcuRZn4St-5gJpiEA1hKE2ld1VEqkkqUk,313528832
39
- nexaai/binds/nexaml/ggml-vulkan.dll,sha256=_z41BQzz1Ud1w5UEoMiJmEGNE-ybxJKYKN1ssagdKGg,36627968
40
- nexaai/binds/nexaml/ggml.dll,sha256=_3ejjzy1owBjJAS8dGMmQBWBLAkhs1BRyo0qfT-jGkg,66560
25
+ nexaai/binds/llm_bind.cp310-win_amd64.pyd,sha256=yEKKsQOL9Ir6USEWRYE3bND4NigUy47ibgqBkydrci4,162816
26
+ nexaai/binds/nexa_bridge.dll,sha256=fvhXysKJe6B9FhKNJBDdLiixqb9l9bWOr6uaFxdFesM,187904
27
+ nexaai/binds/vlm_bind.cp310-win_amd64.pyd,sha256=St0CA1EQh-54ohSr7Iwlumse2bWpyAECW4PowSEhd1Y,170496
28
+ nexaai/binds/cpu_gpu/ggml-base.dll,sha256=2ASuiyhairXuAH4wTBmturTz5ztAxIA5WwuBogCx7J0,532480
29
+ nexaai/binds/cpu_gpu/ggml-cpu.dll,sha256=XTlOGWqsXZ9gWIL1l6OlgBCNyfIrT59tppWgBEXmJNs,672768
30
+ nexaai/binds/cpu_gpu/ggml-cuda.dll,sha256=6cjEG279uQii3TnUAdK3ysTekVQUWKsCQtd3C7Mpk1U,313528832
31
+ nexaai/binds/cpu_gpu/ggml-vulkan.dll,sha256=JsljC4lEQ3av_2lLU1EmdgCldBrbOoKbslwgVKTWJyc,36627968
32
+ nexaai/binds/cpu_gpu/ggml.dll,sha256=ZHSSFkeuezJ_xU0dV2wkb-1EUeWOCXiOxXQI5er-T9s,66560
33
+ nexaai/binds/cpu_gpu/mtmd.dll,sha256=yarVoHFMwt1ww8qdpbJnYOYohgWzySw29wLHl0UB1tw,561152
34
+ nexaai/binds/cpu_gpu/nexa_cpu_gpu.dll,sha256=PU_hLy4xzSnym4yAcH8JUzFyx1WpIEyFE8v-TVcK1_I,1611776
35
+ nexaai/binds/cpu_gpu/nexa_plugin.dll,sha256=_yUHj0d5cHCY-te5TMNPagapFME_Q8zsJun1Tw4iCuY,1423872
36
+ nexaai/binds/nexaml/ggml-base.dll,sha256=2ASuiyhairXuAH4wTBmturTz5ztAxIA5WwuBogCx7J0,532480
37
+ nexaai/binds/nexaml/ggml-cpu.dll,sha256=XTlOGWqsXZ9gWIL1l6OlgBCNyfIrT59tppWgBEXmJNs,672768
38
+ nexaai/binds/nexaml/ggml-cuda.dll,sha256=6cjEG279uQii3TnUAdK3ysTekVQUWKsCQtd3C7Mpk1U,313528832
39
+ nexaai/binds/nexaml/ggml-vulkan.dll,sha256=JsljC4lEQ3av_2lLU1EmdgCldBrbOoKbslwgVKTWJyc,36627968
40
+ nexaai/binds/nexaml/ggml.dll,sha256=ZHSSFkeuezJ_xU0dV2wkb-1EUeWOCXiOxXQI5er-T9s,66560
41
41
  nexaai/binds/nexaml/nexa-mm-process.dll,sha256=DDD5qPbelZAIrRWGggOd3Pg9U_fh_ZEYIplwqiyD5LY,4643328
42
42
  nexaai/binds/nexaml/nexa-sampling.dll,sha256=Notkz287laSUG2_ED3oFXWVLJM3t7x_USkvX6wKVOLA,4265984
43
- nexaai/binds/nexaml/nexa_plugin.dll,sha256=8XyOTP11koqdTaKUEgxFm2Fwl9v_O4GDgg040yw5F5g,601600
43
+ nexaai/binds/nexaml/nexa_plugin.dll,sha256=qJlrOFiqQFBbqjZFuDSjgshZeNjkod3dQ5EYz3V_M3E,603648
44
44
  nexaai/binds/nexaml/nexaproc.dll,sha256=rRcdSfhkxnRwktXW4lp7Np8sNY_uefNXYwAmPp34AHg,2670080
45
- nexaai/binds/nexaml/qwen3-vl.dll,sha256=KxwQ0PHvzM1zwLpH7vlNOlfaVzgEUHTfTV76e61KeyA,5873664
45
+ nexaai/binds/nexaml/qwen3-vl.dll,sha256=k0wPZNR6VejeR32KuFgCVyj7t7YaEmZOKhj9lwMw0-s,5874176
46
46
  nexaai/binds/nexaml/qwen3vl-vision.dll,sha256=5AX4MtAOWTcXSAkS2qqvl2pFti4HR55dtkCaOO03Evc,1063424
47
47
  nexaai/cv_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  nexaai/cv_impl/mlx_cv_impl.py,sha256=QLd_8w90gtxH8kmssaDYatCTRvQNIJuUGKZNnYrmx6E,3317
@@ -63,15 +63,15 @@ nexaai/tts_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
63
  nexaai/tts_impl/mlx_tts_impl.py,sha256=LcH9bVdIl3Q6lOzSUB_X2s-_nWFmlCl1yL7XSUK0fYI,3195
64
64
  nexaai/tts_impl/pybind_tts_impl.py,sha256=n3z4zmPQayQJgAwcvETw0IBUCp8IYROuYFSg0tAy_8Y,1487
65
65
  nexaai/utils/decode.py,sha256=0Z9jDH4ICzw4YXj8nD4L-sMouDaev-TISGRQ4KzidWE,421
66
- nexaai/utils/manifest_utils.py,sha256=E07t_bNq-EDrqVYZW7uyX8zsKsFklvqqwSvic0in0tQ,21800
67
- nexaai/utils/model_manager.py,sha256=qzlGP4sZLYsO72vg-EUCVA0RUknVKtLYMmDDfPmG45g,60999
66
+ nexaai/utils/manifest_utils.py,sha256=BoKqnI6N5CkEPTDZCRWSx7wga6aH8h6cr4nbff7gVwg,22020
67
+ nexaai/utils/model_manager.py,sha256=yxLaxOOhfMZ9i_2UnQ0qQSFLE-Rx9x9f_bGG5ut-nrk,63508
68
68
  nexaai/utils/model_types.py,sha256=q2m7diYLOpLvRl1ixL2eMq5_kdTj8KqPBGWX4p6Ob08,1532
69
69
  nexaai/utils/progress_tracker.py,sha256=BztrFqtjwNUmeREwZ5m7H6ZcrVzQEbpZfsxndWh4z0A,15778
70
70
  nexaai/utils/quantization_utils.py,sha256=FxnZ6-uAE_bl_vQ5jsRXlpU0NBn-U4Y8iN9_O6aCdPA,8070
71
71
  nexaai/vlm_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  nexaai/vlm_impl/mlx_vlm_impl.py,sha256=gI09QJcok68QG-36csXr3c2yPCZXTE0dlq1MUBEo_Ms,11091
73
73
  nexaai/vlm_impl/pybind_vlm_impl.py,sha256=4qPt5C5m4y4kWD9EFfVbcAkMq2Dgd5EP9tYo6yZIxgo,10162
74
- nexaai-1.0.21rc1.dist-info/METADATA,sha256=ZWD3yi3ygRwzzLE5gkFx3V1hXnejEJH9Fm5zkX6Yo4I,1241
75
- nexaai-1.0.21rc1.dist-info/WHEEL,sha256=KUuBC6lxAbHCKilKua8R9W_TM71_-9Sg5uEP3uDWcoU,101
76
- nexaai-1.0.21rc1.dist-info/top_level.txt,sha256=LRE2YERlrZk2vfuygnSzsEeqSknnZbz3Z1MHyNmBU4w,7
77
- nexaai-1.0.21rc1.dist-info/RECORD,,
74
+ nexaai-1.0.21rc3.dist-info/METADATA,sha256=AxNuyxzdUmAFJvQJQH6QIi6qRlvXxV-DMecmJxW4txI,1241
75
+ nexaai-1.0.21rc3.dist-info/WHEEL,sha256=KUuBC6lxAbHCKilKua8R9W_TM71_-9Sg5uEP3uDWcoU,101
76
+ nexaai-1.0.21rc3.dist-info/top_level.txt,sha256=LRE2YERlrZk2vfuygnSzsEeqSknnZbz3Z1MHyNmBU4w,7
77
+ nexaai-1.0.21rc3.dist-info/RECORD,,