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.
Files changed (89) hide show
  1. {typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg_compatible.egg-info → typed_ffmpeg_compatible-3.6}/PKG-INFO +1 -1
  2. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/pyproject.toml +17 -0
  3. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/requirements.txt +7 -12
  4. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/__init__.py +4 -1
  5. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/_version.py +2 -2
  6. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/base.py +4 -1
  7. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/__init__.py +2 -0
  8. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/decoders.py +1852 -1853
  9. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/codecs/encoders.py +2001 -1782
  10. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/codecs/schema.py +11 -0
  11. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/common/__init__.py +1 -0
  12. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/cache.py +9 -6
  13. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/schema.py +11 -0
  14. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/common/serialize.py +13 -7
  15. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/compile/__init__.py +1 -0
  16. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_cli.py +23 -4
  17. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_json.py +4 -0
  18. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/compile_python.py +15 -0
  19. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/context.py +15 -4
  20. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/compile/validate.py +4 -3
  21. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/factory.py +2 -0
  22. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/dag/global_runnable/__init__.py +1 -0
  23. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/global_runnable/global_args.py +2 -2
  24. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/global_runnable/runnable.py +6 -2
  25. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/dag/io/__init__.py +1 -0
  26. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/_input.py +20 -5
  27. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/_output.py +24 -9
  28. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/io/output_args.py +21 -7
  29. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/nodes.py +20 -0
  30. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/schema.py +19 -6
  31. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/utils.py +2 -2
  32. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/exceptions.py +2 -1
  33. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/expressions.py +884 -0
  34. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/ffprobe/__init__.py +1 -0
  35. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/parse.py +7 -1
  36. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/probe.py +3 -1
  37. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/schema.py +83 -1
  38. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/ffprobe/xml2json.py +8 -2
  39. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/filters.py +540 -631
  40. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/__init__.py +2 -0
  41. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/demuxers.py +1869 -1921
  42. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/formats/muxers.py +1382 -1107
  43. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/formats/schema.py +11 -0
  44. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/info.py +8 -0
  45. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/__init__.py +15 -0
  46. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/codec.py +711 -0
  47. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/format.py +196 -0
  48. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/framesync.py +43 -0
  49. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/options/timeline.py +22 -0
  50. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/schema.py +15 -0
  51. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/sources.py +392 -381
  52. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/__init__.py +2 -0
  53. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/audio.py +1071 -882
  54. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/av.py +9 -3
  55. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/subtitle.py +3 -3
  56. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/video.py +1873 -1725
  57. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/types.py +3 -2
  58. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/utils/__init__.py +1 -0
  59. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/escaping.py +8 -4
  60. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/frozendict.py +31 -1
  61. typed_ffmpeg_compatible-3.6/src/typed_ffmpeg/utils/lazy_eval/__init__.py +1 -0
  62. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/lazy_eval/operator.py +75 -27
  63. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/lazy_eval/schema.py +176 -4
  64. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/run.py +2 -0
  65. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/snapshot.py +1 -0
  66. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/typing.py +2 -1
  67. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/utils/view.py +2 -1
  68. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6/src/typed_ffmpeg_compatible.egg-info}/PKG-INFO +1 -1
  69. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/SOURCES.txt +6 -0
  70. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/codecs/schema.py +0 -17
  71. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/common/__init__.py +0 -0
  72. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/compile/__init__.py +0 -0
  73. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/dag/global_runnable/__init__.py +0 -0
  74. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/dag/io/__init__.py +0 -0
  75. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/ffprobe/__init__.py +0 -0
  76. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/formats/schema.py +0 -17
  77. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/utils/__init__.py +0 -0
  78. typed_ffmpeg_compatible-3.5.2/src/typed_ffmpeg/utils/lazy_eval/__init__.py +0 -0
  79. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/LICENSE +0 -0
  80. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/MANIFEST.in +0 -0
  81. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/README.md +0 -0
  82. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/setup.cfg +0 -0
  83. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/dag/__init__.py +0 -0
  84. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/py.typed +0 -0
  85. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg/streams/channel_layout.py +0 -0
  86. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/dependency_links.txt +0 -0
  87. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/entry_points.txt +0 -0
  88. {typed_ffmpeg_compatible-3.5.2 → typed_ffmpeg_compatible-3.6}/src/typed_ffmpeg_compatible.egg-info/requires.txt +0 -0
  89. {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.5.2
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.29.5
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==5.4.0
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.5.0
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.0
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
  ]
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '3.5.2'
21
- __version_tuple__ = version_tuple = (3, 5, 2)
20
+ __version__ = version = '3.6'
21
+ __version_tuple__ = version_tuple = (3, 6)
@@ -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),
@@ -1,3 +1,5 @@
1
+ """FFmpeg codecs package."""
2
+
1
3
  from . import decoders, encoders, schema
2
4
 
3
5
  __all__ = ["encoders", "decoders", "schema"]