bx-jython — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited bx-jython (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
install-bx-module bx-jython
# CommandBox
box install bx-jython| BIF | Description |
|---|---|
jythonEval( code ) | Execute a Python code string |
jythonEvalFile( path ) | Execute a Python file |
// Execute inline Python
jythonEval( "print('Hello from Python!')" )
// Execute Python from a file
jythonEvalFile( "/app/scripts/process.py" )
// Python with arithmetic
jythonEval( "
result = 5 * 10
print('Result:', result)
" )BoxLang automatically binds all variables scope values into the Python engine. Use them as native Python variables:
// Set variables in BoxLang
variables.name = "Luis Majano"
variables.message = "Hello from BoxLang"
// These are available directly in Python
jythonEval( "print(name)" ) // Luis Majano
jythonEval( "print(message.upper())" ) // HELLO FROM BOXLANG# /app/scripts/mathutils.py
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a// Load the Python module
jythonEvalFile( "/app/scripts/mathutils.py" )
// Call the Python function
result = jythonEval( "factorial(10)" )
fib = jythonEval( "fibonacci(20)" )
println( result ) // 3628800
println( fib ) // 6765bx:jython ComponentUse the component for larger multi-line Python blocks captured in a variable:
bx:jython variable="result" {
writeOutput( "
x = 10
y = 20
sum = x + y
product = x * y
print(f'Sum: {sum}, Product: {product}')
" )
}The jythonEval() / jythonEvalFile() functions return a struct:
engineResult = jythonEval( "42 + 8" )
engineRef = engineResult.engine // Reference to the Jython engine
globalScope = engineResult.globalScope // JSR223 global scope
engineScope = engineResult.engineScope // JSR223 engine scope// Use Python for math/scientific processing not easily available in BoxLang
variables.numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
jythonEvalFile( "/app/scripts/statistics.py" )
mean = jythonEval( "mean(numbers)" )
stddev = jythonEval( "std_dev(numbers)" )variables scope are automatically accessible in Python — no explicit passing neededjythonEvalFile() for complex Python logic; use jythonEval() for quick invocations~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.