Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skip invalid containers with a warning #179

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

BigRoy
Copy link
Contributor

@BigRoy BigRoy commented Nov 14, 2024

Changelog Description

Skip invalid containers with a warning - instead of breaking publishi…ng, loader, inventory, etc.

Additional review information

This avoids similar issues as #178 does - but is a 'fix' that would avoid the issue being problematic in existing scenes (instead of just on containerise) or if the container breaks in any other way.

The most likely case for these containers to become invalid was the issue #178 solves by 'bundling' undo so that users can't undo "half of the container creation" deleting only a few of its attributes. However, users can still break things in magical ways, time has shown us.

It would now log e.g. this if the container is incomplete and incomplete containers are not listed in the scene inventory either, because well they are incomplete:

// Warning: ayon_maya : Container 'char_hero_pointcacheMain_01__pointcacheMain_CON' is missing required keys: ['loader', 'representation']

Testing notes:

  1. Load a few products
  2. In outliner, enable: Display > Ignore "Hidden in outliner"
  3. Select the containers
  4. Randomly delete attributes on these instances, like loader, representation, etc.

A warning should be logged if any of the required keys ends up missing. The required keys are considered to be ["id", "name", "namespace", "loader", "representation"]

@BigRoy BigRoy added type: enhancement Improvement of existing functionality or minor addition community Issues and PRs coming from the community members labels Nov 14, 2024
@BigRoy BigRoy self-assigned this Nov 14, 2024
Comment on lines +355 to +356
required = ["id", "name", "namespace", "loader", "representation"]
missing = [key for key in required if key not in data]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
required = ["id", "name", "namespace", "loader", "representation"]
missing = [key for key in required if key not in data]
required = {"id", "name", "namespace", "loader", "representation"}
missing = required - set(data.keys())

if missing:
log.warning("Container '%s' is missing required keys: %s",
container, missing)
return {}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shoulnd't this return None rather than empty dictionary?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not according to the functions type hint :D
Checked the usage of the function and noticed this may also influence setdress in maya - so I may want to do this differently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
community Issues and PRs coming from the community members type: enhancement Improvement of existing functionality or minor addition
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants