Lorenzo Angeli

  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by Lorenzo Angeli

  1. I'd like to report here , for other users which might find similar issues, the root cause which has been resolved through the internal ticketing system.

    Here the full reply from our developer:


    The key error is because the JSON blob with which the server responds is used as the error message when the ServerError is raised. When displaying that error, we call the format() method on the error message string. Since it's a JSON blob, the braces are interpreted as replacement fields, so format() expects keys to have a key-value pair for the first word inside the first braces in the server response, which is "storage_scenario". This is erroneous.

    we are looking now on how to properly fix this for an upcoming api release.

  2. Hi @tweak-wtf , thanks for reporting back , and good idea to raise the overall logging level !
    Sadly though, I cannot see anything in the errors that would help pin point the root cause.

    As the error seems to be happening from within the plugin only, and not from a plain shell or plain maya, I'd suggest have the pyblishs developers involved. 
    If you get any further information coming out from them, please feel free to report here so we can cross examine the results.
    As last thing , could you please check what interpreter pyblish is using adding at the beginning of your script: 

    import sys
    print sys.executable

    In the meanwhile we'll keep looking on potential causes on our side.


  3. Hi @tweak-wtf sorry to see you are having problems.

    The error seems to be coming from a wrong deserialization of the server response (json) relative to the storage scenario.
    This could be caused by a variety of things related to the network itself (proxy, firewall etc....)

    Could you please check if any of these changes have been put in place before this error have started happening ? 
    I've trying to replicate it with you same version of the ftrack-python-api without success so far.

    Looking forward to hear more from you !
    In the meanwhile we'll keep looking for other potential reasons.




  4. Hi @Jakub Trllo, I've just tried the code you sent and cannot get to reproduce your issue.

    Here is what I've been doing and the code I've used.

    1) I have manually created a note on a task from the web interface.
    2) I have run the following code to add a component to the given note (please "note", that I have just one , so the query is quite simple).

    import ftrack_api
    session = ftrack_api.Session()
    server_location = session.query(
        'Location where name is "ftrack.server"'
    note = session.query('Note').first() # get the only note I have in the system
    # Create component and name it "My file".
    component = session.create_component(
        data={'name': 'My file'},
    # Attach the component to the note.
        {'component_id': component['id'], 'note_id': note['id']}

    Once run this code I then run this other snippet :


    import ftrack_api
    session = ftrack_api.Session(
    server_location = session.query(
        'Location where name is "ftrack.server"'
    # just pretend that note with component will be queried...
    note = session.query('Note').first()
    for note_component in note['note_components']:
        component = note_component['component']
        download_url = server_location.get_url(component)
        print download_url # I just print the path as the issue seems on retrieving it.

    When running the above code this is the result I'm getting:


    Hope it helps.

  5. Download 1.2.1


    • Add fbx output for geometry.

    Install integration as plugin:

    1) remove previous plugin from either connect plugins or connect resources.
    2) download the new version from the above link
    2) decompress the zip in the FTRACK_CONNECT_PLUGIN_PATH
    3) restart connect

    If there's any problem please let us know!

  6. Welcome to the new integration forum for the Perforce plugin!

    This new plugin provides a seamless integration with Perforce Helix Core in the form of a new storage scenario, allowing artists to publish and retrieve versions straight from it.

    The new integration is packaged as a native ftrack plugin, ready to be dropped in to place.
    This forum will have a new thread published for each release and provide a download link for each build. 

    You can subscribe to this forum section to receive a notification when a new build is added.
    We recommend you use the latest build when available.

    To install, download the zipped file from the correct version and follow these instructions to get to the plugin folder, then decompress the zip in there.


    If you want to build from sources, clone the correct branch and run

    python setup.py build_plugin

    Bug report

    When reporting bugs to support, please remember to include:

    • Log file
    • Plugin version
    • Connect version
    • Any stack trace or error you are receiving.

  7. Download ftrack-connect-package 1.1.1

    What's new ? 

    This patch version aims to provide latest and greatest api , as well as a minor (linux only) improvement to provide system launcher for connect package as well as the latest version of ftrack connect nuke studio and latest python api.


    • ftrack-connect-nuke-studio 2.2.0 
      • Extend context template to support episodes
      • Support for multi-track export.
      • Fix Hiero template parser.
      • Nuke studio now requires a context (project) to start from
    • ftrack-connect 1.1.7
      • Added button in About dialog to create a Linux desktop entry file to
        make Connect appear in the applications menu.

    • ftrack-python-api 1.8.0 
      • Event description component-removed report component-added event signature.
      • Add new scalar type `object` to factory.
      • Add support for list of `computed` attributes as part of schema
        definition. A computed attribute is derived on the server side, and can
        be time dependentant and differ between users. As such a computed
        attribute is not suitable for long term encoding and will not be encoded
        with the `persisted_only` stragey.
      •  The `delayed_job` method has been deprecated in favour of a direct
        `Session.call`. See :ref:`example/sync_with_ldap` for example usage.
      • Private method :meth:`Session._call` has been converted to
        a public method, :meth:`Session.call`.
        The private method will continue to work, but a pending deprecation
        warning will be issued when used. The private method will be removed
        entirely in version 2.0.
      • Event server connection error is too generic,
        the actual error is now reported to users.

    Known issue

    • None reported atm
    Edited  by Lorenzo Angeli 
    update download links

  8. Download 2.2.0

    What's new

    • Change: Application requires project context to start
    • Add: Context template update for Episodes support

    How to install

    1. stop ftrack-connect-package
    2. remove previous nuke studio plugin from : 
    3. download and uncompress the new version in :
    4. restart ftrack-connect-package

  9. Download 2.1.3

    What's new

    • Improve errors and bug reporting
    • Fix EDL publisher produces multiple empty components.

    How to install

    1. stop ftrack-connect-package
    2. remove previous nuke studio plugin from : 
    3. download and uncompress the new version in :
    4. restart ftrack-connect-package


  10. Hi @Jamie Kenyon, the easier way would be to use the ftrack-python-api directly rather than the connector ones, which really have not been built for this purpose, that said though, this is some basic code you can start playing with :

    please also note, connector is built on top of the legacy api and not the latest ftrack-python-api , hence you might have to do some dance to convert data between one another.
    Is not hard, just inefficient.

    from ftrack_connect_maya.connector.mayaassets import SceneAsset
    from ftrack_connect.connector.base import FTAssetObject
    scene_asset = SceneAsset()
    iAObj = FTAssetObject(


    Hope it helps.


  11. Hi @lloydwood, bear with me as I'm not really sure I'm following.

    You are working on a Character (asset build, type Character) named TestCharacter built off different tasks (Modeling and Rigging), and publishing the model (Asset Type: Geo) and The rig (Asset Type: Rig) as whole as main component to their relative tasks.

    Each one of the components published on task will be versioned separately.
    Seem quite correct to me as overall workflow, as this will allow to keep track of your model and your rig with their own versions.

    Now, let's try to play with a bigger asset and see how they could be used....

    • Folder: Assets
      • AssetBuild: Bumblebee 
        • Task: Modeling
          • Asset: Head (type: Geo)
            • Version: 1
              • Component: Cables, 
              • Component: Shell
            • Version: 2
              • Component: Cables, 
              • Component: Shell
          • Asset: Arm (type: Geo)
            • Version: 1
              • Component: Cables
              • Component: Shell  
        • Task: Rig
          • Asset: Main (type: Rig)
            • Version: 1
              • Component : Main 
                (here we rig all the assets and their components, based on the latest modeling assets and components versions)

    Of course, this is a way of using it, but hope it helps a bit how you can use each and every bit you can publish and version.
    If is not clear or is not what where you are after, just let me know!

  12. Hi @Mike, virtual environment are made so whatever you do install in there (python module wise) will remain sandboxed and won't affect the system.
    If you want to use Lucidity I'd suggest to create a virtualenv , activate it, and install the modules you need in there.
    Once done , you can use an event like the one I posted to extend the PYTHONPATH including the one in the virtualenv to make them pick up.
    Hope it helps!

  13. Hi @Mike, although totally doable, rather than modifying the original maya hook I'd suggest to provide a separate event in your central or local FTRACK_CONNECT_PLUGIN_PATH such as this one that modifies the env at startup time.

    import os
    import ftrack
    import ftrack_connect.application
    python_dependencies = 'path to your modules'
    maya_script_path = 'path to maya python scripts'
    def on_application_launch(event):
        '''Handle application launch and add environment to *event*.'''
    def register(registry):
        '''Subscribe to application launch events on *registry*.'''
        if registry is not ftrack.EVENT_HANDLERS:
            'topic=ftrack.connect.application.launch and data.application.identifier=maya*',

    For what concerns Lucidity, this module has been removed from ftrack connect package from verion 1.0.0 on:

    I'd suggest to install separately and provide it through the above system if you need it.

    Hope it helps.


  14. Hi @postmodern Please do , 
    we are always after contribution from the community !

    For pyblish beta might be better to provide your own repository and post it here on the forum so other users can use it !

    A tech note for Pull requests (to have it reviewed/merged faster):

    • Provide explanation on what the feature/bug fix is about
    • Provide some docs on how to perform the test of the changes (and files if needed)
    • Stick to pep8
    • Use ' instead of "
    • Use tabs instead of spaces
    • Update the changelog in the docs
    • Do not update the version
    • Ensure does not introduce regressions

    looking forward to see your fixes and improvement
    Thanks in advance for your contribution !