parishad 0.1.0__tar.gz → 0.1.2__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 (75) hide show
  1. parishad-0.1.2/.gitignore +160 -0
  2. {parishad-0.1.0 → parishad-0.1.2}/CHANGELOG.md +11 -0
  3. {parishad-0.1.0 → parishad-0.1.2}/PKG-INFO +3 -1
  4. {parishad-0.1.0 → parishad-0.1.2}/pyproject.toml +3 -1
  5. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/__init__.py +1 -1
  6. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/config/pipeline.core.yaml +1 -1
  7. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/config/pipeline.extended.yaml +1 -1
  8. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/config/pipeline.fast.yaml +1 -1
  9. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/data/models.json +1 -1
  10. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/downloader.py +5 -0
  11. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/orchestrator/config_loader.py +2 -2
  12. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/tools/perception.py +2 -1
  13. {parishad-0.1.0 → parishad-0.1.2}/.github/workflows/publish.yml +0 -0
  14. {parishad-0.1.0 → parishad-0.1.2}/CODE_OF_CONDUCT.md +0 -0
  15. {parishad-0.1.0 → parishad-0.1.2}/CONTRIBUTING.md +0 -0
  16. {parishad-0.1.0 → parishad-0.1.2}/LICENSE +0 -0
  17. {parishad-0.1.0 → parishad-0.1.2}/README.md +0 -0
  18. {parishad-0.1.0 → parishad-0.1.2}/SECURITY.md +0 -0
  19. {parishad-0.1.0 → parishad-0.1.2}/docs/assets/logo.jpeg +0 -0
  20. {parishad-0.1.0 → parishad-0.1.2}/docs/assets/logo.svg +0 -0
  21. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/__main__.py +0 -0
  22. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/checker/__init__.py +0 -0
  23. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/checker/deterministic.py +0 -0
  24. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/checker/ensemble.py +0 -0
  25. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/checker/retrieval.py +0 -0
  26. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/cli/__init__.py +0 -0
  27. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/cli/code.py +0 -0
  28. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/cli/main.py +0 -0
  29. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/cli/prarambh.py +0 -0
  30. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/cli/sthapana.py +0 -0
  31. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/config/modes.py +0 -0
  32. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/config/user_config.py +0 -0
  33. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/data/catalog.py +0 -0
  34. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/memory/__init__.py +0 -0
  35. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/__init__.py +0 -0
  36. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/__init__.py +0 -0
  37. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/base.py +0 -0
  38. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/huggingface.py +0 -0
  39. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/llama_cpp.py +0 -0
  40. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/mlx_lm.py +0 -0
  41. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/ollama.py +0 -0
  42. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/openai_api.py +0 -0
  43. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/backends/transformers_hf.py +0 -0
  44. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/costs.py +0 -0
  45. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/optimizations.py +0 -0
  46. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/profiles.py +0 -0
  47. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/reliability.py +0 -0
  48. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/runner.py +0 -0
  49. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/models/tokenization.py +0 -0
  50. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/orchestrator/__init__.py +0 -0
  51. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/orchestrator/engine.py +0 -0
  52. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/orchestrator/exceptions.py +0 -0
  53. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/__init__.py +0 -0
  54. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/base.py +0 -0
  55. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/dandadhyaksha.py +0 -0
  56. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/darbari.py +0 -0
  57. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/majumdar.py +0 -0
  58. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/pantapradhan.py +0 -0
  59. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/prerak.py +0 -0
  60. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/raja.py +0 -0
  61. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/sacheev.py +0 -0
  62. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/sainik.py +0 -0
  63. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/sar_senapati.py +0 -0
  64. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/roles/vidushak.py +0 -0
  65. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/tools/__init__.py +0 -0
  66. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/tools/base.py +0 -0
  67. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/tools/fs.py +0 -0
  68. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/tools/retrieval.py +0 -0
  69. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/tools/shell.py +0 -0
  70. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/utils/__init__.py +0 -0
  71. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/utils/hardware.py +0 -0
  72. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/utils/logging.py +0 -0
  73. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/utils/scanner.py +0 -0
  74. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/utils/text.py +0 -0
  75. {parishad-0.1.0 → parishad-0.1.2}/src/parishad/utils/tracing.py +0 -0
@@ -0,0 +1,160 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ share/python-wheels/
20
+ *.egg-info/
21
+ .installed.cfg
22
+ *.egg
23
+ MANIFEST
24
+
25
+ # Virtual Environment
26
+ venv/
27
+ .venv/
28
+ env/
29
+ ENV/
30
+ env.bak/
31
+ venv.bak/
32
+
33
+ # IDEs
34
+ .vscode/
35
+ .idea/
36
+ *.swp
37
+ *.swo
38
+ *~
39
+ .DS_Store
40
+
41
+ # Jupyter Notebook
42
+ .ipynb_checkpoints
43
+ *.ipynb
44
+
45
+ # pytest
46
+ .pytest_cache/
47
+ .coverage
48
+ htmlcov/
49
+ .tox/
50
+ .nox/
51
+ coverage.xml
52
+ *.cover
53
+ .hypothesis/
54
+ .pytest_cache/
55
+ pytestdebug.log
56
+
57
+ # mypy
58
+ .mypy_cache/
59
+ .dmypy.json
60
+ dmypy.json
61
+
62
+ # Pyre type checker
63
+ .pyre/
64
+
65
+ # pytype static type analyzer
66
+ .pytype/
67
+
68
+ # Cython debug symbols
69
+ cython_debug/
70
+
71
+ # Environment variables
72
+ # .env <-- Un-ignored for this setup
73
+ .env.local
74
+ .env.*.local
75
+
76
+ # Logs
77
+ logs/
78
+ *.log
79
+ pip-log.txt
80
+ pip-delete-this-directory.txt
81
+
82
+ # Parishad-specific
83
+ traces/
84
+ trace_*.json
85
+ outputs/
86
+ *.trace.json
87
+ parishad_traces/
88
+ benchmark_traces/
89
+ gaia_benchmark.log
90
+ gaia_results.jsonl
91
+
92
+ # API keys and secrets
93
+ secrets.yaml
94
+ .secrets/
95
+ api_keys.txt
96
+ *.pem
97
+ *.key
98
+
99
+ # Model cache (downloaded model files, not source code)
100
+ # Use specific paths to avoid ignoring parishad/models/ source code
101
+ /models/
102
+ **/model_cache/
103
+ *.gguf
104
+ *.safetensors
105
+ *.bin
106
+ !parishad/models/
107
+
108
+ .cache/
109
+
110
+ # Test outputs
111
+ test_outputs/
112
+ test_traces/
113
+ .test_data/
114
+ # Documentation builds
115
+ docs/_build/
116
+ docs/.doctrees/
117
+ site/
118
+
119
+ # OS specific
120
+ Thumbs.db
121
+ ehthumbs.db
122
+ Desktop.ini
123
+
124
+ # Backup files
125
+ *.bak
126
+ *.backup
127
+ *.tmp
128
+ *~.nib
129
+
130
+ # Distribution / packaging
131
+ .Python
132
+ build/
133
+ develop-eggs/
134
+ dist/
135
+ downloads/
136
+ eggs/
137
+ .eggs/
138
+ lib/
139
+ lib64/
140
+ parts/
141
+ sdist/
142
+ var/
143
+ wheels/
144
+ pip-wheel-metadata/
145
+ share/python-wheels/
146
+ *.egg-info/
147
+ .installed.cfg
148
+ *.egg
149
+ MANIFEST
150
+
151
+ # Database
152
+ *.db
153
+ *.sqlite
154
+ *.sqlite3
155
+
156
+ # Local config overrides
157
+ local_config.yaml
158
+ config.local.yaml
159
+ pipeline.*.local.yaml
160
+
@@ -5,6 +5,17 @@ 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.2] - 2026-01-26
9
+
10
+ ### Fixed
11
+ - **Critical Crash**: Fixed `TypeError` in `PerceptionTool` initialization by updating the constructor to accept `llm_config`.
12
+
13
+ ## [0.1.1] - 2026-01-26
14
+
15
+ ### Fixed
16
+ - **Windows Dependencies**: Added `textual` and `psutil` to package requirements.
17
+ - **Model Downloads**: Fixed 404 errors by properly handling `-GGUF` suffixes in repository names.
18
+
8
19
  ## [0.1.0] - Initial Release
9
20
 
10
21
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: parishad
3
- Version: 0.1.0
3
+ Version: 0.1.2
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.2"
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.2"
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.2"
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.2"
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.2"
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.2",
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"),
@@ -19,8 +19,9 @@ class PerceptionTool(BaseTool):
19
19
  name = "perception"
20
20
  description = "Convert files (PDF, Docx, Images, Audio) into text. Use for reading docs or seeing images."
21
21
 
22
- def __init__(self):
22
+ def __init__(self, llm_config: Optional[Dict[str, Any]] = None):
23
23
  super().__init__()
24
+ self.llm_config = llm_config
24
25
  self._markitdown = None
25
26
 
26
27
  def _get_markitdown(self):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes