Skip to content

Merge v4 to main#300

Merged
jdecarolis merged 751 commits intomainfrom
unstable
Apr 9, 2026
Merged

Merge v4 to main#300
jdecarolis merged 751 commits intomainfrom
unstable

Conversation

@ParticularlyPythonicBS
Copy link
Copy Markdown
Member

@ParticularlyPythonicBS ParticularlyPythonicBS commented Apr 9, 2026

v4: Major Feature Additions

This Pull Request merges the unstable branch into main to release Version 4 of Temoa. This release incorporates several major architectural additions, new features, and fundamental reworks of constraints and schemas.

Architecture, Packaging & DX (Developer Experience)

  • Command Line Interface (CLI)
    • Introduced a modern, comprehensive CLI for managing Temoa runs, configuring environments, and executing core functionalities directly from the terminal.
  • PyPI Compatibility & uv Integration
    • Fully refactored the project structure for seamless PyPI compatibility, allowing Temoa to be installed and managed as a standard Python package.
    • Modernized dependency management and build workflows by integrating uv for ultra-fast and reliable environment resolution.
  • Solver Defaults
    • Updated the default optimization solver to HiGHS (High-Performance Linear Software), giving users a robust, open-source workhorse right out of the box.

Modularity & Tools

  • Decomposing Core Logic
    • Executed a major structural refactor breaking down the historically monolithic temoa_rules and initialize modules into cleaner, separated, and highly maintainable components.
  • Network Visualizer
    • Added a powerful network visualizer tool, allowing users to intuitively map, render, and debug commodity and technology flows within their datasets.

LDES & Storage Enhancements

  • Long Duration Energy Storage (LDES)
    • Full integration of LDES functionalities.
    • Added default storage seasons, seasonal limits, and associated testing/databases.
    • Generalized storage handling to support interseason storage boundaries and seasonal storage limits via LimitStorageLevelFraction.
  • Ramp Rates & Storage Initialization
    • Renamed Ramp constraints to RampHourly.
    • Redesigned ramp constraints distinguishing day vs. season ramping.
    • Fixed ramp rates to represent per-hour changes accurately.
    • Reworked StorageInitFrac and split RampUp from RampDown indices.

Materials, Resources & Emissions

  • Materials & Waste
    • Merged "materials" features to support physical material supply chains and resource extraction limits.
    • Added "waste" commodities to track life-cycle outputs.
  • Emissions Integration
    • Integrated embodied emissions features (emb_emis).
    • Fixed bugs in results output logic for annual emissions.

Survival Curves & End-of-Life Modeling

  • Survival Processes
    • Introduced tracking of survival_curve_processes (formerly tech_survival_curve) and integrated into the objective function.
    • Split "end-of-life" from "early retirement" in OutputRetirement.
    • Prevented early retirement from occurring during the period a technology naturally reaches end-of-life.

Technology Growth, Limits & Capacity Constraints

  • Growth Limits
    • Introduced the GrowthRateChange constraint.
    • Reworked and expanded constraints allowing distinct models for asymmetric growth and degrowth.
    • Modified GrowthRateMax constraints to replant the seed every period or allow growth directly from existing capacity.
  • Capacity Limits & Operations
    • Collapsed separate min and max tables into generalized limit tables utilizing explicit relational operators (<, >). Removed strict inequality operators as solvers generally do not support them.
    • Renamed LimitSeasonalActivity to LimitSeasonalCapacityFactor.
    • Added LimitActivityGroupShare constraint (and formally deprecated RPSRequirement).
    • Created NewCapacityGroupShare constraints and multi-region indexed MaxResource limits.
  • Capacity Factors & Margins
    • Added period indexing mapping to CapacityFactorProcess.
    • Added optional dynamic reserve margins (activated via config).
    • Split CapacityCredit from ReserveCapacityDerate for higher fidelity modeling.

Core Time Sequencing & Commodities

  • Inter-Season Sequencing & TimeNext
    • Generalized time sequencing, including non-annual period support and removal of the ancient 1-year hardcoded shift bug.
    • Created the time_next dictionary, dropping rigid sequencing logic in favor of explicitly defined state sequences via the TimeNext feature.
  • Annual & Waste Commodities
    • Added support for annual commodities via the annual_comms capabilities.
    • Added variables and fixes for EfficiencyVariable.
    • Fixed objective function logic resolving shifting errors for baseload annual technologies.

Schema Migrations, IO & Database Updates

  • v3.1 Schema Compatibility & Utility Upgrades
    • Introduced v3.1 schema definitions (DB_MINOR bumped to 1).
    • Updated database migrator schemas to strip vestigial parameters like myopic_base_year from metadata or tracking unused tech_resource sets.
    • Ensured v3_1 migrator resolves loan lifetime processes, schema mismatches, and automatically warns if rows are filtered out at load time.
  • Cost Sector Output
    • Appended sector tracking to the OutputCost table, including backward-compatibility support schema components.

Significant Fixes

  • Myopic Model & Execution
    • Fixed legacy myopic base-year handling bugs, accurately preserving pre-existing capacities.
    • Cleaned up redundant constraint formation across variables and fixed numerous dictionary initialization indexing bugs.

ParticularlyPythonicBS and others added 30 commits December 18, 2025 11:14
Update preface and quick start guide
Co-authored-by: jdecarolis <jdecarolis@cmu.edu>
Fixing regressions in pdf documentation building
Update monte carlo to work with v4 restructure and HiGHs defaults
…er_MIT

changing license to MIT and removing GPL license headers
Temoa v4 stochastics implementation
idelder and others added 25 commits April 8, 2026 18:56
Fix interaction between survival curves and early retirement
 removes VACUUM operations and performance tuning PRAGMAs that are now exposed in the config
…e_references

 removing and mitigating all remaining references to data_files
- Update quick start docs to reference 'temoa tutorial' for a complete setup
- Add mc_settings.csv to tutorial overwrite detection with correct path resolution
- Standardize inline code syntax in Morris extension README for GitHub rendering
- Implement parameterized SQL and corrected recovery instructions in Monte Carlo analyzer
Mitigate SyntaxWarning messages triggered by invalid escape sequences
in the mpi-sppy dependency. Narrowed the filter scope to target
only the offending module (mpisppy.utils.sputils) based on CI logs.
Move the [sqlite] table definition to the end of config_sample.toml.
This prevents subsequent root-level keys (like solver_name) from being
incorrectly parsed as child keys of the sqlite table.
minor maintainance improvements and fixes
This commit updates multiple user-facing documentation files to ensure consistency following the v4 migration and the transition to the Typer CLI.

Key changes:
- Updated quick_start.rst with modern Typer help output and standardized tutorial commands.
- Unified tutorial quick-start instructions in root README.md.
- Refined terminology in database.rst to align with CLI modes (BUILD_ONLY via temoa validate).
- Fixed stale file references in docs/README.md.
- Promoted temoa migrate for database transitions in database.rst.
infra: removing nightly publishing workflows
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 9, 2026

Important

Review skipped

Too many files!

This PR contains 269 files, which is 119 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 06e766b1-551f-4a78-8351-e8d02b981a5b

📥 Commits

Reviewing files that changed from the base of the PR and between 9f55327 and 409def9.

⛔ Files ignored due to path filters (31)
  • data_files/monte_carlo/run_settings_1.csv is excluded by !**/*.csv
  • docs/source/assets/logo.pdf is excluded by !**/*.pdf
  • docs/source/assets/logo.svg is excluded by !**/*.svg
  • docs/source/assets/logo_bottom_text.pdf is excluded by !**/*.pdf
  • docs/source/assets/logo_bottom_text.svg is excluded by !**/*.svg
  • docs/source/images/adjusted_capacity_plf.pdf is excluded by !**/*.pdf
  • docs/source/images/adjusted_capacity_plf.png is excluded by !**/*.png
  • docs/source/images/adjusted_capacity_plf.svg is excluded by !**/*.svg
  • docs/source/images/adjusted_capacity_sc.pdf is excluded by !**/*.pdf
  • docs/source/images/adjusted_capacity_sc.png is excluded by !**/*.png
  • docs/source/images/adjusted_capacity_sc.svg is excluded by !**/*.svg
  • docs/source/images/coal_process.dot is excluded by !**/*.dot
  • docs/source/images/daily_storage_representation.pdf is excluded by !**/*.pdf
  • docs/source/images/daily_storage_representation.png is excluded by !**/*.png
  • docs/source/images/daily_storage_representation.svg is excluded by !**/*.svg
  • docs/source/images/graphviz_examples/results1990.pdf is excluded by !**/*.pdf
  • docs/source/images/graphviz_examples/results1990.svg is excluded by !**/*.svg
  • docs/source/images/ldes_chain.pdf is excluded by !**/*.pdf
  • docs/source/images/ldes_chain.png is excluded by !**/*.png
  • docs/source/images/ldes_chain.svg is excluded by !**/*.svg
  • docs/source/images/ldes_delta_problem.pdf is excluded by !**/*.pdf
  • docs/source/images/ldes_delta_problem.png is excluded by !**/*.png
  • docs/source/images/ldes_delta_problem.svg is excluded by !**/*.svg
  • docs/source/images/ldes_delta_representation.pdf is excluded by !**/*.pdf
  • docs/source/images/ldes_delta_representation.png is excluded by !**/*.png
  • docs/source/images/ldes_delta_representation.svg is excluded by !**/*.svg
  • docs/source/images/results1990.pdf is excluded by !**/*.pdf
  • docs/source/images/results1990.svg is excluded by !**/*.svg
  • docs/source/images/survival_curve_discounting.pdf is excluded by !**/*.pdf
  • docs/source/images/survival_curve_discounting.png is excluded by !**/*.png
  • docs/source/images/survival_curve_discounting.svg is excluded by !**/*.svg
📒 Files selected for processing (269)
  • .coderabbit.yaml
  • .gitattributes
  • .github/ISSUE_TEMPLATE/bug_report.md
  • .github/ISSUE_TEMPLATE/feature_request.md
  • .github/ISSUE_TEMPLATE/question.md
  • .github/workflows/ci.yml
  • .github/workflows/dependency-canary.yml
  • .github/workflows/publish.yml
  • .gitignore
  • .pre-commit-config.yaml
  • .pre-commit-config.yaml.yml
  • .readthedocs.yaml
  • CITATION.cff
  • CONTRIBUTING.md
  • LICENSE
  • LICENSE.txt
  • README.md
  • data_files/.gitignore
  • data_files/README.txt
  • data_files/example_dbs/.gitignore
  • data_files/example_dbs/README.txt
  • data_files/example_dbs/morris_utopia.sql
  • data_files/example_dbs/stepped_demand.sql
  • data_files/example_dbs/test_system.sql
  • data_files/example_dbs/utopia.sql
  • data_files/my_configs/.gitignore
  • data_files/my_configs/config_sample.toml
  • data_files/my_configs/mga_utopia.toml
  • data_files/my_configs/monte_carlo_utopia.toml
  • data_files/my_configs/morris_utopia.toml
  • data_files/my_configs/stepped_demand.toml
  • definitions.py
  • docs/Database Upgrade and Troubleshooting.md
  • docs/Makefile
  • docs/README.md
  • docs/automake.sh
  • docs/commodity network notes.md
  • docs/source/Documentation.rst
  • docs/source/commodity_network.rst
  • docs/source/computational_implementation.rst
  • docs/source/conf.py
  • docs/source/database.rst
  • docs/source/database_schema.mmd
  • docs/source/default/static/Network_Graph_utopia_1990.html
  • docs/source/default/static/graph_script.js
  • docs/source/default/static/graph_styles.css
  • docs/source/images/graphviz_examples/Network_Graph_utopia_1990.html
  • docs/source/index.rst
  • docs/source/mathematical_formulation.rst
  • docs/source/mga.rst
  • docs/source/monte_carlo.rst
  • docs/source/myopic.rst
  • docs/source/param_desc_and_tables.rst
  • docs/source/preface.rst
  • docs/source/quick_start.rst
  • docs/source/references.rst
  • docs/source/set_desc_and_tables.rst
  • docs/source/stochastics.rst
  • docs/source/unit_checking.rst
  • docs/source/visualization.rst
  • environment.yml
  • environment_minimal.yml
  • main.py
  • notebooks/Network_diagrams.ipynb
  • notebooks/develop_mitigation_curve copy.ipynb
  • notebooks/loan_cost_primer.ipynb
  • notebooks/temoa_utopia_analysis_with_pyam.ipynb
  • pyproject.toml
  • requirements-dev.txt
  • requirements.in
  • requirements.txt
  • scripts/bump_version.py
  • stubs/pyomo/__init__.pyi
  • stubs/pyomo/_archive/__init__.pyi
  • stubs/pyomo/_archive/chull.pyi
  • stubs/pyomo/_archive/component_map.pyi
  • stubs/pyomo/_archive/component_set.pyi
  • stubs/pyomo/_archive/current.pyi
  • stubs/pyomo/_archive/plugin.pyi
  • stubs/pyomo/_archive/rangeset.pyi
  • stubs/pyomo/_archive/register_numpy_types.pyi
  • stubs/pyomo/_archive/sets.pyi
  • stubs/pyomo/_archive/template_expr.pyi
  • stubs/pyomo/common/__init__.pyi
  • stubs/pyomo/common/_command.pyi
  • stubs/pyomo/common/_common.pyi
  • stubs/pyomo/common/autoslots.pyi
  • stubs/pyomo/common/backports.pyi
  • stubs/pyomo/common/cmake_builder.pyi
  • stubs/pyomo/common/collections/__init__.pyi
  • stubs/pyomo/common/collections/bunch.pyi
  • stubs/pyomo/common/collections/component_map.pyi
  • stubs/pyomo/common/collections/component_set.pyi
  • stubs/pyomo/common/collections/orderedset.pyi
  • stubs/pyomo/common/config.pyi
  • stubs/pyomo/common/dependencies.pyi
  • stubs/pyomo/common/deprecation.pyi
  • stubs/pyomo/common/download.pyi
  • stubs/pyomo/common/enums.pyi
  • stubs/pyomo/common/env.pyi
  • stubs/pyomo/common/envvar.pyi
  • stubs/pyomo/common/errors.pyi
  • stubs/pyomo/common/extensions.pyi
  • stubs/pyomo/common/factory.pyi
  • stubs/pyomo/common/fileutils.pyi
  • stubs/pyomo/common/flags.pyi
  • stubs/pyomo/common/formatting.pyi
  • stubs/pyomo/common/gc_manager.pyi
  • stubs/pyomo/common/gsl.pyi
  • stubs/pyomo/common/log.pyi
  • stubs/pyomo/common/modeling.pyi
  • stubs/pyomo/common/multithread.pyi
  • stubs/pyomo/common/numeric_types.pyi
  • stubs/pyomo/common/plugin_base.pyi
  • stubs/pyomo/common/plugins.pyi
  • stubs/pyomo/common/pyomo_typing.pyi
  • stubs/pyomo/common/shutdown.pyi
  • stubs/pyomo/common/sorting.pyi
  • stubs/pyomo/common/tee.pyi
  • stubs/pyomo/common/tempfiles.pyi
  • stubs/pyomo/common/timing.pyi
  • stubs/pyomo/common/unittest.pyi
  • stubs/pyomo/contrib/__init__.pyi
  • stubs/pyomo/contrib/alternative_solutions/__init__.pyi
  • stubs/pyomo/contrib/alternative_solutions/aos_utils.pyi
  • stubs/pyomo/contrib/alternative_solutions/balas.pyi
  • stubs/pyomo/contrib/alternative_solutions/lp_enum.pyi
  • stubs/pyomo/contrib/alternative_solutions/lp_enum_solnpool.pyi
  • stubs/pyomo/contrib/alternative_solutions/obbt.pyi
  • stubs/pyomo/contrib/alternative_solutions/shifted_lp.pyi
  • stubs/pyomo/contrib/alternative_solutions/solnpool.pyi
  • stubs/pyomo/contrib/alternative_solutions/solution.pyi
  • stubs/pyomo/contrib/ampl_function_demo/__init__.pyi
  • stubs/pyomo/contrib/ampl_function_demo/build.pyi
  • stubs/pyomo/contrib/ampl_function_demo/plugins.pyi
  • stubs/pyomo/contrib/appsi/__init__.pyi
  • stubs/pyomo/contrib/appsi/base.pyi
  • stubs/pyomo/contrib/appsi/build.pyi
  • stubs/pyomo/contrib/appsi/cmodel/__init__.pyi
  • stubs/pyomo/contrib/appsi/cmodel/appsi_cmodel.pyi
  • stubs/pyomo/contrib/appsi/examples/__init__.pyi
  • stubs/pyomo/contrib/appsi/examples/getting_started.pyi
  • stubs/pyomo/contrib/appsi/fbbt.pyi
  • stubs/pyomo/contrib/appsi/plugins.pyi
  • stubs/pyomo/contrib/appsi/solvers/__init__.pyi
  • stubs/pyomo/contrib/appsi/solvers/cbc.pyi
  • stubs/pyomo/contrib/appsi/solvers/cplex.pyi
  • stubs/pyomo/contrib/appsi/solvers/gurobi.pyi
  • stubs/pyomo/contrib/appsi/solvers/highs.pyi
  • stubs/pyomo/contrib/appsi/solvers/ipopt.pyi
  • stubs/pyomo/contrib/appsi/solvers/maingo.pyi
  • stubs/pyomo/contrib/appsi/solvers/maingo_solvermodel.pyi
  • stubs/pyomo/contrib/appsi/solvers/wntr.pyi
  • stubs/pyomo/contrib/appsi/utils/__init__.pyi
  • stubs/pyomo/contrib/appsi/utils/collect_vars_and_named_exprs.pyi
  • stubs/pyomo/contrib/appsi/utils/get_objective.pyi
  • stubs/pyomo/contrib/appsi/writers/__init__.pyi
  • stubs/pyomo/contrib/appsi/writers/config.pyi
  • stubs/pyomo/contrib/appsi/writers/lp_writer.pyi
  • stubs/pyomo/contrib/appsi/writers/nl_writer.pyi
  • stubs/pyomo/contrib/benders/__init__.pyi
  • stubs/pyomo/contrib/benders/benders_cuts.pyi
  • stubs/pyomo/contrib/benders/examples/__init__.pyi
  • stubs/pyomo/contrib/benders/examples/farmer.pyi
  • stubs/pyomo/contrib/benders/examples/grothey_ex.pyi
  • stubs/pyomo/contrib/community_detection/__init__.pyi
  • stubs/pyomo/contrib/community_detection/community_graph.pyi
  • stubs/pyomo/contrib/community_detection/detection.pyi
  • stubs/pyomo/contrib/community_detection/event_log.pyi
  • stubs/pyomo/contrib/community_detection/plugins.pyi
  • stubs/pyomo/contrib/cp/__init__.pyi
  • stubs/pyomo/contrib/cp/interval_var.pyi
  • stubs/pyomo/contrib/cp/plugins.pyi
  • stubs/pyomo/contrib/cp/repn/__init__.pyi
  • stubs/pyomo/contrib/cp/repn/docplex_writer.pyi
  • stubs/pyomo/contrib/cp/scheduling_expr/__init__.pyi
  • stubs/pyomo/contrib/cp/scheduling_expr/precedence_expressions.pyi
  • stubs/pyomo/contrib/cp/scheduling_expr/scheduling_logic.pyi
  • stubs/pyomo/contrib/cp/scheduling_expr/sequence_expressions.pyi
  • stubs/pyomo/contrib/cp/scheduling_expr/step_function_expressions.pyi
  • stubs/pyomo/contrib/cp/sequence_var.pyi
  • stubs/pyomo/contrib/cp/transform/__init__.pyi
  • stubs/pyomo/contrib/cp/transform/logical_to_disjunctive_program.pyi
  • stubs/pyomo/contrib/cp/transform/logical_to_disjunctive_walker.pyi
  • stubs/pyomo/contrib/cspline_external/__init__.pyi
  • stubs/pyomo/contrib/cspline_external/build.pyi
  • stubs/pyomo/contrib/cspline_external/cspline_parameters.pyi
  • stubs/pyomo/contrib/cspline_external/plugins.pyi
  • stubs/pyomo/contrib/doe/__init__.pyi
  • stubs/pyomo/contrib/doe/doe.pyi
  • stubs/pyomo/contrib/doe/examples/__init__.pyi
  • stubs/pyomo/contrib/doe/examples/reactor_compute_factorial_FIM.pyi
  • stubs/pyomo/contrib/doe/examples/reactor_example.pyi
  • stubs/pyomo/contrib/doe/examples/reactor_experiment.pyi
  • stubs/pyomo/contrib/doe/utils.pyi
  • stubs/pyomo/contrib/example/__init__.pyi
  • stubs/pyomo/contrib/example/bar.pyi
  • stubs/pyomo/contrib/example/foo.pyi
  • stubs/pyomo/contrib/example/plugins/__init__.pyi
  • stubs/pyomo/contrib/example/plugins/ex_plugin.pyi
  • stubs/pyomo/contrib/fbbt/__init__.pyi
  • stubs/pyomo/contrib/fbbt/expression_bounds_walker.pyi
  • stubs/pyomo/contrib/fbbt/fbbt.pyi
  • stubs/pyomo/contrib/fbbt/interval.pyi
  • stubs/pyomo/contrib/fme/__init__.pyi
  • stubs/pyomo/contrib/fme/fourier_motzkin_elimination.pyi
  • stubs/pyomo/contrib/fme/plugins.pyi
  • stubs/pyomo/contrib/gdp_bounds/__init__.pyi
  • stubs/pyomo/contrib/gdp_bounds/compute_bounds.pyi
  • stubs/pyomo/contrib/gdp_bounds/info.pyi
  • stubs/pyomo/contrib/gdp_bounds/plugins.pyi
  • stubs/pyomo/contrib/gdpopt/GDPopt.pyi
  • stubs/pyomo/contrib/gdpopt/__init__.pyi
  • stubs/pyomo/contrib/gdpopt/algorithm_base_class.pyi
  • stubs/pyomo/contrib/gdpopt/branch_and_bound.pyi
  • stubs/pyomo/contrib/gdpopt/config_options.pyi
  • stubs/pyomo/contrib/gdpopt/create_oa_subproblems.pyi
  • stubs/pyomo/contrib/gdpopt/cut_generation.pyi
  • stubs/pyomo/contrib/gdpopt/discrete_problem_initialize.pyi
  • stubs/pyomo/contrib/gdpopt/enumerate.pyi
  • stubs/pyomo/contrib/gdpopt/gloa.pyi
  • stubs/pyomo/contrib/gdpopt/ldsda.pyi
  • stubs/pyomo/contrib/gdpopt/loa.pyi
  • stubs/pyomo/contrib/gdpopt/nlp_initialization.pyi
  • stubs/pyomo/contrib/gdpopt/oa_algorithm_utils.pyi
  • stubs/pyomo/contrib/gdpopt/plugins.pyi
  • stubs/pyomo/contrib/gdpopt/ric.pyi
  • stubs/pyomo/contrib/gdpopt/solve_discrete_problem.pyi
  • stubs/pyomo/contrib/gdpopt/solve_subproblem.pyi
  • stubs/pyomo/contrib/gdpopt/util.pyi
  • stubs/pyomo/contrib/gjh/GJH.pyi
  • stubs/pyomo/contrib/gjh/__init__.pyi
  • stubs/pyomo/contrib/gjh/getGJH.pyi
  • stubs/pyomo/contrib/gjh/plugins.pyi
  • stubs/pyomo/contrib/iis/__init__.pyi
  • stubs/pyomo/contrib/iis/iis.pyi
  • stubs/pyomo/contrib/iis/mis.pyi
  • stubs/pyomo/contrib/incidence_analysis/__init__.pyi
  • stubs/pyomo/contrib/incidence_analysis/common/__init__.pyi
  • stubs/pyomo/contrib/incidence_analysis/common/dulmage_mendelsohn.pyi
  • stubs/pyomo/contrib/incidence_analysis/config.pyi
  • stubs/pyomo/contrib/incidence_analysis/connected.pyi
  • stubs/pyomo/contrib/incidence_analysis/dulmage_mendelsohn.pyi
  • stubs/pyomo/contrib/incidence_analysis/incidence.pyi
  • stubs/pyomo/contrib/incidence_analysis/interface.pyi
  • stubs/pyomo/contrib/incidence_analysis/matching.pyi
  • stubs/pyomo/contrib/incidence_analysis/scc_solver.pyi
  • stubs/pyomo/contrib/incidence_analysis/triangularize.pyi
  • stubs/pyomo/contrib/incidence_analysis/visualize.pyi
  • stubs/pyomo/contrib/interior_point/__init__.pyi
  • stubs/pyomo/contrib/interior_point/examples/__init__.pyi
  • stubs/pyomo/contrib/interior_point/examples/ex1.pyi
  • stubs/pyomo/contrib/interior_point/interface.pyi
  • stubs/pyomo/contrib/interior_point/interior_point.pyi
  • stubs/pyomo/contrib/interior_point/inverse_reduced_hessian.pyi
  • stubs/pyomo/contrib/interior_point/linalg/__init__.pyi
  • stubs/pyomo/contrib/interior_point/linalg/base_linear_solver_interface.pyi
  • stubs/pyomo/contrib/interior_point/linalg/ma27_interface.pyi
  • stubs/pyomo/contrib/interior_point/linalg/mumps_interface.pyi
  • stubs/pyomo/contrib/interior_point/linalg/scipy_interface.pyi
  • stubs/pyomo/contrib/latex_printer/__init__.pyi
  • stubs/pyomo/contrib/latex_printer/latex_printer.pyi
  • stubs/pyomo/contrib/mcpp/__init__.pyi
  • stubs/pyomo/contrib/mcpp/build.pyi
  • stubs/pyomo/contrib/mcpp/getMCPP.pyi
  • stubs/pyomo/contrib/mcpp/plugins.pyi
  • stubs/pyomo/contrib/mcpp/pyomo_mcpp.pyi
  • stubs/pyomo/contrib/mindtpy/MindtPy.pyi
  • stubs/pyomo/contrib/mindtpy/__init__.pyi

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch unstable

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ParticularlyPythonicBS ParticularlyPythonicBS changed the title Release v4: Major Feature Additions Merge v4 to main Apr 9, 2026
@jdecarolis jdecarolis merged commit 0f27bd6 into main Apr 9, 2026
22 checks passed
@jdecarolis jdecarolis deleted the unstable branch April 9, 2026 23:47
@ParticularlyPythonicBS ParticularlyPythonicBS restored the unstable branch April 10, 2026 00:34
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.

4 participants