typed-ffmpeg-compatible 3.5.1__tar.gz → 3.6__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.
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/MANIFEST.in +1 -1
- {typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg_compatible.egg-info → typed_ffmpeg_compatible-3.6}/PKG-INFO +1 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/pyproject.toml +17 -0
- typed_ffmpeg_compatible-3.6/requirements.txt +435 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/__init__.py +4 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/_version.py +2 -2
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/base.py +4 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/__init__.py +2 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/decoders.py +1852 -1853
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/encoders.py +2001 -1782
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/codecs/schema.py +11 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/common/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/cache.py +9 -6
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/schema.py +11 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/serialize.py +13 -7
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/compile/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_cli.py +55 -8
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_json.py +4 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_python.py +15 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/context.py +15 -4
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/validate.py +9 -8
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/factory.py +2 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/dag/global_runnable/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/global_runnable/global_args.py +2 -2
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/global_runnable/runnable.py +51 -11
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/dag/io/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/_input.py +20 -5
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/_output.py +24 -9
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/output_args.py +21 -7
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/nodes.py +20 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/schema.py +19 -6
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/utils.py +2 -2
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/exceptions.py +2 -1
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/expressions.py +884 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/ffprobe/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/parse.py +7 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/probe.py +3 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/schema.py +83 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/xml2json.py +8 -2
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/filters.py +540 -631
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/__init__.py +2 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/demuxers.py +1869 -1921
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/muxers.py +1382 -1107
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/formats/schema.py +11 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/info.py +8 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/__init__.py +15 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/codec.py +711 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/format.py +196 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/framesync.py +43 -0
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/timeline.py +22 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/schema.py +15 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/sources.py +392 -381
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/__init__.py +2 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/audio.py +1071 -882
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/av.py +9 -3
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/subtitle.py +3 -3
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/video.py +1873 -1725
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/types.py +3 -2
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/utils/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/escaping.py +8 -4
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/frozendict.py +31 -1
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/utils/lazy_eval/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/lazy_eval/operator.py +75 -27
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/lazy_eval/schema.py +176 -4
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/run.py +2 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/snapshot.py +3 -2
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/typing.py +2 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/view.py +2 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6/src/typed_ffmpeg_compatible.egg-info}/PKG-INFO +1 -1
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/SOURCES.txt +7 -0
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/codecs/schema.py +0 -17
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/common/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/compile/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/dag/global_runnable/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/dag/io/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/ffprobe/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/formats/schema.py +0 -17
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/utils/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.1/src/typed_ffmpeg/utils/lazy_eval/__init__.py +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/LICENSE +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/README.md +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/setup.cfg +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/__init__.py +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/py.typed +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/channel_layout.py +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/dependency_links.txt +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/entry_points.txt +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/requires.txt +0 -0
- {typed_ffmpeg_compatible-3.5.1 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/top_level.txt +0 -0
@@ -19,7 +19,7 @@ global-exclude codecov.yml
|
|
19
19
|
global-exclude mkdocs.yml
|
20
20
|
global-exclude pyproject-compatible.toml
|
21
21
|
global-exclude requirements.in
|
22
|
-
global-exclude requirements.
|
22
|
+
global-exclude requirements.in
|
23
23
|
global-exclude tox.ini
|
24
24
|
global-exclude uv.lock
|
25
25
|
global-exclude README.ipynb
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: typed-ffmpeg-compatible
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.6
|
4
4
|
Summary: Modern Python FFmpeg wrappers offer comprehensive support for complex filters, complete with detailed typing and documentation.
|
5
5
|
Author-email: lucemia <lucemia@gmail.com>
|
6
6
|
License-Expression: MIT
|
@@ -101,9 +101,12 @@ disallow_untyped_defs = true
|
|
101
101
|
line-length = 88
|
102
102
|
exclude = ["**/cassettes/", "**/__snapshots__/"]
|
103
103
|
src = ["src"]
|
104
|
+
preview = true
|
104
105
|
|
105
106
|
[tool.ruff.lint]
|
106
107
|
select = [
|
108
|
+
"DOC",
|
109
|
+
"D", # docstring
|
107
110
|
"E", # pycodestyle errors
|
108
111
|
"W", # pycodestyle warnings
|
109
112
|
"F", # pyflakes
|
@@ -113,6 +116,11 @@ select = [
|
|
113
116
|
"UP", # pyupgrade
|
114
117
|
]
|
115
118
|
ignore = [
|
119
|
+
"D417",
|
120
|
+
"D401",
|
121
|
+
"D203",
|
122
|
+
"D212",
|
123
|
+
"DOC502",
|
116
124
|
"E741", # Ambiguous variable name: `I`
|
117
125
|
"E501", # Line too long
|
118
126
|
"E402", # Module level import not at top of file
|
@@ -120,6 +128,15 @@ ignore = [
|
|
120
128
|
"F811", # FIXME: we relay on it to share fixture across app
|
121
129
|
]
|
122
130
|
|
131
|
+
[tool.ruff.lint.per-file-ignores]
|
132
|
+
"**/tests/**.py" = ["D103", "D104", "D100"]
|
133
|
+
|
123
134
|
[tool.ruff.format]
|
124
135
|
quote-style = "double"
|
125
136
|
docstring-code-format = true
|
137
|
+
|
138
|
+
[tool.pytest.ini_options]
|
139
|
+
markers = [
|
140
|
+
"dev_only: marks tests to be run only on the main branch"
|
141
|
+
]
|
142
|
+
addopts = "--cov-report=term-missing"
|
@@ -0,0 +1,435 @@
|
|
1
|
+
# This file was autogenerated by uv via the following command:
|
2
|
+
# uv pip compile requirements.in
|
3
|
+
asttokens==2.4.1
|
4
|
+
# via
|
5
|
+
# devtools
|
6
|
+
# stack-data
|
7
|
+
attrs==25.3.0
|
8
|
+
# via
|
9
|
+
# jsonschema
|
10
|
+
# referencing
|
11
|
+
babel==2.17.0
|
12
|
+
# via mkdocs-material
|
13
|
+
backports-tarfile==1.2.0
|
14
|
+
# via jaraco-context
|
15
|
+
backrefs==5.9
|
16
|
+
# via mkdocs-material
|
17
|
+
beautifulsoup4==4.13.4
|
18
|
+
# via
|
19
|
+
# -r requirements.in
|
20
|
+
# nbconvert
|
21
|
+
black==25.1.0
|
22
|
+
# via -r requirements.in
|
23
|
+
bleach[css]==6.2.0
|
24
|
+
# via nbconvert
|
25
|
+
build==1.2.2.post1
|
26
|
+
# via -r requirements.in
|
27
|
+
certifi==2025.6.15
|
28
|
+
# via requests
|
29
|
+
cffi==1.17.1
|
30
|
+
# via cryptography
|
31
|
+
cfgv==3.4.0
|
32
|
+
# via pre-commit
|
33
|
+
charset-normalizer==3.4.2
|
34
|
+
# via requests
|
35
|
+
click==8.2.1
|
36
|
+
# via
|
37
|
+
# black
|
38
|
+
# mkdocs
|
39
|
+
# typer
|
40
|
+
colorama==0.4.6
|
41
|
+
# via
|
42
|
+
# griffe
|
43
|
+
# mkdocs-material
|
44
|
+
comm==0.2.2
|
45
|
+
# via ipykernel
|
46
|
+
coverage[toml]==7.8.2
|
47
|
+
# via pytest-cov
|
48
|
+
cryptography==45.0.4
|
49
|
+
# via secretstorage
|
50
|
+
debugpy==1.8.14
|
51
|
+
# via ipykernel
|
52
|
+
decorator==5.2.1
|
53
|
+
# via ipython
|
54
|
+
defusedxml==0.7.1
|
55
|
+
# via nbconvert
|
56
|
+
devtools==0.12.2
|
57
|
+
# via -r requirements.in
|
58
|
+
distlib==0.3.9
|
59
|
+
# via virtualenv
|
60
|
+
docutils==0.21.2
|
61
|
+
# via readme-renderer
|
62
|
+
exceptiongroup==1.3.0
|
63
|
+
# via
|
64
|
+
# ipython
|
65
|
+
# pytest
|
66
|
+
executing==2.2.0
|
67
|
+
# via
|
68
|
+
# devtools
|
69
|
+
# stack-data
|
70
|
+
fastjsonschema==2.21.1
|
71
|
+
# via nbformat
|
72
|
+
filelock==3.18.0
|
73
|
+
# via virtualenv
|
74
|
+
ghp-import==2.1.0
|
75
|
+
# via mkdocs
|
76
|
+
gitdb==4.0.12
|
77
|
+
# via gitpython
|
78
|
+
gitpython==3.1.44
|
79
|
+
# via mknotebooks
|
80
|
+
graphviz==0.21 ; platform_system != "Windows"
|
81
|
+
# via -r requirements.in
|
82
|
+
griffe==1.7.3
|
83
|
+
# via
|
84
|
+
# griffe-inherited-docstrings
|
85
|
+
# mkdocstrings-python
|
86
|
+
griffe-inherited-docstrings==1.1.1
|
87
|
+
# via -r requirements.in
|
88
|
+
html2text==2025.4.15
|
89
|
+
# via -r requirements.in
|
90
|
+
id==1.5.0
|
91
|
+
# via twine
|
92
|
+
identify==2.6.12
|
93
|
+
# via pre-commit
|
94
|
+
idna==3.10
|
95
|
+
# via
|
96
|
+
# requests
|
97
|
+
# yarl
|
98
|
+
importlib-metadata==8.7.0
|
99
|
+
# via keyring
|
100
|
+
iniconfig==2.1.0
|
101
|
+
# via pytest
|
102
|
+
ipykernel==6.27.1
|
103
|
+
# via -r requirements.in
|
104
|
+
ipython==8.37.0
|
105
|
+
# via ipykernel
|
106
|
+
jaraco-classes==3.4.0
|
107
|
+
# via keyring
|
108
|
+
jaraco-context==6.0.1
|
109
|
+
# via keyring
|
110
|
+
jaraco-functools==4.2.1
|
111
|
+
# via keyring
|
112
|
+
jedi==0.19.2
|
113
|
+
# via ipython
|
114
|
+
jeepney==0.9.0
|
115
|
+
# via
|
116
|
+
# keyring
|
117
|
+
# secretstorage
|
118
|
+
jinja2==3.1.6
|
119
|
+
# via
|
120
|
+
# -r requirements.in
|
121
|
+
# mkdocs
|
122
|
+
# mkdocs-material
|
123
|
+
# mkdocstrings
|
124
|
+
# nbconvert
|
125
|
+
jsonschema==4.24.0
|
126
|
+
# via nbformat
|
127
|
+
jsonschema-specifications==2025.4.1
|
128
|
+
# via jsonschema
|
129
|
+
jupyter-client==8.6.3
|
130
|
+
# via
|
131
|
+
# ipykernel
|
132
|
+
# mknotebooks
|
133
|
+
# nbclient
|
134
|
+
jupyter-core==5.8.1
|
135
|
+
# via
|
136
|
+
# ipykernel
|
137
|
+
# jupyter-client
|
138
|
+
# nbclient
|
139
|
+
# nbconvert
|
140
|
+
# nbformat
|
141
|
+
jupyterlab-pygments==0.3.0
|
142
|
+
# via nbconvert
|
143
|
+
keyring==25.6.0
|
144
|
+
# via twine
|
145
|
+
lxml==6.0.0
|
146
|
+
# via -r requirements.in
|
147
|
+
markdown==3.8.2
|
148
|
+
# via
|
149
|
+
# markdown-callouts
|
150
|
+
# mkdocs
|
151
|
+
# mkdocs-autorefs
|
152
|
+
# mkdocs-material
|
153
|
+
# mkdocstrings
|
154
|
+
# mknotebooks
|
155
|
+
# pymdown-extensions
|
156
|
+
markdown-callouts==0.4.0
|
157
|
+
# via -r requirements.in
|
158
|
+
markdown-it-py==3.0.0
|
159
|
+
# via rich
|
160
|
+
markupsafe==3.0.2
|
161
|
+
# via
|
162
|
+
# jinja2
|
163
|
+
# mkdocs
|
164
|
+
# mkdocs-autorefs
|
165
|
+
# mkdocstrings
|
166
|
+
# nbconvert
|
167
|
+
matplotlib-inline==0.1.7
|
168
|
+
# via
|
169
|
+
# ipykernel
|
170
|
+
# ipython
|
171
|
+
mdurl==0.1.2
|
172
|
+
# via markdown-it-py
|
173
|
+
mergedeep==1.3.4
|
174
|
+
# via
|
175
|
+
# mkdocs
|
176
|
+
# mkdocs-get-deps
|
177
|
+
mistune==3.1.3
|
178
|
+
# via nbconvert
|
179
|
+
mkdocs==1.6.1
|
180
|
+
# via
|
181
|
+
# -r requirements.in
|
182
|
+
# mkdocs-autorefs
|
183
|
+
# mkdocs-gen-files
|
184
|
+
# mkdocs-literate-nav
|
185
|
+
# mkdocs-material
|
186
|
+
# mkdocs-section-index
|
187
|
+
# mkdocstrings
|
188
|
+
# mknotebooks
|
189
|
+
mkdocs-autorefs==1.4.2
|
190
|
+
# via
|
191
|
+
# mkdocstrings
|
192
|
+
# mkdocstrings-python
|
193
|
+
mkdocs-gen-files==0.5.0
|
194
|
+
# via -r requirements.in
|
195
|
+
mkdocs-get-deps==0.2.0
|
196
|
+
# via mkdocs
|
197
|
+
mkdocs-literate-nav==0.6.2
|
198
|
+
# via -r requirements.in
|
199
|
+
mkdocs-material==9.6.14
|
200
|
+
# via -r requirements.in
|
201
|
+
mkdocs-material-extensions==1.3.1
|
202
|
+
# via mkdocs-material
|
203
|
+
mkdocs-section-index==0.3.10
|
204
|
+
# via -r requirements.in
|
205
|
+
mkdocstrings==0.29.1
|
206
|
+
# via
|
207
|
+
# -r requirements.in
|
208
|
+
# mkdocstrings-python
|
209
|
+
mkdocstrings-python==1.16.12
|
210
|
+
# via -r requirements.in
|
211
|
+
mknotebooks==0.8.0
|
212
|
+
# via -r requirements.in
|
213
|
+
more-itertools==10.7.0
|
214
|
+
# via
|
215
|
+
# jaraco-classes
|
216
|
+
# jaraco-functools
|
217
|
+
multidict==6.6.2
|
218
|
+
# via yarl
|
219
|
+
mypy-extensions==1.1.0
|
220
|
+
# via black
|
221
|
+
nbclient==0.10.2
|
222
|
+
# via nbconvert
|
223
|
+
nbconvert==7.16.6
|
224
|
+
# via mknotebooks
|
225
|
+
nbformat==5.10.4
|
226
|
+
# via
|
227
|
+
# nbclient
|
228
|
+
# nbconvert
|
229
|
+
nest-asyncio==1.6.0
|
230
|
+
# via ipykernel
|
231
|
+
nh3==0.2.21
|
232
|
+
# via readme-renderer
|
233
|
+
nodeenv==1.9.1
|
234
|
+
# via pre-commit
|
235
|
+
packaging==25.0
|
236
|
+
# via
|
237
|
+
# black
|
238
|
+
# build
|
239
|
+
# ipykernel
|
240
|
+
# mkdocs
|
241
|
+
# nbconvert
|
242
|
+
# pytest
|
243
|
+
# setuptools-scm
|
244
|
+
# twine
|
245
|
+
paginate==0.5.7
|
246
|
+
# via mkdocs-material
|
247
|
+
pandocfilters==1.5.1
|
248
|
+
# via nbconvert
|
249
|
+
parso==0.8.4
|
250
|
+
# via jedi
|
251
|
+
pathspec==0.12.1
|
252
|
+
# via
|
253
|
+
# black
|
254
|
+
# mkdocs
|
255
|
+
pexpect==4.9.0
|
256
|
+
# via ipython
|
257
|
+
platformdirs==4.3.8
|
258
|
+
# via
|
259
|
+
# black
|
260
|
+
# jupyter-core
|
261
|
+
# mkdocs-get-deps
|
262
|
+
# virtualenv
|
263
|
+
pluggy==1.6.0
|
264
|
+
# via
|
265
|
+
# pytest
|
266
|
+
# pytest-cov
|
267
|
+
pre-commit==4.2.0
|
268
|
+
# via -r requirements.in
|
269
|
+
prompt-toolkit==3.0.51
|
270
|
+
# via ipython
|
271
|
+
propcache==0.3.2
|
272
|
+
# via yarl
|
273
|
+
psutil==7.0.0
|
274
|
+
# via ipykernel
|
275
|
+
ptyprocess==0.7.0
|
276
|
+
# via pexpect
|
277
|
+
pure-eval==0.2.3
|
278
|
+
# via stack-data
|
279
|
+
pycparser==2.22
|
280
|
+
# via cffi
|
281
|
+
pygments==2.19.2
|
282
|
+
# via
|
283
|
+
# devtools
|
284
|
+
# ipython
|
285
|
+
# mkdocs-material
|
286
|
+
# nbconvert
|
287
|
+
# pytest
|
288
|
+
# readme-renderer
|
289
|
+
# rich
|
290
|
+
pymdown-extensions==10.16
|
291
|
+
# via
|
292
|
+
# -r requirements.in
|
293
|
+
# mkdocs-material
|
294
|
+
# mkdocstrings
|
295
|
+
pyproject-hooks==1.2.0
|
296
|
+
# via build
|
297
|
+
pytest==8.4.1
|
298
|
+
# via
|
299
|
+
# pytest-cov
|
300
|
+
# pytest-datadir
|
301
|
+
# pytest-recording
|
302
|
+
# syrupy
|
303
|
+
pytest-cov==6.2.1
|
304
|
+
# via -r requirements.in
|
305
|
+
pytest-datadir==1.7.2
|
306
|
+
# via -r requirements.in
|
307
|
+
pytest-recording==0.13.4
|
308
|
+
# via -r requirements.in
|
309
|
+
python-dateutil==2.9.0.post0
|
310
|
+
# via
|
311
|
+
# ghp-import
|
312
|
+
# jupyter-client
|
313
|
+
pyyaml==6.0.2
|
314
|
+
# via
|
315
|
+
# mkdocs
|
316
|
+
# mkdocs-get-deps
|
317
|
+
# pre-commit
|
318
|
+
# pymdown-extensions
|
319
|
+
# pyyaml-env-tag
|
320
|
+
# vcrpy
|
321
|
+
pyyaml-env-tag==1.1
|
322
|
+
# via mkdocs
|
323
|
+
pyzmq==27.0.0
|
324
|
+
# via
|
325
|
+
# ipykernel
|
326
|
+
# jupyter-client
|
327
|
+
readme-renderer==44.0
|
328
|
+
# via twine
|
329
|
+
referencing==0.36.2
|
330
|
+
# via
|
331
|
+
# jsonschema
|
332
|
+
# jsonschema-specifications
|
333
|
+
requests==2.32.4
|
334
|
+
# via
|
335
|
+
# id
|
336
|
+
# mkdocs-material
|
337
|
+
# requests-toolbelt
|
338
|
+
# twine
|
339
|
+
requests-toolbelt==1.0.0
|
340
|
+
# via twine
|
341
|
+
rfc3986==2.0.0
|
342
|
+
# via twine
|
343
|
+
rich==14.0.0
|
344
|
+
# via
|
345
|
+
# twine
|
346
|
+
# typer
|
347
|
+
rpds-py==0.25.1
|
348
|
+
# via
|
349
|
+
# jsonschema
|
350
|
+
# referencing
|
351
|
+
ruff==0.12.1
|
352
|
+
# via -r requirements.in
|
353
|
+
secretstorage==3.3.3
|
354
|
+
# via keyring
|
355
|
+
setuptools-scm==8.3.1
|
356
|
+
# via -r requirements.in
|
357
|
+
shellingham==1.5.4
|
358
|
+
# via typer
|
359
|
+
six==1.17.0
|
360
|
+
# via
|
361
|
+
# asttokens
|
362
|
+
# python-dateutil
|
363
|
+
smmap==5.0.2
|
364
|
+
# via gitdb
|
365
|
+
soupsieve==2.7
|
366
|
+
# via beautifulsoup4
|
367
|
+
stack-data==0.6.3
|
368
|
+
# via ipython
|
369
|
+
syrupy==4.9.1
|
370
|
+
# via -r requirements.in
|
371
|
+
tinycss2==1.4.0
|
372
|
+
# via bleach
|
373
|
+
tomli==2.2.1
|
374
|
+
# via
|
375
|
+
# black
|
376
|
+
# build
|
377
|
+
# coverage
|
378
|
+
# pytest
|
379
|
+
# setuptools-scm
|
380
|
+
tornado==6.5.1
|
381
|
+
# via
|
382
|
+
# ipykernel
|
383
|
+
# jupyter-client
|
384
|
+
traitlets==5.14.3
|
385
|
+
# via
|
386
|
+
# comm
|
387
|
+
# ipykernel
|
388
|
+
# ipython
|
389
|
+
# jupyter-client
|
390
|
+
# jupyter-core
|
391
|
+
# matplotlib-inline
|
392
|
+
# nbclient
|
393
|
+
# nbconvert
|
394
|
+
# nbformat
|
395
|
+
twine==6.1.0
|
396
|
+
# via -r requirements.in
|
397
|
+
ty==0.0.1a12
|
398
|
+
# via -r requirements.in
|
399
|
+
typer==0.16.0
|
400
|
+
# via -r requirements.in
|
401
|
+
typing-extensions==4.14.0
|
402
|
+
# via
|
403
|
+
# beautifulsoup4
|
404
|
+
# black
|
405
|
+
# exceptiongroup
|
406
|
+
# ipython
|
407
|
+
# mistune
|
408
|
+
# mkdocstrings-python
|
409
|
+
# multidict
|
410
|
+
# referencing
|
411
|
+
# rich
|
412
|
+
# typer
|
413
|
+
urllib3==2.5.0
|
414
|
+
# via
|
415
|
+
# requests
|
416
|
+
# twine
|
417
|
+
# vcrpy
|
418
|
+
vcrpy==7.0.0
|
419
|
+
# via pytest-recording
|
420
|
+
virtualenv==20.31.2
|
421
|
+
# via pre-commit
|
422
|
+
watchdog==6.0.0
|
423
|
+
# via mkdocs
|
424
|
+
wcwidth==0.2.13
|
425
|
+
# via prompt-toolkit
|
426
|
+
webencodings==0.5.1
|
427
|
+
# via
|
428
|
+
# bleach
|
429
|
+
# tinycss2
|
430
|
+
wrapt==1.17.2
|
431
|
+
# via vcrpy
|
432
|
+
yarl==1.20.1
|
433
|
+
# via vcrpy
|
434
|
+
zipp==3.23.0
|
435
|
+
# via importlib-metadata
|
@@ -20,9 +20,10 @@ Example:
|
|
20
20
|
# Simple video transcoding
|
21
21
|
(ffmpeg.input("input.mp4").output("output.mp4").run())
|
22
22
|
```
|
23
|
+
|
23
24
|
"""
|
24
25
|
|
25
|
-
from . import codecs, compile, dag, filters, formats, sources
|
26
|
+
from . import codecs, compile, dag, expressions, filters, formats, options, sources
|
26
27
|
from .base import afilter, filter_multi_output, input, merge_outputs, output, vfilter
|
27
28
|
from .dag import Stream
|
28
29
|
from .exceptions import FFMpegExecuteError, FFMpegTypeError, FFMpegValueError
|
@@ -56,4 +57,6 @@ __all__ = [
|
|
56
57
|
"get_codecs",
|
57
58
|
"get_decoders",
|
58
59
|
"get_encoders",
|
60
|
+
"options",
|
61
|
+
"expressions",
|
59
62
|
]
|
@@ -47,6 +47,7 @@ def merge_outputs(*streams: OutputStream) -> GlobalStream:
|
|
47
47
|
merged = ffmpeg.merge_outputs(output1, output2)
|
48
48
|
merged.run() # Executes both outputs in a single FFmpeg command
|
49
49
|
```
|
50
|
+
|
50
51
|
"""
|
51
52
|
return GlobalNode(inputs=streams).stream()
|
52
53
|
|
@@ -82,6 +83,7 @@ def vfilter(
|
|
82
83
|
Note:
|
83
84
|
This function is for custom filters not implemented in typed-ffmpeg.
|
84
85
|
Use the built-in filters from the filters module when available.
|
86
|
+
|
85
87
|
"""
|
86
88
|
return FilterNode(
|
87
89
|
name=name,
|
@@ -123,6 +125,7 @@ def afilter(
|
|
123
125
|
Note:
|
124
126
|
This function is for custom filters not implemented in typed-ffmpeg.
|
125
127
|
Use the built-in filters from the filters module when available.
|
128
|
+
|
126
129
|
"""
|
127
130
|
return FilterNode(
|
128
131
|
name=name,
|
@@ -171,8 +174,8 @@ def filter_multi_output(
|
|
171
174
|
Note:
|
172
175
|
This function is for custom filters not implemented in typed-ffmpeg.
|
173
176
|
Use the built-in filters from the filters module when available.
|
174
|
-
"""
|
175
177
|
|
178
|
+
"""
|
176
179
|
return FilterNode(
|
177
180
|
name=name,
|
178
181
|
kwargs=FrozenDict(kwargs),
|