llmbroker 0.0.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.
@@ -0,0 +1,17 @@
1
+ [run]
2
+ relative_files = true
3
+ omit =
4
+ */tests/*
5
+ */*_check.py
6
+ */__init__.py
7
+ */conftest.py
8
+ */.tox/*
9
+ */.venv/*
10
+ */.eggs/*
11
+ */docs/*
12
+ */build/*
13
+ */dist/*
14
+ */.git/*
15
+ */.github/*
16
+ */.vscode/*
17
+ */.pytest_cache/*
@@ -0,0 +1,132 @@
1
+
2
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
3
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
4
+ #
5
+ name: CI
6
+
7
+ env:
8
+ PRIMARY_PYTHON_VERSION: '3.13'
9
+ PRIMARY_PLATFORM: 'ubuntu-latest'
10
+ PYTEST_CMD: >-
11
+ python -m pytest
12
+ --junitxml=pytest.xml
13
+ --cov-report=term-missing:skip-covered
14
+ --cov=src
15
+ tests/
16
+
17
+ on:
18
+ push:
19
+ branches: [ master, main ]
20
+ pull_request:
21
+ branches: [ master, main ]
22
+
23
+ permissions:
24
+ pull-requests: write
25
+ contents: write
26
+
27
+ jobs:
28
+ # Test compatibility with the matrix of Python versions and platforms
29
+ matrix-build:
30
+ strategy:
31
+ matrix:
32
+ python-version: [3.12, 3.13]
33
+ platform: [ubuntu-latest, macos-latest, windows-latest]
34
+ runs-on: ${{ matrix.platform }}
35
+
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+
39
+ - name: Set up Python ${{ matrix.python-version }}
40
+ uses: actions/setup-python@v5
41
+ with:
42
+ python-version: ${{ matrix.python-version }}
43
+
44
+
45
+ - name: Install uv environment
46
+ uses: andgineer/uv-venv@v3
47
+
48
+ - name: Install dependencies
49
+ run: uv sync --frozen
50
+
51
+ - name: Test with pytest
52
+ run: ${{ env.PYTEST_CMD }}
53
+
54
+ # Build with publishing Allure report, coverage report
55
+ primary-build:
56
+ runs-on: ubuntu-latest
57
+ concurrency:
58
+ group: github-pages
59
+ cancel-in-progress: false
60
+
61
+ steps:
62
+ - uses: actions/checkout@v4
63
+
64
+ - name: Set up Python ${{ env.PRIMARY_PYTHON_VERSION }}
65
+ uses: actions/setup-python@v5
66
+ with:
67
+ python-version: ${{ env.PRIMARY_PYTHON_VERSION }}
68
+
69
+
70
+ - name: Install uv environment
71
+ uses: andgineer/uv-venv@v3
72
+
73
+ - name: Install dependencies
74
+ run: uv sync --frozen
75
+
76
+ - name: Test with pytest and Allure report
77
+ run: "${{ env.PYTEST_CMD }} --alluredir=./allure-results"
78
+
79
+ - name: Load Allure test report history
80
+ uses: actions/checkout@v4
81
+ if: always()
82
+ continue-on-error: true
83
+ with:
84
+ ref: gh-pages
85
+ path: gh-pages-dir
86
+
87
+ - name: Generate Allure test report
88
+ uses: andgineer/allure-report@v3.6
89
+ id: allure-report
90
+ if: always()
91
+ with:
92
+ allure-results: allure-results
93
+ website: gh-pages-dir
94
+ reports-site-path: builds/tests
95
+
96
+ - name: Publish Allure test report
97
+ uses: peaceiris/actions-gh-pages@v3
98
+ if: ${{ always() && (steps.allure-report.outcome == 'success') }}
99
+ with:
100
+ github_token: ${{ secrets.GITHUB_TOKEN }}
101
+ publish_branch: gh-pages
102
+ publish_dir: ${{ steps.allure-report.outputs.reports-site }}
103
+ destination_dir: ${{ steps.allure-report.outputs.reports-site-path }}
104
+
105
+ - name: Coverage comment
106
+ id: coverage_comment
107
+ if: always()
108
+ uses: py-cov-action/python-coverage-comment-action@v3
109
+ with:
110
+ GITHUB_TOKEN: ${{ github.token }}
111
+ MINIMUM_GREEN: 85
112
+ MINIMUM_ORANGE: 70
113
+
114
+ - name: Store Pull Request comment to be posted
115
+ uses: actions/upload-artifact@v4
116
+ if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true'
117
+ with:
118
+ name: python-coverage-comment-action
119
+ path: python-coverage-comment-action.txt
120
+
121
+ - name: Upload coverage data to coveralls.io
122
+ if: always()
123
+ continue-on-error: true
124
+ uses: coverallsapp/github-action@v2
125
+
126
+ - name: Upload Coverage to Codecov
127
+ if: always()
128
+ continue-on-error: true
129
+ uses: codecov/codecov-action@v4.0.1
130
+ with:
131
+ fail_ci_if_error: true
132
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,65 @@
1
+
2
+ # build docs from docstrings and markdown-file in folder docs
3
+ # publish them as github pages
4
+ #
5
+ #note for myself
6
+ #
7
+ # Do not forget to set git branch `gh-pages` as source for github pages.
8
+ # This branch auto-updated by `mkdocs gh-deploy`
9
+ #
10
+ name: docs
11
+ on:
12
+ push:
13
+ branches:
14
+ - main
15
+ - master
16
+
17
+ permissions:
18
+ contents: write
19
+
20
+ jobs:
21
+ deploy:
22
+ env:
23
+ PRIMARY_PYTHON_VERSION: '3.13'
24
+ runs-on: ubuntu-latest
25
+ concurrency:
26
+ group: github-pages
27
+ cancel-in-progress: false
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+
31
+ - name: Checkout gh-pages to backup Allure test reports
32
+ uses: actions/checkout@v4
33
+ with:
34
+ ref: gh-pages
35
+ path: gh-pages
36
+ continue-on-error: true
37
+
38
+ - uses: actions/setup-python@v5
39
+ with:
40
+ python-version: ${{ env.PRIMARY_PYTHON_VERSION }}
41
+
42
+
43
+ - name: Install uv environment
44
+ uses: andgineer/uv-venv@v3
45
+
46
+ - name: Install dependencies
47
+ run: |
48
+ uv sync --frozen
49
+ uv pip install ghp-import
50
+
51
+
52
+ - name: Build documentation
53
+ run: inv build-docs
54
+
55
+ - name: Deploy to GitHub Pages
56
+ run: |
57
+ ghp-import --no-jekyll --push --force build/docs/site
58
+
59
+ - name: Restore Allure test reports folder
60
+ uses: peaceiris/actions-gh-pages@v3
61
+ with:
62
+ github_token: ${{ secrets.GITHUB_TOKEN }}
63
+ publish_branch: gh-pages
64
+ publish_dir: gh-pages/builds
65
+ destination_dir: builds
@@ -0,0 +1,91 @@
1
+
2
+ # This workflows will upload a Python Package using build system from pyproject.toml - when version
3
+ # tag is pushed and CI workflow is successful.
4
+ #
5
+ # To push the tag use `inv ver-release/feature/bag`.
6
+ #
7
+ # Put you pypi credentials (PYPI_USERNAME, PYPI_PASSWORD) into the github repository secrets
8
+
9
+ name: Upload Python Package
10
+
11
+ on:
12
+ workflow_run:
13
+ workflows: ["CI"]
14
+ types: [completed]
15
+ branches:
16
+ - master
17
+ - main
18
+
19
+ permissions:
20
+ contents: write
21
+
22
+ jobs:
23
+ check_tag:
24
+ runs-on: ubuntu-latest
25
+ outputs:
26
+ has_tag: ${{ steps.check_tag.outputs.has_tag }}
27
+ version_tag: ${{ steps.check_tag.outputs.version_tag }}
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 0
32
+
33
+ - name: Check for version tag
34
+ id: check_tag
35
+ run: |
36
+ # Only accept semver tags like v1.2.3
37
+ TAG=$(git tag --points-at HEAD | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' || true)
38
+ if [ -n "$TAG" ]; then
39
+ echo "has_tag=true" >> $GITHUB_OUTPUT
40
+ # Strip leading 'v' for use in the workflow
41
+ echo "version_tag=${TAG#v}" >> $GITHUB_OUTPUT
42
+ else
43
+ echo "has_tag=false" >> $GITHUB_OUTPUT
44
+ fi
45
+
46
+ publish:
47
+ needs: check_tag
48
+ # Skip entire job unless a valid semver tag was found
49
+ if: needs.check_tag.outputs.has_tag == 'true'
50
+ env:
51
+ RELEASE_VERSION: ${{ needs.check_tag.outputs.version_tag }}
52
+ PRIMARY_PYTHON_VERSION: '3.13'
53
+ runs-on: ubuntu-latest
54
+
55
+ steps:
56
+ - uses: actions/checkout@v4
57
+ with:
58
+ fetch-depth: 0
59
+
60
+ - name: Set up Python
61
+ uses: actions/setup-python@v5
62
+ with:
63
+ python-version: ${{ env.PRIMARY_PYTHON_VERSION }}
64
+
65
+
66
+ - name: Install uv environment
67
+ uses: andgineer/uv-venv@v3
68
+
69
+ - name: Install dependencies
70
+ run: uv sync --frozen
71
+
72
+ - name: Build package
73
+ run: uv build
74
+
75
+ - name: Publish to PyPI
76
+ uses: pypa/gh-action-pypi-publish@release/v1
77
+ with:
78
+ user: ${{ secrets.PYPI_USERNAME }}
79
+ password: ${{ secrets.PYPI_PASSWORD }}
80
+ packages-dir: dist
81
+
82
+ - name: Create Release
83
+ id: create_release
84
+ uses: softprops/action-gh-release@v2
85
+ with:
86
+ name: Release ${{ env.RELEASE_VERSION }}
87
+ tag_name: ${{ env.RELEASE_VERSION }}
88
+
89
+ body: https://pypi.org/project/llmbroker/${{ env.RELEASE_VERSION }}/
90
+ draft: false
91
+ prerelease: false
@@ -0,0 +1,34 @@
1
+
2
+ # build docs from docstrings and markdown-file in folder docs
3
+ # publish them as github pages
4
+ #
5
+ #note for myself
6
+ #
7
+ # Do not forget to set git branch `gh-pages` as source for github pages.
8
+ # This branch auto-updated by `mkdocs gh-deploy`
9
+ #
10
+ name: static source code checks
11
+ on:
12
+ push:
13
+ branches: [ master, main ]
14
+ pull_request:
15
+ branches: [ master, main ]
16
+
17
+ jobs:
18
+ static:
19
+ env:
20
+ PRIMARY_PYTHON_VERSION: '3.13'
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: ${{ env.PRIMARY_PYTHON_VERSION }}
27
+
28
+
29
+ - name: Install uv environment
30
+ uses: andgineer/uv-venv@v3
31
+
32
+ - name: Install dependencies
33
+ run: uv sync --frozen
34
+ - run: pre-commit run --verbose --all-files
@@ -0,0 +1,14 @@
1
+ .idea/
2
+ .venv/
3
+ build/
4
+ dist/
5
+ **/__pycache__
6
+ **/.pytest_cache
7
+ **/*.egg-info
8
+ pytest.xml
9
+ .coverage
10
+ .dmypy.json
11
+ pytest-coverage.txt
12
+ *.py-e
13
+ **/.setup-scripts/
14
+ allure-results/
@@ -0,0 +1,74 @@
1
+ exclude: |
2
+ (?x)(
3
+ .venv/|
4
+ tasks.py|
5
+ resources/
6
+ )
7
+ repos:
8
+ - repo: https://github.com/pre-commit/pre-commit-hooks
9
+ rev: v6.0.0
10
+ hooks:
11
+ - id: check-yaml
12
+ - id: end-of-file-fixer
13
+ exclude_types: [ python ]
14
+ - id: trailing-whitespace
15
+ exclude_types: [ python ]
16
+ - repo: https://github.com/astral-sh/ruff-pre-commit
17
+ rev: v0.15.13
18
+ hooks:
19
+ - id: ruff
20
+ exclude: ^tests/
21
+ args: [
22
+ --fix,
23
+ --line-length=100,
24
+ --select=PL, # All Pylint rules
25
+ --select=A001, # Shadowing Python builtins
26
+ --select=ARG, # Unused function arguments
27
+ --select=B, # Bugbear rules (B002,B006,etc)
28
+ --select=BLE, # Blind except
29
+ --select=C, # Complexity
30
+ --select=COM, # Comma placement
31
+ --select=E, # pycodestyle errors
32
+ --select=F, # Pyflakes
33
+ --select=G, # Logging format
34
+ --select=I, # Import ordering
35
+ --select=ISC, # Implicit string concatenation
36
+ --select=N, # Naming
37
+ --select=PIE, # Misc rules
38
+ --select=Q, # Quotes
39
+ --select=RET, # Return statement
40
+ --select=S, # Security
41
+ --select=SIM, # Code simplification
42
+ --select=SLF, # Private member access
43
+ --select=TID, # Tidy imports
44
+ --select=TRY, # Exception handling
45
+ --select=UP, # Upgrade syntax
46
+ --select=W, # Warnings
47
+ '--ignore=B019,S101,G004,TRY003,TRY300,TRY301,TRY400' # Ignore docstring and `assert` detection
48
+ ]
49
+ - id: ruff
50
+ name: ruff-format-tests
51
+ files: ^tests/
52
+ args: [
53
+ --fix-only,
54
+ --line-length=100
55
+ ]
56
+ - id: ruff-format
57
+ args: [
58
+ --line-length=100
59
+ ]
60
+
61
+
62
+
63
+ - repo: https://github.com/facebook/pyrefly-pre-commit
64
+ rev: 1.0.0
65
+ hooks:
66
+ - id: pyrefly-check
67
+ name: pyrefly check
68
+ language: system
69
+ args: [
70
+ # "--ignore=missing-import",
71
+ # "--ignore=missing-source-for-stubs",
72
+ "--project-excludes=tests",
73
+ "--python-interpreter-path=.venv/bin/python"
74
+ ]
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2026 Andrey Sorokin (andrey@sorokin.engineer)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the “Software”), to deal in
5
+ the Software without restriction, including without limitation the rights to use,
6
+ copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
7
+ Software, and to permit persons to whom the Software is furnished to do so,
8
+ subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
14
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
15
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
17
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,80 @@
1
+ Metadata-Version: 2.4
2
+ Name: llmbroker
3
+ Version: 0.0.2
4
+ Project-URL: Homepage, https://andgineer.github.io/llmbroker/
5
+ Project-URL: Documentation, https://andgineer.github.io/llmbroker/
6
+ Author-email: Andrey Sorokin <andrey@sorokin.engineer>
7
+ License: Copyright (c) 2026 Andrey Sorokin (andrey@sorokin.engineer)
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
10
+ this software and associated documentation files (the “Software”), to deal in
11
+ the Software without restriction, including without limitation the rights to use,
12
+ copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
13
+ Software, and to permit persons to whom the Software is furnished to do so,
14
+ subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
20
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26
+ OTHER DEALINGS IN THE SOFTWARE.
27
+ License-File: LICENSE
28
+ Keywords: one,two
29
+ Classifier: License :: OSI Approved :: MIT License
30
+ Classifier: Operating System :: OS Independent
31
+ Classifier: Programming Language :: Python :: 3
32
+ Requires-Python: >=3.12
33
+ Requires-Dist: click>=8.2.0
34
+ Requires-Dist: rich-click>=1.8.8
35
+ Description-Content-Type: text/markdown
36
+
37
+ [![Build Status](https://github.com/andgineer/llmbroker/workflows/CI/badge.svg)](https://github.com/andgineer/llmbroker/actions)
38
+ [![Coverage](https://raw.githubusercontent.com/andgineer/llmbroker/python-coverage-comment-action-data/badge.svg)](https://htmlpreview.github.io/?https://github.com/andgineer/llmbroker/blob/python-coverage-comment-action-data/htmlcov/index.html)
39
+ # llmbroker
40
+
41
+
42
+
43
+ # Documentation
44
+
45
+ [llmbroker](https://andgineer.github.io/llmbroker/)
46
+
47
+
48
+
49
+ # Developers
50
+
51
+ Do not forget to run `. ./activate.sh`.
52
+
53
+ For work it need [uv](https://github.com/astral-sh/uv) installed.
54
+
55
+ Use [pre-commit](https://pre-commit.com/#install) hooks for code quality:
56
+
57
+ pre-commit install
58
+
59
+ ## Allure test report
60
+
61
+ * [Allure report](https://andgineer.github.io/llmbroker/builds/tests/)
62
+
63
+ # Scripts
64
+ Install [invoke](https://docs.pyinvoke.org/en/stable/) preferably with [uv tool](https://docs.astral.sh/uv/):
65
+
66
+ uv tool install invoke
67
+
68
+ For a list of available scripts run:
69
+
70
+ invoke --list
71
+
72
+ For more information about a script run:
73
+
74
+ invoke <script> --help
75
+
76
+ ## Coverage report
77
+ * [Codecov](https://app.codecov.io/gh/andgineer/llmbroker/tree/main/src%2Fllmbroker)
78
+ * [Coveralls](https://coveralls.io/github/andgineer/llmbroker)
79
+
80
+ > Created with cookiecutter using [template](https://github.com/andgineer/cookiecutter-python-package)
@@ -0,0 +1,44 @@
1
+ [![Build Status](https://github.com/andgineer/llmbroker/workflows/CI/badge.svg)](https://github.com/andgineer/llmbroker/actions)
2
+ [![Coverage](https://raw.githubusercontent.com/andgineer/llmbroker/python-coverage-comment-action-data/badge.svg)](https://htmlpreview.github.io/?https://github.com/andgineer/llmbroker/blob/python-coverage-comment-action-data/htmlcov/index.html)
3
+ # llmbroker
4
+
5
+
6
+
7
+ # Documentation
8
+
9
+ [llmbroker](https://andgineer.github.io/llmbroker/)
10
+
11
+
12
+
13
+ # Developers
14
+
15
+ Do not forget to run `. ./activate.sh`.
16
+
17
+ For work it need [uv](https://github.com/astral-sh/uv) installed.
18
+
19
+ Use [pre-commit](https://pre-commit.com/#install) hooks for code quality:
20
+
21
+ pre-commit install
22
+
23
+ ## Allure test report
24
+
25
+ * [Allure report](https://andgineer.github.io/llmbroker/builds/tests/)
26
+
27
+ # Scripts
28
+ Install [invoke](https://docs.pyinvoke.org/en/stable/) preferably with [uv tool](https://docs.astral.sh/uv/):
29
+
30
+ uv tool install invoke
31
+
32
+ For a list of available scripts run:
33
+
34
+ invoke --list
35
+
36
+ For more information about a script run:
37
+
38
+ invoke <script> --help
39
+
40
+ ## Coverage report
41
+ * [Codecov](https://app.codecov.io/gh/andgineer/llmbroker/tree/main/src%2Fllmbroker)
42
+ * [Coveralls](https://coveralls.io/github/andgineer/llmbroker)
43
+
44
+ > Created with cookiecutter using [template](https://github.com/andgineer/cookiecutter-python-package)
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # "Set-ups or/and activates development environment"
4
+ #
5
+
6
+ VENV_FOLDER=".venv"
7
+
8
+ PRIMARY_PYTHON_VERSION="3.13" # sync with .github/workflows/docs.yml&static.yml
9
+
10
+ RED='\033[1;31m'
11
+ GREEN='\033[1;32m'
12
+ CYAN='\033[1;36m'
13
+ NC='\033[0m' # No Color
14
+
15
+ if ! (return 0 2>/dev/null) ; then
16
+ # If return is used in the top-level scope of a non-sourced script,
17
+ # an error message is emitted, and the exit code is set to 1
18
+ echo
19
+ echo -e $RED"This script should be sourced like"$NC
20
+ echo " . ./activate.sh"
21
+ echo
22
+ exit 1
23
+ fi
24
+
25
+
26
+ if [[ ! -d ${VENV_FOLDER} ]] ; then
27
+ unset CONDA_PREFIX # if conda is installed, it will mess with the virtual env
28
+
29
+ echo -e $CYAN"Creating virtual environment for python in ${VENV_FOLDER}"$NC
30
+ START_TIME=$(date +%s)
31
+
32
+ # Check if the required Python version is installed
33
+ if ! command -v python${PRIMARY_PYTHON_VERSION} &> /dev/null; then
34
+ echo -e $RED"Error: Python ${PRIMARY_PYTHON_VERSION} is not installed."$NC
35
+ echo -e $YELLOW"Please install Python ${PRIMARY_PYTHON_VERSION} before proceeding."$NC
36
+ echo -e $YELLOW"You can download it from https://www.python.org/downloads/"$NC
37
+ return 1
38
+ fi
39
+
40
+ if command -v uv &> /dev/null; then
41
+ if uv venv ${VENV_FOLDER} --python=python${PRIMARY_PYTHON_VERSION}; then
42
+
43
+ . ${VENV_FOLDER}/bin/activate
44
+ uv sync --frozen
45
+ END_TIME=$(date +%s)
46
+ echo "Environment created in $((END_TIME - $START_TIME)) seconds"
47
+ else
48
+ echo -e $RED"Error creating virtual environment. Please check the output above for more details."$NC
49
+ return 1
50
+ fi
51
+ else
52
+
53
+ echo -e $RED"Error: Astral's UV is not installed."$NC
54
+ echo -e $YELLOW"Please install UV from https://github.com/astral-sh/uv before proceeding."$NC
55
+
56
+ return 1
57
+ fi
58
+ else
59
+ echo -e $CYAN"Activating virtual environment ..."$NC
60
+ . ${VENV_FOLDER}/bin/activate
61
+ fi
@@ -0,0 +1,21 @@
1
+ #! /usr/bin/env bash
2
+ # Builds dev version of the container(s)
3
+ # Pass all args to docker compose
4
+ #
5
+ # Examples:
6
+ # build.sh --no-cache
7
+
8
+ cleanup() {
9
+ # Function to clean up the .setup-scripts folder
10
+ rm -rf .setup-scripts
11
+ }
12
+
13
+ # Trap signals and execute the cleanup function
14
+ trap cleanup EXIT INT TERM ERR
15
+ cp -r ../../docker-scripts .setup-scripts
16
+ ./compose.sh \
17
+ build \
18
+ "$@"
19
+
20
+ # Cleanup the .setup-scripts folder (redundant, but ensures cleanup)
21
+ cleanup
@@ -0,0 +1,4 @@
1
+ ::: llmbroker
2
+ options:
3
+ heading_level: 2
4
+ show_submodules: true
@@ -0,0 +1,2 @@
1
+ brew install pipx
2
+ pipx ensurepath