typed-ffmpeg-compatible 3.5.2__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.2/src/typed_ffmpeg_compatible.egg-info → typed_ffmpeg_compatible-3.6}/PKG-INFO +1 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/pyproject.toml +17 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/requirements.txt +7 -12
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/__init__.py +4 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/_version.py +2 -2
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/base.py +4 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/__init__.py +2 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/decoders.py +1852 -1853
- {typed_ffmpeg_compatible-3.5.2 → 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.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/cache.py +9 -6
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/schema.py +11 -0
- {typed_ffmpeg_compatible-3.5.2 → 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.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_cli.py +23 -4
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_json.py +4 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_python.py +15 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/context.py +15 -4
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/validate.py +4 -3
- {typed_ffmpeg_compatible-3.5.2 → 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.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/global_runnable/global_args.py +2 -2
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/global_runnable/runnable.py +6 -2
- typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/dag/io/__init__.py +1 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/_input.py +20 -5
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/_output.py +24 -9
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/output_args.py +21 -7
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/nodes.py +20 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/schema.py +19 -6
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/utils.py +2 -2
- {typed_ffmpeg_compatible-3.5.2 → 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.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/parse.py +7 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/probe.py +3 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/schema.py +83 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/xml2json.py +8 -2
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/filters.py +540 -631
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/__init__.py +2 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/demuxers.py +1869 -1921
- {typed_ffmpeg_compatible-3.5.2 → 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.2 → 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.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/schema.py +15 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/sources.py +392 -381
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/__init__.py +2 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/audio.py +1071 -882
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/av.py +9 -3
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/subtitle.py +3 -3
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/video.py +1873 -1725
- {typed_ffmpeg_compatible-3.5.2 → 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.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/escaping.py +8 -4
- {typed_ffmpeg_compatible-3.5.2 → 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.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/lazy_eval/operator.py +75 -27
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/lazy_eval/schema.py +176 -4
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/run.py +2 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/snapshot.py +1 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/typing.py +2 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/view.py +2 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6/src/typed_ffmpeg_compatible.egg-info}/PKG-INFO +1 -1
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/SOURCES.txt +6 -0
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/codecs/schema.py +0 -17
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/common/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/compile/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/dag/global_runnable/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/dag/io/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/ffprobe/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/formats/schema.py +0 -17
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/utils/__init__.py +0 -0
- typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/utils/lazy_eval/__init__.py +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/LICENSE +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/MANIFEST.in +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/README.md +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/setup.cfg +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/__init__.py +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/py.typed +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/channel_layout.py +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/dependency_links.txt +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/entry_points.txt +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/requires.txt +0 -0
- {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/top_level.txt +0 -0
@@ -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"
|
@@ -99,7 +99,7 @@ importlib-metadata==8.7.0
|
|
99
99
|
# via keyring
|
100
100
|
iniconfig==2.1.0
|
101
101
|
# via pytest
|
102
|
-
ipykernel==6.
|
102
|
+
ipykernel==6.27.1
|
103
103
|
# via -r requirements.in
|
104
104
|
ipython==8.37.0
|
105
105
|
# via ipykernel
|
@@ -142,7 +142,7 @@ jupyterlab-pygments==0.3.0
|
|
142
142
|
# via nbconvert
|
143
143
|
keyring==25.6.0
|
144
144
|
# via twine
|
145
|
-
lxml==
|
145
|
+
lxml==6.0.0
|
146
146
|
# via -r requirements.in
|
147
147
|
markdown==3.8.2
|
148
148
|
# via
|
@@ -214,14 +214,10 @@ more-itertools==10.7.0
|
|
214
214
|
# via
|
215
215
|
# jaraco-classes
|
216
216
|
# jaraco-functools
|
217
|
-
multidict==6.
|
217
|
+
multidict==6.6.2
|
218
218
|
# via yarl
|
219
|
-
mypy==1.16.1
|
220
|
-
# via -r requirements.in
|
221
219
|
mypy-extensions==1.1.0
|
222
|
-
# via
|
223
|
-
# black
|
224
|
-
# mypy
|
220
|
+
# via black
|
225
221
|
nbclient==0.10.2
|
226
222
|
# via nbconvert
|
227
223
|
nbconvert==7.16.6
|
@@ -256,7 +252,6 @@ pathspec==0.12.1
|
|
256
252
|
# via
|
257
253
|
# black
|
258
254
|
# mkdocs
|
259
|
-
# mypy
|
260
255
|
pexpect==4.9.0
|
261
256
|
# via ipython
|
262
257
|
platformdirs==4.3.8
|
@@ -353,7 +348,7 @@ rpds-py==0.25.1
|
|
353
348
|
# via
|
354
349
|
# jsonschema
|
355
350
|
# referencing
|
356
|
-
ruff==0.12.
|
351
|
+
ruff==0.12.1
|
357
352
|
# via -r requirements.in
|
358
353
|
secretstorage==3.3.3
|
359
354
|
# via keyring
|
@@ -380,7 +375,6 @@ tomli==2.2.1
|
|
380
375
|
# black
|
381
376
|
# build
|
382
377
|
# coverage
|
383
|
-
# mypy
|
384
378
|
# pytest
|
385
379
|
# setuptools-scm
|
386
380
|
tornado==6.5.1
|
@@ -400,6 +394,8 @@ traitlets==5.14.3
|
|
400
394
|
# nbformat
|
401
395
|
twine==6.1.0
|
402
396
|
# via -r requirements.in
|
397
|
+
ty==0.0.1a12
|
398
|
+
# via -r requirements.in
|
403
399
|
typer==0.16.0
|
404
400
|
# via -r requirements.in
|
405
401
|
typing-extensions==4.14.0
|
@@ -411,7 +407,6 @@ typing-extensions==4.14.0
|
|
411
407
|
# mistune
|
412
408
|
# mkdocstrings-python
|
413
409
|
# multidict
|
414
|
-
# mypy
|
415
410
|
# referencing
|
416
411
|
# rich
|
417
412
|
# typer
|
@@ -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),
|