Skip to content

Fix ruamel and pandas api#1

Merged
erwanp merged 10 commits intomainfrom
fix/new_ruamel_api
Aug 11, 2025
Merged

Fix ruamel and pandas api#1
erwanp merged 10 commits intomainfrom
fix/new_ruamel_api

Conversation

@erwanp
Copy link
Contributor

@erwanp erwanp commented Aug 11, 2025

Updating Ctwrap to latest standards, mirroring the PR microcombustion/ctwrap#93 that was cancelled because microcombution's ctwrap is now archived.

API updates

Fixes microcombustion/ctwrap#92

# df = df.append(row, ignore_index=True)          # old syntax
 df = pd.concat([df, row.to_frame().T], ignore_index=True)

Also :

  • fixed pkg_resources
  • fixed pint

Result

List of Tests :

pytest .
================================================= test session starts =================================================
platform win32 -- Python 3.11.11, pytest-8.3.4, pluggy-1.5.0 -- C:\Users\erwan\anaconda3\envs\bloc\python.exe
cachedir: .pytest_cache
rootdir: C:\GitHub\ctwrap
configfile: pytest.ini
plugins: dash-2.18.2, cov-6.0.0
collected 147 items

tests/test_notebooks.py::TestNotebooks::test_commandline_example FAILED                                          [  0%]
tests/test_notebooks.py::TestNotebooks::test_equilibrium_example FAILED                                          [  1%]
tests/test_notebooks.py::TestNotebooks::test_freeflame_example FAILED                                            [  2%]
tests/test_notebooks.py::TestNotebooks::test_ignition_example FAILED                                             [  2%]
tests/test_notebooks.py::TestNotebooks::test_minimal_example FAILED                                              [  3%]
tests/test_output.py::TestOutput::test_dir PASSED                                                                [  4%]
tests/test_output.py::TestOutput::test_output PASSED                                                             [  4%]
tests/test_output.py::TestCSV::test_csv PASSED                                                                   [  5%]
tests/test_output.py::TestCSV::test_dir PASSED                                                                   [  6%]
tests/test_output.py::TestCSV::test_output PASSED                                                                [  6%]
tests/test_output.py::TestSolution::test_add PASSED                                                              [  7%]
tests/test_output.py::TestSolution::test_csv PASSED                                                              [  8%]
tests/test_output.py::TestSolution::test_dir PASSED                                                              [  8%]
tests/test_output.py::TestSolution::test_output PASSED                                                           [  9%]
tests/test_output.py::TestMixture::test_add PASSED                                                               [ 10%]
tests/test_output.py::TestMixture::test_csv PASSED                                                               [ 10%]
tests/test_output.py::TestMixture::test_dir PASSED                                                               [ 11%]
tests/test_output.py::TestMixture::test_output PASSED                                                            [ 12%]
tests/test_output.py::TestHDF::test_dir PASSED                                                                   [ 12%]
tests/test_output.py::TestHDF::test_hdf PASSED                                                                   [ 13%]
tests/test_output.py::TestHDF::test_output PASSED                                                                [ 14%]
tests/test_output.py::TestSolutionArray::test_dir FAILED                                                         [ 14%]
tests/test_output.py::TestSolutionArray::test_hdf FAILED                                                         [ 15%]
tests/test_output.py::TestSolutionArray::test_load_like FAILED                                                   [ 16%]
tests/test_output.py::TestSolutionArray::test_output FAILED                                                      [ 17%]
tests/test_output.py::TestFreeFlame::test_dir FAILED                                                             [ 17%]
tests/test_output.py::TestFreeFlame::test_load_like FAILED                                                       [ 18%]
tests/test_output.py::TestFreeFlame::test_output FAILED                                                          [ 19%]
tests/test_parser.py::TestUpdate::test_level1 PASSED                                                             [ 19%]
tests/test_parser.py::TestUpdate::test_level2 PASSED                                                             [ 20%]
tests/test_parser.py::TestUpdate::test_multi_level PASSED                                                        [ 21%]
tests/test_parser.py::TestParse::test_full PASSED                                                                [ 21%]
tests/test_parser.py::TestParse::test_no_unit1 PASSED                                                            [ 22%]
tests/test_parser.py::TestParse::test_no_unit2 PASSED                                                            [ 23%]
tests/test_parser.py::TestParse::test_string PASSED                                                              [ 23%]
tests/test_parser.py::TestWrite::test_full PASSED                                                                [ 24%]
tests/test_parser.py::TestWrite::test_no_unit1 PASSED                                                            [ 25%]
tests/test_parser.py::TestWrite::test_no_unit2 PASSED                                                            [ 25%]
tests/test_parser.py::TestWrite::test_string PASSED                                                              [ 26%]
tests/test_parser.py::TestPassing::test_parser PASSED                                                            [ 27%]
tests/test_parser.py::TestKeyStr::test_parser PASSED                                                             [ 27%]
tests/test_parser.py::TestNone::test_parser PASSED                                                               [ 28%]
tests/test_parser.py::TestParser::test_parser PASSED                                                             [ 29%]
tests/test_parser.py::TestMulti::test_parser PASSED                                                              [ 29%]
tests/test_parser.py::TestMulti::test_update_dict PASSED                                                         [ 30%]
tests/test_parser.py::TestMulti::test_update_parser PASSED                                                       [ 31%]
tests/test_parser.py::TestFailing::test_parser PASSED                                                            [ 31%]
tests/test_parser.py::TestInt::test_parser PASSED                                                                [ 32%]
tests/test_parser.py::TestFloat::test_parser PASSED                                                              [ 33%]
tests/test_parser.py::TestString::test_parser PASSED                                                             [ 34%]
tests/test_parser.py::TestYAML::test_freeflame PASSED                                                            [ 34%]
tests/test_parser.py::TestYAML::test_ignition FAILED                                                             [ 35%]
tests/test_parser.py::TestYAML::test_minimal FAILED                                                              [ 36%]
tests/test_strategy.py::TestReplace::test_entry PASSED                                                           [ 36%]
tests/test_strategy.py::TestReplace::test_missing1 PASSED                                                        [ 37%]
tests/test_strategy.py::TestReplace::test_missing2 PASSED                                                        [ 38%]
tests/test_strategy.py::TestReplace::test_nested PASSED                                                          [ 38%]
tests/test_strategy.py::TestParse::test_arange PASSED                                                            [ 39%]
tests/test_strategy.py::TestParse::test_linspace PASSED                                                          [ 40%]
tests/test_strategy.py::TestSweep::test_one PASSED                                                               [ 40%]
tests/test_strategy.py::TestSweep::test_three PASSED                                                             [ 41%]
tests/test_strategy.py::TestSweep::test_two PASSED                                                               [ 42%]
tests/test_strategy.py::TestStrategy::test_legacy PASSED                                                         [ 42%]
tests/test_strategy.py::TestStrategy::test_load PASSED                                                           [ 43%]
tests/test_strategy.py::TestStrategy::test_matrix PASSED                                                         [ 44%]
tests/test_strategy.py::TestStrategy::test_minimal PASSED                                                        [ 44%]
tests/test_strategy.py::TestStrategy::test_raises PASSED                                                         [ 45%]
tests/test_strategy.py::TestStrategy::test_sequence PASSED                                                       [ 46%]
tests/test_wrapper.py::TestLegacy::test_database PASSED                                                          [ 46%]
tests/test_wrapper.py::TestLegacy::test_handler PASSED                                                           [ 47%]
tests/test_wrapper.py::TestWrap::test_commandline PASSED                                                         [ 48%]
tests/test_wrapper.py::TestWrap::test_handler PASSED                                                             [ 48%]
tests/test_wrapper.py::TestWrap::test_main PASSED                                                                [ 49%]
tests/test_wrapper.py::TestWrap::test_parallel PASSED                                                            [ 50%]
tests/test_wrapper.py::TestWrap::test_restart PASSED                                                             [ 51%]
tests/test_wrapper.py::TestWrap::test_serial PASSED                                                              [ 51%]
tests/test_wrapper.py::TestWrap::test_simulation PASSED                                                          [ 52%]
tests/test_wrapper.py::TestMatrix::test_commandline PASSED                                                       [ 53%]
tests/test_wrapper.py::TestMatrix::test_handler PASSED                                                           [ 53%]
tests/test_wrapper.py::TestMatrix::test_main PASSED                                                              [ 54%]
tests/test_wrapper.py::TestMatrix::test_parallel PASSED                                                          [ 55%]
tests/test_wrapper.py::TestMatrix::test_restart PASSED                                                           [ 55%]
tests/test_wrapper.py::TestMatrix::test_serial PASSED                                                            [ 56%]
tests/test_wrapper.py::TestMatrix::test_simulation PASSED                                                        [ 57%]
tests/test_wrapper.py::TestLocal::test_commandline PASSED                                                        [ 57%]
tests/test_wrapper.py::TestLocal::test_handler PASSED                                                            [ 58%]
tests/test_wrapper.py::TestLocal::test_main PASSED                                                               [ 59%]
tests/test_wrapper.py::TestLocal::test_parallel PASSED                                                           [ 59%]
tests/test_wrapper.py::TestLocal::test_restart PASSED                                                            [ 60%]
tests/test_wrapper.py::TestLocal::test_serial PASSED                                                             [ 61%]
tests/test_wrapper.py::TestLocal::test_simulation PASSED                                                         [ 61%]
tests/test_wrapper.py::TestCustom::test_commandline PASSED                                                       [ 62%]
tests/test_wrapper.py::TestCustom::test_handler PASSED                                                           [ 63%]
tests/test_wrapper.py::TestCustom::test_main PASSED                                                              [ 63%]
tests/test_wrapper.py::TestCustom::test_parallel PASSED                                                          [ 64%]
tests/test_wrapper.py::TestCustom::test_restart PASSED                                                           [ 65%]
tests/test_wrapper.py::TestCustom::test_serial PASSED                                                            [ 65%]
tests/test_wrapper.py::TestCustom::test_simulation PASSED                                                        [ 66%]
tests/test_wrapper.py::TestIgnition::test_commandline PASSED                                                     [ 67%]
tests/test_wrapper.py::TestIgnition::test_handler PASSED                                                         [ 68%]
tests/test_wrapper.py::TestIgnition::test_main PASSED                                                            [ 68%]
tests/test_wrapper.py::TestIgnition::test_parallel FAILED                                                        [ 69%]
tests/test_wrapper.py::TestIgnition::test_restart PASSED                                                         [ 70%]
tests/test_wrapper.py::TestIgnition::test_serial PASSED                                                          [ 70%]
tests/test_wrapper.py::TestIgnition::test_simulation PASSED                                                      [ 71%]
tests/test_wrapper.py::TestSolution::test_commandline PASSED                                                                                [ 72%]
tests/test_wrapper.py::TestSolution::test_handler PASSED                                                                                    [ 72%]
tests/test_wrapper.py::TestSolution::test_main PASSED                                                                                       [ 73%]
tests/test_wrapper.py::TestSolution::test_parallel PASSED                                                                                   [ 74%]
tests/test_wrapper.py::TestSolution::test_restart PASSED                                                                                    [ 74%]
tests/test_wrapper.py::TestSolution::test_serial PASSED                                                                                     [ 75%]
tests/test_wrapper.py::TestSolution::test_simulation PASSED                                                                                 [ 76%]
tests/test_wrapper.py::TestEquilibrium::test_commandline PASSED                                                                             [ 76%]
tests/test_wrapper.py::TestEquilibrium::test_handler PASSED                                                                                 [ 77%]
tests/test_wrapper.py::TestEquilibrium::test_main PASSED                                                                                    [ 78%]
tests/test_wrapper.py::TestEquilibrium::test_parallel PASSED                                                                                [ 78%]
tests/test_wrapper.py::TestEquilibrium::test_restart PASSED                                                                                 [ 79%]
tests/test_wrapper.py::TestEquilibrium::test_serial PASSED                                                                                  [ 80%]
tests/test_wrapper.py::TestEquilibrium::test_simulation PASSED                                                                              [ 80%]
tests/test_wrapper.py::TestEquilibriumMulti::test_commandline PASSED                                                                        [ 81%]
tests/test_wrapper.py::TestEquilibriumMulti::test_handler PASSED                                                                            [ 82%]
tests/test_wrapper.py::TestEquilibriumMulti::test_main PASSED                                                                               [ 82%]
tests/test_wrapper.py::TestEquilibriumMulti::test_parallel PASSED                                                                           [ 83%]
tests/test_wrapper.py::TestEquilibriumMulti::test_restart PASSED                                                                            [ 84%]
tests/test_wrapper.py::TestEquilibriumMulti::test_serial PASSED                                                                             [ 85%]
tests/test_wrapper.py::TestEquilibriumMulti::test_simulation PASSED                                                                         [ 85%]
tests/test_wrapper.py::TestFreeFlame::test_commandline FAILED                                                                               [ 86%]
tests/test_wrapper.py::TestFreeFlame::test_handler PASSED                                                                                   [ 87%]
tests/test_wrapper.py::TestFreeFlame::test_main FAILED                                                                                      [ 87%]
tests/test_wrapper.py::TestFreeFlame::test_parallel FAILED                                                                                  [ 88%]
tests/test_wrapper.py::TestFreeFlame::test_restart PASSED                                                                                   [ 89%]
tests/test_wrapper.py::TestFreeFlame::test_serial FAILED                                                                                    [ 89%]
tests/test_wrapper.py::TestFreeFlame::test_simulation PASSED                                                                                [ 90%]
tests/test_wrapper.py::TestFreeFlameMatrix::test_commandline PASSED                                                                         [ 91%]
tests/test_wrapper.py::TestFreeFlameMatrix::test_handler PASSED                                                                             [ 91%]
tests/test_wrapper.py::TestFreeFlameMatrix::test_main FAILED                                                                                [ 92%]
tests/test_wrapper.py::TestFreeFlameMatrix::test_parallel FAILED                                                                            [ 93%]
tests/test_wrapper.py::TestFreeFlameMatrix::test_restart PASSED                                                                             [ 93%]
tests/test_wrapper.py::TestFreeFlameMatrix::test_serial PASSED                                                                              [ 94%]
tests/test_wrapper.py::TestFreeFlameMatrix::test_simulation PASSED                                                                          [ 95%]
tests/test_wrapper.py::TestInvalid::test_commandline PASSED                                                                                 [ 95%]
tests/test_wrapper.py::TestInvalid::test_handler PASSED                                                                                     [ 96%]
tests/test_wrapper.py::TestInvalid::test_main PASSED                                                                                        [ 97%]
tests/test_wrapper.py::TestInvalid::test_parallel PASSED                                                                                    [ 97%]
tests/test_wrapper.py::TestInvalid::test_restart PASSED                                                                                     [ 98%]
tests/test_wrapper.py::TestInvalid::test_serial PASSED                                                                                      [ 99%]
tests/test_wrapper.py::TestInvalid::test_simulation PASSED                                                                                  [100%]

Summary of failures :

============================================================ short test summary info =============================================================
FAILED tests/test_notebooks.py::TestNotebooks::test_commandline_example - AssertionError: 1 is not false
FAILED tests/test_notebooks.py::TestNotebooks::test_equilibrium_example - AssertionError: 1 is not false
FAILED tests/test_notebooks.py::TestNotebooks::test_freeflame_example - AssertionError: 1 is not false
FAILED tests/test_notebooks.py::TestNotebooks::test_ignition_example - AssertionError: 1 is not false
FAILED tests/test_notebooks.py::TestNotebooks::test_minimal_example - AssertionError: 1 is not false
FAILED tests/test_output.py::TestSolutionArray::test_dir - AttributeError: 'SolutionArray' object has no attribute 'write_hdf'
FAILED tests/test_output.py::TestSolutionArray::test_hdf - AttributeError: 'SolutionArray' object has no attribute 'write_hdf'
FAILED tests/test_output.py::TestSolutionArray::test_load_like - AttributeError: 'SolutionArray' object has no attribute 'write_hdf'
FAILED tests/test_output.py::TestSolutionArray::test_output - AttributeError: 'SolutionArray' object has no attribute 'write_hdf'
FAILED tests/test_output.py::TestFreeFlame::test_dir - AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
FAILED tests/test_output.py::TestFreeFlame::test_load_like - AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
FAILED tests/test_output.py::TestFreeFlame::test_output - AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
FAILED tests/test_parser.py::TestYAML::test_ignition - AttributeError: 'YAML' object has no attribute 'SafeLoader'
FAILED tests/test_parser.py::TestYAML::test_minimal - AttributeError: 'YAML' object has no attribute 'SafeLoader'
FAILED tests/test_wrapper.py::TestIgnition::test_parallel - AssertionError: False is not true
FAILED tests/test_wrapper.py::TestFreeFlame::test_commandline - AssertionError: 'C:\\Users\\erwan\\anaconda3\\envs\\bloc\\[11234 chars]\r\n' != ''
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
- Process Process-2:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-10:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-5:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-1:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-9:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-8:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-6:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-3:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-4:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- Process Process-7:
- Traceback (most recent call last):
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 314, in _bootstrap
-     self.run()
-   File "C:\Users\erwan\anaconda3\envs\bloc\Lib\multiprocessing\process.py", line 108, in run
-     self._target(*self._args, **self._kwargs)
-   File "c:\github\ctwrap\ctwrap\handler.py", line 528, in _worker
-     out.save(data, entry=task, variation=variations[task], errored=errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 274, in save
-     _save_hdf(data, self.settings, entry, variation, errored)
-   File "c:\github\ctwrap\ctwrap\output.py", line 402, in _save_hdf
-     data.write_hdf(filename=filename, group=entry,
-     ^^^^^^^^^^^^^^
- AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
- c:\github\ctwrap\ctwrap\output.py:349: RuntimeWarning: Output of metadata failed with error message:
- [Errno 2] Unable to synchronously open file (unable to open file: name = 'C:\GitHub\ctwrap\ctwrap\yaml\freeflame.h5', errno = 2, error message = 'No such file or directory', flags = 1, o_flags = 2)
-   warnings.warn(msg, RuntimeWarning)
FAILED tests/test_wrapper.py::TestFreeFlame::test_main - AssertionError: "C:\\Users\\erwan\\anaconda3\\envs\\bloc\[195 chars]\r\n" != ''
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
FAILED tests/test_wrapper.py::TestFreeFlame::test_parallel - AssertionError: False is not true
FAILED tests/test_wrapper.py::TestFreeFlame::test_serial - AttributeError: 'FreeFlame' object has no attribute 'write_hdf'
FAILED tests/test_wrapper.py::TestFreeFlameMatrix::test_main - AssertionError: "C:\\Users\\erwan\\anaconda3\\envs\\bloc\[195 chars]\r\n" != ''
- C:\Users\erwan\anaconda3\envs\bloc\Lib\site-packages\cantera\onedim.py:194: DeprecationWarning: FactoryBase::canonicalize: Model name 'Mix' is deprecated. Use 'mixture-averaged' instead.
-   self.flame.transport_model = model
FAILED tests/test_wrapper.py::TestFreeFlameMatrix::test_parallel - AssertionError: False is not true
============================================= 21 failed, 126 passed, 4 warnings in 362.96s (0:06:02) =============================================

Final To-Do

  • write_hdf does not seem to be a public method of FreeFlame according to Cantera main code; to_hdf() was created for SolutionArray but not for FreeFlame ==> won't fix it in ctwarp for the moment
  • Model name 'Mix' is deprecated. Use 'mixture-averaged' instead. : I haven't looked into this
  • Investigate AssertionError: 1 is not false of failing TestNotebooks
  • Investigate failing TestIgnition::test_parallel

@erwanp erwanp changed the title Fix new ruamel api Fix ruamel and pandas api Aug 11, 2025
@erwanp erwanp merged commit 9ce6eb9 into main Aug 11, 2025
0 of 2 checks passed
@erwanp
Copy link
Contributor Author

erwanp commented Aug 11, 2025

Merging as is; this is the version used in Bloc. A new PR will follow with updates to fix the rest of the API.

Final To-Do

  • write_hdf does not seem to be a public method of FreeFlame according to Cantera main code; to_hdf() was created for SolutionArray but not for FreeFlame ==> won't fix it in ctwarp for the moment
  • Model name 'Mix' is deprecated. Use 'mixture-averaged' instead. : I haven't looked into this
  • Investigate AssertionError: 1 is not false of failing TestNotebooks
  • Investigate failing TestIgnition::test_parallel

@erwanp erwanp mentioned this pull request Aug 11, 2025
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

yaml API changed

1 participant