This article explains how to use the Rhino SDK to create a Python code object.
Note: To learn how to create a Python Code Object using the Rhino FCP UI, see Creating a new Python Code Object.
Prerequisites
Before starting this process, you should have already:
- Created a Project using the Rhino SDK or the User Interface (UI).
- Created an Input Data Schema using the Rhino SDK or UI.
- [Optional] Created an Output Data Schema using the Rhino SDK or UI. If you choose not to create an output Data Schema, the system will auto-generate the Data Schema of the output for your Code.
Import your Python Dependencies
import rhino_health as rh from rhino_health.lib.endpoints.code.code_objects_dataclass import ( CodeObject, CodeObjectCreateInput, CodeTypes, CodeRunType ) import getpass
Note: Remember to change all lines with CHANGE_ME comments above them in all the blocks below.
Log into the Rhino SDK using your FCP Credentials
Your username will be the email address you log into the Rhino FCP platform with.
print("Logging In")
# CHANGE_ME: MY_USERNAME
my_username = "MY_USERNAME"
session = rh.login(username=my_username, password=getpass.getpass())
print("Logged In")Get Supporting FCP Information Needed to Create Your Code Object
At this point, you will need the name of your project, your input Data Schema name, optionally your output Data Schema name, and your Python code. You can also retrieve each object's UUID by following the instructions here: How do I retrieve a UUID for a Project, Collaborator, Schema, Dataset, Code Object's, or Code Run?
# CHANGE_ME: YOUR_FCP_PROJECT_NAME
project = session.project.get_project_by_name('YOUR_FCP_PROJECT_NAME')
# CHANGE_ME: INPUT_SCHEMA_NAME & Possibly Version Number too
input_schema = session.project.get_data_schema_by_name('INPUT_SCHEMA_NAME', project_uid=project.uid, version=1)
# CHANGE_ME: OUTPUT_SCHEMA_NAME & Possibly Version Number too
output_schema = session.project.get_data_schema_by_name('OUTPUT_SCHEMA_NAME', project_uid=project.uid, version=1)
# CHANGE_ME: PYTHON_CODE
python_code = """PYTHON_CODE"""Create Your Python Code Object
During the creation of your CodeObject, you will provide it with various pieces of data similar to how a Code Object is created within the UI. You will give the CodeObject a name, description, input_data_schema_uids, output_data_schema_uids, project_uid, code_object_type, and the config where you will provide your Python code and other information dependent on your code run type.
[Option 1] CodeObject with a default Code Run Type
code_object_params = CodeObjectCreateInput(
# CHANGE_ME: CODE_OBJECT_NAME
name = "CODE_OBJECT_NAME",
# CHANGE_ME: CODE_OBJECT_DESCRIPTION
description = "CODE_OBJECT_DESCRIPTION",
input_data_schema_uids = [input_schema.uid],
# output_schema.uid or None to Infer Output Data Schema
output_data_schema_uids = [output_schema.uid],
project_uid = project.uid,
code_object_type = CodeTypes.PYTHON_CODE,
config = {
"code_run_type": CodeRunType.DEFAULT,
"python_code": python_code
}
)
code_object = session.code.create_code_object(code_object_params)
print(f"Got Code Object '{code_object.name}' with UID {code_object.uid}")[Option 2] CodeObject with an Auto-Container Snippet Code Run Type
code_object_params = CodeObjectCreateInput(
# CHANGE_ME: CODE_OBJECT_NAME
name = "CODE_OBJECT_NAME",
# CHANGE_ME: CODE_OBJECT_DESCRIPTION
description = "CODE_OBJECT_DESCRIPTION",
input_data_schema_uids = [input_schema.uid],
# output_schema.uid or None to Infer Output Data Schema
output_data_schema_uids = [output_schema.uid],
project_uid = project.uid,
code_object_type = CodeTypes.PYTHON_CODE,
config = {
"code_run_type": CodeRunType.AUTO_CONTAINER_SNIPPET,
"python_code": python_code
}
)
code_object = session.code.create_code_object(code_object_params)
print(f"Got Code Object '{code_object.name}' with UID {code_object.uid}")
[Option 3] CodeObject with an Auto-Container File Code Run Type
code_object_params = CodeObjectCreateInput(
# CHANGE_ME: CODE_OBJECT_NAME
name = "CODE_OBJECT_NAME",
# CHANGE_ME: CODE_OBJECT_DESCRIPTION
description = "CODE_OBJECT_DESCRIPTION",
input_data_schema_uids = [input_schema.uid],
# output_schema.uid or None to Infer Output Data Schema
output_data_schema_uids = [output_schema.uid],
project_uid = project.uid,
code_object_type = CodeTypes.PYTHON_CODE,
config = {
"code_run_type": CodeRunType.AUTO_CONTAINER_FILE,
"python_code": python_code
}
)
code_object = session.code.create_code_object(code_object_params)
print(f"Got Code Object '{code_object.name}' with UID {code_object.uid}")
Getting Help
If you have received an error or run into any issues throughout the process, please reach out to support@rhinohealth.com for more assistance.