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.
Files changed (58) hide show
  1. venice_cli-0.14.0/.gitignore +27 -0
  2. venice_cli-0.14.0/CONTRIBUTING.md +68 -0
  3. venice_cli-0.14.0/LICENSE +21 -0
  4. venice_cli-0.14.0/Makefile +25 -0
  5. venice_cli-0.14.0/PKG-INFO +654 -0
  6. venice_cli-0.14.0/README.md +619 -0
  7. venice_cli-0.14.0/SECURITY.md +46 -0
  8. venice_cli-0.14.0/bin/venice +24 -0
  9. venice_cli-0.14.0/install.sh +56 -0
  10. venice_cli-0.14.0/pyproject.toml +82 -0
  11. venice_cli-0.14.0/src/venice/__init__.py +1 -0
  12. venice_cli-0.14.0/src/venice/__main__.py +6 -0
  13. venice_cli-0.14.0/src/venice/audio_player.py +59 -0
  14. venice_cli-0.14.0/src/venice/audio_post.py +274 -0
  15. venice_cli-0.14.0/src/venice/auth.py +101 -0
  16. venice_cli-0.14.0/src/venice/billing.py +129 -0
  17. venice_cli-0.14.0/src/venice/cli.py +31 -0
  18. venice_cli-0.14.0/src/venice/client.py +258 -0
  19. venice_cli-0.14.0/src/venice/commands/__init__.py +22 -0
  20. venice_cli-0.14.0/src/venice/commands/_audio.py +96 -0
  21. venice_cli-0.14.0/src/venice/commands/_models.py +83 -0
  22. venice_cli-0.14.0/src/venice/commands/_openai.py +62 -0
  23. venice_cli-0.14.0/src/venice/commands/_queue.py +87 -0
  24. venice_cli-0.14.0/src/venice/commands/_shared.py +132 -0
  25. venice_cli-0.14.0/src/venice/commands/balance.py +124 -0
  26. venice_cli-0.14.0/src/venice/commands/bg_remove.py +126 -0
  27. venice_cli-0.14.0/src/venice/commands/chat.py +263 -0
  28. venice_cli-0.14.0/src/venice/commands/contact_sheet.py +59 -0
  29. venice_cli-0.14.0/src/venice/commands/embed.py +157 -0
  30. venice_cli-0.14.0/src/venice/commands/image.py +657 -0
  31. venice_cli-0.14.0/src/venice/commands/login.py +29 -0
  32. venice_cli-0.14.0/src/venice/commands/master.py +42 -0
  33. venice_cli-0.14.0/src/venice/commands/models.py +174 -0
  34. venice_cli-0.14.0/src/venice/commands/music.py +316 -0
  35. venice_cli-0.14.0/src/venice/commands/sfx.py +199 -0
  36. venice_cli-0.14.0/src/venice/commands/tts.py +362 -0
  37. venice_cli-0.14.0/src/venice/commands/upscale.py +177 -0
  38. venice_cli-0.14.0/src/venice/commands/video.py +298 -0
  39. venice_cli-0.14.0/src/venice/config.py +19 -0
  40. venice_cli-0.14.0/src/venice/image_montage.py +230 -0
  41. venice_cli-0.14.0/tests/__init__.py +0 -0
  42. venice_cli-0.14.0/tests/test_auth.py +71 -0
  43. venice_cli-0.14.0/tests/test_balance.py +154 -0
  44. venice_cli-0.14.0/tests/test_bg_remove.py +164 -0
  45. venice_cli-0.14.0/tests/test_chat.py +267 -0
  46. venice_cli-0.14.0/tests/test_client.py +160 -0
  47. venice_cli-0.14.0/tests/test_contact_sheet.py +217 -0
  48. venice_cli-0.14.0/tests/test_embed.py +223 -0
  49. venice_cli-0.14.0/tests/test_image.py +563 -0
  50. venice_cli-0.14.0/tests/test_master.py +210 -0
  51. venice_cli-0.14.0/tests/test_models.py +127 -0
  52. venice_cli-0.14.0/tests/test_music.py +323 -0
  53. venice_cli-0.14.0/tests/test_sfx.py +198 -0
  54. venice_cli-0.14.0/tests/test_shared_openai.py +200 -0
  55. venice_cli-0.14.0/tests/test_tts.py +201 -0
  56. venice_cli-0.14.0/tests/test_upscale.py +190 -0
  57. venice_cli-0.14.0/tests/test_video.py +220 -0
  58. 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