unitytk 0.5.0__tar.gz → 0.6.0__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.
- {unitytk-0.5.0/unitytk.egg-info → unitytk-0.6.0}/PKG-INFO +3 -3
- {unitytk-0.5.0 → unitytk-0.6.0}/docs/README.md +1 -1
- {unitytk-0.5.0 → unitytk-0.6.0}/pyproject.toml +16 -1
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_base_test.py +20 -4
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_deploy_templates.py +101 -48
- unitytk-0.6.0/test/test_editor_catalog.py +86 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_keyed_visibility.py +1 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_render_effects_e2e.py +2 -2
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_render_opacity_e2e.py +1 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_shared_material_standalone.py +5 -1
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_standalone_enduser.py +1 -0
- unitytk-0.6.0/test/test_unity_compile.py +170 -0
- unitytk-0.6.0/test/test_unity_host.py +217 -0
- unitytk-0.6.0/test/test_unity_kernel_live.py +76 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/__init__.py +5 -1
- unitytk-0.6.0/unitytk/editor_operations.json +103 -0
- unitytk-0.6.0/unitytk/operations.json +86 -0
- unitytk-0.6.0/unitytk/operations.py +30 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/template_deployer.py +38 -47
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Change.g.cs +54 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Change.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/CompileErrorException.cs +17 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/CompileErrorException.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/IOperationTarget.cs +24 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/IOperationTarget.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/ISceneFiles.cs +34 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/ISceneFiles.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Invocation.cs +21 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Invocation.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Issue.g.cs +62 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Issue.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Json.cs +343 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Json.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/M3trik.Unitytk.Core.asmdef +14 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/M3trik.Unitytk.Core.asmdef.meta +7 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OpCall.g.cs +46 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OpCall.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OpRequest.g.cs +61 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OpRequest.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationCancelledException.cs +15 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationCancelledException.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationCatalogDocument.g.cs +50 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationCatalogDocument.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationEntry.g.cs +82 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationEntry.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationInterruptedException.cs +16 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/OperationInterruptedException.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Outcome.g.cs +67 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Outcome.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/PureSceneFiles.cs +34 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/PureSceneFiles.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/RunRules.cs +315 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/RunRules.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Wire.g.cs +187 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core/Wire.g.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Core.meta +8 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/BatchServer.cs +50 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/BatchServer.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/CSharpConsole.cs +355 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/CSharpConsole.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/Catalog.cs +74 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/Catalog.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/CommandLine.cs +18 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/CommandLine.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/Effect.cs +21 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/Effect.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/InstanceLock.cs +113 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/InstanceLock.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/JsonValue.cs +53 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/JsonValue.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/M3trik.Unitytk.Kernel.asmdef +18 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/M3trik.Unitytk.Kernel.asmdef.meta +7 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/OpContext.cs +95 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/OpContext.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/OperationAttribute.cs +42 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/OperationAttribute.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/OperationRegistry.cs +295 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/OperationRegistry.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/ProjectDoctor.cs +80 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/ProjectDoctor.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/RunFolder.cs +108 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/RunFolder.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/SceneCapture.cs +192 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/SceneCapture.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/SessionServer.cs +328 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/SessionServer.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/UnitySceneFiles.cs +89 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor/UnitySceneFiles.cs.meta +11 -0
- unitytk-0.6.0/unitytk/templates/Kernel/Editor.meta +8 -0
- unitytk-0.6.0/unitytk/templates/Kernel.meta +8 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/M3trik.Unitytk.asmdef +1 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/README.md +9 -6
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/UnitytkSettings.cs +12 -154
- unitytk-0.6.0/unitytk/unity_compile.py +400 -0
- unitytk-0.6.0/unitytk/unity_host.py +375 -0
- {unitytk-0.5.0 → unitytk-0.6.0/unitytk.egg-info}/PKG-INFO +3 -3
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk.egg-info/SOURCES.txt +81 -0
- unitytk-0.6.0/unitytk.egg-info/entry_points.txt +6 -0
- unitytk-0.6.0/unitytk.egg-info/requires.txt +1 -0
- unitytk-0.5.0/unitytk.egg-info/requires.txt +0 -1
- {unitytk-0.5.0 → unitytk-0.6.0}/COPYING +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/COPYING.LESSER +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/MANIFEST.in +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/setup.cfg +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_articulated_rig_runtime.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_asset_delivery.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_audio_events_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_blender_render_effects_e2e.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_blender_shadow_plane_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_blender_shot_metadata_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_bool_to_fade_curve.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_clip_name_contract_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_controller_runtime_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_embedded_dependencies_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_emissive_groups_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_fade_window_preservation.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_launcher.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_lightmap_metadata_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_maya_surface_materials_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_multi_section_audio_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_package.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_render_opacity_controller.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_render_opacity_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_run_tests.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_scene_builder.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_shadow_plane_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_shadow_plane_runtime_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_shot_metadata_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_shots_audio_sidebyside_integration.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/test/test_temp_projects.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/asset_delivery.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/launcher.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/scene_builder.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/ArticulatedRigController.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/ArticulatedRigController.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/ArticulatedRigPointerGrab.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/ArticulatedRigPointerGrab.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/ArticulationRecord.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/ArticulationRecord.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/XR/ArticulatedRigXRGrab.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/XR/ArticulatedRigXRGrab.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/XR/ArticulatedRigXRSetup.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/XR/ArticulatedRigXRSetup.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/XR/M3trik.Unitytk.XR.asmdef +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/XR/M3trik.Unitytk.XR.asmdef.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig/XR.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ArticulatedRig.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/AudioEvent/AudioEventController.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/AudioEvent/AudioEventController.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/AudioEvent/AudioRecord.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/AudioEvent/AudioRecord.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/AudioEvent.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroupController.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroupController.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroups.hlsl +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroups.hlsl.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroupsLit.shader +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroupsLit.shader.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroupsRecord.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup/EmissiveGroupsRecord.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/EmissiveGroup.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableCubeUV.hlsl +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableCubeUV.hlsl.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableLit.shader +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableLit.shader.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverablePmrem.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverablePmrem.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableShading.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableShading.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableToneMap.shader +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableToneMap.shader.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableToneMapFeature.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/DeliverableToneMapFeature.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/HandoffBlock.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/HandoffBlock.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/LightmapMetadataController.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/LightmapMetadataController.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/LightmapRecord.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/LightmapRecord.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/RenderingPolicy.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata/RenderingPolicy.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/LightmapMetadata.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/M3trik.Unitytk.asmdef.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MapAbsence.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MapAbsence.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MaterialRecord.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MaterialRecord.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MaterialRecord.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MaterialRecord.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MayaSurface/MayaSurfaceMaterialImporter.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MayaSurface/MayaSurfaceMaterialImporter.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/MayaSurface.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/README.md.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/RenderEffects/RenderEffectsController.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/RenderEffects/RenderEffectsController.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/RenderEffects.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowPlane.shader +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowPlane.shader.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowPlaneController.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowPlaneController.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowPlaneHorizon.hlsl +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowPlaneHorizon.hlsl.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowRecord.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane/ShadowRecord.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShadowPlane.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShotMetadata/AnimationRecord.g.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShotMetadata/AnimationRecord.g.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShotMetadata/ShotMetadataController.cs +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShotMetadata/ShotMetadataController.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/ShotMetadata.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/UnitytkSettings.cs.meta +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk/templates/__init__.py +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk.egg-info/dependency_links.txt +0 -0
- {unitytk-0.5.0 → unitytk-0.6.0}/unitytk.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: unitytk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: A modular Python toolkit for Unity interaction.
|
|
5
5
|
Author-email: Ryan Simpson <m3trik@outlook.com>
|
|
6
6
|
License: LGPL-3.0-or-later AND MIT
|
|
@@ -15,7 +15,7 @@ Requires-Python: >=3.9
|
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: COPYING
|
|
17
17
|
License-File: COPYING.LESSER
|
|
18
|
-
Requires-Dist: pythontk>=0.
|
|
18
|
+
Requires-Dist: pythontk>=0.20.0
|
|
19
19
|
Dynamic: license-file
|
|
20
20
|
|
|
21
21
|
[](https://www.gnu.org/licenses/lgpl-3.0.en.html)
|
|
@@ -33,7 +33,7 @@ The Python side: `UnityFinder` / `UnityLauncher` (find installed Editors, launch
|
|
|
33
33
|
- [`templates/README.md`](../unitytk/templates/README.md) — the C# template catalog (opacity, audio events, shot metadata, lightmaps), the FBX user-property import contract, and deployment (`TemplateDeployer.deploy_package` — embedded UPM package)
|
|
34
34
|
- [pythontk's `DELIVERABLE_FORMAT.md`](https://github.com/m3trik/pythontk/blob/main/pythontk/core_utils/engines/scene_export/DELIVERABLE_FORMAT.md) — the data a deliverable carries, which these templates consume (the `data_export` carrier and every scene record's block)
|
|
35
35
|
- [`CHANGELOG.md`](../CHANGELOG.md) — notable changes
|
|
36
|
-
- [`
|
|
36
|
+
- [`AGENTS.md`](../AGENTS.md) — contributor / agent conventions
|
|
37
37
|
|
|
38
38
|
## License
|
|
39
39
|
|
|
@@ -13,7 +13,7 @@ The Python side: `UnityFinder` / `UnityLauncher` (find installed Editors, launch
|
|
|
13
13
|
- [`templates/README.md`](../unitytk/templates/README.md) — the C# template catalog (opacity, audio events, shot metadata, lightmaps), the FBX user-property import contract, and deployment (`TemplateDeployer.deploy_package` — embedded UPM package)
|
|
14
14
|
- [pythontk's `DELIVERABLE_FORMAT.md`](https://github.com/m3trik/pythontk/blob/main/pythontk/core_utils/engines/scene_export/DELIVERABLE_FORMAT.md) — the data a deliverable carries, which these templates consume (the `data_export` carrier and every scene record's block)
|
|
15
15
|
- [`CHANGELOG.md`](../CHANGELOG.md) — notable changes
|
|
16
|
-
- [`
|
|
16
|
+
- [`AGENTS.md`](../AGENTS.md) — contributor / agent conventions
|
|
17
17
|
|
|
18
18
|
## License
|
|
19
19
|
|
|
@@ -36,7 +36,22 @@ classifiers = [
|
|
|
36
36
|
# any release -- the dependency pass's `materials` row and the readers'
|
|
37
37
|
# carrier rule, both after 0.18.2 at this writing -- so a green run speaks for
|
|
38
38
|
# that checkout, not for the floor.
|
|
39
|
-
|
|
39
|
+
# The floor is 0.20.0 since unitytk 0.6.0: the `unity` operation host is a
|
|
40
|
+
# `ptk.BatchOperationHost` kept per project by `ptk.SessionOperationHost`, and
|
|
41
|
+
# its catalogs are `ptk.OperationCatalog` / `OperationProvider` entry points --
|
|
42
|
+
# pythontk's operations engine, which first ships in 0.20.0 (an older pythontk
|
|
43
|
+
# raises AttributeError on the first `python -m pythontk ops` call).
|
|
44
|
+
dependencies = ["pythontk>=0.20.0"]
|
|
45
|
+
|
|
46
|
+
# Operations (``python -m pythontk ops``): unitytk's declarations, and the
|
|
47
|
+
# editor's C# operations as the kernel's catalog run wrote them.
|
|
48
|
+
[project.entry-points."pythontk.operations"]
|
|
49
|
+
unitytk = "unitytk.operations"
|
|
50
|
+
unitytk_editor = "unitytk.editor_operations"
|
|
51
|
+
|
|
52
|
+
# The ``unity`` host: calls in a Unity editor this tooling starts (C# kernel).
|
|
53
|
+
[project.entry-points."pythontk.operation_hosts"]
|
|
54
|
+
unity = "unitytk:UnityHost.operation_host"
|
|
40
55
|
|
|
41
56
|
[project.urls]
|
|
42
57
|
Homepage = "https://github.com/m3trik/unitytk"
|
|
@@ -643,12 +643,18 @@ class TemplateSourcesTest(unittest.TestCase):
|
|
|
643
643
|
self.addCleanup(store.cleanup)
|
|
644
644
|
dest = os.path.join(store.dir_path(), "Scripts")
|
|
645
645
|
copied = TemplateSources.copy_flat(
|
|
646
|
-
[
|
|
646
|
+
[
|
|
647
|
+
"UnitytkSettings.cs",
|
|
648
|
+
"Kernel/Core/Json.cs",
|
|
649
|
+
"RenderEffects/RenderEffectsController.cs",
|
|
650
|
+
],
|
|
651
|
+
dest,
|
|
647
652
|
)
|
|
648
653
|
self.assertEqual(
|
|
649
654
|
copied,
|
|
650
655
|
[
|
|
651
656
|
os.path.join(dest, "UnitytkSettings.cs"),
|
|
657
|
+
os.path.join(dest, "Json.cs"),
|
|
652
658
|
os.path.join(dest, "RenderEffectsController.cs"),
|
|
653
659
|
],
|
|
654
660
|
)
|
|
@@ -663,8 +669,18 @@ class TemplateSourcesTest(unittest.TestCase):
|
|
|
663
669
|
record = "AudioEvent/AudioRecord.g.cs"
|
|
664
670
|
self.assertEqual(TemplateSources.missing_records([controller]), [record])
|
|
665
671
|
self.assertEqual(TemplateSources.missing_records([controller, record]), [])
|
|
666
|
-
# A record named only in a comment is no dependency
|
|
667
|
-
|
|
672
|
+
# A record named only in a comment is no dependency; the core type a
|
|
673
|
+
# file names in full (UnitytkJson forwards to M3trik.Unitytk.Core.Json) is.
|
|
674
|
+
self.assertEqual(
|
|
675
|
+
TemplateSources.missing_records(["UnitytkSettings.cs"]), ["Kernel/Core/Json.cs"]
|
|
676
|
+
)
|
|
677
|
+
self.assertEqual(
|
|
678
|
+
TemplateSources.missing_records(["UnitytkSettings.cs", "Kernel/Core/Json.cs"]), []
|
|
679
|
+
)
|
|
680
|
+
# Inside the core's namespace a bare name is a dependency too.
|
|
681
|
+
self.assertIn(
|
|
682
|
+
"Kernel/Core/Change.g.cs", TemplateSources.missing_records(["Kernel/Core/Outcome.g.cs"])
|
|
683
|
+
)
|
|
668
684
|
|
|
669
685
|
import pythontk as ptk
|
|
670
686
|
|
|
@@ -672,7 +688,7 @@ class TemplateSourcesTest(unittest.TestCase):
|
|
|
672
688
|
self.addCleanup(store.cleanup)
|
|
673
689
|
dest = os.path.join(store.dir_path(), "Scripts")
|
|
674
690
|
with self.assertRaises(ValueError) as ctx:
|
|
675
|
-
TemplateSources.copy_flat(["UnitytkSettings.cs", controller], dest)
|
|
691
|
+
TemplateSources.copy_flat(["UnitytkSettings.cs", "Kernel/Core/Json.cs", controller], dest)
|
|
676
692
|
self.assertIn(record, str(ctx.exception))
|
|
677
693
|
self.assertFalse(os.path.exists(dest), "a refused set copies nothing")
|
|
678
694
|
|
|
@@ -80,6 +80,46 @@ def folders_of(names):
|
|
|
80
80
|
return sorted(folders)
|
|
81
81
|
|
|
82
82
|
|
|
83
|
+
#: The core's Kernel/ folder: the contract types and the editor kernel,
|
|
84
|
+
#: deployed with every selection (spelled out, so a file added or lost shows).
|
|
85
|
+
KERNEL = (
|
|
86
|
+
"Kernel/Core/Change.g.cs",
|
|
87
|
+
"Kernel/Core/CompileErrorException.cs",
|
|
88
|
+
"Kernel/Core/IOperationTarget.cs",
|
|
89
|
+
"Kernel/Core/ISceneFiles.cs",
|
|
90
|
+
"Kernel/Core/Invocation.cs",
|
|
91
|
+
"Kernel/Core/Issue.g.cs",
|
|
92
|
+
"Kernel/Core/Json.cs",
|
|
93
|
+
"Kernel/Core/M3trik.Unitytk.Core.asmdef",
|
|
94
|
+
"Kernel/Core/OpCall.g.cs",
|
|
95
|
+
"Kernel/Core/OpRequest.g.cs",
|
|
96
|
+
"Kernel/Core/OperationCancelledException.cs",
|
|
97
|
+
"Kernel/Core/OperationCatalogDocument.g.cs",
|
|
98
|
+
"Kernel/Core/OperationEntry.g.cs",
|
|
99
|
+
"Kernel/Core/OperationInterruptedException.cs",
|
|
100
|
+
"Kernel/Core/Outcome.g.cs",
|
|
101
|
+
"Kernel/Core/PureSceneFiles.cs",
|
|
102
|
+
"Kernel/Core/RunRules.cs",
|
|
103
|
+
"Kernel/Core/Wire.g.cs",
|
|
104
|
+
"Kernel/Editor/BatchServer.cs",
|
|
105
|
+
"Kernel/Editor/CSharpConsole.cs",
|
|
106
|
+
"Kernel/Editor/Catalog.cs",
|
|
107
|
+
"Kernel/Editor/CommandLine.cs",
|
|
108
|
+
"Kernel/Editor/Effect.cs",
|
|
109
|
+
"Kernel/Editor/InstanceLock.cs",
|
|
110
|
+
"Kernel/Editor/JsonValue.cs",
|
|
111
|
+
"Kernel/Editor/M3trik.Unitytk.Kernel.asmdef",
|
|
112
|
+
"Kernel/Editor/OpContext.cs",
|
|
113
|
+
"Kernel/Editor/OperationAttribute.cs",
|
|
114
|
+
"Kernel/Editor/OperationRegistry.cs",
|
|
115
|
+
"Kernel/Editor/ProjectDoctor.cs",
|
|
116
|
+
"Kernel/Editor/RunFolder.cs",
|
|
117
|
+
"Kernel/Editor/SceneCapture.cs",
|
|
118
|
+
"Kernel/Editor/SessionServer.cs",
|
|
119
|
+
"Kernel/Editor/UnitySceneFiles.cs",
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
|
|
83
123
|
def expected_meta(name, guid, is_folder=False):
|
|
84
124
|
"""The .meta Unity writes for bundle *name* carrying *guid*."""
|
|
85
125
|
suffix = "" if is_folder else os.path.splitext(name)[1]
|
|
@@ -116,6 +156,7 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
116
156
|
)
|
|
117
157
|
self.assertEqual(
|
|
118
158
|
names,
|
|
159
|
+
sorted(
|
|
119
160
|
[
|
|
120
161
|
"ArticulatedRig/ArticulatedRigController.cs",
|
|
121
162
|
"ArticulatedRig/ArticulatedRigPointerGrab.cs",
|
|
@@ -154,7 +195,8 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
154
195
|
"ShotMetadata/ShotMetadataController.cs",
|
|
155
196
|
"UnitytkSettings.cs",
|
|
156
197
|
"package.json",
|
|
157
|
-
]
|
|
198
|
+
]
|
|
199
|
+
+ list(KERNEL)),
|
|
158
200
|
)
|
|
159
201
|
for p in written:
|
|
160
202
|
self.assertTrue(os.path.isfile(p))
|
|
@@ -419,6 +461,7 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
419
461
|
)
|
|
420
462
|
self.assertEqual(
|
|
421
463
|
rel,
|
|
464
|
+
sorted(
|
|
422
465
|
[
|
|
423
466
|
"ArticulatedRig/ArticulatedRigController.cs",
|
|
424
467
|
"ArticulatedRig/ArticulatedRigPointerGrab.cs",
|
|
@@ -433,7 +476,8 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
433
476
|
"README.md",
|
|
434
477
|
"UnitytkSettings.cs",
|
|
435
478
|
"package.json",
|
|
436
|
-
]
|
|
479
|
+
]
|
|
480
|
+
+ list(KERNEL)),
|
|
437
481
|
)
|
|
438
482
|
asmdef = os.path.join(
|
|
439
483
|
self.package, "ArticulatedRig", "XR", "M3trik.Unitytk.XR.asmdef"
|
|
@@ -601,17 +645,20 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
601
645
|
names = sorted(os.path.basename(p) for p in written)
|
|
602
646
|
self.assertEqual(
|
|
603
647
|
names,
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
648
|
+
sorted(
|
|
649
|
+
[
|
|
650
|
+
"AudioEventController.cs",
|
|
651
|
+
"AudioRecord.g.cs",
|
|
652
|
+
"M3trik.Unitytk.asmdef",
|
|
653
|
+
"MapAbsence.g.cs",
|
|
654
|
+
"MaterialRecord.cs",
|
|
655
|
+
"MaterialRecord.g.cs",
|
|
656
|
+
"README.md",
|
|
657
|
+
"UnitytkSettings.cs",
|
|
658
|
+
"package.json",
|
|
659
|
+
]
|
|
660
|
+
+ [n.rsplit("/", 1)[-1] for n in KERNEL]
|
|
661
|
+
),
|
|
615
662
|
)
|
|
616
663
|
|
|
617
664
|
def test_selected_deploy_is_additive(self):
|
|
@@ -655,13 +702,29 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
655
702
|
)
|
|
656
703
|
self.assertTrue(os.path.isfile(self._deployed("UnitytkSettings.cs")))
|
|
657
704
|
|
|
658
|
-
def
|
|
659
|
-
"""
|
|
660
|
-
|
|
705
|
+
def test_removing_the_last_component_keeps_the_core(self):
|
|
706
|
+
"""The core's editor kernel serves operations with no channel deployed,
|
|
707
|
+
so removing the last controller leaves it; components=None removes all."""
|
|
661
708
|
TemplateDeployer.deploy_package(self.project, ["audio_event"])
|
|
662
709
|
TemplateDeployer.uninstall_package(self.project, ["audio_event"])
|
|
710
|
+
self.assertTrue(
|
|
711
|
+
os.path.isfile(self._deployed("Kernel/Editor/SessionServer.cs"))
|
|
712
|
+
)
|
|
713
|
+
self.assertFalse(os.path.exists(self._deployed("AudioEvent")))
|
|
714
|
+
TemplateDeployer.uninstall_package(self.project)
|
|
663
715
|
self.assertFalse(os.path.isdir(self.package))
|
|
664
716
|
|
|
717
|
+
def test_kernel_folder_is_core(self):
|
|
718
|
+
"""``Kernel/`` joins the required core (never a component of its own),
|
|
719
|
+
so every deploy carries the contract types and the editor kernel."""
|
|
720
|
+
core = next(c for c in TemplateDeployer.components() if c.key == "core")
|
|
721
|
+
self.assertIn("Kernel/Core/M3trik.Unitytk.Core.asmdef", core.files)
|
|
722
|
+
self.assertIn("Kernel/Editor/M3trik.Unitytk.Kernel.asmdef", core.files)
|
|
723
|
+
self.assertNotIn("kernel", {c.key for c in TemplateDeployer.components()})
|
|
724
|
+
TemplateDeployer.deploy_package(self.project, ["audio_event"])
|
|
725
|
+
for folder in ("Kernel", "Kernel/Core", "Kernel/Editor"):
|
|
726
|
+
self.assertTrue(os.path.isfile(self._deployed(folder) + ".meta"), folder)
|
|
727
|
+
|
|
665
728
|
def test_core_cannot_be_uninstalled_on_its_own(self):
|
|
666
729
|
TemplateDeployer.deploy_package(self.project)
|
|
667
730
|
with self.assertRaises(ValueError):
|
|
@@ -743,7 +806,8 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
743
806
|
self.project, "uninstall", ["audio_event"]
|
|
744
807
|
)
|
|
745
808
|
self.assertEqual([lvl for lvl, _ in uninstall], ["info"])
|
|
746
|
-
self.assertFalse(os.path.
|
|
809
|
+
self.assertFalse(os.path.exists(self._deployed("AudioEvent")))
|
|
810
|
+
self.assertTrue(os.path.isfile(self._deployed("UnitytkSettings.cs")), "core stays")
|
|
747
811
|
|
|
748
812
|
def test_run_action_rejects_an_empty_selection(self):
|
|
749
813
|
"""Nothing checked is a mistake to report, not a silent no-op (while
|
|
@@ -1029,34 +1093,15 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
1029
1093
|
self.assertNotIn(old, bundle, f"{old} is a live bundle path")
|
|
1030
1094
|
self.assertEqual(old.rsplit("/", 1)[-1], new.rsplit("/", 1)[-1], old)
|
|
1031
1095
|
|
|
1032
|
-
def
|
|
1033
|
-
"""``deploy`` took the flat names of 0.0.15 and earlier
|
|
1034
|
-
(
|
|
1035
|
-
|
|
1036
|
-
the release it stops working in. The notices are registered from
|
|
1037
|
-
import, so ``Deprecation.expired`` sees one nobody has tripped."""
|
|
1038
|
-
legacy = TemplateDeployer._LEGACY_LAYOUT
|
|
1039
|
-
for old, new in legacy.items():
|
|
1040
|
-
dest = os.path.join(self.tmp, "Flat", *old.split("/"))
|
|
1096
|
+
def test_deploy_no_longer_takes_a_pre_move_name(self):
|
|
1097
|
+
"""``deploy`` took the flat names of 0.0.15 and earlier for one window
|
|
1098
|
+
(due 0.2.0): a flat name now names no bundled template."""
|
|
1099
|
+
for old in TemplateDeployer._LEGACY_LAYOUT:
|
|
1041
1100
|
with self.subTest(old=old):
|
|
1042
|
-
with self.
|
|
1043
|
-
TemplateDeployer.deploy(old,
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
with open(dest, encoding="utf-8") as fh:
|
|
1047
|
-
want = bundle_ref(new).read_text(encoding="utf-8")
|
|
1048
|
-
self.assertEqual(fh.read(), want)
|
|
1049
|
-
with open(dest + ".meta", "rb") as fh:
|
|
1050
|
-
self.assertEqual(fh.read(), bundle_meta(new))
|
|
1051
|
-
records = {
|
|
1052
|
-
r.what: r.remove_in
|
|
1053
|
-
for r in ptk.Deprecation.registered(module="unitytk", kind="value")
|
|
1054
|
-
}
|
|
1055
|
-
for old in legacy:
|
|
1056
|
-
what = f"TemplateDeployer.deploy flat-layout name {old!r}"
|
|
1057
|
-
self.assertEqual(records.get(what), "0.2.0", old)
|
|
1058
|
-
with self.assertRaises(FileNotFoundError): # only the table's names
|
|
1059
|
-
TemplateDeployer.deploy("NoSuchTemplate.cs", os.path.join(self.tmp, "x"))
|
|
1101
|
+
with self.assertRaises(FileNotFoundError):
|
|
1102
|
+
TemplateDeployer.deploy(old, os.path.join(self.tmp, "Flat", *old.split("/")))
|
|
1103
|
+
records = {r.what for r in ptk.Deprecation.registered(module="unitytk", kind="value")}
|
|
1104
|
+
self.assertFalse([w for w in records if "flat-layout name" in w])
|
|
1060
1105
|
|
|
1061
1106
|
def test_a_flat_deployment_moves_into_feature_folders_keeping_its_guids(self):
|
|
1062
1107
|
metas = self._legacy_deploy()
|
|
@@ -1185,10 +1230,14 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
1185
1230
|
surface importer compiles against too. A deploy over a 0.4.0 package
|
|
1186
1231
|
moves each old copy with its .meta -- the GUIDs the project knows --
|
|
1187
1232
|
rather than writing a second copy that would compile twice; before the
|
|
1188
|
-
move, status counts the old copy under its name today.
|
|
1233
|
+
move, status counts the old copy under its name today. 0.6.0's kernel
|
|
1234
|
+
exceptions (``Kernel/Editor/`` to ``Kernel/Core/``) move the same way:
|
|
1235
|
+
a copy left behind defines a second type the rules never match."""
|
|
1189
1236
|
relocated = TemplateDeployer._RELOCATED
|
|
1190
|
-
self.
|
|
1191
|
-
|
|
1237
|
+
self.assertLessEqual(
|
|
1238
|
+
{"MapAbsence.g.cs", "MaterialRecord.cs", "MaterialRecord.g.cs",
|
|
1239
|
+
"Kernel/Core/CompileErrorException.cs", "Kernel/Core/OperationCancelledException.cs"},
|
|
1240
|
+
set(relocated.values()),
|
|
1192
1241
|
)
|
|
1193
1242
|
bundle = set(TemplateDeployer._bundle_names())
|
|
1194
1243
|
for old, new in relocated.items():
|
|
@@ -1242,7 +1291,11 @@ class DeployTemplateTest(unittest.TestCase):
|
|
|
1242
1291
|
|
|
1243
1292
|
optional = [c.key for c in TemplateDeployer.components() if not c.required]
|
|
1244
1293
|
TemplateDeployer.uninstall_package(self.project, optional)
|
|
1245
|
-
self.
|
|
1294
|
+
self.assertTrue(os.path.isfile(self._deployed("UnitytkSettings.cs")), "core stays")
|
|
1295
|
+
self.assertFalse(
|
|
1296
|
+
[n for n in TemplateDeployer._present(self.package) if "/" in n and not n.startswith("Kernel/")],
|
|
1297
|
+
"every component folder went",
|
|
1298
|
+
)
|
|
1246
1299
|
|
|
1247
1300
|
def test_meta_files_ship_in_the_wheel_and_the_sdist(self):
|
|
1248
1301
|
"""package-data builds the wheel and MANIFEST.in the sdist; a .meta
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# !/usr/bin/python
|
|
2
|
+
# coding=utf-8
|
|
3
|
+
"""The Unity editor kernel's operation catalog (``editor_operations.json``).
|
|
4
|
+
|
|
5
|
+
The kernel (``templates/Kernel/``, C#) declares its operations with
|
|
6
|
+
``[Operation]`` and an editor writes their catalog
|
|
7
|
+
(``M3trik.Unitytk.Kernel.Catalog.WriteFromCommandLine``). These tests hold
|
|
8
|
+
what needs no editor: the committed file is written exactly as Python writes
|
|
9
|
+
JSON, every declared id is in it, it keeps pythontk's catalog rules with its
|
|
10
|
+
twins in mayatk and blendertk, and the kernel's engine-free half passes its
|
|
11
|
+
own .NET tests where the SDK is installed.
|
|
12
|
+
"""
|
|
13
|
+
import json
|
|
14
|
+
import os
|
|
15
|
+
import re
|
|
16
|
+
import shutil
|
|
17
|
+
import subprocess
|
|
18
|
+
import unittest
|
|
19
|
+
|
|
20
|
+
import pythontk as ptk
|
|
21
|
+
|
|
22
|
+
PACKAGE = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "unitytk")
|
|
23
|
+
CATALOG = os.path.join(PACKAGE, "editor_operations.json")
|
|
24
|
+
KERNEL = os.path.join(PACKAGE, "templates", "Kernel")
|
|
25
|
+
CORE_TESTS = os.path.join(os.path.dirname(os.path.abspath(__file__)), "core_dotnet")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def declared_ids():
|
|
29
|
+
"""Every ``[Operation("unity.…")]`` id in the kernel's C#."""
|
|
30
|
+
ids = set()
|
|
31
|
+
for root, _dirs, files in os.walk(KERNEL):
|
|
32
|
+
for name in files:
|
|
33
|
+
if name.endswith(".cs"):
|
|
34
|
+
with open(os.path.join(root, name), encoding="utf-8") as fh:
|
|
35
|
+
ids.update(re.findall(r'\[Operation\(\s*"(unity\.[a-z0-9_.]+)"', fh.read()))
|
|
36
|
+
return ids
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class EditorCatalogTest(unittest.TestCase):
|
|
40
|
+
def setUp(self):
|
|
41
|
+
with open(CATALOG, encoding="utf-8", newline="") as fh:
|
|
42
|
+
self.text = fh.read()
|
|
43
|
+
self.document = json.loads(self.text)
|
|
44
|
+
|
|
45
|
+
def test_written_as_python_writes_json(self):
|
|
46
|
+
"""The C# writer's indent and escapes are Python's, so the file diffs like any catalog."""
|
|
47
|
+
self.assertEqual(self.text, json.dumps(self.document, indent=2) + "\n")
|
|
48
|
+
|
|
49
|
+
def test_every_declared_operation_is_listed(self):
|
|
50
|
+
"""A declaration added or renamed without writing the catalog shows here."""
|
|
51
|
+
listed = {entry["id"] for entry in self.document["operations"]}
|
|
52
|
+
self.assertEqual(listed, declared_ids())
|
|
53
|
+
self.assertEqual(self.document["provider"], "com.m3trik.unitytk")
|
|
54
|
+
|
|
55
|
+
def test_the_slice_zero_effects(self):
|
|
56
|
+
by_id = {entry["id"]: entry for entry in self.document["operations"]}
|
|
57
|
+
self.assertEqual(by_id["unity.csharp.exec"]["effect"], "code")
|
|
58
|
+
self.assertFalse(by_id["unity.csharp.exec"]["dry_run"], "code has no plan")
|
|
59
|
+
self.assertEqual(by_id["unity.scene.view"]["effect"], "read")
|
|
60
|
+
self.assertEqual(by_id["unity.project.doctor"]["effect"], "read")
|
|
61
|
+
|
|
62
|
+
def test_keeps_the_catalog_rules_and_agrees_with_its_twins(self):
|
|
63
|
+
"""``unity.scene.view`` takes the arguments ``maya.scene.view`` and
|
|
64
|
+
``blender.scene.view`` take: twins across hosts never differ."""
|
|
65
|
+
modules = [CATALOG.replace(os.sep, "/")]
|
|
66
|
+
for twin in ("mayatk.operations", "blendertk.operations"):
|
|
67
|
+
try:
|
|
68
|
+
__import__(twin)
|
|
69
|
+
except ImportError:
|
|
70
|
+
continue
|
|
71
|
+
modules.append(twin)
|
|
72
|
+
self.assertEqual(ptk.OperationProvider.check(modules=modules), [])
|
|
73
|
+
|
|
74
|
+
@unittest.skipUnless(shutil.which("dotnet"), "the .NET SDK is not installed")
|
|
75
|
+
def test_the_engine_free_core_passes_its_dotnet_tests(self):
|
|
76
|
+
done = subprocess.run(
|
|
77
|
+
["dotnet", "test", CORE_TESTS, "--nologo"],
|
|
78
|
+
capture_output=True,
|
|
79
|
+
text=True,
|
|
80
|
+
timeout=600,
|
|
81
|
+
)
|
|
82
|
+
self.assertEqual(done.returncode, 0, done.stdout[-4000:] + done.stderr[-2000:])
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
if __name__ == "__main__":
|
|
86
|
+
unittest.main()
|
|
@@ -53,6 +53,7 @@ FBX_ASSET_NAME = "fixture_keyed_visibility.fbx"
|
|
|
53
53
|
# UnitytkSettings.cs is the compile-coupled home of ImportGate/CarrierImport.
|
|
54
54
|
CS_FILES = [
|
|
55
55
|
"UnitytkSettings.cs",
|
|
56
|
+
"Kernel/Core/Json.cs",
|
|
56
57
|
"RenderEffects/RenderEffectsController.cs",
|
|
57
58
|
"AudioEvent/AudioEventController.cs",
|
|
58
59
|
"AudioEvent/AudioRecord.g.cs",
|
|
@@ -379,7 +379,7 @@ class TestRenderEffectsE2E(unittest.TestCase):
|
|
|
379
379
|
os.makedirs(assets_path, exist_ok=True)
|
|
380
380
|
shutil.copy2(fbx_path, os.path.join(assets_path, "effects_test.fbx"))
|
|
381
381
|
TemplateSources.copy_flat(
|
|
382
|
-
("UnitytkSettings.cs", "RenderEffects/RenderEffectsController.cs"),
|
|
382
|
+
("UnitytkSettings.cs", "Kernel/Core/Json.cs", "RenderEffects/RenderEffectsController.cs"),
|
|
383
383
|
os.path.join(assets_path, "Scripts"),
|
|
384
384
|
)
|
|
385
385
|
editor_path = os.path.join(assets_path, "Editor")
|
|
@@ -854,7 +854,7 @@ class TestRenderEffectsGlbParity(unittest.TestCase):
|
|
|
854
854
|
os.path.join(self.temp_dir, name), os.path.join(assets_path, name)
|
|
855
855
|
)
|
|
856
856
|
TemplateSources.copy_flat(
|
|
857
|
-
("UnitytkSettings.cs", "RenderEffects/RenderEffectsController.cs"),
|
|
857
|
+
("UnitytkSettings.cs", "Kernel/Core/Json.cs", "RenderEffects/RenderEffectsController.cs"),
|
|
858
858
|
os.path.join(assets_path, "Scripts"),
|
|
859
859
|
)
|
|
860
860
|
editor_path = os.path.join(assets_path, "Editor")
|
|
@@ -487,6 +487,7 @@ class TestRenderOpacityE2E(unittest.TestCase):
|
|
|
487
487
|
TemplateSources.copy_flat(
|
|
488
488
|
(
|
|
489
489
|
"UnitytkSettings.cs",
|
|
490
|
+
"Kernel/Core/Json.cs",
|
|
490
491
|
"RenderEffects/RenderEffectsController.cs",
|
|
491
492
|
"AudioEvent/AudioEventController.cs",
|
|
492
493
|
"AudioEvent/AudioRecord.g.cs",
|
|
@@ -42,7 +42,11 @@ SCRIPTS_DIR = os.path.dirname(
|
|
|
42
42
|
|
|
43
43
|
# Bundle paths. UnitytkSettings.cs is the compile-coupled home of
|
|
44
44
|
# ImportGate/CarrierImport.
|
|
45
|
-
CS_FILES = [
|
|
45
|
+
CS_FILES = [
|
|
46
|
+
"UnitytkSettings.cs",
|
|
47
|
+
"Kernel/Core/Json.cs",
|
|
48
|
+
"RenderEffects/RenderEffectsController.cs",
|
|
49
|
+
]
|
|
46
50
|
|
|
47
51
|
# Object names used in the Maya scene
|
|
48
52
|
OBJECT_NAMES = ["piece_A", "piece_B", "piece_C"]
|
|
@@ -58,6 +58,7 @@ PACKAGE_SUBFOLDER = "MyModel_Package"
|
|
|
58
58
|
# test simulates an end user WITHOUT Python unitytk, copying the files flat).
|
|
59
59
|
CS_FILES = [
|
|
60
60
|
"UnitytkSettings.cs",
|
|
61
|
+
"Kernel/Core/Json.cs",
|
|
61
62
|
"RenderEffects/RenderEffectsController.cs",
|
|
62
63
|
"AudioEvent/AudioEventController.cs",
|
|
63
64
|
"AudioEvent/AudioRecord.g.cs",
|