You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We either need to provide working pywin32 to every supported hosts (but for that we would need to build it) or we need to delegate keyring access to AYON process - call subprocess from pyblish plugin to get the information.
Steps To Reproduce:
Run Maya 2025 (or any other host without python 3.9) along with the ayon-perforce. collect_perforce_login plugin will crash on publish.
Workaround is to limit the plugin to Unreal host right now so it won't break anything else until resolved
Relevant log output:
Traceback (most recent call last):
File "C:\Users\annat\AppData\Local\Ynput\AYON\dependency_packages\ayon_2502241810_windows.zip\dependencies\pyblish\plugin.py", line 528, in __explicit_process
runner(*args)
File "C:\Users\annat\Documents\Projects\Ayon\ayon-perforce\client\ayon_perforce\plugins\publish\collect_perforce_login.py", line 50, in process
conn_info = self._get_conn_info(
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annat\Documents\Projects\Ayon\ayon-perforce\client\ayon_perforce\plugins\publish\collect_perforce_login.py", line 101, in _get_conn_info
conn_info = perforce_addon.get_connection_info(**conn_info_payload)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annat\Documents\Projects\Ayon\ayon-perforce\client\ayon_perforce\addon.py", line 96, in get_connection_info
username, password = get_local_login()
^^^^^^^^^^^^^^^^^
File "C:\Users\annat\Documents\Projects\Ayon\ayon-perforce\client\ayon_perforce\lib.py", line 20, in get_local_login
username = reg.get_item("value")
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annat\Documents\Projects\Ayon\ayon-core\client\ayon_core\lib\local_settings.py", line 170, in get_item
value = keyring.get_password(self._name, name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annat\Documents\Projects\Ayon\ayon-launcher\.venv\lib\site-packages\keyring\core.py", line 56, in get_password
returnget_keyring().get_password(service_name, username)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annat\Documents\Projects\Ayon\ayon-launcher\.venv\lib\site-packages\keyring\backends\Windows.py", line 100, in get_password
res = self._get_password(service)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annat\Documents\Projects\Ayon\ayon-launcher\.venv\lib\site-packages\keyring\backends\Windows.py", line 113, in _get_password
except pywintypes.error as e:
^^^^^^^^^^
NameError: name 'pywintypes' is not defined
Is there an existing issue for this?
Description
Current Behavior
Whenever https://github.com/ynput/ayon-perforce/blob/develop/client/ayon_perforce/plugins/publish/collect_perforce_login.py
runs, it needs pywin32 because AYON is accessing keyring and that in turn needs pywin32. It is binary dependency and currently it is shipped with the launcher. If host python differs from what we have in launcher (currently python 3.9), it crashes.
Note
This is specific for Windows.
Expected Behavior
We either need to provide working pywin32 to every supported hosts (but for that we would need to build it) or we need to delegate keyring access to AYON process - call subprocess from pyblish plugin to get the information.
Steps To Reproduce:
Run Maya 2025 (or any other host without python 3.9) along with the ayon-perforce.
collect_perforce_loginplugin will crash on publish.Additional context:
Version
This happens on 84193f8
Note
Workaround is to limit the plugin to Unreal host right now so it won't break anything else until resolved
Relevant log output: