joshuarauh commited on
Commit
17cdf31
·
verified ·
1 Parent(s): 1e97787

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -29
app.py CHANGED
@@ -317,7 +317,6 @@ def extract_and_run_sympy_code(response_text):
317
  """
318
  Extract SymPy code from the response and execute it.
319
  Returns only the essential calculation results as a string.
320
- Filters out debugging info and module imports.
321
  """
322
  try:
323
  # Find the SymPy code block
@@ -341,7 +340,7 @@ def extract_and_run_sympy_code(response_text):
341
  # Create a string buffer to capture print output
342
  output_buffer = io.StringIO()
343
 
344
- # Create a clean globals dict with only essential SymPy components
345
  sympy_globals = {
346
  "Symbol": sympy.Symbol,
347
  "symbols": sympy.symbols,
@@ -350,8 +349,10 @@ def extract_and_run_sympy_code(response_text):
350
  "diff": sympy.diff,
351
  "limit": sympy.limit,
352
  "sqrt": sympy.sqrt,
 
353
  "simplify": sympy.simplify,
354
- "expand": sympy.expand
 
355
  }
356
 
357
  # Create locals dict to capture new variables
@@ -364,37 +365,39 @@ def extract_and_run_sympy_code(response_text):
364
  # Get the printed output
365
  printed_output = output_buffer.getvalue().strip()
366
 
367
- # Filter the local variables to only include calculation results
368
- # Exclude built-in variables, modules, and functions
369
- calculation_results = {
370
- name: value for name, value in local_vars.items()
371
- if (
372
- not name.startswith('__') and
373
- not hasattr(value, '__call__') and # Exclude functions
374
- not hasattr(value, '__module__') # Exclude modules
375
- )
376
- }
377
-
378
- # Build the final output string
379
- result_parts = []
380
 
381
- # Add any printed output first
382
- if printed_output:
383
- result_parts.append(printed_output)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
 
385
- # Add calculation results if there are any
386
- if calculation_results:
387
- if printed_output: # Add a separator if we already have printed output
388
- result_parts.append("\nCalculation Results:")
389
- result_parts.append("-" * 20)
390
- for var_name, value in calculation_results.items():
391
- result_parts.append(f"{var_name} = {value}")
392
 
393
- # If we have no results at all, provide a message
394
- if not result_parts:
395
  return "No calculation results produced."
396
 
397
- return "\n".join(result_parts)
398
 
399
  except Exception as e:
400
  return f"Error executing SymPy code: {str(e)}"
 
317
  """
318
  Extract SymPy code from the response and execute it.
319
  Returns only the essential calculation results as a string.
 
320
  """
321
  try:
322
  # Find the SymPy code block
 
340
  # Create a string buffer to capture print output
341
  output_buffer = io.StringIO()
342
 
343
+ # Create globals dict with minimal SymPy elements
344
  sympy_globals = {
345
  "Symbol": sympy.Symbol,
346
  "symbols": sympy.symbols,
 
349
  "diff": sympy.diff,
350
  "limit": sympy.limit,
351
  "sqrt": sympy.sqrt,
352
+ "exp": sympy.exp,
353
  "simplify": sympy.simplify,
354
+ "expand": sympy.expand,
355
+ "print": print # Allow print statements
356
  }
357
 
358
  # Create locals dict to capture new variables
 
365
  # Get the printed output
366
  printed_output = output_buffer.getvalue().strip()
367
 
368
+ # Initialize result string
369
+ result = []
 
 
 
 
 
 
 
 
 
 
 
370
 
371
+ # Add numerical and symbolic calculation results
372
+ for name, value in local_vars.items():
373
+ # Skip private variables and functions
374
+ if name.startswith('__') or callable(value) or isinstance(value, type):
375
+ continue
376
+
377
+ # Skip module references
378
+ if hasattr(value, '__module__'):
379
+ continue
380
+
381
+ # Format the output
382
+ try:
383
+ # If it's a sympy expression or numerical result
384
+ if isinstance(value, (sympy.Basic, int, float)) or hasattr(value, 'free_symbols'):
385
+ result.append(f"{name} = {value}")
386
+ # If it's a list or tuple of sympy expressions
387
+ elif isinstance(value, (list, tuple)) and all(isinstance(x, (sympy.Basic, int, float)) for x in value):
388
+ result.append(f"{name} = {value}")
389
+ except:
390
+ continue
391
 
392
+ # Add printed output if it exists and isn't just whitespace
393
+ if printed_output and not printed_output.isspace():
394
+ result.insert(0, printed_output)
 
 
 
 
395
 
396
+ # If we have no results, provide a message
397
+ if not result:
398
  return "No calculation results produced."
399
 
400
+ return "\n".join(result)
401
 
402
  except Exception as e:
403
  return f"Error executing SymPy code: {str(e)}"