sora-pro-cli 2026.3.18.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.
@@ -0,0 +1,5 @@
1
+ # Sora CLI Environment
2
+ ACEDATACLOUD_API_TOKEN=your_api_token_here
3
+ # ACEDATACLOUD_API_BASE_URL=https://api.acedata.cloud
4
+ # SORA_DEFAULT_MODEL=sora-2
5
+ # SORA_REQUEST_TIMEOUT=1800
@@ -0,0 +1,32 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Distribution / packaging
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ *.egg
11
+
12
+ # Virtual environments
13
+ .venv/
14
+ venv/
15
+ ENV/
16
+
17
+ # Environment variables
18
+ .env
19
+
20
+ # IDE
21
+ .vscode/
22
+ .idea/
23
+ *.swp
24
+ *.swo
25
+
26
+ # Testing
27
+ .coverage
28
+ htmlcov/
29
+ .pytest_cache/
30
+
31
+ # mypy
32
+ .mypy_cache/
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Calendar Versioning](https://calver.org/) (YYYY.MM.DD.BUILD).
7
+
8
+ ## [0.1.0] - 2026-03-18
9
+
10
+ ### Added
11
+ - Initial release
12
+ - Sora video generation from text prompts
13
+ - Image-to-video generation
14
+ - Task management with polling
15
+ - Rich terminal output with tables and panels
16
+ - JSON output mode (`--json` flag)
17
+ - Multiple model support
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AceDataCloud
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,265 @@
1
+ Metadata-Version: 2.1
2
+ Name: sora-pro-cli
3
+ Version: 2026.3.18.0
4
+ Summary: CLI tool for Sora AI Video Generation via AceDataCloud API
5
+ Project-URL: Homepage, https://github.com/AceDataCloud/SoraCli
6
+ Project-URL: Repository, https://github.com/AceDataCloud/SoraCli
7
+ Project-URL: Issues, https://github.com/AceDataCloud/SoraCli/issues
8
+ Project-URL: Changelog, https://github.com/AceDataCloud/SoraCli/blob/main/CHANGELOG.md
9
+ Author-email: AceDataCloud <support@acedata.cloud>
10
+ Maintainer-email: AceDataCloud <support@acedata.cloud>
11
+ License: MIT
12
+ License-File: LICENSE
13
+ Keywords: acedata,ai,cli,command-line,generation,sora,video
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Multimedia :: Video
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Requires-Python: >=3.10
26
+ Requires-Dist: click>=8.1.0
27
+ Requires-Dist: httpx>=0.27.0
28
+ Requires-Dist: pydantic>=2.0.0
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: rich>=13.0.0
31
+ Provides-Extra: all
32
+ Requires-Dist: sora-cli[dev,release,test]; extra == 'all'
33
+ Provides-Extra: dev
34
+ Requires-Dist: mypy>=1.10.0; extra == 'dev'
35
+ Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
36
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
37
+ Provides-Extra: release
38
+ Requires-Dist: build>=1.2.0; extra == 'release'
39
+ Requires-Dist: twine>=6.1.0; extra == 'release'
40
+ Provides-Extra: test
41
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'test'
42
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
43
+ Requires-Dist: pytest>=8.0.0; extra == 'test'
44
+ Requires-Dist: respx>=0.21.0; extra == 'test'
45
+ Description-Content-Type: text/markdown
46
+
47
+ # Sora CLI
48
+
49
+ [![PyPI version](https://img.shields.io/pypi/v/sora-pro-cli.svg)](https://pypi.org/project/sora-pro-cli/)
50
+ [![PyPI downloads](https://img.shields.io/pypi/dm/sora-pro-cli.svg)](https://pypi.org/project/sora-pro-cli/)
51
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
52
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
53
+ [![CI](https://github.com/AceDataCloud/SoraCli/actions/workflows/ci.yaml/badge.svg)](https://github.com/AceDataCloud/SoraCli/actions/workflows/ci.yaml)
54
+
55
+ A command-line tool for AI video generation using [Sora](https://platform.acedata.cloud/) through the [AceDataCloud API](https://platform.acedata.cloud/).
56
+
57
+ Generate AI videos directly from your terminal — no MCP client required.
58
+
59
+ ## Features
60
+
61
+ - **Video Generation** — Generate videos from text prompts with multiple models
62
+ - **Image-to-Video** — Create videos from reference images
63
+ - **Multiple Models** — sora-2, sora-2-pro
64
+ - **Task Management** — Query tasks, batch query, wait with polling
65
+ - **Rich Output** — Beautiful terminal tables and panels via Rich
66
+ - **JSON Mode** — Machine-readable output with `--json` for piping
67
+
68
+ ## Quick Start
69
+
70
+ ### 1. Get API Token
71
+
72
+ Get your API token from [AceDataCloud Platform](https://platform.acedata.cloud/):
73
+
74
+ 1. Sign up or log in
75
+ 2. Navigate to the Sora API page
76
+ 3. Click "Acquire" to get your token
77
+
78
+ ### 2. Install
79
+
80
+ ```bash
81
+ # Install with pip
82
+ pip install sora-pro-cli
83
+
84
+ # Or with uv (recommended)
85
+ uv pip install sora-pro-cli
86
+
87
+ # Or from source
88
+ git clone https://github.com/AceDataCloud/SoraCli.git
89
+ cd SoraCli
90
+ pip install -e .
91
+ ```
92
+
93
+ ### 3. Configure
94
+
95
+ ```bash
96
+ # Set your API token
97
+ export ACEDATACLOUD_API_TOKEN=your_token_here
98
+
99
+ # Or use .env file
100
+ cp .env.example .env
101
+ # Edit .env with your token
102
+ ```
103
+
104
+ ### 4. Use
105
+
106
+ ```bash
107
+ # Generate a video
108
+ sora generate "A test video"
109
+
110
+ # Generate from reference image
111
+ sora image-to-video "Animate this scene" -i https://example.com/photo.jpg
112
+
113
+ # Check task status
114
+ sora task <task-id>
115
+
116
+ # Wait for completion
117
+ sora wait <task-id> --interval 5
118
+
119
+ # List available models
120
+ sora models
121
+ ```
122
+
123
+ ## Commands
124
+
125
+ | Command | Description |
126
+ |---------|-------------|
127
+ | `sora generate <prompt>` | Generate a video from a text prompt |
128
+ | `sora image-to-video <prompt> -i <url>` | Generate a video from reference image(s) |
129
+ | `sora task <task_id>` | Query a single task status |
130
+ | `sora tasks <id1> <id2>...` | Query multiple tasks at once |
131
+ | `sora wait <task_id>` | Wait for task completion with polling |
132
+ | `sora models` | List available Sora models |
133
+ | `sora config` | Show current configuration |
134
+ | `sora orientations` | List available orientations |
135
+ | `sora sizes` | List available video sizes |
136
+
137
+
138
+ ## Global Options
139
+
140
+ ```
141
+ --token TEXT API token (or set ACEDATACLOUD_API_TOKEN env var)
142
+ --version Show version
143
+ --help Show help message
144
+ ```
145
+
146
+ Most commands support:
147
+
148
+ ```
149
+ --json Output raw JSON (for piping/scripting)
150
+ --model TEXT Sora model version (default: sora-2)
151
+ ```
152
+
153
+ ## Available Models
154
+
155
+ | Model | Version | Notes |
156
+ |-------|---------|-------|
157
+ | `sora-2` | Standard | Fast generation, good quality (default) |
158
+ | `sora-2-pro` | Pro | Highest quality, more detailed |
159
+
160
+
161
+ ## Configuration
162
+
163
+ ### Environment Variables
164
+
165
+ | Variable | Description | Default |
166
+ |----------|-------------|---------|
167
+ | `ACEDATACLOUD_API_TOKEN` | API token from AceDataCloud | *Required* |
168
+ | `ACEDATACLOUD_API_BASE_URL` | API base URL | `https://api.acedata.cloud` |
169
+ | `SORA_DEFAULT_MODEL` | Default model | `sora-2` |
170
+ | `SORA_REQUEST_TIMEOUT` | Timeout in seconds | `1800` |
171
+
172
+ ## Development
173
+
174
+ ### Setup Development Environment
175
+
176
+ ```bash
177
+ git clone https://github.com/AceDataCloud/SoraCli.git
178
+ cd SoraCli
179
+ python -m venv .venv
180
+ source .venv/bin/activate
181
+ pip install -e ".[dev,test]"
182
+ ```
183
+
184
+ ### Run Tests
185
+
186
+ ```bash
187
+ pytest
188
+ pytest --cov=sora_cli
189
+ pytest tests/test_integration.py -m integration
190
+ ```
191
+
192
+ ### Code Quality
193
+
194
+ ```bash
195
+ ruff format .
196
+ ruff check .
197
+ mypy sora_cli
198
+ ```
199
+
200
+ ## Docker
201
+
202
+ ```bash
203
+ docker pull ghcr.io/acedatacloud/sora-pro-cli:latest
204
+ docker run --rm -e ACEDATACLOUD_API_TOKEN=your_token \
205
+ ghcr.io/acedatacloud/sora-pro-cli generate "A test video"
206
+ ```
207
+
208
+ ## Project Structure
209
+
210
+ ```
211
+ SoraCli/
212
+ ├── sora_cli/ # Main package
213
+ │ ├── __init__.py
214
+ │ ├── __main__.py # python -m sora_cli entry point
215
+ │ ├── main.py # CLI entry point
216
+ │ ├── core/ # Core modules
217
+ │ │ ├── client.py # HTTP client for Sora API
218
+ │ │ ├── config.py # Configuration management
219
+ │ │ ├── exceptions.py # Custom exceptions
220
+ │ │ └── output.py # Rich terminal formatting
221
+ │ └── commands/ # CLI command groups
222
+ │ ├── video.py # Video generation commands
223
+ │ ├── task.py # Task management commands
224
+ │ └── info.py # Info & utility commands
225
+ ├── tests/ # Test suite
226
+ ├── .github/workflows/ # CI/CD (lint, test, publish to PyPI)
227
+ ├── Dockerfile # Container image
228
+ ├── deploy/ # Kubernetes deployment configs
229
+ ├── .env.example # Environment template
230
+ ├── pyproject.toml # Project configuration
231
+ └── README.md
232
+ ```
233
+
234
+ ## Sora CLI vs MCP Sora
235
+
236
+ | Feature | Sora CLI | MCP Sora |
237
+ |---------|-----------|-----------|
238
+ | Interface | Terminal commands | MCP protocol |
239
+ | Usage | Direct shell, scripts, CI/CD | Claude, VS Code, MCP clients |
240
+ | Output | Rich tables / JSON | Structured MCP responses |
241
+ | Automation | Shell scripts, piping | AI agent workflows |
242
+ | Install | `pip install sora-pro-cli` | `pip install mcp-sora` |
243
+
244
+ Both tools use the same AceDataCloud API and share the same API token.
245
+
246
+ ## Contributing
247
+
248
+ Contributions are welcome! Please:
249
+
250
+ 1. Fork the repository
251
+ 2. Create a feature branch (`git checkout -b feature/amazing`)
252
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
253
+ 4. Push to the branch (`git push origin feature/amazing`)
254
+ 5. Open a Pull Request
255
+
256
+ ### Development Requirements
257
+
258
+ - Python 3.10+
259
+ - Dependencies: `pip install -e ".[all]"`
260
+ - Lint: `ruff check . && ruff format --check .`
261
+ - Test: `pytest`
262
+
263
+ ## License
264
+
265
+ This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,219 @@
1
+ # Sora CLI
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/sora-pro-cli.svg)](https://pypi.org/project/sora-pro-cli/)
4
+ [![PyPI downloads](https://img.shields.io/pypi/dm/sora-pro-cli.svg)](https://pypi.org/project/sora-pro-cli/)
5
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![CI](https://github.com/AceDataCloud/SoraCli/actions/workflows/ci.yaml/badge.svg)](https://github.com/AceDataCloud/SoraCli/actions/workflows/ci.yaml)
8
+
9
+ A command-line tool for AI video generation using [Sora](https://platform.acedata.cloud/) through the [AceDataCloud API](https://platform.acedata.cloud/).
10
+
11
+ Generate AI videos directly from your terminal — no MCP client required.
12
+
13
+ ## Features
14
+
15
+ - **Video Generation** — Generate videos from text prompts with multiple models
16
+ - **Image-to-Video** — Create videos from reference images
17
+ - **Multiple Models** — sora-2, sora-2-pro
18
+ - **Task Management** — Query tasks, batch query, wait with polling
19
+ - **Rich Output** — Beautiful terminal tables and panels via Rich
20
+ - **JSON Mode** — Machine-readable output with `--json` for piping
21
+
22
+ ## Quick Start
23
+
24
+ ### 1. Get API Token
25
+
26
+ Get your API token from [AceDataCloud Platform](https://platform.acedata.cloud/):
27
+
28
+ 1. Sign up or log in
29
+ 2. Navigate to the Sora API page
30
+ 3. Click "Acquire" to get your token
31
+
32
+ ### 2. Install
33
+
34
+ ```bash
35
+ # Install with pip
36
+ pip install sora-pro-cli
37
+
38
+ # Or with uv (recommended)
39
+ uv pip install sora-pro-cli
40
+
41
+ # Or from source
42
+ git clone https://github.com/AceDataCloud/SoraCli.git
43
+ cd SoraCli
44
+ pip install -e .
45
+ ```
46
+
47
+ ### 3. Configure
48
+
49
+ ```bash
50
+ # Set your API token
51
+ export ACEDATACLOUD_API_TOKEN=your_token_here
52
+
53
+ # Or use .env file
54
+ cp .env.example .env
55
+ # Edit .env with your token
56
+ ```
57
+
58
+ ### 4. Use
59
+
60
+ ```bash
61
+ # Generate a video
62
+ sora generate "A test video"
63
+
64
+ # Generate from reference image
65
+ sora image-to-video "Animate this scene" -i https://example.com/photo.jpg
66
+
67
+ # Check task status
68
+ sora task <task-id>
69
+
70
+ # Wait for completion
71
+ sora wait <task-id> --interval 5
72
+
73
+ # List available models
74
+ sora models
75
+ ```
76
+
77
+ ## Commands
78
+
79
+ | Command | Description |
80
+ |---------|-------------|
81
+ | `sora generate <prompt>` | Generate a video from a text prompt |
82
+ | `sora image-to-video <prompt> -i <url>` | Generate a video from reference image(s) |
83
+ | `sora task <task_id>` | Query a single task status |
84
+ | `sora tasks <id1> <id2>...` | Query multiple tasks at once |
85
+ | `sora wait <task_id>` | Wait for task completion with polling |
86
+ | `sora models` | List available Sora models |
87
+ | `sora config` | Show current configuration |
88
+ | `sora orientations` | List available orientations |
89
+ | `sora sizes` | List available video sizes |
90
+
91
+
92
+ ## Global Options
93
+
94
+ ```
95
+ --token TEXT API token (or set ACEDATACLOUD_API_TOKEN env var)
96
+ --version Show version
97
+ --help Show help message
98
+ ```
99
+
100
+ Most commands support:
101
+
102
+ ```
103
+ --json Output raw JSON (for piping/scripting)
104
+ --model TEXT Sora model version (default: sora-2)
105
+ ```
106
+
107
+ ## Available Models
108
+
109
+ | Model | Version | Notes |
110
+ |-------|---------|-------|
111
+ | `sora-2` | Standard | Fast generation, good quality (default) |
112
+ | `sora-2-pro` | Pro | Highest quality, more detailed |
113
+
114
+
115
+ ## Configuration
116
+
117
+ ### Environment Variables
118
+
119
+ | Variable | Description | Default |
120
+ |----------|-------------|---------|
121
+ | `ACEDATACLOUD_API_TOKEN` | API token from AceDataCloud | *Required* |
122
+ | `ACEDATACLOUD_API_BASE_URL` | API base URL | `https://api.acedata.cloud` |
123
+ | `SORA_DEFAULT_MODEL` | Default model | `sora-2` |
124
+ | `SORA_REQUEST_TIMEOUT` | Timeout in seconds | `1800` |
125
+
126
+ ## Development
127
+
128
+ ### Setup Development Environment
129
+
130
+ ```bash
131
+ git clone https://github.com/AceDataCloud/SoraCli.git
132
+ cd SoraCli
133
+ python -m venv .venv
134
+ source .venv/bin/activate
135
+ pip install -e ".[dev,test]"
136
+ ```
137
+
138
+ ### Run Tests
139
+
140
+ ```bash
141
+ pytest
142
+ pytest --cov=sora_cli
143
+ pytest tests/test_integration.py -m integration
144
+ ```
145
+
146
+ ### Code Quality
147
+
148
+ ```bash
149
+ ruff format .
150
+ ruff check .
151
+ mypy sora_cli
152
+ ```
153
+
154
+ ## Docker
155
+
156
+ ```bash
157
+ docker pull ghcr.io/acedatacloud/sora-pro-cli:latest
158
+ docker run --rm -e ACEDATACLOUD_API_TOKEN=your_token \
159
+ ghcr.io/acedatacloud/sora-pro-cli generate "A test video"
160
+ ```
161
+
162
+ ## Project Structure
163
+
164
+ ```
165
+ SoraCli/
166
+ ├── sora_cli/ # Main package
167
+ │ ├── __init__.py
168
+ │ ├── __main__.py # python -m sora_cli entry point
169
+ │ ├── main.py # CLI entry point
170
+ │ ├── core/ # Core modules
171
+ │ │ ├── client.py # HTTP client for Sora API
172
+ │ │ ├── config.py # Configuration management
173
+ │ │ ├── exceptions.py # Custom exceptions
174
+ │ │ └── output.py # Rich terminal formatting
175
+ │ └── commands/ # CLI command groups
176
+ │ ├── video.py # Video generation commands
177
+ │ ├── task.py # Task management commands
178
+ │ └── info.py # Info & utility commands
179
+ ├── tests/ # Test suite
180
+ ├── .github/workflows/ # CI/CD (lint, test, publish to PyPI)
181
+ ├── Dockerfile # Container image
182
+ ├── deploy/ # Kubernetes deployment configs
183
+ ├── .env.example # Environment template
184
+ ├── pyproject.toml # Project configuration
185
+ └── README.md
186
+ ```
187
+
188
+ ## Sora CLI vs MCP Sora
189
+
190
+ | Feature | Sora CLI | MCP Sora |
191
+ |---------|-----------|-----------|
192
+ | Interface | Terminal commands | MCP protocol |
193
+ | Usage | Direct shell, scripts, CI/CD | Claude, VS Code, MCP clients |
194
+ | Output | Rich tables / JSON | Structured MCP responses |
195
+ | Automation | Shell scripts, piping | AI agent workflows |
196
+ | Install | `pip install sora-pro-cli` | `pip install mcp-sora` |
197
+
198
+ Both tools use the same AceDataCloud API and share the same API token.
199
+
200
+ ## Contributing
201
+
202
+ Contributions are welcome! Please:
203
+
204
+ 1. Fork the repository
205
+ 2. Create a feature branch (`git checkout -b feature/amazing`)
206
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
207
+ 4. Push to the branch (`git push origin feature/amazing`)
208
+ 5. Open a Pull Request
209
+
210
+ ### Development Requirements
211
+
212
+ - Python 3.10+
213
+ - Dependencies: `pip install -e ".[all]"`
214
+ - Lint: `ruff check . && ruff format --check .`
215
+ - Test: `pytest`
216
+
217
+ ## License
218
+
219
+ This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,119 @@
1
+ [project]
2
+ name = "sora-pro-cli"
3
+ version = "2026.3.18.0"
4
+ description = "CLI tool for Sora AI Video Generation via AceDataCloud API"
5
+ readme = "README.md"
6
+ license = { text = "MIT" }
7
+ requires-python = ">=3.10"
8
+ authors = [
9
+ { name = "AceDataCloud", email = "support@acedata.cloud" }
10
+ ]
11
+ maintainers = [
12
+ { name = "AceDataCloud", email = "support@acedata.cloud" }
13
+ ]
14
+ keywords = [
15
+ "cli",
16
+ "sora",
17
+ "ai",
18
+ "video",
19
+ "video",
20
+ "generation",
21
+ "acedata",
22
+ "command-line"
23
+ ]
24
+ classifiers = [
25
+ "Development Status :: 4 - Beta",
26
+ "Intended Audience :: Developers",
27
+ "License :: OSI Approved :: MIT License",
28
+ "Operating System :: OS Independent",
29
+ "Programming Language :: Python :: 3",
30
+ "Programming Language :: Python :: 3.10",
31
+ "Programming Language :: Python :: 3.11",
32
+ "Programming Language :: Python :: 3.12",
33
+ "Topic :: Multimedia :: Video",
34
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
35
+ "Environment :: Console",
36
+ ]
37
+ dependencies = [
38
+ "click>=8.1.0",
39
+ "httpx>=0.27.0",
40
+ "python-dotenv>=1.0.0",
41
+ "rich>=13.0.0",
42
+ "pydantic>=2.0.0",
43
+ ]
44
+
45
+ [project.optional-dependencies]
46
+ dev = [
47
+ "ruff>=0.4.0",
48
+ "mypy>=1.10.0",
49
+ "pre-commit>=3.7.0",
50
+ ]
51
+ test = [
52
+ "pytest>=8.0.0",
53
+ "pytest-asyncio>=0.23.0",
54
+ "pytest-cov>=5.0.0",
55
+ "respx>=0.21.0",
56
+ ]
57
+ release = [
58
+ "build>=1.2.0",
59
+ "twine>=6.1.0",
60
+ ]
61
+ all = [
62
+ "sora-cli[dev,test,release]",
63
+ ]
64
+
65
+ [project.scripts]
66
+ sora-cli = "sora_cli.main:cli"
67
+ sora = "sora_cli.main:cli"
68
+
69
+ [project.urls]
70
+ Homepage = "https://github.com/AceDataCloud/SoraCli"
71
+ Repository = "https://github.com/AceDataCloud/SoraCli"
72
+ Issues = "https://github.com/AceDataCloud/SoraCli/issues"
73
+ Changelog = "https://github.com/AceDataCloud/SoraCli/blob/main/CHANGELOG.md"
74
+
75
+ [build-system]
76
+ requires = ["hatchling>=1.21.0,<1.22.0"]
77
+ build-backend = "hatchling.build"
78
+
79
+ [tool.hatch.build.targets.wheel]
80
+ packages = ["sora_cli"]
81
+
82
+ [tool.hatch.build.targets.sdist]
83
+ include = [
84
+ "sora_cli/",
85
+ "tests/",
86
+ "README.md",
87
+ "LICENSE",
88
+ "CHANGELOG.md",
89
+ ".env.example",
90
+ ]
91
+
92
+ # Mypy Configuration
93
+ [tool.mypy]
94
+ python_version = "3.10"
95
+ warn_return_any = true
96
+ warn_unused_configs = true
97
+ disallow_untyped_defs = true
98
+ check_untyped_defs = true
99
+
100
+ # Pytest Configuration
101
+ [tool.pytest.ini_options]
102
+ testpaths = ["tests"]
103
+ asyncio_mode = "auto"
104
+ markers = [
105
+ "integration: marks tests that require real API access",
106
+ "slow: marks slow tests",
107
+ ]
108
+
109
+ # Ruff Configuration
110
+ [tool.ruff]
111
+ line-length = 100
112
+ target-version = "py310"
113
+
114
+ [tool.ruff.lint]
115
+ select = ["E", "W", "F", "I", "B", "C4", "UP", "ARG", "SIM"]
116
+ ignore = ["E501"]
117
+
118
+ [tool.ruff.format]
119
+ quote-style = "double"
@@ -0,0 +1 @@
1
+ """Sora CLI - AI Sora Video Generation via AceDataCloud API."""
@@ -0,0 +1,5 @@
1
+ """Allow running as python -m sora_cli."""
2
+
3
+ from sora_cli.main import cli
4
+
5
+ cli()
@@ -0,0 +1 @@
1
+ """Sora CLI command modules."""