typed-ffmpeg-compatible 3.3.1__py3-none-any.whl → 3.4__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.
- typed_ffmpeg/__init__.py +2 -1
- typed_ffmpeg/_version.py +2 -2
- typed_ffmpeg/base.py +1 -1
- typed_ffmpeg/codecs/__init__.py +3 -0
- typed_ffmpeg/codecs/decoders.py +6644 -0
- typed_ffmpeg/codecs/encoders.py +6435 -0
- typed_ffmpeg/codecs/schema.py +17 -0
- typed_ffmpeg/common/serialize.py +1 -1
- typed_ffmpeg/dag/global_runnable/global_args.py +59 -55
- typed_ffmpeg/dag/io/_input.py +72 -64
- typed_ffmpeg/dag/io/_output.py +114 -105
- typed_ffmpeg/dag/io/output_args.py +118 -104
- typed_ffmpeg/dag/nodes.py +1 -1
- typed_ffmpeg/dag/schema.py +1 -1
- typed_ffmpeg/filters.py +1717 -675
- typed_ffmpeg/sources.py +1641 -571
- typed_ffmpeg/streams/audio.py +1994 -1554
- typed_ffmpeg/streams/video.py +4540 -2843
- typed_ffmpeg/utils/{forzendict.py → frozendict.py} +56 -1
- typed_ffmpeg/utils/run.py +1 -1
- {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/METADATA +1 -1
- {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/RECORD +26 -22
- {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/WHEEL +0 -0
- {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/entry_points.txt +0 -0
- {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/licenses/LICENSE +0 -0
- {typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.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
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: typed-ffmpeg-compatible
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.4
|
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=
|
2
|
-
typed_ffmpeg/_version.py,sha256=
|
3
|
-
typed_ffmpeg/base.py,sha256=
|
1
|
+
typed_ffmpeg/__init__.py,sha256=l53f6Iit3dLhGHxYg20TLkzmmh0vCMNYGIXCyXWcZfA,1652
|
2
|
+
typed_ffmpeg/_version.py,sha256=FOaITfYFdmbc5BCzn2TIcvOwuyawOglcSDQRSAu-J5U,506
|
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=
|
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=
|
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=iucSZt8zTdfBNvWaOXOfHHQdCx3bJTbn4-9MOlr5-zI,217955
|
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=
|
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,40 @@ 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=
|
24
|
-
typed_ffmpeg/dag/schema.py,sha256=
|
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=
|
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=
|
31
|
-
typed_ffmpeg/dag/io/_output.py,sha256=
|
32
|
-
typed_ffmpeg/dag/io/output_args.py,sha256=
|
34
|
+
typed_ffmpeg/dag/io/_input.py,sha256=AHUtauMh31pCz6YSVa3WFJ-lEHqf44P8cvlWOSwic3Y,7607
|
35
|
+
typed_ffmpeg/dag/io/_output.py,sha256=PkluhHrXGF7GhqhQ3Pn6LknWi_Bk0PuC3f8JApXakGw,13027
|
36
|
+
typed_ffmpeg/dag/io/output_args.py,sha256=_MkoX6pRsECCkvLndrERq7674YDWlhOzAvUifVJZegE,14543
|
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
|
38
42
|
typed_ffmpeg/streams/__init__.py,sha256=32kiqBVigKH2EqS3cA6EfXCW8KpVdQNWSStAmQ0MktM,196
|
39
|
-
typed_ffmpeg/streams/audio.py,sha256=
|
43
|
+
typed_ffmpeg/streams/audio.py,sha256=_40HQ4B1Hc5VLzkq1oNdjgY4uuDZXjaRmMmE-0EZCkc,274665
|
40
44
|
typed_ffmpeg/streams/av.py,sha256=qrsO692BG6OVMWVwIeuCKPntBGTR685lc2ULbGPTSkQ,2594
|
41
45
|
typed_ffmpeg/streams/channel_layout.py,sha256=hGagaoc1tnWS8K1yiITp4f_92qq5e7C_zB15bHOL0DI,1162
|
42
46
|
typed_ffmpeg/streams/subtitle.py,sha256=zhbRKUYH0C972Hurm4hK_dqLvT4Y6v_VNZFzQrkCm9A,141
|
43
|
-
typed_ffmpeg/streams/video.py,sha256=
|
47
|
+
typed_ffmpeg/streams/video.py,sha256=_dPV_ZzXyNgu5MFr5W727t-SSbZo-gN3_w6OTELIouE,508354
|
44
48
|
typed_ffmpeg/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
49
|
typed_ffmpeg/utils/escaping.py,sha256=m6CTEBwWZTFdtZHTHW-3pQCgkpdZb9f9ynoO-gsD7uM,2937
|
46
|
-
typed_ffmpeg/utils/
|
47
|
-
typed_ffmpeg/utils/run.py,sha256=
|
50
|
+
typed_ffmpeg/utils/frozendict.py,sha256=oRlG0hQWIHhnYCrMeGQ6JE37yge_dB1gY3lDdoiJ0hw,4569
|
51
|
+
typed_ffmpeg/utils/run.py,sha256=R3WSxEUdY-QmJnHT03VrvdUVQDyyI1QEiMw6Nz8AH1s,2178
|
48
52
|
typed_ffmpeg/utils/snapshot.py,sha256=SHdfM1OXxR0cReNs4snDdAASjW45unz2KjF_6jMwq7c,2180
|
49
53
|
typed_ffmpeg/utils/typing.py,sha256=DBQn_gCF8C_DTwsfMHeCgfnNUROwAjlIcHrQ7lNDOoE,1187
|
50
54
|
typed_ffmpeg/utils/view.py,sha256=jiCKJnx-KVJh-uvhkADBQNlWH1uHPqyYgmSZ_iSEj0c,3484
|
51
55
|
typed_ffmpeg/utils/lazy_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
56
|
typed_ffmpeg/utils/lazy_eval/operator.py,sha256=QWybd-UH3VdDa8kgWkqAMi3WV0b0WF1d1JixQr6is2E,4136
|
53
57
|
typed_ffmpeg/utils/lazy_eval/schema.py,sha256=WSg-E3MS3itN1AT6Dq4Z9btnRHEReuN3o6zruXou7h4,9623
|
54
|
-
typed_ffmpeg_compatible-3.
|
55
|
-
typed_ffmpeg_compatible-3.
|
56
|
-
typed_ffmpeg_compatible-3.
|
57
|
-
typed_ffmpeg_compatible-3.
|
58
|
-
typed_ffmpeg_compatible-3.
|
59
|
-
typed_ffmpeg_compatible-3.
|
58
|
+
typed_ffmpeg_compatible-3.4.dist-info/licenses/LICENSE,sha256=8Aaya5i_09Cou2i3QMxTwz6uHGzi_fGA4uhkco07-A4,1066
|
59
|
+
typed_ffmpeg_compatible-3.4.dist-info/METADATA,sha256=3LLsFUWShSTQBmwmJILuByrK3GwjDTk95jq_Vo5lAr4,8383
|
60
|
+
typed_ffmpeg_compatible-3.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
61
|
+
typed_ffmpeg_compatible-3.4.dist-info/entry_points.txt,sha256=kUQvZ27paV-07qtkIFV-emKsYtjFOTw9kknBRSXPs04,45
|
62
|
+
typed_ffmpeg_compatible-3.4.dist-info/top_level.txt,sha256=vuASJGVRQiNmhWY1pt0RXESWSNkknWXqWLIRAU7H_L4,13
|
63
|
+
typed_ffmpeg_compatible-3.4.dist-info/RECORD,,
|
File without changes
|
{typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/entry_points.txt
RENAMED
File without changes
|
{typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
{typed_ffmpeg_compatible-3.3.1.dist-info → typed_ffmpeg_compatible-3.4.dist-info}/top_level.txt
RENAMED
File without changes
|