YepCode Python Code Rules
This file provides guidelines for LLMs to write Python code compatible with YepCode platform and ready to use its specific helpers.
Python Code Rules
Section titled “Python Code Rules”Quick Reference
Section titled “Quick Reference”| Aspect | Guideline |
|---|---|
| Runtime | Python 3.13 |
| Main file (process) | main.py |
| Entry point | def main() |
| Parameters | yepcode.context.parameters |
| Variables | os.getenv("X") or yepcode.env.X |
| Modules | yepcode.import_module("module-slug") |
Critical Rules
Section titled “Critical Rules”- ✅ Always define a
main()function - ❌ Never call
main()directly - ✅ Always add
try/exceptaround the main flow for actionable errors - ✅ Follow PEP 8 (and add type hints when useful)
Process Template
Section titled “Process Template”def main(): # Access input parameters parameters = yepcode.context.parameters
# Your code here
# Return result return { "message": "Success!" }Helpers Usage
Section titled “Helpers Usage”- Access execution info:
execution_id = yepcode.execution.id - Access process info:
process_id = yepcode.execution.process.id - Access schedule info (if present):
scheduleId, scheduleComment = yepcode.execution.schedule.id, yepcode.execution.schedule.comment - Access team timezone:
timezone = yepcode.execution.timezone - Use environment variables:
api_key = os.getenv("API_KEY") # or yepcode.env.API_KEY - Import YepCode modules:
client = yepcode.import_module("module-name")- Caution: module names must be hardcoded strings (no variables)
- Import with version:
client = yepcode.import_module("module-name", "v1.0") - Run another process:
yepcode.processes.run("process-identifier", options)
Logging
Section titled “Logging”print("INFO message") # Generates INFO level loglogger.debug("DEBUG message")logger.info("INFO message")logger.warn("WARNING message")logger.error("ERROR message")Dependencies Management
Section titled “Dependencies Management”- You may use external pip packages.
- Just add the
importstatement and the package will be installed automatically. - If the package name differs from the import name, use the
@add-packagecomment:
# @add-package requestsimport requestsLocal Disk
Section titled “Local Disk”import os
# Calculate the path to the temporary filefile_path = os.path.join(os.environ.get("TMP_DATA_DIR"), "myfile.txt")
# Writing a filewith open(file_path, 'w') as f: f.write('Hello from YepCode!')Datastore
Section titled “Datastore”import json
# Setting a valueyepcode.datastore.set("key", "value")
# Setting a object valueyepcode.datastore.set("key", json.dumps({ "name": "John", "age": 30 }))
# Getting a valuevalue = yepcode.datastore.get("key")
# Deleting a valueyepcode.datastore.delete("key")Storage
Section titled “Storage”import oslocal_path = os.path.join(os.environ.get("TMP_DATA_DIR"), "localfile.txt")
# Uploading a filewith open(local_path, "rb") as f: obj = yepcode.storage.upload("path/myfile.txt", f) print("Uploaded:", obj.name, obj.size, obj.link)
# Listing filesobjects = yepcode.storage.list()
# Downloading a filecontent = yepcode.storage.download("path/myfile.txt")with open(local_path, "wb") as f: f.write(content)
# Deleting a fileyepcode.storage.delete("path/myfile.txt")Return Values
Section titled “Return Values”Standard Return
Section titled “Standard Return”return { "message": "Success!" }Custom HTTP Status Codes
Section titled “Custom HTTP Status Codes”- This is the format for custom HTTP status codes:
return { "status": 404, "body": { "message": "Not found" }, "headers": { "Content-Type": "application/json" }}Transient Results
Section titled “Transient Results”return { "transient": True, "data": sensitive_data}