typed-ffmpeg-compatible 3.3.1__py3-none-any.whl → 3.4.1__py3-none-any.whl

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 (30) hide show
  1. typed_ffmpeg/__init__.py +3 -1
  2. typed_ffmpeg/_version.py +2 -2
  3. typed_ffmpeg/base.py +1 -1
  4. typed_ffmpeg/codecs/__init__.py +3 -0
  5. typed_ffmpeg/codecs/decoders.py +6644 -0
  6. typed_ffmpeg/codecs/encoders.py +6401 -0
  7. typed_ffmpeg/codecs/schema.py +17 -0
  8. typed_ffmpeg/common/serialize.py +1 -1
  9. typed_ffmpeg/dag/global_runnable/global_args.py +59 -55
  10. typed_ffmpeg/dag/io/_input.py +76 -64
  11. typed_ffmpeg/dag/io/_output.py +118 -105
  12. typed_ffmpeg/dag/io/output_args.py +122 -104
  13. typed_ffmpeg/dag/nodes.py +1 -1
  14. typed_ffmpeg/dag/schema.py +1 -1
  15. typed_ffmpeg/filters.py +1717 -675
  16. typed_ffmpeg/formats/__init__.py +3 -0
  17. typed_ffmpeg/formats/demuxers.py +6664 -0
  18. typed_ffmpeg/formats/muxers.py +3774 -0
  19. typed_ffmpeg/formats/schema.py +17 -0
  20. typed_ffmpeg/sources.py +1641 -571
  21. typed_ffmpeg/streams/audio.py +1994 -1554
  22. typed_ffmpeg/streams/video.py +4540 -2843
  23. typed_ffmpeg/utils/{forzendict.py → frozendict.py} +56 -1
  24. typed_ffmpeg/utils/run.py +1 -1
  25. {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.1.dist-info}/METADATA +1 -1
  26. {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.1.dist-info}/RECORD +30 -22
  27. {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.1.dist-info}/WHEEL +0 -0
  28. {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.1.dist-info}/entry_points.txt +0 -0
  29. {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.1.dist-info}/licenses/LICENSE +0 -0
  30. {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.1.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@ where hashable dictionaries are needed, such as in sets or as keys in other
6
6
  dictionaries. Once created, a FrozenDict cannot be modified.
7
7
  """
8
8
 
9
- from collections.abc import Iterator, Mapping
9
+ from collections.abc import Iterable, Iterator, Mapping
10
10
  from typing import Any, Generic, TypeVar
11
11
 
12
12
  K = TypeVar("K")
@@ -106,3 +106,58 @@ class FrozenDict(Mapping[K, V], Generic[K, V]):
106
106
  # Create a stable hash based on sorted key-value pairs
107
107
  self._hash = hash(frozenset(self._data.items()))
108
108
  return self._hash
109
+
110
+ def __or__(self, other: Mapping[Any, Any]) -> dict[Any, Any]:
111
+ return dict(self) | dict(other)
112
+
113
+ def __ror__(self, other: Mapping[Any, Any]) -> dict[Any, Any]:
114
+ return dict(other) | dict(self)
115
+
116
+
117
+ def merge(*maps: Mapping[Any, Any] | None) -> FrozenDict[Any, Any]:
118
+ """
119
+ Merge multiple dictionaries into a single dictionary.
120
+
121
+ Args:
122
+ *maps: Dictionaries to merge
123
+
124
+ Returns:
125
+ A new dictionary containing the merged contents of all input dictionaries
126
+ """
127
+ output = {}
128
+
129
+ for map in maps:
130
+ if map is None:
131
+ continue
132
+ # exclude None values
133
+ output.update({k: v for k, v in map.items() if v is not None})
134
+
135
+ return FrozenDict(output)
136
+
137
+
138
+ def exclude(maps: Mapping[Any, Any], exclude: Iterable[Any]) -> FrozenDict[Any, Any]:
139
+ """
140
+ Exclude the keys of a dictionary.
141
+
142
+ Args:
143
+ maps: Dictionary to exclude from
144
+ exclude: Keys to exclude
145
+
146
+ Returns:
147
+ A new dictionary with the keys excluded
148
+ """
149
+ return FrozenDict({k: v for k, v in maps.items() if k not in exclude})
150
+
151
+
152
+ def rekey(maps: Mapping[Any, Any], rekey: Mapping[Any, Any]) -> FrozenDict[Any, Any]:
153
+ """
154
+ rekey the keys of a dictionary.
155
+
156
+ Args:
157
+ maps: Dictionary to rekey
158
+ rekey: Mapping of old keys to new keys
159
+
160
+ Returns:
161
+ A new dictionary with the keys remapped
162
+ """
163
+ return FrozenDict({rekey.get(k, k): v for k, v in maps.items()})
typed_ffmpeg/utils/run.py CHANGED
@@ -10,7 +10,7 @@ from collections.abc import Mapping
10
10
 
11
11
  from ..schema import Default
12
12
  from ..utils.lazy_eval.schema import LazyValue
13
- from .forzendict import FrozenDict
13
+ from .frozendict import FrozenDict
14
14
 
15
15
 
16
16
  def command_line(args: list[str]) -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: typed-ffmpeg-compatible
3
- Version: 3.3.1
3
+ Version: 3.4.1
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
@@ -1,17 +1,21 @@
1
- typed_ffmpeg/__init__.py,sha256=yixdEj2DRDUwCVipkVMaPGNo-DjIA_6ZSZrYQTxkUQY,1630
2
- typed_ffmpeg/_version.py,sha256=DGQPU6_vrM6PfHseD1DbTrLzSemTnUX5siYWgZbIrdI,511
3
- typed_ffmpeg/base.py,sha256=oNL_ZCYiweYoKOm2Kh-OePvIfVOlpQ4cDF8_aLNTz98,6309
1
+ typed_ffmpeg/__init__.py,sha256=6ULyAwFhDsIb03SeKRKArqYWlxfeOvRTGEI6vUUj774,1676
2
+ typed_ffmpeg/_version.py,sha256=6e5ua4BSCjT1IQ0LkNwNve_mS-siyw1MEvPWQlVmem0,511
3
+ typed_ffmpeg/base.py,sha256=JNNNnN-1A50i9zviR6uOjAs-bClCDx5qx9A5iSePBeI,6309
4
4
  typed_ffmpeg/exceptions.py,sha256=D4SID6WOwkjVV8O8mAjrEDHWn-8BRDnK_jteaDof1SY,2474
5
- typed_ffmpeg/filters.py,sha256=_lBpGZgPHK3KgGVrw-TCdQEsBRuEXVIgwggYNGd80MU,110076
5
+ typed_ffmpeg/filters.py,sha256=XY1LqXY6Ch1wOX-1XW3SzgwH3NQaAtSEQew6f3JoTeY,144001
6
6
  typed_ffmpeg/info.py,sha256=0KCzf8hJaI6ObPRT0uftLa96RlYvaQmoEq1sqFJSc24,9521
7
7
  typed_ffmpeg/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  typed_ffmpeg/schema.py,sha256=KVtmyGeJutjFot70r6Nj8W8WBqwvfg2-rSgjdhPVh-o,1615
9
- typed_ffmpeg/sources.py,sha256=ASt0l8FMW82X-70qw72167xpyBY7tQQClVuhy8r0HfU,86026
9
+ typed_ffmpeg/sources.py,sha256=gR8qH-Qf36X2veab4kh9ZE5CYu5K0Yz6eXzd0lCFdPE,122297
10
10
  typed_ffmpeg/types.py,sha256=ly3zLtg7KxRa_jsDDrFPAxRZRjTQdWVpiQzOD9NdrFM,4137
11
+ typed_ffmpeg/codecs/__init__.py,sha256=qEqV-Oo2vG06WIAm3obcArK6ZBDWNP7_Kw6cszSGqb8,87
12
+ typed_ffmpeg/codecs/decoders.py,sha256=5_s7TJoq98784GZ-6wE6QmF7Mzafmm7nwB98QgFWsUw,122104
13
+ typed_ffmpeg/codecs/encoders.py,sha256=9n2FNEEBfpbtOKgDi6fOHEGVhbAzTEF_UoZDqqQzEmw,216605
14
+ typed_ffmpeg/codecs/schema.py,sha256=d0OeLkJAHf6GwUjUFgr_1sR38mQOCUQns3aSmpX7EF8,451
11
15
  typed_ffmpeg/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
16
  typed_ffmpeg/common/cache.py,sha256=j0JvfX7jewLpdJWxgo7Pwze0BkUJdYGHX2uGR8BZ-9M,1386
13
17
  typed_ffmpeg/common/schema.py,sha256=qM8yfMX9UU3EAQSNsTrr-SAmyqKx8eQCXTtu3RJWkEk,19673
14
- typed_ffmpeg/common/serialize.py,sha256=dLim0DBP5CdJ1JiMV9xEmmh1XMSIhBOWs61EopAL15s,7719
18
+ typed_ffmpeg/common/serialize.py,sha256=ECgnown2I6BpKK2xYxYKzBUE4tnWxDEyUiSvsymoG1I,7719
15
19
  typed_ffmpeg/compile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
20
  typed_ffmpeg/compile/compile_cli.py,sha256=FyFcFN2qgpi57M3fERzXlSdEs4Z7XwD0zKicXbl7_4M,32980
17
21
  typed_ffmpeg/compile/compile_json.py,sha256=YCiTyfAnUVSbFr7BiQpmJYs13K5sa-xo77Iih33mb6I,992
@@ -20,40 +24,44 @@ typed_ffmpeg/compile/context.py,sha256=macQ3HhEJ73j_WbWYtU9GCQCzcB_KQGAPimcuU-WO
20
24
  typed_ffmpeg/compile/validate.py,sha256=QsWksdvlRwWw6hnatFo-ABakms1qDXRbEmvMQGRLrD8,9579
21
25
  typed_ffmpeg/dag/__init__.py,sha256=qAApSNqjbZ1DtUaV5bSku9RwG7MpMPa1HJO764cSBt4,849
22
26
  typed_ffmpeg/dag/factory.py,sha256=2IMVKP_2UaTrlGXBg8YDx5KXBqhpScJiJQ87PRrppzY,3147
23
- typed_ffmpeg/dag/nodes.py,sha256=lfHChT8JqRs3UUDWtgrWnnXn845HXSD5S1QmHpIUT4U,20526
24
- typed_ffmpeg/dag/schema.py,sha256=xsVT46XgT3Usgb4N9OWdjP74MG9dBrXgZGbjsYhsUEM,5916
27
+ typed_ffmpeg/dag/nodes.py,sha256=TEBlG2299_sTjvt0eTbsULK6Ln8ndo1Z38ftNYUC5Lc,20526
28
+ typed_ffmpeg/dag/schema.py,sha256=ZIW2RTdSa484akezWnREEZC5FgdTZHvVLYC-Vl6-dF8,5916
25
29
  typed_ffmpeg/dag/utils.py,sha256=hydh7_kjpOCw8WEGhXMxIXR4Ek-3DeoOt6esInuK2Xw,1941
26
30
  typed_ffmpeg/dag/global_runnable/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- typed_ffmpeg/dag/global_runnable/global_args.py,sha256=ehLtx4v-XxqkmODhpE_gik0r79hs4Sa8TJnRsH9Fj1o,8043
31
+ typed_ffmpeg/dag/global_runnable/global_args.py,sha256=PINtqw5QNDcZ9OC4w0frt-fWV8Yg6_We6w68dnXia94,7801
28
32
  typed_ffmpeg/dag/global_runnable/runnable.py,sha256=0QGBm3ghM4LFT4H9km9-h_N0w5BR3kTaESRapb-qTv0,11098
29
33
  typed_ffmpeg/dag/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- typed_ffmpeg/dag/io/_input.py,sha256=KRLTSQPEfmgPcPEAJdeWRHZhNsClaJCB9Ac6czMOrmE,7214
31
- typed_ffmpeg/dag/io/_output.py,sha256=_no6ffAOABznbLNTki8CYr7pvr4Sa0LweRfn38-cszs,12470
32
- typed_ffmpeg/dag/io/output_args.py,sha256=SThIhZh9PXs2m6Fz5JsSy8oS-Te7GM_oz7HRuZo0-eI,13901
34
+ typed_ffmpeg/dag/io/_input.py,sha256=NFr4leQWCQ6f1bj_o5jPli4UMRFfwcEZufU5BztFpm4,7826
35
+ typed_ffmpeg/dag/io/_output.py,sha256=SfQCEtmGJKFmxbXXDlc7DaQpeNFNYVG9x6vDNVaFmhE,13232
36
+ typed_ffmpeg/dag/io/output_args.py,sha256=dycw8BdwkP-koY5EMH46JvzW_Hybdzt2K3V5Y6dRJ3k,14770
33
37
  typed_ffmpeg/ffprobe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
38
  typed_ffmpeg/ffprobe/parse.py,sha256=fq1cGFkUpUdvyVi3S-TAQ7qn-tXUdae6ADhymZt7-t4,3791
35
39
  typed_ffmpeg/ffprobe/probe.py,sha256=D_opsKp3OgT2HSBzhxgY1b9SIqXpDhz3xh_k9HUGux0,10367
36
40
  typed_ffmpeg/ffprobe/schema.py,sha256=PBgBWYGO8wKnI0Lae9oCJ1Nprhv2ciPkdLrumzPVllY,13631
37
41
  typed_ffmpeg/ffprobe/xml2json.py,sha256=1TSuxR7SYc-M_-JmE-1khHGbXCapgW0Oap9kzL0nwNg,2455
42
+ typed_ffmpeg/formats/__init__.py,sha256=y6MdgOZyyFrQWafATLHeN_o0VLrHH266A9avGO5i8KM,83
43
+ typed_ffmpeg/formats/demuxers.py,sha256=EqMySaTpmT3f8wOi_kuo4zCc73Sy5VRIvJ-98TYdpvY,143238
44
+ typed_ffmpeg/formats/muxers.py,sha256=btevbmDQCEFV-8n4TiLWFd-48v-YlEZNw8Vcnoso81k,110447
45
+ typed_ffmpeg/formats/schema.py,sha256=z3DrBsM_3azkutzMdXdN2DlYEVNsG7a7TV5jICyHqYY,452
38
46
  typed_ffmpeg/streams/__init__.py,sha256=32kiqBVigKH2EqS3cA6EfXCW8KpVdQNWSStAmQ0MktM,196
39
- typed_ffmpeg/streams/audio.py,sha256=2oNRhb5UetWtlPG3NW73AjUZoFPl303yMv-6W1sGWt0,259054
47
+ typed_ffmpeg/streams/audio.py,sha256=_40HQ4B1Hc5VLzkq1oNdjgY4uuDZXjaRmMmE-0EZCkc,274665
40
48
  typed_ffmpeg/streams/av.py,sha256=qrsO692BG6OVMWVwIeuCKPntBGTR685lc2ULbGPTSkQ,2594
41
49
  typed_ffmpeg/streams/channel_layout.py,sha256=hGagaoc1tnWS8K1yiITp4f_92qq5e7C_zB15bHOL0DI,1162
42
50
  typed_ffmpeg/streams/subtitle.py,sha256=zhbRKUYH0C972Hurm4hK_dqLvT4Y6v_VNZFzQrkCm9A,141
43
- typed_ffmpeg/streams/video.py,sha256=cQwHfew75YO_dbZjmpUYd-nXt1JHN0M7suFKKe5UH5s,453576
51
+ typed_ffmpeg/streams/video.py,sha256=_dPV_ZzXyNgu5MFr5W727t-SSbZo-gN3_w6OTELIouE,508354
44
52
  typed_ffmpeg/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
53
  typed_ffmpeg/utils/escaping.py,sha256=m6CTEBwWZTFdtZHTHW-3pQCgkpdZb9f9ynoO-gsD7uM,2937
46
- typed_ffmpeg/utils/forzendict.py,sha256=9QWdPQA2AbSfiC9-mrq1YeZFl1qN--zw8WlsqQ2ulCk,3114
47
- typed_ffmpeg/utils/run.py,sha256=mSoAdcvD-InldqkRgWNc8iXKgJJoEMAOE4PL2gVmtqw,2178
54
+ typed_ffmpeg/utils/frozendict.py,sha256=oRlG0hQWIHhnYCrMeGQ6JE37yge_dB1gY3lDdoiJ0hw,4569
55
+ typed_ffmpeg/utils/run.py,sha256=R3WSxEUdY-QmJnHT03VrvdUVQDyyI1QEiMw6Nz8AH1s,2178
48
56
  typed_ffmpeg/utils/snapshot.py,sha256=SHdfM1OXxR0cReNs4snDdAASjW45unz2KjF_6jMwq7c,2180
49
57
  typed_ffmpeg/utils/typing.py,sha256=DBQn_gCF8C_DTwsfMHeCgfnNUROwAjlIcHrQ7lNDOoE,1187
50
58
  typed_ffmpeg/utils/view.py,sha256=jiCKJnx-KVJh-uvhkADBQNlWH1uHPqyYgmSZ_iSEj0c,3484
51
59
  typed_ffmpeg/utils/lazy_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
60
  typed_ffmpeg/utils/lazy_eval/operator.py,sha256=QWybd-UH3VdDa8kgWkqAMi3WV0b0WF1d1JixQr6is2E,4136
53
61
  typed_ffmpeg/utils/lazy_eval/schema.py,sha256=WSg-E3MS3itN1AT6Dq4Z9btnRHEReuN3o6zruXou7h4,9623
54
- typed_ffmpeg_compatible-3.3.1.dist-info/licenses/LICENSE,sha256=8Aaya5i_09Cou2i3QMxTwz6uHGzi_fGA4uhkco07-A4,1066
55
- typed_ffmpeg_compatible-3.3.1.dist-info/METADATA,sha256=5ZtyLl8XCPa1W-B6XCCjyosTQMJotk5LWqy1WiixwYg,8385
56
- typed_ffmpeg_compatible-3.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
57
- typed_ffmpeg_compatible-3.3.1.dist-info/entry_points.txt,sha256=kUQvZ27paV-07qtkIFV-emKsYtjFOTw9kknBRSXPs04,45
58
- typed_ffmpeg_compatible-3.3.1.dist-info/top_level.txt,sha256=vuASJGVRQiNmhWY1pt0RXESWSNkknWXqWLIRAU7H_L4,13
59
- typed_ffmpeg_compatible-3.3.1.dist-info/RECORD,,
62
+ typed_ffmpeg_compatible-3.4.1.dist-info/licenses/LICENSE,sha256=8Aaya5i_09Cou2i3QMxTwz6uHGzi_fGA4uhkco07-A4,1066
63
+ typed_ffmpeg_compatible-3.4.1.dist-info/METADATA,sha256=dV4L7CJaO-jilAnH9PjsLLXTh0VUyFdiYXydO9q1fUk,8385
64
+ typed_ffmpeg_compatible-3.4.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
+ typed_ffmpeg_compatible-3.4.1.dist-info/entry_points.txt,sha256=kUQvZ27paV-07qtkIFV-emKsYtjFOTw9kknBRSXPs04,45
66
+ typed_ffmpeg_compatible-3.4.1.dist-info/top_level.txt,sha256=vuASJGVRQiNmhWY1pt0RXESWSNkknWXqWLIRAU7H_L4,13
67
+ typed_ffmpeg_compatible-3.4.1.dist-info/RECORD,,