venice-cli 0.14.0__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.
- venice_cli-0.14.0/.gitignore +27 -0
- venice_cli-0.14.0/CONTRIBUTING.md +68 -0
- venice_cli-0.14.0/LICENSE +21 -0
- venice_cli-0.14.0/Makefile +25 -0
- venice_cli-0.14.0/PKG-INFO +654 -0
- venice_cli-0.14.0/README.md +619 -0
- venice_cli-0.14.0/SECURITY.md +46 -0
- venice_cli-0.14.0/bin/venice +24 -0
- venice_cli-0.14.0/install.sh +56 -0
- venice_cli-0.14.0/pyproject.toml +82 -0
- venice_cli-0.14.0/src/venice/__init__.py +1 -0
- venice_cli-0.14.0/src/venice/__main__.py +6 -0
- venice_cli-0.14.0/src/venice/audio_player.py +59 -0
- venice_cli-0.14.0/src/venice/audio_post.py +274 -0
- venice_cli-0.14.0/src/venice/auth.py +101 -0
- venice_cli-0.14.0/src/venice/billing.py +129 -0
- venice_cli-0.14.0/src/venice/cli.py +31 -0
- venice_cli-0.14.0/src/venice/client.py +258 -0
- venice_cli-0.14.0/src/venice/commands/__init__.py +22 -0
- venice_cli-0.14.0/src/venice/commands/_audio.py +96 -0
- venice_cli-0.14.0/src/venice/commands/_models.py +83 -0
- venice_cli-0.14.0/src/venice/commands/_openai.py +62 -0
- venice_cli-0.14.0/src/venice/commands/_queue.py +87 -0
- venice_cli-0.14.0/src/venice/commands/_shared.py +132 -0
- venice_cli-0.14.0/src/venice/commands/balance.py +124 -0
- venice_cli-0.14.0/src/venice/commands/bg_remove.py +126 -0
- venice_cli-0.14.0/src/venice/commands/chat.py +263 -0
- venice_cli-0.14.0/src/venice/commands/contact_sheet.py +59 -0
- venice_cli-0.14.0/src/venice/commands/embed.py +157 -0
- venice_cli-0.14.0/src/venice/commands/image.py +657 -0
- venice_cli-0.14.0/src/venice/commands/login.py +29 -0
- venice_cli-0.14.0/src/venice/commands/master.py +42 -0
- venice_cli-0.14.0/src/venice/commands/models.py +174 -0
- venice_cli-0.14.0/src/venice/commands/music.py +316 -0
- venice_cli-0.14.0/src/venice/commands/sfx.py +199 -0
- venice_cli-0.14.0/src/venice/commands/tts.py +362 -0
- venice_cli-0.14.0/src/venice/commands/upscale.py +177 -0
- venice_cli-0.14.0/src/venice/commands/video.py +298 -0
- venice_cli-0.14.0/src/venice/config.py +19 -0
- venice_cli-0.14.0/src/venice/image_montage.py +230 -0
- venice_cli-0.14.0/tests/__init__.py +0 -0
- venice_cli-0.14.0/tests/test_auth.py +71 -0
- venice_cli-0.14.0/tests/test_balance.py +154 -0
- venice_cli-0.14.0/tests/test_bg_remove.py +164 -0
- venice_cli-0.14.0/tests/test_chat.py +267 -0
- venice_cli-0.14.0/tests/test_client.py +160 -0
- venice_cli-0.14.0/tests/test_contact_sheet.py +217 -0
- venice_cli-0.14.0/tests/test_embed.py +223 -0
- venice_cli-0.14.0/tests/test_image.py +563 -0
- venice_cli-0.14.0/tests/test_master.py +210 -0
- venice_cli-0.14.0/tests/test_models.py +127 -0
- venice_cli-0.14.0/tests/test_music.py +323 -0
- venice_cli-0.14.0/tests/test_sfx.py +198 -0
- venice_cli-0.14.0/tests/test_shared_openai.py +200 -0
- venice_cli-0.14.0/tests/test_tts.py +201 -0
- venice_cli-0.14.0/tests/test_upscale.py +190 -0
- venice_cli-0.14.0/tests/test_video.py +220 -0
- venice_cli-0.14.0/uninstall.sh +30 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.pyc
|
|
3
|
+
*.pyo
|
|
4
|
+
*.pyd
|
|
5
|
+
.venv/
|
|
6
|
+
.env
|
|
7
|
+
.DS_Store
|
|
8
|
+
|
|
9
|
+
# Build artifacts (none expected for stdlib-only, but be safe)
|
|
10
|
+
build/
|
|
11
|
+
dist/
|
|
12
|
+
*.egg-info/
|
|
13
|
+
|
|
14
|
+
# Local audio outputs -- never commit generated SFX
|
|
15
|
+
venice-sfx-*.mp3
|
|
16
|
+
venice-sfx-*.wav
|
|
17
|
+
venice-sfx-*.flac
|
|
18
|
+
venice-sfx-*.bin
|
|
19
|
+
|
|
20
|
+
# Editor / IDE
|
|
21
|
+
.vscode/
|
|
22
|
+
.idea/
|
|
23
|
+
*.swp
|
|
24
|
+
|
|
25
|
+
# Vendored Venice OpenAPI spec -- local dev reference only (large, fast-moving
|
|
26
|
+
# third-party file). Fetch fresh from Venice rather than tracking in history.
|
|
27
|
+
reference/venice-openapi.yaml
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thanks for taking a look. This is a small project with a simple rhythm.
|
|
4
|
+
|
|
5
|
+
## Development setup
|
|
6
|
+
|
|
7
|
+
Clone, and run from the repo:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
git clone https://github.com/gobha-me/venice-cli.git
|
|
11
|
+
cd venice-cli
|
|
12
|
+
PYTHONPATH=src python3 -m venice --help
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
That needs no install at all. For an editable install with the `openai` extra
|
|
16
|
+
(only `venice chat` / `venice embed` need it):
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
pip install -e ".[openai]"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`./install.sh` symlinks `venice` onto your PATH if you want the real command
|
|
23
|
+
without pip. Don't mix the two: both own `~/.local/bin/venice`.
|
|
24
|
+
|
|
25
|
+
## Before opening a PR
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
make test # unittest, no network, no API key required
|
|
29
|
+
make lint # compileall syntax check
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Both must be green. Tests are hermetic: `urlopen` is mocked, `subprocess` and
|
|
33
|
+
`shutil.which` are patched, `HOME` is redirected to a tmpdir, and the OpenAI
|
|
34
|
+
SDK is mocked. **No test should ever make a real API call or need a real key.**
|
|
35
|
+
If you find yourself wanting to hit the live API in a test, that's a sign the
|
|
36
|
+
seam is in the wrong place.
|
|
37
|
+
|
|
38
|
+
## House style
|
|
39
|
+
|
|
40
|
+
- **Stdlib-only in the base.** `venice chat` and `venice embed` use the OpenAI
|
|
41
|
+
SDK, lazy-imported inside the handler so a missing `openai` degrades to a
|
|
42
|
+
hint and exit 2 rather than breaking `venice --help`. Keep it that way: new
|
|
43
|
+
third-party deps need a good reason and must not be imported at module scope
|
|
44
|
+
in the base commands.
|
|
45
|
+
- **Shared plumbing lives in `src/venice/commands/_*.py`** (`_shared`, `_queue`,
|
|
46
|
+
`_models`, `_openai`). These take primitive args -- a label, a model type, a
|
|
47
|
+
cost -- rather than an argparse namespace, so they stay independent of any one
|
|
48
|
+
command's argument shape. If you're copy-pasting a helper into a second
|
|
49
|
+
command, extract it instead.
|
|
50
|
+
- **Exit codes are part of the interface.** See the table in the README; don't
|
|
51
|
+
change what an existing condition returns without saying so.
|
|
52
|
+
- **Never log, print, or embed the API key**, including in error messages, test
|
|
53
|
+
fixtures, or partial/redacted form.
|
|
54
|
+
- Adding a subcommand is one import and one entry in
|
|
55
|
+
`src/venice/commands/__init__.py`.
|
|
56
|
+
|
|
57
|
+
## Commits and branches
|
|
58
|
+
|
|
59
|
+
One `feat/<name>` branch per issue. Commit subjects follow
|
|
60
|
+
`vX.Y: short description (#issue)`. Merges into `master` are `--no-ff`.
|
|
61
|
+
|
|
62
|
+
## Reporting bugs
|
|
63
|
+
|
|
64
|
+
Include the command you ran, what you expected, what happened, the exit code,
|
|
65
|
+
and your Python version. **Never paste your API key** -- not even partially.
|
|
66
|
+
|
|
67
|
+
For security issues see [SECURITY.md](SECURITY.md); don't use the public
|
|
68
|
+
issue tracker.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jeffrey Smith
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
.PHONY: install uninstall test lint build clean
|
|
2
|
+
|
|
3
|
+
install:
|
|
4
|
+
@./install.sh
|
|
5
|
+
|
|
6
|
+
uninstall:
|
|
7
|
+
@./uninstall.sh
|
|
8
|
+
|
|
9
|
+
test:
|
|
10
|
+
@PYTHONPATH=src python3 -m unittest discover -v -s tests
|
|
11
|
+
|
|
12
|
+
lint:
|
|
13
|
+
@python3 -m compileall -q src tests
|
|
14
|
+
@echo "syntax OK"
|
|
15
|
+
|
|
16
|
+
build:
|
|
17
|
+
@rm -rf dist
|
|
18
|
+
@python3 -m build
|
|
19
|
+
@python3 -m twine check --strict dist/*
|
|
20
|
+
|
|
21
|
+
clean:
|
|
22
|
+
@rm -rf dist build
|
|
23
|
+
@find . -name '*.egg-info' -type d -exec rm -rf {} + 2>/dev/null || true
|
|
24
|
+
@find . -name __pycache__ -type d -exec rm -rf {} + 2>/dev/null || true
|
|
25
|
+
@find . -name '*.pyc' -delete 2>/dev/null || true
|