parishad 0.1.1__tar.gz → 0.1.3__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.1 → parishad-0.1.3}/.github/workflows/publish.yml +15 -5
  2. parishad-0.1.3/.gitignore +160 -0
  3. {parishad-0.1.1 → parishad-0.1.3}/CHANGELOG.md +11 -0
  4. {parishad-0.1.1 → parishad-0.1.3}/PKG-INFO +2 -3
  5. {parishad-0.1.1 → parishad-0.1.3}/pyproject.toml +2 -2
  6. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/__init__.py +1 -1
  7. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/config/pipeline.core.yaml +1 -1
  8. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/config/pipeline.extended.yaml +1 -1
  9. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/config/pipeline.fast.yaml +1 -1
  10. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/data/models.json +1 -1
  11. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/orchestrator/config_loader.py +1 -1
  12. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/tools/perception.py +2 -1
  13. {parishad-0.1.1 → parishad-0.1.3}/CODE_OF_CONDUCT.md +0 -0
  14. {parishad-0.1.1 → parishad-0.1.3}/CONTRIBUTING.md +0 -0
  15. {parishad-0.1.1 → parishad-0.1.3}/LICENSE +0 -0
  16. {parishad-0.1.1 → parishad-0.1.3}/README.md +0 -0
  17. {parishad-0.1.1 → parishad-0.1.3}/SECURITY.md +0 -0
  18. {parishad-0.1.1 → parishad-0.1.3}/docs/assets/logo.jpeg +0 -0
  19. {parishad-0.1.1 → parishad-0.1.3}/docs/assets/logo.svg +0 -0
  20. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/__main__.py +0 -0
  21. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/checker/__init__.py +0 -0
  22. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/checker/deterministic.py +0 -0
  23. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/checker/ensemble.py +0 -0
  24. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/checker/retrieval.py +0 -0
  25. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/cli/__init__.py +0 -0
  26. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/cli/code.py +0 -0
  27. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/cli/main.py +0 -0
  28. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/cli/prarambh.py +0 -0
  29. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/cli/sthapana.py +0 -0
  30. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/config/modes.py +0 -0
  31. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/config/user_config.py +0 -0
  32. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/data/catalog.py +0 -0
  33. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/memory/__init__.py +0 -0
  34. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/__init__.py +0 -0
  35. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/__init__.py +0 -0
  36. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/base.py +0 -0
  37. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/huggingface.py +0 -0
  38. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/llama_cpp.py +0 -0
  39. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/mlx_lm.py +0 -0
  40. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/ollama.py +0 -0
  41. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/openai_api.py +0 -0
  42. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/backends/transformers_hf.py +0 -0
  43. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/costs.py +0 -0
  44. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/downloader.py +0 -0
  45. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/optimizations.py +0 -0
  46. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/profiles.py +0 -0
  47. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/reliability.py +0 -0
  48. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/runner.py +0 -0
  49. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/models/tokenization.py +0 -0
  50. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/orchestrator/__init__.py +0 -0
  51. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/orchestrator/engine.py +0 -0
  52. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/orchestrator/exceptions.py +0 -0
  53. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/__init__.py +0 -0
  54. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/base.py +0 -0
  55. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/dandadhyaksha.py +0 -0
  56. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/darbari.py +0 -0
  57. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/majumdar.py +0 -0
  58. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/pantapradhan.py +0 -0
  59. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/prerak.py +0 -0
  60. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/raja.py +0 -0
  61. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/sacheev.py +0 -0
  62. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/sainik.py +0 -0
  63. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/sar_senapati.py +0 -0
  64. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/roles/vidushak.py +0 -0
  65. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/tools/__init__.py +0 -0
  66. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/tools/base.py +0 -0
  67. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/tools/fs.py +0 -0
  68. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/tools/retrieval.py +0 -0
  69. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/tools/shell.py +0 -0
  70. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/utils/__init__.py +0 -0
  71. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/utils/hardware.py +0 -0
  72. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/utils/logging.py +0 -0
  73. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/utils/scanner.py +0 -0
  74. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/utils/text.py +0 -0
  75. {parishad-0.1.1 → parishad-0.1.3}/src/parishad/utils/tracing.py +0 -0
@@ -35,19 +35,27 @@ jobs:
35
35
  # Extract version from pyproject.toml
36
36
  VERSION=$(python -c "import toml; print(toml.load('pyproject.toml')['project']['version'])")
37
37
  echo "Detected version: $VERSION"
38
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
38
39
 
39
40
  # Check if tag exists
40
41
  if git rev-parse "v$VERSION" >/dev/null 2>&1; then
41
- echo "Tag v$VERSION already exists. Skipping release."
42
- echo "new_release=false" >> $GITHUB_OUTPUT
42
+ echo "Tag v$VERSION already exists."
43
+ if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
44
+ echo "Manual trigger detected. Retrying release for existing version."
45
+ echo "new_release=true" >> $GITHUB_OUTPUT
46
+ echo "skip_tag=true" >> $GITHUB_OUTPUT
47
+ else
48
+ echo "Skipping release to prevent duplicates."
49
+ echo "new_release=false" >> $GITHUB_OUTPUT
50
+ fi
43
51
  else
44
52
  echo "New version detected!"
45
53
  echo "new_release=true" >> $GITHUB_OUTPUT
46
- echo "version=$VERSION" >> $GITHUB_OUTPUT
54
+ echo "skip_tag=false" >> $GITHUB_OUTPUT
47
55
  fi
48
56
 
49
57
  - name: Create Tag
50
- if: steps.check_version.outputs.new_release == 'true'
58
+ if: steps.check_version.outputs.new_release == 'true' && steps.check_version.outputs.skip_tag != 'true'
51
59
  env:
52
60
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53
61
  run: |
@@ -59,7 +67,9 @@ jobs:
59
67
 
60
68
  - name: Build package
61
69
  if: steps.check_version.outputs.new_release == 'true'
62
- run: python -m build
70
+ run: |
71
+ rm -rf dist/ build/ *.egg-info
72
+ python -m build
63
73
 
64
74
  - name: Publish to PyPI
65
75
  if: steps.check_version.outputs.new_release == 'true'
@@ -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.3] - 2026-01-26
9
+
10
+ ### Fixed
11
+ - **Missing Core Backend**: Promoted `llama-cpp-python` to core dependencies (`backend-not-available` fix).
12
+ - **Default Profile**: Updated pipeline default version to `0.1.3`.
13
+
14
+ ## [0.1.2] - 2026-01-26
15
+
16
+ ### Fixed
17
+ - **Critical Crash**: Fixed `TypeError` in `PerceptionTool` initialization by updating the constructor to accept `llm_config`.
18
+
8
19
  ## [0.1.1] - 2026-01-26
9
20
 
10
21
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: parishad
3
- Version: 0.1.1
3
+ Version: 0.1.3
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
@@ -23,6 +23,7 @@ Requires-Python: >=3.10
23
23
  Requires-Dist: click>=8.0.0
24
24
  Requires-Dist: httpx>=0.25.0
25
25
  Requires-Dist: jsonschema>=4.0.0
26
+ Requires-Dist: llama-cpp-python>=0.2.0
26
27
  Requires-Dist: numpy<2.0
27
28
  Requires-Dist: openai>=1.0.0
28
29
  Requires-Dist: psutil>=5.9.0
@@ -38,7 +39,6 @@ Requires-Dist: black>=23.0.0; extra == 'all'
38
39
  Requires-Dist: chromadb>=0.5.0; extra == 'all'
39
40
  Requires-Dist: datasets>=2.14.0; extra == 'all'
40
41
  Requires-Dist: faiss-cpu>=1.7.0; extra == 'all'
41
- Requires-Dist: llama-cpp-python>=0.2.0; extra == 'all'
42
42
  Requires-Dist: mypy>=1.0.0; extra == 'all'
43
43
  Requires-Dist: pandas>=2.0.0; extra == 'all'
44
44
  Requires-Dist: pre-commit>=3.0.0; extra == 'all'
@@ -71,7 +71,6 @@ Requires-Dist: grpcio-tools>=1.50.0; extra == 'distributed'
71
71
  Requires-Dist: grpcio>=1.50.0; extra == 'distributed'
72
72
  Provides-Extra: local
73
73
  Requires-Dist: accelerate>=0.25.0; extra == 'local'
74
- Requires-Dist: llama-cpp-python>=0.2.0; extra == 'local'
75
74
  Requires-Dist: torch>=2.0.0; extra == 'local'
76
75
  Requires-Dist: transformers>=4.35.0; extra == 'local'
77
76
  Provides-Extra: mlx
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "parishad"
7
- version = "0.1.1"
7
+ version = "0.1.3"
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"
@@ -45,11 +45,11 @@ dependencies = [
45
45
  "numpy<2.0",
46
46
  "textual>=0.70.0",
47
47
  "psutil>=5.9.0",
48
+ "llama-cpp-python>=0.2.0",
48
49
  ]
49
50
 
50
51
  [project.optional-dependencies]
51
52
  local = [
52
- "llama-cpp-python>=0.2.0",
53
53
  "transformers>=4.35.0",
54
54
  "torch>=2.0.0",
55
55
  "accelerate>=0.25.0",
@@ -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.1"
8
+ __version__ = "0.1.3"
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.1"
6
+ version: "0.1.3"
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.1"
6
+ version: "0.1.3"
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.1"
6
+ version: "0.1.3"
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.1",
2
+ "version": "0.1.3",
3
3
  "updated": "2024-12-30",
4
4
  "sources": {
5
5
  "ollama": {
@@ -21,7 +21,7 @@ class RoleSpec:
21
21
  name: str
22
22
  class_name: str
23
23
  slot: str
24
- version: str = "0.1.1"
24
+ version: str = "0.1.3"
25
25
  budget_tokens: int = 1000
26
26
  dependencies: list[str] = field(default_factory=list)
27
27
  max_tokens: Optional[int] = None
@@ -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