Skip to content

validate_filename_has_extension

ValidateFilenameHasExtension

Bases: InstancePlugin

Ensure the Saver has an extension in the filename path

This disallows files written as filename instead of filename.frame.ext. Fusion does not always set an extension for your filename when changing the file format of the saver.

Source code in client/ayon_fusion/plugins/publish/validate_filename_has_extension.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class ValidateFilenameHasExtension(pyblish.api.InstancePlugin):
    """Ensure the Saver has an extension in the filename path

    This disallows files written as `filename` instead of `filename.frame.ext`.
    Fusion does not always set an extension for your filename when
    changing the file format of the saver.

    """

    order = pyblish.api.ValidatorOrder
    label = "Validate Filename Has Extension"
    families = ["render", "image"]
    hosts = ["fusion"]
    actions = [SelectInvalidAction]

    def process(self, instance):
        invalid = self.get_invalid(instance)
        if invalid:
            raise PublishValidationError("Found Saver without an extension",
                                         title=self.label)

    @classmethod
    def get_invalid(cls, instance):

        path = instance.data["expectedFiles"][0]
        fname, ext = os.path.splitext(path)

        if not ext:
            tool = instance.data["tool"]
            cls.log.error("%s has no extension specified" % tool.Name)
            return [tool]

        return []