abstractcore 2.6.5__tar.gz → 2.6.7__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 (137) hide show
  1. {abstractcore-2.6.5 → abstractcore-2.6.7}/PKG-INFO +12 -1
  2. {abstractcore-2.6.5 → abstractcore-2.6.7}/README.md +3 -0
  3. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/utils/image_scaler.py +1 -8
  4. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/version.py +1 -1
  5. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/vlm_token_calculator.py +2 -1
  6. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore.egg-info/PKG-INFO +12 -1
  7. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore.egg-info/requires.txt +11 -0
  8. {abstractcore-2.6.5 → abstractcore-2.6.7}/pyproject.toml +14 -0
  9. {abstractcore-2.6.5 → abstractcore-2.6.7}/LICENSE +0 -0
  10. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/__init__.py +0 -0
  11. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/__init__.py +0 -0
  12. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/__main__.py +0 -0
  13. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/app_config_utils.py +0 -0
  14. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/deepsearch.py +0 -0
  15. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/extractor.py +0 -0
  16. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/intent.py +0 -0
  17. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/judge.py +0 -0
  18. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/apps/summarizer.py +0 -0
  19. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/architectures/__init__.py +0 -0
  20. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/architectures/detection.py +0 -0
  21. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/architectures/enums.py +0 -0
  22. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/assets/architecture_formats.json +0 -0
  23. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/assets/model_capabilities.json +0 -0
  24. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/assets/session_schema.json +0 -0
  25. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/__init__.py +0 -0
  26. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/analytics.py +0 -0
  27. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/cache.py +0 -0
  28. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/config.py +0 -0
  29. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/exceptions.py +0 -0
  30. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/glyph_processor.py +0 -0
  31. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/optimizer.py +0 -0
  32. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/orchestrator.py +0 -0
  33. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/pil_text_renderer.py +0 -0
  34. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/quality.py +0 -0
  35. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/text_formatter.py +0 -0
  36. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/compression/vision_compressor.py +0 -0
  37. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/config/__init__.py +0 -0
  38. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/config/main.py +0 -0
  39. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/config/manager.py +0 -0
  40. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/config/vision_config.py +0 -0
  41. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/core/__init__.py +0 -0
  42. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/core/enums.py +0 -0
  43. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/core/factory.py +0 -0
  44. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/core/interface.py +0 -0
  45. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/core/retry.py +0 -0
  46. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/core/session.py +0 -0
  47. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/core/types.py +0 -0
  48. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/download.py +0 -0
  49. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/embeddings/__init__.py +0 -0
  50. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/embeddings/manager.py +0 -0
  51. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/embeddings/models.py +0 -0
  52. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/events/__init__.py +0 -0
  53. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/exceptions/__init__.py +0 -0
  54. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/__init__.py +0 -0
  55. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/auto_handler.py +0 -0
  56. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/base.py +0 -0
  57. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/capabilities.py +0 -0
  58. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/handlers/__init__.py +0 -0
  59. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/handlers/anthropic_handler.py +0 -0
  60. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/handlers/local_handler.py +0 -0
  61. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/handlers/openai_handler.py +0 -0
  62. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/processors/__init__.py +0 -0
  63. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/processors/direct_pdf_processor.py +0 -0
  64. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/processors/glyph_pdf_processor.py +0 -0
  65. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/processors/image_processor.py +0 -0
  66. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/processors/office_processor.py +0 -0
  67. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/processors/pdf_processor.py +0 -0
  68. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/processors/text_processor.py +0 -0
  69. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/types.py +0 -0
  70. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/utils/__init__.py +0 -0
  71. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/media/vision_fallback.py +0 -0
  72. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/processing/__init__.py +0 -0
  73. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/processing/basic_deepsearch.py +0 -0
  74. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/processing/basic_extractor.py +0 -0
  75. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/processing/basic_intent.py +0 -0
  76. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/processing/basic_judge.py +0 -0
  77. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/processing/basic_summarizer.py +0 -0
  78. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/__init__.py +0 -0
  79. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/anthropic_provider.py +0 -0
  80. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/base.py +0 -0
  81. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/huggingface_provider.py +0 -0
  82. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/lmstudio_provider.py +0 -0
  83. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/mlx_provider.py +0 -0
  84. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/model_capabilities.py +0 -0
  85. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/ollama_provider.py +0 -0
  86. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/openai_compatible_provider.py +0 -0
  87. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/openai_provider.py +0 -0
  88. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/registry.py +0 -0
  89. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/streaming.py +0 -0
  90. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/providers/vllm_provider.py +0 -0
  91. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/server/__init__.py +0 -0
  92. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/server/app.py +0 -0
  93. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/structured/__init__.py +0 -0
  94. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/structured/handler.py +0 -0
  95. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/structured/retry.py +0 -0
  96. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/__init__.py +0 -0
  97. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/common_tools.py +0 -0
  98. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/core.py +0 -0
  99. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/handler.py +0 -0
  100. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/parser.py +0 -0
  101. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/registry.py +0 -0
  102. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/syntax_rewriter.py +0 -0
  103. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/tools/tag_rewriter.py +0 -0
  104. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/__init__.py +0 -0
  105. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/cli.py +0 -0
  106. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/message_preprocessor.py +0 -0
  107. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/self_fixes.py +0 -0
  108. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/structured_logging.py +0 -0
  109. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/token_utils.py +0 -0
  110. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore/utils/trace_export.py +0 -0
  111. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore.egg-info/SOURCES.txt +0 -0
  112. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore.egg-info/dependency_links.txt +0 -0
  113. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore.egg-info/entry_points.txt +0 -0
  114. {abstractcore-2.6.5 → abstractcore-2.6.7}/abstractcore.egg-info/top_level.txt +0 -0
  115. {abstractcore-2.6.5 → abstractcore-2.6.7}/setup.cfg +0 -0
  116. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_agentic_cli_compatibility.py +0 -0
  117. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_basic_session.py +0 -0
  118. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_complete_integration.py +0 -0
  119. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_comprehensive_events.py +0 -0
  120. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_core_components.py +0 -0
  121. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_enhanced_prompt.py +0 -0
  122. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_environment_variable_tool_call_tags.py +0 -0
  123. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_factory.py +0 -0
  124. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_final_accuracy.py +0 -0
  125. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_final_comprehensive.py +0 -0
  126. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_final_graceful_errors.py +0 -0
  127. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_graceful_fallback.py +0 -0
  128. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_import_debug.py +0 -0
  129. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_integrated_functionality.py +0 -0
  130. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_retry_observability.py +0 -0
  131. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_retry_strategy.py +0 -0
  132. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_seed_determinism.py +0 -0
  133. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_seed_temperature_basic.py +0 -0
  134. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_sensory_prompting.py +0 -0
  135. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_text_only_model_experience.py +0 -0
  136. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_unload_memory.py +0 -0
  137. {abstractcore-2.6.5 → abstractcore-2.6.7}/tests/test_user_scenario_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractcore
3
- Version: 2.6.5
3
+ Version: 2.6.7
4
4
  Summary: Unified interface to all LLM providers with essential infrastructure for tool calling, streaming, and model management
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
6
6
  Maintainer-email: Laurent-Philippe Albou <contact@abstractcore.ai>
@@ -30,6 +30,7 @@ Requires-Dist: pydantic<3.0.0,>=2.0.0
30
30
  Requires-Dist: httpx<1.0.0,>=0.24.0
31
31
  Requires-Dist: tiktoken<1.0.0,>=0.5.0
32
32
  Requires-Dist: requests<3.0.0,>=2.25.0
33
+ Requires-Dist: Pillow<12.0.0,>=10.0.0
33
34
  Provides-Extra: openai
34
35
  Requires-Dist: openai<2.0.0,>=1.0.0; extra == "openai"
35
36
  Provides-Extra: anthropic
@@ -64,6 +65,7 @@ Requires-Dist: pymupdf4llm<1.0.0,>=0.0.20; extra == "media"
64
65
  Requires-Dist: unstructured[office]<1.0.0,>=0.10.0; extra == "media"
65
66
  Requires-Dist: pandas<3.0.0,>=1.0.0; extra == "media"
66
67
  Provides-Extra: compression
68
+ Requires-Dist: abstractcore[media]; extra == "compression"
67
69
  Requires-Dist: pdf2image<2.0.0,>=1.16.0; extra == "compression"
68
70
  Provides-Extra: api-providers
69
71
  Requires-Dist: abstractcore[anthropic,openai]; extra == "api-providers"
@@ -83,12 +85,18 @@ Provides-Extra: all-providers-apple
83
85
  Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai]; extra == "all-providers-apple"
84
86
  Provides-Extra: all-providers-gpu
85
87
  Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai,vllm]; extra == "all-providers-gpu"
88
+ Provides-Extra: all-providers-non-mlx
89
+ Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai]; extra == "all-providers-non-mlx"
90
+ Provides-Extra: local-providers-non-mlx
91
+ Requires-Dist: abstractcore[lmstudio,ollama]; extra == "local-providers-non-mlx"
86
92
  Provides-Extra: all
87
93
  Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools,vllm]; extra == "all"
88
94
  Provides-Extra: all-apple
89
95
  Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools]; extra == "all-apple"
90
96
  Provides-Extra: all-gpu
91
97
  Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools,vllm]; extra == "all-gpu"
98
+ Provides-Extra: all-non-mlx
99
+ Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools]; extra == "all-non-mlx"
92
100
  Provides-Extra: lightweight
93
101
  Requires-Dist: abstractcore[anthropic,compression,embeddings,lmstudio,media,ollama,openai,processing,server,tools]; extra == "lightweight"
94
102
  Provides-Extra: dev
@@ -1046,6 +1054,9 @@ pip install abstractcore[server]
1046
1054
  # With embeddings
1047
1055
  pip install abstractcore[embeddings]
1048
1056
 
1057
+ # With compression (Glyph visual-text compression)
1058
+ pip install abstractcore[compression]
1059
+
1049
1060
  # Everything (recommended for Apple Silicon)
1050
1061
  pip install abstractcore[all]
1051
1062
 
@@ -924,6 +924,9 @@ pip install abstractcore[server]
924
924
  # With embeddings
925
925
  pip install abstractcore[embeddings]
926
926
 
927
+ # With compression (Glyph visual-text compression)
928
+ pip install abstractcore[compression]
929
+
927
930
  # Everything (recommended for Apple Silicon)
928
931
  pip install abstractcore[all]
929
932
 
@@ -9,11 +9,7 @@ from typing import Tuple, Optional, Union, Dict, Any
9
9
  from enum import Enum
10
10
  from pathlib import Path
11
11
 
12
- try:
13
- from PIL import Image, ImageOps
14
- PIL_AVAILABLE = True
15
- except ImportError:
16
- PIL_AVAILABLE = False
12
+ from PIL import Image, ImageOps
17
13
 
18
14
  from ..base import MediaProcessingError
19
15
  from ...utils.structured_logging import get_logger
@@ -38,9 +34,6 @@ class ModelOptimizedScaler:
38
34
  def __init__(self):
39
35
  self.logger = get_logger(__name__)
40
36
 
41
- if not PIL_AVAILABLE:
42
- raise MediaProcessingError("PIL (Pillow) is required for image scaling")
43
-
44
37
  def get_optimal_resolution(self, model_name: str, original_size: Tuple[int, int],
45
38
  model_capabilities: Optional[Dict[str, Any]] = None) -> Tuple[int, int]:
46
39
  """
@@ -11,4 +11,4 @@ including when the package is installed from PyPI where pyproject.toml is not av
11
11
 
12
12
  # Package version - update this when releasing new versions
13
13
  # This must be manually synchronized with the version in pyproject.toml
14
- __version__ = "2.6.5"
14
+ __version__ = "2.6.7"
@@ -22,9 +22,10 @@ References:
22
22
  import math
23
23
  from typing import Tuple, Dict, Any, Optional, List
24
24
  from pathlib import Path
25
- from PIL import Image
26
25
  import logging
27
26
 
27
+ from PIL import Image
28
+
28
29
  from ..utils.structured_logging import get_logger
29
30
  from ..architectures.detection import get_model_capabilities, detect_architecture
30
31
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractcore
3
- Version: 2.6.5
3
+ Version: 2.6.7
4
4
  Summary: Unified interface to all LLM providers with essential infrastructure for tool calling, streaming, and model management
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
6
6
  Maintainer-email: Laurent-Philippe Albou <contact@abstractcore.ai>
@@ -30,6 +30,7 @@ Requires-Dist: pydantic<3.0.0,>=2.0.0
30
30
  Requires-Dist: httpx<1.0.0,>=0.24.0
31
31
  Requires-Dist: tiktoken<1.0.0,>=0.5.0
32
32
  Requires-Dist: requests<3.0.0,>=2.25.0
33
+ Requires-Dist: Pillow<12.0.0,>=10.0.0
33
34
  Provides-Extra: openai
34
35
  Requires-Dist: openai<2.0.0,>=1.0.0; extra == "openai"
35
36
  Provides-Extra: anthropic
@@ -64,6 +65,7 @@ Requires-Dist: pymupdf4llm<1.0.0,>=0.0.20; extra == "media"
64
65
  Requires-Dist: unstructured[office]<1.0.0,>=0.10.0; extra == "media"
65
66
  Requires-Dist: pandas<3.0.0,>=1.0.0; extra == "media"
66
67
  Provides-Extra: compression
68
+ Requires-Dist: abstractcore[media]; extra == "compression"
67
69
  Requires-Dist: pdf2image<2.0.0,>=1.16.0; extra == "compression"
68
70
  Provides-Extra: api-providers
69
71
  Requires-Dist: abstractcore[anthropic,openai]; extra == "api-providers"
@@ -83,12 +85,18 @@ Provides-Extra: all-providers-apple
83
85
  Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai]; extra == "all-providers-apple"
84
86
  Provides-Extra: all-providers-gpu
85
87
  Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai,vllm]; extra == "all-providers-gpu"
88
+ Provides-Extra: all-providers-non-mlx
89
+ Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai]; extra == "all-providers-non-mlx"
90
+ Provides-Extra: local-providers-non-mlx
91
+ Requires-Dist: abstractcore[lmstudio,ollama]; extra == "local-providers-non-mlx"
86
92
  Provides-Extra: all
87
93
  Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools,vllm]; extra == "all"
88
94
  Provides-Extra: all-apple
89
95
  Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools]; extra == "all-apple"
90
96
  Provides-Extra: all-gpu
91
97
  Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools,vllm]; extra == "all-gpu"
98
+ Provides-Extra: all-non-mlx
99
+ Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools]; extra == "all-non-mlx"
92
100
  Provides-Extra: lightweight
93
101
  Requires-Dist: abstractcore[anthropic,compression,embeddings,lmstudio,media,ollama,openai,processing,server,tools]; extra == "lightweight"
94
102
  Provides-Extra: dev
@@ -1046,6 +1054,9 @@ pip install abstractcore[server]
1046
1054
  # With embeddings
1047
1055
  pip install abstractcore[embeddings]
1048
1056
 
1057
+ # With compression (Glyph visual-text compression)
1058
+ pip install abstractcore[compression]
1059
+
1049
1060
  # Everything (recommended for Apple Silicon)
1050
1061
  pip install abstractcore[all]
1051
1062
 
@@ -2,6 +2,7 @@ pydantic<3.0.0,>=2.0.0
2
2
  httpx<1.0.0,>=0.24.0
3
3
  tiktoken<1.0.0,>=0.5.0
4
4
  requests<3.0.0,>=2.25.0
5
+ Pillow<12.0.0,>=10.0.0
5
6
 
6
7
  [all]
7
8
  abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools,vllm]
@@ -12,6 +13,9 @@ abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,medi
12
13
  [all-gpu]
13
14
  abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools,vllm]
14
15
 
16
+ [all-non-mlx]
17
+ abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools]
18
+
15
19
  [all-providers]
16
20
  abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai,vllm]
17
21
 
@@ -21,6 +25,9 @@ abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai]
21
25
  [all-providers-gpu]
22
26
  abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai,vllm]
23
27
 
28
+ [all-providers-non-mlx]
29
+ abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai]
30
+
24
31
  [anthropic]
25
32
  anthropic<1.0.0,>=0.25.0
26
33
 
@@ -28,6 +35,7 @@ anthropic<1.0.0,>=0.25.0
28
35
  abstractcore[anthropic,openai]
29
36
 
30
37
  [compression]
38
+ abstractcore[media]
31
39
  pdf2image<2.0.0,>=1.16.0
32
40
 
33
41
  [dev]
@@ -81,6 +89,9 @@ abstractcore[lmstudio,mlx,ollama]
81
89
  [local-providers-gpu]
82
90
  abstractcore[lmstudio,ollama,vllm]
83
91
 
92
+ [local-providers-non-mlx]
93
+ abstractcore[lmstudio,ollama]
94
+
84
95
  [media]
85
96
  Pillow<12.0.0,>=10.0.0
86
97
  pymupdf4llm<1.0.0,>=0.0.20
@@ -50,6 +50,7 @@ dependencies = [
50
50
  "httpx>=0.24.0,<1.0.0",
51
51
  "tiktoken>=0.5.0,<1.0.0",
52
52
  "requests>=2.25.0,<3.0.0", # Required for common_tools web functionality
53
+ "Pillow>=10.0.0,<12.0.0", # Required for media handling in providers
53
54
  ]
54
55
 
55
56
  [project.urls]
@@ -140,6 +141,7 @@ media = [
140
141
  ]
141
142
 
142
143
  compression = [
144
+ "abstractcore[media]", # Compression requires media handling (PIL for image processing)
143
145
  "pdf2image>=1.16.0,<2.0.0",
144
146
  ]
145
147
 
@@ -181,6 +183,14 @@ all-providers-gpu = [
181
183
  "abstractcore[openai,anthropic,ollama,lmstudio,huggingface,vllm,embeddings]",
182
184
  ]
183
185
 
186
+ all-providers-non-mlx = [
187
+ "abstractcore[openai,anthropic,ollama,lmstudio,huggingface,embeddings]",
188
+ ]
189
+
190
+ local-providers-non-mlx = [
191
+ "abstractcore[ollama,lmstudio]",
192
+ ]
193
+
184
194
  all = [
185
195
  "abstractcore[openai,anthropic,ollama,lmstudio,huggingface,mlx,vllm,embeddings,processing,media,compression,tools,server,dev,test,docs]",
186
196
  ]
@@ -193,6 +203,10 @@ all-gpu = [
193
203
  "abstractcore[openai,anthropic,ollama,lmstudio,huggingface,vllm,embeddings,processing,media,compression,tools,server,dev,test,docs]",
194
204
  ]
195
205
 
206
+ all-non-mlx = [
207
+ "abstractcore[openai,anthropic,ollama,lmstudio,huggingface,embeddings,processing,media,compression,tools,server,dev,test,docs]",
208
+ ]
209
+
196
210
  lightweight = [
197
211
  "abstractcore[openai,anthropic,ollama,lmstudio,embeddings,processing,media,compression,tools,server]",
198
212
  ]
File without changes
File without changes