py-aep 0.7.0__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 (115) hide show
  1. py_aep/__init__.py +325 -0
  2. py_aep/cli/__init__.py +9 -0
  3. py_aep/cli/compare.py +942 -0
  4. py_aep/cli/validate.py +1809 -0
  5. py_aep/cli/visualize.py +607 -0
  6. py_aep/cos/__init__.py +14 -0
  7. py_aep/cos/cos.py +483 -0
  8. py_aep/cos/descriptors.py +185 -0
  9. py_aep/cos/serializer.py +232 -0
  10. py_aep/data/__init__.py +0 -0
  11. py_aep/data/match_names.py +883 -0
  12. py_aep/data/units.py +1033 -0
  13. py_aep/enums/__init__.py +250 -0
  14. py_aep/enums/font_object.py +139 -0
  15. py_aep/enums/format_options.py +263 -0
  16. py_aep/enums/general.py +1037 -0
  17. py_aep/enums/mappings.py +201 -0
  18. py_aep/enums/output_module.py +406 -0
  19. py_aep/enums/property.py +83 -0
  20. py_aep/enums/render_queue.py +72 -0
  21. py_aep/enums/render_settings.py +425 -0
  22. py_aep/enums/text_document.py +178 -0
  23. py_aep/kaitai/__init__.py +22 -0
  24. py_aep/kaitai/aep.ksy +2539 -0
  25. py_aep/kaitai/aep.py +8041 -0
  26. py_aep/kaitai/descriptors.py +235 -0
  27. py_aep/kaitai/patches.py +35 -0
  28. py_aep/kaitai/proxy.py +26 -0
  29. py_aep/kaitai/reverses.py +98 -0
  30. py_aep/kaitai/transforms.py +23 -0
  31. py_aep/kaitai/utils.py +467 -0
  32. py_aep/models/__init__.py +96 -0
  33. py_aep/models/application.py +132 -0
  34. py_aep/models/essential_graphics.py +49 -0
  35. py_aep/models/guide.py +58 -0
  36. py_aep/models/items/__init__.py +15 -0
  37. py_aep/models/items/av_item.py +114 -0
  38. py_aep/models/items/composition.py +771 -0
  39. py_aep/models/items/folder.py +73 -0
  40. py_aep/models/items/footage.py +222 -0
  41. py_aep/models/items/item.py +140 -0
  42. py_aep/models/layers/__init__.py +19 -0
  43. py_aep/models/layers/av_layer.py +412 -0
  44. py_aep/models/layers/camera_layer.py +27 -0
  45. py_aep/models/layers/layer.py +495 -0
  46. py_aep/models/layers/light_layer.py +76 -0
  47. py_aep/models/layers/shape_layer.py +27 -0
  48. py_aep/models/layers/text_layer.py +27 -0
  49. py_aep/models/layers/three_d_model_layer.py +40 -0
  50. py_aep/models/project.py +512 -0
  51. py_aep/models/properties/__init__.py +22 -0
  52. py_aep/models/properties/keyframe.py +473 -0
  53. py_aep/models/properties/keyframe_ease.py +106 -0
  54. py_aep/models/properties/marker.py +161 -0
  55. py_aep/models/properties/mask_property_group.py +106 -0
  56. py_aep/models/properties/overrides.py +1962 -0
  57. py_aep/models/properties/property.py +1140 -0
  58. py_aep/models/properties/property_base.py +217 -0
  59. py_aep/models/properties/property_group.py +401 -0
  60. py_aep/models/properties/shape.py +314 -0
  61. py_aep/models/properties/specs.py +2258 -0
  62. py_aep/models/renderqueue/__init__.py +27 -0
  63. py_aep/models/renderqueue/format_options/__init__.py +17 -0
  64. py_aep/models/renderqueue/format_options/cineon.py +105 -0
  65. py_aep/models/renderqueue/format_options/jpeg.py +63 -0
  66. py_aep/models/renderqueue/format_options/openexr.py +80 -0
  67. py_aep/models/renderqueue/format_options/png.py +189 -0
  68. py_aep/models/renderqueue/format_options/targa.py +43 -0
  69. py_aep/models/renderqueue/format_options/tiff.py +41 -0
  70. py_aep/models/renderqueue/format_options/xml.py +307 -0
  71. py_aep/models/renderqueue/output_module.py +742 -0
  72. py_aep/models/renderqueue/render_queue.py +54 -0
  73. py_aep/models/renderqueue/render_queue_item.py +671 -0
  74. py_aep/models/renderqueue/settings.py +202 -0
  75. py_aep/models/sources/__init__.py +13 -0
  76. py_aep/models/sources/file.py +188 -0
  77. py_aep/models/sources/footage.py +200 -0
  78. py_aep/models/sources/placeholder.py +42 -0
  79. py_aep/models/sources/solid.py +53 -0
  80. py_aep/models/text/__init__.py +9 -0
  81. py_aep/models/text/font_object.py +55 -0
  82. py_aep/models/text/text_document.py +539 -0
  83. py_aep/models/validators.py +114 -0
  84. py_aep/models/viewer/__init__.py +11 -0
  85. py_aep/models/viewer/view.py +57 -0
  86. py_aep/models/viewer/view_options.py +222 -0
  87. py_aep/models/viewer/viewer.py +84 -0
  88. py_aep/parsers/__init__.py +7 -0
  89. py_aep/parsers/application.py +47 -0
  90. py_aep/parsers/composition.py +195 -0
  91. py_aep/parsers/defaults.py +387 -0
  92. py_aep/parsers/essential_graphics.py +69 -0
  93. py_aep/parsers/footage.py +87 -0
  94. py_aep/parsers/format_options.py +76 -0
  95. py_aep/parsers/item.py +203 -0
  96. py_aep/parsers/layer.py +101 -0
  97. py_aep/parsers/marker.py +90 -0
  98. py_aep/parsers/output_module.py +74 -0
  99. py_aep/parsers/project.py +213 -0
  100. py_aep/parsers/property.py +981 -0
  101. py_aep/parsers/property_value.py +151 -0
  102. py_aep/parsers/render_queue.py +158 -0
  103. py_aep/parsers/text.py +210 -0
  104. py_aep/parsers/utils.py +30 -0
  105. py_aep/parsers/view.py +118 -0
  106. py_aep/py.typed +0 -0
  107. py_aep/resolvers/__init__.py +14 -0
  108. py_aep/resolvers/interpolation.py +890 -0
  109. py_aep/resolvers/output.py +351 -0
  110. py_aep/utils.py +34 -0
  111. py_aep-0.7.0.dist-info/METADATA +136 -0
  112. py_aep-0.7.0.dist-info/RECORD +115 -0
  113. py_aep-0.7.0.dist-info/WHEEL +4 -0
  114. py_aep-0.7.0.dist-info/entry_points.txt +4 -0
  115. py_aep-0.7.0.dist-info/licenses/LICENSE +21 -0
py_aep/__init__.py ADDED
@@ -0,0 +1,325 @@
1
+ """py_aep - A .aep (After Effects Project) parser."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+
7
+ try:
8
+ from importlib.metadata import PackageNotFoundError, version
9
+ except ImportError:
10
+ from importlib_metadata import ( # type: ignore[import,no-redef] # Python 3.7
11
+ PackageNotFoundError,
12
+ version,
13
+ )
14
+
15
+ from .enums import (
16
+ AlphaMode,
17
+ AudioBitDepth,
18
+ AudioChannels,
19
+ AudioSampleRate,
20
+ AutoKernType,
21
+ AutoOrientType,
22
+ BaselineDirection,
23
+ BitsPerChannel,
24
+ BlendingMode,
25
+ BoxAutoFitPolicy,
26
+ BoxFirstBaselineAlignment,
27
+ BoxVerticalAlignment,
28
+ ChannelType,
29
+ CloseOptions,
30
+ ColorDepthSetting,
31
+ ColorManagementSystem,
32
+ ComposerEngine,
33
+ CTFontTechnology,
34
+ CTFontType,
35
+ CTScript,
36
+ DigitSet,
37
+ DiskCacheSetting,
38
+ EffectsSetting,
39
+ FastPreviewType,
40
+ FeetFramesFilmType,
41
+ FieldRender,
42
+ FieldSeparationType,
43
+ FillLightingCorrectionType,
44
+ FillMethodType,
45
+ FillOutputDepthType,
46
+ FillRangeType,
47
+ FontBaselineOption,
48
+ FontCapsOption,
49
+ FootageTimecodeDisplayStartType,
50
+ FrameBlendingSetting,
51
+ FrameBlendingType,
52
+ FrameRateSetting,
53
+ FramesCountType,
54
+ GetSettingsFormat,
55
+ GpuAccelType,
56
+ GuideLayers,
57
+ GuideOrientationType,
58
+ ImportAsType,
59
+ KeyframeInterpolationType,
60
+ Label,
61
+ Language,
62
+ LayerQuality,
63
+ LayerSamplingQuality,
64
+ LeadingType,
65
+ LightType,
66
+ LinearLightMode,
67
+ LineJoinType,
68
+ LineOrientation,
69
+ LogType,
70
+ LoopMode,
71
+ LutInterpolationMethod,
72
+ MaskFeatherFalloff,
73
+ MaskMode,
74
+ MaskMotionBlur,
75
+ MotionBlurSetting,
76
+ OutputAudio,
77
+ OutputChannels,
78
+ OutputColorDepth,
79
+ OutputColorMode,
80
+ OutputFormat,
81
+ ParagraphDirection,
82
+ ParagraphJustification,
83
+ PlayMode,
84
+ PostRenderAction,
85
+ PREFType,
86
+ ProjectThread,
87
+ PropertyControlType,
88
+ PropertyType,
89
+ PropertyValueType,
90
+ ProxyUseSetting,
91
+ PulldownMethod,
92
+ PulldownPhase,
93
+ PulldownSetting,
94
+ PurgeTarget,
95
+ RenderQuality,
96
+ ResizeQuality,
97
+ ResolveType,
98
+ RQItemStatus,
99
+ SoloSwitchesSetting,
100
+ TimeDisplayType,
101
+ TimeSpanSource,
102
+ ToolType,
103
+ TrackMatteType,
104
+ ViewerType,
105
+ )
106
+ from .kaitai import Aep
107
+ from .models import (
108
+ Application,
109
+ AVItem,
110
+ AVLayer,
111
+ CameraLayer,
112
+ CineonFormatOptions,
113
+ CompItem,
114
+ FeatherPoint,
115
+ FileSource,
116
+ FolderItem,
117
+ FontObject,
118
+ FootageItem,
119
+ FootageSource,
120
+ Guide,
121
+ Item,
122
+ JpegFormatOptions,
123
+ Keyframe,
124
+ KeyframeEase,
125
+ Layer,
126
+ LightLayer,
127
+ MarkerValue,
128
+ MaskPropertyGroup,
129
+ OpenExrFormatOptions,
130
+ OutputModule,
131
+ PlaceholderSource,
132
+ PngFormatOptions,
133
+ Project,
134
+ Property,
135
+ PropertyBase,
136
+ PropertyGroup,
137
+ RenderQueue,
138
+ RenderQueueItem,
139
+ SettingsView,
140
+ Shape,
141
+ ShapeLayer,
142
+ SolidSource,
143
+ TargaFormatOptions,
144
+ TextDocument,
145
+ TextLayer,
146
+ ThreeDModelLayer,
147
+ TiffFormatOptions,
148
+ View,
149
+ Viewer,
150
+ ViewOptions,
151
+ XmlFormatOptions,
152
+ )
153
+ from .parsers.application import parse_app
154
+ from .parsers.project import _parse_project, parse_project
155
+
156
+ try:
157
+ __version__ = version("py_aep")
158
+ except PackageNotFoundError:
159
+ __version__ = "0.0.0"
160
+
161
+ __all__ = [
162
+ "__version__",
163
+ "AlphaMode",
164
+ "Application",
165
+ "AudioBitDepth",
166
+ "AudioChannels",
167
+ "AudioSampleRate",
168
+ "AutoKernType",
169
+ "AutoOrientType",
170
+ "AVItem",
171
+ "AVLayer",
172
+ "BaselineDirection",
173
+ "BitsPerChannel",
174
+ "BlendingMode",
175
+ "BoxAutoFitPolicy",
176
+ "BoxFirstBaselineAlignment",
177
+ "BoxVerticalAlignment",
178
+ "CameraLayer",
179
+ "ChannelType",
180
+ "CineonFormatOptions",
181
+ "CloseOptions",
182
+ "ColorDepthSetting",
183
+ "ColorManagementSystem",
184
+ "CompItem",
185
+ "ComposerEngine",
186
+ "CTFontTechnology",
187
+ "CTFontType",
188
+ "CTScript",
189
+ "DigitSet",
190
+ "DiskCacheSetting",
191
+ "EffectsSetting",
192
+ "FastPreviewType",
193
+ "FeatherPoint",
194
+ "FeetFramesFilmType",
195
+ "FieldRender",
196
+ "FieldSeparationType",
197
+ "FileSource",
198
+ "FillLightingCorrectionType",
199
+ "FillMethodType",
200
+ "FillOutputDepthType",
201
+ "FillRangeType",
202
+ "FolderItem",
203
+ "FontBaselineOption",
204
+ "FontCapsOption",
205
+ "FontObject",
206
+ "FootageItem",
207
+ "FootageSource",
208
+ "FootageTimecodeDisplayStartType",
209
+ "FrameBlendingSetting",
210
+ "FrameBlendingType",
211
+ "FrameRateSetting",
212
+ "FramesCountType",
213
+ "GetSettingsFormat",
214
+ "GpuAccelType",
215
+ "GuideOrientationType",
216
+ "GuideLayers",
217
+ "Guide",
218
+ "ImportAsType",
219
+ "Item",
220
+ "JpegFormatOptions",
221
+ "Keyframe",
222
+ "KeyframeEase",
223
+ "KeyframeInterpolationType",
224
+ "Label",
225
+ "Language",
226
+ "Layer",
227
+ "LayerQuality",
228
+ "LayerSamplingQuality",
229
+ "LeadingType",
230
+ "LightLayer",
231
+ "LightType",
232
+ "LinearLightMode",
233
+ "LineJoinType",
234
+ "LineOrientation",
235
+ "LogType",
236
+ "LoopMode",
237
+ "LutInterpolationMethod",
238
+ "MarkerValue",
239
+ "MaskFeatherFalloff",
240
+ "MaskMode",
241
+ "MaskMotionBlur",
242
+ "MaskPropertyGroup",
243
+ "MotionBlurSetting",
244
+ "OpenExrFormatOptions",
245
+ "OutputAudio",
246
+ "OutputChannels",
247
+ "OutputColorDepth",
248
+ "OutputColorMode",
249
+ "OutputFormat",
250
+ "OutputModule",
251
+ "ParagraphDirection",
252
+ "ParagraphJustification",
253
+ "parse",
254
+ "parse_project",
255
+ "PlaceholderSource",
256
+ "PlayMode",
257
+ "PngFormatOptions",
258
+ "PostRenderAction",
259
+ "PREFType",
260
+ "Project",
261
+ "ProjectThread",
262
+ "Property",
263
+ "PropertyBase",
264
+ "PropertyControlType",
265
+ "PropertyGroup",
266
+ "PropertyType",
267
+ "PropertyValueType",
268
+ "ProxyUseSetting",
269
+ "PulldownMethod",
270
+ "PulldownPhase",
271
+ "PulldownSetting",
272
+ "PurgeTarget",
273
+ "RenderQuality",
274
+ "RenderQueue",
275
+ "RenderQueueItem",
276
+ "SettingsView",
277
+ "ResizeQuality",
278
+ "ResolveType",
279
+ "RQItemStatus",
280
+ "Shape",
281
+ "ShapeLayer",
282
+ "SolidSource",
283
+ "SoloSwitchesSetting",
284
+ "TargaFormatOptions",
285
+ "TextDocument",
286
+ "TextLayer",
287
+ "ThreeDModelLayer",
288
+ "TiffFormatOptions",
289
+ "TimeDisplayType",
290
+ "TimeSpanSource",
291
+ "ToolType",
292
+ "TrackMatteType",
293
+ "View",
294
+ "Viewer",
295
+ "ViewerType",
296
+ "ViewOptions",
297
+ "XmlFormatOptions",
298
+ ]
299
+
300
+
301
+ def parse(aep_file_path: str | os.PathLike[str]) -> Application:
302
+ """Parse an After Effects (.aep) project file and return an [Application][] instance.
303
+
304
+ This is the main entry point for the library. It parses the binary
305
+ RIFX data and returns an [Application][] object whose
306
+ [project][py_aep.models.application.Application.project] attribute
307
+ holds the full project tree.
308
+
309
+ Args:
310
+ aep_file_path: Path to the `.aep` file.
311
+
312
+ Example:
313
+ ```python
314
+ import py_aep
315
+
316
+ app = py_aep.parse("project.aep")
317
+ project = app.project
318
+ print(app.version)
319
+ ```
320
+ """
321
+ file_path = os.fspath(aep_file_path)
322
+ with Aep.from_file(file_path) as aep:
323
+ aep._read()
324
+ project = _parse_project(aep, file_path)
325
+ return parse_app(aep, project)
py_aep/cli/__init__.py ADDED
@@ -0,0 +1,9 @@
1
+ """Command-line interface tools for py_aep."""
2
+
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "compare",
7
+ "validate",
8
+ "visualize",
9
+ ]