cwmaya 0.0.3
Maya plugin for Conductor Cloud Rendering Platform.

# Maya submitter plugin

Maya plugin node to set up task dependency submissions.

## Install from PyPi
*NOTE: If you'd like to contribute or develop templates, skip to [Install from GitHub](#install-from-github) section*

**Install the latest version.**
```bash
pip3 install --upgrade cwmaya --target=$HOME/CoreWeave/maya
```

**Then setup the Maya module.** 

```bash
python3 $HOME/CoreWeave/maya/cwmaya/post_install.py
```


## Install from GitHub

```bash
git clone git@github.com:ConductorTechnologies/cwmaya.git
cd cwmaya
pip3 install --upgrade -r requirements.txt --target=$HOME/Sandbox/maya
python3 $HOME/Sandbox/maya/cwmaya/post_install.py
```

Open the Plugin Manager and load **CoreWeave.py**.

To set up a job, choose **CoreWeave->Storm Window** from the main Maya menu bar.

## Install the Desktop app

The desktop app is a standalone application that allows you to visualize graphs created by the Maya plugin. It is not required to submit jobs, but it is extremely useful.

To install the desktop app in development mode, go to the repo and follow the [instructions in the README](https://github.com/ConductorTechnologies/cioapp). 

Alternatively, go to the [releases](https://github.com/ConductorTechnologies/cioapp/releases) page and download a build for your platform. 

*NOTE: Some M series Macs may have trouble running prebuilt versions of the app. If it doesn't work, you can run your own build, or work in development mode. [See the README](https://github.com/ConductorTechnologies/cioapp) for details.* 

## Usage

* To learn the system with a fake job, see the [busywork tutorial](./doc/busywork_tutorial.md).
* To learn about writing templates, see the [template docs](./doc/templates.md).
* For a comprehensive reference, see the [reference](./doc/reference.md) documentation.

## Have fun!

## Changelog

## Version:0.0.3 -- 14 Feb 2025

* Update the About window with cirrect module constant and copyright year

## Version:0.0.1 -- 14 Feb 2025

* Updated cwstorm dependency to version 2.1.1
* Merged pull request #6 to add flat task templates and hints functionality
* Improved UI by merging General and Job tabs into unified interface
* Enhanced data models with better logging, error handling
* Added plugin detection
* Added dynamic entry and duplicate prevention to SoftwareStackControl
* Restored core data models to support in-session hints
* Added hints frame to script tab
* Improved submit button
* Created flat task template system
* Re-implemented coredata controls in plugin
* Updated installer to use the cache in development mode
* Restructured and renamed components for clarity and extensibility



## Version:0.0.1-rc.12 -- 28 Jan 2025

* Added instructions for system administrators

## Version:0.0.1-rc.11 -- 27 Jan 2025

* Tidied up the manifest file and fixed a bug where custom instal;l paths would not be found by the mod file

## Version:0.0.1-rc.10 -- 27 Jan 2025

* Improved error handling and reporting in the installer script
* Added support for installing to multiple Maya versions at once

## Version:0.0.1-rc.9 -- 27 Jan 2025

* Make the target descriptions clearer
* Change release types to take up less space.
* Clean up detail prose.

## Version:0.0.1-rc.8 -- 26 Jan 2025

* Modified detail.md to give sys-admin download instructions

## Version:0.0.1-rc.7 -- 26 Jan 2025

* This release makes changes to the cwapps integration by way of the skulk_pre_push script.
  * It removes the releasenotes entry.
  * It copies in the entire changelog file.
  * While adding an entry for the current version, it removes versions of the same release label if they exist.

## Version:0.0.1-rc.6 -- 26 Jan 2025

* Consolidate the circleci config to copy the cwapps repo on tagged releases

## Version:0.0.1-rc.5 -- 25 Jan 2025

* Changed cwapps CICD flow to use manifest file where possible

## Version:0.0.1-rc.4 -- 24 Jan 2025
* Fix bad import in reloader bug
* CircleCI now uses the pyproject.toml file for build dependencies
* Updated skulk version requirement
* Updated setup.py and requirements files
* Refactored desktop app integration:
* Desktop app now does upload normalization
* Desktop app now connects to desktop app from context manager to function
* Removed authentication and related properties for now
* Cleaned up unused functions and dead code
* Removed unnecessary UI buttons
* Documentation improvements

## Version 0.0.1-beta.29
* depend on storm 0.6.3

## Version 0.0.1-beta.27

* Make batch script self contained to avoid the need to escape quotes


## Version 0.0.1-beta.25

* Adds asset scraping for maya based tasks
* Send to composer checks token expiry and refetches from Conductor if neccessary.
* Send to composer always sends along the coredata so that Edit panels can have the correct projects and instance types.

## Version 0.0.1-beta.24

* View-in-vscode now finds the code command automatiically.
* Changes the commands attribute from an array of commands, to an array of arrays of args. Users specify every arg separately.
* Busywork default and scene updated for args
* Updates Busywork and Slinky scene files and default presets

## Version 0.0.1-beta.23

* Copied over presets and updates scenefile
* Use b64 encoded python script generator
* Don't reload unless env var present CWMAYA_RELOAD_FOR_DEVELOPMENT
* Fix missing token bug
* More concise warning for exuisting presets on plugin load


## Version 0.0.1-beta.22

* Adds better diagnostic display in workflow job index.
* Adds health check buttons.

## Version 0.0.1-beta.20

* Make the example project have a better name and add github actions to make it available for download in the releases folder.
* Adds the Maya bin path to the PATH in the clipboard script so that the result is ready to run in a terminal.
* No longer rely on storm fileRule because when it has not been set the stormdir token is misleading.

## Version 0.0.1-beta.18

* Adds workspace.mel to uploads
* Adds basic upload pack to renders, even though mostly not needed
* Adds a clipboard button for the commands widget
* Adds storm comp filerule and change the token name to stormdir
* Only print the automatic presets install warnings when not batch
* Refactor send coredata to desktop app

## Version 0.0.1-beta.17

* Now uses nodePreset mechanism to implement default configuration. developers can save presets, copy to repo, and then when customer loads plugin, the default presets, and any others we include, will be copied over to their local presets folder.

## Version 0.0.1-beta.15

* Implement script control to facilitate creation of maya batch commands
* Adds storm_remote module - makes resources available on the farm

## Version 0.0.1-beta.14

* Adds menu item to send real coredata to the desktop app

## Version 0.0.1-beta.13

* Adds semantic coordinates
* Only attempt to open desktop app if health check fails
* Change BC notification port - 8000 clashes with workflow api
* Bump storm requirement

## Version 0.0.1-beta.12 

* Adds a utility to show json in vscode
* Adds ability to export self contained submission to python file 
* Adds menu item to how account info
* make context less error prone, and display useful info if it fails due to bad token use
* adds an upload optimization algorithm to ensure each file is only specified once while minimizing the number of Upload nodes

## Version 0.0.1-beta.11

* Set up busywork tutorial and documentation

## Version 0.0.1-beta.10

* Bring the README up to date and add template authoring instructions

## Version 0.0.1-beta.9

* Reset dag node unique naming stack before each compute so that successive graphs start from 0
* On Send-to-Composer, we now automatically open the desktop app if it is not already open.
* Adds a presets section to the tools menu with load and save options.

## Version 0.0.1-beta.8
* Adds template for a test job to run several tasks one after the other, chained up.
* Massive refactor of the template system in order to make it easier to add 3rd party templates.
* The window now remembers the last loaded template
* Refactored to minimize inheritance and adopt a more composition-based approach
* Adds an oiption to save the spec to disk
* Flattened all menu items so its easier to find items quickly.
* Show json in vscode rather than in a window in Maya
* Adds a Namefield for easy name editing
* Adds an example project

## Version 0.0.1-beta.7
* Adds a mechanism to specify default template values
* Adds a context manager to do stuff in the context of a saved scene
* Adds a menu item to save the JSON payload to a file
* Adds a context manager to send stuff to desktop app in the context of a healthy authenticated session

## Version 0.0.1-beta.6
* Adds a template for a SimRenderMovie graph
* Removed the AssExportKick graph template for now.

## Version 0.0.1-beta.4
* Retrieves actual Core Data entities from Conductor
* Reduces the amount of information broadcasted to Slack channels
* Includes the versions of ciocore and storm DSL  on PyPi
* Resolves software and environment in the compute function
* Refactors inheritance hierarchy as BaseTab to TaskTab to ConcreteTask implementations
* Adds UI components for managing u=inst types and software/plugin relationships 
* Relaxes the dependencies on the 'requests' library
* Adds an output path configuration option
* Adds window to visualize submission results
* Adds automatic hydration upon application start
* Integrates a smoke test preset node into the workflow
* Adds a user interface for managing extra assets

* 0.0.1-beta.2
* Initial import