parishad 0.1.0__tar.gz → 0.1.1__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 (74) hide show
  1. {parishad-0.1.0 → parishad-0.1.1}/CHANGELOG.md +6 -0
  2. {parishad-0.1.0 → parishad-0.1.1}/PKG-INFO +3 -1
  3. {parishad-0.1.0 → parishad-0.1.1}/pyproject.toml +3 -1
  4. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/__init__.py +1 -1
  5. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/config/pipeline.core.yaml +1 -1
  6. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/config/pipeline.extended.yaml +1 -1
  7. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/config/pipeline.fast.yaml +1 -1
  8. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/data/models.json +1 -1
  9. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/downloader.py +5 -0
  10. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/orchestrator/config_loader.py +2 -2
  11. {parishad-0.1.0 → parishad-0.1.1}/.github/workflows/publish.yml +0 -0
  12. {parishad-0.1.0 → parishad-0.1.1}/CODE_OF_CONDUCT.md +0 -0
  13. {parishad-0.1.0 → parishad-0.1.1}/CONTRIBUTING.md +0 -0
  14. {parishad-0.1.0 → parishad-0.1.1}/LICENSE +0 -0
  15. {parishad-0.1.0 → parishad-0.1.1}/README.md +0 -0
  16. {parishad-0.1.0 → parishad-0.1.1}/SECURITY.md +0 -0
  17. {parishad-0.1.0 → parishad-0.1.1}/docs/assets/logo.jpeg +0 -0
  18. {parishad-0.1.0 → parishad-0.1.1}/docs/assets/logo.svg +0 -0
  19. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/__main__.py +0 -0
  20. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/checker/__init__.py +0 -0
  21. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/checker/deterministic.py +0 -0
  22. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/checker/ensemble.py +0 -0
  23. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/checker/retrieval.py +0 -0
  24. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/cli/__init__.py +0 -0
  25. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/cli/code.py +0 -0
  26. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/cli/main.py +0 -0
  27. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/cli/prarambh.py +0 -0
  28. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/cli/sthapana.py +0 -0
  29. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/config/modes.py +0 -0
  30. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/config/user_config.py +0 -0
  31. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/data/catalog.py +0 -0
  32. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/memory/__init__.py +0 -0
  33. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/__init__.py +0 -0
  34. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/__init__.py +0 -0
  35. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/base.py +0 -0
  36. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/huggingface.py +0 -0
  37. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/llama_cpp.py +0 -0
  38. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/mlx_lm.py +0 -0
  39. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/ollama.py +0 -0
  40. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/openai_api.py +0 -0
  41. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/backends/transformers_hf.py +0 -0
  42. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/costs.py +0 -0
  43. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/optimizations.py +0 -0
  44. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/profiles.py +0 -0
  45. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/reliability.py +0 -0
  46. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/runner.py +0 -0
  47. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/models/tokenization.py +0 -0
  48. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/orchestrator/__init__.py +0 -0
  49. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/orchestrator/engine.py +0 -0
  50. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/orchestrator/exceptions.py +0 -0
  51. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/__init__.py +0 -0
  52. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/base.py +0 -0
  53. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/dandadhyaksha.py +0 -0
  54. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/darbari.py +0 -0
  55. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/majumdar.py +0 -0
  56. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/pantapradhan.py +0 -0
  57. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/prerak.py +0 -0
  58. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/raja.py +0 -0
  59. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/sacheev.py +0 -0
  60. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/sainik.py +0 -0
  61. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/sar_senapati.py +0 -0
  62. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/roles/vidushak.py +0 -0
  63. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/tools/__init__.py +0 -0
  64. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/tools/base.py +0 -0
  65. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/tools/fs.py +0 -0
  66. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/tools/perception.py +0 -0
  67. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/tools/retrieval.py +0 -0
  68. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/tools/shell.py +0 -0
  69. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/utils/__init__.py +0 -0
  70. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/utils/hardware.py +0 -0
  71. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/utils/logging.py +0 -0
  72. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/utils/scanner.py +0 -0
  73. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/utils/text.py +0 -0
  74. {parishad-0.1.0 → parishad-0.1.1}/src/parishad/utils/tracing.py +0 -0
@@ -5,6 +5,12 @@ All notable changes to the **Parishad** project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.1] - 2026-01-26
9
+
10
+ ### Fixed
11
+ - **Windows Dependencies**: Added `textual` and `psutil` to package requirements.
12
+ - **Model Downloads**: Fixed 404 errors by properly handling `-GGUF` suffixes in repository names.
13
+
8
14
  ## [0.1.0] - Initial Release
9
15
 
10
16
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: parishad
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: A cost-aware, local-first council of heterogeneous LLMs for reliable reasoning, coding, and factual correctness
5
5
  Project-URL: Homepage, https://github.com/parishad-council/parishad
6
6
  Project-URL: Documentation, https://github.com/parishad-council/parishad#readme
@@ -25,10 +25,12 @@ Requires-Dist: httpx>=0.25.0
25
25
  Requires-Dist: jsonschema>=4.0.0
26
26
  Requires-Dist: numpy<2.0
27
27
  Requires-Dist: openai>=1.0.0
28
+ Requires-Dist: psutil>=5.9.0
28
29
  Requires-Dist: pydantic-settings>=2.0.0
29
30
  Requires-Dist: pydantic>=2.0.0
30
31
  Requires-Dist: pyyaml>=6.0
31
32
  Requires-Dist: rich>=13.0.0
33
+ Requires-Dist: textual>=0.70.0
32
34
  Requires-Dist: tiktoken>=0.5.0
33
35
  Provides-Extra: all
34
36
  Requires-Dist: accelerate>=0.25.0; extra == 'all'
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "parishad"
7
- version = "0.1.0"
7
+ version = "0.1.1"
8
8
  description = "A cost-aware, local-first council of heterogeneous LLMs for reliable reasoning, coding, and factual correctness"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -43,6 +43,8 @@ dependencies = [
43
43
  "openai>=1.0.0",
44
44
  "tiktoken>=0.5.0",
45
45
  "numpy<2.0",
46
+ "textual>=0.70.0",
47
+ "psutil>=5.9.0",
46
48
  ]
47
49
 
48
50
  [project.optional-dependencies]
@@ -5,7 +5,7 @@ Parishad orchestrates multiple local language models into a structured "council"
5
5
  that achieves higher reliability than a single model under strict compute budgets.
6
6
  """
7
7
 
8
- __version__ = "0.1.0"
8
+ __version__ = "0.1.1"
9
9
 
10
10
  from .orchestrator.engine import Parishad, ParishadEngine, PipelineConfig
11
11
  from .models.runner import ModelRunner, ModelConfig
@@ -3,7 +3,7 @@
3
3
  # Uses 2 model slots: mid + big
4
4
 
5
5
  name: "parishad-core"
6
- version: "0.1.0"
6
+ version: "0.1.1"
7
7
  description: "Balanced 8-role pipeline: Madhya Sabha with extended council"
8
8
 
9
9
  # Role definitions
@@ -3,7 +3,7 @@
3
3
  # Uses 3 model slots: small + mid + big
4
4
 
5
5
  name: "parishad-extended"
6
- version: "0.1.0"
6
+ version: "0.1.1"
7
7
  description: "Maha Sabha: Full 10-role council including Lateral Thinker (Vidushak)"
8
8
 
9
9
  # Role definitions
@@ -3,7 +3,7 @@
3
3
  # Laghu Sabha matches standard structure but uses smaller/faster models
4
4
 
5
5
  name: "parishad-fast"
6
- version: "0.1.0"
6
+ version: "0.1.1"
7
7
  description: "Fast 5-role pipeline: Analyze -> Plan -> Execute -> Check -> Judge"
8
8
 
9
9
  # Role definitions
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.0",
2
+ "version": "0.1.1",
3
3
  "updated": "2024-12-30",
4
4
  "sources": {
5
5
  "ollama": {
@@ -553,6 +553,11 @@ class HuggingFaceDownloader:
553
553
  # Fallback: Guess the filename based on repo name
554
554
  # Most GGUF repos (like bartowski) follow: {ModelName}-{Quant}.gguf
555
555
  repo_name = repo_id.split("/")[-1]
556
+
557
+ # Strip '-GGUF' suffix if present (common in repo names but not filenames)
558
+ if repo_name.lower().endswith("-gguf"):
559
+ repo_name = repo_name[:-5]
560
+
556
561
  quant_suffix = quantization if quantization else "Q4_K_M"
557
562
 
558
563
  # Construct standard guess
@@ -21,7 +21,7 @@ class RoleSpec:
21
21
  name: str
22
22
  class_name: str
23
23
  slot: str
24
- version: str = "0.1.0"
24
+ version: str = "0.1.1"
25
25
  budget_tokens: int = 1000
26
26
  dependencies: list[str] = field(default_factory=list)
27
27
  max_tokens: Optional[int] = None
@@ -110,7 +110,7 @@ def load_pipeline_config(name: str, config_dir: Optional[Path] = None) -> list[R
110
110
  name=role_name.lower(), # Always store as lowercase for consistent lookups
111
111
  class_name=role_config.get("class", role_name.capitalize()),
112
112
  slot=role_config.get("slot", "mid"),
113
- version=role_config.get("version", "0.1.0"),
113
+ version=role_config.get("version", "0.1.1"),
114
114
  budget_tokens=role_config.get("budget_tokens", 1000),
115
115
  dependencies=role_config.get("dependencies", []),
116
116
  max_tokens=role_config.get("max_tokens"),
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes