biosimulators / Biosimulators_utils

Utilities for building standardized command-line interfaces for biosimulation software packages
https://docs.biosimulators.org/Biosimulators_utils
MIT License
4 stars 6 forks source link

dependency on `capturer` #135

Open fbergmann opened 1 year ago

fbergmann commented 1 year ago

I'm having the problem in the COPASI biosimulators package, that the simulator hangs (on macOS) immediately as long as logging is enabled. I've narrowed this down to the capturer module being used by the utils package, unfortunately even the simple test file:

import subprocess
from capturer import CaptureOutput

with CaptureOutput() as capturer:
    # Generate some output from Python.
    print ("Output from Python")
    # Generate output from a subprocess.
    subprocess.call(["echo", "Output from a subprocess"])
    # Get the output in each of the supported formats.
    assert (capturer.get_bytes() == b'Output from Python\r\nOutput from a subprocess\r\n')
    assert (capturer.get_lines() == [u'Output from Python', u'Output from a subprocess'])
    assert (capturer.get_text() == u'Output from Python\nOutput from a subprocess')

freezes the application immediately. Unfortunately with logging disabled, the application does not actually process the model. I've verified this with python 3.11 and python 3.9.

AlexPatrie commented 1 year ago

I have been experiencing the same issue. I am currently working on the implementation of a method that overrides this disabled logging such that the capture does not depend on config.LOG.

AlexPatrie commented 1 year ago

As I run your test script through the VS Code debugger, the error: TypeError: cannot pickle '_io.BufferedReader' object is exposed. Interesting as this error never "makes it's way to the surface" to the user when executed from cli as normal. See a proposed WIP solution here: https://github.com/biosimulators/Biosimulators_utils/pull/134.